continued working on Fortran interface
This commit is contained in:
+12
-7
@@ -367,6 +367,7 @@ src/C++/H5Fed.hh -text
|
||||
src/C++/Makefile.am -text
|
||||
src/C/H5.c -text
|
||||
src/C/H5Block.c -text
|
||||
src/C/H5Block_readwrite.c -text
|
||||
src/C/H5Fed.c -text
|
||||
src/C/H5Fed_adjacency.c -text
|
||||
src/C/H5Fed_inquiry.c -text
|
||||
@@ -377,15 +378,17 @@ src/C/H5Part.c -text
|
||||
src/C/H5_attribs.c -text
|
||||
src/C/H5_inquiry.c -text
|
||||
src/C/Makefile.am -text
|
||||
src/C/generate-h5b-readwrite.py -text
|
||||
src/Fortran/H5.f90 -text
|
||||
src/Fortran/H5Block.f90 -text
|
||||
src/Fortran/H5BlockF.c -text
|
||||
src/Fortran/H5BlockReadWrite.f90 -text
|
||||
src/Fortran/H5BlockReadWriteF.c -text
|
||||
src/Fortran/H5F.c -text
|
||||
src/Fortran/H5Block_F.c -text
|
||||
src/Fortran/H5Block_readwrite.f90 -text
|
||||
src/Fortran/H5Block_readwrite_F.c -text
|
||||
src/Fortran/H5Part.f90 -text
|
||||
src/Fortran/H5PartAttrib.f90 -text
|
||||
src/Fortran/H5PartAttribF.c -text
|
||||
src/Fortran/H5PartF.c -text
|
||||
src/Fortran/H5Part_F.c -text
|
||||
src/Fortran/H5_F.c -text
|
||||
src/Fortran/H5_attribs.f90 -text
|
||||
src/Fortran/H5_attribs_F.c -text
|
||||
src/Fortran/Makefile.am -text
|
||||
src/Fortran/TestUnderscore.f -text
|
||||
src/Fortran/TestUnderscoreC.c -text
|
||||
@@ -461,6 +464,7 @@ src/h5core/h5u_readwrite.c -text
|
||||
src/h5core/h5u_types_private.h -text
|
||||
src/include/H5.h -text
|
||||
src/include/H5Block.h -text
|
||||
src/include/H5Block_readwrite.h -text
|
||||
src/include/H5Fed.h -text
|
||||
src/include/H5Fed_adjacency.h -text
|
||||
src/include/H5Fed_inquiry.h -text
|
||||
@@ -483,6 +487,7 @@ src/include/h5core/h5_readwrite.h -text
|
||||
src/include/h5core/h5_types.h -text
|
||||
src/include/h5core/h5b_attribs.h -text
|
||||
src/include/h5core/h5b_model.h -text
|
||||
src/include/h5core/h5b_readwrite.h -text
|
||||
src/include/h5core/h5t_adjacencies.h -text
|
||||
src/include/h5core/h5t_core.h -text
|
||||
src/include/h5core/h5t_inquiry.h -text
|
||||
|
||||
+8
-7
@@ -193,14 +193,14 @@ if test "X$USE_FORTRAN" = "Xyes"; then
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([symbol convention in object files])
|
||||
`cd src && rm -f TestUnderscore.o TestUnderscoreC.o TestUnderscore`
|
||||
`cd src && ${FC} ${FFLAGS} -c TestUnderscore.f`
|
||||
`cd src && ${CC} ${CFLAGS} -c TestUnderscoreC.c`
|
||||
`cd src && ${FC} ${FFLAGS} -o TestUnderscore TestUnderscore.o TestUnderscoreC.o`
|
||||
`cd src/Fortran && rm -f TestUnderscore.o TestUnderscoreC.o TestUnderscore`
|
||||
`cd src/Fortran && ${FC} ${FFLAGS} -c TestUnderscore.f`
|
||||
`cd src/Fortran && ${CC} ${CFLAGS} -c TestUnderscoreC.c`
|
||||
`cd src/Fortran && ${FC} ${FFLAGS} -o TestUnderscore TestUnderscore.o TestUnderscoreC.o`
|
||||
|
||||
if test -f src/TestUnderscore ; then
|
||||
if test -f src/Fortran/TestUnderscore ; then
|
||||
UNDERSCORE_H=Underscore.h
|
||||
`cd src && ./TestUnderscore > Underscore.h`
|
||||
`cd src/Fortran && ./TestUnderscore > Underscore.h`
|
||||
AC_MSG_RESULT([ok])
|
||||
else
|
||||
AC_MSG_RESULT([nok])
|
||||
@@ -497,6 +497,7 @@ AC_CONFIG_FILES([
|
||||
src/Makefile
|
||||
src/C/Makefile
|
||||
src/h5core/Makefile
|
||||
src/Fortran/Makefile
|
||||
test/Makefile
|
||||
test/H5Part/Makefile
|
||||
test/H5Block/Makefile
|
||||
@@ -515,7 +516,7 @@ AC_MSG_RESULT([ ])
|
||||
AC_MSG_RESULT([Host OS: $host_os])
|
||||
AC_MSG_RESULT([Host CPU: $host_cpu])
|
||||
AC_MSG_RESULT([Host vendor: $host_vendor])
|
||||
AC_MSG_RESULT([Build libraries: $FORTRAN_LIB])
|
||||
AC_MSG_RESULT([Build libraries: libH5Core.a libH5hutC.a $FORTRAN_LIB])
|
||||
AC_MSG_RESULT([Build test programs: $TTARGET])
|
||||
AC_MSG_RESULT([Build tools: $BUILD_TOOLS])
|
||||
AC_MSG_RESULT([CC = $CC])
|
||||
|
||||
+77
-47
@@ -71,9 +71,7 @@
|
||||
use the same field dimensions, set the layout only once before the
|
||||
first timestep.
|
||||
|
||||
\return \c H5_SUCCESS on success<br>
|
||||
\c H5PART_ERR_MPI<br>
|
||||
\c H5PART_ERR_HDF5
|
||||
\return \c H5_SUCCESS on success
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block3dSetView (
|
||||
@@ -91,6 +89,31 @@ H5Block3dSetView (
|
||||
return h5b_3d_set_view(f, i_start, i_end, j_start, j_end, k_start, k_end);
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_model
|
||||
|
||||
Return partition of processor \c proc as specified with
|
||||
\ref H5Block3dSetView.
|
||||
|
||||
\return \c H5_SUCCESS on success
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block3dGetView (
|
||||
h5_file_t *const f, /*!< IN: File handle */
|
||||
const int proc, /*!< IN: Processor to get partition from */
|
||||
h5_size_t *i_start, /*!< OUT: start index of \c i */
|
||||
h5_size_t *i_end, /*!< OUT: end index of \c i */
|
||||
h5_size_t *j_start, /*!< OUT: start index of \c j */
|
||||
h5_size_t *j_end, /*!< OUT: end index of \c j */
|
||||
h5_size_t *k_start, /*!< OUT: start index of \c k */
|
||||
h5_size_t *k_end /*!< OUT: end index of \c k */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5b_3d_get_view(f, proc, i_start, i_end, j_start, j_end, k_start, k_end);
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_model
|
||||
|
||||
@@ -131,41 +154,14 @@ H5Block3dGetChunk (
|
||||
return h5b_3d_get_chunk(f, field_name, dims);
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_model
|
||||
|
||||
Return partition of processor \c proc as specified with
|
||||
\c H5Block3dSetView().
|
||||
|
||||
\return \c H5_SUCCESS on success.<br>
|
||||
\c H5PART_ERR_INVAL if proc is invalid.
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block3dGetView (
|
||||
h5_file_t *const f, /*!< IN: File handle */
|
||||
const int proc, /*!< IN: Processor to get partition from */
|
||||
h5_size_t *i_start, /*!< OUT: start index of \c i */
|
||||
h5_size_t *i_end, /*!< OUT: end index of \c i */
|
||||
h5_size_t *j_start, /*!< OUT: start index of \c j */
|
||||
h5_size_t *j_end, /*!< OUT: end index of \c j */
|
||||
h5_size_t *k_start, /*!< OUT: start index of \c k */
|
||||
h5_size_t *k_end /*!< OUT: end index of \c k */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
//CHECK_LAYOUT ( f );
|
||||
|
||||
return h5b_3d_get_view(f, proc, i_start, i_end, j_start, j_end, k_start, k_end);
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_model
|
||||
|
||||
Return reduced (ghost-zone free) partition of processor \c proc
|
||||
as specified with \c H5Block3dSetView().
|
||||
as specified with \ref H5Block3dSetView.
|
||||
|
||||
\return \c H5_SUCCESS on success.<br>
|
||||
\c H5PART_ERR_INVAL if proc is invalid.
|
||||
\return \c H5_SUCCESS on success
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block3dGetReducedView (
|
||||
@@ -180,7 +176,6 @@ H5Block3dGetReducedView (
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
//CHECK_LAYOUT ( f );
|
||||
|
||||
return h5b_3d_get_reduced_view(f, proc, i_start, i_end, j_start, j_end, k_start, k_end);
|
||||
}
|
||||
@@ -220,7 +215,6 @@ H5BlockGetNumFields (
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
//CHECK_TIMEGROUP( f );
|
||||
|
||||
return h5b_get_num_fields(f);
|
||||
}
|
||||
@@ -235,7 +229,7 @@ H5BlockGetNumFields (
|
||||
This function can be used to retrieve all fields bound to the
|
||||
current time-step by looping from \c 0 to the number of fields
|
||||
minus one. The number of fields bound to the current time-step
|
||||
can be queried by calling the function \c H5BlockGetNumFields().
|
||||
can be queried by calling the function \ref H5BlockGetNumFields.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
@@ -268,9 +262,9 @@ h5_err_t
|
||||
H5BlockGetFieldInfoByName (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: field name */
|
||||
h5_int64_t *grid_rank, /*!< OUT: grid rank */
|
||||
h5_int64_t *grid_dims, /*!< OUT: grid dimensions */
|
||||
h5_int64_t *field_rank, /*!< OUT: field rank */
|
||||
h5_size_t *grid_rank, /*!< OUT: grid rank */
|
||||
h5_size_t *grid_dims, /*!< OUT: grid dimensions */
|
||||
h5_size_t *field_rank, /*!< OUT: field rank */
|
||||
h5_int64_t *type /*!< OUT: datatype */
|
||||
) {
|
||||
|
||||
@@ -312,29 +306,27 @@ H5BlockWriteFieldAttribString (
|
||||
/*!
|
||||
\ingroup h5block_attrib
|
||||
|
||||
Write float32 \c values as attribute \c attrib_name of field
|
||||
\c field_name.
|
||||
Read the string value from attribute \c attrib_name of field
|
||||
\c field_name into a \c buffer.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5BlockWriteFieldAttribFloat32 (
|
||||
H5BlockReadFieldAttribString (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: field name */
|
||||
const char *attrib_name, /*!< IN: attribute name */
|
||||
const char *values, /*!< IN: attribute value */
|
||||
const h5_size_t nvalues /*!< IN: number of values */
|
||||
char *buffer /*!< OUT: attribute value */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5_write_field_attrib (
|
||||
return h5_read_field_attrib (
|
||||
f,
|
||||
field_name,
|
||||
attrib_name,
|
||||
H5T_NATIVE_FLOAT,
|
||||
values,
|
||||
nvalues );
|
||||
H5_STRING_T,
|
||||
(void*)buffer);
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -355,3 +347,41 @@ H5BlockGetNumFieldAttribs (
|
||||
return h5b_get_num_field_attribs(f, field_name);
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_attrib
|
||||
|
||||
Gets the name, type and number of elements of the field attribute
|
||||
specified by its index.
|
||||
|
||||
This function can be used to retrieve all attributes bound to the
|
||||
specified field by looping from \c 0 to the number of attribute
|
||||
minus one. The number of attributes bound to the
|
||||
field can be queried by calling \ref H5BlockGetNumFieldAttribs.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_int64_t
|
||||
H5BlockGetFieldAttribInfo (
|
||||
h5_file_t *const f, /*!< [in] Handle to open file */
|
||||
const char *field_name, /*<! IN: field name */
|
||||
const h5_size_t attrib_idx, /*!< [in] Index of attribute to
|
||||
get infos about */
|
||||
char *attrib_name, /*!< [out] Name of attribute */
|
||||
const h5_size_t len_of_attrib_name,
|
||||
/*!< [in] length of buffer \c name */
|
||||
h5_int64_t *attrib_type, /*!< [out] Type of value. */
|
||||
h5_size_t *attrib_nelem /*!< [out] Number of elements */
|
||||
) {
|
||||
|
||||
SET_FNAME ( f, __func__ );
|
||||
|
||||
return h5b_get_field_attrib_info (
|
||||
f,
|
||||
field_name,
|
||||
attrib_idx,
|
||||
attrib_name,
|
||||
len_of_attrib_name,
|
||||
attrib_type,
|
||||
attrib_nelem );
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,626 @@
|
||||
|
||||
#include "h5core/h5_core.h"
|
||||
|
||||
/*!
|
||||
\ingroup h5block_data
|
||||
|
||||
Write a 3-dimensional field \c name from the buffer starting at \c data
|
||||
to the current time-step using the defined field layout. Values are
|
||||
floating points (64-bit).
|
||||
|
||||
You must use the Fortran indexing scheme to access items in \c data.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block3dWriteScalarFieldFloat64 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to write */
|
||||
const h5_float64_t *data /*!< IN: scalar data to write */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5b_write_scalar_data(f, name, (void*)data, H5T_NATIVE_DOUBLE );
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_data
|
||||
|
||||
Read a 3-dimensional field \c name into the buffer starting at \c data from
|
||||
the current time-step using the defined field layout. Values are
|
||||
floating points (64-bit).
|
||||
|
||||
You must use the Fortran indexing scheme to access items in \c data.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block3dReadScalarFieldFloat64 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to read */
|
||||
h5_float64_t *data /*!< OUT: ptr to read buffer */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5b_read_scalar_data(f, name, (void*)data, H5T_NATIVE_DOUBLE);
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_data
|
||||
*/
|
||||
/*!
|
||||
Write a 3-dimensional field \c name with 3-dimensional vectors as values
|
||||
from the buffers starting at \c x_data, \c y_data and \c z_data to the
|
||||
current time-step using the defined field layout. Values are 3-dimensional
|
||||
vectors with floating points (64-bit) values.
|
||||
|
||||
You must use the Fortran indexing scheme to access items in \c data.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block3dWriteVector3dFieldFloat64 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to write */
|
||||
const h5_float64_t *x_data, /*!< IN: X axis data */
|
||||
const h5_float64_t *y_data, /*!< IN: Y axis data */
|
||||
const h5_float64_t *z_data /*!< IN: Z axis data */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5b_write_vector3d_data(f, name,
|
||||
(void*)x_data, (void*)y_data, (void*)z_data, H5T_NATIVE_DOUBLE);
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_data
|
||||
*/
|
||||
/*!
|
||||
Read a 3-dimensional field \c name with 3-dimensional vectors as values
|
||||
from the buffers starting at \c x_data, \c y_data and \c z_data to the
|
||||
current time-step using the defined field layout. Values are 3-dimensional
|
||||
vectors with floating points (64-bit) values.
|
||||
|
||||
You must use the Fortran indexing scheme to access items in \c data.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block3dReadVector3dFieldFloat64 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to write */
|
||||
h5_float64_t *x_data, /*!< OUT: X axis data */
|
||||
h5_float64_t *y_data, /*!< OUT: Y axis data */
|
||||
h5_float64_t *z_data /*!< OUT: Z axis data */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5b_read_vector3d_data(f, name,
|
||||
(void*)x_data, (void*)y_data, (void*)z_data, H5T_NATIVE_DOUBLE);
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_data
|
||||
|
||||
Write a 3-dimensional field \c name from the buffer starting at \c data
|
||||
to the current time-step using the defined field layout. Values are
|
||||
floating points (32-bit).
|
||||
|
||||
You must use the Fortran indexing scheme to access items in \c data.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block3dWriteScalarFieldFloat32 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to write */
|
||||
const h5_float32_t *data /*!< IN: scalar data to write */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5b_write_scalar_data(f, name, (void*)data, H5T_NATIVE_FLOAT );
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_data
|
||||
|
||||
Read a 3-dimensional field \c name into the buffer starting at \c data from
|
||||
the current time-step using the defined field layout. Values are
|
||||
floating points (32-bit).
|
||||
|
||||
You must use the Fortran indexing scheme to access items in \c data.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block3dReadScalarFieldFloat32 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to read */
|
||||
h5_float32_t *data /*!< OUT: ptr to read buffer */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5b_read_scalar_data(f, name, (void*)data, H5T_NATIVE_FLOAT);
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_data
|
||||
*/
|
||||
/*!
|
||||
Write a 3-dimensional field \c name with 3-dimensional vectors as values
|
||||
from the buffers starting at \c x_data, \c y_data and \c z_data to the
|
||||
current time-step using the defined field layout. Values are 3-dimensional
|
||||
vectors with floating points (32-bit) values.
|
||||
|
||||
You must use the Fortran indexing scheme to access items in \c data.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block3dWriteVector3dFieldFloat32 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to write */
|
||||
const h5_float32_t *x_data, /*!< IN: X axis data */
|
||||
const h5_float32_t *y_data, /*!< IN: Y axis data */
|
||||
const h5_float32_t *z_data /*!< IN: Z axis data */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5b_write_vector3d_data(f, name,
|
||||
(void*)x_data, (void*)y_data, (void*)z_data, H5T_NATIVE_FLOAT);
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_data
|
||||
*/
|
||||
/*!
|
||||
Read a 3-dimensional field \c name with 3-dimensional vectors as values
|
||||
from the buffers starting at \c x_data, \c y_data and \c z_data to the
|
||||
current time-step using the defined field layout. Values are 3-dimensional
|
||||
vectors with floating points (32-bit) values.
|
||||
|
||||
You must use the Fortran indexing scheme to access items in \c data.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block3dReadVector3dFieldFloat32 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to write */
|
||||
h5_float32_t *x_data, /*!< OUT: X axis data */
|
||||
h5_float32_t *y_data, /*!< OUT: Y axis data */
|
||||
h5_float32_t *z_data /*!< OUT: Z axis data */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5b_read_vector3d_data(f, name,
|
||||
(void*)x_data, (void*)y_data, (void*)z_data, H5T_NATIVE_FLOAT);
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_data
|
||||
|
||||
Write a 3-dimensional field \c name from the buffer starting at \c data
|
||||
to the current time-step using the defined field layout. Values are
|
||||
integers (64-bit).
|
||||
|
||||
You must use the Fortran indexing scheme to access items in \c data.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block3dWriteScalarFieldInt64 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to write */
|
||||
const h5_int64_t *data /*!< IN: scalar data to write */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5b_write_scalar_data(f, name, (void*)data, H5T_NATIVE_INT64 );
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_data
|
||||
|
||||
Read a 3-dimensional field \c name into the buffer starting at \c data from
|
||||
the current time-step using the defined field layout. Values are
|
||||
integers (64-bit).
|
||||
|
||||
You must use the Fortran indexing scheme to access items in \c data.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block3dReadScalarFieldInt64 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to read */
|
||||
h5_int64_t *data /*!< OUT: ptr to read buffer */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5b_read_scalar_data(f, name, (void*)data, H5T_NATIVE_INT64);
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_data
|
||||
*/
|
||||
/*!
|
||||
Write a 3-dimensional field \c name with 3-dimensional vectors as values
|
||||
from the buffers starting at \c x_data, \c y_data and \c z_data to the
|
||||
current time-step using the defined field layout. Values are 3-dimensional
|
||||
vectors with integers (64-bit) values.
|
||||
|
||||
You must use the Fortran indexing scheme to access items in \c data.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block3dWriteVector3dFieldInt64 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to write */
|
||||
const h5_int64_t *x_data, /*!< IN: X axis data */
|
||||
const h5_int64_t *y_data, /*!< IN: Y axis data */
|
||||
const h5_int64_t *z_data /*!< IN: Z axis data */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5b_write_vector3d_data(f, name,
|
||||
(void*)x_data, (void*)y_data, (void*)z_data, H5T_NATIVE_INT64);
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_data
|
||||
*/
|
||||
/*!
|
||||
Read a 3-dimensional field \c name with 3-dimensional vectors as values
|
||||
from the buffers starting at \c x_data, \c y_data and \c z_data to the
|
||||
current time-step using the defined field layout. Values are 3-dimensional
|
||||
vectors with integers (64-bit) values.
|
||||
|
||||
You must use the Fortran indexing scheme to access items in \c data.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block3dReadVector3dFieldInt64 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to write */
|
||||
h5_int64_t *x_data, /*!< OUT: X axis data */
|
||||
h5_int64_t *y_data, /*!< OUT: Y axis data */
|
||||
h5_int64_t *z_data /*!< OUT: Z axis data */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5b_read_vector3d_data(f, name,
|
||||
(void*)x_data, (void*)y_data, (void*)z_data, H5T_NATIVE_INT64);
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_data
|
||||
|
||||
Write a 3-dimensional field \c name from the buffer starting at \c data
|
||||
to the current time-step using the defined field layout. Values are
|
||||
integers (32-bit).
|
||||
|
||||
You must use the Fortran indexing scheme to access items in \c data.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block3dWriteScalarFieldInt32 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to write */
|
||||
const h5_int32_t *data /*!< IN: scalar data to write */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5b_write_scalar_data(f, name, (void*)data, H5T_NATIVE_INT32 );
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_data
|
||||
|
||||
Read a 3-dimensional field \c name into the buffer starting at \c data from
|
||||
the current time-step using the defined field layout. Values are
|
||||
integers (32-bit).
|
||||
|
||||
You must use the Fortran indexing scheme to access items in \c data.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block3dReadScalarFieldInt32 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to read */
|
||||
h5_int32_t *data /*!< OUT: ptr to read buffer */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5b_read_scalar_data(f, name, (void*)data, H5T_NATIVE_INT32);
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_data
|
||||
*/
|
||||
/*!
|
||||
Write a 3-dimensional field \c name with 3-dimensional vectors as values
|
||||
from the buffers starting at \c x_data, \c y_data and \c z_data to the
|
||||
current time-step using the defined field layout. Values are 3-dimensional
|
||||
vectors with integers (32-bit) values.
|
||||
|
||||
You must use the Fortran indexing scheme to access items in \c data.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block3dWriteVector3dFieldInt32 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to write */
|
||||
const h5_int32_t *x_data, /*!< IN: X axis data */
|
||||
const h5_int32_t *y_data, /*!< IN: Y axis data */
|
||||
const h5_int32_t *z_data /*!< IN: Z axis data */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5b_write_vector3d_data(f, name,
|
||||
(void*)x_data, (void*)y_data, (void*)z_data, H5T_NATIVE_INT32);
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_data
|
||||
*/
|
||||
/*!
|
||||
Read a 3-dimensional field \c name with 3-dimensional vectors as values
|
||||
from the buffers starting at \c x_data, \c y_data and \c z_data to the
|
||||
current time-step using the defined field layout. Values are 3-dimensional
|
||||
vectors with integers (32-bit) values.
|
||||
|
||||
You must use the Fortran indexing scheme to access items in \c data.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block3dReadVector3dFieldInt32 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to write */
|
||||
h5_int32_t *x_data, /*!< OUT: X axis data */
|
||||
h5_int32_t *y_data, /*!< OUT: Y axis data */
|
||||
h5_int32_t *z_data /*!< OUT: Z axis data */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5b_read_vector3d_data(f, name,
|
||||
(void*)x_data, (void*)y_data, (void*)z_data, H5T_NATIVE_INT32);
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_attrib
|
||||
|
||||
Write float64 \c values as attribute \c attrib_name of field
|
||||
\c field_name.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5BlockWriteFieldAttribFloat64 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: field name */
|
||||
const char *attrib_name, /*!< IN: attribute name */
|
||||
const h5_float64_t *values, /*!< IN: attribute values */
|
||||
const h5_size_t nvalues /*!< IN: number of elements */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5_write_field_attrib (
|
||||
f,
|
||||
field_name,
|
||||
attrib_name,
|
||||
H5T_NATIVE_DOUBLE,
|
||||
values,
|
||||
nvalues );
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_attrib
|
||||
|
||||
Read float64 values from attribute \c attrib_name of field
|
||||
\c field_name into a \c buffer.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5BlockReadFieldAttribFloat64 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: field name */
|
||||
const char *attrib_name, /*!< IN: attribute name */
|
||||
h5_float64_t *buffer /*!< OUT: attribute values */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5_read_field_attrib (
|
||||
f,
|
||||
field_name,
|
||||
attrib_name,
|
||||
H5T_NATIVE_DOUBLE,
|
||||
(void*)buffer);
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_attrib
|
||||
|
||||
Write float32 \c values as attribute \c attrib_name of field
|
||||
\c field_name.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5BlockWriteFieldAttribFloat32 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: field name */
|
||||
const char *attrib_name, /*!< IN: attribute name */
|
||||
const h5_float32_t *values, /*!< IN: attribute values */
|
||||
const h5_size_t nvalues /*!< IN: number of elements */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5_write_field_attrib (
|
||||
f,
|
||||
field_name,
|
||||
attrib_name,
|
||||
H5T_NATIVE_FLOAT,
|
||||
values,
|
||||
nvalues );
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_attrib
|
||||
|
||||
Read float32 values from attribute \c attrib_name of field
|
||||
\c field_name into a \c buffer.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5BlockReadFieldAttribFloat32 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: field name */
|
||||
const char *attrib_name, /*!< IN: attribute name */
|
||||
h5_float32_t *buffer /*!< OUT: attribute values */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5_read_field_attrib (
|
||||
f,
|
||||
field_name,
|
||||
attrib_name,
|
||||
H5T_NATIVE_FLOAT,
|
||||
(void*)buffer);
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_attrib
|
||||
|
||||
Write int64 \c values as attribute \c attrib_name of field
|
||||
\c field_name.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5BlockWriteFieldAttribInt64 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: field name */
|
||||
const char *attrib_name, /*!< IN: attribute name */
|
||||
const h5_int64_t *values, /*!< IN: attribute values */
|
||||
const h5_size_t nvalues /*!< IN: number of elements */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5_write_field_attrib (
|
||||
f,
|
||||
field_name,
|
||||
attrib_name,
|
||||
H5T_NATIVE_INT64,
|
||||
values,
|
||||
nvalues );
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_attrib
|
||||
|
||||
Read int64 values from attribute \c attrib_name of field
|
||||
\c field_name into a \c buffer.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5BlockReadFieldAttribInt64 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: field name */
|
||||
const char *attrib_name, /*!< IN: attribute name */
|
||||
h5_int64_t *buffer /*!< OUT: attribute values */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5_read_field_attrib (
|
||||
f,
|
||||
field_name,
|
||||
attrib_name,
|
||||
H5T_NATIVE_INT64,
|
||||
(void*)buffer);
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_attrib
|
||||
|
||||
Write int32 \c values as attribute \c attrib_name of field
|
||||
\c field_name.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5BlockWriteFieldAttribInt32 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: field name */
|
||||
const char *attrib_name, /*!< IN: attribute name */
|
||||
const h5_int32_t *values, /*!< IN: attribute values */
|
||||
const h5_size_t nvalues /*!< IN: number of elements */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5_write_field_attrib (
|
||||
f,
|
||||
field_name,
|
||||
attrib_name,
|
||||
H5T_NATIVE_INT32,
|
||||
values,
|
||||
nvalues );
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_attrib
|
||||
|
||||
Read int32 values from attribute \c attrib_name of field
|
||||
\c field_name into a \c buffer.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5BlockReadFieldAttribInt32 (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: field name */
|
||||
const char *attrib_name, /*!< IN: attribute name */
|
||||
h5_int32_t *buffer /*!< OUT: attribute values */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5_read_field_attrib (
|
||||
f,
|
||||
field_name,
|
||||
attrib_name,
|
||||
H5T_NATIVE_INT32,
|
||||
(void*)buffer);
|
||||
}
|
||||
+2
-3
@@ -570,7 +570,7 @@ H5GetNumStepAttribs (
|
||||
This function can be used to retrieve all attributes bound to the
|
||||
file \c f by looping from \c 0 to the number of attribute minus
|
||||
one. The number of attributes bound to file \c f can be queried
|
||||
by calling the function \c H5GetNumFileAttribs().
|
||||
by calling \ref H5GetNumFileAttribs.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
@@ -611,8 +611,7 @@ H5GetFileAttribInfo (
|
||||
This function can be used to retrieve all attributes bound to the
|
||||
current time-step by looping from \c 0 to the number of attribute
|
||||
minus one. The number of attributes bound to the current
|
||||
time-step can be queried by calling the function
|
||||
\c H5GetNumStepAttribs().
|
||||
time-step can be queried by calling \ref H5GetNumStepAttribs.
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
|
||||
+9
-5
@@ -15,15 +15,18 @@ EXTRA_LIBRARIES = libH5hutC.a
|
||||
|
||||
# Header files that I wish to install in $(prefix)/include
|
||||
include_HEADERS = \
|
||||
../include/H5hut.h \
|
||||
../include/H5hut.h \
|
||||
../include/H5.h \
|
||||
../include/H5_inquiry.h \
|
||||
../include/H5_attribs.h \
|
||||
../include/H5Part.h \
|
||||
../include/H5Block.h \
|
||||
../include/H5Block_readwrite.h \
|
||||
../include/H5Fed.h \
|
||||
../include/H5Fed_inquiry.h \
|
||||
../include/H5Fed_retrieve.h \
|
||||
../include/H5Fed_store.h \
|
||||
../include/H5Fed_tags.h \
|
||||
../include/H5Part.h
|
||||
../include/H5Fed_tags.h
|
||||
|
||||
# Listing of all possible headers that I may include
|
||||
EXTRA_HEADERS =
|
||||
@@ -33,14 +36,15 @@ libH5hutC_a_SOURCES = \
|
||||
H5.c \
|
||||
H5_attribs.c \
|
||||
H5_inquiry.c \
|
||||
H5Part.c \
|
||||
H5Block.c \
|
||||
H5Block_readwrite.c \
|
||||
H5Fed.c \
|
||||
H5Fed_adjacency.c \
|
||||
H5Fed_inquiry.c \
|
||||
H5Fed_retrieve.c \
|
||||
H5Fed_store.c \
|
||||
H5Fed_tags.c \
|
||||
H5Part.c
|
||||
H5Fed_tags.c
|
||||
|
||||
all: ../lib/libH5hutC.a
|
||||
|
||||
|
||||
Executable
+576
@@ -0,0 +1,576 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
c_head = """
|
||||
#include "h5core/h5_core.h"
|
||||
"""
|
||||
|
||||
h_head = """
|
||||
#ifndef __H5BLOCK_READWRITE_H
|
||||
#define __H5BLOCK_READWRITE_H
|
||||
"""
|
||||
|
||||
h_tail = """
|
||||
#endif
|
||||
"""
|
||||
|
||||
fc_head = """
|
||||
#include "H5hut.h"
|
||||
#include "Underscore.h"
|
||||
|
||||
#if defined(F77_SINGLE_UNDERSCORE)
|
||||
#define F77NAME(a,b) a
|
||||
#elif defined(F77_CRAY_UNDERSCORE)
|
||||
#define F77NAME(a,b) b
|
||||
#elif defined(F77_NO_UNDERSCORE)
|
||||
#else
|
||||
#error Error, no way to determine how to construct fortran bindings
|
||||
#endif
|
||||
"""
|
||||
|
||||
write_scalar_h = """
|
||||
h5_err_t
|
||||
H5Block#DIM#dWriteScalarField#TYPE_ABV# (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
const h5_#TYPE_H5P#_t *data
|
||||
);
|
||||
"""
|
||||
|
||||
read_scalar_h = """
|
||||
h5_err_t
|
||||
H5Block#DIM#dReadScalarField#TYPE_ABV# (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
h5_#TYPE_H5P#_t *data
|
||||
);
|
||||
"""
|
||||
|
||||
write_scalar_c = """
|
||||
/*!
|
||||
\\ingroup h5block_data
|
||||
|
||||
Write a 3-dimensional field \\c name from the buffer starting at \\c data
|
||||
to the current time-step using the defined field layout. Values are
|
||||
#TYPE_FULL#.
|
||||
|
||||
You must use the Fortran indexing scheme to access items in \\c data.
|
||||
|
||||
\\return \\c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block#DIM#dWriteScalarField#TYPE_ABV# (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to write */
|
||||
const h5_#TYPE_H5P#_t *data /*!< IN: scalar data to write */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5b_write_scalar_data(f, name, (void*)data, #TYPE_HDF5# );
|
||||
}
|
||||
"""
|
||||
|
||||
read_scalar_c = """
|
||||
/*!
|
||||
\\ingroup h5block_data
|
||||
|
||||
Read a 3-dimensional field \\c name into the buffer starting at \\c data from
|
||||
the current time-step using the defined field layout. Values are
|
||||
#TYPE_FULL#.
|
||||
|
||||
You must use the Fortran indexing scheme to access items in \\c data.
|
||||
|
||||
\\return \\c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block#DIM#dReadScalarField#TYPE_ABV# (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to read */
|
||||
h5_#TYPE_H5P#_t *data /*!< OUT: ptr to read buffer */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5b_read_scalar_data(f, name, (void*)data, #TYPE_HDF5#);
|
||||
}
|
||||
"""
|
||||
|
||||
write_scalar_fi = """
|
||||
!> \\ingroup h5blockf_data
|
||||
!! See \\ref H5Block#DIM#dWriteScalarField#TYPE_ABV#
|
||||
!! \\return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_#DIM#d_write_scalar_field_#TYPE_F90_ABV# ( filehandle, name, data )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
|
||||
#TYPE_F90#, INTENT(IN) :: data(*) !< the array of data
|
||||
END FUNCTION
|
||||
"""
|
||||
|
||||
read_scalar_fi = """
|
||||
!> \\ingroup h5blockf_data
|
||||
!! See \\ref H5Block#DIM#dReadScalarField#TYPE_ABV#
|
||||
!! \\return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_#DIM#d_read_scalar_field_#TYPE_F90_ABV# ( filehandle, name, data )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
|
||||
#TYPE_F90#, INTENT(OUT) :: data(*) !< buffer to read the data into
|
||||
END FUNCTION
|
||||
"""
|
||||
|
||||
write_scalar_fc = """
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_#DIM#d_write_scalar_field_#TYPE_F90_ABV# F77NAME ( \\
|
||||
h5bl_#DIM#d_write_scalar_field_#TYPE_F90_ABV#_, \\
|
||||
H5BL_#DIM#D_WRITE_SCALAR_FIELD_#TYPE_F90_ABVC# )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_#DIM#d_write_scalar_field_#TYPE_F90_ABV# (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
const h5_#TYPE_H5P#_t *data,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5Block#DIM#dWriteScalarField#TYPE_ABV# (
|
||||
filehandle, field_name2, data );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
"""
|
||||
|
||||
read_scalar_fc = """
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_read_scalar_field_#TYPE_F90_ABV# F77NAME ( \\
|
||||
h5bl_3d_read_scalar_field_#TYPE_F90_ABV#_, \\
|
||||
H5BL_#DIM#D_READ_SCALAR_FIELD_#TYPE_F90_ABVC# )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_#DIM#d_read_scalar_field_#TYPE_F90_ABV# (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
h5_#TYPE_H5P#_t *data,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5Block#DIM#dWriteScalarField#TYPE_ABV# (
|
||||
filehandle, field_name2, data );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
"""
|
||||
|
||||
write_vector_h = """
|
||||
h5_err_t
|
||||
H5Block#DIM#dWriteVector3dField#TYPE_ABV# (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
const h5_#TYPE_H5P#_t *x_data,
|
||||
const h5_#TYPE_H5P#_t *y_data,
|
||||
const h5_#TYPE_H5P#_t *z_data
|
||||
);
|
||||
"""
|
||||
|
||||
read_vector_h = """
|
||||
h5_err_t
|
||||
H5Block#DIM#dReadVector3dField#TYPE_ABV# (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
h5_#TYPE_H5P#_t *x_data,
|
||||
h5_#TYPE_H5P#_t *y_data,
|
||||
h5_#TYPE_H5P#_t *z_data
|
||||
);
|
||||
"""
|
||||
|
||||
write_vector_c = """
|
||||
/*!
|
||||
\\ingroup h5block_data
|
||||
*/
|
||||
/*!
|
||||
Write a 3-dimensional field \\c name with 3-dimensional vectors as values
|
||||
from the buffers starting at \\c x_data, \\c y_data and \\c z_data to the
|
||||
current time-step using the defined field layout. Values are 3-dimensional
|
||||
vectors with #TYPE_FULL# values.
|
||||
|
||||
You must use the Fortran indexing scheme to access items in \\c data.
|
||||
|
||||
\\return \\c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block#DIM#dWriteVector3dField#TYPE_ABV# (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to write */
|
||||
const h5_#TYPE_H5P#_t *x_data, /*!< IN: X axis data */
|
||||
const h5_#TYPE_H5P#_t *y_data, /*!< IN: Y axis data */
|
||||
const h5_#TYPE_H5P#_t *z_data /*!< IN: Z axis data */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5b_write_vector3d_data(f, name,
|
||||
(void*)x_data, (void*)y_data, (void*)z_data, #TYPE_HDF5#);
|
||||
}
|
||||
"""
|
||||
|
||||
read_vector_c = """
|
||||
/*!
|
||||
\\ingroup h5block_data
|
||||
*/
|
||||
/*!
|
||||
Read a 3-dimensional field \\c name with 3-dimensional vectors as values
|
||||
from the buffers starting at \\c x_data, \\c y_data and \\c z_data to the
|
||||
current time-step using the defined field layout. Values are 3-dimensional
|
||||
vectors with #TYPE_FULL# values.
|
||||
|
||||
You must use the Fortran indexing scheme to access items in \\c data.
|
||||
|
||||
\\return \\c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5Block#DIM#dReadVector3dField#TYPE_ABV# (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to write */
|
||||
h5_#TYPE_H5P#_t *x_data, /*!< OUT: X axis data */
|
||||
h5_#TYPE_H5P#_t *y_data, /*!< OUT: Y axis data */
|
||||
h5_#TYPE_H5P#_t *z_data /*!< OUT: Z axis data */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5b_read_vector3d_data(f, name,
|
||||
(void*)x_data, (void*)y_data, (void*)z_data, #TYPE_HDF5#);
|
||||
}
|
||||
"""
|
||||
|
||||
write_vector_fi = """
|
||||
!> \\ingroup h5blockf_data
|
||||
!! See \\ref H5Block#DIM#dWriteVector3dField#TYPE_ABV#
|
||||
!! \\return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_#DIM#d_write_vector3d_field_#TYPE_F90_ABV# ( filehandle, name, x, y, z )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
|
||||
#TYPE_F90#, INTENT(IN) :: x(*) !< the array of x data to write
|
||||
#TYPE_F90#, INTENT(IN) :: y(*) !< the array of y data to write
|
||||
#TYPE_F90#, INTENT(IN) :: z(*) !< the array of z data to write
|
||||
END FUNCTION
|
||||
"""
|
||||
|
||||
read_vector_fi = """
|
||||
!> \\ingroup h5blockf_data
|
||||
!! See \\ref H5Block#DIM#dReadVector3dField#TYPE_ABV#
|
||||
!! \\return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_#DIM#d_read_vector3d_field_#TYPE_F90_ABV# ( filehandle, name, x, y, z )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
|
||||
#TYPE_F90#, INTENT(OUT) :: x(*) !< buffer to read the x data into
|
||||
#TYPE_F90#, INTENT(OUT) :: y(*) !< buffer to read the y data into
|
||||
#TYPE_F90#, INTENT(OUT) :: z(*) !< buffer to read the z data into
|
||||
END FUNCTION
|
||||
"""
|
||||
|
||||
write_vector_fc = """
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_#DIM#d_write_vector3d_field_#TYPE_F90_ABV# F77NAME ( \\
|
||||
h5bl_#DIM#d_write_vector3d_field_#TYPE_F90_ABV#_, \\
|
||||
H5BL_#DIM#D_WRITE_VECTOR3D_FIELD_#TYPE_F90_ABVC# )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_#DIM#d_write_vector3d_field_#TYPE_F90_ABV# (
|
||||
h5_int64_t *f, /*!< file handle */
|
||||
const char *field_name, /*!< name of the data set */
|
||||
const h5_#TYPE_H5P#_t *xval, /*!< array of x component data */
|
||||
const h5_#TYPE_H5P#_t *yval, /*!< array of y component data */
|
||||
const h5_#TYPE_H5P#_t *zval, /*!< array of z component data */
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5Block#DIM#dWriteVector3dField#TYPE_ABV# (
|
||||
filehandle, field_name2, xval, yval, zval );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
"""
|
||||
|
||||
read_vector_fc = """
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_#DIM#d_read_vector3d_field_#TYPE_F90_ABV# F77NAME ( \\
|
||||
h5bl_#DIM#d_read_vector3d_field_#TYPE_F90_ABV#_, \\
|
||||
H5BL_#DIM#D_READ_VECTOR3D_FIELD_#TYPE_F90_ABVC# )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_#DIM#d_read_vector3d_field_#TYPE_F90_ABV# (
|
||||
h5_int64_t *f, /*!< file handle */
|
||||
const char *field_name, /*!< name of the data set */
|
||||
h5_#TYPE_H5P#_t *xval, /*!< array of x component data */
|
||||
h5_#TYPE_H5P#_t *yval, /*!< array of y component data */
|
||||
h5_#TYPE_H5P#_t *zval, /*!< array of z component data */
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5Block#DIM#dReadVector3dField#TYPE_ABV# (
|
||||
filehandle, field_name2, xval, yval, zval );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
"""
|
||||
|
||||
write_attr_h = """
|
||||
h5_err_t
|
||||
H5BlockWriteFieldAttrib#TYPE_ABV# (
|
||||
h5_file_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
const h5_#TYPE_H5P#_t *values,
|
||||
const h5_size_t nvalues
|
||||
);
|
||||
"""
|
||||
|
||||
write_attr_c = """
|
||||
/*!
|
||||
\\ingroup h5block_attrib
|
||||
|
||||
Write #TYPE_H5P# \\c values as attribute \\c attrib_name of field
|
||||
\\c field_name.
|
||||
|
||||
\\return \\c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5BlockWriteFieldAttrib#TYPE_ABV# (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: field name */
|
||||
const char *attrib_name, /*!< IN: attribute name */
|
||||
const h5_#TYPE_H5P#_t *values, /*!< IN: attribute values */
|
||||
const h5_size_t nvalues /*!< IN: number of elements */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5_write_field_attrib (
|
||||
f,
|
||||
field_name,
|
||||
attrib_name,
|
||||
#TYPE_HDF5#,
|
||||
values,
|
||||
nvalues );
|
||||
}
|
||||
"""
|
||||
|
||||
write_attr_fi = """
|
||||
!> \\ingroup h5_attrib_f
|
||||
!! See \\ref H5BlockWriteFieldAttrib#TYPE_ABV#
|
||||
!! \\return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_writefieldattrib_#TYPE_F90_ABV# ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: field_name !< the name of the field
|
||||
CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< the name of the attribute
|
||||
#TYPE_F90#, INTENT(IN) :: values(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: nvalues !< the number of elements in the array
|
||||
END FUNCTION
|
||||
"""
|
||||
|
||||
write_attr_fc = """
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_writefieldattrib_#TYPE_F90_ABV# F77NAME ( \\
|
||||
h5bl_writefieldattrib_#TYPE_F90_ABV#_, \\
|
||||
H5BL_WRITEFIELDATTRIB_#TYPE_F90_ABVC# )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_writefieldattrib_#TYPE_F90_ABV# (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
const h5_#TYPE_H5P#_t *values,
|
||||
const h5_size_t *nvalues,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
char *attrib_name2 = h5_strdupfor2c ( attrib_name, l_attrib_name );
|
||||
|
||||
h5_err_t herr = H5BlockWriteFieldAttrib#TYPE_ABV# (
|
||||
filehandle, field_name2, attrib_name2, values, *nvalues );
|
||||
|
||||
free ( field_name2 );
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
"""
|
||||
|
||||
read_attr_h = """
|
||||
h5_err_t
|
||||
H5BlockReadFieldAttrib#TYPE_ABV# (
|
||||
h5_file_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
h5_#TYPE_H5P#_t *buffer
|
||||
);
|
||||
"""
|
||||
|
||||
read_attr_c = """
|
||||
/*!
|
||||
\\ingroup h5block_attrib
|
||||
|
||||
Read #TYPE_H5P# values from attribute \\c attrib_name of field
|
||||
\\c field_name into a \\c buffer.
|
||||
|
||||
\\return \\c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_err_t
|
||||
H5BlockReadFieldAttrib#TYPE_ABV# (
|
||||
h5_file_t *f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: field name */
|
||||
const char *attrib_name, /*!< IN: attribute name */
|
||||
h5_#TYPE_H5P#_t *buffer /*!< OUT: attribute values */
|
||||
) {
|
||||
|
||||
SET_FNAME( f, __func__ );
|
||||
|
||||
return h5_read_field_attrib (
|
||||
f,
|
||||
field_name,
|
||||
attrib_name,
|
||||
#TYPE_HDF5#,
|
||||
(void*)buffer);
|
||||
}
|
||||
"""
|
||||
|
||||
read_attr_fi = """
|
||||
!> \\ingroup h5_attrib_f
|
||||
!! See \\ref H5BlockReadFieldAttrib#TYPE_ABV#
|
||||
!! \\return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_readfieldattrib_#TYPE_F90_ABV# ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: field_name !< the name of the field
|
||||
CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< the name of the attribute
|
||||
#TYPE_F90#, INTENT(IN) :: values(*) !< the buffer to read into
|
||||
END FUNCTION
|
||||
"""
|
||||
|
||||
read_attr_fc = """
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_readfieldattrib_#TYPE_F90_ABV# F77NAME ( \\
|
||||
h5bl_readfieldattrib_#TYPE_F90_ABV#_, \\
|
||||
H5BL_READFIELDATTRIB_#TYPE_F90_ABVC# )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_readfieldattrib_#TYPE_F90_ABV# (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
h5_#TYPE_H5P#_t *values,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
char *attrib_name2 = h5_strdupfor2c ( attrib_name, l_attrib_name );
|
||||
|
||||
h5_err_t herr = H5BlockReadFieldAttrib#TYPE_ABV# (
|
||||
filehandle, field_name2, attrib_name2, values );
|
||||
|
||||
free ( field_name2 );
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
"""
|
||||
|
||||
|
||||
dims = ["3"]
|
||||
types = [
|
||||
["floating points (64-bit)", "Float64", "float64", "H5T_NATIVE_DOUBLE", "REAL*8", "r8", "R8"],
|
||||
["floating points (32-bit)", "Float32", "float32", "H5T_NATIVE_FLOAT", "REAL*4", "r4", "R4"],
|
||||
["integers (64-bit)", "Int64", "int64", "H5T_NATIVE_INT64", "INTEGER*8", "i8", "I8"],
|
||||
["integers (32-bit)", "Int32", "int32", "H5T_NATIVE_INT32", "INTEGER*4", "i4", "I4"]
|
||||
]
|
||||
|
||||
def create_call(template, type, dim):
|
||||
fcn = template
|
||||
fcn = fcn.replace('#DIM#',dim)\
|
||||
.replace('#TYPE_FULL#',type[0])\
|
||||
.replace('#TYPE_ABV#',type[1])\
|
||||
.replace('#TYPE_H5P#',type[2])\
|
||||
.replace('#TYPE_HDF5#',type[3])\
|
||||
.replace('#TYPE_F90#',type[4])\
|
||||
.replace('#TYPE_F90_ABV#',type[5])\
|
||||
.replace('#TYPE_F90_ABVC#',type[6])
|
||||
return fcn
|
||||
|
||||
def write_calls():
|
||||
cfile = file('H5Block_readwrite.c','w')
|
||||
cfile.write(c_head)
|
||||
hfile = file('../include/H5Block_readwrite.h','w')
|
||||
hfile.write(h_head)
|
||||
fcfile = file('../Fortran/H5Block_readwrite_F.c','w')
|
||||
fcfile.write(fc_head)
|
||||
fifile = file('../Fortran/H5Block_readwrite.f90','w')
|
||||
for dim in dims:
|
||||
for type in types:
|
||||
cfile.write(create_call(write_scalar_c,type,dim));
|
||||
cfile.write(create_call(read_scalar_c,type,dim));
|
||||
hfile.write(create_call(write_scalar_h,type,dim));
|
||||
hfile.write(create_call(read_scalar_h,type,dim));
|
||||
fcfile.write(create_call(write_scalar_fc,type,dim));
|
||||
fcfile.write(create_call(read_scalar_fc,type,dim));
|
||||
fifile.write(create_call(write_scalar_fi,type,dim));
|
||||
fifile.write(create_call(read_scalar_fi,type,dim));
|
||||
cfile.write(create_call(write_vector_c,type,dim));
|
||||
cfile.write(create_call(read_vector_c,type,dim));
|
||||
hfile.write(create_call(write_vector_h,type,dim));
|
||||
hfile.write(create_call(read_vector_h,type,dim));
|
||||
fcfile.write(create_call(write_vector_fc,type,dim));
|
||||
fcfile.write(create_call(read_vector_fc,type,dim));
|
||||
fifile.write(create_call(write_vector_fi,type,dim));
|
||||
fifile.write(create_call(read_vector_fi,type,dim));
|
||||
for type in types:
|
||||
cfile.write(create_call(write_attr_c,type,""));
|
||||
hfile.write(create_call(write_attr_h,type,""));
|
||||
fifile.write(create_call(write_attr_fi,type,""));
|
||||
fcfile.write(create_call(write_attr_fc,type,""));
|
||||
cfile.write(create_call(read_attr_c,type,""));
|
||||
hfile.write(create_call(read_attr_h,type,""));
|
||||
fifile.write(create_call(read_attr_fi,type,""));
|
||||
fcfile.write(create_call(read_attr_fc,type,""));
|
||||
cfile.close()
|
||||
hfile.write(h_tail)
|
||||
hfile.close()
|
||||
fcfile.close()
|
||||
fifile.close()
|
||||
|
||||
write_calls()
|
||||
|
||||
@@ -0,0 +1,143 @@
|
||||
! Declaration of subroutines for Fortran Bindings
|
||||
|
||||
!> \defgroup h5_f90_api H5hut F90 API
|
||||
|
||||
!> \ingroup h5_f90_api
|
||||
!! \defgroup h5_open_f File Handling
|
||||
!<
|
||||
|
||||
!> \ingroup h5_f90_api
|
||||
!! \defgroup h5_model_f Setting up the Data Model
|
||||
!<
|
||||
|
||||
!> \ingroup h5_f90_api
|
||||
!! \defgroup h5_data_f Reading and Writing Datasets
|
||||
!<
|
||||
|
||||
!> \ingroup h5_f90_api
|
||||
!! \defgroup h5_attrib_f Reading and Writing Attributes
|
||||
!<
|
||||
|
||||
|
||||
!!!!!!!! File Opening and Closing !!!!!!!!
|
||||
|
||||
!> \ingroup h5_open_f
|
||||
!! Opens a file for reading. See \ref H5OpenFile
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5_openr ( filename )
|
||||
CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for reading
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5_open_f
|
||||
!! Opens a file for writing in truncate mode. See \ref H5OpenFile
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5_openw ( filename )
|
||||
CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for writing
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5_open_f
|
||||
!! Opens a file for writing in append mode. See \ref H5OpenFile
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5_opena ( filename )
|
||||
CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for appending
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5_open_f
|
||||
!! Opens a parallel file for reading.
|
||||
!! See \ref H5OpenFile
|
||||
!!
|
||||
!! Flags are specified as a comma separated string that can include:
|
||||
!!
|
||||
!! - \c vfd_mpiposix - use the HDF5 MPI-POSIX virtual file driver
|
||||
!! - \c vfd_indendent - use MPI-IO in indepedent mode
|
||||
!!
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5_openr_par_align ( filename, mpi_communicator, align )
|
||||
CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for reading
|
||||
INTEGER, INTENT(IN) :: mpi_communicator !< the MPI_Communicator used by the program
|
||||
CHARACTER(LEN=*), INTENT(IN) :: flags !< additional flags
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5_open_f
|
||||
!! Opens a parallel file for writing.
|
||||
!! See \ref H5OpenFile
|
||||
!!
|
||||
!! Flags are specified as a comma separated string that can include:
|
||||
!!
|
||||
!! - \c vfd_mpiposix - use the HDF5 MPI-POSIX virtual file driver
|
||||
!! - \c vfd_indendent - use MPI-IO in indepedent mode
|
||||
!! - \c vfd_mpio_ind - use MPI-IO in indepedent mode
|
||||
!!
|
||||
!! See \ref H5PartOpenFileParallelAlign
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5_openw_par_align ( filename, mpi_communicator, align, flags )
|
||||
CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for writing
|
||||
INTEGER, INTENT(IN) :: mpi_communicator !< the MPI_Communicator used by the program
|
||||
CHARACTER(LEN=*), INTENT(IN) :: flags !< additional flags
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5_open_f
|
||||
!! Opens a parallel file for writing in append mode.
|
||||
!! See \ref H5OpenFile
|
||||
!!
|
||||
!! Flags are specified as a comma separated string that can include:
|
||||
!!
|
||||
!! - \c vfd_mpiposix - use the HDF5 MPI-POSIX virtual file driver
|
||||
!! - \c vfd_indendent - use MPI-IO in indepedent mode
|
||||
!!
|
||||
!! See \ref H5PartOpenFileParallelAlign
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5_opena_par_align ( filename, mpi_communicator, align, flags )
|
||||
CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for appending
|
||||
INTEGER, INTENT(IN) :: mpi_communicator !< the MPI_Communicator used by the program
|
||||
CHARACTER(LEN=*), INTENT(IN) :: flags !< additional flags
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5_open_f
|
||||
!! Closes a file. See \ref H5CloseFile
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5_close ( filehandle )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5_open_f
|
||||
!! Checks that a file is valid. See \ref H5CheckFile
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5_check ( filehandle )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5_open_f
|
||||
!! See \ref H5SetVerbosityLevel
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5_set_verbosity_level ( level )
|
||||
INTEGER*8, INTENT(IN) :: level !< the level from 0 (no output) to 5 (most detailed)
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5_model_f
|
||||
!! See \ref H5SetStep
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5_setstep (filehandle,step)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
INTEGER*8, INTENT(IN) :: step !< a timestep value >= 1
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5_model_f
|
||||
!! See \ref H5GetNumSteps
|
||||
!! \return the number of steps or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5_getnsteps (filehandle)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
END FUNCTION
|
||||
|
||||
|
||||
@@ -1,447 +0,0 @@
|
||||
#include "H5hut.h"
|
||||
#include "Underscore.h"
|
||||
|
||||
#if defined(F77_SINGLE_UNDERSCORE)
|
||||
#define F77NAME(a,b) a
|
||||
#elif defined(F77_CRAY_UNDERSCORE)
|
||||
#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 h5bl_define3dlayout F77NAME ( \
|
||||
h5bl_define3dlayout_, \
|
||||
H5BL_DEFINE3DLAYOUT )
|
||||
#define h5bl_define3dchunkdims F77NAME ( \
|
||||
h5bl_define3dchunkdims_, \
|
||||
H5BL_DEFINE3DCHUNKDIMS )
|
||||
#define h5bl_get_partition_of_proc F77NAME ( \
|
||||
h5bl_get_partition_of_proc_, \
|
||||
H5BL_GET_PARTITION_OF_PROC )
|
||||
#define h5bl_get_reduced_partition_of_proc F77NAME ( \
|
||||
h5bl_get_reduced_partition_of_proc_,\
|
||||
H5BL_GET_REDUCED_PARTITION_OF_PROC )
|
||||
#define h5bl_get_proc_of F77NAME ( \
|
||||
h5bl_get_proc_of_, \
|
||||
H5BL_GET_PROC_OF )
|
||||
#define h5bl_getnumfields F77NAME ( \
|
||||
h5bl_getnumfields_, \
|
||||
H5BL_GETNUMFIELDS )
|
||||
#define h5bl_getfieldinfo F77NAME ( \
|
||||
h5bl_getfieldinfo_, \
|
||||
H5BL_GETFIELDINFO )
|
||||
#define h5bl_writefieldattrib_string F77NAME ( \
|
||||
h5bl_writefieldattrib_string_, \
|
||||
H5BL_WRITEFIELDATTRIB_STRING )
|
||||
#define h5bl_getnfieldattribs F77NAME ( \
|
||||
h5bl_getnfieldattribs_, \
|
||||
H5BL_GETNFIELDATTRIBS )
|
||||
#define h5bl_getfieldattribinfo F77NAME ( \
|
||||
h5bl_getfieldattribinfo_, \
|
||||
h5bl_getfieldattribinfo )
|
||||
#define h5bl_readfieldattrib_i8 F77NAME ( \
|
||||
h5bl_readfieldattrib_i8_, \
|
||||
H5BL_READFIELDATTRIB_I8 )
|
||||
#define h5bl_readfieldattrib_r8 F77NAME ( \
|
||||
h5bl_readfieldattrib_r8_, \
|
||||
H5BL_READFIELDATTRIB_R8 )
|
||||
#define h5bl_readfieldattrib_string F77NAME ( \
|
||||
h5bl_readfieldattrib_string_, \
|
||||
H5BL_READFIELDATTRIB_STRING )
|
||||
#define h5bl_has_fielddata F77NAME ( \
|
||||
h5bl_has_fielddata_, \
|
||||
H5BL_HAS_FIELDDATA )
|
||||
#define h5bl_3d_set_field_spacing F77NAME ( \
|
||||
h5bl_3d_set_field_spacing_, \
|
||||
H5BL_3D_SET_FIELD_SPACING )
|
||||
#define h5bl_3d_get_field_spacing F77NAME ( \
|
||||
h5bl_3d_get_field_spacing_, \
|
||||
H5BL_3D_GET_FIELD_SPACING )
|
||||
#define h5bl_3d_set_field_origin F77NAME ( \
|
||||
h5bl_3d_set_field_origin_, \
|
||||
H5BL_3D_SET_FIELD_ORIGIN )
|
||||
#define h5bl_3d_get_field_origin F77NAME ( \
|
||||
h5bl_3d_get_field_origin_, \
|
||||
H5BL_3D_GET_FIELD_origin )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
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 */
|
||||
const h5part_int64_t *j_start, /*!< start index of j */
|
||||
const h5part_int64_t *j_end, /*!< end index of j */
|
||||
const h5part_int64_t *k_start, /*!< start index of k */
|
||||
const h5part_int64_t *k_end /*!< end index of k */
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
return H5BlockDefine3DFieldLayout (
|
||||
filehandle,
|
||||
*i_start-1, *i_end-1,
|
||||
*j_start-1, *j_end-1,
|
||||
*k_start-1, *k_end-1 );
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_define3dchunkdims (
|
||||
h5part_int64_t *f,
|
||||
const h5part_int64_t *i,
|
||||
const h5part_int64_t *j,
|
||||
const h5part_int64_t *k
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
return H5BlockDefine3DChunkDims ( filehandle, *i, *j, *k );
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
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 */
|
||||
h5part_int64_t *j_start, /*!< start index of j */
|
||||
h5part_int64_t *j_end, /*!< end index of j */
|
||||
h5part_int64_t *k_start, /*!< start index of k */
|
||||
h5part_int64_t *k_end /*!< end index of k */
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
h5part_int64_t herr = H5Block3dGetPartitionOfProc (
|
||||
filehandle,
|
||||
*proc,
|
||||
i_start, i_end, j_start, j_end, k_start, k_end );
|
||||
if ( herr < 0 ) return herr;
|
||||
|
||||
(*i_start)++;
|
||||
(*i_end)++;
|
||||
(*j_start)++;
|
||||
(*j_end)++;
|
||||
(*k_start)++;
|
||||
(*k_end)++;
|
||||
|
||||
return H5PART_SUCCESS;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_get_reduced_partition_of_proc (
|
||||
h5part_int64_t *f,
|
||||
const h5part_int64_t *proc,
|
||||
h5part_int64_t *i_start,
|
||||
h5part_int64_t *i_end,
|
||||
h5part_int64_t *j_start,
|
||||
h5part_int64_t *j_end,
|
||||
h5part_int64_t *k_start,
|
||||
h5part_int64_t *k_end
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
h5part_int64_t herr = H5Block3dGetReducedPartitionOfProc (
|
||||
filehandle,
|
||||
*proc,
|
||||
i_start, i_end, j_start, j_end, k_start, k_end );
|
||||
if ( herr < 0 ) return herr;
|
||||
|
||||
(*i_start)++;
|
||||
(*i_end)++;
|
||||
(*j_start)++;
|
||||
(*j_end)++;
|
||||
(*k_start)++;
|
||||
(*k_end)++;
|
||||
|
||||
return H5PART_SUCCESS;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_get_proc_of (
|
||||
h5part_int64_t *f,
|
||||
const h5part_int64_t *i,
|
||||
const h5part_int64_t *j,
|
||||
const h5part_int64_t *k
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
return H5Block3dGetProcOf ( filehandle, (*i)-1, (*j)-1, (*k)-1 );
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_getnumfields (
|
||||
h5part_int64_t *f /*!< file handle */
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
return H5BlockGetNumFields ( filehandle );
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_getfieldinfo (
|
||||
h5part_int64_t *f,
|
||||
const h5part_int64_t *idx,
|
||||
char *field_name,
|
||||
h5part_int64_t *grid_rank,
|
||||
h5part_int64_t *grid_dims,
|
||||
h5part_int64_t *field_dims,
|
||||
h5part_int64_t *type,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
h5part_int64_t herr = H5BlockGetFieldInfo (
|
||||
filehandle, *idx, field_name, l_field_name,
|
||||
grid_rank, grid_dims, field_dims, type );
|
||||
_H5Part_strc2for ( field_name, l_field_name );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_writefieldattrib_string (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
const char *attrib_value,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name,
|
||||
const int l_attrib_value
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
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 );
|
||||
|
||||
free ( field_name2 );
|
||||
free ( attrib_name2 );
|
||||
free ( attrib_value2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_getnfieldattribs (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5part_int64_t herr = H5BlockGetNumFieldAttribs (
|
||||
filehandle, field_name2 );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_getfieldattribinfo (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
const h5part_int64_t *attrib_idx,
|
||||
char *attrib_name,
|
||||
h5part_int64_t *attrib_nelem,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
h5part_int64_t attrib_type;
|
||||
|
||||
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,
|
||||
&attrib_type,
|
||||
attrib_nelem );
|
||||
|
||||
_H5Part_strc2for ( attrib_name, l_attrib_name );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_readfieldattrib_i8 (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
h5part_int64_t *attrib_value,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
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 );
|
||||
|
||||
free ( field_name2 );
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_readfieldattrib_r8 (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
h5part_float64_t *attrib_value,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
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 );
|
||||
|
||||
free ( field_name2 );
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_readfieldattrib_string (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
char *attrib_value,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name,
|
||||
const int l_attrib_value
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
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
|
||||
h5bl_has_fielddata (
|
||||
h5part_int64_t *f
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
return H5BlockHasFieldData ( filehandle );
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5b_3d_get_field_spacing (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
h5part_float64_t *x,
|
||||
h5part_float64_t *y,
|
||||
h5part_float64_t *z,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5part_int64_t herr = H5Block3dGetFieldSpacing (
|
||||
filehandle, field_name2, x, y, z );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5b_3d_set_field_spacing (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
const h5part_float64_t *x,
|
||||
const h5part_float64_t *y,
|
||||
const h5part_float64_t *z,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5part_int64_t herr = H5Block3dSetFieldSpacing (
|
||||
filehandle, field_name2, *x, *y, *z );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5b_3d_get_field_origin (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
h5part_float64_t *x,
|
||||
h5part_float64_t *y,
|
||||
h5part_float64_t *z,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5part_int64_t herr = H5Block3dGetFieldOrigin (
|
||||
filehandle, field_name2, x, y, z );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5b_3d_set_field_origin (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
const h5part_float64_t *x,
|
||||
const h5part_float64_t *y,
|
||||
const h5part_float64_t *z,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5part_int64_t herr = H5Block3dSetFieldOrigin (
|
||||
filehandle, field_name2, *x, *y, *z );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
@@ -1,555 +0,0 @@
|
||||
|
||||
#include "H5Part.h"
|
||||
#include "H5PartPrivate.h"
|
||||
#include "H5Block.h"
|
||||
#include "H5BlockReadWrite.h"
|
||||
#include "Underscore.h"
|
||||
|
||||
#if defined(F77_SINGLE_UNDERSCORE)
|
||||
#define F77NAME(a,b) a
|
||||
#elif defined(F77_CRAY_UNDERSCORE)
|
||||
#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 h5bl_3d_write_scalar_field_r8 F77NAME ( \
|
||||
h5bl_3d_write_scalar_field_r8_, \
|
||||
H5BL_3D_WRITE_SCALAR_FIELD_R8 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_3d_write_scalar_field_r8 (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
const h5part_float64_t *data,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5part_int64_t herr = H5Block3dWriteScalarFieldFloat64 (
|
||||
filehandle, field_name2, data );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_read_scalar_field_r8 F77NAME ( \
|
||||
h5bl_3d_read_scalar_field_r8_, \
|
||||
H5BL_3D_READ_SCALAR_FIELD_R8 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_3d_read_scalar_field_r8 (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
h5part_float64_t *data,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5part_int64_t herr = H5Block3dWriteScalarFieldFloat64 (
|
||||
filehandle, field_name2, data );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_write_3dvector_field_r8 F77NAME ( \
|
||||
h5bl_3d_write_3dvector_field_r8_, \
|
||||
H5BL_3D_WRITE_3DVECTOR_FIELD_R8 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_3d_write_3dvector_field_r8 (
|
||||
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 */
|
||||
const h5part_float64_t *zval, /*!< array of z component data */
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5part_int64_t herr = H5Block3dWrite3dVectorFieldFloat64 (
|
||||
filehandle, field_name2, xval, yval, zval );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_read_3dvector_field_r8 F77NAME ( \
|
||||
h5bl_3d_read_3dvector_field_r8_, \
|
||||
H5BL_3D_READ_3DVECTOR_FIELD_R8 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_3d_read_3dvector_field_r8 (
|
||||
h5part_int64_t *f, /*!< file handle */
|
||||
const char *field_name, /*!< name of the data set */
|
||||
h5part_float64_t *xval, /*!< array of x component data */
|
||||
h5part_float64_t *yval, /*!< array of y component data */
|
||||
h5part_float64_t *zval, /*!< array of z component data */
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5part_int64_t herr = H5Block3dRead3dVectorFieldFloat64 (
|
||||
filehandle, field_name2, xval, yval, zval );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_write_scalar_field_r4 F77NAME ( \
|
||||
h5bl_3d_write_scalar_field_r4_, \
|
||||
H5BL_3D_WRITE_SCALAR_FIELD_R4 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_3d_write_scalar_field_r4 (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
const h5part_float32_t *data,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5part_int64_t herr = H5Block3dWriteScalarFieldFloat32 (
|
||||
filehandle, field_name2, data );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_read_scalar_field_r4 F77NAME ( \
|
||||
h5bl_3d_read_scalar_field_r4_, \
|
||||
H5BL_3D_READ_SCALAR_FIELD_R4 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_3d_read_scalar_field_r4 (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
h5part_float32_t *data,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5part_int64_t herr = H5Block3dWriteScalarFieldFloat32 (
|
||||
filehandle, field_name2, data );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_write_3dvector_field_r4 F77NAME ( \
|
||||
h5bl_3d_write_3dvector_field_r4_, \
|
||||
H5BL_3D_WRITE_3DVECTOR_FIELD_R4 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_3d_write_3dvector_field_r4 (
|
||||
h5part_int64_t *f, /*!< file handle */
|
||||
const char *field_name, /*!< name of the data set */
|
||||
const h5part_float32_t *xval, /*!< array of x component data */
|
||||
const h5part_float32_t *yval, /*!< array of y component data */
|
||||
const h5part_float32_t *zval, /*!< array of z component data */
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5part_int64_t herr = H5Block3dWrite3dVectorFieldFloat32 (
|
||||
filehandle, field_name2, xval, yval, zval );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_read_3dvector_field_r4 F77NAME ( \
|
||||
h5bl_3d_read_3dvector_field_r4_, \
|
||||
H5BL_3D_READ_3DVECTOR_FIELD_R4 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_3d_read_3dvector_field_r4 (
|
||||
h5part_int64_t *f, /*!< file handle */
|
||||
const char *field_name, /*!< name of the data set */
|
||||
h5part_float32_t *xval, /*!< array of x component data */
|
||||
h5part_float32_t *yval, /*!< array of y component data */
|
||||
h5part_float32_t *zval, /*!< array of z component data */
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5part_int64_t herr = H5Block3dRead3dVectorFieldFloat32 (
|
||||
filehandle, field_name2, xval, yval, zval );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_write_scalar_field_i8 F77NAME ( \
|
||||
h5bl_3d_write_scalar_field_i8_, \
|
||||
H5BL_3D_WRITE_SCALAR_FIELD_I8 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_3d_write_scalar_field_i8 (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
const h5part_int64_t *data,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5part_int64_t herr = H5Block3dWriteScalarFieldInt64 (
|
||||
filehandle, field_name2, data );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_read_scalar_field_i8 F77NAME ( \
|
||||
h5bl_3d_read_scalar_field_i8_, \
|
||||
H5BL_3D_READ_SCALAR_FIELD_I8 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_3d_read_scalar_field_i8 (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
h5part_int64_t *data,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5part_int64_t herr = H5Block3dWriteScalarFieldInt64 (
|
||||
filehandle, field_name2, data );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_write_3dvector_field_i8 F77NAME ( \
|
||||
h5bl_3d_write_3dvector_field_i8_, \
|
||||
H5BL_3D_WRITE_3DVECTOR_FIELD_I8 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_3d_write_3dvector_field_i8 (
|
||||
h5part_int64_t *f, /*!< file handle */
|
||||
const char *field_name, /*!< name of the data set */
|
||||
const h5part_int64_t *xval, /*!< array of x component data */
|
||||
const h5part_int64_t *yval, /*!< array of y component data */
|
||||
const h5part_int64_t *zval, /*!< array of z component data */
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5part_int64_t herr = H5Block3dWrite3dVectorFieldInt64 (
|
||||
filehandle, field_name2, xval, yval, zval );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_read_3dvector_field_i8 F77NAME ( \
|
||||
h5bl_3d_read_3dvector_field_i8_, \
|
||||
H5BL_3D_READ_3DVECTOR_FIELD_I8 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_3d_read_3dvector_field_i8 (
|
||||
h5part_int64_t *f, /*!< file handle */
|
||||
const char *field_name, /*!< name of the data set */
|
||||
h5part_int64_t *xval, /*!< array of x component data */
|
||||
h5part_int64_t *yval, /*!< array of y component data */
|
||||
h5part_int64_t *zval, /*!< array of z component data */
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5part_int64_t herr = H5Block3dRead3dVectorFieldInt64 (
|
||||
filehandle, field_name2, xval, yval, zval );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_write_scalar_field_i4 F77NAME ( \
|
||||
h5bl_3d_write_scalar_field_i4_, \
|
||||
H5BL_3D_WRITE_SCALAR_FIELD_I4 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_3d_write_scalar_field_i4 (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
const h5part_int32_t *data,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5part_int64_t herr = H5Block3dWriteScalarFieldInt32 (
|
||||
filehandle, field_name2, data );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_read_scalar_field_i4 F77NAME ( \
|
||||
h5bl_3d_read_scalar_field_i4_, \
|
||||
H5BL_3D_READ_SCALAR_FIELD_I4 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_3d_read_scalar_field_i4 (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
h5part_int32_t *data,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5part_int64_t herr = H5Block3dWriteScalarFieldInt32 (
|
||||
filehandle, field_name2, data );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_write_3dvector_field_i4 F77NAME ( \
|
||||
h5bl_3d_write_3dvector_field_i4_, \
|
||||
H5BL_3D_WRITE_3DVECTOR_FIELD_I4 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_3d_write_3dvector_field_i4 (
|
||||
h5part_int64_t *f, /*!< file handle */
|
||||
const char *field_name, /*!< name of the data set */
|
||||
const h5part_int32_t *xval, /*!< array of x component data */
|
||||
const h5part_int32_t *yval, /*!< array of y component data */
|
||||
const h5part_int32_t *zval, /*!< array of z component data */
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5part_int64_t herr = H5Block3dWrite3dVectorFieldInt32 (
|
||||
filehandle, field_name2, xval, yval, zval );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_read_3dvector_field_i4 F77NAME ( \
|
||||
h5bl_3d_read_3dvector_field_i4_, \
|
||||
H5BL_3D_READ_3DVECTOR_FIELD_I4 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_3d_read_3dvector_field_i4 (
|
||||
h5part_int64_t *f, /*!< file handle */
|
||||
const char *field_name, /*!< name of the data set */
|
||||
h5part_int32_t *xval, /*!< array of x component data */
|
||||
h5part_int32_t *yval, /*!< array of y component data */
|
||||
h5part_int32_t *zval, /*!< array of z component data */
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5part_int64_t herr = H5Block3dRead3dVectorFieldInt32 (
|
||||
filehandle, field_name2, xval, yval, zval );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_writefieldattrib_r8 F77NAME ( \
|
||||
h5bl_writefieldattrib_r8_, \
|
||||
H5BL_WRITEFIELDATTRIB_R8 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_writefieldattrib_r8 (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
const h5part_float64_t *attrib_value,
|
||||
const h5part_int64_t *attrib_nelem,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
char *attrib_name2 =_H5Part_strdupfor2c ( attrib_name, l_attrib_name );
|
||||
|
||||
h5part_int64_t herr = H5BlockWriteFieldAttribFloat64 (
|
||||
filehandle, field_name2, attrib_name2,
|
||||
attrib_value, *attrib_nelem );
|
||||
|
||||
free ( field_name2 );
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_writefieldattrib_r4 F77NAME ( \
|
||||
h5bl_writefieldattrib_r4_, \
|
||||
H5BL_WRITEFIELDATTRIB_R4 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_writefieldattrib_r4 (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
const h5part_float32_t *attrib_value,
|
||||
const h5part_int64_t *attrib_nelem,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
char *attrib_name2 =_H5Part_strdupfor2c ( attrib_name, l_attrib_name );
|
||||
|
||||
h5part_int64_t herr = H5BlockWriteFieldAttribFloat32 (
|
||||
filehandle, field_name2, attrib_name2,
|
||||
attrib_value, *attrib_nelem );
|
||||
|
||||
free ( field_name2 );
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_writefieldattrib_i8 F77NAME ( \
|
||||
h5bl_writefieldattrib_i8_, \
|
||||
H5BL_WRITEFIELDATTRIB_I8 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_writefieldattrib_i8 (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
const h5part_int64_t *attrib_value,
|
||||
const h5part_int64_t *attrib_nelem,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
char *attrib_name2 =_H5Part_strdupfor2c ( attrib_name, l_attrib_name );
|
||||
|
||||
h5part_int64_t herr = H5BlockWriteFieldAttribInt64 (
|
||||
filehandle, field_name2, attrib_name2,
|
||||
attrib_value, *attrib_nelem );
|
||||
|
||||
free ( field_name2 );
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_writefieldattrib_i4 F77NAME ( \
|
||||
h5bl_writefieldattrib_i4_, \
|
||||
H5BL_WRITEFIELDATTRIB_I4 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5bl_writefieldattrib_i4 (
|
||||
h5part_int64_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
const h5part_int32_t *attrib_value,
|
||||
const h5part_int64_t *attrib_nelem,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
||||
char *attrib_name2 =_H5Part_strdupfor2c ( attrib_name, l_attrib_name );
|
||||
|
||||
h5part_int64_t herr = H5BlockWriteFieldAttribInt32 (
|
||||
filehandle, field_name2, attrib_name2,
|
||||
attrib_value, *attrib_nelem );
|
||||
|
||||
free ( field_name2 );
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
Executable
+289
@@ -0,0 +1,289 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "H5hut.h"
|
||||
#include "Underscore.h"
|
||||
|
||||
#if defined(F77_SINGLE_UNDERSCORE)
|
||||
#define F77NAME(a,b) a
|
||||
#elif defined(F77_CRAY_UNDERSCORE)
|
||||
#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 h5bl_3d_setview F77NAME ( \
|
||||
h5bl_3d_setview_, \
|
||||
H5BL_3D_SETVIEW )
|
||||
#define h5bl_3d_getview F77NAME ( \
|
||||
h5bl_3d_getview_, \
|
||||
H5BL_3D_GETVIEW )
|
||||
#define h5bl_3d_setchunk F77NAME ( \
|
||||
h5bl_3d_setchunk_, \
|
||||
H5BL_3D_SETCHUNK )
|
||||
#define h5bl_3d_getreducedview F77NAME ( \
|
||||
h5bl_3d_getreducedview_,\
|
||||
H5BL_3D_GETREDUCEDVIEW )
|
||||
#define h5bl_3d_getproc F77NAME ( \
|
||||
h5bl_getproc_, \
|
||||
H5BL_GETPROC )
|
||||
#define h5bl_getnumfields F77NAME ( \
|
||||
h5bl_getnumfields_, \
|
||||
H5BL_GETNUMFIELDS )
|
||||
#define h5bl_getfieldinfo F77NAME ( \
|
||||
h5bl_getfieldinfo_, \
|
||||
H5BL_GETFIELDINFO )
|
||||
#define h5bl_writefieldattrib_string F77NAME ( \
|
||||
h5bl_writefieldattrib_string_, \
|
||||
H5BL_WRITEFIELDATTRIB_STRING )
|
||||
#define h5bl_getnfieldattribs F77NAME ( \
|
||||
h5bl_getnfieldattribs_, \
|
||||
H5BL_GETNFIELDATTRIBS )
|
||||
#define h5bl_getfieldattribinfo F77NAME ( \
|
||||
h5bl_getfieldattribinfo_, \
|
||||
h5bl_getfieldattribinfo )
|
||||
#define h5bl_readfieldattrib_string F77NAME ( \
|
||||
h5bl_readfieldattrib_string_, \
|
||||
H5BL_READFIELDATTRIB_STRING )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_3d_setview (
|
||||
h5_int64_t *f,
|
||||
const h5_int64_t *i_start, /*!< start index of i */
|
||||
const h5_int64_t *i_end, /*!< end index of i */
|
||||
const h5_int64_t *j_start, /*!< start index of j */
|
||||
const h5_int64_t *j_end, /*!< end index of j */
|
||||
const h5_int64_t *k_start, /*!< start index of k */
|
||||
const h5_int64_t *k_end /*!< end index of k */
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5Block3dSetView (
|
||||
filehandle,
|
||||
*i_start-1, *i_end-1,
|
||||
*j_start-1, *j_end-1,
|
||||
*k_start-1, *k_end-1 );
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5bl_3d_setchunk (
|
||||
h5_int64_t *f,
|
||||
const h5_int64_t *i,
|
||||
const h5_int64_t *j,
|
||||
const h5_int64_t *k
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5Block3dSetChunk ( filehandle, *i, *j, *k );
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5bl_3d_getview (
|
||||
h5_int64_t *f, /*!< file handle */
|
||||
const h5_int64_t *proc,
|
||||
h5_int64_t *i_start, /*!< start index of i */
|
||||
h5_int64_t *i_end, /*!< end index of i */
|
||||
h5_int64_t *j_start, /*!< start index of j */
|
||||
h5_int64_t *j_end, /*!< end index of j */
|
||||
h5_int64_t *k_start, /*!< start index of k */
|
||||
h5_int64_t *k_end /*!< end index of k */
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
h5_err_t herr = H5Block3dGetView (
|
||||
filehandle,
|
||||
*proc,
|
||||
i_start, i_end, j_start, j_end, k_start, k_end );
|
||||
if ( herr < 0 ) return herr;
|
||||
|
||||
(*i_start)++;
|
||||
(*i_end)++;
|
||||
(*j_start)++;
|
||||
(*j_end)++;
|
||||
(*k_start)++;
|
||||
(*k_end)++;
|
||||
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5bl_3d_getreducedview (
|
||||
h5_int64_t *f,
|
||||
const h5_int64_t *proc,
|
||||
h5_int64_t *i_start,
|
||||
h5_int64_t *i_end,
|
||||
h5_int64_t *j_start,
|
||||
h5_int64_t *j_end,
|
||||
h5_int64_t *k_start,
|
||||
h5_int64_t *k_end
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
h5_err_t herr = H5Block3dGetReducedView (
|
||||
filehandle,
|
||||
*proc,
|
||||
i_start, i_end, j_start, j_end, k_start, k_end );
|
||||
if ( herr < 0 ) return herr;
|
||||
|
||||
(*i_start)++;
|
||||
(*i_end)++;
|
||||
(*j_start)++;
|
||||
(*j_end)++;
|
||||
(*k_start)++;
|
||||
(*k_end)++;
|
||||
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5bl_3d_getproc (
|
||||
h5_int64_t *f,
|
||||
const h5_int64_t *i,
|
||||
const h5_int64_t *j,
|
||||
const h5_int64_t *k
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5Block3dGetProc ( filehandle, (*i)-1, (*j)-1, (*k)-1 );
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5bl_getnumfields (
|
||||
h5_int64_t *f /*!< file handle */
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5BlockGetNumFields ( filehandle );
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5bl_getfieldinfo (
|
||||
h5_int64_t *f,
|
||||
const h5_int64_t *idx,
|
||||
char *field_name,
|
||||
h5_size_t *grid_rank,
|
||||
h5_size_t *grid_dims,
|
||||
h5_size_t *field_dims,
|
||||
h5_int64_t *type,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
h5_err_t herr = H5BlockGetFieldInfo (
|
||||
filehandle, *idx, field_name, l_field_name,
|
||||
grid_rank, grid_dims, field_dims, type );
|
||||
h5_strc2for ( field_name, l_field_name );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5bl_writefieldattrib_string (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
const char *attrib_value,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name,
|
||||
const int l_attrib_value
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
char *attrib_name2 = h5_strdupfor2c ( attrib_name, l_attrib_name );
|
||||
char *attrib_value2 = h5_strdupfor2c ( attrib_value, l_attrib_value );
|
||||
|
||||
h5_err_t herr = H5BlockWriteFieldAttribString (
|
||||
filehandle, field_name2, attrib_name2, attrib_value2 );
|
||||
|
||||
free ( field_name2 );
|
||||
free ( attrib_name2 );
|
||||
free ( attrib_value2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
|
||||
h5_err_t
|
||||
h5bl_getnfieldattribs (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5BlockGetNumFieldAttribs (
|
||||
filehandle, field_name2 );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5bl_getfieldattribinfo (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
const h5_int64_t *attrib_idx,
|
||||
char *attrib_name,
|
||||
h5_size_t *attrib_nelem,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
h5_int64_t attrib_type;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5BlockGetFieldAttribInfo (
|
||||
filehandle, field_name2, *attrib_idx,
|
||||
attrib_name, l_attrib_name,
|
||||
&attrib_type,
|
||||
attrib_nelem );
|
||||
|
||||
h5_strc2for ( attrib_name, l_attrib_name );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
|
||||
h5_err_t
|
||||
h5bl_readfieldattrib_string (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
char *attrib_value,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name,
|
||||
const int l_attrib_value
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
char *attrib_name2 = h5_strdupfor2c ( attrib_name, l_attrib_name );
|
||||
|
||||
h5_err_t herr = H5BlockReadFieldAttrib (
|
||||
filehandle, field_name2, attrib_name2, attrib_value );
|
||||
|
||||
h5_strc2for ( attrib_value, l_attrib_value );
|
||||
|
||||
free ( field_name2 );
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
@@ -20,10 +20,10 @@ INTEGER*8 FUNCTION h5bl_3d_read_scalar_field_r8 ( filehandle, name, data )
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5blockf_data
|
||||
!! See \ref H5Block3dWrite3dVectorFieldFloat64
|
||||
!! See \ref H5Block3dWriteVector3dFieldFloat64
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_3d_write_3dvector_field_r8 ( filehandle, name, x, y, z )
|
||||
INTEGER*8 FUNCTION h5bl_3d_write_vector3d_field_r8 ( filehandle, name, x, y, z )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
|
||||
REAL*8, INTENT(IN) :: x(*) !< the array of x data to write
|
||||
@@ -32,10 +32,10 @@ INTEGER*8 FUNCTION h5bl_3d_write_3dvector_field_r8 ( filehandle, name, x, y, z )
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5blockf_data
|
||||
!! See \ref H5Block3dRead3dVectorFieldFloat64
|
||||
!! See \ref H5Block3dReadVector3dFieldFloat64
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_3d_read_3dvector_field_r8 ( filehandle, name, x, y, z )
|
||||
INTEGER*8 FUNCTION h5bl_3d_read_vector3d_field_r8 ( filehandle, name, x, y, z )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
|
||||
REAL*8, INTENT(OUT) :: x(*) !< buffer to read the x data into
|
||||
@@ -64,10 +64,10 @@ INTEGER*8 FUNCTION h5bl_3d_read_scalar_field_r4 ( filehandle, name, data )
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5blockf_data
|
||||
!! See \ref H5Block3dWrite3dVectorFieldFloat32
|
||||
!! See \ref H5Block3dWriteVector3dFieldFloat32
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_3d_write_3dvector_field_r4 ( filehandle, name, x, y, z )
|
||||
INTEGER*8 FUNCTION h5bl_3d_write_vector3d_field_r4 ( filehandle, name, x, y, z )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
|
||||
REAL*4, INTENT(IN) :: x(*) !< the array of x data to write
|
||||
@@ -76,10 +76,10 @@ INTEGER*8 FUNCTION h5bl_3d_write_3dvector_field_r4 ( filehandle, name, x, y, z )
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5blockf_data
|
||||
!! See \ref H5Block3dRead3dVectorFieldFloat32
|
||||
!! See \ref H5Block3dReadVector3dFieldFloat32
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_3d_read_3dvector_field_r4 ( filehandle, name, x, y, z )
|
||||
INTEGER*8 FUNCTION h5bl_3d_read_vector3d_field_r4 ( filehandle, name, x, y, z )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
|
||||
REAL*4, INTENT(OUT) :: x(*) !< buffer to read the x data into
|
||||
@@ -108,10 +108,10 @@ INTEGER*8 FUNCTION h5bl_3d_read_scalar_field_i8 ( filehandle, name, data )
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5blockf_data
|
||||
!! See \ref H5Block3dWrite3dVectorFieldInt64
|
||||
!! See \ref H5Block3dWriteVector3dFieldInt64
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_3d_write_3dvector_field_i8 ( filehandle, name, x, y, z )
|
||||
INTEGER*8 FUNCTION h5bl_3d_write_vector3d_field_i8 ( filehandle, name, x, y, z )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
|
||||
INTEGER*8, INTENT(IN) :: x(*) !< the array of x data to write
|
||||
@@ -120,10 +120,10 @@ INTEGER*8 FUNCTION h5bl_3d_write_3dvector_field_i8 ( filehandle, name, x, y, z )
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5blockf_data
|
||||
!! See \ref H5Block3dRead3dVectorFieldInt64
|
||||
!! See \ref H5Block3dReadVector3dFieldInt64
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_3d_read_3dvector_field_i8 ( filehandle, name, x, y, z )
|
||||
INTEGER*8 FUNCTION h5bl_3d_read_vector3d_field_i8 ( filehandle, name, x, y, z )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
|
||||
INTEGER*8, INTENT(OUT) :: x(*) !< buffer to read the x data into
|
||||
@@ -152,10 +152,10 @@ INTEGER*8 FUNCTION h5bl_3d_read_scalar_field_i4 ( filehandle, name, data )
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5blockf_data
|
||||
!! See \ref H5Block3dWrite3dVectorFieldInt32
|
||||
!! See \ref H5Block3dWriteVector3dFieldInt32
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_3d_write_3dvector_field_i4 ( filehandle, name, x, y, z )
|
||||
INTEGER*8 FUNCTION h5bl_3d_write_vector3d_field_i4 ( filehandle, name, x, y, z )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
|
||||
INTEGER*4, INTENT(IN) :: x(*) !< the array of x data to write
|
||||
@@ -164,10 +164,10 @@ INTEGER*8 FUNCTION h5bl_3d_write_3dvector_field_i4 ( filehandle, name, x, y, z )
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5blockf_data
|
||||
!! See \ref H5Block3dRead3dVectorFieldInt32
|
||||
!! See \ref H5Block3dReadVector3dFieldInt32
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_3d_read_3dvector_field_i4 ( filehandle, name, x, y, z )
|
||||
INTEGER*8 FUNCTION h5bl_3d_read_vector3d_field_i4 ( filehandle, name, x, y, z )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset
|
||||
INTEGER*4, INTENT(OUT) :: x(*) !< buffer to read the x data into
|
||||
@@ -175,50 +175,94 @@ INTEGER*8 FUNCTION h5bl_3d_read_3dvector_field_i4 ( filehandle, name, x, y, z )
|
||||
INTEGER*4, INTENT(OUT) :: z(*) !< buffer to read the z data into
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5blockf_attrib
|
||||
!> \ingroup h5_attrib_f
|
||||
!! See \ref H5BlockWriteFieldAttribFloat64
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_writefieldattrib_r8 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: field_name !< the name of the field
|
||||
CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< the name of the attribute
|
||||
REAL*8, INTENT(IN) :: attrib_value(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: attrib_nelem !< the number of elements in the array
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: field_name !< the name of the field
|
||||
CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< the name of the attribute
|
||||
REAL*8, INTENT(IN) :: values(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: nvalues !< the number of elements in the array
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5blockf_attrib
|
||||
!> \ingroup h5_attrib_f
|
||||
!! See \ref H5BlockReadFieldAttribFloat64
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_readfieldattrib_r8 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: field_name !< the name of the field
|
||||
CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< the name of the attribute
|
||||
REAL*8, INTENT(IN) :: values(*) !< the buffer to read into
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5_attrib_f
|
||||
!! See \ref H5BlockWriteFieldAttribFloat32
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_writefieldattrib_r4 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: field_name !< the name of the field
|
||||
CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< the name of the attribute
|
||||
REAL*4, INTENT(IN) :: attrib_value(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: attrib_nelem !< the number of elements in the array
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: field_name !< the name of the field
|
||||
CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< the name of the attribute
|
||||
REAL*4, INTENT(IN) :: values(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: nvalues !< the number of elements in the array
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5blockf_attrib
|
||||
!> \ingroup h5_attrib_f
|
||||
!! See \ref H5BlockReadFieldAttribFloat32
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_readfieldattrib_r4 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: field_name !< the name of the field
|
||||
CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< the name of the attribute
|
||||
REAL*4, INTENT(IN) :: values(*) !< the buffer to read into
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5_attrib_f
|
||||
!! See \ref H5BlockWriteFieldAttribInt64
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_writefieldattrib_i8 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: field_name !< the name of the field
|
||||
CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< the name of the attribute
|
||||
INTEGER*8, INTENT(IN) :: attrib_value(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: attrib_nelem !< the number of elements in the array
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: field_name !< the name of the field
|
||||
CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< the name of the attribute
|
||||
INTEGER*8, INTENT(IN) :: values(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: nvalues !< the number of elements in the array
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5blockf_attrib
|
||||
!> \ingroup h5_attrib_f
|
||||
!! See \ref H5BlockReadFieldAttribInt64
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_readfieldattrib_i8 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: field_name !< the name of the field
|
||||
CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< the name of the attribute
|
||||
INTEGER*8, INTENT(IN) :: values(*) !< the buffer to read into
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5_attrib_f
|
||||
!! See \ref H5BlockWriteFieldAttribInt32
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_writefieldattrib_i4 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: field_name !< the name of the field
|
||||
CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< the name of the attribute
|
||||
INTEGER*4, INTENT(IN) :: attrib_value(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: attrib_nelem !< the number of elements in the array
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: field_name !< the name of the field
|
||||
CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< the name of the attribute
|
||||
INTEGER*4, INTENT(IN) :: values(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: nvalues !< the number of elements in the array
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5_attrib_f
|
||||
!! See \ref H5BlockReadFieldAttribInt32
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5bl_readfieldattrib_i4 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: field_name !< the name of the field
|
||||
CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< the name of the attribute
|
||||
INTEGER*4, INTENT(IN) :: values(*) !< the buffer to read into
|
||||
END FUNCTION
|
||||
@@ -0,0 +1,664 @@
|
||||
|
||||
#include "H5hut.h"
|
||||
#include "Underscore.h"
|
||||
|
||||
#if defined(F77_SINGLE_UNDERSCORE)
|
||||
#define F77NAME(a,b) a
|
||||
#elif defined(F77_CRAY_UNDERSCORE)
|
||||
#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 h5bl_3d_write_scalar_field_r8 F77NAME ( \
|
||||
h5bl_3d_write_scalar_field_r8_, \
|
||||
H5BL_3D_WRITE_SCALAR_FIELD_R8 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_3d_write_scalar_field_r8 (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
const h5_float64_t *data,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5Block3dWriteScalarFieldFloat64 (
|
||||
filehandle, field_name2, data );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_read_scalar_field_r8 F77NAME ( \
|
||||
h5bl_3d_read_scalar_field_r8_, \
|
||||
H5BL_3D_READ_SCALAR_FIELD_R8 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_3d_read_scalar_field_r8 (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
h5_float64_t *data,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5Block3dWriteScalarFieldFloat64 (
|
||||
filehandle, field_name2, data );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_write_vector3d_field_r8 F77NAME ( \
|
||||
h5bl_3d_write_vector3d_field_r8_, \
|
||||
H5BL_3D_WRITE_VECTOR3D_FIELD_R8 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_3d_write_vector3d_field_r8 (
|
||||
h5_int64_t *f, /*!< file handle */
|
||||
const char *field_name, /*!< name of the data set */
|
||||
const h5_float64_t *xval, /*!< array of x component data */
|
||||
const h5_float64_t *yval, /*!< array of y component data */
|
||||
const h5_float64_t *zval, /*!< array of z component data */
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5Block3dWriteVector3dFieldFloat64 (
|
||||
filehandle, field_name2, xval, yval, zval );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_read_vector3d_field_r8 F77NAME ( \
|
||||
h5bl_3d_read_vector3d_field_r8_, \
|
||||
H5BL_3D_READ_VECTOR3D_FIELD_R8 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_3d_read_vector3d_field_r8 (
|
||||
h5_int64_t *f, /*!< file handle */
|
||||
const char *field_name, /*!< name of the data set */
|
||||
h5_float64_t *xval, /*!< array of x component data */
|
||||
h5_float64_t *yval, /*!< array of y component data */
|
||||
h5_float64_t *zval, /*!< array of z component data */
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5Block3dReadVector3dFieldFloat64 (
|
||||
filehandle, field_name2, xval, yval, zval );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_write_scalar_field_r4 F77NAME ( \
|
||||
h5bl_3d_write_scalar_field_r4_, \
|
||||
H5BL_3D_WRITE_SCALAR_FIELD_R4 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_3d_write_scalar_field_r4 (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
const h5_float32_t *data,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5Block3dWriteScalarFieldFloat32 (
|
||||
filehandle, field_name2, data );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_read_scalar_field_r4 F77NAME ( \
|
||||
h5bl_3d_read_scalar_field_r4_, \
|
||||
H5BL_3D_READ_SCALAR_FIELD_R4 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_3d_read_scalar_field_r4 (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
h5_float32_t *data,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5Block3dWriteScalarFieldFloat32 (
|
||||
filehandle, field_name2, data );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_write_vector3d_field_r4 F77NAME ( \
|
||||
h5bl_3d_write_vector3d_field_r4_, \
|
||||
H5BL_3D_WRITE_VECTOR3D_FIELD_R4 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_3d_write_vector3d_field_r4 (
|
||||
h5_int64_t *f, /*!< file handle */
|
||||
const char *field_name, /*!< name of the data set */
|
||||
const h5_float32_t *xval, /*!< array of x component data */
|
||||
const h5_float32_t *yval, /*!< array of y component data */
|
||||
const h5_float32_t *zval, /*!< array of z component data */
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5Block3dWriteVector3dFieldFloat32 (
|
||||
filehandle, field_name2, xval, yval, zval );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_read_vector3d_field_r4 F77NAME ( \
|
||||
h5bl_3d_read_vector3d_field_r4_, \
|
||||
H5BL_3D_READ_VECTOR3D_FIELD_R4 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_3d_read_vector3d_field_r4 (
|
||||
h5_int64_t *f, /*!< file handle */
|
||||
const char *field_name, /*!< name of the data set */
|
||||
h5_float32_t *xval, /*!< array of x component data */
|
||||
h5_float32_t *yval, /*!< array of y component data */
|
||||
h5_float32_t *zval, /*!< array of z component data */
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5Block3dReadVector3dFieldFloat32 (
|
||||
filehandle, field_name2, xval, yval, zval );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_write_scalar_field_i8 F77NAME ( \
|
||||
h5bl_3d_write_scalar_field_i8_, \
|
||||
H5BL_3D_WRITE_SCALAR_FIELD_I8 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_3d_write_scalar_field_i8 (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
const h5_int64_t *data,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5Block3dWriteScalarFieldInt64 (
|
||||
filehandle, field_name2, data );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_read_scalar_field_i8 F77NAME ( \
|
||||
h5bl_3d_read_scalar_field_i8_, \
|
||||
H5BL_3D_READ_SCALAR_FIELD_I8 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_3d_read_scalar_field_i8 (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
h5_int64_t *data,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5Block3dWriteScalarFieldInt64 (
|
||||
filehandle, field_name2, data );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_write_vector3d_field_i8 F77NAME ( \
|
||||
h5bl_3d_write_vector3d_field_i8_, \
|
||||
H5BL_3D_WRITE_VECTOR3D_FIELD_I8 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_3d_write_vector3d_field_i8 (
|
||||
h5_int64_t *f, /*!< file handle */
|
||||
const char *field_name, /*!< name of the data set */
|
||||
const h5_int64_t *xval, /*!< array of x component data */
|
||||
const h5_int64_t *yval, /*!< array of y component data */
|
||||
const h5_int64_t *zval, /*!< array of z component data */
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5Block3dWriteVector3dFieldInt64 (
|
||||
filehandle, field_name2, xval, yval, zval );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_read_vector3d_field_i8 F77NAME ( \
|
||||
h5bl_3d_read_vector3d_field_i8_, \
|
||||
H5BL_3D_READ_VECTOR3D_FIELD_I8 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_3d_read_vector3d_field_i8 (
|
||||
h5_int64_t *f, /*!< file handle */
|
||||
const char *field_name, /*!< name of the data set */
|
||||
h5_int64_t *xval, /*!< array of x component data */
|
||||
h5_int64_t *yval, /*!< array of y component data */
|
||||
h5_int64_t *zval, /*!< array of z component data */
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5Block3dReadVector3dFieldInt64 (
|
||||
filehandle, field_name2, xval, yval, zval );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_write_scalar_field_i4 F77NAME ( \
|
||||
h5bl_3d_write_scalar_field_i4_, \
|
||||
H5BL_3D_WRITE_SCALAR_FIELD_I4 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_3d_write_scalar_field_i4 (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
const h5_int32_t *data,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5Block3dWriteScalarFieldInt32 (
|
||||
filehandle, field_name2, data );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_read_scalar_field_i4 F77NAME ( \
|
||||
h5bl_3d_read_scalar_field_i4_, \
|
||||
H5BL_3D_READ_SCALAR_FIELD_I4 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_3d_read_scalar_field_i4 (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
h5_int32_t *data,
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5Block3dWriteScalarFieldInt32 (
|
||||
filehandle, field_name2, data );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_write_vector3d_field_i4 F77NAME ( \
|
||||
h5bl_3d_write_vector3d_field_i4_, \
|
||||
H5BL_3D_WRITE_VECTOR3D_FIELD_I4 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_3d_write_vector3d_field_i4 (
|
||||
h5_int64_t *f, /*!< file handle */
|
||||
const char *field_name, /*!< name of the data set */
|
||||
const h5_int32_t *xval, /*!< array of x component data */
|
||||
const h5_int32_t *yval, /*!< array of y component data */
|
||||
const h5_int32_t *zval, /*!< array of z component data */
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5Block3dWriteVector3dFieldInt32 (
|
||||
filehandle, field_name2, xval, yval, zval );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_3d_read_vector3d_field_i4 F77NAME ( \
|
||||
h5bl_3d_read_vector3d_field_i4_, \
|
||||
H5BL_3D_READ_VECTOR3D_FIELD_I4 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_3d_read_vector3d_field_i4 (
|
||||
h5_int64_t *f, /*!< file handle */
|
||||
const char *field_name, /*!< name of the data set */
|
||||
h5_int32_t *xval, /*!< array of x component data */
|
||||
h5_int32_t *yval, /*!< array of y component data */
|
||||
h5_int32_t *zval, /*!< array of z component data */
|
||||
const int l_field_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
|
||||
h5_err_t herr = H5Block3dReadVector3dFieldInt32 (
|
||||
filehandle, field_name2, xval, yval, zval );
|
||||
|
||||
free ( field_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_writefieldattrib_r8 F77NAME ( \
|
||||
h5bl_writefieldattrib_r8_, \
|
||||
H5BL_WRITEFIELDATTRIB_R8 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_writefieldattrib_r8 (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
const h5_float64_t *values,
|
||||
const h5_size_t *nvalues,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
char *attrib_name2 = h5_strdupfor2c ( attrib_name, l_attrib_name );
|
||||
|
||||
h5_err_t herr = H5BlockWriteFieldAttribFloat64 (
|
||||
filehandle, field_name2, attrib_name2, values, *nvalues );
|
||||
|
||||
free ( field_name2 );
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_readfieldattrib_r8 F77NAME ( \
|
||||
h5bl_readfieldattrib_r8_, \
|
||||
H5BL_READFIELDATTRIB_R8 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_readfieldattrib_r8 (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
h5_float64_t *values,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
char *attrib_name2 = h5_strdupfor2c ( attrib_name, l_attrib_name );
|
||||
|
||||
h5_err_t herr = H5BlockReadFieldAttribFloat64 (
|
||||
filehandle, field_name2, attrib_name2, values );
|
||||
|
||||
free ( field_name2 );
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_writefieldattrib_r4 F77NAME ( \
|
||||
h5bl_writefieldattrib_r4_, \
|
||||
H5BL_WRITEFIELDATTRIB_R4 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_writefieldattrib_r4 (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
const h5_float32_t *values,
|
||||
const h5_size_t *nvalues,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
char *attrib_name2 = h5_strdupfor2c ( attrib_name, l_attrib_name );
|
||||
|
||||
h5_err_t herr = H5BlockWriteFieldAttribFloat32 (
|
||||
filehandle, field_name2, attrib_name2, values, *nvalues );
|
||||
|
||||
free ( field_name2 );
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_readfieldattrib_r4 F77NAME ( \
|
||||
h5bl_readfieldattrib_r4_, \
|
||||
H5BL_READFIELDATTRIB_R4 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_readfieldattrib_r4 (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
h5_float32_t *values,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
char *attrib_name2 = h5_strdupfor2c ( attrib_name, l_attrib_name );
|
||||
|
||||
h5_err_t herr = H5BlockReadFieldAttribFloat32 (
|
||||
filehandle, field_name2, attrib_name2, values );
|
||||
|
||||
free ( field_name2 );
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_writefieldattrib_i8 F77NAME ( \
|
||||
h5bl_writefieldattrib_i8_, \
|
||||
H5BL_WRITEFIELDATTRIB_I8 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_writefieldattrib_i8 (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
const h5_int64_t *values,
|
||||
const h5_size_t *nvalues,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
char *attrib_name2 = h5_strdupfor2c ( attrib_name, l_attrib_name );
|
||||
|
||||
h5_err_t herr = H5BlockWriteFieldAttribInt64 (
|
||||
filehandle, field_name2, attrib_name2, values, *nvalues );
|
||||
|
||||
free ( field_name2 );
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_readfieldattrib_i8 F77NAME ( \
|
||||
h5bl_readfieldattrib_i8_, \
|
||||
H5BL_READFIELDATTRIB_I8 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_readfieldattrib_i8 (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
h5_int64_t *values,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
char *attrib_name2 = h5_strdupfor2c ( attrib_name, l_attrib_name );
|
||||
|
||||
h5_err_t herr = H5BlockReadFieldAttribInt64 (
|
||||
filehandle, field_name2, attrib_name2, values );
|
||||
|
||||
free ( field_name2 );
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_writefieldattrib_i4 F77NAME ( \
|
||||
h5bl_writefieldattrib_i4_, \
|
||||
H5BL_WRITEFIELDATTRIB_I4 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_writefieldattrib_i4 (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
const h5_int32_t *values,
|
||||
const h5_size_t *nvalues,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
char *attrib_name2 = h5_strdupfor2c ( attrib_name, l_attrib_name );
|
||||
|
||||
h5_err_t herr = H5BlockWriteFieldAttribInt32 (
|
||||
filehandle, field_name2, attrib_name2, values, *nvalues );
|
||||
|
||||
free ( field_name2 );
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5bl_readfieldattrib_i4 F77NAME ( \
|
||||
h5bl_readfieldattrib_i4_, \
|
||||
H5BL_READFIELDATTRIB_I4 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5bl_readfieldattrib_i4 (
|
||||
h5_int64_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
h5_int32_t *values,
|
||||
const int l_field_name,
|
||||
const int l_attrib_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *field_name2 = h5_strdupfor2c ( field_name, l_field_name );
|
||||
char *attrib_name2 = h5_strdupfor2c ( attrib_name, l_attrib_name );
|
||||
|
||||
h5_err_t herr = H5BlockReadFieldAttribInt32 (
|
||||
filehandle, field_name2, attrib_name2, values );
|
||||
|
||||
free ( field_name2 );
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
+19
-303
@@ -1,189 +1,6 @@
|
||||
! Declaration of subroutines for Fortran Bindings
|
||||
|
||||
!> \defgroup h5part_f90_api H5Part F90 API
|
||||
|
||||
!> \ingroup h5part_f90_api
|
||||
!! \defgroup h5partf_open File Opening and Closing
|
||||
!<
|
||||
|
||||
!> \ingroup h5part_f90_api
|
||||
!! \defgroup h5partf_model Setting up the Data Model
|
||||
!<
|
||||
|
||||
!> \ingroup h5part_f90_api
|
||||
!! \defgroup h5partf_data Reading and Writing Datasets
|
||||
!<
|
||||
|
||||
!> \ingroup h5part_f90_api
|
||||
!! \defgroup h5partf_attrib Reading and Writing Attributes
|
||||
!<
|
||||
|
||||
|
||||
!!!!!!!! File Opening and Closing !!!!!!!!
|
||||
|
||||
!> \ingroup h5partf_open
|
||||
!! Opens a file for reading. See \ref H5PartOpenFile
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_openr ( filename )
|
||||
CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for reading
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_open
|
||||
!! Opens a file for writing in truncate mode. See \ref H5PartOpenFile
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_openw ( filename )
|
||||
CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for writing
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_open
|
||||
!! Opens a file for writing in append mode. See \ref H5PartOpenFile
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_opena ( filename )
|
||||
CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for appending
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_open
|
||||
!! Opens a parallel file for reading.
|
||||
!! See \ref H5PartOpenFileParallel
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_openr_par ( filename, mpi_communicator )
|
||||
CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for reading
|
||||
INTEGER, INTENT(IN) :: mpi_communicator !< the MPI communicator used by the program
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_open
|
||||
!! Opens a parallel file for writing in truncate mode.
|
||||
!! See \ref H5PartOpenFileParallel
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_openw_par ( filename, mpi_communicator )
|
||||
CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for writing
|
||||
INTEGER, INTENT(IN) :: mpi_communicator !< the MPI_Communicator used by the program
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_open
|
||||
!! Opens a parallel file for writing in append mode.
|
||||
!! See \ref H5PartOpenFileParallel
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_opena_par ( filename, mpi_communicator )
|
||||
CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for appending
|
||||
INTEGER, INTENT(IN) :: mpi_communicator !< the MPI_Communicator used by the program
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_open
|
||||
!! Opens a file for reading and specifies an HDF5 alignment.
|
||||
!! See \ref H5PartOpenFileAlign
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_openr_align ( filename, align )
|
||||
CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for reading
|
||||
INTEGER*8, INTENT(IN) :: align !< alignment value in bytes
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_open
|
||||
!! Opens a file for writing in truncate mode and specifies an HDF5 alignment.
|
||||
!! See \ref H5PartOpenFileAlign
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_openw_align ( filename, align )
|
||||
CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for writing
|
||||
INTEGER*8, INTENT(IN) :: align !< alignment value in bytes
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_open
|
||||
!! Opens a file for writing in append mode and specifies an HDF5 alignment.
|
||||
!! See \ref H5PartOpenFileAlign
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_opena_align ( filename, align )
|
||||
CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for appending
|
||||
INTEGER*8, INTENT(IN) :: align !< alignment value in bytes
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_open
|
||||
!! Opens a parallel file for reading and specifies an HDF5 alignment.
|
||||
!! See \ref H5PartOpenFileParallelAlign
|
||||
!!
|
||||
!! Flags are specified as a comma separated string that can include:
|
||||
!!
|
||||
!! - \c fs_lustre - enable optimizations for the Lustre file system
|
||||
!! - \c vfd_mpiposix - use the HDF5 MPI-POSIX virtual file driver
|
||||
!! - \c vfd_mpio_ind - use MPI-IO in indepedent mode
|
||||
!!
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_openr_par_align ( filename, mpi_communicator, align )
|
||||
CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for reading
|
||||
INTEGER, INTENT(IN) :: mpi_communicator !< the MPI_Communicator used by the program
|
||||
INTEGER*8, INTENT(IN) :: align !< alignment value in bytes
|
||||
CHARACTER(LEN=*), INTENT(IN) :: flags !< additional flags
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_open
|
||||
!! Opens a parallel file for writing in truncate mode and specifies
|
||||
!! an HDF5 alignment.
|
||||
!!
|
||||
!! Flags are specified as a comma separated string that can include:
|
||||
!!
|
||||
!! - \c fs_lustre - enable optimizations for the Lustre file system
|
||||
!! - \c vfd_mpiposix - use the HDF5 MPI-POSIX virtual file driver
|
||||
!! - \c vfd_mpio_ind - use MPI-IO in indepedent mode
|
||||
!!
|
||||
!! See \ref H5PartOpenFileParallelAlign
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_openw_par_align ( filename, mpi_communicator, align, flags )
|
||||
CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for writing
|
||||
INTEGER, INTENT(IN) :: mpi_communicator !< the MPI_Communicator used by the program
|
||||
INTEGER*8, INTENT(IN) :: align !< alignment value in bytes
|
||||
CHARACTER(LEN=*), INTENT(IN) :: flags !< additional flags
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_open
|
||||
!! Opens a parallel file for writing in append mode and specifies
|
||||
!! an HDF5 alignment.
|
||||
!!
|
||||
!! Flags are specified as a comma separated string that can include:
|
||||
!!
|
||||
!! - \c fs_lustre - enable optimizations for the Lustre file system
|
||||
!! - \c vfd_mpiposix - use the HDF5 MPI-POSIX virtual file driver
|
||||
!! - \c vfd_mpio_ind - use MPI-IO in indepedent mode
|
||||
!!
|
||||
!! See \ref H5PartOpenFileParallelAlign
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_opena_par_align ( filename, mpi_communicator, align, flags )
|
||||
CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for appending
|
||||
INTEGER, INTENT(IN) :: mpi_communicator !< the MPI_Communicator used by the program
|
||||
INTEGER*8, INTENT(IN) :: align !< alignment value in bytes
|
||||
CHARACTER(LEN=*), INTENT(IN) :: flags !< additional flags
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_open
|
||||
!! Closes a file. See \ref H5PartCloseFile
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_close ( filehandle )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_open
|
||||
!! See \ref H5PartSetVerbosityLevel
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_set_verbosity_level ( level )
|
||||
INTEGER*8, INTENT(IN) :: level !< the level from 0 (no output) to 5 (most detailed)
|
||||
END FUNCTION
|
||||
|
||||
|
||||
!!!!!!!! Setting up the Data Model !!!!!!!!
|
||||
|
||||
!> \ingroup h5partf_model
|
||||
!> \ingroup h5_model_f
|
||||
!! See \ref H5PartSetNumParticles
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
@@ -192,7 +9,7 @@ INTEGER*8 FUNCTION h5pt_setnpoints ( filehandle, npoints )
|
||||
INTEGER*8, INTENT(IN) :: npoints !< the number of particles on *this* processor
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_model
|
||||
!> \ingroup h5_model_f
|
||||
!! See \ref H5PartSetNumParticlesStrided
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
@@ -202,24 +19,7 @@ INTEGER*8 FUNCTION h5pt_setnpoints_strided ( filehandle, npoints, stride )
|
||||
INTEGER*8, INTENT(IN) :: stride !< the stride value (e.g. the number of fields in the particle data array)
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_model
|
||||
!! See \ref H5PartSetStep
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_setstep (filehandle,step)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
INTEGER*8, INTENT(IN) :: step !< a timestep value >= 1
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_model
|
||||
!! See \ref H5PartGetNumSteps
|
||||
!! \return the number of steps or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_getnsteps (filehandle)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_model
|
||||
!> \ingroup h5_model_f
|
||||
!! See \ref H5PartGetNumDatasets
|
||||
!! \return the number of datasets or error code
|
||||
!<
|
||||
@@ -227,7 +27,7 @@ INTEGER*8 FUNCTION h5pt_getndatasets (filehandle)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_model
|
||||
!> \ingroup h5_model_f
|
||||
!! See \ref H5PartGetNumParticles
|
||||
!! \return the number of particles or error code
|
||||
!<
|
||||
@@ -235,7 +35,7 @@ INTEGER*8 FUNCTION h5pt_getnpoints (filehandle)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_model
|
||||
!> \ingroup h5_model_f
|
||||
!! See \ref H5PartGetDatasetName
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
@@ -245,7 +45,7 @@ INTEGER*8 FUNCTION h5pt_getdatasetname (filehandle,index,name)
|
||||
CHARACTER(LEN=*), INTENT(OUT) :: name !< buffer to read the dataset name into
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_model
|
||||
!> \ingroup h5_model_f
|
||||
!! See \ref H5PartSetView
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
@@ -255,7 +55,7 @@ INTEGER*8 FUNCTION h5pt_setview (filehandle,start,end)
|
||||
INTEGER*8, INTENT(IN) :: end !< offset of the last particle in the view (inclusive)
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_model
|
||||
!> \ingroup h5_model_f
|
||||
!! See \ref H5PartSetViewIndices
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
@@ -265,7 +65,7 @@ INTEGER*8 FUNCTION h5pt_setview_indices (filehandle,indices,nelem)
|
||||
INTEGER*8, INTENT(IN) :: nelem !< number of particles in the list
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_model
|
||||
!> \ingroup h5_model_f
|
||||
!! See \ref H5PartSetViewEmpty
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
@@ -273,7 +73,7 @@ INTEGER*8 FUNCTION h5pt_setview_empty (filehandle)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_model
|
||||
!> \ingroup h5_model_f
|
||||
!! See \ref H5PartResetView
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
@@ -281,7 +81,7 @@ INTEGER*8 FUNCTION h5pt_resetview (filehandle)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_model
|
||||
!> \ingroup h5_model_f
|
||||
!! See \ref H5PartResetView
|
||||
!! \return 1 if true, 0 if false, or error code
|
||||
!<
|
||||
@@ -289,7 +89,7 @@ INTEGER*8 FUNCTION h5pt_hasview (filehandle)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_model
|
||||
!> \ingroup h5_model_f
|
||||
!! See \ref H5PartGetView
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
@@ -302,7 +102,7 @@ END FUNCTION
|
||||
|
||||
!!!!!!!! Reading and Writing Datasets !!!!!!!!
|
||||
|
||||
!> \ingroup h5partf_data
|
||||
!> \ingroup h5_data_f
|
||||
!! See \ref H5PartWriteDataFloat64
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
@@ -312,7 +112,7 @@ INTEGER*8 FUNCTION h5pt_writedata_r8 ( filehandle, name, data )
|
||||
REAL*8, INTENT(IN) :: data(*) !< the array of float64 data to write
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_data
|
||||
!> \ingroup h5_data_f
|
||||
!! See \ref H5PartWriteDataFloat32
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
@@ -322,7 +122,7 @@ INTEGER*8 FUNCTION h5pt_writedata_r4 ( filehandle, name, data )
|
||||
REAL, INTENT(IN) :: data(*) !< the array of float32 data to write
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_data
|
||||
!> \ingroup h5_data_f
|
||||
!! See \ref H5PartWriteDataInt64
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
@@ -332,7 +132,7 @@ INTEGER*8 FUNCTION h5pt_writedata_i8 ( filehandle, name, data )
|
||||
INTEGER*8, INTENT(IN) :: data(*) !< the array of int64 data to write
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_data
|
||||
!> \ingroup h5_data_f
|
||||
!! See \ref H5PartWriteDataInt32
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
@@ -343,7 +143,7 @@ INTEGER*8 FUNCTION h5pt_writedata_i4 ( filehandle, name, data )
|
||||
END FUNCTION
|
||||
|
||||
|
||||
!> \ingroup h5partf_data
|
||||
!> \ingroup h5_data_f
|
||||
!! See \ref H5PartReadDataFloat64
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
@@ -353,7 +153,7 @@ INTEGER*8 FUNCTION h5pt_readdata_r8 (filehandle,name,data)
|
||||
REAL*8, INTENT(OUT) :: data(*) !< array to read float64 data into
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_data
|
||||
!> \ingroup h5_data_f
|
||||
!! See \ref H5PartReadDataFloat32
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
@@ -363,7 +163,7 @@ INTEGER*8 FUNCTION h5pt_readdata_r4 (filehandle,name,data)
|
||||
REAL, INTENT(OUT) :: data(*) !< array to read float32 data into
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_data
|
||||
!> \ingroup h5_data_f
|
||||
!! See \ref H5PartReadDataInt64
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
@@ -373,7 +173,7 @@ INTEGER*8 FUNCTION h5pt_readdata_i8 (filehandle,name,data)
|
||||
INTEGER*8, INTENT(OUT) :: data(*) !< array to read int64 data into
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_data
|
||||
!> \ingroup h5_data_f
|
||||
!! See \ref H5PartReadDataInt32
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
@@ -383,87 +183,3 @@ INTEGER*8 FUNCTION h5pt_readdata_i4 (filehandle,name,data)
|
||||
INTEGER, INTENT(OUT) :: data(*) !< array to read int32 data into
|
||||
END FUNCTION
|
||||
|
||||
|
||||
!!!!!!!! Reading and Writing Attributes !!!!!!!!
|
||||
|
||||
!> \ingroup h5partf_attrib
|
||||
!! See \ref H5PartWriteFileAttribString
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_writefileattrib_string (filehandle,attrib_name,attrib_value)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
CHARACTER(LEN=*), INTENT(IN) :: value !< the string value to store
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_attrib
|
||||
!! See \ref H5PartWriteStepAttribString
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_writestepattrib_string (filehandle,attrib_name,attrib_value)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
CHARACTER(LEN=*), INTENT(IN) :: value !< the string value to store
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_attrib
|
||||
!! Reads the attribute \c name in the file root ("/")
|
||||
!! into the string buffer \c value.
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_readfileattrib_string (filehandle,attrib_name,attrib_value)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
CHARACTER(LEN=*), INTENT(OUT) :: value !< buffer to read the string value into
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_attrib
|
||||
!! Reads the attribute \c name in the current step
|
||||
!! into the string buffer \c value.
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_readstepattrib_string (filehandle,attrib_name,attrib_value)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
CHARACTER(LEN=*), INTENT(OUT) :: value !< buffer to read the string value into
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_attrib
|
||||
!! See \ref H5PartGetNumStepAttribs
|
||||
!! \return number of attributes or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_getnstepattribs (filehandle)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_attrib
|
||||
!! See \ref H5PartGetNumFileAttribs
|
||||
!! \return number of attributes or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_getnfileattribs (filehandle)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_attrib
|
||||
!! See \ref H5PartGetStepAttribInfo
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_getstepattribinfo (filehandle,idx,attrib_name,attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
INTEGER*8, INTENT(IN) :: index !< index of the attribute to query (starting from 0)
|
||||
CHARACTER(LEN=*), INTENT(OUT) :: name !< buffer to read the attribute name into
|
||||
INTEGER*8, INTENT(OUT) :: nelem !< number of elements in the attribute's array
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5partf_attrib
|
||||
!! See \ref H5PartGetFileAttribInfo
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5pt_getfileattribinfo (filehandle,idx,attrib_name,attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
INTEGER*8, INTENT(IN) :: index !< index of the attribute to query (starting from 0)
|
||||
CHARACTER(LEN=*), INTENT(OUT) :: name !< buffer to read the attribute name into
|
||||
INTEGER*8, INTENT(OUT) :: nelem !< number of elements in the attribute's array
|
||||
END FUNCTION
|
||||
|
||||
|
||||
|
||||
@@ -1,168 +0,0 @@
|
||||
|
||||
!< \ingroup h5partf_attrib
|
||||
!! See \ref H5PartWritefileAttribFloat64
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5pt_writefileattrib_r8 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
REAL*8, INTENT(IN) :: data(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: nelem !< the number of elements in the array
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5partf_attrib
|
||||
!! Read the attribute \c name into the buffer \c data.
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5pt_readfileattrib_r8 ( filehandle, name, data )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
REAL*8, INTENT(OUT) :: data(*) !< buffer to read value into
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5partf_attrib
|
||||
!! See \ref H5PartWritefileAttribFloat32
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5pt_writefileattrib_r4 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
REAL*4, INTENT(IN) :: data(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: nelem !< the number of elements in the array
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5partf_attrib
|
||||
!! Read the attribute \c name into the buffer \c data.
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5pt_readfileattrib_r4 ( filehandle, name, data )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
REAL*4, INTENT(OUT) :: data(*) !< buffer to read value into
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5partf_attrib
|
||||
!! See \ref H5PartWritefileAttribInt64
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5pt_writefileattrib_i8 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
INTEGER*8, INTENT(IN) :: data(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: nelem !< the number of elements in the array
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5partf_attrib
|
||||
!! Read the attribute \c name into the buffer \c data.
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5pt_readfileattrib_i8 ( filehandle, name, data )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
INTEGER*8, INTENT(OUT) :: data(*) !< buffer to read value into
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5partf_attrib
|
||||
!! See \ref H5PartWritefileAttribInt32
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5pt_writefileattrib_i4 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
INTEGER*4, INTENT(IN) :: data(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: nelem !< the number of elements in the array
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5partf_attrib
|
||||
!! Read the attribute \c name into the buffer \c data.
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5pt_readfileattrib_i4 ( filehandle, name, data )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
INTEGER*4, INTENT(OUT) :: data(*) !< buffer to read value into
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5partf_attrib
|
||||
!! See \ref H5PartWritestepAttribFloat64
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5pt_writestepattrib_r8 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
REAL*8, INTENT(IN) :: data(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: nelem !< the number of elements in the array
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5partf_attrib
|
||||
!! Read the attribute \c name into the buffer \c data.
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5pt_readstepattrib_r8 ( filehandle, name, data )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
REAL*8, INTENT(OUT) :: data(*) !< buffer to read value into
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5partf_attrib
|
||||
!! See \ref H5PartWritestepAttribFloat32
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5pt_writestepattrib_r4 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
REAL*4, INTENT(IN) :: data(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: nelem !< the number of elements in the array
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5partf_attrib
|
||||
!! Read the attribute \c name into the buffer \c data.
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5pt_readstepattrib_r4 ( filehandle, name, data )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
REAL*4, INTENT(OUT) :: data(*) !< buffer to read value into
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5partf_attrib
|
||||
!! See \ref H5PartWritestepAttribInt64
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5pt_writestepattrib_i8 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
INTEGER*8, INTENT(IN) :: data(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: nelem !< the number of elements in the array
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5partf_attrib
|
||||
!! Read the attribute \c name into the buffer \c data.
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5pt_readstepattrib_i8 ( filehandle, name, data )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
INTEGER*8, INTENT(OUT) :: data(*) !< buffer to read value into
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5partf_attrib
|
||||
!! See \ref H5PartWritestepAttribInt32
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5pt_writestepattrib_i4 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
INTEGER*4, INTENT(IN) :: data(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: nelem !< the number of elements in the array
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5partf_attrib
|
||||
!! Read the attribute \c name into the buffer \c data.
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5pt_readstepattrib_i4 ( filehandle, name, data )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
INTEGER*4, INTENT(OUT) :: data(*) !< buffer to read value into
|
||||
END FUNCTION
|
||||
@@ -1,600 +0,0 @@
|
||||
#include "H5hut.h"
|
||||
#include "Underscore.h"
|
||||
|
||||
#if defined(F77_SINGLE_UNDERSCORE)
|
||||
#define F77NAME(a,b) a
|
||||
#elif defined(F77_CRAY_UNDERSCORE)
|
||||
#define F77NAME(a,b) b
|
||||
#elif defined(F77_NO_UNDERSCORE)
|
||||
#else
|
||||
#error Error, no way to determine how to construct fortran bindings
|
||||
#endif
|
||||
|
||||
/* Writing attributes */
|
||||
#define h5_writefileattrib_string F77NAME ( \
|
||||
h5pt_writefileattrib_string_, \
|
||||
H5PT_writefileattrib_string )
|
||||
#define h5_writestepattrib_string F77NAME ( \
|
||||
h5pt_writestepattrib_string_, \
|
||||
H5PT_WRITESTEPATTRIB_STRING )
|
||||
|
||||
h5_int64_t
|
||||
h5pt_writefileattrib_string (
|
||||
const h5_int64_t *f,
|
||||
const char *attrib_name,
|
||||
const char *attrib_value,
|
||||
const int l_attrib_name,
|
||||
const int l_attrib_value
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *attrib_name2 = _H5Part_strdupfor2c (attrib_name,l_attrib_name);
|
||||
char *attrib_value2= _H5Part_strdupfor2c (attrib_value,l_attrib_value);
|
||||
|
||||
h5_int64_t herr = H5PartWriteFileAttribString (
|
||||
filehandle, attrib_name2, attrib_value2 );
|
||||
|
||||
free ( attrib_name2 );
|
||||
free ( attrib_value2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5_int64_t
|
||||
h5pt_writestepattrib_string (
|
||||
const h5_int64_t *f,
|
||||
const char *attrib_name,
|
||||
const char *attrib_value,
|
||||
const int l_attrib_name,
|
||||
const int l_attrib_value
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *attrib_name2 = _H5Part_strdupfor2c (attrib_name,l_attrib_name);
|
||||
char *attrib_value2= _H5Part_strdupfor2c (attrib_value,l_attrib_value);
|
||||
|
||||
h5_int64_t herr = H5PartWriteStepAttribString (
|
||||
filehandle, attrib_name2, attrib_value2 );
|
||||
|
||||
free ( attrib_name2 );
|
||||
free ( attrib_value2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* 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_string F77NAME ( \
|
||||
h5pt_readstepattrib_string_, \
|
||||
H5PT_READSTEPATTRIB_STRING )
|
||||
#define h5pt_readfileattrib_string F77NAME ( \
|
||||
h5pt_readfileattrib_string_, \
|
||||
H5PT_READFILEATTRIB_STRING )
|
||||
|
||||
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5pt_writefileattrib_r8 F77NAME ( \
|
||||
h5pt_writefileattrib_r8_, \
|
||||
H5PT_WRITEFILEATTRIB_R8 )
|
||||
#endif
|
||||
|
||||
h5_int64_t
|
||||
h5pt_readstepattrib_string (
|
||||
const h5_int64_t *f,
|
||||
const char *attrib_name,
|
||||
char *attrib_value,
|
||||
const int l_attrib_name,
|
||||
const int l_attrib_value
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char * attrib_name2 = _H5Part_strdupfor2c (attrib_name,l_attrib_name);
|
||||
|
||||
h5_int64_t herr = H5PartReadStepAttrib (
|
||||
filehandle, attrib_name2, attrib_value );
|
||||
|
||||
_H5Part_strc2for ( attrib_value, l_attrib_value );
|
||||
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5_int64_t
|
||||
h5pt_readfileattrib_string (
|
||||
const h5_int64_t *f,
|
||||
const char *attrib_name,
|
||||
char *attrib_value,
|
||||
const int l_attrib_name,
|
||||
const int l_attrib_value
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char * attrib_name2 = _H5Part_strdupfor2c (attrib_name,l_attrib_name);
|
||||
|
||||
h5_int64_t herr = H5PartReadFileAttrib (
|
||||
filehandle, attrib_name2, attrib_value );
|
||||
|
||||
_H5Part_strc2for ( attrib_value, l_attrib_value );
|
||||
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_writefileattrib_r8 (
|
||||
h5part_int64_t *f,
|
||||
const char *name,
|
||||
const h5part_float64_t *data,
|
||||
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 herr = H5PartWriteFileAttrib (
|
||||
filehandle, name2, H5PART_FLOAT64, data, *nelem);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5pt_writefileattrib_r8 F77NAME ( \
|
||||
h5pt_writefileattrib_r8_, \
|
||||
H5PT_WRITEFILEATTRIB_R8 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_readfileattrib_r8 (
|
||||
h5part_int64_t *f,
|
||||
const char *name,
|
||||
const h5part_float64_t *data,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *name2 =_H5Part_strdupfor2c ( name, l_name );
|
||||
|
||||
h5part_int64_t herr = H5PartReadFileAttrib (
|
||||
filehandle, name2, (void*)data);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5pt_writefileattrib_r4 F77NAME ( \
|
||||
h5pt_writefileattrib_r4_, \
|
||||
H5PT_WRITEFILEATTRIB_R4 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_writefileattrib_r4 (
|
||||
h5part_int64_t *f,
|
||||
const char *name,
|
||||
const h5part_float32_t *data,
|
||||
const h5part_float32_t *nelem,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *name2 =_H5Part_strdupfor2c ( name, l_name );
|
||||
|
||||
h5part_int64_t herr = H5PartWriteFileAttrib (
|
||||
filehandle, name2, H5PART_FLOAT32, data, *nelem);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5pt_writefileattrib_r4 F77NAME ( \
|
||||
h5pt_writefileattrib_r4_, \
|
||||
H5PT_WRITEFILEATTRIB_R4 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_readfileattrib_r4 (
|
||||
h5part_int64_t *f,
|
||||
const char *name,
|
||||
const h5part_float32_t *data,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *name2 =_H5Part_strdupfor2c ( name, l_name );
|
||||
|
||||
h5part_int64_t herr = H5PartReadFileAttrib (
|
||||
filehandle, name2, (void*)data);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5pt_writefileattrib_i8 F77NAME ( \
|
||||
h5pt_writefileattrib_i8_, \
|
||||
H5PT_WRITEFILEATTRIB_I8 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_writefileattrib_i8 (
|
||||
h5part_int64_t *f,
|
||||
const char *name,
|
||||
const h5part_int64_t *data,
|
||||
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 herr = H5PartWriteFileAttrib (
|
||||
filehandle, name2, H5PART_INT64, data, *nelem);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5pt_writefileattrib_i8 F77NAME ( \
|
||||
h5pt_writefileattrib_i8_, \
|
||||
H5PT_WRITEFILEATTRIB_I8 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_readfileattrib_i8 (
|
||||
h5part_int64_t *f,
|
||||
const char *name,
|
||||
const h5part_int64_t *data,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *name2 =_H5Part_strdupfor2c ( name, l_name );
|
||||
|
||||
h5part_int64_t herr = H5PartReadFileAttrib (
|
||||
filehandle, name2, (void*)data);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5pt_writefileattrib_i4 F77NAME ( \
|
||||
h5pt_writefileattrib_i4_, \
|
||||
H5PT_WRITEFILEATTRIB_I4 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_writefileattrib_i4 (
|
||||
h5part_int64_t *f,
|
||||
const char *name,
|
||||
const h5part_int32_t *data,
|
||||
const h5part_int32_t *nelem,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *name2 =_H5Part_strdupfor2c ( name, l_name );
|
||||
|
||||
h5part_int64_t herr = H5PartWriteFileAttrib (
|
||||
filehandle, name2, H5PART_INT32, data, *nelem);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5pt_writefileattrib_i4 F77NAME ( \
|
||||
h5pt_writefileattrib_i4_, \
|
||||
H5PT_WRITEFILEATTRIB_I4 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_readfileattrib_i4 (
|
||||
h5part_int64_t *f,
|
||||
const char *name,
|
||||
const h5part_int32_t *data,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *name2 =_H5Part_strdupfor2c ( name, l_name );
|
||||
|
||||
h5part_int64_t herr = H5PartReadFileAttrib (
|
||||
filehandle, name2, (void*)data);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5pt_writestepattrib_r8 F77NAME ( \
|
||||
h5pt_writestepattrib_r8_, \
|
||||
H5PT_WRITESTEPATTRIB_R8 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_writestepattrib_r8 (
|
||||
h5part_int64_t *f,
|
||||
const char *name,
|
||||
const h5part_float64_t *data,
|
||||
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 herr = H5PartWriteStepAttrib (
|
||||
filehandle, name2, H5PART_FLOAT64, data, *nelem);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5pt_writestepattrib_r8 F77NAME ( \
|
||||
h5pt_writestepattrib_r8_, \
|
||||
H5PT_WRITESTEPATTRIB_R8 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_readstepattrib_r8 (
|
||||
h5part_int64_t *f,
|
||||
const char *name,
|
||||
const h5part_float64_t *data,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *name2 =_H5Part_strdupfor2c ( name, l_name );
|
||||
|
||||
h5part_int64_t herr = H5PartReadStepAttrib (
|
||||
filehandle, name2, (void*)data);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5pt_writestepattrib_r4 F77NAME ( \
|
||||
h5pt_writestepattrib_r4_, \
|
||||
H5PT_WRITESTEPATTRIB_R4 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_writestepattrib_r4 (
|
||||
h5part_int64_t *f,
|
||||
const char *name,
|
||||
const h5part_float32_t *data,
|
||||
const h5part_float32_t *nelem,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *name2 =_H5Part_strdupfor2c ( name, l_name );
|
||||
|
||||
h5part_int64_t herr = H5PartWriteStepAttrib (
|
||||
filehandle, name2, H5PART_FLOAT32, data, *nelem);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5pt_writestepattrib_r4 F77NAME ( \
|
||||
h5pt_writestepattrib_r4_, \
|
||||
H5PT_WRITESTEPATTRIB_R4 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_readstepattrib_r4 (
|
||||
h5part_int64_t *f,
|
||||
const char *name,
|
||||
const h5part_float32_t *data,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *name2 =_H5Part_strdupfor2c ( name, l_name );
|
||||
|
||||
h5part_int64_t herr = H5PartReadStepAttrib (
|
||||
filehandle, name2, (void*)data);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5pt_writestepattrib_i8 F77NAME ( \
|
||||
h5pt_writestepattrib_i8_, \
|
||||
H5PT_WRITESTEPATTRIB_I8 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_writestepattrib_i8 (
|
||||
h5part_int64_t *f,
|
||||
const char *name,
|
||||
const h5part_int64_t *data,
|
||||
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 herr = H5PartWriteStepAttrib (
|
||||
filehandle, name2, H5PART_INT64, data, *nelem);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5pt_writestepattrib_i8 F77NAME ( \
|
||||
h5pt_writestepattrib_i8_, \
|
||||
H5PT_WRITESTEPATTRIB_I8 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_readstepattrib_i8 (
|
||||
h5part_int64_t *f,
|
||||
const char *name,
|
||||
const h5part_int64_t *data,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *name2 =_H5Part_strdupfor2c ( name, l_name );
|
||||
|
||||
h5part_int64_t herr = H5PartReadStepAttrib (
|
||||
filehandle, name2, (void*)data);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5pt_writestepattrib_i4 F77NAME ( \
|
||||
h5pt_writestepattrib_i4_, \
|
||||
H5PT_WRITESTEPATTRIB_I4 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_writestepattrib_i4 (
|
||||
h5part_int64_t *f,
|
||||
const char *name,
|
||||
const h5part_int32_t *data,
|
||||
const h5part_int32_t *nelem,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *name2 =_H5Part_strdupfor2c ( name, l_name );
|
||||
|
||||
h5part_int64_t herr = H5PartWriteStepAttrib (
|
||||
filehandle, name2, H5PART_INT32, data, *nelem);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5pt_writestepattrib_i4 F77NAME ( \
|
||||
h5pt_writestepattrib_i4_, \
|
||||
H5PT_WRITESTEPATTRIB_I4 )
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_readstepattrib_i4 (
|
||||
h5part_int64_t *f,
|
||||
const char *name,
|
||||
const h5part_int32_t *data,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
||||
|
||||
char *name2 =_H5Part_strdupfor2c ( name, l_name );
|
||||
|
||||
h5part_int64_t herr = H5PartReadStepAttrib (
|
||||
filehandle, name2, (void*)data);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
/*** QUERY ***/
|
||||
|
||||
h5_int64_t
|
||||
h5pt_getnstepattribs (
|
||||
const h5_int64_t *f
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartGetNumStepAttribs ( filehandle );
|
||||
}
|
||||
|
||||
h5_int64_t
|
||||
h5pt_getnfileattribs (
|
||||
const h5_int64_t *f
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartGetNumFileAttribs ( filehandle );
|
||||
}
|
||||
|
||||
h5_int64_t
|
||||
h5pt_getstepattribinfo (
|
||||
const h5_int64_t *f,
|
||||
const h5_int64_t *idx,
|
||||
char *name,
|
||||
h5_int64_t *nelem,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
h5_int64_t type;
|
||||
|
||||
h5_int64_t herr = H5PartGetStepAttribInfo (
|
||||
filehandle, *idx, name, l_name, &type, nelem);
|
||||
|
||||
_H5Part_strc2for( name, l_name );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5_int64_t
|
||||
h5pt_getfileattribinfo (
|
||||
const h5_int64_t *f,
|
||||
const h5_int64_t *idx,
|
||||
char *name,
|
||||
h5_int64_t *nelem,
|
||||
const int l_name ) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
h5_int64_t type;
|
||||
|
||||
h5_int64_t herr = H5PartGetFileAttribInfo (
|
||||
filehandle, *idx, name, l_name, &type, nelem);
|
||||
|
||||
_H5Part_strc2for( name, l_name );
|
||||
return herr;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,913 +0,0 @@
|
||||
#include <string.h>
|
||||
#include <hdf5.h>
|
||||
|
||||
#include "H5hut.h"
|
||||
#include "Underscore.h"
|
||||
|
||||
#if defined(F77_SINGLE_UNDERSCORE)
|
||||
#define F77NAME(a,b) a
|
||||
#elif defined(F77_CRAY_UNDERSCORE)
|
||||
#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)
|
||||
|
||||
/* open/close interface */
|
||||
#define h5pt_openr F77NAME ( \
|
||||
h5pt_openr_, \
|
||||
H5PT_OPENR )
|
||||
#define h5pt_openw F77NAME ( \
|
||||
h5pt_openw_, \
|
||||
H5PT_OPENW )
|
||||
#define h5pt_opena F77NAME ( \
|
||||
h5pt_opena_, \
|
||||
H5PT_OPENA )
|
||||
#define h5pt_openr_par F77NAME ( \
|
||||
h5pt_openr_par_, \
|
||||
H5PT_OPENR_PAR )
|
||||
#define h5pt_openw_par F77NAME ( \
|
||||
h5pt_openw_par_, \
|
||||
H5PT_OPENW_PAR )
|
||||
#define h5pt_opena_par F77NAME ( \
|
||||
h5pt_opena_par_, \
|
||||
H5PT_OPENA_PAR )
|
||||
#define h5pt_openr_align F77NAME ( \
|
||||
h5pt_openr_align_, \
|
||||
H5PT_OPENR_ALIGN )
|
||||
#define h5pt_openw_align F77NAME ( \
|
||||
h5pt_openw_align_, \
|
||||
H5PT_OPENW_ALIGN )
|
||||
#define h5pt_opena_align F77NAME ( \
|
||||
h5pt_opena_align_, \
|
||||
H5PT_OPENA_ALIGN )
|
||||
#define h5pt_openr_par_align F77NAME ( \
|
||||
h5pt_openr_par_align_, \
|
||||
H5PT_OPENR_PAR_ALIGN )
|
||||
#define h5pt_openw_par_align F77NAME ( \
|
||||
h5pt_openw_par_align_, \
|
||||
H5PT_OPENW_PAR_ALIGN )
|
||||
#define h5pt_opena_par_align F77NAME ( \
|
||||
h5pt_opena_par_align_, \
|
||||
H5PT_OPENA_PAR_ALIGN )
|
||||
|
||||
#define h5pt_close F77NAME ( \
|
||||
h5pt_close_, \
|
||||
H5PT_CLOSE)
|
||||
|
||||
/* writing interface */
|
||||
#define h5pt_setnpoints F77NAME ( \
|
||||
h5pt_setnpoints_, \
|
||||
H5PT_SETNPOINTS )
|
||||
#define h5pt_setnpoints_strided F77NAME ( \
|
||||
h5pt_setnpoints_strided_, \
|
||||
H5PT_SETNPOINTS_STRIDED )
|
||||
#define h5pt_setstep F77NAME ( \
|
||||
h5pt_setstep_, \
|
||||
H5PT_SETSTEP )
|
||||
#define h5pt_writedata_r8 F77NAME ( \
|
||||
h5pt_writedata_r8_, \
|
||||
H5PT_WRITEDATA_R8 )
|
||||
#define h5pt_writedata_r4 F77NAME ( \
|
||||
h5pt_writedata_r4_, \
|
||||
H5PT_WRITEDATA_R4 )
|
||||
#define h5pt_writedata_i8 F77NAME ( \
|
||||
h5pt_writedata_i8_, \
|
||||
H5PT_WRITEDATA_I8 )
|
||||
#define h5pt_writedata_i4 F77NAME ( \
|
||||
h5pt_writedata_i4_, \
|
||||
H5PT_WRITEDATA_I4 )
|
||||
|
||||
/* Reading interface (define dataset, step, particles, attributes) */
|
||||
#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 )
|
||||
|
||||
/* Views and parallelism */
|
||||
#define h5pt_setview F77NAME ( \
|
||||
h5pt_setview_, \
|
||||
H5PT_SETVIEW )
|
||||
#define h5pt_setview_indices F77NAME ( \
|
||||
h5pt_setview_indices_, \
|
||||
H5PT_SETVIEW_INDICES )
|
||||
#define h5pt_setview_empty F77NAME ( \
|
||||
h5pt_setview_empty_, \
|
||||
H5PT_SETVIEW_EMPTY )
|
||||
#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 h5pt_readdata_r8 F77NAME ( \
|
||||
h5pt_readdata_r8_, \
|
||||
H5PT_READDATA_R8 )
|
||||
#define h5pt_readdata_r4 F77NAME ( \
|
||||
h5pt_readdata_r4_, \
|
||||
H5PT_READDATA_R4 )
|
||||
#define h5pt_readdata_i8 F77NAME ( \
|
||||
h5pt_readdata_i8_, \
|
||||
H5PT_READDATA_I8 )
|
||||
#define h5pt_readdata_i4 F77NAME ( \
|
||||
h5pt_readdata_i4_, \
|
||||
H5PT_READDATA_I4 )
|
||||
|
||||
/* Writing attributes */
|
||||
#define h5pt_writefileattrib_string F77NAME ( \
|
||||
h5pt_writefileattrib_string_, \
|
||||
H5PT_writefileattrib_string )
|
||||
#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_string F77NAME ( \
|
||||
h5pt_readstepattrib_string_, \
|
||||
H5PT_READSTEPATTRIB_STRING )
|
||||
#define h5pt_readfileattrib_string F77NAME ( \
|
||||
h5pt_readfileattrib_string_, \
|
||||
H5PT_READFILEATTRIB_STRING )
|
||||
|
||||
/* error handling */
|
||||
#define h5pt_set_verbosity_level F77NAME ( \
|
||||
h5pt_set_verbosity_level_, \
|
||||
H5PT_SET_VERBOSITY_LEVEL )
|
||||
|
||||
#endif
|
||||
|
||||
static 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;
|
||||
}
|
||||
|
||||
static char *
|
||||
_H5Part_strc2for (
|
||||
char * const str,
|
||||
const ssize_t l_str
|
||||
) {
|
||||
|
||||
size_t len = strlen ( str );
|
||||
memset ( str+len, ' ', l_str-len );
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
static char
|
||||
_H5Part_flagsfor2c (
|
||||
char * flags
|
||||
) {
|
||||
|
||||
char fbits = 0x00;
|
||||
|
||||
flags = strtok ( flags, "," );
|
||||
while ( flags != NULL ) {
|
||||
if ( strcmp ( flags, "vfd_mpiposix" ) == 0 )
|
||||
fbits |= H5_VFD_MPIPOSIX;
|
||||
else if ( strcmp ( flags, "vfd_independent" ) == 0 )
|
||||
fbits |= H5_VFD_INDEPENDENT;
|
||||
flags = strtok ( NULL, "," );
|
||||
}
|
||||
|
||||
return fbits;
|
||||
}
|
||||
|
||||
/* open/close interface */
|
||||
h5_err_t
|
||||
h5pt_openr (
|
||||
const char *file_name,
|
||||
const int l_file_name
|
||||
) {
|
||||
|
||||
char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name );
|
||||
|
||||
h5_file_t* f = H5OpenFile ( file_name2, H5PART_READ );
|
||||
|
||||
free ( file_name2 );
|
||||
return (h5part_int64_t)(size_t)f;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5pt_openw (
|
||||
const char *file_name,
|
||||
const int l_file_name
|
||||
) {
|
||||
|
||||
char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name );
|
||||
|
||||
h5_file_t* f = H5OpenFile ( file_name2, H5PART_WRITE );
|
||||
|
||||
free ( file_name2 );
|
||||
return (h5part_int64_t)(size_t)f;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_opena (
|
||||
const char *file_name,
|
||||
const int l_file_name
|
||||
) {
|
||||
|
||||
char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name );
|
||||
|
||||
h5_file_t* f = H5OpenFile ( file_name2, H5PART_APPEND );
|
||||
|
||||
free ( file_name2 );
|
||||
return (h5part_int64_t)(size_t)f;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_openr_align (
|
||||
const char *file_name,
|
||||
const h5part_int64_t *align,
|
||||
const int l_file_name
|
||||
) {
|
||||
|
||||
char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name );
|
||||
|
||||
h5_file_t* f = H5OpenFileAlign ( file_name2, H5PART_READ, *align );
|
||||
|
||||
free ( file_name2 );
|
||||
return (h5part_int64_t)(size_t)f;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_openw_align (
|
||||
const char *file_name,
|
||||
const h5part_int64_t *align,
|
||||
const int l_file_name
|
||||
) {
|
||||
|
||||
char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name );
|
||||
|
||||
h5_file_t* f = H5OpenFileAlign ( file_name2, H5PART_WRITE, *align );
|
||||
|
||||
free ( file_name2 );
|
||||
return (h5part_int64_t)(size_t)f;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_opena_align (
|
||||
const char *file_name,
|
||||
const h5part_int64_t *align,
|
||||
const int l_file_name
|
||||
) {
|
||||
|
||||
char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name );
|
||||
|
||||
h5_file_t* f = H5OpenFileAlign ( file_name2, H5PART_APPEND, *align );
|
||||
|
||||
free ( file_name2 );
|
||||
return (h5part_int64_t)(size_t)f;
|
||||
}
|
||||
|
||||
#ifdef PARALLEL_IO
|
||||
h5part_int64_t
|
||||
h5pt_openr_par (
|
||||
const char *file_name,
|
||||
MPI_Fint *fcomm,
|
||||
const int l_file_name
|
||||
) {
|
||||
|
||||
MPI_Comm ccomm = MPI_Comm_f2c (*fcomm);
|
||||
|
||||
char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name );
|
||||
|
||||
h5_file_t* f = H5OpenFileParallel (
|
||||
file_name2, H5PART_READ, ccomm );
|
||||
|
||||
free ( file_name2 );
|
||||
return (h5part_int64_t)(size_t)f;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_openw_par (
|
||||
const char *file_name,
|
||||
MPI_Fint *fcomm,
|
||||
const int l_file_name
|
||||
) {
|
||||
|
||||
MPI_Comm ccomm = MPI_Comm_f2c (*fcomm);
|
||||
char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name );
|
||||
|
||||
h5_file_t* f = H5OpenFileParallel (
|
||||
file_name2, H5PART_WRITE, ccomm );
|
||||
|
||||
free ( file_name2 );
|
||||
return (h5part_int64_t)(size_t)f;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_opena_par (
|
||||
const char *file_name,
|
||||
MPI_Fint *fcomm,
|
||||
const int l_file_name
|
||||
) {
|
||||
|
||||
MPI_Comm ccomm = MPI_Comm_f2c (*fcomm);
|
||||
char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name );
|
||||
|
||||
h5_file_t* f = H5OpenFileParallel (
|
||||
file_name2, H5PART_APPEND, ccomm );
|
||||
|
||||
free ( file_name2 );
|
||||
return (h5part_int64_t)(size_t)f;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_openr_par_align (
|
||||
const char *file_name,
|
||||
MPI_Fint *fcomm,
|
||||
const h5part_int64_t *align,
|
||||
const char *flags,
|
||||
const int l_file_name,
|
||||
const int l_flags
|
||||
) {
|
||||
|
||||
MPI_Comm ccomm = MPI_Comm_f2c (*fcomm);
|
||||
char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name );
|
||||
char *flags2 = _H5Part_strdupfor2c ( flags, l_flags );
|
||||
|
||||
char fbits = H5PART_READ | _H5Part_flagsfor2c ( flags2 );
|
||||
|
||||
h5_file_t* f = H5OpenFileParallelAlign (
|
||||
file_name2, fbits, ccomm, *align );
|
||||
|
||||
free ( file_name2 );
|
||||
free ( flags2 );
|
||||
return (h5part_int64_t)(size_t)f;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_openw_par_align (
|
||||
const char *file_name,
|
||||
MPI_Fint *fcomm,
|
||||
const h5part_int64_t *align,
|
||||
const char *flags,
|
||||
const int l_file_name,
|
||||
const int l_flags
|
||||
) {
|
||||
|
||||
MPI_Comm ccomm = MPI_Comm_f2c (*fcomm);
|
||||
char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name );
|
||||
char *flags2 = _H5Part_strdupfor2c ( flags, l_flags );
|
||||
|
||||
char fbits = H5PART_WRITE | _H5Part_flagsfor2c ( flags2 );
|
||||
|
||||
h5_file_t* f = H5OpenFileParallelAlign (
|
||||
file_name2, fbits, ccomm, *align );
|
||||
|
||||
free ( file_name2 );
|
||||
free ( flags2 );
|
||||
return (h5part_int64_t)(size_t)f;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_opena_par_align (
|
||||
const char *file_name,
|
||||
MPI_Fint *fcomm,
|
||||
const h5part_int64_t *align,
|
||||
const char *flags,
|
||||
const int l_file_name,
|
||||
const int l_flags
|
||||
) {
|
||||
|
||||
MPI_Comm ccomm = MPI_Comm_f2c (*fcomm);
|
||||
char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name );
|
||||
char *flags2 = _H5Part_strdupfor2c ( flags, l_flags );
|
||||
|
||||
char fbits = H5PART_APPEND | _H5Part_flagsfor2c ( flags2 );
|
||||
|
||||
h5_file_t* f = H5OpenFileParallelAlign (
|
||||
file_name2, fbits, ccomm, *align );
|
||||
|
||||
free ( file_name2 );
|
||||
free ( flags2 );
|
||||
return (h5part_int64_t)(size_t)f;
|
||||
}
|
||||
#endif
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_close (
|
||||
const h5part_int64_t *f
|
||||
) {
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartCloseFile ( filehandle );
|
||||
}
|
||||
|
||||
/*==============Writing and Setting Dataset info========*/
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_readstep (
|
||||
const h5part_int64_t *f,
|
||||
const h5part_int64_t *step,
|
||||
h5part_float64_t *x,
|
||||
h5part_float64_t *y,
|
||||
h5part_float64_t *z,
|
||||
h5part_float64_t *px,
|
||||
h5part_float64_t *py,
|
||||
h5part_float64_t *pz,
|
||||
h5part_int64_t *id
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartReadParticleStep (
|
||||
filehandle,(*step)-1,x,y,z,px,py,pz,id);
|
||||
}
|
||||
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_setnpoints (
|
||||
const h5part_int64_t *f,
|
||||
h5part_int64_t *np
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartSetNumParticles ( filehandle, *np );
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_setnpoints_strided (
|
||||
const h5part_int64_t *f,
|
||||
h5part_int64_t *np,
|
||||
h5part_int64_t *stride
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartSetNumParticlesStrided ( filehandle, *np, *stride );
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_setstep (
|
||||
const h5part_int64_t *f,
|
||||
h5part_int64_t *step ) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartSetStep ( filehandle, (*step)-1 );
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_writedata_r8 (
|
||||
const h5part_int64_t *f,
|
||||
const char *name,
|
||||
const h5part_float64_t *data,
|
||||
const int l_name ) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = _H5Part_strdupfor2c ( name, l_name );
|
||||
|
||||
h5part_int64_t herr = H5PartWriteDataFloat64 (
|
||||
filehandle, name2, data );
|
||||
|
||||
free ( name2 );
|
||||
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_writedata_r4 (
|
||||
const h5part_int64_t *f,
|
||||
const char *name,
|
||||
const h5part_float32_t *data,
|
||||
const int l_name ) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = _H5Part_strdupfor2c ( name, l_name );
|
||||
|
||||
h5part_int64_t herr = H5PartWriteDataFloat32 (
|
||||
filehandle, name2, data );
|
||||
|
||||
free ( name2 );
|
||||
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_writedata_i8 (
|
||||
const h5part_int64_t *f,
|
||||
const char *name,
|
||||
const h5part_int64_t *data,
|
||||
const int l_name ) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = _H5Part_strdupfor2c ( name, l_name );
|
||||
|
||||
h5part_int64_t herr = H5PartWriteDataInt64 (
|
||||
filehandle, name2, data );
|
||||
|
||||
free ( name2 );
|
||||
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_writedata_i4 (
|
||||
const h5part_int64_t *f,
|
||||
const char *name,
|
||||
const h5part_int32_t *data,
|
||||
const int l_name ) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = _H5Part_strdupfor2c ( name, l_name );
|
||||
|
||||
h5part_int64_t herr = H5PartWriteDataInt32 (
|
||||
filehandle, name2, data );
|
||||
|
||||
free ( name2 );
|
||||
|
||||
return herr;
|
||||
}
|
||||
|
||||
/*==============Reading Data Characteristics============*/
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_getnsteps (
|
||||
const h5part_int64_t *f
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartGetNumSteps ( filehandle );
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_getndatasets (
|
||||
const h5part_int64_t *f
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartGetNumDatasets ( filehandle );
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_getnpoints (
|
||||
const h5part_int64_t *f
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartGetNumParticles ( filehandle );
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_getdatasetname (
|
||||
const h5part_int64_t *f,
|
||||
const h5part_int64_t *index,
|
||||
char *name,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
h5part_int64_t herr = H5PartGetDatasetName (
|
||||
filehandle, *index, name, l_name );
|
||||
|
||||
_H5Part_strc2for ( name, l_name );
|
||||
return herr;
|
||||
}
|
||||
|
||||
/*=============Setting and getting views================*/
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_setview (
|
||||
const h5part_int64_t *f,
|
||||
const h5part_int64_t *start,
|
||||
const h5part_int64_t *end
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartSetView ( filehandle, *start, *end );
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_setview_indices (
|
||||
const h5part_int64_t *f,
|
||||
const h5part_int64_t *indices,
|
||||
const h5part_int64_t *nelem
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartSetViewIndices ( filehandle, indices, *nelem );
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_setview_empty (
|
||||
const h5part_int64_t *f
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartSetViewEmpty ( filehandle );
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_resetview (
|
||||
const h5part_int64_t *f
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartResetView ( filehandle );
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_hasview (
|
||||
const h5part_int64_t *f
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartHasView ( filehandle );
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_getview (
|
||||
const h5part_int64_t *f,
|
||||
h5part_int64_t *start,
|
||||
h5part_int64_t *end
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartGetView ( filehandle, start, end);
|
||||
}
|
||||
/*==================Reading data ============*/
|
||||
h5part_int64_t
|
||||
h5pt_readdata_r8 (
|
||||
const h5part_int64_t *f,
|
||||
const char *name,
|
||||
h5part_float64_t *array,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = _H5Part_strdupfor2c ( name, l_name );
|
||||
|
||||
h5part_int64_t herr = H5PartReadDataFloat64 (
|
||||
filehandle, name2, array );
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_readdata_r4 (
|
||||
const h5part_int64_t *f,
|
||||
const char *name,
|
||||
h5part_float32_t *array,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = _H5Part_strdupfor2c ( name, l_name );
|
||||
|
||||
h5part_int64_t herr = H5PartReadDataFloat32 (
|
||||
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
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = _H5Part_strdupfor2c ( name, l_name );
|
||||
|
||||
h5part_int64_t herr = H5PartReadDataInt64 (
|
||||
filehandle, name2, array );
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_readdata_i4 (
|
||||
const h5part_int64_t *f,
|
||||
const char *name,
|
||||
h5part_int32_t *array,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = _H5Part_strdupfor2c ( name, l_name );
|
||||
|
||||
h5part_int64_t herr = H5PartReadDataInt32 (
|
||||
filehandle, name2, array );
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
/*=================== Attributes ================*/
|
||||
|
||||
h5part_int64_t
|
||||
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
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(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_string (
|
||||
const h5part_int64_t *f,
|
||||
const char *attrib_name,
|
||||
const char *attrib_value,
|
||||
const int l_attrib_name,
|
||||
const int l_attrib_value
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(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
|
||||
h5pt_getnstepattribs (
|
||||
const h5part_int64_t *f
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartGetNumStepAttribs ( filehandle );
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_getnfileattribs (
|
||||
const h5part_int64_t *f
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(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,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
h5part_int64_t type;
|
||||
|
||||
h5part_int64_t herr = H5PartGetStepAttribInfo (
|
||||
filehandle, *idx, name, l_name, &type, nelem);
|
||||
|
||||
_H5Part_strc2for( name, l_name );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_getfileattribinfo (
|
||||
const h5part_int64_t *f,
|
||||
const h5part_int64_t *idx,
|
||||
char *name,
|
||||
h5part_int64_t *nelem,
|
||||
const int l_name ) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
h5part_int64_t type;
|
||||
|
||||
h5part_int64_t herr = H5PartGetFileAttribInfo (
|
||||
filehandle, *idx, name, l_name, &type, nelem);
|
||||
|
||||
_H5Part_strc2for( name, l_name );
|
||||
return herr;
|
||||
}
|
||||
|
||||
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
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char * attrib_name2 = _H5Part_strdupfor2c (attrib_name,l_attrib_name);
|
||||
|
||||
h5part_int64_t herr = H5PartReadStepAttrib (
|
||||
filehandle, attrib_name2, attrib_value );
|
||||
|
||||
_H5Part_strc2for ( attrib_value, l_attrib_value );
|
||||
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
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
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char * attrib_name2 = _H5Part_strdupfor2c (attrib_name,l_attrib_name);
|
||||
|
||||
h5part_int64_t herr = H5PartReadFileAttrib (
|
||||
filehandle, attrib_name2, attrib_value );
|
||||
|
||||
_H5Part_strc2for ( attrib_value, l_attrib_value );
|
||||
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5part_int64_t
|
||||
h5pt_set_verbosity_level (
|
||||
const h5part_int64_t *level
|
||||
) {
|
||||
return H5PartSetVerbosityLevel ( *level );
|
||||
}
|
||||
Executable
+370
@@ -0,0 +1,370 @@
|
||||
#include "H5hut.h"
|
||||
#include "Underscore.h"
|
||||
|
||||
#if defined(F77_SINGLE_UNDERSCORE)
|
||||
#define F77NAME(a,b) a
|
||||
#elif defined(F77_CRAY_UNDERSCORE)
|
||||
#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 h5pt_setnpoints F77NAME ( \
|
||||
h5pt_setnpoints_, \
|
||||
H5PT_SETNPOINTS )
|
||||
#define h5pt_setnpoints_strided F77NAME ( \
|
||||
h5pt_setnpoints_strided_, \
|
||||
H5PT_SETNPOINTS_STRIDED )
|
||||
#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_setview F77NAME ( \
|
||||
h5pt_setview_, \
|
||||
H5PT_SETVIEW )
|
||||
#define h5pt_setview_indices F77NAME ( \
|
||||
h5pt_setview_indices_, \
|
||||
H5PT_SETVIEW_INDICES )
|
||||
#define h5pt_resetview F77NAME ( \
|
||||
h5pt_resetview_, \
|
||||
H5PT_RESETVIEW )
|
||||
#define h5pt_hasview F77NAME ( \
|
||||
h5pt_hasview_, \
|
||||
H5PT_HASVIEW )
|
||||
#define h5pt_getview F77NAME ( \
|
||||
h5pt_getview_, \
|
||||
H5PT_GETVIEW )
|
||||
#define h5pt_writedata_r8 F77NAME ( \
|
||||
h5pt_writedata_r8_, \
|
||||
H5PT_WRITEDATA_R8 )
|
||||
#define h5pt_writedata_r4 F77NAME ( \
|
||||
h5pt_writedata_r4_, \
|
||||
H5PT_WRITEDATA_R4 )
|
||||
#define h5pt_writedata_i8 F77NAME ( \
|
||||
h5pt_writedata_i8_, \
|
||||
H5PT_WRITEDATA_I8 )
|
||||
#define h5pt_writedata_i4 F77NAME ( \
|
||||
h5pt_writedata_i4_, \
|
||||
H5PT_WRITEDATA_I4 )
|
||||
#define h5pt_readdata_r8 F77NAME ( \
|
||||
h5pt_readdata_r8_, \
|
||||
H5PT_READDATA_R8 )
|
||||
#define h5pt_readdata_r4 F77NAME ( \
|
||||
h5pt_readdata_r4_, \
|
||||
H5PT_READDATA_R4 )
|
||||
#define h5pt_readdata_i8 F77NAME ( \
|
||||
h5pt_readdata_i8_, \
|
||||
H5PT_READDATA_I8 )
|
||||
#define h5pt_readdata_i4 F77NAME ( \
|
||||
h5pt_readdata_i4_, \
|
||||
H5PT_READDATA_I4 )
|
||||
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5pt_setnpoints (
|
||||
const h5_int64_t *f,
|
||||
h5_int64_t *np
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartSetNumParticles ( filehandle, *np );
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5pt_setnpoints_strided (
|
||||
const h5_int64_t *f,
|
||||
h5_int64_t *np,
|
||||
h5_int64_t *stride
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartSetNumParticlesStrided ( filehandle, *np, *stride );
|
||||
}
|
||||
|
||||
/*==============Reading Data Characteristics============*/
|
||||
|
||||
h5_err_t
|
||||
h5pt_getnsteps (
|
||||
const h5_int64_t *f
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartGetNumSteps ( filehandle );
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5pt_getndatasets (
|
||||
const h5_int64_t *f
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartGetNumDatasets ( filehandle );
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5pt_getnpoints (
|
||||
const h5_int64_t *f
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartGetNumParticles ( filehandle );
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5pt_getdatasetname (
|
||||
const h5_int64_t *f,
|
||||
const h5_int64_t *index,
|
||||
char *name,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
h5_int64_t herr = H5PartGetDatasetName (
|
||||
filehandle, *index, name, l_name );
|
||||
|
||||
_h5_strc2for ( name, l_name );
|
||||
return herr;
|
||||
}
|
||||
|
||||
/*=============Setting and getting views================*/
|
||||
|
||||
h5_err_t
|
||||
h5pt_setview (
|
||||
const h5_int64_t *f,
|
||||
const h5_int64_t *start,
|
||||
const h5_int64_t *end
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartSetView ( filehandle, *start, *end );
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5pt_setview_indices (
|
||||
const h5_int64_t *f,
|
||||
const h5_int64_t *indices,
|
||||
const h5_int64_t *nelem
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartSetViewIndices ( filehandle, indices, *nelem );
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5pt_setview_empty (
|
||||
const h5_int64_t *f
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartSetViewEmpty ( filehandle );
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5pt_resetview (
|
||||
const h5_int64_t *f
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartResetView ( filehandle );
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5pt_hasview (
|
||||
const h5_int64_t *f
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartHasView ( filehandle );
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5pt_getview (
|
||||
const h5_int64_t *f,
|
||||
h5_int64_t *start,
|
||||
h5_int64_t *end
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5PartGetView ( filehandle, start, end);
|
||||
}
|
||||
|
||||
|
||||
/*==================Writing data ============*/
|
||||
h5_err_t
|
||||
h5pt_writedata_r8 (
|
||||
const h5_int64_t *f,
|
||||
const char *name,
|
||||
const h5_float64_t *data,
|
||||
const int l_name ) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_int64_t herr = H5PartWriteDataFloat64 (
|
||||
filehandle, name2, data );
|
||||
|
||||
free ( name2 );
|
||||
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5pt_writedata_r4 (
|
||||
const h5_int64_t *f,
|
||||
const char *name,
|
||||
const h5_float32_t *data,
|
||||
const int l_name ) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_int64_t herr = H5PartWriteDataFloat32 (
|
||||
filehandle, name2, data );
|
||||
|
||||
free ( name2 );
|
||||
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5pt_writedata_i8 (
|
||||
const h5_int64_t *f,
|
||||
const char *name,
|
||||
const h5_int64_t *data,
|
||||
const int l_name ) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_int64_t herr = H5PartWriteDataInt64 (
|
||||
filehandle, name2, data );
|
||||
|
||||
free ( name2 );
|
||||
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5pt_writedata_i4 (
|
||||
const h5_int64_t *f,
|
||||
const char *name,
|
||||
const h5_int32_t *data,
|
||||
const int l_name ) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_int64_t herr = H5PartWriteDataInt32 (
|
||||
filehandle, name2, data );
|
||||
|
||||
free ( name2 );
|
||||
|
||||
return herr;
|
||||
}
|
||||
|
||||
|
||||
/*==================Reading data ============*/
|
||||
h5_err_t
|
||||
h5pt_readdata_r8 (
|
||||
const h5_int64_t *f,
|
||||
const char *name,
|
||||
h5_float64_t *array,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_int64_t herr = H5PartReadDataFloat64 (
|
||||
filehandle, name2, array );
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5pt_readdata_r4 (
|
||||
const h5_int64_t *f,
|
||||
const char *name,
|
||||
h5_float32_t *array,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_int64_t herr = H5PartReadDataFloat32 (
|
||||
filehandle, name2, array );
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5pt_readdata_i8 (
|
||||
const h5_int64_t *f,
|
||||
const char *name,
|
||||
h5_int64_t *array,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_int64_t herr = H5PartReadDataInt64 (
|
||||
filehandle, name2, array );
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5pt_readdata_i4 (
|
||||
const h5_int64_t *f,
|
||||
const char *name,
|
||||
h5_int32_t *array,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_int64_t herr = H5PartReadDataInt32 (
|
||||
filehandle, name2, array );
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <hdf5.h>
|
||||
|
||||
#include "H5hut.h"
|
||||
#include "Underscore.h"
|
||||
@@ -51,35 +51,8 @@
|
||||
|
||||
#endif
|
||||
|
||||
static 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;
|
||||
}
|
||||
|
||||
static char *
|
||||
_H5Part_strc2for (
|
||||
char * const str,
|
||||
const ssize_t l_str
|
||||
) {
|
||||
|
||||
size_t len = strlen ( str );
|
||||
memset ( str+len, ' ', l_str-len );
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
static h5_int32_t
|
||||
_H5Part_flagsfor2c (
|
||||
_flagsfor2c (
|
||||
char * flags
|
||||
) {
|
||||
|
||||
@@ -98,13 +71,13 @@ _H5Part_flagsfor2c (
|
||||
}
|
||||
|
||||
/* open/close interface */
|
||||
h5_int64_t
|
||||
h5_err_t
|
||||
h5_openr (
|
||||
const char *file_name,
|
||||
const int l_file_name
|
||||
) {
|
||||
|
||||
char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name );
|
||||
char *file_name2 = h5_strdupfor2c ( file_name, l_file_name );
|
||||
|
||||
h5_file_t* f = H5OpenFile ( file_name2, H5_O_RDONLY, 0 );
|
||||
|
||||
@@ -112,13 +85,13 @@ h5_openr (
|
||||
return (h5_int64_t)(size_t)f;
|
||||
}
|
||||
|
||||
h5_int64_t
|
||||
h5_err_t
|
||||
h5_openw (
|
||||
const char *file_name,
|
||||
const int l_file_name
|
||||
) {
|
||||
|
||||
char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name );
|
||||
char *file_name2 = h5_strdupfor2c ( file_name, l_file_name );
|
||||
|
||||
h5_file_t* f = H5OpenFile ( file_name2, H5_O_WRONLY, 0 );
|
||||
|
||||
@@ -126,13 +99,13 @@ h5_openw (
|
||||
return (h5_int64_t)(size_t)f;
|
||||
}
|
||||
|
||||
h5_int64_t
|
||||
h5_err_t
|
||||
h5pt_opena (
|
||||
const char *file_name,
|
||||
const int l_file_name
|
||||
) {
|
||||
|
||||
char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name );
|
||||
char *file_name2 = h5_strdupfor2c ( file_name, l_file_name );
|
||||
|
||||
h5_file_t* f = H5OpenFile ( file_name2, H5_O_APPEND, 0 );
|
||||
|
||||
@@ -141,7 +114,7 @@ h5pt_opena (
|
||||
}
|
||||
|
||||
#ifdef PARALLEL_IO
|
||||
h5_int64_t
|
||||
h5_err_t
|
||||
h5_openr_par (
|
||||
const char *file_name,
|
||||
MPI_Fint *fcomm,
|
||||
@@ -151,10 +124,10 @@ h5_openr_par (
|
||||
) {
|
||||
|
||||
MPI_Comm ccomm = MPI_Comm_f2c (*fcomm);
|
||||
char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name );
|
||||
char *flags2 = _H5Part_strdupfor2c ( flags, l_flags );
|
||||
char *file_name2 = h5_strdupfor2c ( file_name, l_file_name );
|
||||
char *flags2 = h5_strdupfor2c ( flags, l_flags );
|
||||
|
||||
h5_int32_t fbits = H5_O_RDONLY | _H5Part_flagsfor2c ( flags2 );
|
||||
h5_int32_t fbits = H5_O_RDONLY | _flagsfor2c ( flags2 );
|
||||
|
||||
h5_file_t* f = H5OpenFile ( file_name2, ccomm, fbits );
|
||||
|
||||
@@ -163,7 +136,7 @@ h5_openr_par (
|
||||
return (h5_int64_t)(size_t)f;
|
||||
}
|
||||
|
||||
h5_int64_t
|
||||
h5_err_t
|
||||
h5_openw_par (
|
||||
const char *file_name,
|
||||
MPI_Fint *fcomm,
|
||||
@@ -173,10 +146,10 @@ h5_openw_par (
|
||||
) {
|
||||
|
||||
MPI_Comm ccomm = MPI_Comm_f2c (*fcomm);
|
||||
char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name );
|
||||
char *flags2 = _H5Part_strdupfor2c ( flags, l_flags );
|
||||
char *file_name2 = h5_strdupfor2c ( file_name, l_file_name );
|
||||
char *flags2 = h5_strdupfor2c ( flags, l_flags );
|
||||
|
||||
h5_int32_t fbits = H5_O_WRONLY | _H5Part_flagsfor2c ( flags2 );
|
||||
h5_int32_t fbits = H5_O_WRONLY | _flagsfor2c ( flags2 );
|
||||
|
||||
h5_file_t* f = H5OpenFile ( file_name2, fbits, ccomm );
|
||||
|
||||
@@ -185,7 +158,7 @@ h5_openw_par (
|
||||
return (h5_int64_t)(size_t)f;
|
||||
}
|
||||
|
||||
h5_int64_t
|
||||
h5_err_t
|
||||
h5pt_opena_par_align (
|
||||
const char *file_name,
|
||||
MPI_Fint *fcomm,
|
||||
@@ -196,10 +169,10 @@ h5pt_opena_par_align (
|
||||
) {
|
||||
|
||||
MPI_Comm ccomm = MPI_Comm_f2c (*fcomm);
|
||||
char *file_name2 = _H5Part_strdupfor2c ( file_name, l_file_name );
|
||||
char *flags2 = _H5Part_strdupfor2c ( flags, l_flags );
|
||||
char *file_name2 = h5_strdupfor2c ( file_name, l_file_name );
|
||||
char *flags2 = h5_strdupfor2c ( flags, l_flags );
|
||||
|
||||
h5_int32_t fbits = H5_O_APPEND | _H5Part_flagsfor2c ( flags2 );
|
||||
h5_int32_t fbits = H5_O_APPEND | _flagsfor2c ( flags2 );
|
||||
|
||||
h5_file_t* f = H5OpenFile( file_name2, fbits, ccomm );
|
||||
|
||||
@@ -218,7 +191,16 @@ h5_close (
|
||||
return H5CloseFile ( filehandle );
|
||||
}
|
||||
|
||||
h5_int64_t
|
||||
h5_err_t
|
||||
h5_check (
|
||||
const h5_int64_t *f
|
||||
) {
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5CheckFile ( filehandle );
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5_setstep (
|
||||
const h5_int64_t *f,
|
||||
h5_int64_t *step ) {
|
||||
@@ -228,7 +210,7 @@ h5_setstep (
|
||||
return H5SetStep ( filehandle, (*step)-1 );
|
||||
}
|
||||
|
||||
h5_int64_t
|
||||
h5_err_t
|
||||
h5_getnsteps (
|
||||
const h5_int64_t *f
|
||||
) {
|
||||
@@ -238,7 +220,7 @@ h5_getnsteps (
|
||||
return H5GetNumSteps ( filehandle );
|
||||
}
|
||||
|
||||
h5_int64_t
|
||||
h5_err_t
|
||||
h5_set_verbosity_level (
|
||||
const h5_int64_t *level
|
||||
) {
|
||||
@@ -0,0 +1,249 @@
|
||||
!!!!!!!! Reading and Writing Attributes !!!!!!!!
|
||||
|
||||
!> \ingroup h5_attrib_f
|
||||
!! See \ref H5WriteFileAttribString
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5_writefileattrib_string (filehandle,attrib_name,attrib_value)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
CHARACTER(LEN=*), INTENT(IN) :: value !< the string value to store
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5_attrib_f
|
||||
!! See \ref H5WriteStepAttribString
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5_writestepattrib_string (filehandle,attrib_name,attrib_value)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
CHARACTER(LEN=*), INTENT(IN) :: value !< the string value to store
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5_attrib_f
|
||||
!! See \ref H5ReadFileAttribString
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5_readfileattrib_string (filehandle,attrib_name,attrib_value)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
CHARACTER(LEN=*), INTENT(OUT) :: value !< buffer to read the string value into
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5_attrib_f
|
||||
!! See \ref H5ReadStepAttribString
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5_readstepattrib_string (filehandle,attrib_name,attrib_value)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
CHARACTER(LEN=*), INTENT(OUT) :: value !< buffer to read the string value into
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5_attrib_f
|
||||
!! See \ref H5WriteFileAttribFloat64
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5_writefileattrib_r8 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
REAL*8, INTENT(IN) :: data(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: nelem !< the number of elements in the array
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5_attrib_f
|
||||
!! See \ref H5ReadFileAttribFloat64
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5_readfileattrib_r8 ( filehandle, name, data )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
REAL*8, INTENT(OUT) :: data(*) !< buffer to read value into
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5_attrib_f
|
||||
!! See \ref H5WriteFileAttribFloat32
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5_writefileattrib_r4 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
REAL*4, INTENT(IN) :: data(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: nelem !< the number of elements in the array
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5_attrib_f
|
||||
!! See \ref H5ReadFileAttribFloat32
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5_readfileattrib_r4 ( filehandle, name, data )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
REAL*4, INTENT(OUT) :: data(*) !< buffer to read value into
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5_attrib_f
|
||||
!! See \ref H5WriteFileAttribInt64
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5_writefileattrib_i8 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
INTEGER*8, INTENT(IN) :: data(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: nelem !< the number of elements in the array
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5_attrib_f
|
||||
!! See \ref H5ReadFileAttribInt64
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5_readfileattrib_i8 ( filehandle, name, data )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
INTEGER*8, INTENT(OUT) :: data(*) !< buffer to read value into
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5_attrib_f
|
||||
!! See \ref H5WriteFileAttribInt32
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5_writefileattrib_i4 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
INTEGER*4, INTENT(IN) :: data(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: nelem !< the number of elements in the array
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5_attrib_f
|
||||
!! See \ref H5ReadFileAttribInt32
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5_readfileattrib_i4 ( filehandle, name, data )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
INTEGER*4, INTENT(OUT) :: data(*) !< buffer to read value into
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5_attrib_f
|
||||
!! See \ref H5WriteStepAttribFloat64
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5_writestepattrib_r8 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
REAL*8, INTENT(IN) :: data(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: nelem !< the number of elements in the array
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5_attrib_f
|
||||
!! See \ref H5ReadStepAttribFloat64
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5_readstepattrib_r8 ( filehandle, name, data )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
REAL*8, INTENT(OUT) :: data(*) !< buffer to read value into
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5_attrib_f
|
||||
!! See \ref H5WriteStepAttribFloat32
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5_writestepattrib_r4 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
REAL*4, INTENT(IN) :: data(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: nelem !< the number of elements in the array
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5_attrib_f
|
||||
!! See \ref H5ReadStepAttribFloat32
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5_readstepattrib_r4 ( filehandle, name, data )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
REAL*4, INTENT(OUT) :: data(*) !< buffer to read value into
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5_attrib_f
|
||||
!! See \ref H5WriteStepAttribInt64
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5_writestepattrib_i8 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
INTEGER*8, INTENT(IN) :: data(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: nelem !< the number of elements in the array
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5_attrib_f
|
||||
!! See \ref H5ReadStepAttribInt64
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5_readstepattrib_i8 ( filehandle, name, data )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
INTEGER*8, INTENT(OUT) :: data(*) !< buffer to read value into
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5_attrib_f
|
||||
!! See \ref H5WriteStepAttribInt32
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5_writestepattrib_i4 ( filehandle, field_name, attrib_name, attrib_value, attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
INTEGER*4, INTENT(IN) :: data(*) !< the array of data to write into the attribute
|
||||
INTEGER*8, INTENT(IN) :: nelem !< the number of elements in the array
|
||||
END FUNCTION
|
||||
|
||||
!< \ingroup h5_attrib_f
|
||||
!! See \ref H5ReadStepAttribInt32
|
||||
!! \return 0 on success or error code
|
||||
!>
|
||||
INTEGER*8 FUNCTION h5_readstepattrib_i4 ( filehandle, name, data )
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the attribute
|
||||
INTEGER*4, INTENT(OUT) :: data(*) !< buffer to read value into
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5_attrib_f
|
||||
!! See \ref H5GetNumStepAttribs
|
||||
!! \return number of attributes or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5_getnstepattribs (filehandle)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5_attrib_f
|
||||
!! See \ref H5GetNumFileAttribs
|
||||
!! \return number of attributes or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5_getnfileattribs (filehandle)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5_attrib_f
|
||||
!! See \ref H5GetStepAttribInfo
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5_getstepattribinfo (filehandle,idx,attrib_name,attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
INTEGER*8, INTENT(IN) :: index !< index of the attribute to query (starting from 0)
|
||||
CHARACTER(LEN=*), INTENT(OUT) :: name !< buffer to read the attribute name into
|
||||
INTEGER*8, INTENT(OUT) :: nelem !< number of elements in the attribute's array
|
||||
END FUNCTION
|
||||
|
||||
!> \ingroup h5_attrib_f
|
||||
!! See \ref H5GetFileAttribInfo
|
||||
!! \return 0 on success or error code
|
||||
!<
|
||||
INTEGER*8 FUNCTION h5_getfileattribinfo (filehandle,idx,attrib_name,attrib_nelem)
|
||||
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
|
||||
INTEGER*8, INTENT(IN) :: index !< index of the attribute to query (starting from 0)
|
||||
CHARACTER(LEN=*), INTENT(OUT) :: name !< buffer to read the attribute name into
|
||||
INTEGER*8, INTENT(OUT) :: nelem !< number of elements in the attribute's array
|
||||
END FUNCTION
|
||||
|
||||
|
||||
@@ -0,0 +1,592 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "H5hut.h"
|
||||
#include "Underscore.h"
|
||||
|
||||
#if defined(F77_SINGLE_UNDERSCORE)
|
||||
#define F77NAME(a,b) a
|
||||
#elif defined(F77_CRAY_UNDERSCORE)
|
||||
#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 h5_writefileattrib_string F77NAME ( \
|
||||
h5_writefileattrib_string_, \
|
||||
H5_writefileattrib_string )
|
||||
#define h5_writestepattrib_string F77NAME ( \
|
||||
h5_writestepattrib_string_, \
|
||||
H5_WRITESTEPATTRIB_STRING )
|
||||
#define h5_readstepattrib_string F77NAME ( \
|
||||
h5_readstepattrib_string_, \
|
||||
h5_READSTEPATTRIB_STRING )
|
||||
#define h5_readfileattrib_string F77NAME ( \
|
||||
h5_readfileattrib_string_, \
|
||||
h5_READFILEATTRIB_STRING )
|
||||
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5_writefileattrib_string (
|
||||
const h5_int64_t *f,
|
||||
const char *attrib_name,
|
||||
const char *attrib_value,
|
||||
const int l_attrib_name,
|
||||
const int l_attrib_value
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *attrib_name2 = h5_strdupfor2c (attrib_name,l_attrib_name);
|
||||
char *attrib_value2= h5_strdupfor2c (attrib_value,l_attrib_value);
|
||||
|
||||
h5_err_t herr = H5WriteFileAttribString (
|
||||
filehandle, attrib_name2, attrib_value2 );
|
||||
|
||||
free ( attrib_name2 );
|
||||
free ( attrib_value2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5_writestepattrib_string (
|
||||
const h5_int64_t *f,
|
||||
const char *attrib_name,
|
||||
const char *attrib_value,
|
||||
const int l_attrib_name,
|
||||
const int l_attrib_value
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *attrib_name2 = h5_strdupfor2c (attrib_name,l_attrib_name);
|
||||
char *attrib_value2= h5_strdupfor2c (attrib_value,l_attrib_value);
|
||||
|
||||
h5_err_t herr = H5WriteStepAttribString (
|
||||
filehandle, attrib_name2, attrib_value2 );
|
||||
|
||||
free ( attrib_name2 );
|
||||
free ( attrib_value2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
|
||||
h5_err_t
|
||||
h5_readstepattrib_string (
|
||||
const h5_int64_t *f,
|
||||
const char *attrib_name,
|
||||
char *attrib_value,
|
||||
const int l_attrib_name,
|
||||
const int l_attrib_value
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char * attrib_name2 = h5_strdupfor2c (attrib_name,l_attrib_name);
|
||||
|
||||
h5_err_t herr = H5ReadStepAttribString (
|
||||
filehandle, attrib_name2, attrib_value );
|
||||
|
||||
h5_strc2for ( attrib_value, l_attrib_value );
|
||||
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5_readfileattrib_string (
|
||||
const h5_int64_t *f,
|
||||
const char *attrib_name,
|
||||
char *attrib_value,
|
||||
const int l_attrib_name,
|
||||
const int l_attrib_value
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char * attrib_name2 = h5_strdupfor2c (attrib_name,l_attrib_name);
|
||||
|
||||
h5_err_t herr = H5ReadFileAttribString (
|
||||
filehandle, attrib_name2, attrib_value );
|
||||
|
||||
h5_strc2for ( attrib_value, l_attrib_value );
|
||||
|
||||
free ( attrib_name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5_writefileattrib_r8 F77NAME ( \
|
||||
h5_writefileattrib_r8_, \
|
||||
h5_WRITEFILEATTRIB_R8 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5_writefileattrib_r8 (
|
||||
h5_int64_t *f,
|
||||
const char *name,
|
||||
const h5_float64_t *data,
|
||||
const h5_float64_t *nelem,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_err_t herr = H5WriteFileAttribFloat64(
|
||||
filehandle, name2, data, *nelem);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5_writefileattrib_r8 F77NAME ( \
|
||||
h5_writefileattrib_r8_, \
|
||||
h5_WRITEFILEATTRIB_R8 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5_readfileattrib_r8 (
|
||||
h5_int64_t *f,
|
||||
const char *name,
|
||||
h5_float64_t *data,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_err_t herr = H5ReadFileAttribFloat64(filehandle, name2, data);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5_writefileattrib_r4 F77NAME ( \
|
||||
h5_writefileattrib_r4_, \
|
||||
h5_WRITEFILEATTRIB_R4 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5_writefileattrib_r4 (
|
||||
h5_int64_t *f,
|
||||
const char *name,
|
||||
const h5_float32_t *data,
|
||||
const h5_float32_t *nelem,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_err_t herr = H5WriteFileAttribFloat32(
|
||||
filehandle, name2, data, *nelem);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5_writefileattrib_r4 F77NAME ( \
|
||||
h5_writefileattrib_r4_, \
|
||||
h5_WRITEFILEATTRIB_R4 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5_readfileattrib_r4 (
|
||||
h5_int64_t *f,
|
||||
const char *name,
|
||||
h5_float32_t *data,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_err_t herr = H5ReadFileAttribFloat32(filehandle, name2, data);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5_writefileattrib_i8 F77NAME ( \
|
||||
h5_writefileattrib_i8_, \
|
||||
h5_WRITEFILEATTRIB_I8 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5_writefileattrib_i8 (
|
||||
h5_int64_t *f,
|
||||
const char *name,
|
||||
const h5_int64_t *data,
|
||||
const h5_int64_t *nelem,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_err_t herr = H5WriteFileAttribInt64(filehandle, name2, data, *nelem);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5_writefileattrib_i8 F77NAME ( \
|
||||
h5_writefileattrib_i8_, \
|
||||
h5_WRITEFILEATTRIB_I8 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5_readfileattrib_i8 (
|
||||
h5_int64_t *f,
|
||||
const char *name,
|
||||
h5_int64_t *data,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_err_t herr = H5ReadFileAttribInt64(filehandle, name2, data);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5_writefileattrib_i4 F77NAME ( \
|
||||
h5_writefileattrib_i4_, \
|
||||
h5_WRITEFILEATTRIB_I4 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5_writefileattrib_i4 (
|
||||
h5_int64_t *f,
|
||||
const char *name,
|
||||
const h5_int32_t *data,
|
||||
const h5_int32_t *nelem,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_err_t herr = H5WriteFileAttribInt32(filehandle, name2, data, *nelem);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5_writefileattrib_i4 F77NAME ( \
|
||||
h5_writefileattrib_i4_, \
|
||||
h5_WRITEFILEATTRIB_I4 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5_readfileattrib_i4 (
|
||||
h5_int64_t *f,
|
||||
const char *name,
|
||||
h5_int32_t *data,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_err_t herr = H5ReadFileAttribInt32(filehandle, name2, data);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5_writestepattrib_r8 F77NAME ( \
|
||||
h5_writestepattrib_r8_, \
|
||||
h5_WRITESTEPATTRIB_R8 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5_writestepattrib_r8 (
|
||||
h5_int64_t *f,
|
||||
const char *name,
|
||||
const h5_float64_t *data,
|
||||
const h5_float64_t *nelem,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_err_t herr = H5WriteStepAttribFloat64(
|
||||
filehandle, name2, data, *nelem);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5_writestepattrib_r8 F77NAME ( \
|
||||
h5_writestepattrib_r8_, \
|
||||
h5_WRITESTEPATTRIB_R8 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5_readstepattrib_r8 (
|
||||
h5_int64_t *f,
|
||||
const char *name,
|
||||
h5_float64_t *data,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_err_t herr = H5ReadStepAttribFloat64(filehandle, name2, data);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5_writestepattrib_r4 F77NAME ( \
|
||||
h5_writestepattrib_r4_, \
|
||||
h5_WRITESTEPATTRIB_R4 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5_writestepattrib_r4 (
|
||||
h5_int64_t *f,
|
||||
const char *name,
|
||||
const h5_float32_t *data,
|
||||
const h5_float32_t *nelem,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_err_t herr = H5WriteStepAttribFloat32(
|
||||
filehandle, name2, data, *nelem);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5_writestepattrib_r4 F77NAME ( \
|
||||
h5_writestepattrib_r4_, \
|
||||
h5_WRITESTEPATTRIB_R4 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5_readstepattrib_r4 (
|
||||
h5_int64_t *f,
|
||||
const char *name,
|
||||
h5_float32_t *data,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_err_t herr = H5ReadStepAttribFloat32(filehandle, name2, data);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5_writestepattrib_i8 F77NAME ( \
|
||||
h5_writestepattrib_i8_, \
|
||||
h5_WRITESTEPATTRIB_I8 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5_writestepattrib_i8 (
|
||||
h5_int64_t *f,
|
||||
const char *name,
|
||||
const h5_int64_t *data,
|
||||
const h5_int64_t *nelem,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_err_t herr = H5WriteStepAttribInt64(filehandle, name2, data, *nelem);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5_writestepattrib_i8 F77NAME ( \
|
||||
h5_writestepattrib_i8_, \
|
||||
h5_WRITESTEPATTRIB_I8 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5_readstepattrib_i8 (
|
||||
h5_int64_t *f,
|
||||
const char *name,
|
||||
h5_int64_t *data,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_err_t herr = H5ReadStepAttribInt64(filehandle, name2, data);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5_writestepattrib_i4 F77NAME ( \
|
||||
h5_writestepattrib_i4_, \
|
||||
h5_WRITESTEPATTRIB_I4 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5_writestepattrib_i4 (
|
||||
h5_int64_t *f,
|
||||
const char *name,
|
||||
const h5_int32_t *data,
|
||||
const h5_int32_t *nelem,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_err_t herr = H5WriteStepAttribInt32(filehandle, name2, data, *nelem);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
#define h5_writestepattrib_i4 F77NAME ( \
|
||||
h5_writestepattrib_i4_, \
|
||||
h5_WRITESTEPATTRIB_I4 )
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5_readstepattrib_i4 (
|
||||
h5_int64_t *f,
|
||||
const char *name,
|
||||
h5_int32_t *data,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
char *name2 = h5_strdupfor2c ( name, l_name );
|
||||
|
||||
h5_err_t herr = H5ReadStepAttribInt32(filehandle, name2, data);
|
||||
|
||||
free ( name2 );
|
||||
return herr;
|
||||
}
|
||||
|
||||
/*** QUERY ***/
|
||||
|
||||
#if ! defined(F77_NO_UNDERSCORE)
|
||||
|
||||
#define h5_getnstepattribs F77NAME ( \
|
||||
h5_getnstepattribs_, \
|
||||
h5_GETNSTEPATTRIBS )
|
||||
#define h5_getnfileattribs F77NAME ( \
|
||||
h5_getnfileattribs_, \
|
||||
h5_GETNFILEATTRIBS )
|
||||
#define h5_getstepattribinfo F77NAME ( \
|
||||
h5_getstepattribinfo_, \
|
||||
h5_GETSTEPATTRIBINFO )
|
||||
#define h5_getfileattribinfo F77NAME ( \
|
||||
h5_getfileattribinfo_, \
|
||||
h5_GETFILEATTRIBINFO )
|
||||
|
||||
#endif
|
||||
|
||||
h5_err_t
|
||||
h5_getnstepattribs (
|
||||
const h5_int64_t *f
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5GetNumStepAttribs ( filehandle );
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5_getnfileattribs (
|
||||
const h5_int64_t *f
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
|
||||
return H5GetNumFileAttribs ( filehandle );
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5_getstepattribinfo (
|
||||
const h5_int64_t *f,
|
||||
const h5_int64_t *idx,
|
||||
char *name,
|
||||
h5_int64_t *nelem,
|
||||
const int l_name
|
||||
) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
h5_int64_t type;
|
||||
|
||||
h5_err_t herr = H5GetStepAttribInfo (
|
||||
filehandle, *idx, name, l_name, &type, nelem);
|
||||
|
||||
h5_strc2for( name, l_name );
|
||||
return herr;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5_getfileattribinfo (
|
||||
const h5_int64_t *f,
|
||||
const h5_int64_t *idx,
|
||||
char *name,
|
||||
h5_int64_t *nelem,
|
||||
const int l_name ) {
|
||||
|
||||
h5_file_t *filehandle = (h5_file_t*)(size_t)*f;
|
||||
h5_int64_t type;
|
||||
|
||||
h5_err_t herr = H5GetFileAttribInfo (
|
||||
filehandle, *idx, name, l_name, &type, nelem);
|
||||
|
||||
h5_strc2for( name, l_name );
|
||||
return herr;
|
||||
}
|
||||
|
||||
+16
-30
@@ -7,24 +7,22 @@ LIBS = $(HDFLIB) @MPILIB@
|
||||
|
||||
INCLUDES = -I../include -I@HDF5ROOT@/include @MPIINC@
|
||||
|
||||
INCLUDES = -I@HDF5ROOT@/include @MPIINC@
|
||||
F90_FILES = H5.f90 \
|
||||
H5_attribs.f90 \
|
||||
H5Part.f90 \
|
||||
H5Block.f90 \
|
||||
H5Block_readwrite.f90
|
||||
|
||||
EXTRA_HEADERS = H5PartPrivate.h \
|
||||
H5BlockPrivate.h \
|
||||
H5MultiBlockPrivate.h \
|
||||
H5PartAttrib.h
|
||||
EXTRA_HEADERS = ../include/H5hut.h
|
||||
|
||||
# Extra files that I wish to include in the dist tar ball.
|
||||
EXTRA_DIST = TestUnderscoreC.c \
|
||||
TestUnderscore.f \
|
||||
H5Part.f90 \
|
||||
H5PartAttrib.f90 \
|
||||
H5Block.f90 \
|
||||
H5BlockReadWrite.f90 \
|
||||
$(EXTRA_HEADERS)
|
||||
$(F90_FILES)
|
||||
|
||||
# Files that I don't want to include in the dist tar ball
|
||||
nodist_include_HEADERS = ../include/H5PartF.h @UNDERSCORE_H@
|
||||
#nodist_include_HEADERS = ../include/H5hutF.h @UNDERSCORE_H@
|
||||
nodist_include_HEADERS = ../include/H5hutF.h
|
||||
|
||||
# What to build... Will be determined by configure script.
|
||||
lib_LIBRARIES = @FORTRAN_LIB@
|
||||
@@ -32,27 +30,15 @@ lib_LIBRARIES = @FORTRAN_LIB@
|
||||
# Listing of all possible targets that I may build.
|
||||
EXTRA_LIBRARIES = libH5hutF.a
|
||||
|
||||
# Header files that I wish to install in $(prefix)/include
|
||||
include_HEADERS = \
|
||||
../include/H5hut.h \
|
||||
../include/H5.h \
|
||||
../include/H5_inquiry.h \
|
||||
../include/H5_attribs.h \
|
||||
../include/H5Block.h \
|
||||
../include/H5Fed.h \
|
||||
../include/H5Fed_store.h \
|
||||
../include/H5Fed_tags.h \
|
||||
../include/H5Part.h
|
||||
libH5hutF_a_SOURCES = H5_F.c \
|
||||
H5_attribs_F.c \
|
||||
H5Part_F.c \
|
||||
H5Block_F.c \
|
||||
H5Block_readwrite_F.c
|
||||
|
||||
libH5hutF_a_SOURCES = $(libH5Part_a_SOURCES) \
|
||||
H5PartF.c \
|
||||
H5PartAttribF.c \
|
||||
H5BlockF.c \
|
||||
H5BlockReadWriteF.c
|
||||
all: ../include/H5hutF.h ../lib/libH5hutF.a
|
||||
|
||||
all: ../include/H5PartF.h ./lib/libH5hutF.a
|
||||
|
||||
../include/H5PartF.h: H5Part.f90 H5PartAttrib.f90 H5Block.f90 H5BlockReadWrite.f90
|
||||
../include/H5hutF.h: $(F90_FILES)
|
||||
awk '/INTEGER\*8 FUNCTION/{print "\t" $$1 " " $$3}' $^ >$@
|
||||
|
||||
../lib/libH5hutF.a: libH5hutF.a
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
# test level Makefile.am
|
||||
|
||||
SUBDIRS = h5core C
|
||||
SUBDIRS = h5core C Fortran
|
||||
|
||||
@@ -17,8 +17,9 @@ EXTRA_HEADERS = \
|
||||
../include/h5core/h5_readwrite.h \
|
||||
../include/h5core/h5_types.h \
|
||||
../include/h5core/h5u_readwrite.h \
|
||||
../include/h5core/h5u_model.h \
|
||||
../include/h5core/h5b_model.h \
|
||||
../include/h5core/h5b_readwrite.h \
|
||||
../include/h5core/h5u_model.h \
|
||||
../include/h5core/h5b_model.h \
|
||||
../include/h5core/h5b_attribs.h \
|
||||
../include/h5core/h5t_adjacencies.h \
|
||||
../include/h5core/h5t_inquiry.h \
|
||||
@@ -39,7 +40,7 @@ EXTRA_HEADERS = \
|
||||
h5_syscall_private.h \
|
||||
h5u_errorhandling_private.h \
|
||||
h5b_errorhandling_private.h \
|
||||
h5b_model_private.h \
|
||||
h5b_model_private.h \
|
||||
h5t_adjacencies_tetm_private.h \
|
||||
h5t_adjacencies_trim_private.h \
|
||||
h5t_consts_private.h \
|
||||
@@ -86,8 +87,9 @@ libH5Core_a_SOURCES = \
|
||||
h5_readwrite.c \
|
||||
h5_syscall.c \
|
||||
h5u_readwrite.c \
|
||||
h5b_readwrite.c \
|
||||
h5u_model.c \
|
||||
h5b_model.c \
|
||||
h5b_model.c \
|
||||
h5b_attribs.c \
|
||||
h5t_adjacencies.c \
|
||||
h5t_adjacencies_tetm.c \
|
||||
|
||||
@@ -1166,6 +1166,21 @@ h5priv_close_hdf5_attribute (
|
||||
}
|
||||
|
||||
/****** L i n k **************************************************************/
|
||||
h5_err_t
|
||||
h5priv_hdf5_link_exists (
|
||||
h5_file_t* const f,
|
||||
const hid_t loc_id,
|
||||
const char* name
|
||||
) {
|
||||
htri_t exists = H5Lexists ( loc_id, name, H5P_DEFAULT );
|
||||
if (exists < 0 )
|
||||
return h5_error (f,
|
||||
H5_ERR_HDF5,
|
||||
"Cannot query link %s/%s.",
|
||||
h5_get_objname (loc_id), name);
|
||||
return exists;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5priv_delete_hdf5_link (
|
||||
h5_file_t* const f,
|
||||
|
||||
@@ -68,7 +68,6 @@ h5priv_close_hdf5_dataset (
|
||||
const hid_t dataset_id
|
||||
);
|
||||
|
||||
|
||||
h5_err_t
|
||||
h5priv_write_hdf5_dataset (
|
||||
h5_file_t* const f,
|
||||
@@ -420,6 +419,13 @@ h5priv_get_base_type_name (
|
||||
);
|
||||
|
||||
/*** link ***/
|
||||
h5_err_t
|
||||
h5priv_hdf5_link_exists (
|
||||
h5_file_t* const f,
|
||||
const hid_t loc_id,
|
||||
const char* name
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
h5priv_delete_hdf5_link (
|
||||
h5_file_t* const f,
|
||||
|
||||
@@ -44,7 +44,7 @@ h5priv_error_handler (
|
||||
hid_t estack_id,
|
||||
void* __f
|
||||
) {
|
||||
if (h5_get_debug_level () >= 5) {
|
||||
if (h5_get_debuglevel() >= 5) {
|
||||
H5Eprint (estack_id, stderr);
|
||||
}
|
||||
return 0;
|
||||
@@ -105,7 +105,7 @@ h5bpriv_open_file (
|
||||
TRY( b->write_layout = h5priv_alloc (f, NULL, size) );
|
||||
|
||||
size_t n = sizeof (struct h5b_partition) / sizeof (h5_int64_t);
|
||||
TRY( h5priv_mpi_type_contiguous(f,
|
||||
TRY( h5priv_mpi_type_contiguous(f,
|
||||
n, MPI_LONG_LONG, &b->partition_mpi_t) );
|
||||
|
||||
b->shape = -1;
|
||||
@@ -347,7 +347,7 @@ h5bpriv_close_file (
|
||||
TRY( h5priv_close_hdf5_dataspace (f, b->diskshape) );
|
||||
TRY( h5priv_close_hdf5_dataspace (f, b->memshape) );
|
||||
TRY( h5priv_close_hdf5_property (f, b->dcreate_prop) );
|
||||
TRY( h5priv_mpi_type_free (f, b->partition_mpi_t) );
|
||||
TRY( h5priv_mpi_type_free (f, &b->partition_mpi_t) );
|
||||
free (f->b);
|
||||
f->b = NULL;
|
||||
|
||||
@@ -426,7 +426,7 @@ h5_get_stepname_fmt (
|
||||
h5_file_t* const f, /*!< Handle to file */
|
||||
char* name, /*!< OUT: Prefix */
|
||||
int l_name, /*!< length of buffer name */
|
||||
int* width /*!< OUT: Width of the number */
|
||||
int* width /*!< OUT: Width of the number */
|
||||
) {
|
||||
return h5_error_not_implemented (f, __FILE__, __func__, __LINE__);
|
||||
}
|
||||
@@ -504,7 +504,7 @@ h5_has_step (
|
||||
h5_id_t stepno /*!< step number to check */
|
||||
) {
|
||||
char name[128];
|
||||
sprintf (name, "%s#%0*ld",
|
||||
sprintf (name, "%s#%0*ld",
|
||||
f->prefix_step_name, f->width_step_idx, (long)stepno);
|
||||
return (H5Gget_info_by_name (f->file, name, NULL, H5P_DEFAULT) >= 0);
|
||||
}
|
||||
@@ -518,7 +518,7 @@ h5_has_step (
|
||||
*/
|
||||
h5_err_t
|
||||
h5_start_traverse_steps (
|
||||
h5_file_t* const f /*!< file handle */
|
||||
h5_file_t* const f /*!< file handle */
|
||||
) {
|
||||
return h5_error_not_implemented (f, __FILE__, __func__, __LINE__);
|
||||
}
|
||||
@@ -536,3 +536,31 @@ h5_traverse_steps (
|
||||
) {
|
||||
return h5_error_not_implemented (f, __FILE__, __func__, __LINE__);
|
||||
}
|
||||
|
||||
char *
|
||||
h5_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 *
|
||||
h5_strc2for (
|
||||
char * const str,
|
||||
const ssize_t l_str
|
||||
) {
|
||||
|
||||
size_t len = strlen ( str );
|
||||
memset ( str+len, ' ', l_str-len );
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
|
||||
@@ -71,3 +71,5 @@ h5priv_tfind (
|
||||
}
|
||||
return ptr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -21,7 +21,28 @@ h5_write_field_attrib (
|
||||
attrib_value,
|
||||
attrib_nelem) );
|
||||
|
||||
return h5bpriv_close_field_group(f);
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5_read_field_attrib (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: field name */
|
||||
const char *attrib_name, /*!< IN: attribute name */
|
||||
const h5_int64_t attrib_type, /*!< IN: attribute type */
|
||||
void *buffer /*!< OUT: attribute value */
|
||||
) {
|
||||
|
||||
TRY( h5bpriv_open_field_group(f, field_name) );
|
||||
|
||||
TRY( h5_read_attrib (
|
||||
f,
|
||||
H5_ATTRIB_FIELD,
|
||||
attrib_name,
|
||||
attrib_type,
|
||||
buffer) );
|
||||
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
h5_ssize_t
|
||||
@@ -34,7 +55,6 @@ h5b_get_num_field_attribs (
|
||||
|
||||
TRY( h5bpriv_open_field_group(f, field_name) );
|
||||
TRY( n = h5priv_get_num_hdf5_attribute(f, f->b->field_gid ) );
|
||||
TRY( h5bpriv_close_field_group(f) );
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
+29
-28
@@ -458,14 +458,8 @@ _dissolve_ghostzones (
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_private
|
||||
|
||||
\internal
|
||||
|
||||
*/
|
||||
static h5_err_t
|
||||
_release_hyperslab (
|
||||
h5_err_t
|
||||
h5bpriv_release_hyperslab (
|
||||
h5_file_t *const f /*!< IN: file handle */
|
||||
) {
|
||||
if ( f->b->shape > 0 ) {
|
||||
@@ -483,8 +477,8 @@ _release_hyperslab (
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
static h5_err_t
|
||||
_open_block_group (
|
||||
h5_err_t
|
||||
h5bpriv_open_block_group (
|
||||
h5_file_t *const f /*!< IN: file handle */
|
||||
) {
|
||||
|
||||
@@ -497,12 +491,29 @@ _open_block_group (
|
||||
|
||||
if ( b->block_gid < 0 ) {
|
||||
TRY( b->block_gid = h5priv_open_hdf5_group(f,
|
||||
f->step_gid, H5_BLOCKNAME) );
|
||||
f->step_gid, H5_BLOCKNAME) );
|
||||
}
|
||||
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5bpriv_have_field_group (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *name
|
||||
) {
|
||||
|
||||
char name2[H5_DATANAME_LEN];
|
||||
h5_normalize_dataset_name(f, name, name2);
|
||||
|
||||
TRY( h5bpriv_open_block_group ( f ) );
|
||||
|
||||
h5_err_t exists;
|
||||
TRY( exists = h5priv_hdf5_have_link(f, f->b->block_gid, name2) );
|
||||
|
||||
return exists;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5bpriv_open_field_group (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
@@ -511,22 +522,14 @@ h5bpriv_open_field_group (
|
||||
|
||||
char name2[H5_DATANAME_LEN];
|
||||
h5_normalize_dataset_name(f, name, name2);
|
||||
|
||||
TRY( _open_block_group ( f ) );
|
||||
TRY( f->b->field_gid = h5priv_open_hdf5_group(f, f->b->block_gid, name2) );
|
||||
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5bpriv_close_field_group (
|
||||
h5_file_t *const f /*!< IN: file handle */
|
||||
) {
|
||||
|
||||
|
||||
if ( f->b->field_gid >= 0 ) {
|
||||
TRY( h5priv_close_hdf5_group(f, f->b->field_gid) );
|
||||
}
|
||||
|
||||
TRY( h5bpriv_open_block_group ( f ) );
|
||||
TRY( f->b->field_gid = h5priv_open_hdf5_group(f, f->b->block_gid, name2) );
|
||||
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -618,8 +621,6 @@ h5b_3d_get_chunk (
|
||||
(long long)dims[1],
|
||||
(long long)dims[2] );
|
||||
|
||||
TRY( h5bpriv_close_field_group( f ) );
|
||||
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -703,7 +704,7 @@ h5b_get_num_fields (
|
||||
h5_file_t *const f /*!< IN: File handle */
|
||||
) {
|
||||
|
||||
TRY( _open_block_group(f) );
|
||||
TRY( h5bpriv_open_block_group(f) );
|
||||
return h5priv_get_num_objs_in_hdf5_group( f, f->b->block_gid );
|
||||
}
|
||||
|
||||
@@ -752,7 +753,7 @@ h5b_get_field_info_by_name (
|
||||
TRY( h5priv_close_hdf5_dataspace(f, dataspace_id) );
|
||||
TRY( h5priv_close_hdf5_dataset(f, dataset_id) );
|
||||
|
||||
return h5bpriv_close_field_group(f);
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
@@ -767,7 +768,7 @@ h5b_get_field_info (
|
||||
h5_int64_t *type /*!< OUT: datatype */
|
||||
) {
|
||||
|
||||
TRY( _open_block_group(f) );
|
||||
TRY( h5bpriv_open_block_group(f) );
|
||||
TRY( h5priv_get_hdf5_objname_by_idx(
|
||||
f,
|
||||
f->b->block_gid,
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
#ifndef __H5B_MODEL_PRIVATE_H
|
||||
#define __H5B_MODEL_PRIVATE_H
|
||||
|
||||
h5_err_t
|
||||
h5bpriv_have_field_group (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *name
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
h5bpriv_open_field_group (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
@@ -8,7 +14,12 @@ h5bpriv_open_field_group (
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
h5bpriv_close_field_group (
|
||||
h5bpriv_open_block_group (
|
||||
h5_file_t *const f /*!< IN: file handle */
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
h5bpriv_release_hyperslab (
|
||||
h5_file_t *const f /*!< IN: file handle */
|
||||
);
|
||||
|
||||
|
||||
+232
-266
@@ -1,225 +1,51 @@
|
||||
#include "h5core/h5_core.h"
|
||||
#include "h5_core_private.h"
|
||||
|
||||
static h5_err_t
|
||||
_create_block_group (
|
||||
const h5_file_t *const f /*!< IN: file handle */
|
||||
h5_file_t *const f /*!< IN: file handle */
|
||||
) {
|
||||
|
||||
herr_t herr;
|
||||
struct h5b_fdata *b = f->b;
|
||||
h5_err_t exists;
|
||||
TRY( exists = h5priv_hdf5_link_exists(f, f->step_gid, H5_BLOCKNAME) );
|
||||
|
||||
if ( b->blockgroup > 0 ) {
|
||||
herr = H5Gclose ( b->blockgroup );
|
||||
if ( herr < 0 ) return HANDLE_H5G_CLOSE_ERR;
|
||||
f->b->blockgroup = -1;
|
||||
if (exists > 0) {
|
||||
TRY( h5bpriv_open_block_group(f) );
|
||||
} else {
|
||||
TRY( f->b->block_gid = h5priv_create_hdf5_group(f,
|
||||
f->step_gid, H5_BLOCKNAME) );
|
||||
}
|
||||
|
||||
herr = H5Gcreate (
|
||||
f->timegroup,
|
||||
H5BLOCK_GROUPNAME_BLOCK,
|
||||
#ifndef H5_USE_16_API
|
||||
H5P_DEFAULT,
|
||||
H5P_DEFAULT,
|
||||
H5P_DEFAULT
|
||||
#else
|
||||
0
|
||||
#endif
|
||||
);
|
||||
if ( herr < 0 ) return HANDLE_H5G_CREATE_ERR ( H5BLOCK_GROUPNAME_BLOCK );
|
||||
|
||||
f->b->blockgroup = herr;
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_private
|
||||
|
||||
\internal
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_int64_t
|
||||
_H5Block_create_field_group (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
static h5_err_t
|
||||
_create_field_group (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *name /*!< IN: name of field group to create */
|
||||
) {
|
||||
|
||||
h5_int64_t h5err;
|
||||
struct h5b_fdata *b = f->b;
|
||||
|
||||
TRY( _create_block_group(f) );
|
||||
|
||||
if ( ! _H5Part_have_group ( f->timegroup, H5BLOCK_GROUPNAME_BLOCK ) ) {
|
||||
h5err = _create_block_group ( f );
|
||||
char name2[H5_DATANAME_LEN];
|
||||
h5_normalize_dataset_name(f, name, name2);
|
||||
|
||||
h5_err_t exists;
|
||||
TRY( exists = h5priv_hdf5_link_exists(f, b->block_gid, name2) );
|
||||
|
||||
if (exists > 0) {
|
||||
TRY( h5bpriv_open_field_group(f, name2) );
|
||||
} else {
|
||||
h5err = _open_block_group ( f );
|
||||
TRY( b->field_gid = h5priv_create_hdf5_group(f,
|
||||
b->block_gid, name2) );
|
||||
}
|
||||
if ( h5err < 0 ) return h5err;
|
||||
|
||||
h5err = _select_hyperslab_for_writing ( f );
|
||||
if ( h5err < 0 ) return h5err;
|
||||
|
||||
if ( _H5Part_have_group ( b->blockgroup, name ) )
|
||||
return HANDLE_H5PART_GROUP_EXISTS_ERR ( name );
|
||||
|
||||
herr_t herr = H5Gcreate (
|
||||
b->blockgroup,
|
||||
name,
|
||||
#ifndef H5_USE_16_API
|
||||
H5P_DEFAULT,
|
||||
H5P_DEFAULT,
|
||||
H5P_DEFAULT
|
||||
#else
|
||||
0
|
||||
#endif
|
||||
);
|
||||
if ( herr < 0 ) return HANDLE_H5G_CREATE_ERR ( name );
|
||||
b->field_group_id = herr;
|
||||
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
h5_int64_t
|
||||
_H5Block_select_hyperslab_for_reading (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
hid_t dataset
|
||||
) {
|
||||
|
||||
struct h5b_fdata *b = f->b;
|
||||
struct h5b_partition *p = &b->user_layout[f->myproc];
|
||||
int rank;
|
||||
hsize_t field_dims[3];
|
||||
hsize_t start[3] = {
|
||||
p->k_start,
|
||||
p->j_start,
|
||||
p->i_start };
|
||||
hsize_t stride[3] = { 1, 1, 1 };
|
||||
hsize_t part_dims[3] = {
|
||||
p->k_end - p->k_start + 1,
|
||||
p->j_end - p->j_start + 1,
|
||||
p->i_end - p->i_start + 1 };
|
||||
|
||||
h5_int64_t herr = _release_hyperslab ( f );
|
||||
if ( herr < 0 ) return HANDLE_H5S_CLOSE_ERR;
|
||||
|
||||
b->diskshape = H5Dget_space ( dataset );
|
||||
if ( b->diskshape < 0 ) return HANDLE_H5D_GET_SPACE_ERR;
|
||||
|
||||
rank = H5Sget_simple_extent_dims ( b->diskshape, NULL, NULL );
|
||||
if ( rank < 0 ) return HANDLE_H5S_GET_SIMPLE_EXTENT_DIMS_ERR;
|
||||
if ( rank != 3 ) return HANDLE_H5PART_DATASET_RANK_ERR ( rank, 3 );
|
||||
|
||||
rank = H5Sget_simple_extent_dims ( b->diskshape, field_dims, NULL );
|
||||
if ( rank < 0 ) return HANDLE_H5S_GET_SIMPLE_EXTENT_DIMS_ERR;
|
||||
|
||||
if ( (field_dims[0] < (hsize_t)b->k_max) ||
|
||||
(field_dims[1] < (hsize_t)b->j_max) ||
|
||||
(field_dims[2] < (hsize_t)b->i_max) ) return HANDLE_H5PART_LAYOUT_ERR;
|
||||
|
||||
_H5Part_print_debug (
|
||||
"PROC[%d]: field_dims: (%lld,%lld,%lld)",
|
||||
f->myproc,
|
||||
(long long)field_dims[2],
|
||||
(long long)field_dims[1],
|
||||
(long long)field_dims[0] );
|
||||
|
||||
b->diskshape = H5Screate_simple ( rank, field_dims,field_dims );
|
||||
if ( b->diskshape < 0 )
|
||||
return HANDLE_H5S_CREATE_SIMPLE_3D_ERR ( field_dims );
|
||||
|
||||
f->b->memshape = H5Screate_simple ( rank, part_dims, part_dims );
|
||||
if ( b->memshape < 0 )
|
||||
return HANDLE_H5S_CREATE_SIMPLE_3D_ERR ( part_dims );
|
||||
|
||||
herr = H5Sselect_hyperslab (
|
||||
b->diskshape,
|
||||
H5S_SELECT_SET,
|
||||
start,
|
||||
stride,
|
||||
part_dims,
|
||||
NULL );
|
||||
if ( herr < 0 ) return HANDLE_H5S_SELECT_HYPERSLAB_ERR;
|
||||
|
||||
_H5Part_print_debug (
|
||||
"PROC[%d]: Select hyperslab: \n"
|
||||
"\tstart: (%lld,%lld,%lld)\n"
|
||||
"\tstride: (%lld,%lld,%lld)\n"
|
||||
"\tdims: (%lld,%lld,%lld)",
|
||||
f->myproc,
|
||||
(long long)start[2],
|
||||
(long long)start[1],
|
||||
(long long)start[0],
|
||||
(long long)stride[2],
|
||||
(long long)stride[1],
|
||||
(long long)stride[0],
|
||||
(long long)part_dims[2],
|
||||
(long long)part_dims[1],
|
||||
(long long)part_dims[0] );
|
||||
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_private
|
||||
|
||||
\internal
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_int64_t
|
||||
_H5Block_read_data (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to read */
|
||||
void *data, /*!< OUT: ptr to read buffer */
|
||||
hid_t type /*!< IN: data type */
|
||||
) {
|
||||
|
||||
h5_int64_t herr;
|
||||
struct h5b_fdata *b = f->b;
|
||||
|
||||
hid_t dataset_id = H5Dopen ( b->field_group_id, name
|
||||
#ifndef H5_USE_16_API
|
||||
, H5P_DEFAULT
|
||||
#endif
|
||||
);
|
||||
if ( dataset_id < 0 ) return HANDLE_H5D_OPEN_ERR ( name );
|
||||
|
||||
herr = _H5Block_select_hyperslab_for_reading ( f, dataset_id );
|
||||
if ( herr < 0 ) return herr;
|
||||
|
||||
#ifdef PARALLEL_IO
|
||||
herr = _H5Part_start_throttle ( f );
|
||||
if ( herr < 0 ) return herr;
|
||||
#endif
|
||||
|
||||
herr = H5Dread (
|
||||
dataset_id,
|
||||
type,
|
||||
f->b->memshape,
|
||||
f->b->diskshape,
|
||||
f->xfer_prop,
|
||||
data );
|
||||
if ( herr < 0 ) return HANDLE_H5D_READ_ERR ( name, f->timestep );
|
||||
|
||||
#ifdef PARALLEL_IO
|
||||
herr = _H5Part_end_throttle ( f );
|
||||
if ( herr < 0 ) return herr;
|
||||
#endif
|
||||
|
||||
herr = H5Dclose ( dataset_id );
|
||||
if ( herr < 0 ) return HANDLE_H5D_CLOSE_ERR;
|
||||
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
/********************** functions for writing ********************************/
|
||||
|
||||
/*!
|
||||
\ingroup h5block_private
|
||||
|
||||
\internal
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
static h5_int64_t
|
||||
static h5_err_t
|
||||
_select_hyperslab_for_writing (
|
||||
h5_file_t *const f /*!< IN: file handle */
|
||||
) {
|
||||
@@ -229,7 +55,6 @@ _select_hyperslab_for_writing (
|
||||
*/
|
||||
if ( f->b->shape >= 0 ) return H5_SUCCESS;
|
||||
|
||||
herr_t herr;
|
||||
struct h5b_fdata *b = f->b;
|
||||
struct h5b_partition *p = &b->write_layout[f->myproc];
|
||||
struct h5b_partition *q = &b->user_layout[f->myproc];
|
||||
@@ -255,15 +80,11 @@ _select_hyperslab_for_writing (
|
||||
};
|
||||
|
||||
|
||||
b->shape = H5Screate_simple ( rank, field_dims, field_dims );
|
||||
if ( b->shape < 0 )
|
||||
return HANDLE_H5S_CREATE_SIMPLE_3D_ERR ( field_dims );
|
||||
|
||||
b->diskshape = H5Screate_simple ( rank, field_dims,field_dims );
|
||||
if ( b->diskshape < 0 )
|
||||
return HANDLE_H5S_CREATE_SIMPLE_3D_ERR ( field_dims );
|
||||
|
||||
_H5Part_print_debug (
|
||||
TRY( b->shape = h5priv_create_hdf5_dataspace(f,
|
||||
rank, field_dims, NULL) );
|
||||
TRY( b->diskshape = h5priv_create_hdf5_dataspace(f,
|
||||
rank, field_dims, NULL) );
|
||||
h5_debug (f,
|
||||
"PROC[%d]: Select hyperslab on diskshape: \n"
|
||||
"\tstart: (%lld,%lld,%lld)\n"
|
||||
"\tstride: (%lld,%lld,%lld)\n"
|
||||
@@ -279,28 +100,26 @@ _select_hyperslab_for_writing (
|
||||
(long long)part_dims[1],
|
||||
(long long)part_dims[0] );
|
||||
|
||||
herr = H5Sselect_hyperslab (
|
||||
TRY( h5priv_select_hyperslab_of_hdf5_dataspace(f,
|
||||
b->diskshape,
|
||||
H5S_SELECT_SET,
|
||||
start,
|
||||
stride,
|
||||
part_dims,
|
||||
NULL );
|
||||
if ( herr < 0 ) return HANDLE_H5S_SELECT_HYPERSLAB_ERR;
|
||||
NULL) );
|
||||
|
||||
field_dims[0] = q->k_end - q->k_start + 1;
|
||||
field_dims[1] = q->j_end - q->j_start + 1;
|
||||
field_dims[2] = q->i_end - q->i_start + 1;
|
||||
|
||||
f->b->memshape = H5Screate_simple ( rank, field_dims, field_dims );
|
||||
if ( b->memshape < 0 )
|
||||
return HANDLE_H5S_CREATE_SIMPLE_3D_ERR ( part_dims );
|
||||
TRY( b->memshape = h5priv_create_hdf5_dataspace(f,
|
||||
rank, field_dims, NULL) );
|
||||
|
||||
start[0] = p->k_start - q->k_start;
|
||||
start[1] = p->j_start - q->j_start;
|
||||
start[2] = p->i_start - q->i_start;
|
||||
|
||||
_H5Part_print_debug (
|
||||
h5_debug (f,
|
||||
"PROC[%d]: Select hyperslab on memshape: \n"
|
||||
"\tstart: (%lld,%lld,%lld)\n"
|
||||
"\tstride: (%lld,%lld,%lld)\n"
|
||||
@@ -316,79 +135,226 @@ _select_hyperslab_for_writing (
|
||||
(long long)part_dims[1],
|
||||
(long long)part_dims[0] );
|
||||
|
||||
herr = H5Sselect_hyperslab (
|
||||
TRY( h5priv_select_hyperslab_of_hdf5_dataspace(f,
|
||||
b->memshape,
|
||||
H5S_SELECT_SET,
|
||||
start,
|
||||
stride,
|
||||
part_dims,
|
||||
NULL );
|
||||
if ( herr < 0 ) return HANDLE_H5S_SELECT_HYPERSLAB_ERR;
|
||||
NULL) );
|
||||
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup h5block_private
|
||||
|
||||
\internal
|
||||
|
||||
\return \c H5_SUCCESS or error code
|
||||
*/
|
||||
h5_int64_t
|
||||
_H5Block_write_data (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: name of dataset to write */
|
||||
static h5_err_t
|
||||
_write_data (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: name of field */
|
||||
const char *data_name, /*!< IN: name of dataset */
|
||||
const void *data, /*!< IN: data to write */
|
||||
const hid_t type /*!< IN: data type */
|
||||
) {
|
||||
|
||||
herr_t herr;
|
||||
hid_t dataset;
|
||||
struct h5b_fdata *b = f->b;
|
||||
|
||||
#ifndef H5_USE_16_API
|
||||
htri_t exists = H5Lexists ( b->field_group_id, name, H5P_DEFAULT );
|
||||
if ( exists > 0 ) return HANDLE_H5D_EXISTS_ERR ( name, f->timestep );
|
||||
#endif
|
||||
h5_err_t exists;
|
||||
TRY( exists = h5priv_hdf5_link_exists (f, b->field_gid, data_name) );
|
||||
if ( exists > 0 ) {
|
||||
TRY( dataset = h5priv_open_hdf5_dataset(f,
|
||||
b->field_gid, data_name) );
|
||||
hid_t type_file;
|
||||
TRY( type_file = h5priv_get_hdf5_dataset_type(f, dataset) );
|
||||
if ( type != type_file ) {
|
||||
return h5_error(f,
|
||||
H5_ERR_HDF5,
|
||||
"Field '%s' already has type '%s' "
|
||||
"but was written as '%s'.",
|
||||
field_name,
|
||||
h5priv_get_base_type_name(f, type_file),
|
||||
h5priv_get_base_type_name(f, type) );
|
||||
}
|
||||
} else {
|
||||
TRY( dataset = h5priv_create_hdf5_dataset(f,
|
||||
b->field_gid,
|
||||
data_name,
|
||||
type,
|
||||
b->shape,
|
||||
b->dcreate_prop) );
|
||||
}
|
||||
|
||||
dataset = H5Dcreate (
|
||||
b->field_group_id,
|
||||
name,
|
||||
type,
|
||||
b->shape,
|
||||
#ifndef H5_USE_16_API
|
||||
H5P_DEFAULT,
|
||||
b->create_prop,
|
||||
H5P_DEFAULT
|
||||
#else
|
||||
b->create_prop
|
||||
#endif
|
||||
);
|
||||
if ( dataset < 0 ) return HANDLE_H5D_CREATE_ERR ( name, f->timestep );
|
||||
|
||||
#ifdef PARALLEL_IO
|
||||
herr = _H5Part_start_throttle ( f );
|
||||
if ( herr < 0 ) return herr;
|
||||
#endif
|
||||
|
||||
herr = H5Dwrite (
|
||||
TRY( h5priv_write_hdf5_dataset(f,
|
||||
dataset,
|
||||
type,
|
||||
b->memshape,
|
||||
b->diskshape,
|
||||
f->xfer_prop,
|
||||
data );
|
||||
if ( herr < 0 ) return HANDLE_H5D_WRITE_ERR ( name, f->timestep );
|
||||
data) );
|
||||
|
||||
#ifdef PARALLEL_IO
|
||||
herr = _H5Part_end_throttle ( f );
|
||||
if ( herr < 0 ) return herr;
|
||||
#endif
|
||||
|
||||
herr = H5Dclose ( dataset );
|
||||
if ( herr < 0 ) return HANDLE_H5D_CLOSE_ERR;
|
||||
TRY( h5priv_close_hdf5_dataset(f, dataset) );
|
||||
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5b_write_scalar_data (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: name of field */
|
||||
const void *data, /*!< IN: data to write */
|
||||
const hid_t type /*!< IN: data type */
|
||||
) {
|
||||
TRY( _create_field_group(f, field_name) );
|
||||
TRY( _select_hyperslab_for_writing(f) );
|
||||
TRY( _write_data(f, field_name, H5_BLOCKNAME_X, data, type) );
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5b_write_vector3d_data (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: name of field */
|
||||
const void *xdata, /*!< IN: x data to write */
|
||||
const void *ydata, /*!< IN: y data to write */
|
||||
const void *zdata, /*!< IN: z data to write */
|
||||
const hid_t type /*!< IN: data type */
|
||||
) {
|
||||
TRY( _create_field_group(f, field_name) );
|
||||
TRY( _select_hyperslab_for_writing(f) );
|
||||
TRY( _write_data(f, field_name, H5_BLOCKNAME_X, xdata, type) );
|
||||
TRY( _write_data(f, field_name, H5_BLOCKNAME_Y, ydata, type) );
|
||||
TRY( _write_data(f, field_name, H5_BLOCKNAME_Z, zdata, type) );
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
static h5_err_t
|
||||
_select_hyperslab_for_reading (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const hid_t dataset
|
||||
) {
|
||||
|
||||
struct h5b_fdata *b = f->b;
|
||||
struct h5b_partition *p = &b->user_layout[f->myproc];
|
||||
int rank;
|
||||
hsize_t field_dims[3];
|
||||
hsize_t start[3] = {
|
||||
p->k_start,
|
||||
p->j_start,
|
||||
p->i_start };
|
||||
hsize_t stride[3] = { 1, 1, 1 };
|
||||
hsize_t part_dims[3] = {
|
||||
p->k_end - p->k_start + 1,
|
||||
p->j_end - p->j_start + 1,
|
||||
p->i_end - p->i_start + 1 };
|
||||
|
||||
TRY( h5bpriv_release_hyperslab(f) );
|
||||
|
||||
TRY( b->diskshape = h5priv_get_hdf5_dataset_space(f, dataset) );
|
||||
|
||||
TRY( rank = h5priv_get_dims_of_hdf5_dataspace(f,
|
||||
b->diskshape, field_dims, NULL) );
|
||||
if ( rank != 3 )
|
||||
return h5_error(f,
|
||||
H5_ERR_INVAL,
|
||||
"H5Block dataset has bad rank '%d' instead of rank 3! "
|
||||
"Is the file corrupt?",
|
||||
rank);
|
||||
|
||||
if ( (field_dims[0] < (hsize_t)b->k_max) ||
|
||||
(field_dims[1] < (hsize_t)b->j_max) ||
|
||||
(field_dims[2] < (hsize_t)b->i_max) )
|
||||
return h5_error(f,
|
||||
H5_ERR_LAYOUT,
|
||||
"H5Block dataset has invalid layout. "
|
||||
"Is the file corrupt?");
|
||||
|
||||
h5_debug (f,
|
||||
"PROC[%d]: field_dims: (%lld,%lld,%lld)",
|
||||
f->myproc,
|
||||
(long long)field_dims[2],
|
||||
(long long)field_dims[1],
|
||||
(long long)field_dims[0] );
|
||||
|
||||
TRY( b->memshape = h5priv_create_hdf5_dataspace(f,
|
||||
rank, part_dims, NULL) );
|
||||
|
||||
TRY( h5priv_select_hyperslab_of_hdf5_dataspace(f,
|
||||
b->diskshape,
|
||||
H5S_SELECT_SET,
|
||||
start,
|
||||
stride,
|
||||
part_dims,
|
||||
NULL) );
|
||||
|
||||
h5_debug (f,
|
||||
"PROC[%d]: Select hyperslab: \n"
|
||||
"\tstart: (%lld,%lld,%lld)\n"
|
||||
"\tstride: (%lld,%lld,%lld)\n"
|
||||
"\tdims: (%lld,%lld,%lld)",
|
||||
f->myproc,
|
||||
(long long)start[2],
|
||||
(long long)start[1],
|
||||
(long long)start[0],
|
||||
(long long)stride[2],
|
||||
(long long)stride[1],
|
||||
(long long)stride[0],
|
||||
(long long)part_dims[2],
|
||||
(long long)part_dims[1],
|
||||
(long long)part_dims[0] );
|
||||
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
static h5_err_t
|
||||
_read_data (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: name of field */
|
||||
const char *data_name, /*!< IN: name of dataset */
|
||||
void *data, /*!< OUT: ptr to read buffer */
|
||||
const hid_t type /*!< IN: data type */
|
||||
) {
|
||||
|
||||
hid_t dataset;
|
||||
struct h5b_fdata *b = f->b;
|
||||
|
||||
TRY( dataset = h5priv_open_hdf5_dataset(f, b->field_gid, data_name) );
|
||||
TRY( _select_hyperslab_for_reading(f, dataset) );
|
||||
TRY( h5priv_read_hdf5_dataset(f,
|
||||
dataset,
|
||||
type,
|
||||
f->b->memshape,
|
||||
f->b->diskshape,
|
||||
f->xfer_prop,
|
||||
data) );
|
||||
TRY( h5priv_close_hdf5_dataset(f, dataset) );
|
||||
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5b_read_scalar_data (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: name of field */
|
||||
void *data, /*!< OUT: read bufer */
|
||||
const hid_t type /*!< IN: data type */
|
||||
) {
|
||||
TRY( h5bpriv_open_field_group(f, field_name) );
|
||||
TRY( _read_data(f, field_name, H5_BLOCKNAME_X, data, type) );
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
h5_err_t
|
||||
h5b_read_vector3d_data (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: name of field */
|
||||
void *xdata, /*!< IN: x data to write */
|
||||
void *ydata, /*!< IN: y data to write */
|
||||
void *zdata, /*!< IN: z data to write */
|
||||
const hid_t type /*!< IN: data type */
|
||||
) {
|
||||
TRY( h5bpriv_open_field_group(f, field_name) );
|
||||
TRY( _read_data(f, field_name, H5_BLOCKNAME_X, xdata, type) );
|
||||
TRY( _read_data(f, field_name, H5_BLOCKNAME_Y, ydata, type) );
|
||||
TRY( _read_data(f, field_name, H5_BLOCKNAME_Z, zdata, type) );
|
||||
return H5_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
#ifndef __H5_H
|
||||
#define __H5_H
|
||||
|
||||
#include "H5_inquiry.h"
|
||||
#include "H5_attribs.h"
|
||||
|
||||
h5_file_t *
|
||||
H5OpenFile (
|
||||
const char * filename,
|
||||
|
||||
+88
-162
@@ -1,202 +1,128 @@
|
||||
#ifndef __H5BLOCK_H
|
||||
#define __H5BLOCK_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*!
|
||||
Interface for block structured field data
|
||||
|
||||
*/
|
||||
#include "H5.h"
|
||||
#include "H5Block_readwrite.h"
|
||||
|
||||
h5_err_t
|
||||
H5BlockDefine3DFieldLayout (
|
||||
h5_file_t *f,
|
||||
const h5_size_t i_start,
|
||||
const h5_size_t i_end,
|
||||
const h5_size_t j_start,
|
||||
const h5_size_t j_end,
|
||||
const h5_size_t k_start,
|
||||
const h5_size_t k_end
|
||||
H5Block3dSetView (
|
||||
h5_file_t *const f, /*!< IN: File handle */
|
||||
const h5_int64_t i_start, /*!< IN: start index of \c i */
|
||||
const h5_int64_t i_end, /*!< IN: end index of \c i */
|
||||
const h5_int64_t j_start, /*!< IN: start index of \c j */
|
||||
const h5_int64_t j_end, /*!< IN: end index of \c j */
|
||||
const h5_int64_t k_start, /*!< IN: start index of \c k */
|
||||
const h5_int64_t k_end /*!< IN: end index of \c k */
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5Block3dGetPartitionOfProc (
|
||||
h5_file_t *f,
|
||||
const h5_int64_t proc,
|
||||
h5_size_t *i_start,
|
||||
h5_size_t *i_end,
|
||||
h5_size_t *j_start,
|
||||
h5_size_t *j_end,
|
||||
h5_size_t *k_start,
|
||||
h5_size_t *k_end
|
||||
H5Block3dGetView (
|
||||
h5_file_t *const f, /*!< IN: File handle */
|
||||
const int proc, /*!< IN: Processor to get partition from */
|
||||
h5_size_t *i_start, /*!< OUT: start index of \c i */
|
||||
h5_size_t *i_end, /*!< OUT: end index of \c i */
|
||||
h5_size_t *j_start, /*!< OUT: start index of \c j */
|
||||
h5_size_t *j_end, /*!< OUT: end index of \c j */
|
||||
h5_size_t *k_start, /*!< OUT: start index of \c k */
|
||||
h5_size_t *k_end /*!< OUT: end index of \c k */
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5Block3dGetReducedPartitionOfProc (
|
||||
h5_file_t *f,
|
||||
h5_id_t proc,
|
||||
h5_size_t *i_start,
|
||||
h5_size_t *i_end,
|
||||
h5_size_t *j_start,
|
||||
h5_size_t *j_end,
|
||||
h5_size_t *k_start,
|
||||
h5_size_t *k_end
|
||||
H5Block3dSetChunk (
|
||||
h5_file_t *const f, /*!< IN: File handle */
|
||||
const h5_int64_t i, /*!< IN: size of \c i */
|
||||
const h5_int64_t j, /*!< IN: size of \c j */
|
||||
const h5_int64_t k /*!< IN: size of \c k */
|
||||
);
|
||||
|
||||
h5_id_t
|
||||
H5Block3dGetProcOf (
|
||||
h5_file_t *f,
|
||||
h5_size_t i,
|
||||
h5_size_t j,
|
||||
h5_size_t k
|
||||
h5_err_t
|
||||
H5Block3dGetChunk (
|
||||
h5_file_t *const f, /*!< IN: File handle */
|
||||
const char *field_name, /*!< IN: name of dataset */
|
||||
h5_size_t *dims /*!< OUT: array containing the chunk dimensions */
|
||||
);
|
||||
|
||||
h5_int64_t
|
||||
H5Block3dWriteScalarFieldFloat64 (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
const h5_float64_t *data
|
||||
h5_err_t
|
||||
H5Block3dGetReducedView (
|
||||
h5_file_t *const f, /*!< IN: File handle */
|
||||
const int proc, /*!< IN: Processor to get partition from */
|
||||
h5_size_t *i_start, /*!< OUT: start index of \c i */
|
||||
h5_size_t *i_end, /*!< OUT: end index of \c i */
|
||||
h5_size_t *j_start, /*!< OUT: start index of \c j */
|
||||
h5_size_t *j_end, /*!< OUT: end index of \c j */
|
||||
h5_size_t *k_start, /*!< OUT: start index of \c j */
|
||||
h5_size_t *k_end /*!< OUT: end index of \c j */
|
||||
);
|
||||
|
||||
h5_int64_t
|
||||
H5Block3dReadScalarFieldFloat64 (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
h5_float64_t *data
|
||||
int
|
||||
H5Block3dGetProc (
|
||||
h5_file_t *const f, /*!< IN: File handle */
|
||||
const h5_int64_t i, /*!< IN: \c i coordinate */
|
||||
const h5_int64_t j, /*!< IN: \c j coordinate */
|
||||
const h5_int64_t k /*!< IN: \c k coordinate */
|
||||
);
|
||||
|
||||
h5_int64_t
|
||||
h5_size_t
|
||||
H5BlockGetNumFields (
|
||||
h5_file_t *f
|
||||
h5_file_t *const f /*!< IN: file handle */
|
||||
);
|
||||
|
||||
h5_int64_t
|
||||
h5_err_t
|
||||
H5BlockGetFieldInfo (
|
||||
h5_file_t *f,
|
||||
const h5_int64_t idx,
|
||||
char *name,
|
||||
const h5_int64_t len_name,
|
||||
h5_int64_t *grid_rank,
|
||||
h5_int64_t *grid_dims,
|
||||
h5_int64_t *field_dims
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const h5_size_t idx, /*!< IN: index of field */
|
||||
char *name, /*!< OUT: field name */
|
||||
const h5_size_t len_name, /*!< IN: buffer size */
|
||||
h5_size_t *grid_rank, /*!< OUT: grid rank */
|
||||
h5_size_t *grid_dims, /*!< OUT: grid dimensions */
|
||||
h5_size_t *field_rank, /*!< OUT: field rank */
|
||||
h5_int64_t *type /*!< OUT: datatype */
|
||||
);
|
||||
|
||||
h5_int64_t
|
||||
h5_err_t
|
||||
H5BlockGetFieldInfoByName (
|
||||
h5_file_t *f,
|
||||
const char *field_name,
|
||||
h5_int64_t *grid_rank,
|
||||
h5_int64_t *grid_dims,
|
||||
h5_int64_t *field_dims
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *name, /*!< IN: field name */
|
||||
h5_size_t *grid_rank, /*!< OUT: grid rank */
|
||||
h5_size_t *grid_dims, /*!< OUT: grid dimensions */
|
||||
h5_size_t *field_rank, /*!< OUT: field rank */
|
||||
h5_int64_t *type /*!< OUT: datatype */
|
||||
);
|
||||
|
||||
h5_int64_t
|
||||
H5Block3dGetFieldOrigin (
|
||||
h5_file_t *f,
|
||||
const char *field_name,
|
||||
h5_float64_t *x_origin,
|
||||
h5_float64_t *y_origin,
|
||||
h5_float64_t *z_origin
|
||||
);
|
||||
|
||||
h5_int64_t
|
||||
H5Block3dSetFieldOrigin (
|
||||
h5_file_t *f,
|
||||
const char *field_name,
|
||||
const h5_float64_t x_origin,
|
||||
const h5_float64_t y_origin,
|
||||
const h5_float64_t z_origin
|
||||
);
|
||||
|
||||
h5_int64_t
|
||||
H5Block3dGetFieldSpacing (
|
||||
h5_file_t *f,
|
||||
const char *field_name,
|
||||
h5_float64_t *x_spacing,
|
||||
h5_float64_t *y_spacing,
|
||||
h5_float64_t *z_spacing
|
||||
);
|
||||
|
||||
h5_int64_t
|
||||
H5Block3dSetFieldSpacing (
|
||||
h5_file_t *f,
|
||||
const char *field_name,
|
||||
const h5_float64_t x_spacing,
|
||||
const h5_float64_t y_spacing,
|
||||
const h5_float64_t z_spacing
|
||||
);
|
||||
|
||||
h5_int64_t
|
||||
H5Block3dWrite3dVectorFieldFloat64 (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
const h5_float64_t *xval,
|
||||
const h5_float64_t *yval,
|
||||
const h5_float64_t *zval
|
||||
);
|
||||
|
||||
h5_int64_t
|
||||
H5Block3dRead3dVectorFieldFloat64 (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
h5_float64_t *xval,
|
||||
h5_float64_t *yval,
|
||||
h5_float64_t *zval
|
||||
);
|
||||
|
||||
h5_int64_t
|
||||
H5BlockWriteFieldAttrib (
|
||||
h5_file_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
const h5_int64_t attrib_type,
|
||||
const void *attrib_value,
|
||||
const h5_int64_t attrib_nelem
|
||||
);
|
||||
|
||||
h5_int64_t
|
||||
h5_err_t
|
||||
H5BlockWriteFieldAttribString (
|
||||
h5_file_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
const char *attrib_value
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: field name */
|
||||
const char *attrib_name, /*!< IN: attribute name */
|
||||
const char *value /*!< IN: attribute value */
|
||||
);
|
||||
|
||||
h5_int64_t
|
||||
h5_err_t
|
||||
H5BlockReadFieldAttribString (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: field name */
|
||||
const char *attrib_name, /*!< IN: attribute name */
|
||||
char *buffer /*!< OUT: attribute value */
|
||||
);
|
||||
|
||||
h5_ssize_t
|
||||
H5BlockGetNumFieldAttribs (
|
||||
h5_file_t *f,
|
||||
const char *field_name
|
||||
h5_file_t *const f, /*<! IN: file handle */
|
||||
const char *field_name /*<! IN: field name */
|
||||
);
|
||||
|
||||
h5_int64_t
|
||||
H5BlockGetFieldAttribInfo (
|
||||
h5_file_t *f,
|
||||
const char *field_name,
|
||||
const h5_int64_t attrib_idx,
|
||||
char *attrib_name,
|
||||
const h5_int64_t len_of_attrib_name,
|
||||
h5_int64_t *attrib_type,
|
||||
h5_int64_t *attrib_nelem
|
||||
h5_file_t *const f, /*!< [in] Handle to open file */
|
||||
const char *field_name, /*<! IN: field name */
|
||||
const h5_size_t attrib_idx, /*!< [in] Index of attribute to
|
||||
get infos about */
|
||||
char *attrib_name, /*!< [out] Name of attribute */
|
||||
const h5_size_t len_of_attrib_name,
|
||||
/*!< [in] length of buffer \c name */
|
||||
h5_int64_t *attrib_type, /*!< [out] Type of value. */
|
||||
h5_size_t *attrib_nelem /*!< [out] Number of elements */
|
||||
);
|
||||
|
||||
h5_int64_t
|
||||
H5BlockReadFieldAttrib (
|
||||
h5_file_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
void *attrib_value
|
||||
);
|
||||
|
||||
h5_int64_t
|
||||
H5BlockHasFieldData (
|
||||
h5_file_t *f
|
||||
);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,201 @@
|
||||
|
||||
#ifndef __H5BLOCK_READWRITE_H
|
||||
#define __H5BLOCK_READWRITE_H
|
||||
|
||||
h5_err_t
|
||||
H5Block3dWriteScalarFieldFloat64 (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
const h5_float64_t *data
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5Block3dReadScalarFieldFloat64 (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
h5_float64_t *data
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5Block3dWriteVector3dFieldFloat64 (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
const h5_float64_t *x_data,
|
||||
const h5_float64_t *y_data,
|
||||
const h5_float64_t *z_data
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5Block3dReadVector3dFieldFloat64 (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
h5_float64_t *x_data,
|
||||
h5_float64_t *y_data,
|
||||
h5_float64_t *z_data
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5Block3dWriteScalarFieldFloat32 (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
const h5_float32_t *data
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5Block3dReadScalarFieldFloat32 (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
h5_float32_t *data
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5Block3dWriteVector3dFieldFloat32 (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
const h5_float32_t *x_data,
|
||||
const h5_float32_t *y_data,
|
||||
const h5_float32_t *z_data
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5Block3dReadVector3dFieldFloat32 (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
h5_float32_t *x_data,
|
||||
h5_float32_t *y_data,
|
||||
h5_float32_t *z_data
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5Block3dWriteScalarFieldInt64 (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
const h5_int64_t *data
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5Block3dReadScalarFieldInt64 (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
h5_int64_t *data
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5Block3dWriteVector3dFieldInt64 (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
const h5_int64_t *x_data,
|
||||
const h5_int64_t *y_data,
|
||||
const h5_int64_t *z_data
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5Block3dReadVector3dFieldInt64 (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
h5_int64_t *x_data,
|
||||
h5_int64_t *y_data,
|
||||
h5_int64_t *z_data
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5Block3dWriteScalarFieldInt32 (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
const h5_int32_t *data
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5Block3dReadScalarFieldInt32 (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
h5_int32_t *data
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5Block3dWriteVector3dFieldInt32 (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
const h5_int32_t *x_data,
|
||||
const h5_int32_t *y_data,
|
||||
const h5_int32_t *z_data
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5Block3dReadVector3dFieldInt32 (
|
||||
h5_file_t *f,
|
||||
const char *name,
|
||||
h5_int32_t *x_data,
|
||||
h5_int32_t *y_data,
|
||||
h5_int32_t *z_data
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5BlockWriteFieldAttribFloat64 (
|
||||
h5_file_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
const h5_float64_t *values,
|
||||
const h5_size_t nvalues
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5BlockReadFieldAttribFloat64 (
|
||||
h5_file_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
h5_float64_t *buffer
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5BlockWriteFieldAttribFloat32 (
|
||||
h5_file_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
const h5_float32_t *values,
|
||||
const h5_size_t nvalues
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5BlockReadFieldAttribFloat32 (
|
||||
h5_file_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
h5_float32_t *buffer
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5BlockWriteFieldAttribInt64 (
|
||||
h5_file_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
const h5_int64_t *values,
|
||||
const h5_size_t nvalues
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5BlockReadFieldAttribInt64 (
|
||||
h5_file_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
h5_int64_t *buffer
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5BlockWriteFieldAttribInt32 (
|
||||
h5_file_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
const h5_int32_t *values,
|
||||
const h5_size_t nvalues
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
H5BlockReadFieldAttribInt32 (
|
||||
h5_file_t *f,
|
||||
const char *field_name,
|
||||
const char *attrib_name,
|
||||
h5_int32_t *buffer
|
||||
);
|
||||
|
||||
#endif
|
||||
@@ -19,7 +19,6 @@
|
||||
#ifndef __H5FED_H
|
||||
#define __H5FED_H
|
||||
|
||||
#include "H5.h"
|
||||
#include "H5Fed_adjacency.h"
|
||||
#include "H5Fed_inquiry.h"
|
||||
#include "H5Fed_retrieve.h"
|
||||
|
||||
@@ -7,8 +7,6 @@ extern "C" {
|
||||
|
||||
#include "h5core/h5_core.h"
|
||||
#include "H5.h"
|
||||
#include "H5_inquiry.h"
|
||||
#include "H5_attribs.h"
|
||||
#include "H5Part.h"
|
||||
#include "H5Block.h"
|
||||
#include "H5Fed.h"
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "h5u_readwrite.h"
|
||||
#include "h5u_model.h"
|
||||
|
||||
#include "h5b_readwrite.h"
|
||||
#include "h5b_model.h"
|
||||
#include "h5b_attribs.h"
|
||||
|
||||
|
||||
@@ -75,4 +75,16 @@ h5_traverse_steps (
|
||||
h5_file_t * f /*!< file handle */
|
||||
);
|
||||
|
||||
char *
|
||||
h5_strdupfor2c (
|
||||
const char *s,
|
||||
const ssize_t len
|
||||
);
|
||||
|
||||
char *
|
||||
h5_strc2for (
|
||||
char * const str,
|
||||
const ssize_t l_str
|
||||
);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -11,6 +11,15 @@ h5_write_field_attrib (
|
||||
const h5_int64_t attrib_nelem /*!< IN: number of elements */
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
h5_read_field_attrib (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: field name */
|
||||
const char *attrib_name, /*!< IN: attribute name */
|
||||
const h5_int64_t attrib_type, /*!< IN: attribute type */
|
||||
void *buffer /*!< OUT: attribute value */
|
||||
);
|
||||
|
||||
h5_ssize_t
|
||||
h5b_get_num_field_attribs (
|
||||
h5_file_t *const f, /*<! IN: file handle */
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
#ifndef __H5B_READWRITE_H
|
||||
#define __H5B_READWRITE_H
|
||||
|
||||
h5_err_t
|
||||
h5b_write_scalar_data (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: name of field */
|
||||
const void *data, /*!< IN: data to write */
|
||||
const hid_t type /*!< IN: data type */
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
h5b_write_vector3d_data (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: name of field */
|
||||
const void *xdata, /*!< IN: x data to write */
|
||||
const void *ydata, /*!< IN: y data to write */
|
||||
const void *zdata, /*!< IN: z data to write */
|
||||
const hid_t type /*!< IN: data type */
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
h5b_read_scalar_data (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: name of field */
|
||||
void *data, /*!< OUT: read bufer */
|
||||
const hid_t type /*!< IN: data type */
|
||||
);
|
||||
|
||||
h5_err_t
|
||||
h5b_read_vector3d_data (
|
||||
h5_file_t *const f, /*!< IN: file handle */
|
||||
const char *field_name, /*!< IN: name of field */
|
||||
void *xdata, /*!< IN: x data to write */
|
||||
void *ydata, /*!< IN: y data to write */
|
||||
void *zdata, /*!< IN: z data to write */
|
||||
const hid_t type /*!< IN: data type */
|
||||
);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user