continued working on Fortran interface

This commit is contained in:
Marc Howison
2010-07-10 00:00:54 +00:00
parent 9f3fd3b053
commit 2c267f173a
41 changed files with 4482 additions and 3649 deletions
+12 -7
View File
@@ -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
View File
@@ -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
View File
@@ -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 );
}
+626
View File
@@ -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
View File
@@ -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
View File
@@ -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
+576
View File
@@ -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()
+143
View File
@@ -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
-447
View File
@@ -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;
}
-555
View File
@@ -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;
}
+289
View File
@@ -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
+664
View File
@@ -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
View File
@@ -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
-168
View File
@@ -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
-600
View File
@@ -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;
}
-913
View File
@@ -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 );
}
+370
View File
@@ -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;
}
+32 -50
View File
@@ -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
) {
+249
View File
@@ -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
+592
View File
@@ -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
View File
@@ -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
View File
@@ -1,3 +1,3 @@
# test level Makefile.am
SUBDIRS = h5core C
SUBDIRS = h5core C Fortran
+6 -4
View File
@@ -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 \
+15
View File
@@ -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,
+7 -1
View File
@@ -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,
+34 -6
View File
@@ -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;
}
+2
View File
@@ -71,3 +71,5 @@ h5priv_tfind (
}
return ptr;
}
+22 -2
View File
@@ -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
View File
@@ -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,
+12 -1
View File
@@ -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
View File
@@ -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;
}
+3
View File
@@ -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
View File
@@ -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
+201
View File
@@ -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
-1
View File
@@ -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"
-2
View File
@@ -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"
+1
View File
@@ -14,6 +14,7 @@
#include "h5u_readwrite.h"
#include "h5u_model.h"
#include "h5b_readwrite.h"
#include "h5b_model.h"
#include "h5b_attribs.h"
+12
View File
@@ -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
+9
View File
@@ -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 */
+40
View File
@@ -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