From 5060fb1050c6b65bc67d04f7f7756deb7e1600d1 Mon Sep 17 00:00:00 2001 From: Scot Breitenfeld Date: Tue, 3 Feb 2015 13:52:27 -0500 Subject: [svn-r26122] Fix for HDFFV-9040 h5rget_object_type_f returns different types than indicated by API Slight change of global variable definitions from C. Tested: jam. --- fortran/src/H5Off_F03.f90 | 5 ----- fortran/src/H5_f.c | 39 ++++++++++++++++++---------------- fortran/src/H5f90global.f90 | 51 +++++++++++++++++++++++++++------------------ 3 files changed, 52 insertions(+), 43 deletions(-) diff --git a/fortran/src/H5Off_F03.f90 b/fortran/src/H5Off_F03.f90 index e6b87ea..36b6246 100644 --- a/fortran/src/H5Off_F03.f90 +++ b/fortran/src/H5Off_F03.f90 @@ -40,11 +40,6 @@ MODULE H5O_PROVISIONAL IMPLICIT NONE - enum, bind(c) - enumerator :: H5O_TYPE_UNKNOWN_F = -1 - enumerator :: H5O_TYPE_GROUP_F, H5O_TYPE_DATASET_F, H5O_TYPE_NAMED_DATATYPE_F, H5O_TYPE_NTYPES_F - end enum - !****t* H5T (F03)/h5o_info_t ! ! Fortran2003 Derived Type: diff --git a/fortran/src/H5_f.c b/fortran/src/H5_f.c index 05e525d..4e6edc3 100644 --- a/fortran/src/H5_f.c +++ b/fortran/src/H5_f.c @@ -471,27 +471,25 @@ nh5init_flags_c( int_f *h5d_flags, size_t_f *h5d_size_flags, /* * H5G flags */ - - h5g_flags[0] = (int_f)H5O_TYPE_UNKNOWN; - h5g_flags[1] = (int_f)H5O_TYPE_GROUP; - h5g_flags[2] = (int_f)H5O_TYPE_DATASET; - h5g_flags[3] = (int_f)H5O_TYPE_NAMED_DATATYPE; -/* This value can no longer be returned and all these flags should be updated - * to reflect the refinements between links and objects. -QAK */ -/* h5g_flags[4] = H5G_LINK; */ - h5g_flags[5] = (int_f)H5L_TYPE_ERROR; - h5g_flags[6] = (int_f)H5L_TYPE_HARD; - h5g_flags[7] = (int_f)H5L_TYPE_SOFT; - - h5g_flags[8] = (int_f)H5G_STORAGE_TYPE_UNKNOWN; - h5g_flags[9] = (int_f)H5G_STORAGE_TYPE_SYMBOL_TABLE; - h5g_flags[10] = (int_f)H5G_STORAGE_TYPE_COMPACT; - h5g_flags[11] = (int_f)H5G_STORAGE_TYPE_DENSE; + h5g_flags[0] = (int_f)H5G_UNKNOWN; + h5g_flags[1] = (int_f)H5G_GROUP; + h5g_flags[2] = (int_f)H5G_DATASET; + h5g_flags[3] = (int_f)H5G_TYPE; + h5g_flags[4] = (int_f)H5G_LINK; + h5g_flags[5] = (int_f)H5G_UDLINK; + h5g_flags[6] = (int_f)H5L_SAME_LOC; + h5g_flags[7] = (int_f)H5L_TYPE_ERROR; + h5g_flags[8] = (int_f)H5L_TYPE_HARD; + h5g_flags[9] = (int_f)H5L_TYPE_SOFT; + + h5g_flags[10] = (int_f)H5G_STORAGE_TYPE_UNKNOWN; + h5g_flags[11] = (int_f)H5G_STORAGE_TYPE_SYMBOL_TABLE; + h5g_flags[12] = (int_f)H5G_STORAGE_TYPE_COMPACT; + h5g_flags[13] = (int_f)H5G_STORAGE_TYPE_DENSE; /* * H5I flags */ - h5i_flags[0] = (int_f)H5I_FILE; h5i_flags[1] = (int_f)H5I_GROUP; h5i_flags[2] = (int_f)H5I_DATATYPE; @@ -551,10 +549,15 @@ nh5init_flags_c( int_f *h5d_flags, size_t_f *h5d_size_flags, h5o_flags[20] = (int_f)H5O_SHMESG_MAX_NINDEXES; h5o_flags[21] = (int_f)H5O_SHMESG_MAX_LIST_SIZE; +/* Types of objects in file */ + h5o_flags[22] = (int_f)H5O_TYPE_UNKNOWN; /* Unknown object type */ + h5o_flags[23] = (int_f)H5O_TYPE_GROUP; /* Object is a group */ + h5o_flags[24] = (int_f)H5O_TYPE_DATASET; /* Object is a dataset */ + h5o_flags[25] = (int_f)H5O_TYPE_NAMED_DATATYPE; /* Object is a named data type */ + h5o_flags[26] = (int_f)H5O_TYPE_NTYPES; /* Number of different object types */ /* * H5P flags */ - h5p_flags[0] = (hid_t_f)H5P_FILE_CREATE; h5p_flags[1] = (hid_t_f)H5P_FILE_ACCESS; h5p_flags[2] = (hid_t_f)H5P_DATASET_CREATE; diff --git a/fortran/src/H5f90global.f90 b/fortran/src/H5f90global.f90 index da1837a..08a4eb1 100644 --- a/fortran/src/H5f90global.f90 +++ b/fortran/src/H5f90global.f90 @@ -44,6 +44,8 @@ MODULE H5GLOBAL USE H5FORTRAN_TYPES + IMPLICIT NONE + ! Definitions for reference datatypes. ! If you change the value of these parameters, do not forget to change corresponding ! values in the H5f90.h file. @@ -309,12 +311,10 @@ MODULE H5GLOBAL EQUIVALENCE(H5generic_flags(7), H5_ITER_DEC_F) EQUIVALENCE(H5generic_flags(8), H5_ITER_NATIVE_F) EQUIVALENCE(H5generic_flags(9), H5_ITER_N_F) - - ! ! H5G flags declaration ! - INTEGER, PARAMETER :: H5G_FLAGS_LEN = 12 + INTEGER, PARAMETER :: H5G_FLAGS_LEN = 14 INTEGER :: H5G_flags(H5G_FLAGS_LEN) !DEC$if defined(BUILD_HDF5_DLL) !DEC$ATTRIBUTES DLLEXPORT :: /H5G_FLAGS/ @@ -325,8 +325,9 @@ MODULE H5GLOBAL INTEGER :: H5G_GROUP_F INTEGER :: H5G_DATASET_F INTEGER :: H5G_TYPE_F - ! XXX: Fix problems with H5G_LINK_F! - QAK INTEGER :: H5G_LINK_F + INTEGER :: H5G_UDLINK_F + INTEGER :: H5G_SAME_LOC_F INTEGER :: H5G_LINK_ERROR_F INTEGER :: H5G_LINK_HARD_F INTEGER :: H5G_LINK_SOFT_F @@ -335,21 +336,21 @@ MODULE H5GLOBAL INTEGER :: H5G_STORAGE_TYPE_COMPACT_F INTEGER :: H5G_STORAGE_TYPE_DENSE_F - EQUIVALENCE(H5G_flags(1), H5G_UNKNOWN_F) - EQUIVALENCE(H5G_flags(2), H5G_GROUP_F) - EQUIVALENCE(H5G_flags(3), H5G_DATASET_F) - EQUIVALENCE(H5G_flags(4), H5G_TYPE_F) - ! XXX: Fix problems with H5G_LINK_F! - QAK ! these are really H5L values -MSB- - EQUIVALENCE(H5G_flags(5), H5G_LINK_F) - EQUIVALENCE(H5G_flags(6), H5G_LINK_ERROR_F) - EQUIVALENCE(H5G_flags(7), H5G_LINK_HARD_F) - EQUIVALENCE(H5G_flags(8), H5G_LINK_SOFT_F) - ! XXX - - EQUIVALENCE(H5G_flags(9), H5G_STORAGE_TYPE_UNKNOWN_F ) - EQUIVALENCE(H5G_flags(10), H5G_STORAGE_TYPE_SYMBOL_TABLE_F) - EQUIVALENCE(H5G_flags(11), H5G_STORAGE_TYPE_COMPACT_F) - EQUIVALENCE(H5G_flags(12), H5G_STORAGE_TYPE_DENSE_F) + EQUIVALENCE(H5G_flags(1), H5G_UNKNOWN_F) ! Unknown object type + EQUIVALENCE(H5G_flags(2), H5G_GROUP_F) ! Object is a group + EQUIVALENCE(H5G_flags(3), H5G_DATASET_F) ! Object is a dataset + EQUIVALENCE(H5G_flags(4), H5G_TYPE_F) ! Object is a named data type + EQUIVALENCE(H5G_flags(5), H5G_LINK_F) ! Object is a symbolic link + EQUIVALENCE(H5G_flags(6), H5G_UDLINK_F) ! Object is a user-defined link + EQUIVALENCE(H5G_flags(7), H5G_SAME_LOC_F) + EQUIVALENCE(H5G_flags(8), H5G_LINK_ERROR_F) + EQUIVALENCE(H5G_flags(9), H5G_LINK_HARD_F) + EQUIVALENCE(H5G_flags(10), H5G_LINK_SOFT_F) + + EQUIVALENCE(H5G_flags(11), H5G_STORAGE_TYPE_UNKNOWN_F ) + EQUIVALENCE(H5G_flags(12), H5G_STORAGE_TYPE_SYMBOL_TABLE_F) + EQUIVALENCE(H5G_flags(13), H5G_STORAGE_TYPE_COMPACT_F) + EQUIVALENCE(H5G_flags(14), H5G_STORAGE_TYPE_DENSE_F) ! ! H5D flags declaration ! @@ -574,7 +575,7 @@ MODULE H5GLOBAL ! ! H5O flags declaration ! - INTEGER, PARAMETER :: H5O_FLAGS_LEN = 22 + INTEGER, PARAMETER :: H5O_FLAGS_LEN = 27 INTEGER :: H5o_flags(H5O_FLAGS_LEN) !DEC$if defined(BUILD_HDF5_DLL) !DEC$ATTRIBUTES DLLEXPORT :: /H5O_FLAGS/ @@ -603,6 +604,11 @@ MODULE H5GLOBAL INTEGER :: H5O_HDR_ALL_FLAGS_F INTEGER :: H5O_SHMESG_MAX_NINDEXES_F INTEGER :: H5O_SHMESG_MAX_LIST_SIZE_F + INTEGER :: H5O_TYPE_UNKNOWN_F + INTEGER :: H5O_TYPE_GROUP_F + INTEGER :: H5O_TYPE_DATASET_F + INTEGER :: H5O_TYPE_NAMED_DATATYPE_F + INTEGER :: H5O_TYPE_NTYPES_F EQUIVALENCE(h5o_flags(1) , H5O_COPY_SHALLOW_HIERARCHY_F) EQUIVALENCE(h5o_flags(2) , H5O_COPY_EXPAND_SOFT_LINK_F) @@ -626,6 +632,11 @@ MODULE H5GLOBAL EQUIVALENCE(h5o_flags(20) , H5O_HDR_ALL_FLAGS_F) EQUIVALENCE(h5o_flags(21) , H5O_SHMESG_MAX_NINDEXES_F) EQUIVALENCE(h5o_flags(22) , H5O_SHMESG_MAX_LIST_SIZE_F) + EQUIVALENCE(h5o_flags(23) , H5O_TYPE_UNKNOWN_F) + EQUIVALENCE(h5o_flags(24) , H5O_TYPE_GROUP_F) + EQUIVALENCE(h5o_flags(25) , H5O_TYPE_DATASET_F) + EQUIVALENCE(h5o_flags(26) , H5O_TYPE_NAMED_DATATYPE_F) + EQUIVALENCE(h5o_flags(27) , H5O_TYPE_NTYPES_F) ! ! H5P flags declaration -- cgit v0.12