From b3da7610f1c45d0147ba2685cb75fc06506bbb26 Mon Sep 17 00:00:00 2001 From: Achim Gsell Date: Fri, 22 Sep 2006 20:49:17 +0000 Subject: [PATCH] src/H5PartF.c src/H5BlockF.c - use Fortron function name in definition, define macros for function names only, if we have to rename them - use function "_H5Part_strdupfor2c()" and "_H5Part_strc2for()" for string conversion --- src/H5BlockF.c | 211 ++++------- src/H5PartF.c | 949 ++++++++++++++++++++++++++++++------------------- 2 files changed, 666 insertions(+), 494 deletions(-) diff --git a/src/H5BlockF.c b/src/H5BlockF.c index 5e2e517..42863ad 100755 --- a/src/H5BlockF.c +++ b/src/H5BlockF.c @@ -4,100 +4,78 @@ #include -#ifdef F77_SINGLE_UNDERSCORE -#define F77NAME(a,b,c) a -#elif defined(F77_NO_UNDERSCORE) -#define F77NAME(a,b,c) b +#if defined(F77_SINGLE_UNDERSCORE) +#define F77NAME(a,b) a #elif defined(F77_CRAY_UNDERSCORE) -#define F77NAME(a,b,c) c +#define F77NAME(a,b) b +#elif defined(F77_NO_UNDERSCORE) #else #error Error, no way to determine how to construct fortran bindings #endif +#if ! defined(F77_NO_UNDERSCORE) -#define f_h5bl_define3dlayout F77NAME ( \ +#define h5bl_define3dlayout F77NAME ( \ h5bl_define3dlayout_, \ - h5bl_define3dlayout, \ H5BL_DEFINE3DLAYOUT ) -#define f_h5bl_get_partition_of_proc F77NAME ( \ +#define h5bl_get_partition_of_proc F77NAME ( \ h5bl_get_partition_of_proc_, \ - h5bl_get_partition_of_proc, \ H5BL_GET_PARTITION_OF_PROC ) -#define f_h5bl_get_reduced_partition_of_proc F77NAME ( \ +#define h5bl_get_reduced_partition_of_proc F77NAME ( \ h5bl_get_reduced_partition_of_proc_,\ - h5bl_get_reduced_partition_of_proc,\ H5BL_GET_REDUCED_PARTITION_OF_PROC ) -#define f_h5bl_get_proc_of F77NAME ( \ +#define h5bl_get_proc_of F77NAME ( \ h5bl_get_proc_of_, \ - h5bl_get_proc_of, \ H5BL_GET_PROC_OF ) -#define f_h5bl_3d_read_scalar_field F77NAME ( \ +#define h5bl_3d_read_scalar_field F77NAME ( \ h5bl_3d_read_scalar_field_, \ - h5bl_3d_read_scalar_field, \ H5BL_3D_READ_SCALAR_FIELD ) -#define f_h5bl_3d_write_scalar_field F77NAME ( \ +#define h5bl_3d_write_scalar_field F77NAME ( \ h5bl_3d_write_scalar_field_, \ - h5bl_3d_write_scalar_field, \ H5BL_3D_WRITE_SCALAR_FIELD ) -#define f_h5bl_3d_read_3dvector_field F77NAME ( \ +#define h5bl_3d_read_3dvector_field F77NAME ( \ h5bl_3d_read_3dvector_field_, \ - h5bl_3d_read_3dvector_field, \ H5BL_3D_READ_3DVECTOR_FIELD ) -#define f_h5bl_3d_write_3dvector_field F77NAME ( \ +#define h5bl_3d_write_3dvector_field F77NAME ( \ h5bl_3d_write_3dvector_field_, \ - h5bl_3d_write_3dvector_field, \ H5BL_3D_WRITE_3DVECTOR_FIELD ) - -#define f_h5bl_getnumfields F77NAME ( \ +#define h5bl_getnumfields F77NAME ( \ h5bl_getnumfields_, \ - h5bl_getnumfields, \ H5BL_GETNUMFIELDS ) -#define f_h5bl_getfieldinfo F77NAME ( \ +#define h5bl_getfieldinfo F77NAME ( \ h5bl_getfieldinfo_, \ - h5bl_getfieldinfo, \ H5BL_GETFIELDINFO ) - -#define f_h5bl_writefieldattrib_r8 F77NAME ( \ +#define h5bl_writefieldattrib_r8 F77NAME ( \ h5bl_writefieldattrib_r8_, \ - h5bl_writefieldattrib_r8, \ H5BL_WRITEFIELDATTRIB_R8 ) -#define f_h5bl_writefieldattrib_i8 F77NAME ( \ +#define h5bl_writefieldattrib_i8 F77NAME ( \ h5bl_writefieldattrib_i8_, \ - h5bl_writefieldattrib_i8, \ H5BL_WRITEFIELDATTRIB_I8 ) -#define f_h5bl_writefieldattrib_string F77NAME ( \ +#define h5bl_writefieldattrib_string F77NAME ( \ h5bl_writefieldattrib_string_, \ - h5bl_writefieldattrib_string, \ H5BL_WRITEFIELDATTRIB_STRING ) -#define f_h5bl_getnfieldattribs F77NAME ( \ +#define h5bl_getnfieldattribs F77NAME ( \ h5bl_getnfieldattribs_, \ - h5bl_getnfieldattribs, \ H5BL_GETNFIELDATTRIBS ) -#define f_h5bl_getfieldattribinfo F77NAME ( \ +#define h5bl_getfieldattribinfo F77NAME ( \ h5bl_getfieldattribinfo_, \ - h5bl_getfieldattribinfo, \ h5bl_getfieldattribinfo ) -#define f_h5bl_readfieldattrib_i8 F77NAME ( \ +#define h5bl_readfieldattrib_i8 F77NAME ( \ h5bl_readfieldattrib_i8_, \ - h5bl_readfieldattrib_i8, \ H5BL_READFIELDATTRIB_I8 ) -#define f_h5bl_readfieldattrib_r8 F77NAME ( \ +#define h5bl_readfieldattrib_r8 F77NAME ( \ h5bl_readfieldattrib_r8_, \ - h5bl_readfieldattrib_r8, \ H5BL_READFIELDATTRIB_R8 ) -#define f_h5bl_readfieldattrib_string F77NAME ( \ +#define h5bl_readfieldattrib_string F77NAME ( \ h5bl_readfieldattrib_string_, \ - h5bl_readfieldattrib_string, \ H5BL_READFIELDATTRIB_STRING ) -#define f_h5bl_has_fielddata F77NAME ( \ +#define h5bl_has_fielddata F77NAME ( \ h5bl_has_fielddata_, \ - h5bl_has_fielddata, \ H5BL_HAS_FIELDDATA ) - - +#endif h5part_int64_t -f_h5bl_define3dlayout ( +h5bl_define3dlayout ( h5part_int64_t *f, const h5part_int64_t *i_start, /*!< start index of i */ const h5part_int64_t *i_end, /*!< end index of i */ @@ -117,8 +95,8 @@ f_h5bl_define3dlayout ( } h5part_int64_t -f_h5bl_get_partition_of_proc ( - h5part_int64_t *f, /*!< file handle */ +h5bl_get_partition_of_proc ( + h5part_int64_t *f, /*!< file handle */ const h5part_int64_t *proc, h5part_int64_t *i_start, /*!< start index of i */ h5part_int64_t *i_end, /*!< end index of i */ @@ -137,7 +115,7 @@ f_h5bl_get_partition_of_proc ( } h5part_int64_t -f_h5bl_get_reduced_partition_of_proc ( +h5bl_get_reduced_partition_of_proc ( h5part_int64_t *f, const h5part_int64_t *proc, h5part_int64_t *i_start, @@ -157,7 +135,7 @@ f_h5bl_get_reduced_partition_of_proc ( } h5part_int64_t -f_h5bl_get_proc_of ( +h5bl_get_proc_of ( h5part_int64_t *f, const h5part_int64_t *i, const h5part_int64_t *j, @@ -170,7 +148,7 @@ f_h5bl_get_proc_of ( } h5part_int64_t -f_h5bl_3d_read_scalar_field ( +h5bl_3d_read_scalar_field ( h5part_int64_t *f, const char *field_name, h5part_float64_t *data, @@ -179,9 +157,7 @@ f_h5bl_3d_read_scalar_field ( H5PartFile *filehandle = (H5PartFile*)(size_t)*f; - char *field_name2 = (char*)malloc(l_field_name+1); - strncpy ( field_name2, field_name, l_field_name ); - field_name2[l_field_name] = '\0'; + char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name ); h5part_int64_t herr = H5Block3dReadScalarField ( filehandle, field_name2, data ); @@ -191,7 +167,7 @@ f_h5bl_3d_read_scalar_field ( } h5part_int64_t -f_h5bl_3d_write_scalar_field ( +h5bl_3d_write_scalar_field ( h5part_int64_t *f, const char *field_name, const h5part_float64_t *data, @@ -200,9 +176,7 @@ f_h5bl_3d_write_scalar_field ( H5PartFile *filehandle = (H5PartFile*)(size_t)*f; - char *field_name2 = (char*)malloc(l_field_name+1); - strncpy ( field_name2, field_name, l_field_name ); - field_name2[l_field_name] = '\0'; + char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name ); h5part_int64_t herr = H5Block3dWriteScalarField ( filehandle, field_name2, data ); @@ -212,7 +186,7 @@ f_h5bl_3d_write_scalar_field ( } h5part_int64_t -f_h5bl_3d_read_3dvector_field ( +h5bl_3d_read_3dvector_field ( h5part_int64_t *f, /*!< file handle */ const char *field_name, /*!< name of the data set */ h5part_float64_t *xval, /*!< array of x component data */ @@ -223,9 +197,7 @@ f_h5bl_3d_read_3dvector_field ( H5PartFile *filehandle = (H5PartFile*)(size_t)*f; - char *field_name2 = (char*)malloc(l_field_name+1); - strncpy ( field_name2, field_name, l_field_name ); - field_name2[l_field_name] = '\0'; + char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name ); h5part_int64_t herr = H5Block3dRead3dVectorField ( filehandle, field_name2, xval, yval, zval ); @@ -235,8 +207,8 @@ f_h5bl_3d_read_3dvector_field ( } h5part_int64_t -f_h5bl_3d_write_3dvector_field ( - h5part_int64_t *f, /*!< file handle */ +h5bl_3d_write_3dvector_field ( + h5part_int64_t *f, /*!< file handle */ const char *field_name, /*!< name of the data set */ const h5part_float64_t *xval, /*!< array of x component data */ const h5part_float64_t *yval, /*!< array of y component data */ @@ -246,9 +218,7 @@ f_h5bl_3d_write_3dvector_field ( H5PartFile *filehandle = (H5PartFile*)(size_t)*f; - char *field_name2 = (char*)malloc(l_field_name+1); - strncpy ( field_name2, field_name, l_field_name ); - field_name2[l_field_name] = '\0'; + char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name ); h5part_int64_t herr = H5Block3dWrite3dVectorField ( filehandle, field_name2, xval, yval, zval ); @@ -258,7 +228,7 @@ f_h5bl_3d_write_3dvector_field ( } h5part_int64_t -f_h5bl_getnumfields ( +h5bl_getnumfields ( h5part_int64_t *f /*!< file handle */ ) { @@ -268,7 +238,7 @@ f_h5bl_getnumfields ( } h5part_int64_t -f_h5bl_getfieldinfo ( +h5bl_getfieldinfo ( h5part_int64_t *f, const h5part_int64_t *idx, char *field_name, @@ -280,12 +250,15 @@ f_h5bl_getfieldinfo ( H5PartFile *filehandle = (H5PartFile*)(size_t)*f; - return H5BlockGetFieldInfo ( - filehandle, *idx, field_name, l_field_name, grid_rank, grid_dims, field_dims ); + h5part_int64_t herr = H5BlockGetFieldInfo ( + filehandle, *idx, field_name, l_field_name, + grid_rank, grid_dims, field_dims ); + _H5Part_strc2for ( field_name, l_field_name ); + return herr; } h5part_int64_t -f_h5bl_writefieldattrib_r8 ( +h5bl_writefieldattrib_r8 ( h5part_int64_t *f, const char *field_name, const char *attrib_name, @@ -297,13 +270,8 @@ f_h5bl_writefieldattrib_r8 ( H5PartFile *filehandle = (H5PartFile*)(size_t)*f; - char *field_name2 = (char*)malloc(l_field_name+1); - strncpy ( field_name2, field_name, l_field_name ); - field_name2[l_field_name] = '\0'; - - char *attrib_name2 = (char*)malloc(l_attrib_name+1); - strncpy ( attrib_name2, attrib_name, l_attrib_name ); - attrib_name2[l_attrib_name] = '\0'; + char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name ); + char *attrib_name2 =_H5Part_strdupfor2c ( attrib_name, l_attrib_name ); h5part_int64_t herr = H5BlockWriteFieldAttrib ( filehandle, field_name2, attrib_name2, H5PART_FLOAT64, @@ -316,7 +284,7 @@ f_h5bl_writefieldattrib_r8 ( h5part_int64_t -f_h5bl_writefieldattrib_i8 ( +h5bl_writefieldattrib_i8 ( h5part_int64_t *f, const char *field_name, const char *attrib_name, @@ -328,13 +296,8 @@ f_h5bl_writefieldattrib_i8 ( H5PartFile *filehandle = (H5PartFile*)(size_t)*f; - char *field_name2 = (char*)malloc(l_field_name+1); - strncpy ( field_name2, field_name, l_field_name ); - field_name2[l_field_name] = '\0'; - - char *attrib_name2 = (char*)malloc(l_attrib_name+1); - strncpy ( attrib_name2, attrib_name, l_attrib_name ); - attrib_name2[l_attrib_name] = '\0'; + char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name ); + char *attrib_name2 =_H5Part_strdupfor2c ( attrib_name, l_attrib_name ); h5part_int64_t herr = H5BlockWriteFieldAttrib ( filehandle, field_name2, attrib_name2, H5PART_INT64, @@ -346,7 +309,7 @@ f_h5bl_writefieldattrib_i8 ( } h5part_int64_t -f_h5bl_writefieldattrib_string ( +h5bl_writefieldattrib_string ( h5part_int64_t *f, const char *field_name, const char *attrib_name, @@ -358,17 +321,9 @@ f_h5bl_writefieldattrib_string ( H5PartFile *filehandle = (H5PartFile*)(size_t)*f; - char *field_name2 = (char*)malloc(l_field_name+1); - strncpy ( field_name2, field_name, l_field_name ); - field_name2[l_field_name] = '\0'; - - char *attrib_name2 = (char*)malloc(l_attrib_name+1); - strncpy ( attrib_name2, attrib_name, l_attrib_name ); - attrib_name2[l_attrib_name] = '\0'; - - char *attrib_value2 = (char*)malloc(l_attrib_value+1); - strncpy ( attrib_value2, attrib_value, l_attrib_value ); - attrib_value2[l_attrib_value] = '\0'; + char *field_name2 =_H5Part_strdupfor2c ( field_name, l_field_name ); + char *attrib_name2=_H5Part_strdupfor2c ( attrib_name, l_attrib_name ); + char *attrib_value2=_H5Part_strdupfor2c( attrib_value,l_attrib_value ); h5part_int64_t herr = H5BlockWriteFieldAttribString ( filehandle, field_name2, attrib_name2, attrib_value2 ); @@ -379,8 +334,9 @@ f_h5bl_writefieldattrib_string ( return herr; } + h5part_int64_t -f_h5bl_getnfieldattribs ( +h5bl_getnfieldattribs ( h5part_int64_t *f, const char *field_name, const int l_field_name @@ -388,9 +344,7 @@ f_h5bl_getnfieldattribs ( H5PartFile *filehandle = (H5PartFile*)(size_t)*f; - char *field_name2 = (char*)malloc(l_field_name+1); - strncpy ( field_name2, field_name, l_field_name ); - field_name2[l_field_name] = '\0'; + char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name ); h5part_int64_t herr = H5BlockGetNumFieldAttribs ( filehandle, field_name2 ); @@ -400,7 +354,7 @@ f_h5bl_getnfieldattribs ( } h5part_int64_t -f_h5bl_getfieldattribinfo ( +h5bl_getfieldattribinfo ( h5part_int64_t *f, const char *field_name, const h5part_int64_t *attrib_idx, @@ -414,23 +368,23 @@ f_h5bl_getfieldattribinfo ( h5part_int64_t attrib_type; - char *field_name2 = (char*)malloc(l_field_name+1); - strncpy ( field_name2, field_name, l_field_name ); - field_name2[l_field_name] = '\0'; + char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name ); h5part_int64_t herr = H5BlockGetFieldAttribInfo ( filehandle, field_name2, *attrib_idx, - attrib_name, l_attrib_name+1, + attrib_name, l_attrib_name, &attrib_type, attrib_nelem ); + _H5Part_strc2for ( attrib_name, l_attrib_name ); + free ( field_name2 ); return herr; } h5part_int64_t -f_h5bl_readfieldattrib_i8 ( +h5bl_readfieldattrib_i8 ( h5part_int64_t *f, const char *field_name, const char *attrib_name, @@ -441,13 +395,8 @@ f_h5bl_readfieldattrib_i8 ( H5PartFile *filehandle = (H5PartFile*)(size_t)*f; - char *field_name2 = (char*)malloc(l_field_name+1); - strncpy ( field_name2, field_name, l_field_name ); - field_name2[l_field_name] = '\0'; - - char *attrib_name2 = (char*)malloc(l_attrib_name+1); - strncpy ( attrib_name2, attrib_name, l_attrib_name ); - attrib_name2[l_attrib_name] = '\0'; + char *field_name2 =_H5Part_strdupfor2c ( field_name, l_field_name ); + char *attrib_name2=_H5Part_strdupfor2c ( attrib_name, l_attrib_name ); h5part_int64_t herr = H5BlockReadFieldAttrib ( filehandle, field_name2, attrib_name2, attrib_value ); @@ -458,7 +407,7 @@ f_h5bl_readfieldattrib_i8 ( } h5part_int64_t -f_h5bl_readfieldattrib_r8 ( +h5bl_readfieldattrib_r8 ( h5part_int64_t *f, const char *field_name, const char *attrib_name, @@ -469,13 +418,8 @@ f_h5bl_readfieldattrib_r8 ( H5PartFile *filehandle = (H5PartFile*)(size_t)*f; - char *field_name2 = (char*)malloc(l_field_name+1); - strncpy ( field_name2, field_name, l_field_name ); - field_name2[l_field_name] = '\0'; - - char *attrib_name2 = (char*)malloc(l_attrib_name+1); - strncpy ( attrib_name2, attrib_name, l_attrib_name ); - attrib_name2[l_attrib_name] = '\0'; + char *field_name2 =_H5Part_strdupfor2c ( field_name, l_field_name ); + char *attrib_name2=_H5Part_strdupfor2c ( attrib_name, l_attrib_name ); h5part_int64_t herr = H5BlockReadFieldAttrib ( filehandle, field_name2, attrib_name2, attrib_value ); @@ -486,7 +430,7 @@ f_h5bl_readfieldattrib_r8 ( } h5part_int64_t -f_h5bl_readfieldattrib_string ( +h5bl_readfieldattrib_string ( h5part_int64_t *f, const char *field_name, const char *attrib_name, @@ -498,24 +442,21 @@ f_h5bl_readfieldattrib_string ( H5PartFile *filehandle = (H5PartFile*)(size_t)*f; - char *field_name2 = (char*)malloc(l_field_name+1); - strncpy ( field_name2, field_name, l_field_name ); - field_name2[l_field_name] = '\0'; - - char *attrib_name2 = (char*)malloc(l_attrib_name+1); - strncpy ( attrib_name2, attrib_name, l_attrib_name ); - attrib_name2[l_attrib_name] = '\0'; + char *field_name2 =_H5Part_strdupfor2c ( field_name, l_field_name ); + char *attrib_name2=_H5Part_strdupfor2c ( attrib_name, l_attrib_name ); h5part_int64_t herr = H5BlockReadFieldAttrib ( filehandle, field_name2, attrib_name2, attrib_value ); + _H5Part_strc2for ( attrib_value, l_attrib_value ); + free ( field_name2 ); free ( attrib_name2 ); return herr; } h5part_int64_t -f_h5bl_has_fielddata ( +h5bl_has_fielddata ( h5part_int64_t *f ) { diff --git a/src/H5PartF.c b/src/H5PartF.c index 08a2ede..863ce12 100755 --- a/src/H5PartF.c +++ b/src/H5PartF.c @@ -1,170 +1,261 @@ #include "H5Part.h" #include "Underscore.h" #include -/* -********* Perhaps call this pfile ********** - -Determine underscores using perl and then send through one stage of preprocessing -to get the F77NAME fixed up. Otherwise, must include correct flag each time. - -Or just don't declare F77NAME in the header (only in source as symbols). - - -All pointers are cast to haddr_t (a unint64_t) within the C/C++ code -In fortran, these pointers (handles) are carried as INTEGER*8 - -*/ - -#ifdef F77_SINGLE_UNDERSCORE -#define F77NAME(a,b,c) a -#elif defined(F77_NO_UNDERSCORE) -#define F77NAME(a,b,c) b +#if defined(F77_SINGLE_UNDERSCORE) +#define F77NAME(a,b) a #elif defined(F77_CRAY_UNDERSCORE) -#define F77NAME(a,b,c) c +#define F77NAME(a,b) b +#elif defined(F77_NO_UNDERSCORE) #else #error Error, no way to determine how to construct fortran bindings #endif -/* open/close interface */ -#define f_h5pt_openr F77NAME(h5pt_openr_,h5pt_openr,H5PT_OPENR) /* func returns INT8 */ -#define f_h5pt_openw F77NAME(h5pt_openw_,h5pt_openw,H5PT_OPENW) /* func returns INT8 */ +#if ! defined(F77_NO_UNDERSCORE) -#define f_h5pt_openr_par F77NAME(h5pt_openr_par_,h5pt_openr_par,H5PT_OPENR_PAR) /* func returns INT8 */ -#define f_h5pt_openw_par F77NAME(h5pt_openw_par_,h5pt_openw_par,H5PT_OPENW_PAR) /* func returns INT8 */ -#define f_h5pt_close F77NAME(h5pt_close_,h5pt_close,H5PT_CLOSE) +/* open/close interface */ +#define h5pt_openr F77NAME ( \ + h5pt_openr_, \ + H5PT_OPENR ) +#define h5pt_openw F77NAME ( \ + h5pt_openw_, \ + H5PT_OPENW ) +#define h5pt_openr_par F77NAME ( \ + h5pt_openr_par_, \ + H5PT_OPENR_PAR ) +#define h5pt_openw_par F77NAME ( \ + h5pt_openw_par_, \ + H5PT_OPENW_PAR ) +#define h5pt_close F77NAME ( \ + h5pt_close_, \ + H5PT_CLOSE) /* writing interface */ -#define f_h5pt_setnpoints F77NAME(h5pt_setnpoints_,h5pt_setnpoints,H5PT_SETNPOINTS) -#define f_h5pt_setstep F77NAME(h5pt_setstep_,h5pt_setstep,H5PT_SETSTEP) -#define f_h5pt_writedata_r8 F77NAME(h5pt_writedata_r8_,h5pt_writedata_r8,H5PT_WRITEDATA_R8) -#define f_h5pt_writedata_i8 F77NAME(h5pt_writedata_i8_,h5pt_writedata_i8,H5PT_WRITEDATA_I8) +#define h5pt_setnpoints F77NAME ( \ + h5pt_setnpoints_, \ + H5PT_SETNPOINTS ) +#define h5pt_setstep F77NAME ( \ + h5pt_setstep_, \ + H5PT_SETSTEP ) +#define h5pt_writedata_r8 F77NAME ( \ + h5pt_writedata_r8_, \ + H5PT_WRITEDATA_R8 ) +#define h5pt_writedata_i8 F77NAME ( \ + h5pt_writedata_i8_, \ + H5PT_WRITEDATA_I8 ) /* Reading interface (define dataset, step, particles, attributes) */ -#define f_h5pt_getnsteps F77NAME(h5pt_getnsteps_,h5pt_getnsteps,H5PT_GETNSTEPS) -#define f_h5pt_getndatasets F77NAME(h5pt_getndatasets_,h5pt_getndatasets,H5PT_GETNDATASETS) -#define f_h5pt_getnpoints F77NAME(h5pt_getnpoints_,h5pt_getnpoints,H5PT_GETNPOINTS) -#define f_h5pt_getdatasetname F77NAME(h5pt_getdatasetname_,h5pt_getdatasetname,H5PT_GETDATASETNAME) -#define f_h5pt_getnumpoints F77NAME(h5pt_getnumpoints_,h5pt_getnumpoints,H5PT_GETNUMPOINTS) +#define h5pt_getnsteps F77NAME ( \ + h5pt_getnsteps_, \ + H5PT_GETNSTEPS ) +#define h5pt_getndatasets F77NAME ( \ + h5pt_getndatasets_, \ + H5PT_GETNDATASETS ) +#define h5pt_getnpoints F77NAME ( \ + h5pt_getnpoints_, \ + H5PT_GETNPOINTS ) +#define h5pt_getdatasetname F77NAME ( \ + h5pt_getdatasetname_, \ + H5PT_GETDATASETNAME ) +#define h5pt_getnumpoints F77NAME ( \ + h5pt_getnumpoints_, \ + H5PT_GETNUMPOINTS ) /* Views and parallelism */ -#define f_h5pt_setview F77NAME(h5pt_setview_,h5pt_setview,H5PT_SETVIEW) -#define f_h5pt_resetview F77NAME(h5pt_resetview_,h5pt_resetview,H5PT_RESETVIEW) -#define f_h5pt_hasview F77NAME(h5pt_hasview_,h5pt_hasview,H5PT_HASVIEW) -#define f_h5pt_getview F77NAME(h5pt_getview_,h5pt_getview,H5PT_GETVIEW) +#define h5pt_setview F77NAME ( \ + h5pt_setview_, \ + H5PT_SETVIEW ) +#define h5pt_resetview F77NAME ( \ + h5pt_resetview_, \ + H5PT_RESETVIEW ) +#define h5pt_hasview F77NAME ( \ + h5pt_hasview_, \ + H5PT_HASVIEW ) +#define h5pt_getview F77NAME ( \ + h5pt_getview_, \ + H5PT_GETVIEW ) /* Reading data */ -#define f_h5pt_readdata_r8 F77NAME(h5pt_readdata_r8_,h5pt_readdata_r8,H5PT_READDATA_R8) -#define f_h5pt_readdata_i8 F77NAME(h5pt_readdata_i8_,h5pt_readdata_i8,H5PT_READDATA_I8) -#define f_h5pt_readdata F77NAME(h5pt_readdata_,h5pt_readdata,H5PT_READDATA) +#define h5pt_readdata_r8 F77NAME ( \ + h5pt_readdata_r8_, \ + H5PT_READDATA_R8 ) +#define h5pt_readdata_i8 F77NAME ( \ + h5pt_readdata_i8_, \ + H5PT_READDATA_I8 ) +#define h5pt_readdata F77NAME ( \ + h5pt_readdata_, \ + H5PT_READDATA ) -/* Attributes */ -/* writing */ -#define f_h5pt_writefileattrib_r8 F77NAME(h5pt_writefileattrib_r8_,h5pt_writefileattrib_r8,H5PT_WRITEFILEATTRIB_R8) -#define f_h5pt_writefileattrib_i8 F77NAME(h5pt_writefileattrib_i8_,h5pt_writefileattrib_i8,H5PT_WRITEFILEATTRIB_I8) -#define f_h5pt_writefileattrib_string F77NAME(h5pt_writefileattrib_string_,h5pt_writefileattrib_string,H5PT_writefileattrib_string) -#define f_h5pt_writestepattrib_r8 F77NAME(h5pt_writestepattrib_r8_,h5pt_writestepattrib_r8,H5PT_WRITESTEPATTRIB_R8) -#define f_h5pt_writestepattrib_i8 F77NAME(h5pt_writestepattrib_i8_,h5pt_writestepattrib_i8,H5PT_WRITESTEPATTRIB_I8) -#define f_h5pt_writestepattrib_string F77NAME(h5pt_writestepattrib_string_,h5pt_writestepattrib_string,H5PT_WRITESTEPATTRIB_STRING) -/* reading */ -#define f_h5pt_getnstepattribs F77NAME(h5pt_getnstepattribs_,h5pt_getnstepattribs,H5PT_GETNSTEPATTRIBS) -#define f_h5pt_getnfileattribs F77NAME(h5pt_getnfileattribs_,h5pt_getnfileattribs,H5PT_GETNFILEATTRIBS) -#define f_h5pt_getstepattribinfo F77NAME(h5pt_getstepattribinfo_,h5pt_getstepattribinfo,H5PT_GETSTEPATTRIBINFO) -#define f_h5pt_getfileattribinfo F77NAME(h5pt_getfileattribinfo_,h5pt_getfileattribinfo,H5PT_GETFILEATTRIBINFO) -#define f_h5pt_readstepattrib F77NAME(h5pt_readstepattrib_,h5pt_readstepattrib,H5PT_READSTEPATTRIB) -#define f_h5pt_readfileattrib F77NAME(h5pt_readfileattrib_,h5pt_readfileattrib,H5PT_READFILEATTRIB) +/* Writing attributes */ +#define h5pt_writefileattrib_r8 F77NAME ( \ + h5pt_writefileattrib_r8_, \ + H5PT_WRITEFILEATTRIB_R8 ) +#define h5pt_writefileattrib_i8 F77NAME ( \ + h5pt_writefileattrib_i8_, \ + H5PT_WRITEFILEATTRIB_I8 ) +#define h5pt_writefileattrib_string F77NAME ( \ + h5pt_writefileattrib_string_, \ + H5PT_writefileattrib_string ) +#define h5pt_writestepattrib_r8 F77NAME ( \ + h5pt_writestepattrib_r8_, \ + H5PT_WRITESTEPATTRIB_R8 ) +#define h5pt_writestepattrib_i8 F77NAME ( \ + h5pt_writestepattrib_i8_, \ + H5PT_WRITESTEPATTRIB_I8 ) +#define h5pt_writestepattrib_string F77NAME ( \ + h5pt_writestepattrib_string_, \ + H5PT_WRITESTEPATTRIB_STRING ) + +/* Reading attributes */ +#define h5pt_getnstepattribs F77NAME ( \ + h5pt_getnstepattribs_, \ + H5PT_GETNSTEPATTRIBS ) +#define h5pt_getnfileattribs F77NAME ( \ + h5pt_getnfileattribs_, \ + H5PT_GETNFILEATTRIBS ) +#define h5pt_getstepattribinfo F77NAME ( \ + h5pt_getstepattribinfo_, \ + H5PT_GETSTEPATTRIBINFO ) +#define h5pt_getfileattribinfo F77NAME ( \ + h5pt_getfileattribinfo_, \ + H5PT_GETFILEATTRIBINFO ) +#define h5pt_readstepattrib F77NAME ( \ + h5pt_readstepattrib_, \ + H5PT_READSTEPATTRIB ) +#define h5pt_readstepattrib_r8 F77NAME ( \ + h5pt_readstepattrib_r8_, \ + H5PT_READSTEPATTRIB_R8 ) +#define h5pt_readstepattrib_i8 F77NAME ( \ + h5pt_readstepattrib_i8_, \ + H5PT_READSTEPATTRIB_I8 ) +#define h5pt_readstepattrib_string F77NAME ( \ + h5pt_readstepattrib_string_, \ + H5PT_READSTEPATTRIB_STRING ) +#define h5pt_readfileattrib F77NAME ( \ + h5pt_readfileattrib_, \ + H5PT_READFILEATTRIB ) +#define h5pt_readfileattrib_r8 F77NAME ( \ + h5pt_readfileattrib_r8_, \ + H5PT_READFILEATTRIB_R8 ) +#define h5pt_readfileattrib_i8 F77NAME ( \ + h5pt_readfileattrib_i8_, \ + H5PT_READFILEATTRIB_I8 ) +#define h5pt_readfileattrib_string F77NAME ( \ + h5pt_readfileattrib_string_, \ + H5PT_READFILEATTRIB_STRING ) /* error handling */ -#define f_h5pt_set_verbosity_level F77NAME(h5pt_set_verbosity_level_,h5pt_set_verbosity_level,H5PT_SET_VERBOSITY_LEVEL) +#define h5pt_set_verbosity_level F77NAME ( \ + h5pt_set_verbosity_level_, \ + H5PT_SET_VERBOSITY_LEVEL ) + +#endif + +char * +_H5Part_strdupfor2c ( + const char *s, + const ssize_t len + ) { + + char *dup = (char*)malloc ( len + 1 ); + strncpy ( dup, s, len ); + char *p = dup + len; + do { + *p-- = '\0'; + } while ( *p == ' ' ); + return dup; +} + +char * +_H5Part_strc2for ( + char * const str, + const ssize_t l_str + ) { + + size_t len = strlen ( str ); + memset ( str+len, ' ', l_str-len ); + + return str; +} /* open/close interface */ h5part_int64_t -f_h5pt_openr ( - char *file, - int flen - ) { /* func returns INT8 */ +h5pt_openr ( + const char *file_name, + const int l_file_name + ) { - H5PartFile* f; - char *newname = (char*)malloc(flen+1); /* be safe? */ - strncpy(newname,file,flen); - newname[flen]='\0'; - f = H5PartOpenFile ( newname, H5PART_READ ); + char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name ); + H5PartFile* f = H5PartOpenFile ( file_name2, H5PART_READ ); + + free ( file_name2 ); return (h5part_int64_t)(size_t)f; - } -haddr_t -f_h5pt_openw ( - char *file, - int flen) { /* func returns INT8 */ +h5part_int64_t +h5pt_openw ( + const char *file_name, + const int l_file_name + ) { - haddr_t fh; - H5PartFile* f; - char *newname = (char*)malloc(flen+1); /* be safe? */ - strncpy(newname,file,flen); - newname[flen]='\0'; - f = (H5PartOpenFile(newname,H5PART_WRITE)); - /* printf("openr file=[%s] flen=%u haddr=%u\n",file,flen,f); */ - fh = (haddr_t)f; - /* printf("FileHandle=%llu\n",fh); */ + char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name ); - return fh; + H5PartFile* f = H5PartOpenFile ( file_name2, H5PART_WRITE ); + + free ( file_name2 ); + return (h5part_int64_t)(size_t)f; } #ifdef PARALLEL_IO -haddr_t -f_h5pt_openr_par ( - char *file, +h5part_int64_t +h5pt_openr_par ( + const char *file_name, MPI_Comm *c, - int flen ) { /* func returns INT8 */ + const int l_file_name + ) { - haddr_t fh; - H5PartFile* f; - char *newname = (char*)malloc(flen+1); /* be safe? */ - strncpy(newname,file,flen); - newname[flen]='\0'; - f = H5PartOpenFileParallel(newname,H5PART_READ,*((MPI_Comm*)c)); - /* printf("openr file=[%s] flen=%u haddr=%u\n",file,flen,f); */ - fh = (haddr_t)f; - /* printf("FileHandle=%llu\n",fh); */ + char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name ); - return fh; + H5PartFile* f = H5PartOpenFileParallel ( + file_name2, H5PART_READ, comm ); + + free ( file_name2 ); + return (h5part_int64_t)(size_t)f; } haddr_t -f_h5pt_openw_par ( - char *file, +h5pt_openw_par ( + const char *file_name, MPI_Comm *c, - int flen ) { /* func returns INT8 */ + const int l_file_name + ) { - haddr_t fh; - H5PartFile* f; - char *newname = (char*)malloc(flen+1); /* be safe? */ - strncpy(newname,file,flen); - newname[flen]='\0'; - f = H5PartOpenFileParallel(newname,H5PART_WRITE,*((MPI_Comm*)c)); - /* printf("openr file=[%s] flen=%u haddr=%u\n",file,flen,f); */ - fh = (haddr_t)f; - /* printf("FileHandle=%llu\n",fh); */ - - return fh; + char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name ); + + H5PartFile* f = H5PartOpenFileParallel ( + file_name2, H5PART_WRITE, comm ); + + free ( file_name2 ); + return (h5part_int64_t)(size_t)f; } #endif h5part_int64_t -f_h5pt_close ( - haddr_t *file +h5pt_close ( + const h5part_int64_t *f ) { - return H5PartCloseFile((H5PartFile*)*file); + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + return H5PartCloseFile ( filehandle ); } /*==============Writing and Setting Dataset info========*/ -#if 0 + h5part_int64_t -f_h5pt_readstep ( - haddr_t *file, - h5part_int64_t *step, +h5pt_readstep ( + const h5part_int64_t *f, + const h5part_int64_t *step, h5part_float64_t *x, h5part_float64_t *y, h5part_float64_t *z, @@ -174,381 +265,521 @@ f_h5pt_readstep ( h5part_int64_t *id ) { - return H5PartReadParticleStep((H5PartFile*)*file,(*step)-1,x,y,z,px,py,pz,id); + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + return H5PartReadParticleStep ( + filehandle,(*step)-1,x,y,z,px,py,pz,id); } -#endif + h5part_int64_t -f_h5pt_setnpoints ( - haddr_t *file, +h5pt_setnpoints ( + const h5part_int64_t *f, h5part_int64_t *np ) { - return H5PartSetNumParticles((H5PartFile*)*file,*np); + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + return H5PartSetNumParticles ( filehandle, *np ); } h5part_int64_t -f_h5pt_setstep ( - haddr_t *file, +h5pt_setstep ( + const h5part_int64_t *f, h5part_int64_t *step ) { - return H5PartSetStep((H5PartFile*)*file,(*step)-1); + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + return H5PartSetStep ( filehandle, (*step)-1 ); } h5part_int64_t -f_h5pt_writedata_r8 ( - haddr_t *file, - char *name, - h5part_float64_t *data, - int flen ) { +h5pt_writedata_r8 ( + const h5part_int64_t *f, + const char *name, + const h5part_float64_t *data, + const int l_name ) { - h5part_int64_t rc; + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; - char *newname = (char*)malloc(flen+1); /* be safe? */ - strncpy(newname,name,flen); - newname[flen]='\0'; - rc = H5PartWriteDataFloat64((H5PartFile*)*file,newname, data); - free(newname); + char *name2 = _H5Part_strdupfor2c ( name, l_name ); - return rc; + h5part_int64_t herr = H5PartWriteDataFloat64 ( + filehandle, name2, data ); + + free ( name2 ); + + return herr; } h5part_int64_t -f_h5pt_writedata_i8 ( - haddr_t *file, - char *name, - h5part_int64_t *data, - int flen ) { +h5pt_writedata_i8 ( + const h5part_int64_t *f, + const char *name, + const h5part_int64_t *data, + const int l_name ) { - h5part_int64_t rc; + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; - char *newname = (char*)malloc(flen+1); /* be safe? */ - strncpy(newname,name,flen); - newname[flen]='\0'; - rc = H5PartWriteDataInt64((H5PartFile*)*file,newname,data); - free(newname); + char *name2 = _H5Part_strdupfor2c ( name, l_name ); - return rc; + h5part_int64_t herr = H5PartWriteDataInt64 ( + filehandle, name2, data ); + + free ( name2 ); + + return herr; } /*==============Reading Data Characteristics============*/ h5part_int64_t -f_h5pt_getnsteps ( - haddr_t *file +h5pt_getnsteps ( + const h5part_int64_t *f ) { - /* printf("nstep Haddr=%llu\n",file); */ - return H5PartGetNumSteps((H5PartFile*)*file); + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + return H5PartGetNumSteps ( filehandle ); } h5part_int64_t -f_h5pt_getndatasets ( - haddr_t *file +h5pt_getndatasets ( + const h5part_int64_t *f ) { - /* printf("ndata Haddr=%llu\n",file); */ - return H5PartGetNumDatasets((H5PartFile*)*file); + + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + return H5PartGetNumDatasets ( filehandle ); } h5part_int64_t -f_h5pt_getnpoints ( - haddr_t *file +h5pt_getnpoints ( + const h5part_int64_t *f ) { - /* printf("nprt Haddr=%llu\n",file); */ - return H5PartGetNumParticles((H5PartFile*)*file); + + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + return H5PartGetNumParticles ( filehandle ); } -/* probably should get index from name */ h5part_int64_t -f_h5pt_getdatasetname ( - haddr_t *file, - h5part_int64_t *index, +h5pt_getdatasetname ( + const h5part_int64_t *f, + const h5part_int64_t *index, char *name, - int namelen){ + const int l_name + ) { - return H5PartGetDatasetName((H5PartFile *)*file,*index,name,namelen); + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + h5part_int64_t herr = H5PartGetDatasetName ( + filehandle, *index, name, l_name ); + + _H5Part_strc2for ( name, l_name ); + return herr; } h5part_int64_t -f_h5pt_getnumpoints ( - haddr_t *file) { +h5pt_getnumpoints ( + const h5part_int64_t *f + ) { - return H5PartGetNumParticles((H5PartFile*)*file); + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + return H5PartGetNumParticles( filehandle ); } /*=============Setting and getting views================*/ h5part_int64_t -f_h5pt_setview ( - haddr_t *file, - h5part_int64_t *start, - h5part_int64_t *end ) { - - return H5PartSetView((H5PartFile*)*file,*start,*end); -} - -h5part_int64_t -f_h5pt_resetview ( - haddr_t *file +h5pt_setview ( + const h5part_int64_t *f, + const h5part_int64_t *start, + const h5part_int64_t *end ) { - return H5PartResetView((H5PartFile*)*file); + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + return H5PartSetView ( filehandle, *start, *end ); } h5part_int64_t -f_h5pt_hasview ( - haddr_t *file +h5pt_resetview ( + const h5part_int64_t *f ) { - return H5PartHasView(((H5PartFile*)*file)); + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + return H5PartResetView ( filehandle ); } h5part_int64_t -f_h5pt_getview ( - haddr_t *file, +h5pt_hasview ( + const h5part_int64_t *f + ) { + + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + return H5PartHasView ( filehandle ); +} + +h5part_int64_t +h5pt_getview ( + const h5part_int64_t *f, h5part_int64_t *start, h5part_int64_t *end ) { - return H5PartGetView((H5PartFile*)*file, start, end); + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + return H5PartGetView ( filehandle, start, end); } /*==================Reading data ============*/ h5part_int64_t -f_h5pt_readdata_r8 ( - haddr_t *file, - char *name, +h5pt_readdata_r8 ( + const h5part_int64_t *f, + const char *name, h5part_float64_t *array, - int namelen + const int l_name ) { - h5part_int64_t rc; - char *newname = (char*)malloc(namelen+1); /* be safe? */ - strncpy(newname,name,namelen); - newname[namelen]='\0'; - rc = H5PartReadDataFloat64((H5PartFile*)*file,newname, array); - free(newname); - return rc; -} -h5part_int64_t -f_h5pt_readdata_i8 ( - haddr_t *file, - char *name, - h5part_int64_t *array, - int namelen ) { + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; - h5part_int64_t rc; - char *newname = (char*)malloc(namelen+1); /* be safe? */ - strncpy(newname,name,namelen); - newname[namelen]='\0'; - rc = H5PartReadDataInt64((H5PartFile*)*file,newname, array); - free(newname); - return rc; + char *name2 = _H5Part_strdupfor2c ( name, l_name ); + + h5part_int64_t herr = H5PartReadDataFloat64 ( + filehandle, name2, array ); + + free ( name2 ); + return herr; +} + +h5part_int64_t +h5pt_readdata_i8 ( + const h5part_int64_t *f, + const char *name, + h5part_int64_t *array, + const int l_name + ) { + + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + char *name2 = _H5Part_strdupfor2c ( name, l_name ); + + h5part_int64_t herr = H5PartReadDataInt64 ( + filehandle, name2, array ); + + free ( name2 ); + return herr; } /*=================== Attributes ================*/ -/* Attributes */ -/* writing */ +/* Writeing attributes */ h5part_int64_t -f_h5pt_writefileattrib_r8 ( - haddr_t *f, - char *name, - void *attrib, - h5part_int64_t *nelem, - int namelen ) { +h5pt_writefileattrib_r8 ( + const h5part_int64_t *f, + const char *name, + const void *attrib, + const h5part_float64_t *nelem, + const int l_name + ) { + + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + char *name2 = _H5Part_strdupfor2c ( name, l_name ); - h5part_int64_t rc; - char *newname = (char*)malloc(namelen+1); /* be safe? */ - strncpy(newname,name,namelen); - newname[namelen]='\0'; - rc = H5PartWriteFileAttrib((H5PartFile *)*f,newname, - H5T_NATIVE_DOUBLE,attrib,*nelem); - free(newname); - return rc; + h5part_int64_t herr = H5PartWriteFileAttrib ( + filehandle, name2, H5T_NATIVE_DOUBLE, attrib, *nelem ); + + free ( name2 ); + return herr; } h5part_int64_t -f_h5pt_writefileattrib_i8 ( - haddr_t *f, - char *name, - void *attrib, - h5part_int64_t *nelem, - int namelen +h5pt_writefileattrib_i8 ( + const h5part_int64_t *f, + const char *name, + const void *attrib, + const h5part_int64_t *nelem, + const int l_name ) { + + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + char *name2 = _H5Part_strdupfor2c ( name, l_name ); - h5part_int64_t rc; - char *newname = (char*)malloc(namelen+1); /* be safe? */ - strncpy(newname,name,namelen); - newname[namelen]='\0'; - rc = H5PartWriteFileAttrib((H5PartFile *)*f,newname, - H5T_NATIVE_INT64,attrib,*nelem); - free(newname); - return rc; + h5part_int64_t herr = H5PartWriteFileAttrib ( + filehandle, name2, H5T_NATIVE_INT64, attrib, *nelem ); + + free ( name2 ); + return herr; } h5part_int64_t -f_h5pt_writefileattrib_string ( - haddr_t *f, - char *name, - char *attrib, - int namelen, - int attriblen +h5pt_writefileattrib_string ( + const h5part_int64_t *f, + const char *attrib_name, + const char *attrib_value, + const int l_attrib_name, + const int l_attrib_value ) { + + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + char *attrib_name2 = _H5Part_strdupfor2c (attrib_name,l_attrib_name); + char *attrib_value2= _H5Part_strdupfor2c (attrib_value,l_attrib_value); + + h5part_int64_t herr = H5PartWriteFileAttribString ( + filehandle, attrib_name2, attrib_value2 ); + + free ( attrib_name2 ); + free ( attrib_value2 ); + return herr; +} + +h5part_int64_t +h5pt_writestepattrib_r8 ( + const h5part_int64_t *f, + const char *name, + const void *attrib, + const h5part_float64_t *nelem, + const int l_name + ) { + + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + char *name2 = _H5Part_strdupfor2c ( name, l_name ); - h5part_int64_t rc; - char *newattrib; - char *newname; - newname = (char*)malloc(namelen+1); /* be safe? */ - strncpy(newname,name,namelen); - newname[namelen]='\0'; - newattrib = (char*)malloc(attriblen+1); /* be safe? */ - strncpy(newattrib,attrib,attriblen); - newattrib[attriblen]='\0'; - rc = H5PartWriteFileAttribString((H5PartFile *)*f,newname,newattrib); - free(newname); - free(newattrib); - return rc; + h5part_int64_t herr = H5PartWriteStepAttrib ( + filehandle, name2, H5T_NATIVE_DOUBLE, attrib, *nelem ); + + free ( name2 ); + return herr; } h5part_int64_t -f_h5pt_writestepattrib_r8 ( - haddr_t *f, - char *name, - void *attrib, - h5part_int64_t *nelem, - int namelen){ - - h5part_int64_t rc; - char *newname = (char*)malloc(namelen+1); /* be safe? */ - strncpy(newname,name,namelen); - newname[namelen]='\0'; - rc = H5PartWriteStepAttrib((H5PartFile *)*f,newname, - H5T_NATIVE_DOUBLE,attrib,*nelem); - free(newname); - return rc; -} - -h5part_int64_t -f_h5pt_writestepattrib_i8 ( - haddr_t *f, - char *name, - void *attrib, - h5part_int64_t *nelem, - int namelen +h5pt_writestepattrib_i8 ( + const h5part_int64_t *f, + const char *name, + const void *attrib, + const h5part_float64_t *nelem, + const int l_name ) { - h5part_int64_t rc; - char *newname = (char*)malloc(namelen+1); /* be safe? */ - strncpy(newname,name,namelen); - newname[namelen]='\0'; - rc = H5PartWriteStepAttrib((H5PartFile *)*f,newname, - H5T_NATIVE_INT64,attrib,*nelem); - free(newname); - return rc; + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + char *name2 = _H5Part_strdupfor2c ( name, l_name ); + + h5part_int64_t herr = H5PartWriteStepAttrib ( + filehandle, name2, H5T_NATIVE_INT64, attrib, *nelem ); + + free ( name2 ); + return herr; } h5part_int64_t -f_h5pt_writestepattrib_string ( - haddr_t *f, - char *name, - char *attrib, - int namelen, - int attriblen ) { - - h5part_int64_t rc; - char *newattrib; - char *newname; - newname = (char*)malloc(namelen+1); /* be safe? */ - strncpy(newname,name,namelen); - newname[namelen]='\0'; - newattrib = (char*)malloc(attriblen+1); /* be safe? */ - strncpy(newattrib,attrib,attriblen); - newattrib[attriblen]='\0'; - rc = H5PartWriteStepAttribString((H5PartFile *)*f,newname,newattrib); - free(newname); - free(newattrib); - return rc; -} - -/* reading attributes ************************* */ -h5part_int64_t -f_h5pt_getnstepattribs ( - haddr_t *f +h5pt_writestepattrib_string ( + const h5part_int64_t *f, + const char *attrib_name, + const char *attrib_value, + const int l_attrib_name, + const int l_attrib_value ) { - return H5PartGetNumStepAttribs((H5PartFile*)*f); + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + char *attrib_name2 = _H5Part_strdupfor2c (attrib_name,l_attrib_name); + char *attrib_value2= _H5Part_strdupfor2c (attrib_value,l_attrib_value); + + h5part_int64_t herr = H5PartWriteStepAttribString ( + filehandle, attrib_name2, attrib_value2 ); + + free ( attrib_name2 ); + free ( attrib_value2 ); + return herr; } +/* Reading attributes ************************* */ + h5part_int64_t -f_h5pt_getnfileattribs ( - haddr_t *f +h5pt_getnstepattribs ( + const h5part_int64_t *f ) { - return H5PartGetNumFileAttribs((H5PartFile*)*f); + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + return H5PartGetNumStepAttribs ( filehandle ); } h5part_int64_t -f_h5pt_getstepattribinfo ( - haddr_t *f, - h5part_int64_t *idx, +h5pt_getnfileattribs ( + const h5part_int64_t *f + ) { + + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + return H5PartGetNumFileAttribs ( filehandle ); +} + +h5part_int64_t +h5pt_getstepattribinfo ( + const h5part_int64_t *f, + const h5part_int64_t *idx, char *name, h5part_int64_t *nelem, - int maxnamelen + const int l_name ) { + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; h5part_int64_t type; - return H5PartGetStepAttribInfo((H5PartFile*)*f,*idx,name,maxnamelen,&type,nelem); + + h5part_int64_t herr = H5PartGetStepAttribInfo ( + filehandle, *idx, name, l_name, &type, nelem); + + _H5Part_strc2for( name, l_name ); + return herr; } h5part_int64_t -f_h5pt_getfileattribinfo ( - haddr_t *f, - h5part_int64_t *idx, +h5pt_getfileattribinfo ( + const h5part_int64_t *f, + const h5part_int64_t *idx, char *name, h5part_int64_t *nelem, - int maxnamelen ) { + const int l_name ) { + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; h5part_int64_t type; - return H5PartGetFileAttribInfo((H5PartFile*)*f,*idx,name,maxnamelen,&type,nelem); + + h5part_int64_t herr = H5PartGetFileAttribInfo ( + filehandle, *idx, name, l_name, &type, nelem); + + _H5Part_strc2for( name, l_name ); + return herr; } h5part_int64_t -f_h5pt_readstepattrib ( - haddr_t *f, - char *name, - void *data, - int namelen +h5pt_readstepattrib ( + const h5part_int64_t *f, + const char *attrib_name, + void *attrib_value, + const int l_attrib_name ) { - h5part_int64_t rc; - char *newname = (char*)malloc(namelen+1); /* be safe? */ - strncpy(newname,name,namelen); - newname[namelen]='\0'; - rc = H5PartReadStepAttrib((H5PartFile*)*f,newname,data); - free( newname ); - return rc; + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + char * attrib_name2 = _H5Part_strdupfor2c (attrib_name,l_attrib_name); + + h5part_int64_t herr = H5PartReadStepAttrib ( + filehandle, attrib_name2, attrib_value ); + + free ( attrib_name2 ); + return herr; } h5part_int64_t -f_h5pt_readfileattrib ( - haddr_t *f, - char *name, - void *data, - int namelen +h5pt_readstepattrib_r8 ( + const h5part_int64_t *f, + const char *attrib_name, + h5part_float64_t *attrib_value, + const int l_attrib_name ) { - int rc; - char *newname = (char*)malloc(namelen+1); /* be safe? */ - strncpy(newname,name,namelen); - newname[namelen]='\0'; - rc = H5PartReadFileAttrib((H5PartFile*)*f,newname,data); - free( newname ); - return rc; + return h5pt_readstepattrib ( + f, attrib_name, attrib_value, l_attrib_name ); } h5part_int64_t -f_h5pt_set_verbosity_level ( - h5part_int64_t level +h5pt_readstepattrib_i8 ( + const h5part_int64_t *f, + const char *attrib_name, + h5part_int64_t *attrib_value, + const int l_attrib_name + ) { + + return h5pt_readstepattrib ( + f, attrib_name, attrib_value, l_attrib_name ); +} + +h5part_int64_t +h5pt_readstepattrib_string ( + const h5part_int64_t *f, + const char *attrib_name, + char *attrib_value, + const int l_attrib_name, + const int l_attrib_value + ) { + + h5part_int64_t herr = h5pt_readstepattrib ( + f, attrib_name, attrib_value, l_attrib_name ); + + _H5Part_strc2for ( attrib_value, l_attrib_value ); + return herr; +} + + +h5part_int64_t +h5pt_readfileattrib ( + const h5part_int64_t *f, + const char *attrib_name, + void *attrib_value, + const int l_attrib_name + ) { + + H5PartFile *filehandle = (H5PartFile*)(size_t)*f; + + char * attrib_name2 = _H5Part_strdupfor2c (attrib_name,l_attrib_name); + + h5part_int64_t herr = H5PartReadFileAttrib ( + filehandle, attrib_name2, attrib_value ); + + free ( attrib_name2 ); + return herr; +} + +h5part_int64_t +h5pt_readfileattrib_r8 ( + const h5part_int64_t *f, + const char *attrib_name, + h5part_float64_t *attrib_value, + const int l_attrib_name + ) { + return h5pt_readfileattrib ( + f, attrib_name, attrib_value, l_attrib_name ); +} + +h5part_int64_t +h5pt_readfileattrib_i8 ( + const h5part_int64_t *f, + const char *attrib_name, + h5part_int64_t *attrib_value, + const int l_attrib_name + ) { + return h5pt_readfileattrib ( + f, attrib_name, attrib_value, l_attrib_name ); +} + +h5part_int64_t +h5pt_readfileattrib_string ( + const h5part_int64_t *f, + const char *attrib_name, + char *attrib_value, + const int l_attrib_name, + const int l_attrib_value + ) { + + h5part_int64_t herr = h5pt_readfileattrib ( + f, attrib_name, attrib_value, l_attrib_name ); + + _H5Part_strc2for ( attrib_value, l_attrib_value ); + return herr; +} + +h5part_int64_t +h5pt_set_verbosity_level ( + const h5part_int64_t level ) { return H5PartSetVerbosityLevel ( level ); }