diff --git a/src/C/Makefile.am b/src/C/Makefile.am index 964a92c..165022f 100644 --- a/src/C/Makefile.am +++ b/src/C/Makefile.am @@ -13,7 +13,7 @@ include_HEADERS = \ $(top_srcdir)/src/include/H5Part_model.h \ $(top_srcdir)/src/include/H5_attachments.h \ $(top_srcdir)/src/include/H5_debug.h \ - $(top_srcdir)/src/include/H5_error.h \ + $(top_srcdir)/src/include/H5_err.h \ $(top_srcdir)/src/include/H5_file.h \ $(top_srcdir)/src/include/H5_file_attribs.h \ $(top_srcdir)/src/include/H5_log.h \ diff --git a/src/Fortran/H5.c b/src/Fortran/H5.c index d8a7660..6bb2a5f 100644 --- a/src/Fortran/H5.c +++ b/src/Fortran/H5.c @@ -9,7 +9,6 @@ #include "h5_private.h" -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" #include "h5core/h5_file.h" diff --git a/src/Fortran/H5Block_attribs.c b/src/Fortran/H5Block_attribs.c index 3229269..9381621 100644 --- a/src/Fortran/H5Block_attribs.c +++ b/src/Fortran/H5Block_attribs.c @@ -11,10 +11,10 @@ #include "h5core/h5_debug.h" #include "h5core/h5b_attribs.h" -#define H5_R8_T H5_FLOAT64_T -#define H5_R4_T H5_FLOAT32_T -#define H5_I8_T H5_INT64_T -#define H5_I4_T H5_INT32_T +#define H5_R8_T H5_FLOAT64 +#define H5_R4_T H5_FLOAT32 +#define H5_I8_T H5_INT64 +#define H5_I4_T H5_INT32 /* __ _ _ _ ___ _ __ _ _ @@ -163,7 +163,7 @@ h5bl_writefieldattrib_string ( f, field_name, l_field_name, attrib_name, l_attrib_name, - H5_STRING_T, + H5_STRING, attrib_value2, strlen(attrib_value2)+1 ); free (attrib_value2); H5_API_RETURN (h5err); @@ -193,7 +193,7 @@ h5bl_readfieldattrib_string ( f, field_name, l_field_name, attrib_name, l_attrib_name, - H5_STRING_T, attrib_value); + H5_STRING, attrib_value); h5_strc2for (attrib_value, l_attrib_value); H5_API_RETURN (h5err); diff --git a/src/Fortran/H5Part_model.c b/src/Fortran/H5Part_model.c index e556a4c..a02fd50 100755 --- a/src/Fortran/H5Part_model.c +++ b/src/Fortran/H5Part_model.c @@ -189,7 +189,7 @@ h5pt_getdatasetname ( H5_API_ENTER (h5_int64_t, "fh=%p, index=%lld, name='%s', l_name=%d", (h5_file_p)f, (long long)*index, name, l_name); - h5_int64_t herr = h5u_get_dataset_info ( + h5_int64_t herr = h5u_get_dataset_info_by_idx ( f, *index - 1, name, l_name, NULL, NULL ); h5_strc2for (name, l_name); H5_API_RETURN (herr); @@ -217,7 +217,7 @@ h5pt_getdatasetinfo ( (h5_file_p)f, (long long)*dataset_idx, dataset_name, dataset_type, dataset_nelem); - h5_int64_t h5err = h5u_get_dataset_info ( + h5_int64_t h5err = h5u_get_dataset_info_by_idx ( f, *dataset_idx - 1, dataset_name, l_dataset_name, diff --git a/src/Fortran/H5_attribs.c b/src/Fortran/H5_attribs.c index 34984af..ad51324 100644 --- a/src/Fortran/H5_attribs.c +++ b/src/Fortran/H5_attribs.c @@ -160,7 +160,7 @@ h5_writefileattrib_string ( (h5_file_p)f, l_name, name, l_buffer, buffer); char *buffer2 = h5_strdupfor2c (buffer, l_buffer); h5_int64_t herr = write_file_attrib ( - f, name, l_name, H5_STRING_T, buffer2, strlen(buffer2)+1 ); + f, name, l_name, H5_STRING, buffer2, strlen(buffer2)+1 ); free (buffer2); H5_API_RETURN (herr); } @@ -180,7 +180,7 @@ h5_readfileattrib_string ( H5_API_ENTER (h5_int64_t, "fh=%p, name='%.*s', buffer='%.*s'", (h5_file_p)f, l_name, name, l_buffer, buffer); - h5_int64_t herr = read_file_attrib (f, name, l_name, H5_STRING_T, buffer); + h5_int64_t herr = read_file_attrib (f, name, l_name, H5_STRING, buffer); h5_strc2for (buffer, l_buffer); H5_API_RETURN (herr); } @@ -203,7 +203,7 @@ h5_writefileattrib_r8 ( H5_API_RETURN (write_file_attrib( f, name, l_name, - H5_FLOAT64_T, + H5_FLOAT64, buffer, (hsize_t)*nelem)); } @@ -224,7 +224,7 @@ h5_readfileattrib_r8 ( H5_API_RETURN (read_file_attrib( f, name, l_name, - H5_FLOAT64_T, + H5_FLOAT64, (void*)buffer)); } @@ -246,7 +246,7 @@ h5_writefileattrib_r4 ( H5_API_RETURN (write_file_attrib( f, name, l_name, - H5_FLOAT32_T, + H5_FLOAT32, buffer, (hsize_t)*nelem)); } @@ -267,7 +267,7 @@ h5_readfileattrib_r4 ( H5_API_RETURN (read_file_attrib( f, name, l_name, - H5_FLOAT32_T, + H5_FLOAT32, buffer)); } @@ -289,7 +289,7 @@ h5_writefileattrib_i8 ( H5_API_RETURN (write_file_attrib( f, name, l_name, - H5_INT64_T, + H5T_NATIVE_INT64, buffer, (hsize_t)*nelem)); } @@ -310,7 +310,7 @@ h5_readfileattrib_i8 ( H5_API_RETURN (read_file_attrib( f, name, l_name, - H5_INT64_T, + H5T_NATIVE_INT64, buffer)); } @@ -332,7 +332,7 @@ h5_writefileattrib_i4 ( H5_API_RETURN (write_file_attrib( f, name, l_name, - H5_INT32_T, + H5T_NATIVE_INT32, buffer, (hsize_t)*nelem)); } @@ -353,7 +353,7 @@ h5_readfileattrib_i4 ( H5_API_RETURN (read_file_attrib( f, name, l_name, - H5_INT32_T, + H5T_NATIVE_INT32, buffer)); } @@ -508,7 +508,7 @@ h5_writestepattrib_string ( (h5_file_p)f, l_name, name, l_buffer, buffer); char *buffer2 = h5_strdupfor2c (buffer, l_buffer); h5_int64_t herr = write_step_attrib ( - f, name, l_name, H5_STRING_T, buffer2, strlen(buffer2)+1 ); + f, name, l_name, H5_STRING, buffer2, strlen(buffer2)+1 ); free (buffer2); H5_API_RETURN (herr); } @@ -528,7 +528,7 @@ h5_readstepattrib_string ( H5_API_ENTER (h5_int64_t, "f=%p, name='%.*s', buffer='%.*s'", (h5_file_p)f, l_name, name, l_buffer, buffer); - h5_int64_t herr = read_step_attrib (f, name, l_name, H5_STRING_T, buffer); + h5_int64_t herr = read_step_attrib (f, name, l_name, H5_STRING, buffer); h5_strc2for (buffer, l_buffer); H5_API_RETURN (herr); } @@ -551,7 +551,7 @@ h5_writestepattrib_r8 ( H5_API_RETURN (write_step_attrib( f, name, l_name, - H5_FLOAT64_T, + H5_FLOAT64, buffer, (hsize_t)*nelem)); } @@ -572,7 +572,7 @@ h5_readstepattrib_r8 ( H5_API_RETURN (read_step_attrib( f, name, l_name, - H5_FLOAT64_T, + H5_FLOAT64, (void*)buffer)); } @@ -594,7 +594,7 @@ h5_writestepattrib_r4 ( H5_API_RETURN (write_step_attrib( f, name, l_name, - H5_FLOAT32_T, + H5_FLOAT32, buffer, (hsize_t)*nelem)); } @@ -615,7 +615,7 @@ h5_readstepattrib_r4 ( H5_API_RETURN (read_step_attrib( f, name, l_name, - H5_FLOAT32_T, + H5_FLOAT32, buffer)); } @@ -637,7 +637,7 @@ h5_writestepattrib_i8 ( H5_API_RETURN (write_step_attrib( f, name, l_name, - H5_INT64_T, + H5T_NATIVE_INT64, buffer, (hsize_t)*nelem)); } @@ -658,7 +658,7 @@ h5_readstepattrib_i8 ( H5_API_RETURN (read_step_attrib( f, name, l_name, - H5_INT64_T, + H5T_NATIVE_INT64, buffer)); } @@ -680,7 +680,7 @@ h5_writestepattrib_i4 ( H5_API_RETURN (write_step_attrib( f, name, l_name, - H5_INT32_T, + H5T_NATIVE_INT32, buffer, (hsize_t)*nelem)); } @@ -701,6 +701,6 @@ h5_readstepattrib_i4 ( H5_API_RETURN (read_step_attrib( f, name, l_name, - H5_INT32_T, + H5T_NATIVE_INT32, buffer)); } diff --git a/src/Fortran/H5_model.c b/src/Fortran/H5_model.c index f17f327..e492246 100644 --- a/src/Fortran/H5_model.c +++ b/src/Fortran/H5_model.c @@ -9,7 +9,6 @@ #include "h5_private.h" -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" #include "h5core/h5_model.h" diff --git a/src/Fortran/Makefile.am b/src/Fortran/Makefile.am index 322dd3e..7702569 100644 --- a/src/Fortran/Makefile.am +++ b/src/Fortran/Makefile.am @@ -10,7 +10,7 @@ F90_FILES = \ $(top_srcdir)/src/include/H5_file_attribs.f90 \ $(top_srcdir)/src/include/H5_step_attribs.f90 \ $(top_srcdir)/src/include/H5_debug.f90 \ - $(top_srcdir)/src/include/H5_error.f90 \ + $(top_srcdir)/src/include/H5_err.f90 \ $(top_srcdir)/src/include/H5_log.f90 \ $(top_srcdir)/src/include/H5Part_model.f90 \ $(top_srcdir)/src/include/H5Part_io.f90 \ diff --git a/src/Fortran/h5_private.h b/src/Fortran/h5_private.h index 9807593..53a4892 100644 --- a/src/Fortran/h5_private.h +++ b/src/Fortran/h5_private.h @@ -1,5 +1,5 @@ /* - Copyright (c) 2006-2015, The Regents of the University of California, + Copyright (c) 2006-2016, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from the U.S. Dept. of Energy) and the Paul Scherrer Institut (Switzerland). All rights reserved. @@ -13,7 +13,7 @@ #include #include -#include "h5core/h5_init.h" +#include "h5core/h5_types.h" #if defined(FC_MANGLING_LOWERCASE_NO_UNDERSCORE) # define FC_MANGLING(a,b) a @@ -31,23 +31,23 @@ # error "Unknown Fortran symbol mangling" #endif -#define convert_type2for(type) \ - if (*type == H5_STRING_T) { \ - *type = 1; \ - } else if (*type == H5_INT16_T) { \ - *type = 2; \ - } else if (*type == H5_INT32_T) { \ - *type = 3; \ - } else if (*type == H5_INT64_T) { \ - *type = 4; \ - } else if (*type == H5_FLOAT32_T) { \ - *type = 5; \ - } else if (*type == H5_FLOAT64_T) { \ - *type = 6; \ - } else { \ - H5_API_LEAVE ( \ - h5_error ( \ - H5_ERR_H5, \ +#define convert_type2for(type) \ + if (*type == H5_STRING) { \ + *type = 1; \ + } else if (*type == H5_INT16) { \ + *type = 2; \ + } else if (*type == H5_INT32) { \ + *type = 3; \ + } else if (*type == H5_INT64) { \ + *type = 4; \ + } else if (*type == H5_FLOAT32) { \ + *type = 5; \ + } else if (*type == H5_FLOAT64) { \ + *type = 6; \ + } else { \ + H5_API_LEAVE ( \ + h5_error ( \ + H5_ERR_H5, \ "Unknown attribute type")); \ } diff --git a/src/h5core/Makefile.am b/src/h5core/Makefile.am index bab64d2..c36fd6c 100644 --- a/src/h5core/Makefile.am +++ b/src/h5core/Makefile.am @@ -3,6 +3,7 @@ AUTOMAKE_OPTIONS = subdir-objects AM_CPPFLAGS = -I$(top_srcdir)/src/include @AM_CPPFLAGS@ EXTRA_HEADERS = \ + private/h5_file.h \ private/h5_hdf5.h \ private/h5_hsearch.h \ private/h5_init.h \ @@ -10,7 +11,6 @@ EXTRA_HEADERS = \ private/h5_maps.h \ private/h5_model.h \ private/h5_mpi.h \ - private/h5.h \ private/h5_qsort.h \ private/h5_io.h \ private/h5_types.h \ @@ -21,7 +21,7 @@ EXTRA_HEADERS = \ private/h5t_access.h \ private/h5t_adjacencies.h \ private/h5t_core.h \ - private/h5t_errorhandling.h \ + private/h5t_err.h \ private/h5t_map.h \ private/h5t_model.h \ private/h5t_octree.h \ @@ -35,7 +35,7 @@ EXTRA_HEADERS = \ private/h5u_types.h \ private/h5_attribs.h \ private/h5_debug.h \ - private/h5_errorhandling.h \ + private/h5_err.h \ private/h5_fcmp.h # Extra files that I wish to include in the dist tar ball. diff --git a/src/h5core/h5_attachments.c b/src/h5core/h5_attachments.c index c4b4961..3c62cc5 100644 --- a/src/h5core/h5_attachments.c +++ b/src/h5core/h5_attachments.c @@ -7,15 +7,16 @@ License: see file COPYING in top level of source distribution. */ -#include "h5core/h5_init.h" #include "private/h5_types.h" -#include "private/h5_errorhandling.h" +#include "private/h5_err.h" #include "private/h5_hdf5.h" #include "private/h5_model.h" #include "h5core/h5_syscall.h" #include "private/h5_va_macros.h" +#include "h5core/h5_file.h" + #include #include #include @@ -133,9 +134,8 @@ h5_has_attachments ( ) { h5_file_p f = (h5_file_p)f_; H5_CORE_API_ENTER (h5_ssize_t, "f=%p", f); - h5_err_t exists; - TRY (exists = hdf5_link_exists (f->file, H5_ATTACHMENT)); - H5_CORE_API_RETURN (exists); + TRY (ret_value = hdf5_link_exists (f->file, H5_ATTACHMENT)); + H5_CORE_API_RETURN (ret_value); } h5_ssize_t @@ -151,10 +151,9 @@ h5_get_num_attachments ( } hid_t group_id; TRY (group_id = hdf5_open_group (f->file, H5_ATTACHMENT)); - h5_ssize_t num = 0; - TRY (num = hdf5_get_num_datasets (group_id)); + TRY (ret_value = hdf5_get_num_datasets (group_id)); TRY (hdf5_close_group (group_id)); - H5_CORE_API_RETURN (num); + H5_CORE_API_RETURN (ret_value); } h5_err_t @@ -197,9 +196,8 @@ h5_has_attachment ( H5_CORE_API_ENTER (h5_err_t, "f=%p, fname='%s'", f, fname); hid_t loc_id; TRY (loc_id = hdf5_open_group (f->file, H5_ATTACHMENT)); - h5_err_t exists; - TRY (exists = hdf5_link_exists (f->file, fname)); - H5_CORE_API_RETURN (exists); + TRY (ret_value = hdf5_link_exists (f->file, fname)); + H5_CORE_API_RETURN (ret_value); } h5_err_t @@ -243,7 +241,7 @@ h5_get_attachment ( // read dataset hid_t dataset_id, diskspace_id; h5_ssize_t fsize; - TRY (dataset_id = hdf5_open_dataset (loc_id, fname)); + TRY (dataset_id = hdf5_open_dataset_by_name (loc_id, fname)); TRY (diskspace_id = hdf5_get_dataset_space (dataset_id)); TRY (fsize = hdf5_get_npoints_of_dataspace (diskspace_id)); diff --git a/src/h5core/h5_attribs.c b/src/h5core/h5_attribs.c index 7f78b38..6a29f17 100644 --- a/src/h5core/h5_attribs.c +++ b/src/h5core/h5_attribs.c @@ -7,145 +7,12 @@ License: see file COPYING in top level of source distribution. */ -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" -#include "private/h5_types.h" -#include "private/h5.h" -#include "private/h5_io.h" #include "private/h5_hdf5.h" #include "private/h5_attribs.h" - -h5_err_t -h5priv_get_attrib_info_by_idx ( - const hid_t id, /*!< HDF5 object ID */ - const h5_size_t attrib_idx, /*!< index of attribute */ - char* attrib_name, /*!< OUT: name of attribute */ - const h5_size_t len_attrib_name,/*!< buffer length */ - h5_int64_t* attrib_type, /*!< OUT: H5 type of attribute */ - h5_size_t* attrib_nelem /*!< OUT: number of elements */ - ) { - H5_PRIV_API_ENTER (h5_err_t, - "id=%lld, " - "attrib_idx=%llu, " - "attrib_name=%p, len_attrib_name=%llu, " - "attrib_type=%p, attrib_nelem=%p", - (long long int)id, - (long long unsigned)attrib_idx, - attrib_name, - (long long unsigned)len_attrib_name, - attrib_type, - attrib_nelem); - hid_t attrib_id; - TRY (attrib_id = hdf5_open_attribute_idx ( - id, - (unsigned int)attrib_idx)); - - if (attrib_name) { - TRY (hdf5_get_attribute_name ( - attrib_id, - (size_t)len_attrib_name, - attrib_name)); - } - H5_PRIV_API_RETURN (get_attrib_info (attrib_id, attrib_type, attrib_nelem)); -} - -h5_err_t -h5priv_read_attrib ( - const hid_t id, /*!< HDF5 object ID */ - const char* attrib_name, /*!< name of HDF5 attribute to read */ - const hid_t attrib_type, /*!< HDF5 type of attribute */ - void* const attrib_value /*!< OUT: attribute value */ - ) { - H5_PRIV_API_ENTER (h5_err_t, - "id=%lld, attrib_name='%s', attrib_type=%lld, attrib_value=%p", - (long long int)id, - attrib_name, - (long long int)attrib_type, - attrib_value); - hid_t attrib_id; - hid_t type_id; - hid_t space_id; - TRY (attrib_id = hdf5_open_attribute (id, attrib_name)); - TRY (type_id = hdf5_get_attribute_type (attrib_id)); - - hid_t h5type_id; - TRY (h5type_id = h5priv_normalize_h5_type (type_id)); - if (h5type_id != attrib_type) - H5_PRIV_API_LEAVE ( - h5_error ( - H5_ERR_HDF5, - "Attribute '%s' has type '%s' but was requested as '%s'.", - attrib_name, - hdf5_get_type_name (h5type_id), - hdf5_get_type_name (attrib_type))); - - TRY (space_id = hdf5_get_attribute_dataspace (attrib_id)); - TRY (hdf5_read_attribute (attrib_id, type_id, attrib_value)); - TRY (hdf5_close_dataspace(space_id)); - TRY (hdf5_close_type (type_id)); - TRY (hdf5_close_attribute (attrib_id)); - H5_PRIV_API_RETURN (H5_SUCCESS); -} - -h5_err_t -h5priv_write_attrib ( - const hid_t id, /*!< HDF5 object ID */ - const char* attrib_name, /*!< name of HDF5 attribute to write */ - const hid_t attrib_type, /*!< HDF5 type of attribute */ - const void* attrib_value, /*!< value of attribute */ - const hsize_t attrib_nelem, /*!< number of elements (dimension) */ - const int overwrite - ) { - H5_PRIV_API_ENTER (h5_err_t, - "id=%lld, attrib_name='%s', attrib_type=%lld, " - "attrib_value=%p, attrib_nelem=%llu, overwrite=%d", - (long long int)id, - attrib_name, - (long long int)attrib_type, - attrib_value, - attrib_nelem, - overwrite); - hid_t space_id; - hid_t attrib_id; - hid_t type_id; - if ( attrib_type == H5T_NATIVE_CHAR ) { - TRY (type_id = hdf5_create_string_type (attrib_nelem)); - TRY (space_id = hdf5_create_dataspace_scalar ()); - } else { - type_id = attrib_type; - TRY (space_id = hdf5_create_dataspace (1, &attrib_nelem, NULL)); - } - h5_err_t exists; - TRY (exists = hdf5_attribute_exists (id, attrib_name)); - if (exists) { - if (overwrite) { - TRY (hdf5_delete_attribute (id, attrib_name)); - } else { - H5_PRIV_API_LEAVE ( - h5_error (H5_ERR_H5, "Cannot overwrite attribute %s/%s", - hdf5_get_objname (id), attrib_name)); - } - } - TRY (attrib_id = hdf5_create_attribute ( - id, - attrib_name, - type_id, - space_id, - H5P_DEFAULT, H5P_DEFAULT)); - - TRY (hdf5_write_attribute (attrib_id, type_id, attrib_value)); - TRY (hdf5_close_attribute (attrib_id)); - TRY (hdf5_close_dataspace (space_id)); - - if (attrib_type == H5T_NATIVE_CHAR) - TRY (hdf5_close_type (type_id)); - - H5_PRIV_API_RETURN (H5_SUCCESS); -} - h5_err_t h5_has_file_attrib ( const h5_file_t f_, @@ -158,7 +25,8 @@ h5_has_file_attrib ( f, attrib_name); CHECK_FILEHANDLE (f); - H5_CORE_API_RETURN (hdf5_attribute_exists(f->root_gid, attrib_name)); + TRY (ret_value = hdf5_attribute_exists(f->root_gid, attrib_name)); + H5_CORE_API_RETURN (ret_value); } h5_err_t @@ -173,54 +41,8 @@ h5_has_step_attrib ( f, attrib_name); CHECK_FILEHANDLE (f); - H5_CORE_API_RETURN (hdf5_attribute_exists(f->step_gid, attrib_name)); -} - -h5_err_t -h5_get_file_attrib_info_by_name ( - const h5_file_t f_, /*!< IN: handle to open file */ - char* attrib_name, /*!< IN: name of attribute */ - h5_int64_t* attrib_type, /*!< OUT: H5 type of attribute */ - h5_size_t* attrib_nelem /*!< OUT: number of elements */ - ) { - h5_file_p f = (h5_file_p)f_; - H5_CORE_API_ENTER (h5_err_t, - "f=%p, " - "attrib_name=%s, " - "attrib_type=%p, attrib_nelem=%p", - f, - attrib_name, - attrib_type, - attrib_nelem); - CHECK_FILEHANDLE (f); - TRY (h5priv_get_attrib_info_by_name ( - f->root_gid, attrib_name, - attrib_type, attrib_nelem)); - H5_CORE_API_RETURN (H5_SUCCESS); -} - -h5_err_t -h5_get_step_attrib_info_by_name ( - const h5_file_t f_, /*!< handle to open file */ - char* attrib_name, /*!< OUT: name of attribute */ - h5_int64_t* attrib_type, /*!< OUT: H5 type of attribute */ - h5_size_t* attrib_nelem /*!< OUT: number of elements */ - ) { - h5_file_p f = (h5_file_p)f_; - H5_CORE_API_ENTER (h5_err_t, - "f=%p, " - "attrib_name=%p, " - "attrib_type=%p, attrib_nelem=%p", - f, - attrib_name, - attrib_type, attrib_nelem); - CHECK_FILEHANDLE (f); - CHECK_TIMEGROUP (f); - TRY (h5priv_get_attrib_info_by_name ( - f->step_gid, - attrib_name, - attrib_type, attrib_nelem)); - H5_CORE_API_RETURN (H5_SUCCESS); + TRY (ret_value = hdf5_attribute_exists (f->step_gid, attrib_name)); + H5_CORE_API_RETURN (ret_value); } h5_ssize_t @@ -230,7 +52,8 @@ h5_get_num_file_attribs ( h5_file_p f = (h5_file_p)f_; H5_CORE_API_ENTER (h5_ssize_t, "f=%p", f); CHECK_FILEHANDLE (f); - H5_CORE_API_RETURN (hdf5_get_num_attribute (f->root_gid)); + TRY (ret_value = hdf5_get_num_attribute (f->root_gid)); + H5_CORE_API_RETURN (ret_value); } h5_ssize_t @@ -241,7 +64,8 @@ h5_get_num_step_attribs ( H5_CORE_API_ENTER (h5_ssize_t, "f=%p", f); CHECK_FILEHANDLE (f); CHECK_TIMEGROUP (f); - H5_CORE_API_RETURN (hdf5_get_num_attribute (f->step_gid)); + TRY (ret_value = hdf5_get_num_attribute (f->step_gid)); + H5_CORE_API_RETURN (ret_value); } h5_err_t @@ -264,12 +88,38 @@ h5_get_file_attrib_info_by_idx ( attrib_name, (long long unsigned)len_attrib_name, attrib_type, attrib_nelem); CHECK_FILEHANDLE (f); - TRY (h5priv_get_attrib_info_by_idx ( - f->root_gid, attrib_idx, attrib_name, len_attrib_name, - attrib_type, attrib_nelem)); - H5_CORE_API_RETURN (H5_SUCCESS); + TRY (ret_value = h5priv_get_attrib_info_by_idx ( + f->root_gid, + attrib_idx, + attrib_name, len_attrib_name, + attrib_type, attrib_nelem)); + H5_CORE_API_RETURN (ret_value); } +h5_err_t +h5_get_file_attrib_info_by_name ( + const h5_file_t f_, /*!< IN: handle to open file */ + char* attrib_name, /*!< IN: name of attribute */ + h5_int64_t* attrib_type, /*!< OUT: H5 type of attribute */ + h5_size_t* attrib_nelem /*!< OUT: number of elements */ + ) { + h5_file_p f = (h5_file_p)f_; + H5_CORE_API_ENTER (h5_err_t, + "f=%p, " + "attrib_name=%s, " + "attrib_type=%p, attrib_nelem=%p", + f, + attrib_name, + attrib_type, attrib_nelem); + CHECK_FILEHANDLE (f); + TRY (ret_value = h5priv_get_attrib_info_by_name ( + f->root_gid, + attrib_name, + attrib_type, attrib_nelem)); + H5_CORE_API_RETURN (ret_value); +} + + h5_err_t h5_get_step_attrib_info_by_idx ( const h5_file_t f_, /*!< handle to open file */ @@ -282,20 +132,45 @@ h5_get_step_attrib_info_by_idx ( h5_file_p f = (h5_file_p)f_; H5_CORE_API_ENTER (h5_err_t, "f=%p, " - "attrib_idx=%llu, attrib_name=%p, len_attrib_name=%llu, " + "attrib_idx=%llu, " + "attrib_name=%p, len_attrib_name=%llu, " "attrib_type=%p, attrib_nelem=%p", f, (long long unsigned)attrib_idx, - attrib_name, - (long long unsigned)len_attrib_name, - attrib_type, - attrib_nelem); + attrib_name, (long long unsigned)len_attrib_name, + attrib_type, attrib_nelem); CHECK_FILEHANDLE (f); CHECK_TIMEGROUP (f); - TRY (h5priv_get_attrib_info_by_idx ( - f->step_gid, attrib_idx, attrib_name, len_attrib_name, + TRY (ret_value = h5priv_get_attrib_info_by_idx ( + f->step_gid, + attrib_idx, + attrib_name, len_attrib_name, attrib_type, attrib_nelem)); - H5_CORE_API_RETURN (H5_SUCCESS); + H5_CORE_API_RETURN (ret_value); +} + +h5_err_t +h5_get_step_attrib_info_by_name ( + const h5_file_t f_, /*!< handle to open file */ + char* attrib_name, /*!< OUT: name of attribute */ + h5_int64_t* attrib_type, /*!< OUT: H5 type of attribute */ + h5_size_t* attrib_nelem /*!< OUT: number of elements */ + ) { + h5_file_p f = (h5_file_p)f_; + H5_CORE_API_ENTER (h5_err_t, + "f=%p, " + "attrib_name=%p, " + "attrib_type=%p, attrib_nelem=%p", + f, + attrib_name, + attrib_type, attrib_nelem); + CHECK_FILEHANDLE (f); + CHECK_TIMEGROUP (f); + TRY (ret_value = h5priv_get_attrib_info_by_name ( + f->step_gid, + attrib_name, + attrib_type, attrib_nelem)); + H5_CORE_API_RETURN (ret_value); } h5_err_t @@ -314,11 +189,12 @@ h5_read_file_attrib ( (long long int)attrib_type, attrib_value); CHECK_FILEHANDLE (f); - H5_CORE_API_RETURN (h5priv_read_attrib ( - f->root_gid, - attrib_name, - attrib_type, - attrib_value)); + TRY (ret_value = h5priv_read_attrib ( + f->root_gid, + attrib_name, + attrib_type, + attrib_value)); + H5_CORE_API_RETURN (ret_value); } h5_err_t @@ -338,11 +214,13 @@ h5_read_step_attrib ( attrib_value); CHECK_FILEHANDLE (f); CHECK_TIMEGROUP (f); - H5_CORE_API_RETURN (h5priv_read_attrib ( - f->step_gid, - attrib_name, - attrib_type, - attrib_value)); + + TRY (ret_value = h5priv_read_attrib ( + f->step_gid, + attrib_name, + attrib_type, + attrib_value)); + H5_CORE_API_RETURN (ret_value); } @@ -365,13 +243,14 @@ h5_write_file_attrib ( attrib_nelem); CHECK_FILEHANDLE (f); CHECK_WRITABLE_MODE (f); - H5_CORE_API_RETURN (h5priv_write_attrib ( - f->root_gid, - attrib_name, - attrib_type, - attrib_value, - attrib_nelem, - !is_appendonly (f))); + TRY (ret_value = h5priv_write_attrib ( + f->root_gid, + attrib_name, + attrib_type, + attrib_value, + attrib_nelem, + !is_appendonly (f))); + H5_CORE_API_RETURN (ret_value); } h5_err_t @@ -394,13 +273,14 @@ h5_write_step_attrib ( CHECK_FILEHANDLE (f); CHECK_TIMEGROUP (f); CHECK_WRITABLE_MODE (f); - H5_CORE_API_RETURN (h5priv_write_attrib ( - f->step_gid, - attrib_name, - attrib_type, - attrib_value, - attrib_nelem, - !is_appendonly (f))); + TRY (ret_value = h5priv_write_attrib ( + f->step_gid, + attrib_name, + attrib_type, + attrib_value, + attrib_nelem, + !is_appendonly (f))); + H5_CORE_API_RETURN (ret_value); } diff --git a/src/h5core/h5_debug.c b/src/h5core/h5_debug.c index 6856d3f..89d20ca 100644 --- a/src/h5core/h5_debug.c +++ b/src/h5core/h5_debug.c @@ -7,7 +7,7 @@ License: see file COPYING in top level of source distribution. */ -#include "h5core/h5_init.h" +#include "h5core/h5_debug.h" #include "private/h5_init.h" h5_int32_t h5_debug_level = H5_VERBOSE_ERROR; diff --git a/src/h5core/h5_errorhandling.c b/src/h5core/h5_errorhandling.c index 36a11b5..a063a77 100644 --- a/src/h5core/h5_errorhandling.c +++ b/src/h5core/h5_errorhandling.c @@ -7,7 +7,8 @@ License: see file COPYING in top level of source distribution. */ -#include "h5core/h5_init.h" +#include "h5core/h5_debug.h" +#include "h5core/h5_err.h" #include "private/h5_init.h" static h5_errorhandler_t h5_errhandler = h5_report_errorhandler; diff --git a/src/h5core/h5_file.c b/src/h5core/h5_file.c index 5c9a53e..563b927 100644 --- a/src/h5core/h5_file.c +++ b/src/h5core/h5_file.c @@ -11,10 +11,9 @@ #include #include -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" -#include "private/h5.h" +#include "private/h5_file.h" #include "private/h5_hdf5.h" #include "private/h5_model.h" @@ -22,7 +21,7 @@ #include "private/h5u_io.h" #include "private/h5b_io.h" -#include "h5core/h5_errorhandling.h" +#include "h5core/h5_err.h" #include "h5core/h5_syscall.h" /*! @@ -60,7 +59,7 @@ h5_get_hdf5_file( } /*! - Initialize H5Part + Initialize H5hut */ static herr_t hdf5_error_handler ( @@ -583,7 +582,8 @@ h5_close_hdf5 ( void ) { H5_CORE_API_ENTER (h5_err_t, "%s", ""); - H5_CORE_API_RETURN (hdf5_close ()); + TRY (ret_value = hdf5_close ()); + H5_CORE_API_RETURN (ret_value); } h5_err_t @@ -592,7 +592,8 @@ h5_flush_step ( ) { h5_file_p f = (h5_file_p)f_; H5_CORE_API_ENTER (h5_err_t, "f=%p", f); - H5_CORE_API_RETURN (hdf5_flush (f->step_gid, H5F_SCOPE_LOCAL)); + TRY (ret_value = hdf5_flush (f->step_gid, H5F_SCOPE_LOCAL)); + H5_CORE_API_RETURN (ret_value); } h5_err_t @@ -601,7 +602,8 @@ h5_flush_file ( ) { h5_file_p f = (h5_file_p)f_; H5_CORE_API_ENTER (h5_err_t, "f=%p", f); - H5_CORE_API_RETURN (hdf5_flush (f->file, H5F_SCOPE_GLOBAL)); + TRY (ret_value = hdf5_flush (f->file, H5F_SCOPE_GLOBAL)); + H5_CORE_API_RETURN (ret_value); } @@ -703,9 +705,10 @@ h5_get_num_steps( ) { h5_file_p f = (h5_file_p)f_; H5_CORE_API_ENTER (int, "f=%p", f); - H5_CORE_API_RETURN (hdf5_get_num_groups_matching_prefix ( - f->root_gid, - f->props->prefix_step_name)); + TRY (ret_value = hdf5_get_num_groups_matching_prefix ( + f->root_gid, + f->props->prefix_step_name)); + H5_CORE_API_RETURN (ret_value); } /*! diff --git a/src/h5core/h5_init.c b/src/h5core/h5_init.c index e964cd0..057e728 100644 --- a/src/h5core/h5_init.c +++ b/src/h5core/h5_init.c @@ -14,15 +14,12 @@ #include "config.h" -#include "h5core/h5_init.h" #include "private/h5_hdf5.h" #include "private/h5_mpi.h" #include "private/h5t_types.h" #include "private/h5t_tags.h" - - int h5_initialized = 0; h5_dta_types_t h5_dta_types; // type ids' for base & compound data types int h5_myproc = 0; // proc id @@ -39,33 +36,33 @@ create_array_types ( hsize_t dims[1] = { 3 }; TRY( h5_dta_types.h5_coord3d_t = hdf5_create_array_type ( - H5_FLOAT64_T, + H5_FLOAT64, 1, dims) ); TRY( h5_dta_types.h5_3glb_idx_t = hdf5_create_array_type ( - H5_ID_T, + H5_ID, 1, dims) ); dims[0] = 4; TRY( h5_dta_types.h5_4glb_idx_t = hdf5_create_array_type ( - H5_ID_T, + H5_ID, 1, dims) ); TRY( h5_dta_types.h5_4chk_idx_t = hdf5_create_array_type ( - H5_INT32_T, + H5_INT32, 1, dims) ); dims[0] = 6; TRY( h5_dta_types.h5_coord6d_t = hdf5_create_array_type ( - H5_FLOAT64_T, + H5_FLOAT64, 1, dims) ); @@ -80,14 +77,14 @@ create_vertex_type ( TRY( h5_dta_types.h5_vertex_t = hdf5_create_type ( - H5_COMPOUND_T, + H5_COMPOUND, sizeof (h5_glb_vertex_t)) ); TRY( hdf5_insert_type ( h5_dta_types.h5_vertex_t, "idx", HOFFSET (h5_glb_vertex_t, idx), - H5_ID_T) ); + H5_ID) ); TRY( hdf5_insert_type ( h5_dta_types.h5_vertex_t, @@ -106,44 +103,44 @@ create_triangle_type ( TRY( h5_dta_types.h5_triangle_t = hdf5_create_type ( - H5_COMPOUND_T, + H5_COMPOUND, sizeof (h5_glb_tri_t)) ); TRY( hdf5_insert_type ( h5_dta_types.h5_triangle_t, "idx", HOFFSET (h5_glb_tri_t, idx), - H5_ID_T) ); + H5_ID) ); TRY( hdf5_insert_type ( h5_dta_types.h5_triangle_t, "parent_idx", HOFFSET (h5_glb_tri_t, parent_idx), - H5_ID_T) ); + H5_ID) ); TRY( hdf5_insert_type ( h5_dta_types.h5_triangle_t, "child_idx", HOFFSET(h5_glb_tri_t, child_idx), - H5_ID_T) ); + H5_ID) ); TRY( hdf5_insert_type ( h5_dta_types.h5_triangle_t, "level_idx", HOFFSET(h5_glb_tri_t, level_idx), - H5_INT16_T) ); + H5_INT16) ); TRY( hdf5_insert_type ( h5_dta_types.h5_triangle_t, "refinement", HOFFSET(h5_glb_tri_t, refinement), - H5_INT16_T) ); + H5_INT16) ); TRY( hdf5_insert_type ( h5_dta_types.h5_triangle_t, "flags", HOFFSET(h5_glb_tri_t, flags), - H5_INT32_T) ); + H5_INT32) ); TRY( hdf5_insert_type ( h5_dta_types.h5_triangle_t, @@ -168,20 +165,20 @@ create_tag_types ( TRY ( h5_dta_types.h5t_glb_tag_idx_t = hdf5_create_type ( - H5_COMPOUND_T, + H5_COMPOUND, sizeof (h5t_glb_tag_idx_t)) ); TRY ( hdf5_insert_type ( h5_dta_types.h5t_glb_tag_idx_t, "eid", HOFFSET (h5t_glb_tag_idx_t, eid), - H5_ID_T) ); + H5_ID) ); TRY ( hdf5_insert_type ( h5_dta_types.h5t_glb_tag_idx_t, "idx", HOFFSET (h5t_glb_tag_idx_t, idx), - H5_ID_T) ); + H5_ID) ); H5_PRIV_FUNC_RETURN (H5_SUCCESS); } @@ -194,20 +191,20 @@ create_tet_type ( TRY( h5_dta_types.h5_tet_t = hdf5_create_type ( - H5_COMPOUND_T, + H5_COMPOUND, sizeof (h5_glb_tet_t)) ); TRY( hdf5_insert_type ( h5_dta_types.h5_tet_t, "idx", HOFFSET (h5_glb_tet_t, idx), - H5_ID_T) ); + H5_ID) ); TRY( hdf5_insert_type ( h5_dta_types.h5_tet_t, "parent_idx", HOFFSET (h5_glb_tet_t, parent_idx), - H5_ID_T) ); + H5_ID) ); TRY( hdf5_insert_type ( h5_dta_types.h5_tet_t, @@ -219,19 +216,19 @@ create_tet_type ( h5_dta_types.h5_tet_t, "level_idx", HOFFSET(h5_glb_tet_t, level_idx), - H5_INT16_T) ); + H5_INT16) ); TRY( hdf5_insert_type ( h5_dta_types.h5_tet_t, "refinement", HOFFSET(h5_glb_tet_t, refinement), - H5_INT16_T) ); + H5_INT16) ); TRY( hdf5_insert_type ( h5_dta_types.h5_tet_t, "flags", HOFFSET(h5_glb_tet_t, flags), - H5_INT32_T) ); + H5_INT32) ); TRY( hdf5_insert_type ( h5_dta_types.h5_tet_t, @@ -257,50 +254,50 @@ create_chunk_type ( H5_PRIV_FUNC_ENTER (h5_err_t, "%s", "void"); TRY( h5_dta_types.h5_chunk_t = hdf5_create_type ( - H5_COMPOUND_T, + H5_COMPOUND, sizeof (h5t_chunk_t)) ); TRY( hdf5_insert_type ( h5_dta_types.h5_chunk_t, "idx", HOFFSET (h5t_chunk_t, idx), - H5_INT32_T) ); + H5_INT32) ); TRY( hdf5_insert_type ( h5_dta_types.h5_chunk_t, "oct_idx", HOFFSET (h5t_chunk_t, oct_idx), - H5_INT32_T) ); + H5_INT32) ); TRY( hdf5_insert_type ( h5_dta_types.h5_chunk_t, "elem", HOFFSET (h5t_chunk_t, elem), - H5_ID_T) ); + H5_ID) ); TRY( hdf5_insert_type ( h5_dta_types.h5_chunk_t, "weight", HOFFSET (h5t_chunk_t, weight), - H5_ID_T) ); + H5_ID) ); TRY( hdf5_insert_type ( h5_dta_types.h5_chunk_t, "num_elems", HOFFSET (h5t_chunk_t, num_elems), - H5_UINT16_T) ); + H5_UINT16) ); // TRY( // hdf5_insert_type ( // h5_dta_types.h5_chunk_t, // "vtx", // HOFFSET (h5t_chunk_t, vtx), -// H5_INT64_T) ); +// H5_INT64) ); // TRY( // hdf5_insert_type ( // h5_dta_types.h5_chunk_t, // "num_vtx", // HOFFSET (h5t_chunk_t, num_vtx), -// H5_INT64_T) ); +// H5_INT64) ); H5_PRIV_FUNC_RETURN (H5_SUCCESS); } @@ -311,32 +308,32 @@ create_octree_type ( H5_PRIV_FUNC_ENTER (h5_err_t, "%s", "void"); TRY( h5_dta_types.h5_octree_t = hdf5_create_type ( - H5_COMPOUND_T, + H5_COMPOUND, sizeof (h5t_octant_t)) ); TRY( hdf5_insert_type ( h5_dta_types.h5_octree_t, "idx", HOFFSET (h5t_octant_t, idx), - H5_INT32_T) ); + H5_INT32) ); TRY( hdf5_insert_type ( h5_dta_types.h5_octree_t, "parent_idx", HOFFSET (h5t_octant_t, parent_idx), - H5_INT32_T) ); + H5_INT32) ); TRY( hdf5_insert_type ( h5_dta_types.h5_octree_t, "child_idx", HOFFSET (h5t_octant_t, child_idx), - H5_INT32_T) ); + H5_INT32) ); TRY( hdf5_insert_type ( h5_dta_types.h5_octree_t, "level_idx", HOFFSET (h5t_octant_t, level_idx), - H5_INT16_T) ); + H5_INT16) ); // TRY( // hdf5_insert_type ( // h5_dta_types.h5_octree_t, @@ -348,7 +345,7 @@ create_octree_type ( h5_dta_types.h5_octree_t, "userlevels", HOFFSET (h5t_octant_t, userlevels), - H5_INT32_T) ); + H5_INT32) ); H5_PRIV_FUNC_RETURN (H5_SUCCESS); } @@ -360,7 +357,7 @@ create_userdata_type ( H5_PRIV_FUNC_ENTER (h5_err_t, "%s", "void"); TRY( h5_dta_types.h5_userdata_t = hdf5_create_type ( - H5_COMPOUND_T, + H5_COMPOUND, sizeof (h5t_oct_userdata_t)) ); TRY( hdf5_insert_type ( @@ -678,10 +675,10 @@ h5_initialize ( exit (42); } #endif - h5_dta_types.h5_glb_idx_t = H5_INT64_T; - h5_dta_types.h5_int64_t = H5_INT64_T; - h5_dta_types.h5_float64_t = H5_FLOAT64_T; - h5_dta_types.h5_int32_t = H5_INT32_T; + h5_dta_types.h5_glb_idx_t = H5_INT64; + h5_dta_types.h5_int64_t = H5_INT64; + h5_dta_types.h5_float64_t = H5_FLOAT64; + h5_dta_types.h5_int32_t = H5_INT32; TRY (create_array_types ()); TRY (create_vertex_type ()); diff --git a/src/h5core/h5_model.c b/src/h5core/h5_model.c index e92df82..d0460da 100644 --- a/src/h5core/h5_model.c +++ b/src/h5core/h5_model.c @@ -9,7 +9,6 @@ #include -#include "h5core/h5_init.h" #include "private/h5_types.h" #include "private/h5_hdf5.h" #include "private/h5_model.h" @@ -59,67 +58,6 @@ h5_set_step ( H5_CORE_API_RETURN (H5_SUCCESS); } -/*! - Normalize HDF5 type -*/ -h5_int64_t -h5priv_normalize_h5_type ( - hid_t type - ) { - H5_CORE_API_ENTER (h5_int64_t, - "type=%lld", - (long long int)type); - H5T_class_t tclass; - int size; - TRY (tclass = H5Tget_class (type)); - TRY (size = H5Tget_size (type)); - - switch (tclass){ - case H5T_INTEGER: - if (size==8) { - H5_CORE_API_LEAVE (H5_INT64_T); - } else if (size==4) { - H5_CORE_API_LEAVE (H5_INT32_T); - } else if (size==2) { - H5_CORE_API_LEAVE (H5_INT16_T); - } - break; - case H5T_FLOAT: - if ( size==8 ) { - H5_CORE_API_LEAVE (H5_FLOAT64_T); - } - else if ( size==4 ) { - H5_CORE_API_LEAVE (H5_FLOAT32_T); - } - break; - case H5T_STRING: - H5_CORE_API_LEAVE (H5_STRING_T); - default: - ; /* NOP */ - } - H5_CORE_API_RETURN (h5_warn ("Unknown type %d", (int)type)); -} - -h5_int64_t -h5priv_get_dataset_type( - const hid_t group_id, - const char* dset_name - ) { - H5_CORE_API_ENTER (h5_int64_t, - "group_id=%lld, dset_name='%s'", - (long long int)group_id, dset_name); - hid_t dset_id; - hid_t hdf5_type; - h5_int64_t type; - TRY (dset_id = hdf5_open_dataset (group_id, dset_name)); - TRY (hdf5_type = hdf5_get_dataset_type (dset_id)); - TRY (type = h5priv_normalize_h5_type (hdf5_type)); - TRY (hdf5_close_type (hdf5_type)); - TRY (hdf5_close_dataset (dset_id)); - - H5_CORE_API_RETURN (type); -} - /* returns: TRUE (value > 0): if step exists @@ -138,9 +76,8 @@ h5_has_step ( "%s#%0*lld", f->props->prefix_step_name, f->props->width_step_idx, (long long)step_idx); - h5_err_t exists; - TRY (exists = hdf5_link_exists (f->file, name)); - H5_CORE_API_RETURN (exists); + TRY (ret_value = hdf5_link_exists (f->file, name)); + H5_CORE_API_RETURN (ret_value); } h5_err_t @@ -154,7 +91,7 @@ h5priv_normalize_dataset_name ( name2[H5_DATANAME_LEN-1] = '\0'; h5_warn ("Truncated name '%s' to '%s'.", name, name2); } else { - strcpy ( name2, name ); + strcpy (name2, name); } if ( strcmp( name2, H5BLOCK_GROUPNAME_BLOCK ) == 0 ) { @@ -167,4 +104,3 @@ h5priv_normalize_dataset_name ( } H5_CORE_API_RETURN (H5_SUCCESS); } - diff --git a/src/h5core/h5b_attribs.c b/src/h5core/h5b_attribs.c index 3c4f94b..1e50c70 100644 --- a/src/h5core/h5b_attribs.c +++ b/src/h5core/h5b_attribs.c @@ -6,11 +6,9 @@ License: see file COPYING in top level of source distribution. */ -#include "h5core/h5_init.h" - #include "private/h5_debug.h" -#include "private/h5.h" +#include "private/h5_file.h" #include "private/h5_hdf5.h" #include "private/h5_attribs.h" @@ -75,13 +73,13 @@ h5b_read_field_attrib ( CHECK_FILEHANDLE (f); CHECK_TIMEGROUP (f); - TRY( h5bpriv_open_field_group(f, field_name) ); + TRY (h5bpriv_open_field_group(f, field_name)); - TRY( h5priv_read_attrib ( - f->b->field_gid, - attrib_name, - attrib_type, - buffer) ); + TRY (h5priv_read_attrib ( + f->b->field_gid, + attrib_name, + attrib_type, + buffer)); H5_CORE_API_RETURN (H5_SUCCESS); } @@ -105,43 +103,10 @@ h5b_has_field_attrib ( TRY (h5bpriv_open_field_group(f, field_name)); - H5_CORE_API_RETURN ( - hdf5_attribute_exists ( - f->b->field_gid, - attrib_name) ); -} - -h5_err_t -h5b_get_field_attrib_info_by_name ( - const h5_file_t fh, /*!< IN: file handle */ - const char* const field_name, /*!< IN: field name */ - const char* const attrib_name, /*!< IN: attribute name */ - h5_int64_t* attrib_type, /*!< OUT: attribute type */ - h5_size_t* attrib_nelem /*!< OUT: number of elements */ - ) { - h5_file_p f = (h5_file_p)fh; - H5_CORE_API_ENTER (h5_err_t, - "f=%p, " - "field_name='%s', " - "attrib_name=%s, " - "attrib_type=%p, " - "attrib_nelem=%p", - f, - field_name, - attrib_name, - attrib_type, - attrib_nelem); - CHECK_FILEHANDLE (f); - CHECK_TIMEGROUP (f); - - TRY (h5bpriv_open_field_group(f, field_name)); - - H5_CORE_API_RETURN ( - h5priv_get_attrib_info_by_name ( - f->b->field_gid, - attrib_name, - attrib_type, - attrib_nelem)); + TRY (ret_value = hdf5_attribute_exists ( + f->b->field_gid, + attrib_name)); + H5_CORE_API_RETURN (ret_value); } h5_ssize_t @@ -156,7 +121,8 @@ h5b_get_num_field_attribs ( TRY (h5bpriv_open_field_group(f, field_name)); - H5_CORE_API_RETURN (hdf5_get_num_attribute (f->b->field_gid)); + TRY (ret_value = hdf5_get_num_attribute (f->b->field_gid)); + H5_CORE_API_RETURN (ret_value); } h5_err_t @@ -175,27 +141,49 @@ h5b_get_field_attrib_info_by_idx ( "field_name='%s', " "attrib_idx=%llu, " "attrib_name=%p, len_attrib_name=%llu, " - "attrib_type=%p, " - "attrib_nelem=%p", + "attrib_type=%p, attrib_nelem=%p", f, field_name, (long long unsigned)attrib_idx, attrib_name, (long long unsigned)len_attrib_name, - attrib_type, - attrib_nelem); + attrib_type, attrib_nelem); CHECK_FILEHANDLE (f); CHECK_TIMEGROUP (f); - TRY (h5bpriv_open_field_group(f, field_name)); + TRY (ret_value = h5priv_get_attrib_info_by_idx ( + f->b->field_gid, + attrib_idx, + attrib_name, len_attrib_name, + attrib_type, attrib_nelem)); + H5_CORE_API_RETURN (ret_value); +} - H5_CORE_API_RETURN ( - h5priv_get_attrib_info_by_idx ( - f->b->field_gid, - attrib_idx, - attrib_name, - len_attrib_name, - attrib_type, - attrib_nelem)); +h5_err_t +h5b_get_field_attrib_info_by_name ( + const h5_file_t fh, /*!< IN: file handle */ + const char* const field_name, /*!< IN: field name */ + const char* const attrib_name, /*!< IN: attribute name */ + h5_int64_t* attrib_type, /*!< OUT: attribute type */ + h5_size_t* attrib_nelem /*!< OUT: number of elements */ + ) { + h5_file_p f = (h5_file_p)fh; + H5_CORE_API_ENTER (h5_err_t, + "f=%p, " + "field_name='%s', " + "attrib_name=%s, " + "attrib_type=%p, attrib_nelem=%p", + f, + field_name, + attrib_name, + attrib_type, attrib_nelem); + CHECK_FILEHANDLE (f); + CHECK_TIMEGROUP (f); + TRY (h5bpriv_open_field_group(f, field_name)); + TRY (ret_value = h5priv_get_attrib_info_by_name ( + f->b->field_gid, + attrib_name, + attrib_type, attrib_nelem)); + H5_CORE_API_RETURN (ret_value); } static inline h5_err_t @@ -264,7 +252,7 @@ h5b_set_3d_field_coords ( (h5_file_t)f, field_name, attrib_name, - H5_FLOAT64_T, + H5_FLOAT64, coords, n_coords)); @@ -300,7 +288,7 @@ h5b_get_3d_field_coords ( (h5_file_t)f, field_name, attrib_name, - H5_FLOAT64_T, + H5_FLOAT64, coords)); H5_CORE_API_RETURN (H5_SUCCESS); diff --git a/src/h5core/h5b_io.c b/src/h5core/h5b_io.c index 3c04833..4ac6538 100644 --- a/src/h5core/h5b_io.c +++ b/src/h5core/h5b_io.c @@ -7,7 +7,6 @@ License: see file COPYING in top level of source distribution. */ -#include "h5core/h5_init.h" #include "private/h5_types.h" #include "private/h5_hdf5.h" @@ -209,17 +208,18 @@ _write_data ( h5_err_t exists; TRY (exists = hdf5_link_exists (b->field_gid, data_name)); if ( exists > 0 ) { - TRY (dataset = hdf5_open_dataset (b->field_gid, data_name)); + TRY (dataset = hdf5_open_dataset_by_name (b->field_gid, data_name)); hid_t type_file; TRY( type_file = hdf5_get_dataset_type (dataset) ); if ( type != type_file ) { - H5_PRIV_FUNC_LEAVE (h5_error( - H5_ERR_HDF5, - "Field '%s' already has type '%s' " - "but was written as '%s'.", - field_name, - hdf5_get_type_name (type_file), - hdf5_get_type_name (type))); + H5_PRIV_FUNC_LEAVE ( + h5_error( + H5_ERR_HDF5, + "Field '%s' already has type '%s' " + "but was written as '%s'.", + field_name, + hdf5_get_type_name (type_file), + hdf5_get_type_name (type))); } } else { TRY (dataset = hdf5_create_dataset( @@ -388,7 +388,7 @@ read_data ( hid_t dataset; h5b_fdata_t *b = f->b; - TRY (dataset = hdf5_open_dataset (b->field_gid, dataset_name)); + TRY (dataset = hdf5_open_dataset_by_name (b->field_gid, dataset_name)); TRY (_select_hyperslab_for_reading (f, dataset) ); TRY (h5priv_start_throttle (f)); TRY (hdf5_read_dataset( diff --git a/src/h5core/h5b_model.c b/src/h5core/h5b_model.c index 615e2cf..4f97ae4 100644 --- a/src/h5core/h5b_model.c +++ b/src/h5core/h5b_model.c @@ -10,10 +10,9 @@ #include #include -#include "h5core/h5_init.h" #include "h5core/h5_syscall.h" -#include "private/h5.h" +#include "private/h5_file.h" #include "private/h5_hdf5.h" #include "private/h5_model.h" @@ -43,9 +42,8 @@ h5b_has_field_data ( h5_file_p f = (h5_file_p)fh; H5_CORE_API_ENTER (h5_err_t, "f=%p", f); CHECK_FILEHANDLE (f); - h5_err_t exists; - TRY (exists = hdf5_link_exists (f->step_gid, H5BLOCK_GROUPNAME_BLOCK)); - H5_CORE_API_RETURN (exists); + TRY (ret_value = hdf5_link_exists (f->step_gid, H5BLOCK_GROUPNAME_BLOCK)); + H5_CORE_API_RETURN (ret_value); } static void @@ -729,7 +727,7 @@ h5b_3d_get_chunk ( hid_t plist_id; hsize_t hdims[3]; - TRY (dataset_id = hdf5_open_dataset (b->field_gid, H5_BLOCKNAME_X)); + TRY (dataset_id = hdf5_open_dataset_by_name (b->field_gid, H5_BLOCKNAME_X)); TRY (plist_id = hdf5_get_dataset_create_plist (dataset_id)); TRY (hdf5_get_chunk_property (plist_id, 3, hdims)); TRY (hdf5_close_property (plist_id)); @@ -920,10 +918,11 @@ h5b_get_num_fields ( ) { h5_file_p f = (h5_file_p)fh; H5_CORE_API_ENTER (h5_ssize_t, "f=%p", f); - CHECK_TIMEGROUP( f ); + CHECK_TIMEGROUP (f); TRY (h5bpriv_open_block_group(f)); - H5_CORE_API_RETURN (hdf5_get_num_objs_in_group (f->b->block_gid)); + TRY (ret_value = hdf5_get_num_objs_in_group (f->b->block_gid)); + H5_CORE_API_RETURN (ret_value); } h5_err_t @@ -936,10 +935,10 @@ h5b_has_field ( "f=%p, name='%s'", f, name); CHECK_TIMEGROUP (f); - CHECK_TIMEGROUP (f); const char* path[] = { H5BLOCK_GROUPNAME_BLOCK, name }; - H5_CORE_API_RETURN (h5priv_link_exists_(f->step_gid, path, 2)); + TRY (ret_value = h5priv_link_exists_(f->step_gid, path, 2)); + H5_CORE_API_RETURN (ret_value); } h5_err_t @@ -956,37 +955,39 @@ h5b_get_field_info_by_name ( "f=%p, name='%s', " "field_rank=%p, field_dims=%p, elem_rank=%p, type=%p", f, name, field_rank, field_dims, elem_rank, type); - CHECK_TIMEGROUP( f ); + CHECK_TIMEGROUP (f); - hsize_t dims[16]; /* give it plenty of space even though we don't expect rank > 3 */ - hsize_t _field_rank, _elem_rank; - h5_size_t i, j; + /* give it plenty of space even though we don't expect rank > 3 */ + hsize_t dims[16]; TRY( h5bpriv_open_field_group(f, name) ); hid_t dataset_id; hid_t dataspace_id; - TRY (dataset_id = hdf5_open_dataset (f->b->field_gid, H5_BLOCKNAME_X)); + TRY (dataset_id = hdf5_open_dataset_by_name ( + f->b->field_gid, H5_BLOCKNAME_X)); TRY (dataspace_id = hdf5_get_dataset_space (dataset_id) ); - TRY (_field_rank = hdf5_get_dims_of_dataspace (dataspace_id, dims, NULL)); - if (field_rank) *field_rank = (h5_size_t) _field_rank; + hsize_t rank; + TRY (rank = hdf5_get_dims_of_dataspace (dataspace_id, dims, NULL)); + if (field_rank) *field_rank = (h5_size_t)rank; if (field_dims) { - for ( i = 0, j = _field_rank-1; i < _field_rank; i++, j-- ) + size_t i, j; + for (i = 0, j = rank-1; i < rank; i++, j-- ) field_dims[i] = (h5_size_t)dims[j]; } - TRY (_elem_rank = hdf5_get_num_objs_in_group (f->b->field_gid)); - if (elem_rank) *elem_rank = (h5_size_t) _elem_rank; - - hid_t h5type; - TRY (h5type = hdf5_get_dataset_type (dataset_id)); - - if ( type ) - TRY( *type = h5priv_normalize_h5_type(h5type) ); - + if (elem_rank) { + hsize_t _elem_rank; + TRY (_elem_rank = hdf5_get_num_objs_in_group (f->b->field_gid)); + *elem_rank = (h5_size_t) _elem_rank; + } + if (type) { + TRY (*type = h5priv_get_native_dataset_type (dataset_id)); + TRY (*type = h5priv_map_hdf5_type_to_enum(*type)); + } TRY (hdf5_close_dataspace (dataspace_id)); TRY (hdf5_close_dataset (dataset_id)); @@ -1022,8 +1023,9 @@ h5b_get_field_info ( name, (size_t)len_name) ); - H5_CORE_API_RETURN (h5b_get_field_info_by_name ( - (h5_file_t)f, - name, field_rank, field_dims, elem_rank, type)); + TRY (h5b_get_field_info_by_name ( + (h5_file_t)f, + name, field_rank, field_dims, elem_rank, type)); + H5_CORE_API_RETURN (H5_SUCCESS); } diff --git a/src/h5core/h5t_adjacencies.c b/src/h5core/h5t_adjacencies.c index 6c4653b..92237f3 100644 --- a/src/h5core/h5t_adjacencies.c +++ b/src/h5core/h5t_adjacencies.c @@ -7,13 +7,11 @@ License: see file COPYING in top level of source distribution. */ -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" -#include "private/h5.h" +#include "private/h5_file.h" #include "private/h5t_types.h" #include "private/h5t_adjacencies.h" -#include "private/h5t_map.h" #include "private/h5t_core.h" #include @@ -28,7 +26,8 @@ h5t_get_adjacencies ( H5_CORE_API_ENTER (h5_err_t, "m=%p, entity_id=%llu, dim=%d, list=%p", m, (long long unsigned)entity_id, dim, list); - H5_CORE_API_RETURN (h5tpriv_get_adjacencies (m, entity_id, dim, list)); + TRY (ret_value = h5tpriv_get_adjacencies (m, entity_id, dim, list)); + H5_CORE_API_RETURN (ret_value); } h5_err_t @@ -38,7 +37,8 @@ h5t_release_list_of_adjacencies ( ) { H5_CORE_API_ENTER (h5_err_t, "m=%p, list=%p", m, list); UNUSED_ARGUMENT (m); - H5_CORE_API_RETURN (h5priv_free_loc_idlist (list)); + TRY (ret_value = h5priv_free_loc_idlist (list)); + H5_CORE_API_RETURN (ret_value); } h5_err_t @@ -54,5 +54,6 @@ h5t_find_te2 ( (long long)face_idx, (long long)elem_idx, retval); - H5_CORE_API_RETURN (h5tpriv_find_te2 (m,face_idx,elem_idx,retval)); + TRY (ret_value = h5tpriv_find_te2 (m,face_idx,elem_idx,retval)); + H5_CORE_API_RETURN (ret_value); } diff --git a/src/h5core/h5t_io.c b/src/h5core/h5t_io.c index 891bcff..1fbc427 100644 --- a/src/h5core/h5t_io.c +++ b/src/h5core/h5t_io.c @@ -7,7 +7,6 @@ License: see file COPYING in top level of source distribution. */ -#include "h5core/h5_init.h" #include "private/h5_types.h" #include @@ -37,7 +36,6 @@ int dont_use_parmetis = 0; // 2 distribute geometrically with preferred direction -#include "h5core/h5_init.h" #include "private/h5t_types.h" #include "private/h5t_model.h" #include "private/h5t_map.h" @@ -422,7 +420,7 @@ write_vertices_chk ( H5_PRIV_FUNC_ENTER (h5_err_t, "m=%p", m); assert (m->num_leaf_levels > 0); hid_t dset_id; - TRY (dset_id = hdf5_open_dataset (m->mesh_gid, m->dsinfo_vertices.name)); + TRY (dset_id = hdf5_open_dataset_by_name (m->mesh_gid, m->dsinfo_vertices.name)); hid_t mspace_id; hid_t dspace_id; @@ -625,7 +623,7 @@ write_elems_chk ( // could check here that glb_elems are in correct order hid_t dset_id; - TRY (dset_id = hdf5_open_dataset (m->mesh_gid, m->dsinfo_elems.name)); + TRY (dset_id = hdf5_open_dataset_by_name (m->mesh_gid, m->dsinfo_elems.name)); hid_t dspace_id; hid_t mspace_id; hsize_t hstart = 0; @@ -800,7 +798,7 @@ write_chunks ( TRY (h5priv_write_attrib ( m->mesh_gid, "__num_chunks__", - H5_INT32_T, + H5_INT32, &m->chunks->num_alloc, 1, 1)); @@ -808,7 +806,7 @@ write_chunks ( TRY (h5priv_write_attrib ( m->mesh_gid, "__num_chk_levels__", - H5_INT16_T, // WARNING should maybe be uint + H5_INT16, // WARNING should maybe be uint &m->chunks->num_levels, 1, 1)); @@ -816,7 +814,7 @@ write_chunks ( TRY (h5priv_write_attrib ( m->mesh_gid, "__num_chk_p_level__", - H5_INT32_T, + H5_INT32, m->chunks->num_chunks_p_level, m->chunks->num_levels, 1)); @@ -908,7 +906,7 @@ write_octree ( TRY (h5priv_write_attrib ( m->mesh_gid, "__curr_oct_idx__", - H5_INT32_T, + H5_INT32, &m->octree->current_oct_idx, 1, 1)); @@ -916,21 +914,21 @@ write_octree ( TRY (h5priv_write_attrib ( m->mesh_gid, "__oct_maxpoints__", - H5_INT32_T, + H5_INT32, &m->octree->maxpoints, 1, 1)); TRY (h5priv_write_attrib ( m->mesh_gid, "__oct_size_userdata__", - H5_INT32_T, + H5_INT32, &m->octree->size_userdata, 1, 1)); TRY (h5priv_write_attrib ( m->mesh_gid, "__oct_bounding_box__", - H5_FLOAT64_T, + H5_FLOAT64, m->octree->bounding_box, 6, 1)); @@ -1039,7 +1037,7 @@ write_weights ( TRY (h5priv_write_attrib ( m->mesh_gid, "__num_weights__", - H5_INT32_T, + H5_INT32, &m->num_weights, 1, 1)); @@ -1104,7 +1102,7 @@ read_vertices ( ) { H5_PRIV_FUNC_ENTER (h5_err_t, "m=%p", m); hid_t dset_id; - TRY (dset_id = hdf5_open_dataset (m->mesh_gid, m->dsinfo_vertices.name)); + TRY (dset_id = hdf5_open_dataset_by_name (m->mesh_gid, m->dsinfo_vertices.name)); hid_t mspace_id = H5S_ALL; hid_t dspace_id = H5S_ALL; @@ -1169,7 +1167,7 @@ read_elems ( m, (long long)start, (long long)count); hid_t dset_id; - TRY (dset_id = hdf5_open_dataset (m->mesh_gid, m->dsinfo_elems.name)); + TRY (dset_id = hdf5_open_dataset_by_name (m->mesh_gid, m->dsinfo_elems.name)); hid_t mspace_id; hsize_t hcount = (hsize_t)count; TRY (mspace_id = hdf5_create_dataspace (1, &hcount, NULL)); @@ -1720,7 +1718,7 @@ read_octree ( ) { H5_PRIV_FUNC_ENTER (h5_err_t, "m=%p", m); hid_t dset_id, dset_id2; - TRY (dset_id = hdf5_open_dataset (m->mesh_gid, m->dsinfo_octree.name)); + TRY (dset_id = hdf5_open_dataset_by_name (m->mesh_gid, m->dsinfo_octree.name)); hid_t mspace_id = H5S_ALL; hid_t dspace_id = H5S_ALL; @@ -1732,22 +1730,22 @@ read_octree ( TRY (h5priv_read_attrib ( m->mesh_gid, "__curr_oct_idx__", - H5_INT32_T, + H5_INT32, &oct_size)); TRY (h5priv_read_attrib ( m->mesh_gid, "__oct_maxpoints__", - H5_INT32_T, + H5_INT32, &maxpoints)); TRY (h5priv_read_attrib ( m->mesh_gid, "__oct_size_userdata__", - H5_INT32_T, + H5_INT32, &size_userdata)); TRY (h5priv_read_attrib ( m->mesh_gid, "__oct_bounding_box__", - H5_FLOAT64_T, + H5_FLOAT64, bounding_box)) h5t_octant_t* octants; h5t_oct_userdata_t* userdata; @@ -1771,7 +1769,8 @@ read_octree ( octants)); if (size_userdata > 0) { - TRY (dset_id2 = hdf5_open_dataset (m->mesh_gid, m->dsinfo_userdata.name)); + TRY (dset_id2 = hdf5_open_dataset_by_name ( + m->mesh_gid, m->dsinfo_userdata.name)); TRY (hdf5_read_dataset ( dset_id2, m->dsinfo_userdata.type_id, @@ -1798,7 +1797,7 @@ read_weights ( ) { H5_PRIV_FUNC_ENTER (h5_err_t, "m=%p", m); hid_t dset_id; - TRY (dset_id = hdf5_open_dataset (m->mesh_gid, m->dsinfo_weights.name)); + TRY (dset_id = hdf5_open_dataset_by_name (m->mesh_gid, m->dsinfo_weights.name)); hid_t mspace_id = H5S_ALL; hid_t dspace_id = H5S_ALL; @@ -1806,7 +1805,7 @@ read_weights ( TRY (h5priv_read_attrib ( m->mesh_gid, "__num_weights__", - H5_INT32_T, + H5_INT32, &m->num_weights)); TRY (m->weights = h5_calloc (m->num_weights * m->num_glb_elems[m->num_leaf_levels-1], sizeof (*m->weights))); @@ -1848,7 +1847,7 @@ read_chunks ( ) { H5_PRIV_FUNC_ENTER (h5_err_t, "m=%p", m); hid_t dset_id; - TRY (dset_id = hdf5_open_dataset (m->mesh_gid, m->dsinfo_chunks.name)); + TRY (dset_id = hdf5_open_dataset_by_name (m->mesh_gid, m->dsinfo_chunks.name)); hid_t mspace_id = H5S_ALL; hid_t dspace_id = H5S_ALL; @@ -1856,13 +1855,13 @@ read_chunks ( TRY (h5priv_read_attrib ( m->mesh_gid, "__num_chunks__", - H5_INT32_T, + H5_INT32, &m->chunks->num_alloc)); m->chunks->curr_idx = m->chunks->num_alloc -1; TRY (h5priv_read_attrib ( m->mesh_gid, "__num_chk_levels__", - H5_INT16_T, + H5_INT16, &m->chunks->num_levels)); TRY (m->chunks->num_chunks_p_level = @@ -1871,7 +1870,7 @@ read_chunks ( TRY (h5priv_read_attrib ( m->mesh_gid, "__num_chk_p_level__", - H5_INT32_T, + H5_INT32, m->chunks->num_chunks_p_level)); TRY (m->chunks->chunks = h5_calloc (m->chunks->num_alloc, sizeof (*m->chunks->chunks))); @@ -2587,7 +2586,7 @@ read_chunked_elements ( TRY (get_list_of_proc (m, *my_procs, list_of_chunks, num_interior_chunks)); hid_t dset_id; - TRY (dset_id = hdf5_open_dataset (m->mesh_gid, m->dsinfo_elems.name)); + TRY (dset_id = hdf5_open_dataset_by_name (m->mesh_gid, m->dsinfo_elems.name)); hid_t mspace_id; // create memspace @@ -2838,7 +2837,7 @@ read_elems_part ( seloper = H5S_SELECT_OR; } hid_t dset_id; - TRY (dset_id = hdf5_open_dataset (m->mesh_gid, m->dsinfo_elems.name)); + TRY (dset_id = hdf5_open_dataset_by_name (m->mesh_gid, m->dsinfo_elems.name)); TRY (hdf5_read_dataset ( dset_id, m->dsinfo_elems.type_id, diff --git a/src/h5core/h5t_map.c b/src/h5core/h5t_map.c index 12793ef..b868859 100644 --- a/src/h5core/h5t_map.c +++ b/src/h5core/h5t_map.c @@ -109,11 +109,15 @@ h5t_map_global_vertex_idx2local ( H5_CORE_API_ENTER (h5_loc_idx_t, "m=%p, glb_idx=%lld", m, (long long)glb_idx); if (glb_idx < 0) return -1; - h5_loc_idx_t loc_idx = h5priv_search_idxmap (&m->map_vertex_g2l, glb_idx); // loc_idx is position in map + // loc_idx is position in map + h5_loc_idx_t loc_idx = h5priv_search_idxmap (&m->map_vertex_g2l, glb_idx); if (loc_idx < 0) { - H5_CORE_API_LEAVE (h5tpriv_error_global_id_nexist ("vertex", glb_idx)); + H5_CORE_API_LEAVE ( + h5tpriv_error_global_id_nexist ("vertex", glb_idx)); } - H5_CORE_API_RETURN (m->map_vertex_g2l.items[loc_idx].loc_idx); // loc_idx is position in m->vertices! + // loc_idx is position in m->vertices! + TRY (ret_value = m->map_vertex_g2l.items[loc_idx].loc_idx); + H5_CORE_API_RETURN (ret_value); } h5_err_t @@ -315,8 +319,9 @@ h5tpriv_get_loc_vtx_idx_of_vtx ( (long long unsigned)*vertex_index); h5_loc_idx_t face_idx = h5tpriv_get_face_idx (entity_id); h5_loc_idx_t elem_idx = h5tpriv_get_elem_idx (entity_id); - H5_CORE_API_RETURN (h5tpriv_get_loc_vtx_idx_of_vtx2 ( - m, face_idx, elem_idx, vertex_index)); + TRY (ret_value = h5tpriv_get_loc_vtx_idx_of_vtx2 ( + m, face_idx, elem_idx, vertex_index)); + H5_CORE_API_RETURN (ret_value); } h5_err_t @@ -352,8 +357,10 @@ h5t_get_loc_vertex_indices_of_edge ( vertex_indices); h5_loc_idx_t face_idx = h5tpriv_get_face_idx (entity_id); h5_loc_idx_t elem_idx = h5tpriv_get_elem_idx (entity_id); - H5_CORE_API_RETURN (h5t_get_loc_vertex_indices_of_edge2 ( - m, face_idx, elem_idx, vertex_indices)); + + TRY (ret_value = h5t_get_loc_vertex_indices_of_edge2 ( + m, face_idx, elem_idx, vertex_indices)); + H5_CORE_API_RETURN (ret_value); } /*! @@ -399,8 +406,9 @@ h5t_get_loc_vertex_indices_of_triangle ( vertex_indices); h5_loc_idx_t face_idx = h5tpriv_get_face_idx (entity_id); h5_loc_idx_t elem_idx = h5tpriv_get_elem_idx (entity_id); - H5_CORE_API_RETURN (h5t_get_loc_vertex_indices_of_triangle2 ( - m, face_idx, elem_idx, vertex_indices)); + TRY (ret_value = h5t_get_loc_vertex_indices_of_triangle2 ( + m, face_idx, elem_idx, vertex_indices)); + H5_CORE_API_RETURN (ret_value); } h5_err_t diff --git a/src/h5core/h5t_model.c b/src/h5core/h5t_model.c index 557b431..0ff0fd9 100644 --- a/src/h5core/h5t_model.c +++ b/src/h5core/h5t_model.c @@ -7,18 +7,17 @@ License: see file COPYING in top level of source distribution. */ -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" -#include "private/h5.h" +#include "private/h5_file.h" #include "private/h5_mpi.h" -#include "private/h5_errorhandling.h" +#include "private/h5_err.h" #include "private/h5_attribs.h" #include "private/h5_hdf5.h" #include "private/h5t_types.h" -#include "private/h5t_errorhandling.h" +#include "private/h5t_err.h" #include "private/h5t_model.h" #include "private/h5t_adjacencies.h" #include "private/h5t_io.h" @@ -491,7 +490,8 @@ h5t_get_num_tetmeshes ( const h5_file_t fh ) { H5_CORE_API_ENTER (h5_ssize_t, "f=%p", (h5_file_p)fh); - H5_CORE_API_RETURN (get_num_meshes (fh, TETRAHEDRAL_MESHES_GRPNAME)); + TRY (ret_value = get_num_meshes (fh, TETRAHEDRAL_MESHES_GRPNAME)); + H5_CORE_API_RETURN (ret_value); } h5_ssize_t @@ -499,7 +499,8 @@ h5t_get_num_trimeshes ( const h5_file_t fh ) { H5_CORE_API_ENTER (h5_ssize_t, "f=%p", (h5_file_p)fh); - H5_CORE_API_RETURN (get_num_meshes (fh, TRIANGLE_MESHES_GRPNAME)); + TRY (ret_value = get_num_meshes (fh, TRIANGLE_MESHES_GRPNAME)); + H5_CORE_API_RETURN (ret_value); } /*! diff --git a/src/h5core/h5t_octree.c b/src/h5core/h5t_octree.c index 9879528..4b44a1a 100644 --- a/src/h5core/h5t_octree.c +++ b/src/h5core/h5t_octree.c @@ -2079,8 +2079,10 @@ get_sibling( ) { H5_PRIV_FUNC_ENTER (h5_err_t, "octree=%p, oct_idx=%d", octree, oct_idx); assert (oct_idx >0); - H5_PRIV_FUNC_RETURN (octree->octants[octree->octants[oct_idx].parent_idx].child_idx); + H5_PRIV_FUNC_RETURN ( + octree->octants[octree->octants[oct_idx].parent_idx].child_idx); } + h5_oct_idx_t H5t_get_sibling(h5t_octree_t* octree, h5_oct_idx_t oct_idx) { return get_sibling(octree, oct_idx); } diff --git a/src/h5core/h5t_retrieve.c b/src/h5core/h5t_retrieve.c index 6a2d228..217f504 100644 --- a/src/h5core/h5t_retrieve.c +++ b/src/h5core/h5t_retrieve.c @@ -7,13 +7,12 @@ License: see file COPYING in top level of source distribution. */ -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" -#include "private/h5.h" +#include "private/h5_file.h" #include "private/h5t_types.h" -#include "private/h5t_errorhandling.h" +#include "private/h5t_err.h" #include "private/h5t_map.h" #include "private/h5t_model.h" #include "private/h5t_access.h" @@ -93,7 +92,8 @@ iterate_boundary_facets ( } } while (!h5tpriv_is_boundary_facet (it->mesh, it->elem_idx, it->face_idx)); int type = h5tpriv_ref_elem_get_entity_type (it, dim); - H5_PRIV_FUNC_RETURN (h5tpriv_build_entity_id (type, it->face_idx, it->elem_idx)); + TRY (ret_value = h5tpriv_build_entity_id (type, it->face_idx, it->elem_idx)); + H5_PRIV_FUNC_RETURN (ret_value); } /*! @@ -271,7 +271,8 @@ h5t_release_entity_iterator ( h5t_iterator_t* iter ) { H5_CORE_API_ENTER (h5_err_t, "iter=%p", iter); - H5_CORE_API_RETURN (h5_free (iter)); + TRY (ret_value = h5_free (iter)); + H5_CORE_API_RETURN (ret_value); } h5_loc_id_t diff --git a/src/h5core/h5t_store.c b/src/h5core/h5t_store.c index 5df6248..ded7c1b 100644 --- a/src/h5core/h5t_store.c +++ b/src/h5core/h5t_store.c @@ -7,9 +7,9 @@ License: see file COPYING in top level of source distribution. */ -#include "private/h5_errorhandling.h" +#include "private/h5_err.h" #include "private/h5t_types.h" -#include "private/h5t_errorhandling.h" +#include "private/h5t_err.h" #include "private/h5t_access.h" #include "private/h5t_core.h" #include "private/h5t_map.h" @@ -18,7 +18,7 @@ #include "private/h5t_core.h" #include "private/h5t_io.h" #include "private/h5_init.h" -#include "private/h5.h" +#include "private/h5_file.h" #include "private/h5_mpi.h" #include "h5core/h5t_map.h" @@ -487,7 +487,8 @@ h5t_begin_store_vertices ( m->last_stored_vid_before_ref = m->last_stored_vid; m->num_loc_vertices[m->leaf_level] = cur_num_loc_vertices+num; m->dsinfo_vertices.dims[0] = cur_num_loc_vertices+num; - H5_CORE_API_RETURN (h5tpriv_alloc_loc_vertices (m, cur_num_loc_vertices+num)); + TRY (ret_value = h5tpriv_alloc_loc_vertices (m, cur_num_loc_vertices+num)); + H5_CORE_API_RETURN (ret_value); } h5_loc_idx_t @@ -564,7 +565,8 @@ h5t_begin_store_elems ( m->last_stored_eid_before_ref = m->last_stored_eid; - H5_CORE_API_RETURN (h5tpriv_alloc_loc_elems (m, cur, new)); + TRY (ret_value = h5tpriv_alloc_loc_elems (m, cur, new)); + H5_CORE_API_RETURN (ret_value); } @@ -1228,7 +1230,9 @@ h5t_mark_entity ( ) { H5_CORE_API_ENTER (h5_err_t, "m=%p, entity_id=%llu", m, (long long unsigned)entity_id); - H5_CORE_API_RETURN (h5priv_insert_into_loc_idlist (&m->marked_entities, entity_id, -1)); + TRY (ret_value = h5priv_insert_into_loc_idlist ( + &m->marked_entities, entity_id, -1)); + H5_CORE_API_RETURN (ret_value); } h5_err_t @@ -2784,7 +2788,7 @@ h5t_create_index_set ( int codim; int dim = h5tpriv_ref_elem_get_dim (m); // todo: check tagset already exist - TRY (h5t_add_mtagset (m, "__IndexSet__", H5_INT64_T)); + TRY (h5t_add_mtagset (m, "__IndexSet__", H5_INT64)); for (codim = 0; codim <= dim; codim++) { h5_glb_idx_t idx = 0; diff --git a/src/h5core/h5t_tags.c b/src/h5core/h5t_tags.c index 6b02afd..2940711 100644 --- a/src/h5core/h5t_tags.c +++ b/src/h5core/h5t_tags.c @@ -10,8 +10,6 @@ #include "private/h5t_types.h" #include "h5core/h5t_map.h" -#include "h5core/h5_init.h" - #include "private/h5_va_macros.h" #include "private/h5_attribs.h" @@ -117,10 +115,8 @@ get_tagset_info ( // open this tag TRY (tag_id = hdf5_open_group (tags_id, name)); // determine type of dataset with values - TRY (dset_id = hdf5_open_dataset (tag_id, "values")); - hid_t type_; - TRY (type_ = hdf5_get_dataset_type (dset_id)); - TRY (*type = h5priv_normalize_h5_type (type_)); + TRY (dset_id = hdf5_open_dataset_by_name (tag_id, "values")); + TRY (*type = h5priv_get_native_dataset_type (dset_id)); TRY (hdf5_close_dataset (dset_id)); TRY (hdf5_close_group (tag_id)); @@ -145,9 +141,8 @@ h5t_get_mtagset_info ( "m=%p, idx=%llu, name=%p, len_name=%llu, type=%p", m, (long long unsigned)idx, name, (long long unsigned)len_name, type); - - - H5_CORE_API_RETURN (get_tagset_info(m->mesh_gid, idx, name, len_name, type)); + TRY (ret_value = get_tagset_info(m->mesh_gid, idx, name, len_name, type)); + H5_CORE_API_RETURN (ret_value); } /*! @@ -159,7 +154,8 @@ h5t_mtagset_exists ( const char name[] ) { H5_CORE_API_ENTER (h5_err_t, "m=%p, name=%s", m, name); - H5_CORE_API_RETURN (h5priv_link_exists (m->mesh_gid, "Tags", name)); + TRY (ret_value = h5priv_link_exists (m->mesh_gid, "Tags", name)); + H5_CORE_API_RETURN (ret_value); } static h5_err_t @@ -212,7 +208,7 @@ h5t_create_mtagset ( } // validate type - if (type != H5_INT64_T && type != H5_FLOAT64_T) { + if (type != H5_INT64 && type != H5_FLOAT64) { H5_PRIV_FUNC_LEAVE ( h5_error (H5_ERR_INVAL, "Unsupported data type." )); } @@ -225,9 +221,8 @@ h5t_create_mtagset ( h5_error ( H5_ERR_H5FED, "Cannot create tagset '%s': Tagset exists", name)); - - - H5_CORE_API_RETURN (new_tagset (m, m->mesh_gid, name, type, set)); + TRY (ret_value = new_tagset (m, m->mesh_gid, name, type, set)); + H5_CORE_API_RETURN (ret_value); } static int @@ -414,7 +409,7 @@ read_tagset ( size_t num_interior_elems = 0; hid_t dset_id; - TRY (dset_id = hdf5_open_dataset (loc_id, "elems")); + TRY (dset_id = hdf5_open_dataset_by_name (loc_id, "elems")); TRY (num_interior_elems = hdf5_get_npoints_of_dataset (dset_id)); TRY (elems = h5_calloc (num_interior_elems, sizeof(*elems))); @@ -436,7 +431,7 @@ read_tagset ( h5t_glb_tag_idx_t* entities; size_t ent_idx = 0; size_t num_entities = 0; - TRY (dset_id = hdf5_open_dataset (loc_id, "entities")); + TRY (dset_id = hdf5_open_dataset_by_name (loc_id, "entities")); TRY (num_entities = hdf5_get_npoints_of_dataset (dset_id)); TRY (entities = h5_calloc (num_entities, sizeof(*entities))); TRY (read_dataset ( @@ -452,10 +447,10 @@ read_tagset ( // "values" h5_int64_t* vals; size_t num_vals = 0; - TRY (dset_id = hdf5_open_dataset (loc_id, "values")); + TRY (dset_id = hdf5_open_dataset_by_name (loc_id, "values")); TRY (num_vals = hdf5_get_npoints_of_dataset (dset_id)); TRY (vals = h5_calloc (num_vals, sizeof (*vals))); - TRY (dsinfo.type_id = hdf5_get_dataset_type (dset_id)); + TRY (dsinfo.type_id = h5priv_get_native_dataset_type (dset_id)); TRY (read_dataset ( tagset->m, tagset->m->f, @@ -464,16 +459,16 @@ read_tagset ( open_space_all, open_space_all, vals)); TRY (hdf5_close_dataset (dset_id )); - tagset->type = h5priv_normalize_h5_type (dsinfo.type_id); + tagset->type = dsinfo.type_id; /* add tagset and set values */ h5_int64_t scope; - TRY (h5priv_read_attrib (loc_id, "__scope_min__", H5_INT64_T, &scope)); + TRY (h5priv_read_attrib (loc_id, "__scope_min__", H5_INT64, &scope)); tagset->scope.min_level = scope; - TRY (h5priv_read_attrib (loc_id, "__scope_max__", H5_INT64_T, &scope)); + TRY (h5priv_read_attrib (loc_id, "__scope_max__", H5_INT64, &scope)); tagset->scope.max_level = scope; for (ent_idx = 0; ent_idx < num_entities; ent_idx++) { @@ -661,9 +656,9 @@ write_tagset ( open_space_all, open_space_all, values)); h5_int64_t scope = tagset->scope.min_level; - TRY (h5priv_write_attrib (group_id, "__scope_min__", H5_INT64_T, &scope, 1, 1)); + TRY (h5priv_write_attrib (group_id, "__scope_min__", H5_INT64, &scope, 1, 1)); scope = tagset->scope.max_level; - TRY (h5priv_write_attrib (group_id, "__scope_max__", H5_INT64_T, &scope, 1, 1)); + TRY (h5priv_write_attrib (group_id, "__scope_max__", H5_INT64, &scope, 1, 1)); TRY (hdf5_close_group (group_id)); TRY (h5_free (elems)); @@ -891,6 +886,7 @@ h5t_remove_tag ( tagset, (long long)entity_id); h5_loc_idx_t face_id = h5tpriv_get_face_id (entity_id); h5_loc_idx_t elem_idx = h5tpriv_get_elem_idx (entity_id); - H5_CORE_API_RETURN (remove_tag (tagset, face_id, elem_idx)); + TRY (ret_value = remove_tag (tagset, face_id, elem_idx)); + H5_CORE_API_RETURN (ret_value); } diff --git a/src/h5core/h5u_io.c b/src/h5core/h5u_io.c index 7e56d5d..aff944b 100644 --- a/src/h5core/h5u_io.c +++ b/src/h5core/h5u_io.c @@ -7,14 +7,12 @@ License: see file COPYING in top level of source distribution. */ -#include "h5core/h5_init.h" #include "private/h5_types.h" #include "private/h5_hdf5.h" #include "private/h5_model.h" #include "private/h5_io.h" #include "private/h5u_types.h" -#include "h5core/h5_init.h" #include "h5core/h5_model.h" #include "h5core/h5_syscall.h" @@ -103,7 +101,7 @@ h5u_read_data ( char name2[H5_DATANAME_LEN]; TRY (h5priv_normalize_dataset_name (name, name2)); - TRY (dataset_id = hdf5_open_dataset (f->step_gid, name2)); + TRY (dataset_id = hdf5_open_dataset_by_name (f->step_gid, name2)); /* default spaces, if not using a view selection */ memspace_id = H5S_ALL; @@ -235,4 +233,3 @@ h5u_write_data ( H5_CORE_API_RETURN (H5_SUCCESS); } - diff --git a/src/h5core/h5u_model.c b/src/h5core/h5u_model.c index 48ca0e3..30435e3 100644 --- a/src/h5core/h5u_model.c +++ b/src/h5core/h5u_model.c @@ -7,12 +7,11 @@ License: see file COPYING in top level of source distribution. */ -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" #include "h5core/h5u_model.h" #include "h5core/h5u_io.h" -#include "private/h5.h" +#include "private/h5_file.h" #include "private/h5_hdf5.h" #include "private/h5_model.h" @@ -20,6 +19,7 @@ #include "private/h5_io.h" #include "private/h5u_types.h" +#include h5_ssize_t h5u_get_num_points ( @@ -62,15 +62,18 @@ h5u_get_num_points_in_view ( h5_ssize_t h5u_get_totalnum_particles_by_name ( - const h5_file_t fh, ///< [in] Handle to open file - const char* const name ///< [in] Index of dataset to query + const h5_file_t fh, ///< [in] Handle to open file + const char* const dataset_name ///< [in] dataset to query ) { h5_file_p f = (h5_file_p)fh; - H5_CORE_API_ENTER (h5_ssize_t, "f=%p, name=%s", f, name); + H5_CORE_API_ENTER (h5_ssize_t, + "f=%p, dataset_name=%s", + f, dataset_name); h5_ssize_t nparticles; - - TRY (nparticles = hdf5_get_npoints_of_dataset_by_name (f->step_gid, name)); - h5_debug ("Found %lld particles in dataset %s.", (long long)nparticles, name); + TRY (nparticles = hdf5_get_npoints_of_dataset_by_name ( + f->step_gid, dataset_name)); + h5_debug ("Found %lld particles in dataset %s.", + (long long)nparticles, dataset_name); H5_CORE_API_RETURN (nparticles); } @@ -91,7 +94,12 @@ h5u_get_totalnum_particles_by_idx ( H5_DATANAME_LEN)); if (h5err == H5_NOK) H5_CORE_API_LEAVE (H5_NOK); - H5_CORE_API_RETURN (h5u_get_totalnum_particles_by_name (fh, dataset_name)); + h5_ssize_t nparticles; + TRY (nparticles = hdf5_get_npoints_of_dataset_by_name ( + f->step_gid, dataset_name)); + h5_debug ("Found %lld particles in dataset %s.", + (long long)nparticles, dataset_name); + H5_CORE_API_RETURN (nparticles); } h5_err_t @@ -280,7 +288,8 @@ h5u_set_view ( H5_CORE_API_LEAVE ( h5_error( H5_ERR_INVAL, - "Start of selection '%lld' out of range: must be >= 0", + "Start of selection '%lld' out of range: " + "must be >= 0", (long long)start) ); } @@ -288,7 +297,8 @@ h5u_set_view ( H5_CORE_API_LEAVE ( h5_error( H5_ERR_INVAL, - "End of selection '%lld' out of range: must be >= %lld", + "End of selection '%lld' out of range: " + "must be >= %lld", (long long)end, (long long)start) ); @@ -315,13 +325,15 @@ h5u_set_view ( H5_CORE_API_LEAVE ( h5_error( H5_ERR_INVAL, - "Start of selection '%lld' out of range: must be in [0..%lld]", + "Start of selection '%lld' out of range: " + "must be in [0..%lld]", (long long)start, (long long)total-1)); } else if (end < 0 || end >= total) { H5_CORE_API_LEAVE ( h5_error( H5_ERR_INVAL, - "End of selection '%lld' out of range: must be in [0..%lld]", + "End of selection '%lld' out of range: " + "must be in [0..%lld]", (long long)end, (long long)total-1)); } else if (end+1 < start) { H5_CORE_API_LEAVE ( @@ -400,7 +412,8 @@ h5u_set_view_length ( h5_error( H5_ERR_INVAL, "Invalid view: start=%lld, length=%lld, total=%lld", - (long long)start, (long long)length, (long long)total)); + (long long)start, (long long)length, + (long long)total)); /* setting up the new view */ u->viewstart = start; @@ -530,7 +543,7 @@ h5u_get_view ( H5_CORE_API_RETURN (viewend - viewstart + 1); // view range is *inclusive* } -h5_int64_t +h5_err_t h5u_set_canonical_view ( const h5_file_t fh ) { @@ -562,7 +575,8 @@ h5u_set_canonical_view ( #endif // PARALLEL_IO h5_int64_t length = u->nparticles; - H5_CORE_API_RETURN (h5u_set_view_length (fh, start, length)); + TRY (h5u_set_view_length (fh, start, length)); + H5_CORE_API_RETURN (H5_SUCCESS); } h5_ssize_t @@ -570,41 +584,9 @@ h5u_get_num_datasets ( const h5_file_t fh /*!< [in] Handle to open file */ ) { h5_file_p f = (h5_file_p)fh; - H5_CORE_API_ENTER (h5_int64_t, "f=%p", f); - H5_CORE_API_RETURN (hdf5_get_num_datasets (f->step_gid)); -} - -/*! - Get information about dataset in current index given by its index - */ -h5_err_t -h5u_get_dataset_info ( - const h5_file_t fh, /*!< [in] Handle to open file */ - const h5_id_t idx, /*!< [in] Index of the dataset */ - char *dataset_name, /*!< [out] Name of dataset */ - const h5_size_t len_dataset_name, - /*!< [in] Size of buffer \c dataset_name */ - h5_int64_t *type, /*!< [out] Type of data in dataset */ - h5_size_t *nelem /*!< [out] Number of elements. */ - ) { - h5_file_p f = (h5_file_p)fh; - H5_CORE_API_ENTER (h5_err_t, - "f=%p, " - "idx=%lld, " - "dataset_name='%s', len_dataset_name=%llu, " - "type=%p, nelem=%p", - f, - (long long)idx, - dataset_name, - (long long unsigned)len_dataset_name, - type, nelem); - TRY (hdf5_get_name_of_dataset_by_idx ( - f->step_gid, - idx, - dataset_name, len_dataset_name) ); - - H5_CORE_API_RETURN ( - h5u_get_dataset_info_by_name(fh, dataset_name, type, nelem)); + H5_CORE_API_ENTER (h5_ssize_t, "f=%p", f); + TRY (ret_value = hdf5_get_num_datasets (f->step_gid)); + H5_CORE_API_RETURN (ret_value); } h5_err_t @@ -616,44 +598,138 @@ h5u_has_dataset ( H5_CORE_API_ENTER (h5_err_t, "f=%p, name='%s'", f, name); - h5_err_t exists; - TRY (exists = hdf5_link_exists (f->step_gid, name)); - H5_CORE_API_RETURN (exists); + TRY (ret_value = hdf5_link_exists (f->step_gid, name)); + H5_CORE_API_RETURN (ret_value); } - + +static inline h5_err_t +get_dataset_info ( + hid_t dataset_id, + h5_int64_t* dataset_type, + h5_size_t* dataset_nelem + ) { + H5_INLINE_FUNC_ENTER (h5_err_t); + if (dataset_type) { + h5_int64_t type_; + TRY (type_ = h5priv_get_native_dataset_type (dataset_id)); + TRY (*dataset_type = h5priv_map_hdf5_type_to_enum (type_)); + } + if (dataset_nelem) { + h5_ssize_t nelem_; + TRY (nelem_ = hdf5_get_npoints_of_dataset (dataset_id)); + *dataset_nelem = nelem_; + } + H5_INLINE_FUNC_RETURN (H5_SUCCESS); +} + +h5_err_t +h5priv_get_dataset_info_by_idx ( + const hid_t id, /*!< [in] group ID */ + const h5_id_t dataset_idx, /*!< [in] Index of the dataset */ + char* dataset_name, /*!< [out] Name of dataset */ + const h5_size_t len_dataset_name,/*!<[in] Size of buffer */ + h5_int64_t* dataset_type, /*!< [out] Type of data in dataset */ + h5_size_t* dataset_nelem /*!< [out] Number of elements. */ + ) { + H5_PRIV_API_ENTER (h5_err_t, + "id=%lld, " + "dataset_idx=%lld, " + "dataset_name='%s', len_dataset_name=%llu, " + "dataset_type=%p, dataset_nelem=%p", + (long long)id, + (long long)dataset_idx, + dataset_name, + (long long unsigned)len_dataset_name, + dataset_type, dataset_nelem); + char dataset_name_[H5_DATANAME_LEN]; + TRY (hdf5_get_name_of_dataset_by_idx ( + id, + dataset_idx, + dataset_name_, sizeof(dataset_name_))); + hid_t dataset_id; + TRY (dataset_id = hdf5_open_dataset_by_name (id, dataset_name_)); + if (dataset_name) { + strncpy (dataset_name, dataset_name_, len_dataset_name); + } + TRY (get_dataset_info (dataset_id, dataset_type, dataset_nelem)); + H5_PRIV_API_RETURN (H5_SUCCESS); +} + +/*! + Get information about dataset in current index given by its index + */ +h5_err_t +h5u_get_dataset_info_by_idx ( + const h5_file_t fh, /*!< [in] Handle to open file */ + const h5_id_t idx, /*!< [in] Index of the dataset */ + char *dataset_name, /*!< [out] Name of dataset */ + const h5_size_t len_dataset_name,/*!< [in] Size of buffer */ + h5_int64_t *dataset_type, /*!< [out] Type of data in dataset */ + h5_size_t *dataset_nelem /*!< [out] Number of elements. */ + ) { + h5_file_p f = (h5_file_p)fh; + H5_CORE_API_ENTER (h5_err_t, + "f=%p, " + "idx=%lld, " + "dataset_name='%s', len_dataset_name=%llu, " + "dataset_type=%p, dataset_nelem=%p", + f, + (long long)idx, + dataset_name, + (long long unsigned)len_dataset_name, + dataset_type, dataset_nelem); + CHECK_FILEHANDLE (f); + TRY (h5priv_get_dataset_info_by_idx ( + f->step_gid, + idx, + dataset_name, len_dataset_name, + dataset_type, dataset_nelem)); + H5_CORE_API_RETURN (H5_SUCCESS); +} + +h5_err_t +h5priv_get_dataset_info_by_name ( + const hid_t id, /*!< [in] group ID */ + const char* const dataset_name, /*!< [out] Name of dataset */ + h5_int64_t* dataset_type, /*!< [out] Type of data in dataset */ + h5_size_t* dataset_nelem /*!< [out] Number of elements. */ + ) { + H5_PRIV_API_ENTER (h5_err_t, + "id=%lld, " + "dataset_name='%s' " + "dataset_type=%p, dataset_nelem=%p", + (long long)id, + dataset_name, + dataset_type, dataset_nelem); + hid_t dataset_id; + TRY (dataset_id = hdf5_open_dataset_by_name (id, dataset_name)); + TRY (get_dataset_info (dataset_id, dataset_type, dataset_nelem)); + H5_PRIV_API_RETURN (H5_SUCCESS); +} + /*! Get information about dataset in current index given by its index */ h5_err_t h5u_get_dataset_info_by_name ( - const h5_file_t fh, /*!< [in] Handle to open file */ + const h5_file_t fh, /*!< [in] Handle to open file */ const char* const dataset_name, /*!< [in] Name of dataset */ - h5_int64_t* const type, /*!< [out] Type of data in dataset */ - h5_size_t* const nelem /*!< [out] Number of elements. */ + h5_int64_t* const dataset_type, /*!< [out] Type of data in dataset */ + h5_size_t* const dataset_nelem /*!< [out] Number of elements. */ ) { h5_file_p f = (h5_file_p)fh; H5_CORE_API_ENTER (h5_err_t, "f=%p, " "dataset_name='%s', " - "type=%p, nelem=%p", + "dataset_type=%p, dataset_nelem=%p", f, dataset_name, - type, nelem); - - if (nelem) { - h5_ssize_t nelem_; - TRY (nelem_ = hdf5_get_npoints_of_dataset_by_name ( - f->step_gid, - dataset_name) ); - if ( nelem_ < 0 ) H5_CORE_API_LEAVE (nelem_); - *nelem = nelem_; - } - - if (type) { - *type = h5priv_get_dataset_type (f->step_gid, dataset_name); - if (*type < 0) H5_CORE_API_LEAVE (*type); - } - + dataset_type, dataset_nelem); + CHECK_FILEHANDLE (f); + TRY (h5priv_get_dataset_info_by_name ( + f->step_gid, + dataset_name, + dataset_type, dataset_nelem)); H5_CORE_API_RETURN (H5_SUCCESS); } @@ -663,14 +739,15 @@ h5u_set_chunk ( const h5_size_t size ) { h5_file_p f = (h5_file_p)fh; - H5_CORE_API_ENTER (h5_int64_t, "f=%p, size=%llu", f, (long long unsigned)size); - if ( size == 0 ) - { + H5_CORE_API_ENTER ( + h5_int64_t, + "f=%p, size=%llu", + f, (long long unsigned)size); + if (size == 0) { h5_info ("Disabling chunking" ); TRY (hdf5_set_layout_property ( f->u->dcreate_prop, H5D_CONTIGUOUS)); - } else - { + } else { h5_info ("Setting chunk size to %lld particles", (long long)size); TRY (hdf5_set_chunk_property( f->u->dcreate_prop, 1, (hsize_t*)&size)); @@ -690,7 +767,7 @@ h5u_get_chunk ( hid_t plist_id; hsize_t hsize; - TRY (dataset_id = hdf5_open_dataset (f->step_gid, name) ); + TRY (dataset_id = hdf5_open_dataset_by_name (f->step_gid, name) ); TRY (plist_id = hdf5_get_dataset_create_plist (dataset_id) ); TRY (hdf5_get_chunk_property (plist_id, 1, &hsize) ); TRY (hdf5_close_property ( plist_id) ); diff --git a/src/h5core/private/h5_attribs.h b/src/h5core/private/h5_attribs.h index fa3a0ba..e4a7696 100644 --- a/src/h5core/private/h5_attribs.h +++ b/src/h5core/private/h5_attribs.h @@ -14,24 +14,116 @@ #include "private/h5_model.h" #include "private/h5_hdf5.h" -h5_err_t + +static inline hid_t +h5priv_get_native_attribute_type ( + hid_t attr_id + ) { + H5_PRIV_FUNC_ENTER ( + hid_t, + "attr_id=%lld (%s)", + (long long int)attr_id, hdf5_get_objname (attr_id)); + TRY (ret_value = hdf5_get_attribute_type (attr_id)); + TRY (ret_value = h5priv_get_native_type (ret_value)); + H5_PRIV_FUNC_RETURN (ret_value); +} + +static inline h5_err_t h5priv_read_attrib ( - const hid_t id, - const char* attrib_name, - const hid_t attrib_type, - void* const attrib_value - ); + const hid_t id, /*!< HDF5 object ID */ + const char* attrib_name, /*!< name of HDF5 attribute to read */ + const hid_t attrib_type, /*!< HDF5 type of attribute */ + void* const attrib_value /*!< OUT: attribute value */ + ) { + H5_PRIV_API_ENTER (h5_err_t, + "id=%lld, attrib_name='%s', attrib_type=%lld, " + "attrib_value=%p", + (long long int)id, + attrib_name, + (long long int)attrib_type, + attrib_value); + hid_t attrib_id; + hid_t mem_type; + hid_t space_id; + TRY (attrib_id = hdf5_open_attribute_by_name (id, attrib_name)); + TRY (mem_type = h5priv_get_native_attribute_type (attrib_id)); + if (mem_type != attrib_type) + H5_PRIV_API_LEAVE ( + h5_error ( + H5_ERR_HDF5, + "Attribute '%s' has type '%s' but " + "was requested as '%s'.", + attrib_name, + hdf5_get_type_name (mem_type), + hdf5_get_type_name (attrib_type))); -h5_err_t + TRY (space_id = hdf5_get_attribute_dataspace (attrib_id)); + TRY (hdf5_read_attribute (attrib_id, mem_type, attrib_value)); + TRY (hdf5_close_dataspace(space_id)); + TRY (hdf5_close_attribute (attrib_id)); + H5_PRIV_API_RETURN (H5_SUCCESS); +} + +static inline h5_err_t h5priv_write_attrib ( - const hid_t id, - const char* attrib_name, - const hid_t attrib_type, - const void* attrib_value, - const hsize_t attrib_nelem, - const int overwrite - ); + const hid_t id, /*!< HDF5 object ID */ + const char* attrib_name, /*!< name of HDF5 attribute to write */ + const hid_t attrib_type, /*!< HDF5 type of attribute */ + const void* attrib_value, /*!< value of attribute */ + const hsize_t attrib_nelem, /*!< number of elements (dimension) */ + const int overwrite + ) { + H5_PRIV_API_ENTER (h5_err_t, + "id=%lld, attrib_name='%s', attrib_type=%lld, " + "attrib_value=%p, attrib_nelem=%llu, overwrite=%d", + (long long int)id, + attrib_name, + (long long int)attrib_type, + attrib_value, + attrib_nelem, + overwrite); + hid_t space_id; + hid_t attrib_id; + hid_t type_id; + if ( attrib_type == H5T_NATIVE_CHAR ) { + TRY (type_id = hdf5_create_string_type (attrib_nelem)); + TRY (space_id = hdf5_create_dataspace_scalar ()); + } else { + type_id = attrib_type; + TRY (space_id = hdf5_create_dataspace (1, &attrib_nelem, NULL)); + } + h5_err_t exists; + TRY (exists = hdf5_attribute_exists (id, attrib_name)); + if (exists) { + if (overwrite) { + TRY (hdf5_delete_attribute (id, attrib_name)); + } else { + H5_PRIV_API_LEAVE ( + h5_error (H5_ERR_H5, + "Cannot overwrite attribute %s/%s", + hdf5_get_objname (id), attrib_name)); + } + } + TRY (attrib_id = hdf5_create_attribute ( + id, + attrib_name, + type_id, + space_id, + H5P_DEFAULT, H5P_DEFAULT)); + TRY (hdf5_write_attribute (attrib_id, type_id, attrib_value)); + TRY (hdf5_close_attribute (attrib_id)); + TRY (hdf5_close_dataspace (space_id)); + + H5_PRIV_API_RETURN (H5_SUCCESS); +} + +/* + This is a helper function for + + - h5priv_get_attrib_info_by_name() + - h5priv_get_attrib_info_by_idx() + */ static inline h5_err_t get_attrib_info ( hid_t attrib_id, @@ -39,26 +131,23 @@ get_attrib_info ( h5_size_t* attrib_nelem /*!< OUT: number of elements */ ) { H5_INLINE_FUNC_ENTER (h5_err_t); - hid_t mytype; - TRY (mytype = hdf5_get_attribute_type (attrib_id)); - - H5T_class_t type_class; - TRY (type_class = hdf5_get_class_type (mytype)); + hid_t datatype_id; + TRY (datatype_id = h5priv_get_native_attribute_type (attrib_id)); if (attrib_nelem) { - if (type_class == H5T_STRING) { - *attrib_nelem = H5Tget_size(mytype); + if (datatype_id == H5_STRING) { + *attrib_nelem = H5Tget_size (datatype_id); } else { hid_t space_id; TRY (space_id = hdf5_get_attribute_dataspace (attrib_id)); - TRY (*attrib_nelem = hdf5_get_npoints_of_dataspace (space_id)); + TRY (*attrib_nelem = hdf5_get_npoints_of_dataspace ( + space_id)); TRY (hdf5_close_dataspace (space_id)); } } if (attrib_type) { - TRY (*attrib_type = h5priv_normalize_h5_type (mytype)); + TRY (*attrib_type = h5priv_map_hdf5_type_to_enum (datatype_id)); } - TRY (hdf5_close_type (mytype)); TRY (hdf5_close_attribute (attrib_id)); H5_INLINE_FUNC_RETURN (H5_SUCCESS); } @@ -76,20 +165,47 @@ h5priv_get_attrib_info_by_name ( "attrib_type=%p, attrib_nelem=%p", (long long int)id, attrib_name, - attrib_type, - attrib_nelem); + attrib_type, attrib_nelem); hid_t attrib_id; - TRY (attrib_id = hdf5_open_attribute (id, attrib_name)); - H5_PRIV_API_RETURN (get_attrib_info (attrib_id, attrib_type, attrib_nelem)); + TRY (attrib_id = hdf5_open_attribute_by_name (id, attrib_name)); + H5_PRIV_API_RETURN ( + get_attrib_info ( + attrib_id, attrib_type, attrib_nelem)); } -h5_err_t +static inline h5_err_t h5priv_get_attrib_info_by_idx ( - const hid_t id, - const h5_size_t attrib_idx, - char* attrib_name, - const h5_size_t len_attrib_name, - h5_int64_t* attrib_type, - h5_size_t* attrib_nelem - ); + const hid_t id, /*!< HDF5 object ID */ + const h5_size_t attrib_idx, /*!< index of attribute */ + char* attrib_name, /*!< OUT: name of attribute */ + const h5_size_t len_attrib_name,/*!< buffer length */ + h5_int64_t* attrib_type, /*!< OUT: H5 type of attribute */ + h5_size_t* attrib_nelem /*!< OUT: number of elements */ + ) { + H5_PRIV_API_ENTER (h5_err_t, + "id=%lld, " + "attrib_idx=%llu, " + "attrib_name=%p, len_attrib_name=%llu, " + "attrib_type=%p, attrib_nelem=%p", + (long long int)id, + (long long unsigned)attrib_idx, + attrib_name, + (long long unsigned)len_attrib_name, + attrib_type, attrib_nelem); + hid_t attrib_id; + TRY (attrib_id = hdf5_open_attribute_by_idx ( + id, + (unsigned int)attrib_idx)); + + if (attrib_name) { + TRY (hdf5_get_attribute_name ( + attrib_id, + (size_t)len_attrib_name, + attrib_name)); + } + H5_PRIV_API_RETURN ( + get_attrib_info ( + attrib_id, attrib_type, attrib_nelem)); +} + #endif diff --git a/src/h5core/private/h5_const.h b/src/h5core/private/h5_const.h new file mode 100644 index 0000000..102a59b --- /dev/null +++ b/src/h5core/private/h5_const.h @@ -0,0 +1,16 @@ +/* + Copyright (c) 2006-2016, The Regents of the University of California, + through Lawrence Berkeley National Laboratory (subject to receipt of any + required approvals from the U.S. Dept. of Energy) and the Paul Scherrer + Institut (Switzerland). All rights reserved. + + License: see file COPYING in top level of source distribution. +*/ + +#ifndef __PRIVATE_H5_CONST_H +#define __PRIVATE_H5_CONST_H + + + + +#endif diff --git a/src/h5core/private/h5_debug.h b/src/h5core/private/h5_debug.h index 6eef834..ff743d8 100644 --- a/src/h5core/private/h5_debug.h +++ b/src/h5core/private/h5_debug.h @@ -10,9 +10,14 @@ #ifndef __PRIVATE_H5_DEBUG_H #define __PRIVATE_H5_DEBUG_H +#include "h5core/h5_types.h" #include "h5core/h5_debug.h" +#include "private/h5_init.h" #define H5_CORE_API_ENTER(type, fmt, ...) \ + if (!h5_initialized) { \ + h5_initialize(); \ + } \ __FUNC_ENTER(type, H5_DEBUG_CORE_API, fmt, __VA_ARGS__) #define H5_CORE_API_LEAVE(value) __FUNC_LEAVE(value) #define H5_CORE_API_RETURN(value) __FUNC_RETURN(value, H5_DEBUG_CORE_API) diff --git a/src/h5core/private/h5_errorhandling.h b/src/h5core/private/h5_err.h similarity index 92% rename from src/h5core/private/h5_errorhandling.h rename to src/h5core/private/h5_err.h index ccd8804..686f8f7 100644 --- a/src/h5core/private/h5_errorhandling.h +++ b/src/h5core/private/h5_err.h @@ -1,7 +1,7 @@ -#ifndef __PRIVATE_H5_ERRORHANDLING_H -#define __PRIVATE_H5_ERRORHANDLING_H +#ifndef __PRIVATE_H5_ERROR_H +#define __PRIVATE_H5_ERROR_H -#include "h5core/h5_errorhandling.h" +#include "h5core/h5_err.h" extern const char* const H5_O_MODES[]; diff --git a/src/h5core/private/h5.h b/src/h5core/private/h5_file.h similarity index 74% rename from src/h5core/private/h5.h rename to src/h5core/private/h5_file.h index e78b245..4cdc0ec 100644 --- a/src/h5core/private/h5.h +++ b/src/h5core/private/h5_file.h @@ -1,11 +1,21 @@ -#ifndef __PRIVATE_H5_H -#define __PRIVATE_H5_H +#ifndef __PRIVATE_H5_FILE_H +#define __PRIVATE_H5_FILE_H #include "private/h5_types.h" #include "private/h5_debug.h" -#include "private/h5_errorhandling.h" +#include "private/h5_err.h" +#include "h5core/h5_file.h" -#define UNUSED_ARGUMENT(x) (void)x +#define H5_VFD_MPIO_POSIX 0x00000010 +#define H5_VFD_MPIO_INDEPENDENT 0x00000020 +#define H5_VFD_MPIO_COLLECTIVE 0x00000040 +#define H5_VFD_CORE 0x00000080 + +#define H5_FLUSH_FILE 0x00001000 +#define H5_FLUSH_STEP 0x00002000 +#define H5_FLUSH_DATASET 0x00004000 + +#define H5_FS_LUSTRE 0x00010000 static inline h5_err_t check_filehandle ( diff --git a/src/h5core/private/h5_hdf5.h b/src/h5core/private/h5_hdf5.h index cc80ed4..e8c7dbd 100644 --- a/src/h5core/private/h5_hdf5.h +++ b/src/h5core/private/h5_hdf5.h @@ -13,7 +13,7 @@ #include #include "h5core/h5_types.h" -#include "h5core/h5_errorhandling.h" +#include "h5core/h5_err.h" #include "private/h5_debug.h" #include "private/h5_va_macros.h" @@ -177,16 +177,12 @@ h5priv_link_exists_ ( const char const* path[], size_t size ); -#define h5priv_link_exists(loc_id, ...) \ - (h5priv_link_exists_ (loc_id, (const char const*[]){__VA_ARGS__}, PP_NARG(__VA_ARGS__))) +#define h5priv_link_exists(loc_id, ...) \ + (h5priv_link_exists_ (loc_id, \ + (const char const*[]){__VA_ARGS__}, \ + PP_NARG(__VA_ARGS__))) -/*! - Close group. - - \param[in] f file handle - \param[in] group_id id of group to close - */ static inline h5_err_t hdf5_close_group ( const hid_t group_id @@ -228,10 +224,6 @@ hdf5_get_num_objs_in_group ( } -/* - Get name of object given by index \c idx in group \c loc_id. If name is \c NULL, - return size of name. - */ static inline h5_ssize_t hdf5_get_objname_by_idx ( hid_t loc_id, @@ -265,12 +257,7 @@ hdf5_get_objname_by_idx ( /****** D a t a s p a c e ****************************************************/ /*! - Create dataspace for dataset. H5Screate_simple wrapper. - - \param[in] rank rank of dataspace - \param[in] dims dimensions of dataspace - \param[in] maxdims maximum dimensions of dataspace - + H5Screate_simple wrapper. */ static inline hid_t hdf5_create_dataspace ( @@ -426,10 +413,7 @@ hdf5_get_dims_of_dataspace ( /*! - Close space. - - \param[in] f file handle - \param[in] dataspace_id id of space to close + H5Sclose() wrapper */ static inline h5_err_t hdf5_close_dataspace ( @@ -451,14 +435,10 @@ hdf5_close_dataspace ( /****** D a t a s e t ********************************************************/ /*! - Open dataset. H5Dopen wrapper. - - \param[in] f file handle - \param[in] loc_id location id - \param[in] dataset_name name of dataset to open + H5Dopen wrapper. */ static inline hid_t -hdf5_open_dataset ( +hdf5_open_dataset_by_name ( const hid_t loc_id, const char* const dataset_name ) { @@ -482,15 +462,7 @@ hdf5_open_dataset ( } /*! - Create new dataset - - \param[in] f file handle - \param[in] loc_id id of group or file - \param[in] dataset_name name of dataset - \param[in] type_id type used in dataset - \param[in] dataspace_id dataspace of dataset - \param[in] create_prop property list for dataset creation - + H5Dcreate() wrapper. */ static inline hid_t hdf5_create_dataset ( @@ -528,10 +500,7 @@ hdf5_create_dataset ( } /*! - Close dataset. - - \param[in] f file handle - \param[in] dataset_id id of dataset to close + H5Dclose() wrapper. */ static inline h5_err_t hdf5_close_dataset ( @@ -555,11 +524,7 @@ hdf5_close_dataset ( } /*! - Get dataspace of existing dataset - - \param[in] f file handle - \param[in] dataset_id id of dataset - + H5Dget_space() wrapper. */ static inline hid_t hdf5_get_dataset_space ( @@ -580,16 +545,7 @@ hdf5_get_dataset_space ( } /*! - Wrapper for H5Dwrite. - - \param[in] f file handle - \param[in] dataset_id id of dataset - \param[in] type_id type used in dataset - \param[in] memspace_id id of memory space - \param[in] diskspace_id id of disk space - \param[in] xfer_prop transfer property list - \param[in] buf buffer with date to write - + H5Dwrite() wrapper */ static inline h5_err_t hdf5_write_dataset ( @@ -624,7 +580,7 @@ hdf5_write_dataset ( } /* - Wrapper for H5Dread + H5Dread() write */ static inline h5_err_t hdf5_read_dataset ( @@ -722,34 +678,77 @@ hdf5_get_npoints_of_dataset_by_name ( name); hid_t dset_id; hsize_t size; - TRY (dset_id = hdf5_open_dataset (loc_id, name)); + TRY (dset_id = hdf5_open_dataset_by_name (loc_id, name)); TRY (size = hdf5_get_npoints_of_dataset (dset_id)); TRY (hdf5_close_dataset (dset_id)); HDF5_WRAPPER_RETURN (size); } /****** D a t a t y p e ******************************************************/ -/*! - Create array type. Wrapper for "H5Tarray_create". - \param[in] f file handle - \param[in] base_type_id base type - \param[in] rank rank of array - \param[in] dims dimensions + +/*! + Map HDF5 type to native HDF5 type. +*/ +static inline h5_int64_t +hdf5_get_native_type ( + hid_t type + ) { + HDF5_WRAPPER_ENTER (h5_int64_t, + "type=%lld", + (long long int)type); + H5T_class_t tclass; + int size; + TRY (tclass = H5Tget_class (type)); + TRY (size = H5Tget_size (type)); + + switch (tclass){ + case H5T_INTEGER: + if (size==8) { + HDF5_WRAPPER_LEAVE (H5T_NATIVE_INT64); + } else if (size==4) { + HDF5_WRAPPER_LEAVE (H5T_NATIVE_INT32); + } else if (size==2) { + HDF5_WRAPPER_LEAVE (H5T_NATIVE_INT16); + } + break; + case H5T_FLOAT: + if (size==8) { + HDF5_WRAPPER_LEAVE (H5T_NATIVE_FLOAT); + } + else if (size==4) { + HDF5_WRAPPER_LEAVE (H5T_NATIVE_DOUBLE); + } + break; + case H5T_STRING: + HDF5_WRAPPER_LEAVE (H5T_NATIVE_CHAR); + default: + ; /* NOP */ + } + HDF5_WRAPPER_RETURN ( + h5_error ( + H5_ERR_INVAL, + "Unknown data type %lld", + (long long int)type)); +} + + +/*! + H5Tarray_create() write */ static inline char_p hdf5_get_type_name ( hid_t type_id ) { - if (type_id == H5_INT32_T) + if (type_id == H5_INT32) return "H5_INT32_T"; - if (type_id == H5_INT64_T) + if (type_id == H5_INT64) return "H5_INT64_T"; - if (type_id == H5_FLOAT32_T) + if (type_id == H5_FLOAT32) return "H5_FLOAT32_T"; - if (type_id == H5_FLOAT64_T) + if (type_id == H5_FLOAT64) return "H5_FLOAT64_T"; - if (type_id == H5_STRING_T) + if (type_id == H5_STRING) return "H5_STRING_T"; h5_warn ("Unknown type id %lld", (long long int)type_id); @@ -933,11 +932,7 @@ hdf5_create_property ( } /*! - Get create properties of existing dataset - - \param[in] f file handle - \param[in] dataset_id id of dataset - + H5Dget_create_plist() wrapper. */ static inline hid_t hdf5_get_dataset_create_plist ( @@ -1131,7 +1126,8 @@ hdf5_set_alignment_property ( HDF5_WRAPPER_LEAVE ( h5_error ( H5_ERR_HDF5, - "Cannot set alignment property to %llu and threshold %llu", + "Cannot set alignment property to %llu " + "and threshold %llu", alignment, threshold)); HDF5_WRAPPER_RETURN (H5_SUCCESS); } @@ -1261,7 +1257,8 @@ hdf5_attribute_exists ( ) { HDF5_WRAPPER_ENTER (hid_t, "loc_id=%lld (%s), attr_name='%s'", - (long long int)loc_id, hdf5_get_objname (loc_id), attrib_name); + (long long int)loc_id, + hdf5_get_objname (loc_id), attrib_name); htri_t exists = H5Aexists (loc_id, attrib_name); if (exists < 0) HDF5_WRAPPER_LEAVE ( @@ -1274,13 +1271,14 @@ hdf5_attribute_exists ( } static inline hid_t -hdf5_open_attribute ( +hdf5_open_attribute_by_name ( hid_t loc_id, const char* attrib_name ) { HDF5_WRAPPER_ENTER (hid_t, "loc_id=%lld (%s), attr_name='%s'", - (long long int)loc_id, hdf5_get_objname (loc_id), attrib_name); + (long long int)loc_id, + hdf5_get_objname (loc_id), attrib_name); hid_t attrib_id = H5Aopen (loc_id, attrib_name, H5P_DEFAULT); if (attrib_id < 0) HDF5_WRAPPER_LEAVE ( @@ -1293,7 +1291,7 @@ hdf5_open_attribute ( } static inline hid_t -hdf5_open_attribute_idx ( +hdf5_open_attribute_by_idx ( hid_t loc_id, unsigned int idx ) { @@ -1311,32 +1309,6 @@ hdf5_open_attribute_idx ( HDF5_WRAPPER_RETURN (attr_id); } -static inline hid_t -hdf5_open_attribute_by_name ( - hid_t loc_id, - const char* obj_name, - const char* attr_name - ) { - HDF5_WRAPPER_ENTER (hid_t, - "loc_id=%lld (%s), obj_name='%s', attr_name='%s'", - (long long int)loc_id, hdf5_get_objname (loc_id), - obj_name, attr_name); - hid_t attr_id = H5Aopen_by_name ( - loc_id, - obj_name, - attr_name, - H5P_DEFAULT, - H5P_DEFAULT); - if (attr_id < 0) - HDF5_WRAPPER_LEAVE ( - h5_error ( - H5_ERR_HDF5, - "Cannot open attribute '%s' of '%s'.", - attr_name, - obj_name)); - HDF5_WRAPPER_RETURN (attr_id); -} - static inline hid_t hdf5_create_attribute ( hid_t loc_id, diff --git a/src/h5core/private/h5_init.h b/src/h5core/private/h5_init.h index e46b9e3..1546f6e 100644 --- a/src/h5core/private/h5_init.h +++ b/src/h5core/private/h5_init.h @@ -13,10 +13,28 @@ #include "h5core/h5_types.h" #include "private/h5t_types.h" +#define UNUSED_ARGUMENT(x) (void)x + +// dummy MPI calls for serial code +#if !defined (PARALLEL_IO) +typedef int MPI_Comm; +#define MPI_Init(argc, argv) +#define MPI_Comm_size(comm, nprocs) {(void)comm; *nprocs = 1; } +#define MPI_Comm_rank(comm, myproc) {(void)comm; *myproc = 0; } +#define MPI_Finalize() +#define MPI_COMM_WORLD (0) +#define MPI_COMM_SELF (1) +#endif + #ifdef __cplusplus extern "C" { #endif +extern int h5_initialized; + +h5_err_t +h5_initialize (void); + extern h5_dta_types_t h5_dta_types; extern int h5_myproc; diff --git a/src/h5core/private/h5_io.c b/src/h5core/private/h5_io.c index 608a063..da425f3 100644 --- a/src/h5core/private/h5_io.c +++ b/src/h5core/private/h5_io.c @@ -7,10 +7,8 @@ License: see file COPYING in top level of source distribution. */ -#include "h5core/h5_init.h" #include "private/h5_types.h" - -#include "private/h5_errorhandling.h" +#include "private/h5_err.h" #include "private/h5_hdf5.h" #include "private/h5_model.h" #include "private/h5_io.h" @@ -34,7 +32,8 @@ h5priv_write_dataset_by_name ( const void* const data ) { H5_PRIV_API_ENTER (h5_err_t, - "m=%p, f=%p, loc_id=%lld (%s), dsinfo=%p, set_memspace=%p, " + "m=%p, f=%p, loc_id=%lld (%s), dsinfo=%p, " + "set_memspace=%p, " "set_diskspace=%p, data=%p", m, f, (long long int)loc_id, hdf5_get_objname(loc_id), dsinfo, @@ -61,7 +60,7 @@ h5priv_write_dataset_by_name ( if (exists) { /* overwrite dataset */ - TRY (dset_id = hdf5_open_dataset (loc_id, dsinfo->name)); + TRY (dset_id = hdf5_open_dataset_by_name (loc_id, dsinfo->name)); TRY (dataspace_id = hdf5_get_dataset_space (dset_id)); TRY (hdf5_set_dataset_extent (dset_id, dsinfo->dims)); /* exten dataset? */ @@ -104,7 +103,8 @@ h5priv_write_dataset_by_name ( - Check existance dataset - Write data - is needed if dset, mspace, dspace can't be set by the callback functions above + is needed if dset, mspace, dspace can't be set by the callback + functions above */ h5_err_t h5priv_write_dataset_by_name_id ( @@ -117,12 +117,14 @@ h5priv_write_dataset_by_name_id ( const void* const data ) { H5_PRIV_API_ENTER (h5_err_t, - "f=%p, loc_id=%lld (%s), dsinfo=%p, dset_id=%lld, memspace_id=%lld, " + "f=%p, loc_id=%lld (%s), dsinfo=%p, dset_id=%lld, " + "memspace_id=%lld, " "diskspace_id=%lld, data=%p", f, (long long int)loc_id, hdf5_get_objname(loc_id), dsinfo, (long long int)dset_id, - (long long int)memspace_id, (long long int)diskspace_id, data); + (long long int)memspace_id, + (long long int)diskspace_id, data); h5_info ("Writing dataset %s/%s.", hdf5_get_objname (loc_id), dsinfo->name); diff --git a/src/h5core/private/h5_io.h b/src/h5core/private/h5_io.h index dbb3007..9b58b6b 100644 --- a/src/h5core/private/h5_io.h +++ b/src/h5core/private/h5_io.h @@ -56,12 +56,6 @@ h5priv_read_dataset ( hid_t (*)(h5t_mesh_t* const, const hid_t), void* const); -h5_int64_t -h5priv_get_dataset_type( - const hid_t group_id, - const char *dataset_name - ); - h5_err_t h5priv_normalize_dataset_name ( const char *name, diff --git a/src/h5core/private/h5_lustre.c b/src/h5core/private/h5_lustre.c index 05c50e3..41712ad 100644 --- a/src/h5core/private/h5_lustre.c +++ b/src/h5core/private/h5_lustre.c @@ -7,8 +7,6 @@ License: see file COPYING in top level of source distribution. */ -#include "h5core/h5_init.h" - #ifdef H5_USE_LUSTRE #include diff --git a/src/h5core/private/h5_maps.c b/src/h5core/private/h5_maps.c index f19091e..4fff218 100644 --- a/src/h5core/private/h5_maps.c +++ b/src/h5core/private/h5_maps.c @@ -7,9 +7,7 @@ License: see file COPYING in top level of source distribution. */ -#include "h5core/h5_init.h" - -#include "private/h5_errorhandling.h" +#include "private/h5_err.h" #include "private/h5_maps.h" /* diff --git a/src/h5core/private/h5_maps.h b/src/h5core/private/h5_maps.h index 51b4efa..24a3818 100644 --- a/src/h5core/private/h5_maps.h +++ b/src/h5core/private/h5_maps.h @@ -12,16 +12,10 @@ #include "private/h5_types.h" #include "h5core/h5_debug.h" -#include "h5core/h5_errorhandling.h" +#include "h5core/h5_err.h" #include "h5core/h5_syscall.h" #include "private/h5_debug.h" -typedef struct { - size_t size; - size_t num_items; - char* items[1]; -} h5_strlist_t; - // Allocate new list #define h5priv_alloc_xlist( type ) \ static inline h5_err_t \ diff --git a/src/h5core/private/h5_model.h b/src/h5core/private/h5_model.h index 6e0ea1e..a087db3 100644 --- a/src/h5core/private/h5_model.h +++ b/src/h5core/private/h5_model.h @@ -26,8 +26,10 @@ #include "h5core/h5_types.h" #include "h5core/h5_model.h" -#include "private/h5.h" +#include "private/h5_const.h" +#include "private/h5_file.h" #include "private/h5_mpi.h" +#include "private/h5_hdf5.h" #ifdef PARALLEL_IO static inline h5_err_t @@ -60,8 +62,10 @@ h5priv_start_throttle ( // wait to receive token before continuing with read TRY( h5priv_mpi_recv( &token, 1, MPI_INT, - f->myproc - f->props->throttle, // receive from previous proc - f->myproc, // use this proc id as message tag + // receive from previous proc + f->myproc - f->props->throttle, + // use this proc id as message tag + f->myproc, f->props->comm ) ); } @@ -84,8 +88,10 @@ h5priv_end_throttle ( (long long int)(f->myproc + f->props->throttle)); TRY (h5priv_mpi_send( &token, 1, MPI_INT, - f->myproc + f->props->throttle, // send to next proc - f->myproc + f->props->throttle, // use the id of the target as tag + // send to next proc + f->myproc + f->props->throttle, + // use the id of the target as tag + f->myproc + f->props->throttle, f->props->comm )); } @@ -113,9 +119,103 @@ h5priv_close_step ( const h5_file_p f ); -h5_int64_t -h5priv_normalize_h5_type ( +static inline h5_int64_t +h5priv_map_hdf5_type_to_enum ( + hid_t hdf5_type_id + ) { + if (hdf5_type_id == H5_STRING) { + return H5_STRING_T; + } else if (hdf5_type_id == H5_INT16) { + return H5_INT16_T; + } else if (hdf5_type_id == H5_UINT16) { + return H5_UINT16_T; + } else if (hdf5_type_id == H5_INT32) { + return H5_INT32_T; + } else if (hdf5_type_id == H5_UINT32) { + return H5_UINT32_T; + } else if (hdf5_type_id == H5_INT64) { + return H5_INT64_T; + } else if (hdf5_type_id == H5_UINT64) { + return H5_UINT64_T; + } else if (hdf5_type_id == H5_FLOAT32) { + return H5_FLOAT32_T; + } else if (hdf5_type_id == H5_FLOAT64) { + return H5_FLOAT64_T; + } else if (hdf5_type_id == H5_ID) { + return H5_ID_T; + } else if (hdf5_type_id == H5_COMPOUND) { + return H5_COMPOUND_T; + } + return H5_FAILURE; +} + +static inline hid_t +h5priv_get_native_type ( hid_t type - ); + ) { + H5_PRIV_API_ENTER (h5_int64_t, + "type=%lld", + (long long int)type); + H5T_class_t tclass; + TRY (tclass = H5Tget_class (type)); + int tsize; + TRY (tsize = H5Tget_size (type)); + H5T_sign_t tsign; + TRY (tsign = H5Tget_sign (type)); + switch (tclass){ + case H5T_INTEGER: + if (tsize==8) { + if (tsign == H5T_SGN_2) { + ret_value = H5T_NATIVE_INT64; + } else { + ret_value = H5T_NATIVE_UINT64; + } + } else if (tsize==4) { + if (tsign == H5T_SGN_2) { + ret_value = H5T_NATIVE_INT32; + } else { + ret_value = H5T_NATIVE_UINT32; + } + } else if (tsize==2) { + if (tsign == H5T_SGN_2) { + ret_value = H5T_NATIVE_INT16; + } else { + ret_value = H5T_NATIVE_UINT16; + } + } + break; + case H5T_FLOAT: + if (tsize==8) { + ret_value = H5T_NATIVE_DOUBLE; + } + else if (tsize==4) { + ret_value = H5T_NATIVE_FLOAT; + } + break; + case H5T_STRING: + ret_value = H5T_C_S1; + break; + default: + break; + } + if (ret_value < 0) + H5_PRIV_API_LEAVE ( + h5_error ( + H5_ERR_INVAL, + "Unknown type %d", (int)type)); + H5_CORE_API_RETURN (ret_value); +} + +static inline hid_t +h5priv_get_native_dataset_type ( + hid_t dataset + ) { + H5_PRIV_API_ENTER (hid_t, + "dataset=%lld", + (long long)dataset); + TRY (ret_value = hdf5_get_dataset_type (dataset)); + TRY (ret_value = h5priv_get_native_type (ret_value)); + H5_PRIV_API_RETURN (ret_value); +} #endif diff --git a/src/h5core/private/h5_mpi.h b/src/h5core/private/h5_mpi.h index 20f5d5d..f39499d 100644 --- a/src/h5core/private/h5_mpi.h +++ b/src/h5core/private/h5_mpi.h @@ -13,7 +13,7 @@ #ifdef PARALLEL_IO #include "h5core/h5_types.h" -#include "h5core/h5_errorhandling.h" +#include "h5core/h5_err.h" #include "private/h5_debug.h" static inline h5_err_t diff --git a/src/h5core/private/h5_types.h b/src/h5core/private/h5_types.h index bf86d0d..48c99b9 100644 --- a/src/h5core/private/h5_types.h +++ b/src/h5core/private/h5_types.h @@ -75,4 +75,11 @@ struct h5_idxmap { h5_size_t num_items; /* stored items */ h5_idxmap_el_t* items; }; + +typedef struct { + size_t size; + size_t num_items; + char* items[1]; +} h5_strlist_t; + #endif diff --git a/src/h5core/private/h5t_access_tetm.c b/src/h5core/private/h5t_access_tetm.c index 3f792a3..85a4f7f 100644 --- a/src/h5core/private/h5t_access_tetm.c +++ b/src/h5core/private/h5t_access_tetm.c @@ -7,10 +7,10 @@ License: see file COPYING in top level of source distribution. */ -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" +#include "h5core/h5_syscall.h" -#include "private/h5.h" +#include "private/h5_file.h" #include "private/h5_types.h" #include "private/h5_init.h" #include "private/h5t_types.h" diff --git a/src/h5core/private/h5t_access_trim.c b/src/h5core/private/h5t_access_trim.c index 090e347..0b71197 100644 --- a/src/h5core/private/h5t_access_trim.c +++ b/src/h5core/private/h5t_access_trim.c @@ -7,10 +7,10 @@ License: see file COPYING in top level of source distribution. */ -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" +#include "h5core/h5_syscall.h" -#include "private/h5.h" +#include "private/h5_file.h" #include "private/h5_init.h" #include "private/h5t_types.h" #include "private/h5t_model.h" diff --git a/src/h5core/private/h5t_core.c b/src/h5core/private/h5t_core.c index 9af9f15..0de096d 100644 --- a/src/h5core/private/h5t_core.c +++ b/src/h5core/private/h5t_core.c @@ -6,7 +6,7 @@ #include "private/h5t_map.h" #include "private/h5t_core.h" #include "private/h5t_access.h" -#include "private/h5t_errorhandling.h" +#include "private/h5t_err.h" h5_err_t h5tpriv_grow_te_htab ( diff --git a/src/h5core/private/h5t_core.h b/src/h5core/private/h5t_core.h index b2b7680..398b89e 100644 --- a/src/h5core/private/h5t_core.h +++ b/src/h5core/private/h5t_core.h @@ -33,13 +33,12 @@ #include "private/h5t_retrieve.h" #include "private/h5t_store.h" -#include "private/h5t_errorhandling.h" +#include "private/h5t_err.h" #include "private/h5t_octree.h" #include - typedef struct h5t_te_entry_key { h5_loc_idx_t vids[2]; } h5t_te_entry_key_t; diff --git a/src/h5core/private/h5t_errorhandling.h b/src/h5core/private/h5t_err.h similarity index 93% rename from src/h5core/private/h5t_errorhandling.h rename to src/h5core/private/h5t_err.h index f84502e..54648e6 100644 --- a/src/h5core/private/h5t_errorhandling.h +++ b/src/h5core/private/h5t_err.h @@ -7,11 +7,11 @@ License: see file COPYING in top level of source distribution. */ -#ifndef __PRIVATE_H5T_ERRORHANDLING_H -#define __PRIVATE_H5T_ERRORHANDLING_H +#ifndef __PRIVATE_H5T_ERR_H +#define __PRIVATE_H5T_ERR_H #include "h5core/h5_types.h" -#include "h5core/h5_errorhandling.h" +#include "h5core/h5_err.h" #include "private/h5_debug.h" #define ERR_ELEM_NEXIST "Element with local vertex IDs (%s) doesn't exist!" diff --git a/src/h5core/private/h5t_map.h b/src/h5core/private/h5t_map.h index eb4c31c..0ddaaf6 100644 --- a/src/h5core/private/h5t_map.h +++ b/src/h5core/private/h5t_map.h @@ -12,9 +12,10 @@ #include "private/h5_types.h" #include "h5core/h5_debug.h" -#include "h5core/h5_errorhandling.h" +#include "h5core/h5_err.h" #include "h5core/h5_syscall.h" #include "private/h5_debug.h" +#include "private/h5_maps.h" #include "private/h5t_model.h" /* diff --git a/src/h5core/private/h5t_model_tetm.c b/src/h5core/private/h5t_model_tetm.c index 7e1bfe7..7335970 100644 --- a/src/h5core/private/h5t_model_tetm.c +++ b/src/h5core/private/h5t_model_tetm.c @@ -20,7 +20,7 @@ #include "private/h5t_retrieve.h" #include "private/h5t_store.h" -#include "private/h5.h" +#include "private/h5_file.h" #include "private/h5_init.h" #include "private/h5t_core.h" diff --git a/src/h5core/private/h5t_model_trim.c b/src/h5core/private/h5t_model_trim.c index f5a22ea..16256b1 100644 --- a/src/h5core/private/h5t_model_trim.c +++ b/src/h5core/private/h5t_model_trim.c @@ -8,7 +8,7 @@ */ #include "private/h5t_types.h" -#include "private/h5.h" +#include "private/h5_file.h" #include "private/h5_hdf5.h" #include "private/h5_mpi.h" #include "private/h5_va_macros.h" diff --git a/src/h5core/private/h5t_ref_elements.h b/src/h5core/private/h5t_ref_elements.h index ba1b102..b3d9302 100644 --- a/src/h5core/private/h5t_ref_elements.h +++ b/src/h5core/private/h5t_ref_elements.h @@ -31,10 +31,6 @@ typedef struct h5t_ref_elem h5t_ref_elem_t; extern const h5t_ref_elem_t h5t_tet_ref_elem; extern const h5t_ref_elem_t h5t_tri_ref_elem; -#ifdef __cplusplus -} -#endif - #define h5tpriv_ref_elem_get_num_vertices(this) (this->ref_elem->num_faces[0]) #define h5tpriv_ref_elem_get_num_edges(this) (this->ref_elem->num_faces[1]) diff --git a/src/h5core/private/h5t_retrieve_tetm.c b/src/h5core/private/h5t_retrieve_tetm.c index c6e4a9a..4ff1de2 100644 --- a/src/h5core/private/h5t_retrieve_tetm.c +++ b/src/h5core/private/h5t_retrieve_tetm.c @@ -8,7 +8,7 @@ */ #include "private/h5t_types.h" -#include "private/h5t_errorhandling.h" +#include "private/h5t_err.h" #include "private/h5t_core.h" #include "private/h5t_map.h" #include "private/h5t_model.h" diff --git a/src/h5core/private/h5t_retrieve_trim.c b/src/h5core/private/h5t_retrieve_trim.c index 62bce58..732c759 100644 --- a/src/h5core/private/h5t_retrieve_trim.c +++ b/src/h5core/private/h5t_retrieve_trim.c @@ -8,7 +8,7 @@ */ #include "private/h5t_types.h" -#include "private/h5t_errorhandling.h" +#include "private/h5t_err.h" #include "private/h5t_core.h" #include "private/h5t_map.h" #include "private/h5t_model.h" diff --git a/src/h5core/private/h5t_store_tetm.c b/src/h5core/private/h5t_store_tetm.c index f707a57..0dad247 100644 --- a/src/h5core/private/h5t_store_tetm.c +++ b/src/h5core/private/h5t_store_tetm.c @@ -8,7 +8,7 @@ */ #include "private/h5t_types.h" -#include "private/h5t_errorhandling.h" +#include "private/h5t_err.h" #include "private/h5t_access.h" #include "private/h5t_adjacencies.h" #include "private/h5t_core.h" diff --git a/src/h5core/private/h5t_store_trim.c b/src/h5core/private/h5t_store_trim.c index 94a0075..50842d5 100644 --- a/src/h5core/private/h5t_store_trim.c +++ b/src/h5core/private/h5t_store_trim.c @@ -8,7 +8,7 @@ */ #include "private/h5t_types.h" -#include "private/h5t_errorhandling.h" +#include "private/h5t_err.h" #include "private/h5t_access.h" #include "private/h5t_adjacencies.h" #include "private/h5t_core.h" diff --git a/src/h5core/private/h5t_types.h b/src/h5core/private/h5t_types.h index a9aa46c..417ba28 100644 --- a/src/h5core/private/h5t_types.h +++ b/src/h5core/private/h5t_types.h @@ -13,7 +13,7 @@ #include "h5core/h5_types.h" #include "private/h5_types.h" #include "private/h5_hsearch.h" -#include "private/h5_maps.h" +//#include "private/h5_maps.h" #include "private/h5t_ref_elements.h" diff --git a/src/h5core/private/h5u_errorhandling.h b/src/h5core/private/h5u_err.h similarity index 89% rename from src/h5core/private/h5u_errorhandling.h rename to src/h5core/private/h5u_err.h index a1b9129..9cc8847 100644 --- a/src/h5core/private/h5u_errorhandling.h +++ b/src/h5core/private/h5u_err.h @@ -1,5 +1,5 @@ -#ifndef __PRIVATE_H5U_ERRORHANDLING_H -#define __PRIVATE_H5U_ERRORHANDLING_H +#ifndef __PRIVATE_H5U_ERR_H +#define __PRIVATE_H5U_ERR_H #define HANDLE_H5_SET_VIEW_ERR( f, rc, start, end ) \ h5_error( \ diff --git a/src/include/H5Block_attribs.h b/src/include/H5Block_attribs.h index bcd6b71..5700aea 100644 --- a/src/include/H5Block_attribs.h +++ b/src/include/H5Block_attribs.h @@ -12,7 +12,6 @@ #include -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" #include "h5core/h5b_attribs.h" @@ -192,7 +191,7 @@ H5Block3dSetFieldOrigin ( f, field_name, H5BLOCK_FIELD_ORIGIN_NAME, - (hid_t)H5_FLOAT64_T, + (hid_t)H5_FLOAT64, origin, 3)); } @@ -220,7 +219,7 @@ H5Block3dGetFieldOrigin ( f, field_name, H5BLOCK_FIELD_ORIGIN_NAME, - H5_FLOAT64_T, + H5_FLOAT64, origin)); *x_origin = origin[0]; @@ -254,7 +253,7 @@ H5Block3dSetFieldSpacing ( f, field_name, H5BLOCK_FIELD_SPACING_NAME, - (hid_t)H5_FLOAT64_T, + (hid_t)H5_FLOAT64, spacing, 3)); } @@ -282,7 +281,7 @@ H5Block3dGetFieldSpacing ( f, field_name, H5BLOCK_FIELD_SPACING_NAME, - H5_FLOAT64_T, + H5_FLOAT64, spacing)); *x_spacing = spacing[0]; *y_spacing = spacing[1]; @@ -751,7 +750,7 @@ H5BlockReadFieldAttribString ( f, field_name, attrib_name, - H5_STRING_T, + H5_STRING, (void*)buffer)); } diff --git a/src/include/H5Block_io.h b/src/include/H5Block_io.h index cef9f39..0b6d726 100644 --- a/src/include/H5Block_io.h +++ b/src/include/H5Block_io.h @@ -10,7 +10,6 @@ #ifndef __H5BLOCK_IO_H #define __H5BLOCK_IO_H -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" #include "h5core/h5b_io.h" diff --git a/src/include/H5Block_model.h b/src/include/H5Block_model.h index f656c41..9c07669 100644 --- a/src/include/H5Block_model.h +++ b/src/include/H5Block_model.h @@ -10,7 +10,6 @@ #ifndef __H5BLOCK_MODEL #define __H5BLOCK_MODEL -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" #include "h5core/h5b_model.h" diff --git a/src/include/H5Fed_adjacency.h b/src/include/H5Fed_adjacency.h index e3c4585..a0a5b36 100644 --- a/src/include/H5Fed_adjacency.h +++ b/src/include/H5Fed_adjacency.h @@ -11,7 +11,6 @@ #define __H5FED_ADJACENCY_H #include "h5core/h5_types.h" -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" #include "h5core/h5t_adjacencies.h" diff --git a/src/include/H5Fed_model.h b/src/include/H5Fed_model.h index f713e2b..9b89b40 100644 --- a/src/include/H5Fed_model.h +++ b/src/include/H5Fed_model.h @@ -11,7 +11,6 @@ #define __H5FED_MODEL_H #include "h5core/h5_types.h" -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" #include "h5core/h5t_model.h" diff --git a/src/include/H5Fed_retrieve.h b/src/include/H5Fed_retrieve.h index 49431d3..9b5cf2c 100644 --- a/src/include/H5Fed_retrieve.h +++ b/src/include/H5Fed_retrieve.h @@ -11,7 +11,6 @@ #define __H5FED_RETRIEVE_H #include "h5core/h5_types.h" -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" #include "h5core/h5_syscall.h" #include "h5core/h5t_map.h" diff --git a/src/include/H5Fed_store.h b/src/include/H5Fed_store.h index 6edf5b9..4cc8df2 100644 --- a/src/include/H5Fed_store.h +++ b/src/include/H5Fed_store.h @@ -11,7 +11,6 @@ #define __H5FED_STORE_H #include "h5core/h5_types.h" -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" #include "h5core/h5t_store.h" diff --git a/src/include/H5Fed_tags.h b/src/include/H5Fed_tags.h index 109dabb..a611d47 100644 --- a/src/include/H5Fed_tags.h +++ b/src/include/H5Fed_tags.h @@ -11,7 +11,6 @@ #define __H5FED_TAGS_H #include "h5core/h5_types.h" -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" #include "h5core/h5t_tags.h" diff --git a/src/include/H5Part_io.h b/src/include/H5Part_io.h index 350d96b..eaefb8f 100644 --- a/src/include/H5Part_io.h +++ b/src/include/H5Part_io.h @@ -10,7 +10,6 @@ #ifndef H5PART_IO #define H5PART_IO -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" #include "h5core/h5u_io.h" diff --git a/src/include/H5Part_model.h b/src/include/H5Part_model.h index 5579af8..d800338 100644 --- a/src/include/H5Part_model.h +++ b/src/include/H5Part_model.h @@ -10,7 +10,6 @@ #ifndef H5PART_MODEL #define H5PART_MODEL -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" #include "h5core/h5u_model.h" @@ -71,7 +70,7 @@ H5PartGetDatasetName ( (h5_file_p)f, (long long)idx, name, (unsigned long long)len); - H5_API_RETURN (h5u_get_dataset_info(f, idx, name, len, NULL, NULL)); + H5_API_RETURN (h5u_get_dataset_info_by_idx(f, idx, name, len, NULL, NULL)); } /** @@ -109,7 +108,7 @@ H5PartGetDatasetInfo ( (long long)idx, name, (long long unsigned)len_name, type, nelems); - H5_API_RETURN (h5u_get_dataset_info ( + H5_API_RETURN (h5u_get_dataset_info_by_idx ( f, idx, name, len_name, type, nelems)); } /** diff --git a/src/include/H5_attachments.h b/src/include/H5_attachments.h index 2b52746..1f8a20e 100644 --- a/src/include/H5_attachments.h +++ b/src/include/H5_attachments.h @@ -10,7 +10,6 @@ #ifndef __H5_ATTACHMENTS_H #define __H5_ATTACHMENTS_H -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" #include "h5core/h5_model.h" #include "h5core/h5_attachments.h" diff --git a/src/include/H5_debug.h b/src/include/H5_debug.h index 504fbac..5746d51 100644 --- a/src/include/H5_debug.h +++ b/src/include/H5_debug.h @@ -10,7 +10,6 @@ #ifndef __H5_DEBUG_H #define __H5_DEBUG_H -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" /** diff --git a/src/include/H5_error.f90 b/src/include/H5_err.f90 similarity index 100% rename from src/include/H5_error.f90 rename to src/include/H5_err.f90 diff --git a/src/include/H5_error.h b/src/include/H5_err.h similarity index 99% rename from src/include/H5_error.h rename to src/include/H5_err.h index 47d13fa..f22eead 100644 --- a/src/include/H5_error.h +++ b/src/include/H5_err.h @@ -10,7 +10,6 @@ #ifndef __H5_ERROR_H #define __H5_ERROR_H -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" /** diff --git a/src/include/H5_file.h b/src/include/H5_file.h index d1bc1fd..e95d470 100644 --- a/src/include/H5_file.h +++ b/src/include/H5_file.h @@ -10,7 +10,6 @@ #ifndef __H5_FILE_H #define __H5_FILE_H -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" #include "h5core/h5_file.h" diff --git a/src/include/H5_file_attribs.h b/src/include/H5_file_attribs.h index 3bcfe65..ab158f0 100644 --- a/src/include/H5_file_attribs.h +++ b/src/include/H5_file_attribs.h @@ -12,7 +12,6 @@ #include -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" #include "h5core/h5_file_attribs.h" @@ -369,7 +368,7 @@ H5ReadFileAttribString ( H5_API_RETURN (h5_read_file_attrib ( f, attrib_name, - H5_STRING_T, + H5T_C_S1, (void*)buffer)); } @@ -385,7 +384,7 @@ H5ReadFileAttribFloat64 ( H5_API_RETURN (h5_read_file_attrib ( f, attrib_name, - H5_FLOAT64_T, + H5_FLOAT64, (void*)buffer)); } @@ -401,7 +400,7 @@ H5ReadFileAttribFloat32 ( H5_API_RETURN (h5_read_file_attrib ( f, attrib_name, - H5_FLOAT32_T, + H5_FLOAT32, (void*)buffer)); } @@ -417,7 +416,7 @@ H5ReadFileAttribInt64 ( H5_API_RETURN (h5_read_file_attrib ( f, attrib_name, - H5_INT64_T, + H5_INT64, (void*)buffer)); } @@ -433,7 +432,7 @@ H5ReadFileAttribInt32 ( H5_API_RETURN (h5_read_file_attrib ( f, attrib_name, - H5_INT32_T, + H5_INT32, (void*)buffer)); } ///< @} diff --git a/src/include/H5_model.h b/src/include/H5_model.h index f8cd3b8..55dd46e 100644 --- a/src/include/H5_model.h +++ b/src/include/H5_model.h @@ -10,7 +10,6 @@ #ifndef __H5_MODEL_H #define __H5_MODEL_H -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" #include "h5core/h5_model.h" diff --git a/src/include/H5_step_attribs.h b/src/include/H5_step_attribs.h index 57fef67..0f2cd5d 100644 --- a/src/include/H5_step_attribs.h +++ b/src/include/H5_step_attribs.h @@ -12,7 +12,6 @@ #include -#include "h5core/h5_init.h" #include "h5core/h5_debug.h" #include "h5core/h5_step_attribs.h" @@ -366,7 +365,7 @@ H5ReadStepAttribString ( H5_API_RETURN (h5_read_step_attrib ( f, attrib_name, - H5_STRING_T, + H5_STRING, (void*)buffer)); } @@ -382,7 +381,7 @@ H5ReadStepAttribFloat64 ( H5_API_RETURN (h5_read_step_attrib ( f, attrib_name, - H5_FLOAT64_T, + H5_FLOAT64, (void*)buffer)); } @@ -398,7 +397,7 @@ H5ReadStepAttribFloat32 ( H5_API_RETURN (h5_read_step_attrib ( f, attrib_name, - H5_FLOAT32_T, + H5_FLOAT32, (void*)buffer)); } @@ -414,7 +413,7 @@ H5ReadStepAttribInt64 ( h5_err_t h5err = h5_read_step_attrib ( f, attrib_name, - H5_INT64_T, + H5_INT64, (void*)buffer); H5_API_RETURN (h5err); } @@ -431,7 +430,7 @@ H5ReadStepAttribInt32 ( H5_API_RETURN (h5_read_step_attrib ( f, attrib_name, - H5_INT32_T, + H5_INT32, (void*)buffer)); } ///< @} diff --git a/src/include/H5hut.f90 b/src/include/H5hut.f90 index 0749f5b..13ac546 100644 --- a/src/include/H5hut.f90 +++ b/src/include/H5hut.f90 @@ -15,7 +15,7 @@ MODULE H5hut include 'H5_step_attribs.f90' include 'H5_log.f90' include 'H5_debug.f90' - include 'H5_error.f90' + include 'H5_err.f90' include 'H5Part_model.f90' include 'H5Part_io.f90' diff --git a/src/include/H5hut.h b/src/include/H5hut.h index 6c02c89..771daea 100644 --- a/src/include/H5hut.h +++ b/src/include/H5hut.h @@ -21,7 +21,7 @@ #include "H5_step_attribs.h" #include "H5_log.h" #include "H5_debug.h" -#include "H5_error.h" +#include "H5_err.h" #include "H5Part_io.h" #include "H5Part_model.h" diff --git a/src/include/h5core/Makefile.am b/src/include/h5core/Makefile.am index a031f4c..a4367dd 100644 --- a/src/include/h5core/Makefile.am +++ b/src/include/h5core/Makefile.am @@ -3,11 +3,10 @@ otherincludedir = $(includedir)/h5core include_HEADERS = \ h5_attachments.h \ h5_debug.h \ - h5_errorhandling.h \ + h5_err.h \ h5_file.h \ h5_file_attribs.h \ h5_step_attribs.h \ - h5_init.h \ h5_model.h \ h5_syscall.h \ h5_types.h \ diff --git a/src/include/h5core/h5_debug.h b/src/include/h5core/h5_debug.h index b1eb0f9..fecebfd 100644 --- a/src/include/h5core/h5_debug.h +++ b/src/include/h5core/h5_debug.h @@ -13,12 +13,10 @@ #include #include -#include "h5core/h5_types.h" -#include "h5core/h5_errorhandling.h" +extern const char* H5_VER_STRING; -#ifdef __cplusplus -extern "C" { -#endif +#include "h5core/h5_types.h" +#include "h5core/h5_err.h" #define H5_VERBOSE_NONE (0) #define H5_VERBOSE_ERROR (1) @@ -79,6 +77,10 @@ struct call_stack { extern h5_int32_t h5_debug_level; extern struct call_stack h5_call_stack; +#ifdef __cplusplus +extern "C" { +#endif + static inline void h5_call_stack_init ( const char* fname, @@ -305,7 +307,6 @@ h5_debug ( ret_value = expr; \ goto done; \ done: \ - h5_call_stack_reset (); \ return ret_value; #define __FUNC_RETURN(expr, mask) \ @@ -347,9 +348,6 @@ done: \ ////////////////////////////////////////////////////////////////////////////// #define H5_API_ENTER(type, fmt, ...) \ - if (!h5_initialized) { \ - h5_initialize(); \ - } \ __API_ENTER(type, H5_DEBUG_API, fmt, __VA_ARGS__) #define H5_API_LEAVE(expr) __API_LEAVE(expr) #define H5_API_RETURN(expr) __API_RETURN(expr, H5_DEBUG_API); @@ -368,7 +366,6 @@ h5_err_t h5_get_debuglevel ( void); - #ifdef __cplusplus } #endif diff --git a/src/include/h5core/h5_errorhandling.h b/src/include/h5core/h5_err.h similarity index 97% rename from src/include/h5core/h5_errorhandling.h rename to src/include/h5core/h5_err.h index 1533ee3..a9fd0a9 100644 --- a/src/include/h5core/h5_errorhandling.h +++ b/src/include/h5core/h5_err.h @@ -7,8 +7,8 @@ License: see file COPYING in top level of source distribution. */ -#ifndef __H5CORE_H5_ERRORHANDLING_H -#define __H5CORE_H5_ERRORHANDLING_H +#ifndef __H5CORE_H5_ERROR_H +#define __H5CORE_H5_ERROR_H #include #include diff --git a/src/include/h5core/h5_file.h b/src/include/h5core/h5_file.h index e51c78e..71210e2 100644 --- a/src/include/h5core/h5_file.h +++ b/src/include/h5core/h5_file.h @@ -18,6 +18,26 @@ #include "h5core/h5_types.h" +/* + file modes: + + H5_O_RDONLY: + read data from existing file + + H5_O_WRONLY: + create new file, if file not exists; write new or overwrite + existing data + + H5_O_APPENDONLY: + allows to append new data to an existing file + + H5_O_RDWR: + create new file, if file not exists; read and (over-)write data + */ +#define H5_O_RDWR 0x00000001 +#define H5_O_RDONLY 0x00000002 +#define H5_O_WRONLY 0x00000004 +#define H5_O_APPENDONLY 0x00000008 #ifdef __cplusplus extern "C" { diff --git a/src/include/h5core/h5_init.h b/src/include/h5core/h5_init.h deleted file mode 100644 index 2ffa794..0000000 --- a/src/include/h5core/h5_init.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - Copyright (c) 2006-2016, The Regents of the University of California, - through Lawrence Berkeley National Laboratory (subject to receipt of any - required approvals from the U.S. Dept. of Energy) and the Paul Scherrer - Institut (Switzerland). All rights reserved. - - License: see file COPYING in top level of source distribution. -*/ - -#ifndef __H5CORE_H5_H -#define __H5CORE_H5_H - -#include "h5core/h5_types.h" - -// dummy MPI calls for serial code -#if !defined (PARALLEL_IO) -typedef int MPI_Comm; -#define MPI_Init(argc, argv) -#define MPI_Comm_size(comm, nprocs) {(void)comm; *nprocs = 1; } -#define MPI_Comm_rank(comm, myproc) {(void)comm; *myproc = 0; } -#define MPI_Finalize() -#define MPI_COMM_WORLD (0) -#define MPI_COMM_SELF (1) -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -extern int h5_initialized; - -h5_err_t -h5_initialize (void); - - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/include/h5core/h5_types.h b/src/include/h5core/h5_types.h index bed4d45..1ca10bd 100644 --- a/src/include/h5core/h5_types.h +++ b/src/include/h5core/h5_types.h @@ -10,49 +10,35 @@ #ifndef __H5CORE_H5_TYPES_H #define __H5CORE_H5_TYPES_H -//#include #include #include -#ifdef __cplusplus -extern "C" { -#endif - -/* - file modes: - H5_O_RDONLY: read data from existing file - H5_O_WRONLY: create new file, if file not exists; write new or overwrite existing data - H5_O_APPENDONLY: allows to append new data to an existing file - H5_O_RDWR: create new file, if file not exists; read and (over-)write data - */ -#define H5_O_RDWR 0x00000001 -#define H5_O_RDONLY 0x00000002 -#define H5_O_WRONLY 0x00000004 -#define H5_O_APPENDONLY 0x00000008 - -#define H5_VFD_MPIO_POSIX 0x00000010 -#define H5_VFD_MPIO_INDEPENDENT 0x00000020 -#define H5_VFD_MPIO_COLLECTIVE 0x00000040 -#define H5_VFD_CORE 0x00000080 - -#define H5_FLUSH_FILE 0x00001000 -#define H5_FLUSH_STEP 0x00002000 -#define H5_FLUSH_DATASET 0x00004000 - -#define H5_FS_LUSTRE 0x00010000 - -#define H5_ID_T H5T_NATIVE_INT64 -#define H5_FLOAT64_T H5T_NATIVE_DOUBLE -#define H5_FLOAT32_T H5T_NATIVE_FLOAT -#define H5_INT64_T H5T_NATIVE_INT64 -#define H5_INT32_T H5T_NATIVE_INT32 -#define H5_INT16_T H5T_NATIVE_INT16 -#define H5_UINT16_T H5T_NATIVE_UINT16 -#define H5_STRING_T H5T_NATIVE_CHAR -#define H5_COMPOUND_T H5T_COMPOUND - -extern const char* H5_VER_STRING; +#define H5_STRING H5T_C_S1 +#define H5_INT16 H5T_NATIVE_INT16 +#define H5_UINT16 H5T_NATIVE_UINT16 +#define H5_INT32 H5T_NATIVE_INT32 +#define H5_UINT32 H5T_NATIVE_UINT32 +#define H5_INT64 H5T_NATIVE_INT64 +#define H5_UINT64 H5T_NATIVE_UINT64 +#define H5_FLOAT32 H5T_NATIVE_FLOAT +#define H5_FLOAT64 H5T_NATIVE_DOUBLE +#define H5_ID H5T_NATIVE_INT64 +#define H5_COMPOUND H5T_COMPOUND +typedef enum { + H5_STRING_T, + H5_INT16_T, + H5_UINT16_T, + H5_INT32_T, + H5_UINT32_T, + H5_INT64_T, + H5_UINT64_T, + H5_FLOAT32_T, + H5_FLOAT64_T, + H5_ID_T, + H5_COMPOUND_T +} h5_types_t; + #ifdef WIN32 typedef __int64 int64_t; #endif /* WIN32 */ @@ -155,14 +141,7 @@ typedef struct { struct h5_idxmap; typedef struct h5_idxmap h5_idxmap_t; -#define H5_TRIANGLE_MESH (H5_OID_TRIANGLE) -#define H5_TETRAHEDRAL_MESH (H5_OID_TETRAHEDRON) - #define H5_PROP_DEFAULT (0) #define H5_PROP_FILE (1) -#ifdef __cplusplus -} -#endif - #endif diff --git a/src/include/h5core/h5u_model.h b/src/include/h5core/h5u_model.h index 2ddacbd..84167bf 100644 --- a/src/include/h5core/h5u_model.h +++ b/src/include/h5core/h5u_model.h @@ -21,7 +21,7 @@ h5u_get_num_datasets ( const h5_file_t); h5_err_t -h5u_get_dataset_info ( +h5u_get_dataset_info_by_idx ( const h5_file_t, const h5_id_t, char* const, const h5_size_t, h5_int64_t* const, h5_size_t* const); diff --git a/test/h5u_read.c b/test/h5u_read.c index 8a37b38..d9179a2 100644 --- a/test/h5u_read.c +++ b/test/h5u_read.c @@ -471,6 +471,7 @@ void h5u_test_read2(void) RETURN(status, H5_SUCCESS, "H5CloseFile"); } +#if H5_VERSION_LE(1,8,12) void h5u_test_read3(void) { h5_file_t file1; @@ -478,7 +479,11 @@ void h5u_test_read3(void) h5_int64_t status; TEST("Opening file once, read-only, MPI-POSIX VFD"); - file1 = H5OpenFile(FILENAME, H5_O_RDONLY | H5_VFD_MPIO_POSIX, H5_PROP_DEFAULT); + h5_prop_t props = H5CreateFileProp (); + status = H5SetPropFileMPIOPosix (props, &comm); + RETURN(status, H5_SUCCESS, "H5SetPropFileMPIOPosix"); + + file1 = H5OpenFile(FILENAME, H5_O_RDONLY, prop); status = H5CheckFile(file1); RETURN(status, H5_SUCCESS, "H5CheckFile"); @@ -492,6 +497,7 @@ void h5u_test_read3(void) status = H5CloseFile(file1); RETURN(status, H5_SUCCESS, "H5CloseFile"); } +#endif void h5u_test_read4(void) { @@ -503,16 +509,14 @@ void h5u_test_read4(void) TEST("Opening file twice, read-only, MPI-IO Independent VFD"); h5_prop_t props = H5CreateFileProp (); - status = H5SetPropFileMPIOCollective (props, &comm); - RETURN(status, H5_SUCCESS, "H5SetPropFileMPIOCollective"); - status = H5SetPropFileThrottle (props, 2); - RETURN(status, H5_SUCCESS, "H5SetPropFileThrottle"); + status = H5SetPropFileMPIOIndependent (props, &comm); + RETURN(status, H5_SUCCESS, "H5SetPropFileMPIOIndependent"); - file1 = H5OpenFile(FILENAME, H5_O_RDONLY | H5_VFD_MPIO_INDEPENDENT, props); + file1 = H5OpenFile(FILENAME, H5_O_RDONLY, props); status = H5CheckFile(file1); RETURN(status, H5_SUCCESS, "H5CheckFile"); - file2 = H5OpenFile(FILENAME, H5_O_RDONLY | H5_VFD_MPIO_INDEPENDENT, props); + file2 = H5OpenFile(FILENAME, H5_O_RDONLY, props); status = H5CheckFile(file2); RETURN(status, H5_SUCCESS, "H5CheckFile"); diff --git a/test/h5u_test.c b/test/h5u_test.c index 4379238..e730c8d 100644 --- a/test/h5u_test.c +++ b/test/h5u_test.c @@ -7,7 +7,9 @@ /* from write.c */ void h5u_test_write1(void); void h5u_test_write2(void); +#if H5_VERSION_LE(1,8,12) void h5u_test_write3(void); +#endif void h5u_test_write4(void); /* from read.c */ @@ -38,8 +40,10 @@ int main(int argc, char **argv) AddTest("read1", h5u_test_read1, NULL, "Read 32-bit data", NULL); AddTest("write2", h5u_test_write2, NULL, "Write 32-bit strided data", NULL); AddTest("read2", h5u_test_read2, NULL, "Read 32-bit strided data", NULL); +#if H5_VERSION_LE(1,8,12) AddTest("write3", h5u_test_write3, NULL, "Write 64-bit strided data", NULL); AddTest("read3", h5u_test_read3, NULL, "Read 64-bit strided data", NULL); +#endif AddTest("write4", h5u_test_write4, NULL, "Write 64-bit data", NULL); AddTest("read4", h5u_test_read4, NULL, "Read 64-bit data", NULL); diff --git a/test/h5u_write.c b/test/h5u_write.c index 22cccbb..48ab8b7 100644 --- a/test/h5u_write.c +++ b/test/h5u_write.c @@ -360,8 +360,6 @@ void h5u_test_write1(void) h5_prop_t props = H5CreateFileProp (); status = H5SetPropFileMPIOCollective (props, &comm); RETURN(status, H5_SUCCESS, "H5SetPropFileMPIOCollective"); - status = H5SetPropFileThrottle (props, 2); - RETURN(status, H5_SUCCESS, "H5SetPropFileThrottle"); file1 = H5OpenFile(FILENAME, H5_O_WRONLY, props); status = H5CheckFile(file1); @@ -388,8 +386,6 @@ void h5u_test_write2(void) h5_prop_t props = H5CreateFileProp (); status = H5SetPropFileMPIOCollective (props, &comm); RETURN(status, H5_SUCCESS, "H5SetPropFileMPIOCollective"); - status = H5SetPropFileThrottle (props, 2); - RETURN(status, H5_SUCCESS, "H5SetPropFileThrottle"); file1 = H5OpenFile(FILENAME, H5_O_APPENDONLY, props); status = H5CheckFile(file1); @@ -411,6 +407,7 @@ void h5u_test_write2(void) RETURN(status, H5_SUCCESS, "H5CloseFile"); } +#if H5_VERSION_LE(1,8,12) void h5u_test_write3(void) { h5_file_t file1; @@ -420,12 +417,10 @@ void h5u_test_write3(void) TEST("Opening file once, write-truncate, MPI-POSIX VFD"); h5_prop_t props = H5CreateFileProp (); - status = H5SetPropFileMPIOCollective (props, &comm); - RETURN(status, H5_SUCCESS, "H5SetPropFileMPIOCollective"); - status = H5SetPropFileThrottle (props, 2); - RETURN(status, H5_SUCCESS, "H5SetPropFileThrottle"); + status = H5SetPropFileMPIOPosix (props, &comm); + RETURN(status, H5_SUCCESS, "H5SetPropFileMPIOPosix"); - file1 = H5OpenFile(FILENAME, H5_O_WRONLY | H5_VFD_MPIO_POSIX, props); + file1 = H5OpenFile(FILENAME, H5_O_WRONLY, props); status = H5CheckFile(file1); RETURN(status, H5_SUCCESS, "H5CheckFile"); @@ -443,6 +438,7 @@ void h5u_test_write3(void) status = H5CloseFile(file1); RETURN(status, H5_SUCCESS, "H5CloseFile"); } +#endif void h5u_test_write4(void) { @@ -455,16 +451,14 @@ void h5u_test_write4(void) TEST("Opening file twice, write-append + read-only, MPI-IO Independent VFD"); props = H5CreateFileProp (); - status = H5SetPropFileMPIOCollective (props, &comm); - RETURN(status, H5_SUCCESS, "H5SetPropFileMPIOCollective"); - status = H5SetPropFileThrottle (props, 2); - RETURN(status, H5_SUCCESS, "H5SetPropFileThrottle"); + status = H5SetPropFileMPIOIndependent (props, &comm); + RETURN(status, H5_SUCCESS, "H5SetPropFileMPIOIndependent"); - file1 = H5OpenFile(FILENAME, H5_O_APPENDONLY | H5_VFD_MPIO_INDEPENDENT, props); + file1 = H5OpenFile(FILENAME, H5_O_APPENDONLY, props); status = H5CheckFile(file1); RETURN(status, H5_SUCCESS, "H5CheckFile"); - file2 = H5OpenFile(FILENAME, H5_O_RDONLY | H5_VFD_MPIO_INDEPENDENT, props); + file2 = H5OpenFile(FILENAME, H5_O_RDONLY, props); status = H5CheckFile(file2); RETURN(status, H5_SUCCESS, "H5CheckFile");