From a496f905b8c9ca6428d27efaaf354eb475e2a531 Mon Sep 17 00:00:00 2001 From: Elena Pourmal Date: Fri, 11 Apr 2003 23:09:49 -0500 Subject: [svn-r6641] Purpose: Catching up with C library Description: I added four new functions h5pset_szip_f h5pget_filter_by_id_f h5pmodify_filetr_f h5pall_filters_avail_f Solution: Platforms tested: arabica (with and without SZIP Library), modi4 (with SZIP and parallel) burrwhite (with SZIP and PGI C and Fortran compilers) Misc. update: --- fortran/src/H5Pf.c | 185 ++++++++++++++++++++++++++++++- fortran/src/H5Pff.f90 | 257 ++++++++++++++++++++++++++++++++++++++++++++ fortran/src/H5_f.c | 16 ++- fortran/src/H5_ff.f90 | 24 ++--- fortran/src/H5f90global.f90 | 20 ++-- fortran/src/H5f90proto.h | 16 ++- 6 files changed, 492 insertions(+), 26 deletions(-) diff --git a/fortran/src/H5Pf.c b/fortran/src/H5Pf.c index 01e4af1..f1bc80e 100644 --- a/fortran/src/H5Pf.c +++ b/fortran/src/H5Pf.c @@ -1487,17 +1487,18 @@ nh5pget_filter_c(hid_t_f *prp_id, int_f* filter_number, int_f* flags, size_t_f* int c_filter_number; unsigned int c_flags; size_t c_cd_nelmts, c_namelen; + size_t c_cd_nelmts_in; H5Z_filter_t c_filter; unsigned int * c_cd_values; char* c_name; int i; - c_cd_nelmts = (size_t)*cd_nelmts; + c_cd_nelmts_in = (size_t)*cd_nelmts; c_namelen = (size_t)*namelen; c_name = (char*)malloc(sizeof(char)*c_namelen); if (!c_name) return ret_value; - c_cd_values = (unsigned int*)malloc(sizeof(unsigned int)*((int)c_cd_nelmts)); + c_cd_values = (unsigned int*)malloc(sizeof(unsigned int)*((int)c_cd_nelmts_in)); if (!c_cd_values) {HDfree(c_name); return ret_value; } @@ -1517,7 +1518,7 @@ nh5pget_filter_c(hid_t_f *prp_id, int_f* filter_number, int_f* flags, size_t_f* *flags = (int_f)c_flags; HD5packFstring(c_name, _fcdtocp(name), strlen(c_name)); - for (i = 0; i < c_cd_nelmts; i++) + for (i = 0; i < c_cd_nelmts_in; i++) cd_values[i] = (int_f)c_cd_values[i]; ret_value = 0; @@ -3116,3 +3117,181 @@ HD5packFstring(tmp, _fcdtocp(memb_name), c_lenmax*H5FD_MEM_NTYPES); for (i=0; i < H5FD_MEM_NTYPES; i++) free(c_memb_name[i]); return ret_value; } + +/*---------------------------------------------------------------------------- + * Name: h5pset_szip_c + * Purpose: Call H5Pset_szip to set szip compression + * Inputs: prp_id - dataset creation property list identifier + * options_mask + * pixels_per_block -szip compression parameters + * Returns: 0 on success, -1 on failure + * Programmer: Elena Pourmal + * April 8 2003 + * Modifications: + *---------------------------------------------------------------------------*/ + +int_f +nh5pset_szip_c ( hid_t_f *prp_id , int_f *options_mask, int_f *pixels_per_block) +{ + int ret_value = -1; + hid_t c_prp_id; + unsigned c_options_mask; + unsigned c_pixels_per_block; + herr_t status; + + c_prp_id = (hid_t)*prp_id; + c_options_mask = (unsigned)*options_mask; + c_pixels_per_block = (unsigned)*pixels_per_block; +/* + * Call H5Pset_szip function + */ + + status = H5Pset_szip(c_prp_id, c_options_mask, c_pixels_per_block); + if ( status < 0 ) return ret_value; + ret_value = 0; + return ret_value; +} +/*---------------------------------------------------------------------------- + * Name: h5pall_filters_avail_c + * Purpose: Call H5Pall_filters_avail + * Inputs: prp_id - dataset creation property list identifier + * Outputs: status - logical flag + * Returns: 0 on success, -1 on failure + * Programmer: Elena Pourmal + * April 10 2003 + * Modifications: + *---------------------------------------------------------------------------*/ + +int_f +nh5pall_filters_avail_c ( hid_t_f *prp_id , int_f *status) +{ + int ret_value = -1; + hid_t c_prp_id; + htri_t c_status; + + + c_prp_id = (hid_t)*prp_id; +/* + * Call H5Pall_filters_avail function + */ + + c_status = H5Pall_filters_avail(c_prp_id); + if ( c_status < 0 ) return ret_value; + *status = 0; + if (c_status == 1) *status = 1; + ret_value = 0; + return ret_value; +} +/*---------------------------------------------------------------------------- + * Name: h5pget_filter_by_id_c + * Purpose: Call H5Pget_filter_by_id to get information about a filter + * in a pipeline + * Inputs: prp_id - property list identifier + * filter_id - filter id + * namelen - Anticipated number of characters in name. + *Outputs: flags - Bit vector specifying certain general + * properties of the filter. + * cd_nelmts - Number of elements in cd_value + * cd_values - Auxiliary data for the filter. + * name - Name of the filter + * Returns: 0 on success, -1 on failure + * Programmer: Elena POurmal + * April 10, 2003 + * Modifications: + *---------------------------------------------------------------------------*/ +int_f +nh5pget_filter_by_id_c(hid_t_f *prp_id, int_f* filter_id, int_f* flags, size_t_f* cd_nelmts, int_f* cd_values, size_t_f *namelen, _fcd name) +{ + int ret_value = -1; + hid_t c_prp_id; + H5Z_filter_t c_filter_id; + unsigned int c_flags; + size_t c_cd_nelmts, c_namelen; + size_t c_cd_nelmts_in; + unsigned int * c_cd_values; + char* c_name; + int i; + herr_t status; + c_cd_nelmts_in = (size_t)*cd_nelmts; + c_cd_nelmts = (size_t)*cd_nelmts; + c_namelen = (size_t)*namelen; + c_name = (char*)malloc(sizeof(char)*c_namelen+1); + if (!c_name) return ret_value; + + c_cd_values = (unsigned int*)malloc(sizeof(unsigned int)*((int)c_cd_nelmts_in)); + if (!c_cd_values) {HDfree(c_name); + return ret_value; + } + + + /* + * Call H5Pget_filter function. + */ + c_prp_id = (hid_t)*prp_id; + c_filter_id = (H5Z_filter_t)*filter_id; + status = H5Pget_filter_by_id(c_prp_id, c_filter_id, &c_flags, &c_cd_nelmts, c_cd_values, c_namelen, c_name); + if (status < 0) goto DONE; + + *cd_nelmts = (size_t_f)c_cd_nelmts; + *flags = (int_f)c_flags; + HD5packFstring(c_name, _fcdtocp(name), strlen(c_name)); + + for (i = 0; i < c_cd_nelmts_in; i++) + cd_values[i] = (int_f)c_cd_values[i]; + + ret_value = 0; + +DONE: + HDfree(c_name); + HDfree(c_cd_values); + return ret_value; +} + +/*---------------------------------------------------------------------------- + * Name: h5pmodify_filter_c + * Purpose: Call H5Pmodify_filter to modify a filter + * Inputs: prp_id - property list identifier + * filter - Filter to be modified + * flags - Bit vector specifying certain general + * properties of the filter. + * cd_nelmts - Number of elements in cd_values. + * cd_values - Auxiliary data for the filter. + * Returns: 0 on success, -1 on failure + * Programmer: Elena Pourmal + * April 10 2003 + * Modifications: + *---------------------------------------------------------------------------*/ +int_f +nh5pmodify_filter_c (hid_t_f *prp_id, int_f* filter, int_f* flags, size_t_f* cd_nelmts, int_f* cd_values ) +{ + int ret_value = -1; + hid_t c_prp_id; + herr_t ret; + size_t c_cd_nelmts; + unsigned int c_flags; + H5Z_filter_t c_filter; + unsigned int * c_cd_values; + int i; + + c_filter = (H5Z_filter_t)*filter; + c_flags = (unsigned)*flags; + c_cd_nelmts = (size_t)*cd_nelmts; + c_cd_values = (unsigned int*)malloc(sizeof(unsigned int)*((int)c_cd_nelmts)); + if (!c_cd_values) return ret_value; + for (i = 0; i < c_cd_nelmts; i++) + c_cd_values[i] = (unsigned int)cd_values[i]; + + /* + * Call H5Pmodify_filter function. + */ + c_prp_id = (hid_t)*prp_id; + ret = H5Pmodify_filter(c_prp_id, c_filter, c_flags, c_cd_nelmts,c_cd_values ); + + if (ret < 0) goto DONE; + ret_value = 0; + +DONE: + HDfree(c_cd_values); + return ret_value; +} + diff --git a/fortran/src/H5Pff.f90 b/fortran/src/H5Pff.f90 index e6f4593..fe4ddac 100644 --- a/fortran/src/H5Pff.f90 +++ b/fortran/src/H5Pff.f90 @@ -6162,4 +6162,261 @@ if(flag .eq. 0) relax = .FALSE. if(present(maxlen_out)) maxlen_out = c_maxlen_out END SUBROUTINE h5pget_fapl_multi_f +!---------------------------------------------------------------------- +! Name: h5pset_szip_f +! +! Purpose: Sets up use of szip compression +! +! Inputs: +! prp_id - dataset creation property list identifier +! options_mask +! pixels_per_block - szip parameters +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! April 10 2003 +! +! Modifications: +! +! Comment: +!---------------------------------------------------------------------- + + + SUBROUTINE h5pset_szip_f(prp_id, options_mask, pixels_per_block, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_szip_f +!DEC$endif +! + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset creation property + ! list identifier + INTEGER, INTENT(IN) :: options_mask + INTEGER, INTENT(IN) :: pixels_per_block + INTEGER, INTENT(OUT) :: hdferr ! Error code + +! INTEGER, EXTERNAL :: h5pset_szip_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_szip_c(prp_id, options_mask, pixels_per_block) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_SZIP_C'::h5pset_szip_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier + INTEGER, INTENT(IN) :: options_mask + INTEGER, INTENT(IN) :: pixels_per_block + END FUNCTION h5pset_szip_c + END INTERFACE + hdferr = h5pset_szip_c(prp_id, options_mask, pixels_per_block) + + END SUBROUTINE h5pset_szip_f + +!---------------------------------------------------------------------- +! Name: h5pall_filters_avail_f +! +! Purpose: Checks if all filters set in the dataset creation +! property list are available +! +! Inputs: +! prp_id - data creation property list identifier +! Outputs: +! flag - .TRUE. if all filters are available +! .FALSE. otherwise +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! April 10 2003 +! +! Modifications: +! +! Comment: +!---------------------------------------------------------------------- + + + SUBROUTINE h5pall_filters_avail_f(prp_id, flag, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pall_filters_avail_f +!DEC$endif +! + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset creation property + ! list identifier + LOGICAL, INTENT(OUT) :: flag + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER :: status + +! INTEGER, EXTERNAL :: h5pall_filters_avail_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pall_filters_avail_c(prp_id, status) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PALL_FILTERS_AVAIL_C'::h5ppall_filters_avail_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier + INTEGER, INTENT(OUT) :: status + END FUNCTION h5pall_filters_avail_c + END INTERFACE + flag = .TRUE. + hdferr = h5pall_filters_avail_c(prp_id, status) + if (status .eq. 0 ) flag = .FALSE. + + END SUBROUTINE h5pall_filters_avail_f + +!---------------------------------------------------------------------- +! Name: h5pget_filter_by_id_f +! +! Purpose: Returns information about a filter in a pipeline +! +! Inputs: +! prp_id - data creation or transfer property list +! identifier +! Outputs: +! filter_id - filter identifier +! flags - bit vector specifying certain general +! properties of the filter +! cd_nelmts - number of elements in cd_values +! cd_values - auxiliary data for the filter +! namelen - number of characters in the name buffer +! name - buffer to retrieve filter name +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! April 10 2003 +! +! Modifications: +! +! Comment: +!---------------------------------------------------------------------- + + SUBROUTINE h5pget_filter_by_id_f(prp_id, filter_id, flags, cd_nelmts, cd_values, namelen, name, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_filter_by_id_f +!DEC$endif +! + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + + INTEGER, INTENT(IN) :: filter_id ! Filter identifier + INTEGER(SIZE_T), INTENT(INOUT) :: cd_nelmts !Number of elements in cd_values. + INTEGER, DIMENSION(*), INTENT(OUT) :: cd_values !Auxiliary data for the filter. + INTEGER, INTENT(OUT) :: flags !Bit vector specifying certain general + !properties of the filter. + INTEGER(SIZE_T), INTENT(IN) :: namelen !Anticipated number of characters in name. + CHARACTER(LEN=*), INTENT(OUT) :: name !Name of the filter + + INTEGER, INTENT(OUT) :: hdferr ! Error code + + +! INTEGER, EXTERNAL :: h5pget_filter_by_id_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_filter_by_id_c(prp_id, filter_id, flags, cd_nelmts, & + cd_values, namelen, name) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_FILTER_BY_ID_C'::h5pget_filter_by_id_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: filter_id + INTEGER, DIMENSION(*), INTENT(OUT) :: cd_values + INTEGER, INTENT(OUT) :: flags + INTEGER(SIZE_T), INTENT(INOUT) :: cd_nelmts + INTEGER(SIZE_T), INTENT(IN) :: namelen + CHARACTER(LEN=*), INTENT(OUT) :: name + END FUNCTION h5pget_filter_by_id_c + END INTERFACE + + hdferr = h5pget_filter_by_id_c(prp_id, filter_id, flags, cd_nelmts, & + cd_values, namelen, name) + END SUBROUTINE h5pget_filter_by_id_f + +!---------------------------------------------------------------------- +! Name: h5pmodify_filter_f +! +! Purpose: Adds a filter to the filter pipeline. +! +! Inputs: +! prp_id - data creation or transfer property list +! identifier +! filter - filter to be modified +! flags - bit vector specifying certain general +! properties of the filter +! cd_nelmts - number of elements in cd_values +! cd_values - auxiliary data for the filter +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! April 10 2003 +! +! Modifications: +! +! Comment: +!---------------------------------------------------------------------- + + SUBROUTINE h5pmodify_filter_f(prp_id, filter, flags, cd_nelmts, cd_values, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pmodify_filter_f +!DEC$endif +! + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER, INTENT(IN) :: filter !Filter to be modified + INTEGER, INTENT(IN) :: flags !Bit vector specifying certain general + !properties of the filter. + INTEGER(SIZE_T), INTENT(IN) :: cd_nelmts !Number of elements in cd_values. + INTEGER, DIMENSION(*), INTENT(IN) :: cd_values !Auxiliary data for the filter. + + INTEGER, INTENT(OUT) :: hdferr ! Error code + +! INTEGER, EXTERNAL :: h5pmodify_filter_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pmodify_filter_c(prp_id, filter, flags, cd_nelmts, cd_values) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PMODIFY_FILTER_C'::h5pmodify_filter_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: filter + INTEGER, INTENT(IN) :: flags + INTEGER(SIZE_T), INTENT(IN) :: cd_nelmts + INTEGER, DIMENSION(*), INTENT(IN) :: cd_values + END FUNCTION h5pmodify_filter_c + END INTERFACE + + hdferr = h5pmodify_filter_c(prp_id, filter, flags, cd_nelmts, cd_values ) + END SUBROUTINE h5pmodify_filter_f + END MODULE H5P diff --git a/fortran/src/H5_f.c b/fortran/src/H5_f.c index 9d69b55..adc19f6 100644 --- a/fortran/src/H5_f.c +++ b/fortran/src/H5_f.c @@ -378,19 +378,27 @@ nh5init_flags_c( int_f *h5d_flags, int_f *h5e_flags, int_f *h5f_flags, h5z_flags[6] = H5Z_DISABLE_EDC; h5z_flags[7] = H5Z_ENABLE_EDC; h5z_flags[8] = H5Z_NO_EDC; + h5z_flags[9] = H5Z_FILTER_SZIP; + h5z_flags[10] = H5Z_FLAG_OPTIONAL; ret_value = 0; return ret_value; } -/* + int_f -nh5init1_flags_c(haddr_t_f *h5lib_flags) +nh5init1_flags_c(int_f *h5lib_flags) { - int ret_value = -1; + int ret_value = -1; + unsigned prm_1 = H5_SZIP_RAW_OPTION_MASK; + unsigned prm_2 = H5_SZIP_NN_OPTION_MASK; + unsigned prm_3 = H5_SZIP_RAW_OPTION_MASK | H5_SZIP_NN_OPTION_MASK; + h5lib_flags[0] = (int_f)prm_1; + h5lib_flags[1] = (int_f)prm_2; + h5lib_flags[2] = (int_f)prm_3; ret_value = 0; return ret_value; } -*/ + /*--------------------------------------------------------------------------- * Name: h5open_c * Purpose: Calls H5open call to initialize C HDF5 library diff --git a/fortran/src/H5_ff.f90 b/fortran/src/H5_ff.f90 index 53d4bec..4d353dc 100644 --- a/fortran/src/H5_ff.f90 +++ b/fortran/src/H5_ff.f90 @@ -34,7 +34,7 @@ IMPLICIT NONE INTEGER, INTENT(OUT) :: error - INTEGER :: error_0, error_1, error_2 + INTEGER :: error_0, error_1, error_2, error_3 ! INTEGER, EXTERNAL :: h5init_types_c ! INTEGER, EXTERNAL :: h5init_flags_c ! INTEGER, EXTERNAL :: h5init1_flags_c @@ -90,15 +90,15 @@ !DEC$ ENDIF END FUNCTION h5init_flags_c END INTERFACE -! INTERFACE -! INTEGER FUNCTION h5init1_flags_c( i_H5LIB_flags ) -! USE H5GLOBAL -! INTEGER(HADDR_T) i_H5LIB_flags(H5LIB_FLAGS_LEN) -! !DEC$ IF DEFINED(HDF5F90_WINDOWS) -! !MS$ATTRIBUTES C,reference,alias:'_H5INIT1_FLAGS_C'::h5init1_flags_c -! !DEC$ ENDIF -! END FUNCTION h5init1_flags_c -! END INTERFACE + INTERFACE + INTEGER FUNCTION h5init1_flags_c( i_H5LIB_flags ) + USE H5GLOBAL + INTEGER i_H5LIB_flags(H5LIB_FLAGS_LEN) + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5INIT1_FLAGS_C'::h5init1_flags_c + !DEC$ ENDIF + END FUNCTION h5init1_flags_c + END INTERFACE error_0 = h5open_c() error_1 = h5init_types_c(predef_types, floating_types, integer_types) error_2 = h5init_flags_c(H5D_flags, & @@ -112,8 +112,8 @@ H5S_flags, & H5T_flags, & H5Z_flags) -! error_3 = h5init1_flags_c(H5LIB_flags ) - error = error_0 + error_1 + error_2 + error_3 = h5init1_flags_c(H5LIB_flags ) + error = error_0 + error_1 + error_2 + error_3 END SUBROUTINE h5open_f !---------------------------------------------------------------------- diff --git a/fortran/src/H5f90global.f90 b/fortran/src/H5f90global.f90 index 0c8d5fc..26a081c 100644 --- a/fortran/src/H5f90global.f90 +++ b/fortran/src/H5f90global.f90 @@ -555,7 +555,7 @@ ! ! H5Z flags declaration ! - INTEGER, PARAMETER :: H5Z_FLAGS_LEN = 9 + INTEGER, PARAMETER :: H5Z_FLAGS_LEN = 11 INTEGER H5Z_flags(H5Z_FLAGS_LEN) !DEC$if defined(BUILD_HDF5_DLL) !DEC$ ATTRIBUTES DLLEXPORT :: /H5Z_FLAGS/ @@ -567,10 +567,12 @@ INTEGER :: H5Z_FILTER_DEFLATE_F INTEGER :: H5Z_FILTER_SHUFFLE_F INTEGER :: H5Z_FILTER_FLETCHER32_F + INTEGER :: H5Z_FILTER_SZIP_F INTEGER :: H5Z_ERROR_EDC_F INTEGER :: H5Z_DISABLE_EDC_F INTEGER :: H5Z_ENABLE_EDC_F INTEGER :: H5Z_NO_EDC_F + INTEGER :: H5Z_FLAG_OPTIONAL_F EQUIVALENCE(H5Z_flags(1), H5Z_FILTER_ERROR_F) EQUIVALENCE(H5Z_flags(2), H5Z_FILTER_NONE_F) @@ -581,20 +583,26 @@ EQUIVALENCE(H5Z_flags(7), H5Z_DISABLE_EDC_F) EQUIVALENCE(H5Z_flags(8), H5Z_ENABLE_EDC_F) EQUIVALENCE(H5Z_flags(9), H5Z_NO_EDC_F) + EQUIVALENCE(H5Z_flags(10), H5Z_FILTER_SZIP_F) + EQUIVALENCE(H5Z_flags(11), H5Z_FLAG_OPTIONAL_F) ! ! H5 Library flags declaration ! -! INTEGER, PARAMETER :: H5LIB_FLAGS_LEN = 1 -! INTEGER(HADDR_T) H5LIB_flags(H5LIB_FLAGS_LEN) + INTEGER, PARAMETER :: H5LIB_FLAGS_LEN = 3 + INTEGER :: H5LIB_flags(H5LIB_FLAGS_LEN) !DEC$if defined(BUILD_HDF5_DLL) !DEC$ ATTRIBUTES DLLEXPORT :: /H5LIB_FLAGS/ !DEC$endif -! COMMON /H5LIB_FLAGS/ H5LIB_flags -! INTEGER(HADDR_T) :: HADDR_MAX_F + COMMON /H5LIB_FLAGS/ H5LIB_flags + INTEGER :: H5_SZIP_RAW_OM_F + INTEGER :: H5_SZIP_NN_OM_F + INTEGER :: H5_SZIP_RAWORNN_OM_F ! -! EQUIVALENCE(H5LIB_flags(1), HADDR_MAX_F) + EQUIVALENCE(H5LIB_flags(1), H5_SZIP_RAW_OM_F) + EQUIVALENCE(H5LIB_flags(2), H5_SZIP_NN_OM_F) + EQUIVALENCE(H5LIB_flags(3), H5_SZIP_RAWORNN_OM_F) END MODULE H5GLOBAL diff --git a/fortran/src/H5f90proto.h b/fortran/src/H5f90proto.h index 4d53ba5..dbf7142 100644 --- a/fortran/src/H5f90proto.h +++ b/fortran/src/H5f90proto.h @@ -713,8 +713,10 @@ H5_DLL int_f nh5tis_variable_str_c ( hid_t_f *type_id , int_f *flag ); # define nh5pset_layout_c FNAME(H5PSET_LAYOUT_C) # define nh5pget_layout_c FNAME(H5PGET_LAYOUT_C) # define nh5pset_filter_c FNAME(H5PSET_FILTER_C) +# define nh5pmodify_filter_c FNAME(H5PMODIFY_FILTER_C) # define nh5pget_nfilters_c FNAME(H5PGET_NFILTERS_C) # define nh5pget_filter_c FNAME(H5PGET_FILTER_C) +# define nh5pget_filter_by_id_c FNAME(H5PGET_FILTER_BY_ID_C) # define nh5pset_external_c FNAME(H5PSET_EXTERNAL_C) # define nh5pget_external_count_c FNAME(H5PGET_EXTERNAL_COUNT_C) # define nh5pget_external_c FNAME(H5PGET_EXTERNAL_C) @@ -771,6 +773,8 @@ H5_DLL int_f nh5tis_variable_str_c ( hid_t_f *type_id , int_f *flag ); # define nh5pget_fapl_multi_c FNAME(H5PGET_FAPL_MULTI_C) # define nh5pset_fapl_multi_c FNAME(H5PSET_FAPL_MULTI_C) # define nh5pset_fapl_multi_sc FNAME(H5PSET_FAPL_MULTI_SC) +# define nh5pset_szip_c FNAME(H5PSET_SZIP_C) +# define nh5pall_filters_avail_c FNAME(H5PALL_FILTERS_AVAIL_C) #else # define nh5pcreate_c FNAME(h5pcreate_c) @@ -816,8 +820,10 @@ H5_DLL int_f nh5tis_variable_str_c ( hid_t_f *type_id , int_f *flag ); # define nh5pset_layout_c FNAME(h5pset_layout_c) # define nh5pget_layout_c FNAME(h5pget_layout_c) # define nh5pset_filter_c FNAME(h5pset_filter_c) +# define nh5pmodify_filter_c FNAME(h5pmodify_filter_c) # define nh5pget_nfilters_c FNAME(h5pget_nfilters_c) # define nh5pget_filter_c FNAME(h5pget_filter_c) +# define nh5pget_filter_by_id_c FNAME(h5pget_filter_by_id_c) # define nh5pset_external_c FNAME(h5pset_external_c) # define nh5pget_external_count_c FNAME(h5pget_external_count_c) # define nh5pget_external_c FNAME(h5pget_external_c) @@ -874,6 +880,8 @@ H5_DLL int_f nh5tis_variable_str_c ( hid_t_f *type_id , int_f *flag ); # define nh5pget_fapl_multi_c FNAME(h5pget_fapl_multi_c) # define nh5pset_fapl_multi_c FNAME(h5pset_fapl_multi_c) # define nh5pset_fapl_multi_sc FNAME(h5pset_fapl_multi_sc) +# define nh5pset_szip_c FNAME(h5pset_szip_c) +# define nh5pall_filters_avail_c FNAME(h5pall_filters_avail_c) #endif @@ -971,9 +979,13 @@ nh5pget_layout_c (hid_t_f *prp_id, int_f* layout); H5_DLL int_f nh5pset_filter_c (hid_t_f *prp_id, int_f* filter, int_f* flags, size_t_f* cd_nelmts, int_f* cd_values ); H5_DLL int_f +nh5pmodify_filter_c (hid_t_f *prp_id, int_f* filter, int_f* flags, size_t_f* cd_nelmts, int_f* cd_values ); +H5_DLL int_f nh5pget_nfilters_c (hid_t_f *prp_id, int_f* nfilters); H5_DLL int_f nh5pget_filter_c(hid_t_f *prp_id, int_f* filter_number, int_f* flags, size_t_f* cd_nelmts, int_f* cd_values, size_t_f *namelen, _fcd name, int_f* filter_id); +H5_DLL int_f +nh5pget_filter_by_id_c(hid_t_f *prp_id, int_f* filter_id, int_f* flags, size_t_f* cd_nelmts, int_f* cd_values, size_t_f *namelen, _fcd name); H5_DLL int_f nh5pset_external_c (hid_t_f *prp_id, _fcd name, int_f* namelen, int_f* offset, hsize_t_f*bytes); H5_DLL int_f @@ -1062,6 +1074,8 @@ H5_DLL int_f nh5pset_family_offset_c ( hid_t_f *prp_id , hsize_t_f *offset); H5_DLL int_f nh5pget_fapl_multi_c ( hid_t_f *prp_id , int_f *mem_map, hid_t_f *memb_fapl, _fcd memb_name, int_f *len, int_f *lenmax, real_f *memb_addr, int_f *flag, int_f *maxlen_out); H5_DLL int_f nh5pset_fapl_multi_c ( hid_t_f *prp_id , int_f *mem_map, hid_t_f *memb_fapl, _fcd memb_name, int_f *len, int_f *lenmax, real_f *memb_addr, int_f *flag); H5_DLL int_f nh5pset_fapl_multi_sc ( hid_t_f *prp_id , int_f *flag); +H5_DLL int_f nh5pset_szip_c ( hid_t_f *prp_id , int_f *options_mask, int_f *pixels_per_block); +H5_DLL int_f nh5pall_filters_avail_c ( hid_t_f *prp_id , int_f *status); /* * Functions frome H5Rf.c @@ -1186,7 +1200,7 @@ H5_DLL int_f nh5init_flags_c( int_f *h5d_flags, int_f *h5e_flags, int_f *h5f_fla int_f *h5fd_flags, int_f *h5g_flags, int_f *h5i_flags, int_f *h5p_flags, int_f *h5r_flags, int_f *h5s_flags, int_f *h5t_flags, int_f *h5z_flags); -/*H5_DLL int_f nh5init1_flags_c(haddr_t_f *h5lib_flags); */ +H5_DLL int_f nh5init1_flags_c(int_f *h5lib_flags); H5_DLL int_f nh5get_libversion_c(int_f *majnum, int_f *minnum, int_f *relnum); -- cgit v0.12