summaryrefslogtreecommitdiffstats
path: root/fortran/src
diff options
context:
space:
mode:
authorElena Pourmal <epourmal@hdfgroup.org>2003-04-02 21:42:41 (GMT)
committerElena Pourmal <epourmal@hdfgroup.org>2003-04-02 21:42:41 (GMT)
commitcd1b5623f0b092960542d38751b6f3453d18e7e7 (patch)
tree92f25216f3a49716394d37f877634422deefb74c /fortran/src
parent6e9724c46c38649b2ddc95a878e872a3c3eb5972 (diff)
downloadhdf5-cd1b5623f0b092960542d38751b6f3453d18e7e7.zip
hdf5-cd1b5623f0b092960542d38751b6f3453d18e7e7.tar.gz
hdf5-cd1b5623f0b092960542d38751b6f3453d18e7e7.tar.bz2
[svn-r6573]
Purpose: Maintenance Description: New fortran APIs h5pset_fapl_multi and h5pget_fapl_multi have been added Solution: Platforms tested: burrwhite with PGI compilers, arabica and modi4 with --enable-parallel Misc. update:
Diffstat (limited to 'fortran/src')
-rw-r--r--fortran/src/H5Pf.c212
-rw-r--r--fortran/src/H5Pff.f90272
-rw-r--r--fortran/src/H5_f.c20
-rw-r--r--fortran/src/H5_ff.f9019
-rw-r--r--fortran/src/H5f90.h2
-rw-r--r--fortran/src/H5f90global.f9034
-rw-r--r--fortran/src/H5f90proto.h16
7 files changed, 567 insertions, 8 deletions
diff --git a/fortran/src/H5Pf.c b/fortran/src/H5Pf.c
index f162963..57f2f7d 100644
--- a/fortran/src/H5Pf.c
+++ b/fortran/src/H5Pf.c
@@ -2906,3 +2906,215 @@ nh5pget_edc_check_c ( hid_t_f *prp_id, int_f *flag )
*flag = (int_f)c_flag;
return ret_value;
}
+/*----------------------------------------------------------------------------
+ * Name: h5pset_family_offset_c
+ * Purpose: Call H5Pset_family_offset to set and offset for family driver
+ * Inputs: prp_id - property list identifier
+ * offset - offset in bytes
+ * Returns: 0 on success, -1 on failure
+ * Programmer: Elena Pourmal
+ * Wednesday, 19 March 2003
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5pset_family_offset_c ( hid_t_f *prp_id , hsize_t_f *offset)
+{
+ int ret_value = 0;
+ hid_t c_prp_id;
+ hsize_t c_offset;
+ herr_t status;
+
+ c_prp_id = (hid_t)*prp_id;
+ c_offset = (hsize_t)*offset;
+ status = H5Pset_family_offset(c_prp_id, c_offset);
+ if ( status < 0 ) ret_value = -1;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pset_fapl_multi_c
+ * Purpose: Call H5Pset_fapl_multi to set multi file dirver
+ * Inputs: prp_id - file_creation property list identifier
+ * mem_map - memory mapping array
+ * memb_fapl - property list for each memory usage type
+ * memb_name - array with members names
+ * len - array with the lenght of each name
+ * lenmax - lenght of the name a sdeclared in Fortran
+ * flag - flag allowing partila access when one of the files is missing
+ * Returns: 0 on success, -1 on failure
+ * Programmer: Elena Pourmal
+ * Monday 24, March 2003
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+/*nh5pset_fapl_multi_c ( hid_t_f *prp_id , int_f *memb_map, hid_t_f *memb_fapl, _fcd memb_name, int_f *len, int_f *lenmax, haddr_t_f *memb_addr, int_f *flag) */
+nh5pset_fapl_multi_c ( hid_t_f *prp_id , int_f *memb_map, hid_t_f *memb_fapl, _fcd memb_name, int_f *len, int_f *lenmax, real_f *memb_addr, int_f *flag)
+{
+ int ret_value = -1;
+ hid_t c_prp_id;
+ H5FD_mem_t c_memb_map[H5FD_MEM_NTYPES];
+ hid_t c_memb_fapl[H5FD_MEM_NTYPES];
+ const char *c_memb_name[H5FD_MEM_NTYPES];
+ haddr_t c_memb_addr[H5FD_MEM_NTYPES];
+ hbool_t relax;
+ herr_t status;
+ char *tmp, *tmp_p, *tmp_pp;
+ int i;
+ int c_lenmax;
+ c_lenmax = (int)*lenmax;
+ relax = (hbool_t)*flag;
+/*
+ * Check that we got correct values from Fortran for memb_addr array
+ */
+ for (i=0; i < H5FD_MEM_NTYPES; i++) {
+ if(memb_addr[i] >= 1.) return ret_value;
+ }
+/*
+ * Take care of names array
+ */
+
+ tmp = (char *)HD5f2cstring(memb_name, c_lenmax*(H5FD_MEM_NTYPES));
+ if (tmp ==NULL) return ret_value;
+ tmp_p = tmp;
+ for (i=0; i < H5FD_MEM_NTYPES; i++) {
+ c_memb_name[i] = (char *) malloc(len[i] + 1);
+ memcpy((char *)c_memb_name[i], tmp_p, len[i]);
+ tmp_pp = (char *)c_memb_name[i];
+ tmp_pp[len[i]] = '\0';
+ tmp_p = tmp_p + c_lenmax;
+/* printf(" %d \n", len[i]);
+ printf("name %s \n", c_memb_name[i]);
+*/
+ }
+/*
+ * Take care of othe arguments
+ */
+
+ c_prp_id = (hid_t)*prp_id;
+ for (i=0; i < H5FD_MEM_NTYPES; i++) {
+ c_memb_map[i] = (H5FD_mem_t)memb_map[i];
+ /*printf("map %d \n", c_memb_map[i]); */
+ c_memb_fapl[i] = (hid_t)memb_fapl[i];
+ /*printf("fapl %d \n", c_memb_fapl[i]); */
+ if(memb_addr[i] < 0) c_memb_addr[i] = HADDR_UNDEF;
+ else c_memb_addr[i] = (haddr_t)(((float)memb_addr[i])*(HADDR_MAX));
+ /*printf("address %Ld \n", c_memb_addr[i]); */
+ }
+/*
+ * Call H5Pset_fapl_multi function
+ */
+
+ status = H5Pset_fapl_multi(c_prp_id, c_memb_map, c_memb_fapl, c_memb_name, c_memb_addr, relax);
+ if ( status < 0 ) goto DONE;
+ ret_value = 0;
+
+DONE:
+ free(tmp);
+ for (i=0; i < H5FD_MEM_NTYPES; i++) free((char *)c_memb_name[i]);
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pset_fapl_multi_sc
+ * Purpose: Call H5Pset_fapl_multi to set multi file dirver
+ * Inputs: prp_id - file_creation property list identifier
+ * Returns: 0 on success, -1 on failure
+ * Programmer: Elena Pourmal
+ * March 31 2003
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5pset_fapl_multi_sc ( hid_t_f *prp_id , int_f *flag)
+{
+ int ret_value = -1;
+ hid_t c_prp_id;
+ hbool_t relax;
+ herr_t status;
+
+ relax = (hbool_t)*flag;
+ c_prp_id = (hid_t)*prp_id;
+/*
+ * Call H5Pset_fapl_multi function
+ */
+
+ status = H5Pset_fapl_multi(c_prp_id, NULL, NULL, NULL, NULL, relax);
+ if ( status < 0 ) return ret_value;
+ ret_value = 0;
+ return ret_value;
+}
+/*----------------------------------------------------------------------------
+ * Name: h5pget_fapl_multi_c
+ * Purpose: Call H5Pget_fapl_multi to set multi file dirver
+ * Inputs: prp_id - file_creation property list identifier
+ * lenmax - lenght of the name a sdeclared in Fortran
+ * Outputs: memb_map - memory mapping array
+ * memb_fapl - property list for each memory usage type
+ * memb_name - array with members names
+ * len - array with the lenght of each name
+ * flag - flag allowing partila access when one of the files is missing
+ * Returns: 0 on success, -1 on failure
+ * Programmer: Elena Pourmal
+ * Monday 24, March 2003
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5pget_fapl_multi_c ( hid_t_f *prp_id , int_f *memb_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)
+{
+ int ret_value = -1;
+ hid_t c_prp_id;
+ H5FD_mem_t c_memb_map[H5FD_MEM_NTYPES];
+ hid_t c_memb_fapl[H5FD_MEM_NTYPES];
+ char *c_memb_name[H5FD_MEM_NTYPES];
+ haddr_t c_memb_addr[H5FD_MEM_NTYPES];
+ hbool_t relax;
+ herr_t status;
+ char *tmp, *tmp_p;
+ int i;
+ int c_lenmax;
+ int length = 0;
+ c_lenmax = (int)*lenmax;
+
+ c_prp_id = (hid_t)*prp_id;
+/*
+ * Call H5Pget_fapl_multi function
+ */
+
+ status = H5Pget_fapl_multi(c_prp_id, c_memb_map, c_memb_fapl, c_memb_name, c_memb_addr, &relax);
+ if ( status < 0 ) return ret_value;
+
+/*
+ * Take care of names array
+ */
+ tmp = (char *)malloc(c_lenmax*H5FD_MEM_NTYPES + 1);
+ tmp_p = tmp;
+ for (i=0; i < c_lenmax*H5FD_MEM_NTYPES; i++) tmp[i] = ' ';
+ tmp[c_lenmax*H5FD_MEM_NTYPES] = '\0';
+ for (i=0; i < H5FD_MEM_NTYPES; i++) {
+ memcpy(tmp_p, c_memb_name[i], strlen(c_memb_name[i]));
+ len[i] = (int_f)strlen(c_memb_name[i]);
+ length = H5_MAX(length, strlen(c_memb_name[i]));
+ tmp_p = tmp_p + c_lenmax;
+ }
+HD5packFstring(tmp, _fcdtocp(memb_name), c_lenmax*H5FD_MEM_NTYPES);
+
+/*
+ * Take care of other arguments
+ */
+
+ for (i=0; i < H5FD_MEM_NTYPES; i++) {
+ memb_map[i] = (int_f)c_memb_map[i];
+ memb_fapl[i] = (hid_t_f)c_memb_fapl[i];
+ if(c_memb_addr[i] == HADDR_UNDEF) memb_addr[i] = -1;
+ else memb_addr[i] = (real_f) ((float)c_memb_addr[i]/HADDR_MAX);
+ }
+ *flag = (int_f)relax;
+ *maxlen_out = (int_f)length;
+ ret_value = 0;
+ free(tmp);
+ for (i=0; i < H5FD_MEM_NTYPES; i++) free(c_memb_name[i]);
+ return ret_value;
+}
diff --git a/fortran/src/H5Pff.f90 b/fortran/src/H5Pff.f90
index 528c462..23d59f0 100644
--- a/fortran/src/H5Pff.f90
+++ b/fortran/src/H5Pff.f90
@@ -58,6 +58,12 @@
! End comment if on T3E
MODULE PROCEDURE h5pinsert_char
END INTERFACE
+
+ INTERFACE h5pset_fapl_multi_f
+ MODULE PROCEDURE h5pset_fapl_multi_l
+ MODULE PROCEDURE h5pset_fapl_multi_s
+ END INTERFACE
+
CONTAINS
@@ -5893,4 +5899,270 @@
END SUBROUTINE h5pset_fletcher32_f
+!----------------------------------------------------------------------
+! Name: h5pset_family_offset_f
+!
+! Purpose: Sets offset for family file driver.
+!
+! Inputs:
+! prp_id - file creation property list identifier
+! offset - file offset
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: Elena Pourmal
+! 19 March 2003
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+
+ SUBROUTINE h5pset_family_offset_f(prp_id, offset, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_family_offset_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
+ INTEGER(HSIZE_T), INTENT(IN) :: offset ! Offset in bytes
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+! INTEGER, EXTERNAL :: h5pset_family_offset_c
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pset_family_offset_c(prp_id, offset)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !MS$ATTRIBUTES C,reference,alias:'_H5PSET_FAMILY_OFFSET_C'::h5pset_family_offset_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: prp_id
+ INTEGER(HSIZE_T), INTENT(IN) :: offset
+ END FUNCTION h5pset_family_offset_c
+ END INTERFACE
+ hdferr = h5pset_family_offset_c(prp_id, offset)
+
+ END SUBROUTINE h5pset_family_offset_f
+
+!----------------------------------------------------------------------
+! Name: h5pset_fapl_multi_l
+!
+! Purpose: Sets up use of the multi-file driver.
+!
+! Inputs:
+! prp_id - file creation property list identifier
+! mem_map - mapping array
+! memb_fapl - property list for each memory usage type
+! memb_name - names of member file
+! relax - flag
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: Elena Pourmal
+! 20 March 2003
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+
+ SUBROUTINE h5pset_fapl_multi_l(prp_id, memb_map, memb_fapl, memb_name, memb_addr, relax, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_fapl_multi_l
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier
+ INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_map
+ INTEGER(HID_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_fapl
+ CHARACTER(LEN=*), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_name
+ !INTEGER(HADDR_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_addr
+ REAL, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_addr
+ LOGICAL, INTENT(IN) :: relax
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1) :: lenm
+ INTEGER :: maxlen
+ INTEGER :: flag
+ INTEGER :: i
+
+! INTEGER, EXTERNAL :: h5pset_fapl_multi_c
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pset_fapl_multi_c(prp_id, memb_map, memb_fapl, memb_name, lenm, &
+ maxlen, memb_addr, flag)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !MS$ATTRIBUTES C,reference,alias:'_H5PSET_FAPL_MULTI_C'::h5pset_fapl_multi_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier
+ INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_map
+ INTEGER(HID_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_fapl
+ CHARACTER(LEN=*), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_name
+ REAL, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_addr
+ !INTEGER(HADDR_T), DIMENSION(H5FD_MEM_NTYPES_F), INTENT(IN) :: memb_addr
+ INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1) :: lenm
+ INTEGER :: maxlen
+ INTEGER, INTENT(IN) :: flag
+ END FUNCTION h5pset_fapl_multi_c
+ END INTERFACE
+ maxlen = LEN(memb_name(1))
+ do i=0, H5FD_MEM_NTYPES_F-1
+ lenm(i) = LEN_TRIM(memb_name(i))
+ enddo
+ flag = 0
+ if (relax) flag = 1
+ hdferr = h5pset_fapl_multi_c(prp_id, memb_map, memb_fapl, memb_name, lenm, maxlen, memb_addr, flag)
+
+ END SUBROUTINE h5pset_fapl_multi_l
+!----------------------------------------------------------------------
+! Name: h5pset_fapl_multi_s
+!
+! Purpose: Sets up use of the multi-file driver.
+!
+! Inputs:
+! prp_id - file creation property list identifier
+! relax - flag
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: Elena Pourmal
+! 31 March 2003
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+
+ SUBROUTINE h5pset_fapl_multi_s(prp_id, relax, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_fapl_multi_s
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier
+ LOGICAL, INTENT(IN) :: relax
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER :: flag
+
+! INTEGER, EXTERNAL :: h5pset_fapl_multi_sc
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pset_fapl_multi_sc(prp_id,flag)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !MS$ATTRIBUTES C,reference,alias:'_H5PSET_FAPL_MULTI_SC'::h5pset_fapl_multi_sc
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier
+ INTEGER, INTENT(IN) :: flag
+ END FUNCTION h5pset_fapl_multi_sc
+ END INTERFACE
+ flag = 0
+ if (relax) flag = 1
+ hdferr = h5pset_fapl_multi_sc(prp_id, flag)
+
+ END SUBROUTINE h5pset_fapl_multi_s
+!----------------------------------------------------------------------
+! Name: h5pget_fapl_multi_f
+!
+! Purpose: Sets up use of the multi-file driver.
+!
+! Inputs:
+! prp_id - file creation property list identifier
+! Outputs:
+! mem_map - mapping array
+! memb_fapl - property list for each memory usage type
+! memb_name - names of member file
+! relax - flag
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! maxlen_out - maximum length for memb_name array element
+!
+! Programmer: Elena Pourmal
+! 24 March 2003
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+
+ SUBROUTINE h5pget_fapl_multi_f(prp_id, memb_map, memb_fapl, memb_name, memb_addr, relax, hdferr, maxlen_out)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pget_fapl_multi_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier
+ INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_map
+ INTEGER(HID_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_fapl
+ CHARACTER(LEN=*), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_name
+ !INTEGER(HADDR_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_addr
+ REAL, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_addr
+ INTEGER, OPTIONAL, INTENT(OUT) :: maxlen_out
+ LOGICAL, INTENT(OUT) :: relax
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1) :: lenm
+ INTEGER :: maxlen
+ INTEGER :: c_maxlen_out
+ INTEGER :: flag
+ INTEGER :: i
+
+! INTEGER, EXTERNAL :: h5pget_fapl_multi_c
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pget_fapl_multi_c(prp_id, memb_map, memb_fapl, memb_name, lenm, &
+ maxlen, memb_addr, flag, c_maxlen_out)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !MS$ATTRIBUTES C,reference,alias:'_H5PGET_FAPL_MULTI_C'::h5pget_fapl_multi_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier
+ INTEGER, DIMENSION(H5FD_MEM_NTYPES_F), INTENT(OUT) :: memb_map
+ INTEGER(HID_T), DIMENSION(H5FD_MEM_NTYPES_F), INTENT(OUT) :: memb_fapl
+ CHARACTER(LEN=*), DIMENSION(H5FD_MEM_NTYPES_F), INTENT(OUT) :: memb_name
+ REAL, DIMENSION(H5FD_MEM_NTYPES_F), INTENT(OUT) :: memb_addr
+ INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1) :: lenm
+ INTEGER :: maxlen
+ INTEGER :: c_maxlen_out
+ INTEGER, INTENT(IN) :: flag
+ END FUNCTION h5pget_fapl_multi_c
+ END INTERFACE
+ maxlen = LEN(memb_name(0))
+ do i=0, H5FD_MEM_NTYPES_F-1
+ lenm(i) = LEN_TRIM(memb_name(i))
+ enddo
+ hdferr = h5pget_fapl_multi_c(prp_id, memb_map, memb_fapl, memb_name, lenm, maxlen, memb_addr, flag, c_maxlen_out)
+ relax = .TRUE.
+ if(flag .eq. 0) relax = .FALSE.
+ if(present(maxlen_out)) maxlen_out = c_maxlen_out
+ END SUBROUTINE h5pget_fapl_multi_f
END MODULE H5P
diff --git a/fortran/src/H5_f.c b/fortran/src/H5_f.c
index f24cb31..9d69b55 100644
--- a/fortran/src/H5_f.c
+++ b/fortran/src/H5_f.c
@@ -162,6 +162,7 @@ nh5close_types_c( hid_t_f * types, int_f *lentypes,
* Programmer: Elena Pourmal
* Tuesday, August 3, 1999
* Modifications: Added Z flags. EIP, March 12, 2003
+ * Added more FD flags and new H5LIB flags
*---------------------------------------------------------------------------*/
int_f
nh5init_flags_c( int_f *h5d_flags, int_f *h5e_flags, int_f *h5f_flags,
@@ -247,6 +248,15 @@ nh5init_flags_c( int_f *h5d_flags, int_f *h5e_flags, int_f *h5f_flags,
*/
h5fd_flags[0] = H5FD_MPIO_INDEPENDENT;
h5fd_flags[1] = H5FD_MPIO_COLLECTIVE;
+ h5fd_flags[2] = H5FD_MEM_NOLIST;
+ h5fd_flags[3] = H5FD_MEM_DEFAULT;
+ h5fd_flags[4] = H5FD_MEM_SUPER;
+ h5fd_flags[5] = H5FD_MEM_BTREE;
+ h5fd_flags[6] = H5FD_MEM_DRAW;
+ h5fd_flags[7] = H5FD_MEM_GHEAP;
+ h5fd_flags[8] = H5FD_MEM_LHEAP;
+ h5fd_flags[9] = H5FD_MEM_OHDR;
+ h5fd_flags[10] = H5FD_MEM_NTYPES;
/*
* H5G flags
@@ -369,10 +379,18 @@ nh5init_flags_c( int_f *h5d_flags, int_f *h5e_flags, int_f *h5f_flags,
h5z_flags[7] = H5Z_ENABLE_EDC;
h5z_flags[8] = H5Z_NO_EDC;
-
ret_value = 0;
return ret_value;
}
+/*
+int_f
+nh5init1_flags_c(haddr_t_f *h5lib_flags)
+{
+ int ret_value = -1;
+ 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 2cf0a5a..53d4bec 100644
--- a/fortran/src/H5_ff.f90
+++ b/fortran/src/H5_ff.f90
@@ -37,6 +37,7 @@
INTEGER :: error_0, error_1, error_2
! INTEGER, EXTERNAL :: h5init_types_c
! INTEGER, EXTERNAL :: h5init_flags_c
+! INTEGER, EXTERNAL :: h5init1_flags_c
! INTEGER, EXTERNAL :: h5open_c
!
@@ -71,7 +72,7 @@
i_H5R_flags, &
i_H5S_flags, &
i_H5T_flags, &
- i_H5Z_flags )
+ i_H5Z_flags)
USE H5GLOBAL
INTEGER i_H5F_flags(H5F_FLAGS_LEN)
INTEGER i_H5G_flags(H5G_FLAGS_LEN)
@@ -84,12 +85,20 @@
INTEGER i_H5S_flags(H5S_FLAGS_LEN)
INTEGER i_H5T_flags(H5T_FLAGS_LEN)
INTEGER i_H5Z_flags(H5Z_FLAGS_LEN)
-
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
!MS$ATTRIBUTES C,reference,alias:'_H5INIT_FLAGS_C'::h5init_flags_c
!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
error_0 = h5open_c()
error_1 = h5init_types_c(predef_types, floating_types, integer_types)
error_2 = h5init_flags_c(H5D_flags, &
@@ -102,9 +111,9 @@
H5R_flags, &
H5S_flags, &
H5T_flags, &
- H5Z_flags )
- error = error_0 + error_1 + error_2
-
+ H5Z_flags)
+! error_3 = h5init1_flags_c(H5LIB_flags )
+ error = error_0 + error_1 + error_2
END SUBROUTINE h5open_f
!----------------------------------------------------------------------
diff --git a/fortran/src/H5f90.h b/fortran/src/H5f90.h
index ab72b91..9eeb477 100644
--- a/fortran/src/H5f90.h
+++ b/fortran/src/H5f90.h
@@ -11,5 +11,5 @@
/* Constants used in H5Gf.c files */
#define OBJECT_NAMELEN_DEFAULT_F -1
-
+#define H5_MAX(a,b) (((a)>(b)) ? (a) : (b))
#endif /* _H5f90_H */
diff --git a/fortran/src/H5f90global.f90 b/fortran/src/H5f90global.f90
index 76aa21a..0c8d5fc 100644
--- a/fortran/src/H5f90global.f90
+++ b/fortran/src/H5f90global.f90
@@ -266,15 +266,33 @@
!
! H5FD flags declaration
!
- INTEGER, PARAMETER :: H5FD_FLAGS_LEN = 2
+ INTEGER, PARAMETER :: H5FD_FLAGS_LEN = 11
INTEGER H5FD_flags(H5FD_FLAGS_LEN)
COMMON /H5FD_FLAGS/ H5FD_flags
INTEGER :: H5FD_MPIO_INDEPENDENT_F
INTEGER :: H5FD_MPIO_COLLECTIVE_F
+ INTEGER :: H5FD_MEM_NOLIST_F
+ INTEGER :: H5FD_MEM_DEFAULT_F
+ INTEGER :: H5FD_MEM_SUPER_F
+ INTEGER :: H5FD_MEM_BTREE_F
+ INTEGER :: H5FD_MEM_DRAW_F
+ INTEGER :: H5FD_MEM_GHEAP_F
+ INTEGER :: H5FD_MEM_LHEAP_F
+ INTEGER :: H5FD_MEM_OHDR_F
+ INTEGER :: H5FD_MEM_NTYPES_F
EQUIVALENCE(H5FD_flags(1), H5FD_MPIO_INDEPENDENT_F)
EQUIVALENCE(H5FD_flags(2), H5FD_MPIO_COLLECTIVE_F)
+ EQUIVALENCE(H5FD_flags(3), H5FD_MEM_NOLIST_F)
+ EQUIVALENCE(H5FD_flags(4), H5FD_MEM_DEFAULT_F)
+ EQUIVALENCE(H5FD_flags(5), H5FD_MEM_SUPER_F)
+ EQUIVALENCE(H5FD_flags(6), H5FD_MEM_BTREE_F)
+ EQUIVALENCE(H5FD_flags(7), H5FD_MEM_DRAW_F)
+ EQUIVALENCE(H5FD_flags(8), H5FD_MEM_GHEAP_F)
+ EQUIVALENCE(H5FD_flags(9), H5FD_MEM_LHEAP_F)
+ EQUIVALENCE(H5FD_flags(10), H5FD_MEM_OHDR_F)
+ EQUIVALENCE(H5FD_flags(11), H5FD_MEM_NTYPES_F)
!
! H5E flags declaration
@@ -564,5 +582,19 @@
EQUIVALENCE(H5Z_flags(8), H5Z_ENABLE_EDC_F)
EQUIVALENCE(H5Z_flags(9), H5Z_NO_EDC_F)
+
+!
+! H5 Library flags declaration
+!
+! INTEGER, PARAMETER :: H5LIB_FLAGS_LEN = 1
+! INTEGER(HADDR_T) 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
+!
+! EQUIVALENCE(H5LIB_flags(1), HADDR_MAX_F)
+
END MODULE H5GLOBAL
diff --git a/fortran/src/H5f90proto.h b/fortran/src/H5f90proto.h
index 7e03274..095768f 100644
--- a/fortran/src/H5f90proto.h
+++ b/fortran/src/H5f90proto.h
@@ -767,6 +767,10 @@ H5_DLL int_f nh5tis_variable_str_c ( hid_t_f *type_id , int_f *flag );
# define nh5pset_fletcher32_c FNAME(H5PSET_FLETCHER32_C)
# define nh5pset_edc_check_c FNAME(H5PSET_EDC_CHECK_C)
# define nh5pget_edc_check_c FNAME(H5PGET_EDC_CHECK_C)
+# definne nh5pset_family_offset_c FNAME(H5PSET_FAMILY_OFFSET_C)
+# 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)
#else
# define nh5pcreate_c FNAME(h5pcreate_c)
@@ -866,6 +870,10 @@ H5_DLL int_f nh5tis_variable_str_c ( hid_t_f *type_id , int_f *flag );
# define nh5pset_fletcher32_c FNAME(h5pset_fletcher32_c)
# define nh5pset_edc_check_c FNAME(h5pset_edc_check_c)
# define nh5pget_edc_check_c FNAME(h5pget_edc_check_c)
+# define nh5pset_family_offset_c FNAME(h5pset_family_offset_c)
+# 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)
#endif
@@ -1050,6 +1058,10 @@ H5_DLL int_f nh5pset_shuffle_c ( hid_t_f *prp_id , int_f *type_size);
H5_DLL int_f nh5pset_fletcher32_c ( hid_t_f *prp_id );
H5_DLL int_f nh5pset_edc_check_c ( hid_t_f *prp_id, int_f *flag );
H5_DLL int_f nh5pget_edc_check_c ( hid_t_f *prp_id, int_f *flag );
+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);
/*
* Functions frome H5Rf.c
@@ -1147,6 +1159,7 @@ H5_DLL int_f nh5eset_auto_c(int_f* printflag);
# define nh5init_types_c FNAME(H5INIT_TYPES_C)
# define nh5close_types_c FNAME(H5CLOSE_TYPES_C)
# define nh5init_flags_c FNAME(H5INIT_FLAGS_C)
+# define nh5init1_flags_c FNAME(H5INIT1_FLAGS_C)
# define nh5get_libversion_c FNAME(H5GET_LIBVERSION_C)
# define nh5check_version_c FNAME(H5CHECK_VERSION_C)
# define nh5garbage_collect_c FNAME(H5GARBAGE_COLLECT_C)
@@ -1157,6 +1170,7 @@ H5_DLL int_f nh5eset_auto_c(int_f* printflag);
# define nh5init_types_c FNAME(h5init_types_c)
# define nh5close_types_c FNAME(h5close_types_c)
# define nh5init_flags_c FNAME(h5init_flags_c)
+# define nh5init1_flags_c FNAME(h5init1_flags_c)
# define nh5get_libversion_c FNAME(h5get_libversion_c)
# define nh5check_version_c FNAME(h5check_version_c)
# define nh5garbage_collect_c FNAME(h5garbage_collect_c)
@@ -1172,6 +1186,8 @@ 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 nh5get_libversion_c(int_f *majnum, int_f *minnum, int_f *relnum);
H5_DLL int_f nh5check_version_c(int_f *majnum, int_f *minnum, int_f *relnum);