summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElena Pourmal <epourmal@hdfgroup.org>2003-03-19 16:13:35 (GMT)
committerElena Pourmal <epourmal@hdfgroup.org>2003-03-19 16:13:35 (GMT)
commit65f5514a4ff647cff51c37e3af30d5e138733d06 (patch)
tree4d1a0934ee57c44e3703b4388dcb67a0c6c063ad
parentda4bf69db756aabb448bead90a0d85d7348ff04e (diff)
downloadhdf5-65f5514a4ff647cff51c37e3af30d5e138733d06.zip
hdf5-65f5514a4ff647cff51c37e3af30d5e138733d06.tar.gz
hdf5-65f5514a4ff647cff51c37e3af30d5e138733d06.tar.bz2
[svn-r6494]
Purpose: Catching up with the C library Description: Added the follwoing new fortran functions h5iget_name_f h5tis_variavle_str_f h5zunregister_f h5zfilter_avail_f h5pset_shuffle_f h5pset_fletcher32 h5pset_edc_check_f h5pget_edc_check_f h5dfill_f Solution: Platforms tested: arabica(C and F90), burrwhite (pgcc and pgf90), modi4 (F90 and parallel) Misc. update:
-rw-r--r--fortran/src/H5Df.c94
-rw-r--r--fortran/src/H5Dff.f90315
-rw-r--r--fortran/src/H5If.c45
-rw-r--r--fortran/src/H5Iff.f9059
-rw-r--r--fortran/src/H5Pf.c99
-rw-r--r--fortran/src/H5Pff.f90221
-rw-r--r--fortran/src/H5Tf.c26
-rw-r--r--fortran/src/H5Tff.f9061
-rw-r--r--fortran/src/H5Zf.c53
-rw-r--r--fortran/src/H5Zff.f90124
-rw-r--r--fortran/src/H5_f.c19
-rw-r--r--fortran/src/H5_ff.f907
-rw-r--r--fortran/src/H5config_fortran.h.in9
-rw-r--r--fortran/src/H5f90global.f9030
-rw-r--r--fortran/src/H5f90proto.h139
-rw-r--r--fortran/src/HDF5.f901
-rw-r--r--fortran/src/HDF5mpio.f901
-rw-r--r--fortran/src/Makefile.in7
18 files changed, 1252 insertions, 58 deletions
diff --git a/fortran/src/H5Df.c b/fortran/src/H5Df.c
index 3d5c78a..4ee4a75 100644
--- a/fortran/src/H5Df.c
+++ b/fortran/src/H5Df.c
@@ -1507,3 +1507,97 @@ DONE:
return ret_value;
}
+/*----------------------------------------------------------------------------
+ * Name: h5dfillc_c
+ * Purpose: Call h5fill_c to fill memory buffer with a fill value
+ * Inputs: fill_value - fill value
+ * fill_type_id - fill value datatype identifier
+ * space_id - memory space selection identifier
+ * buf - memory buffer to fill
+ * mem_type_id - memory buffer dtatype identifier
+ * Returns: 0 on success, -1 on failure
+ * Programmer: Elena Pourmal
+ * Wednesday, March 12, 2003
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5dfillc_c (_fcd fill_value, hid_t_f *fill_type_id, hid_t_f *space_id, _fcd buf, hid_t_f *mem_type_id)
+{
+ int ret_value = -1;
+
+ /*
+ * Call h5dfill_c function.
+ */
+ ret_value = nh5dfill_c(_fcdtocp(fill_value), fill_type_id, space_id, _fcdtocp(buf), mem_type_id);
+
+ return ret_value;
+}
+/*----------------------------------------------------------------------------
+ * Name: h5dfill_c
+ * Purpose: Call H5Dfill to fill memory buffer with a fill value
+ * Inputs: fill_value - fill value
+ * fill_type_id - fill value datatype identifier
+ * space_id - memory space selection identifier
+ * buf - memory buffer to fill
+ * mem_type_id - memory buffer dtatype identifier
+ * Returns: 0 on success, -1 on failure
+ * Programmer: Elena Pourmal
+ * Wednesday, March 12, 2003
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5dfill_c (void * fill_value, hid_t_f *fill_type_id, hid_t_f *space_id, void * buf, hid_t_f *mem_type_id)
+
+{
+ int ret_value = -1;
+ herr_t ret;
+ hid_t c_fill_type_id;
+ hid_t c_mem_type_id;
+ hid_t c_space_id;
+
+ c_fill_type_id = (hid_t)*fill_type_id;
+ c_mem_type_id = (hid_t)*mem_type_id;
+ c_space_id = (hid_t)*space_id;
+
+ /*
+ * Call H5Dfill function.
+ */
+ ret = H5Dfill(fill_value, c_fill_type_id, buf, c_mem_type_id, c_space_id);
+
+ if (ret < 0) return ret_value;
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5dget_space_status_c
+ * Purpose: Call H5Dget_space_status to request dataspace allocation status
+ * Inputs: dset_id - dataset identifier
+ * Outputs: flag - status flag
+ * Returns: 0 on success, -1 on failure
+ * Programmer: Elena Pourmal
+ * Wednesday, March 12, 2003
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5dget_space_status_c ( hid_t_f *dset_id, int_f *flag)
+
+{
+ int ret_value = -1;
+ herr_t ret;
+ hid_t c_dset_id;
+ H5D_space_status_t c_flag;
+
+ c_dset_id = (hid_t)*dset_id;
+
+ /*
+ * Call H5Dget_space_status
+ */
+ ret = H5Dget_space_status(c_dset_id, &c_flag);
+
+ if (ret < 0) return ret_value;
+ *flag = (int_f)c_flag;
+ ret_value = 0;
+ return ret_value;
+}
+
diff --git a/fortran/src/H5Dff.f90 b/fortran/src/H5Dff.f90
index beebf5c..9aa201a 100644
--- a/fortran/src/H5Dff.f90
+++ b/fortran/src/H5Dff.f90
@@ -200,6 +200,14 @@
MODULE PROCEDURE h5dread_vl_string
END INTERFACE
+ INTERFACE h5dfill_f
+ MODULE PROCEDURE h5dfill_integer
+ MODULE PROCEDURE h5dfill_real
+ MODULE PROCEDURE h5dfill_double
+ MODULE PROCEDURE h5dfill_char
+ END INTERFACE
+
+
CONTAINS
!----------------------------------------------------------------------
@@ -9772,4 +9780,311 @@
buf, dims, str_len)
RETURN
END SUBROUTINE h5dread_vl_string
+
+!----------------------------------------------------------------------
+! Name: h5dfill_integer
+!
+! Purpose: Fills dataspace elements with a fill value in a memory buffer.
+! Only INTEGER, CHARACTER, REAL and DOUBLE PRECISION datatypes
+! of the fillvalues and buffers are supported. Buffer and fillvalue
+! are assumed to have the same datatype.
+! Only one-dimesional buffers are supported.
+!
+! Inputs:
+! fill_value - fill value
+! space_id - memory space selection identifier
+! buf - data buffer iin memory ro apply selection to
+! - of k-th dimension of the buf array
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+!
+! Programmer: Elena Pourmal
+! March 12, 2003
+!
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5dfill_integer(fill_value, space_id, buf, hdferr)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5dfill_integer
+!DEC$endif
+
+ IMPLICIT NONE
+ INTEGER, INTENT(IN) :: fill_value ! Fill value
+ INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier
+ INTEGER, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+ INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier
+ INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier
+
+! INTEGER, EXTERNAL :: h5dfill_c
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5dfill_c(fill_value, fill_type_id, space_id, &
+ buf, mem_type_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !MS$ATTRIBUTES C,reference,alias:'_H5DFILL_C'::h5dfill_c
+ !DEC$ ENDIF
+ INTEGER, INTENT(IN) :: fill_value ! Fill value
+ INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier
+ INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier
+ INTEGER, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in
+ INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier
+ END FUNCTION h5dfill_c
+ END INTERFACE
+ fill_type_id = H5T_NATIVE_INTEGER
+ mem_type_id = H5T_NATIVE_INTEGER
+
+ hdferr = h5dfill_c(fill_value, fill_type_id, space_id, &
+ buf, mem_type_id)
+
+ END SUBROUTINE h5dfill_integer
+
+!----------------------------------------------------------------------
+! Name: h5dfill_real
+!
+! Purpose: Fills dataspace elements with a fill value in a memory buffer.
+! Only INTEGER, CHARACTER, REAL and DOUBLE PRECISION datatypes
+! of the fillvalues and buffers are supported. Buffer and fillvalue
+! are assumed to have the same datatype.
+! Only one-dimesional buffers are supported.
+!
+! Inputs:
+! fill_value - fill value
+! space_id - memory space selection identifier
+! buf - data buffer iin memory ro apply selection to
+! - of k-th dimension of the buf array
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+!
+! Programmer: Elena Pourmal
+! March 12, 2003
+!
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5dfill_real(fill_valuer, space_id, buf, hdferr)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5dfill_real
+!DEC$endif
+
+ IMPLICIT NONE
+ REAL, INTENT(IN) :: fill_valuer ! Fill value
+ INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier
+ REAL, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+ INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier
+ INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier
+
+! INTEGER, EXTERNAL :: h5dfill_c
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5dfill_c(fill_valuer, fill_type_id, space_id, &
+ buf, mem_type_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !MS$ATTRIBUTES C,reference,alias:'_H5DFILL_C'::h5dfill_c
+ !DEC$ ENDIF
+ REAL, INTENT(IN) :: fill_valuer ! Fill value
+ INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier
+ INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier
+ REAL, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in
+ INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier
+ END FUNCTION h5dfill_c
+ END INTERFACE
+ fill_type_id = H5T_NATIVE_REAL
+ mem_type_id = H5T_NATIVE_REAL
+
+ hdferr = h5dfill_c(fill_valuer, fill_type_id, space_id, &
+ buf, mem_type_id)
+ END SUBROUTINE h5dfill_real
+
+!----------------------------------------------------------------------
+! Name: h5dfill_double
+!
+! Purpose: Fills dataspace elements with a fill value in a memory buffer.
+! Only INTEGER, CHARACTER, REAL and DOUBLE PRECISION datatypes
+! of the fillvalues and buffers are supported. Buffer and fillvalue
+! are assumed to have the same datatype.
+! Only one-dimesional buffers are supported.
+!
+! Inputs:
+! fill_value - fill value
+! space_id - memory space selection identifier
+! buf - data buffer iin memory ro apply selection to
+! - of k-th dimension of the buf array
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+!
+! Programmer: Elena Pourmal
+! March 12, 2003
+!
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5dfill_double(fill_value, space_id, buf, hdferr)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5dfill_double
+!DEC$endif
+
+ IMPLICIT NONE
+ DOUBLE PRECISION, INTENT(IN) :: fill_value ! Fill value
+ INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier
+ DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+ INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier
+ INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier
+
+! INTEGER, EXTERNAL :: h5dfill_c
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5dfill_c(fill_value, fill_type_id, space_id, &
+ buf, mem_type_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !MS$ATTRIBUTES C,reference,alias:'_H5DFILL_C'::h5dfill_c
+ !DEC$ ENDIF
+ DOUBLE PRECISION, INTENT(IN) :: fill_value ! Fill value
+ INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier
+ INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier
+ DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in
+ INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier
+ END FUNCTION h5dfill_c
+ END INTERFACE
+ fill_type_id = H5T_NATIVE_DOUBLE
+ mem_type_id = H5T_NATIVE_DOUBLE
+
+ hdferr = h5dfill_c(fill_value, fill_type_id, space_id, &
+ buf, mem_type_id)
+
+
+ END SUBROUTINE h5dfill_double
+
+!----------------------------------------------------------------------
+! Name: h5dfill_char
+!
+! Purpose: Fills dataspace elements with a fill value in a memory buffer.
+! Only INTEGER, CHARACTER, REAL and DOUBLE PRECISION datatypes
+! of the fillvalues and buffers are supported. Buffer and fillvalue
+! are assumed to have the same datatype.
+! Only one-dimesional buffers are supported.
+!
+! Inputs:
+! fill_value - fill value
+! space_id - memory space selection identifier
+! buf - data buffer iin memory ro apply selection to
+! - of k-th dimension of the buf array
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+!
+! Programmer: Elena Pourmal
+! March 12, 2003
+!
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5dfill_char(fill_value, space_id, buf, hdferr)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5dfill_integer
+!DEC$endif
+
+ IMPLICIT NONE
+ CHARACTER, INTENT(IN) :: fill_value ! Fill value
+ INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier
+ CHARACTER, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+ INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier
+ INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier
+
+! INTEGER, EXTERNAL :: h5dfillc_c
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5dfillc_c(fill_value, fill_type_id, space_id, &
+ buf, mem_type_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !MS$ATTRIBUTES C,reference,alias:'_H5DFILLC_C'::h5dfillc_c
+ !DEC$ ENDIF
+ CHARACTER, INTENT(IN) :: fill_value ! Fill value
+ INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier
+ INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier
+ CHARACTER, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in
+ INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier
+ END FUNCTION h5dfillc_c
+ END INTERFACE
+ fill_type_id = H5T_NATIVE_CHARACTER
+ mem_type_id = H5T_NATIVE_CHARACTER
+
+ hdferr = h5dfillc_c(fill_value, fill_type_id, space_id, &
+ buf, mem_type_id)
+
+ END SUBROUTINE h5dfill_char
+
+!----------------------------------------------------------------------
+! Name: h5dget_space_status_f
+!
+! Purpose: Returns the status of data space allocation.
+!
+! Inputs:
+! dset_id - dataset identifier
+! Outputs:
+! flag - status; may have one of the following values:
+! H5D_SPACE_STS_ERROR_F
+! H5D_SPACE_STS_NOT_ALLOCATED_F
+! H5D_SPACE_STS_PART_ALLOCATED_F
+! H5D_SPACE_STS_ALLOCATED_F
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+!
+! Programmer: Elena Pourmal
+! March 12, 2003
+!
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5dget_space_status_f(dset_id, flag, hdferr)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5dget_space_status_f
+!DEC$endif
+
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataspace identifier
+ INTEGER, INTENT(IN) :: flag ! Memory buffer to fill in
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+! INTEGER, EXTERNAL :: h5dget_space_status_c
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5dget_space_status_c(dset_id, flag)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !MS$ATTRIBUTES C,reference,alias:'_H5DGET_SPACE_STATUS_C'::h5dget_space_status_c
+ !DEC$ ENDIF
+ INTEGER(HID_T) :: dset_id
+ INTEGER :: flag
+ END FUNCTION h5dget_space_status_c
+ END INTERFACE
+
+ hdferr = h5dget_space_status_c(dset_id, flag)
+ END SUBROUTINE h5dget_space_status_f
+
END MODULE H5D
diff --git a/fortran/src/H5If.c b/fortran/src/H5If.c
index f17dc01..574827d 100644
--- a/fortran/src/H5If.c
+++ b/fortran/src/H5If.c
@@ -27,3 +27,48 @@ nh5iget_type_c (hid_t_f *obj_id, int_f *type)
ret_value = 0;
return ret_value;
}
+/*----------------------------------------------------------------------------
+ * Name: h5iget_name_c
+ * Purpose: Call H5Iget_name to get object's name
+ * Inputs: obj_id - object identifier
+ * buf_size - size of the buffer
+ * Outputs: buf - buffer to hold the name
+ * Returns: length of the name on success, -1 on failure
+ * Programmer: Elena Pourmal
+ * Wednesday, March 12, 2003
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5iget_name_c(hid_t_f *obj_id, _fcd buf, size_t_f *buf_size, size_t_f *name_size)
+{
+ int ret_value = -1;
+ hid_t c_obj_id;
+ ssize_t c_size;
+ size_t c_buf_size;
+ char *c_buf =NULL;
+
+ /*
+ * Allocate buffer to hold name of an attribute
+ */
+ c_buf_size = (size_t)*buf_size;
+ c_buf = (char *)HDmalloc((int)c_buf_size +1);
+ if (c_buf == NULL) return ret_value;
+
+ /*
+ * Call H5IAget_name function
+ */
+ c_obj_id = (hid_t)*obj_id;
+ c_size = H5Iget_name(c_obj_id, c_buf, c_buf_size);
+ if (c_size < 0) goto DONE;
+
+ /*
+ * Convert C name to FORTRAN and place it in the given buffer
+ */
+ HD5packFstring(c_buf, _fcdtocp(buf), (int)c_buf_size);
+ *name_size = (size_t_f)c_size;
+ ret_value = 0;
+
+DONE:
+ HDfree(c_buf);
+ return ret_value;
+}
diff --git a/fortran/src/H5Iff.f90 b/fortran/src/H5Iff.f90
index f0ac299..690d9fd 100644
--- a/fortran/src/H5Iff.f90
+++ b/fortran/src/H5Iff.f90
@@ -72,6 +72,65 @@
END INTERFACE
hdferr = h5iget_type_c(obj_id, type)
END SUBROUTINE h5iget_type_f
+!----------------------------------------------------------------------
+! Name: h5iget_name_f
+!
+! Purpose: Gets a name of an object specified by its idetifier.
+!
+! Inputs:
+! obj_id - attribute identifier
+! buf_size - size of a buffer to read name in
+! Outputs:
+! buf - buffer to read name in, name will be truncated if
+! buffer is not big enough
+! name_size - name size
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: Elena Pourmal
+! March 12, 2003
+!
+! Modifications:
+!
+!----------------------------------------------------------------------
+
+
+ SUBROUTINE h5iget_name_f(obj_id, buf, buf_size, name_size, hdferr)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5iget_name_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
+ INTEGER(SIZE_T), INTENT(IN) :: buf_size ! Buffer size
+ CHARACTER(LEN=*), INTENT(OUT) :: buf ! Buffer to hold object name
+ INTEGER(SIZE_T), INTENT(OUT) :: name_size ! Actual name size
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 if successful,
+ ! -1 if fail
+! INTEGER, EXTERNAL :: h5iget_name_c
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5iget_name_c(obj_id, buf, buf_size, name_size)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !MS$ATTRIBUTES C,reference,alias:'_H5IGET_NAME_C'::h5iget_name_c
+ !DEC$ ENDIF
+ !DEC$ATTRIBUTES reference :: buf
+ INTEGER(HID_T), INTENT(IN) :: obj_id
+ CHARACTER(LEN=*), INTENT(OUT) :: buf
+ INTEGER(SIZE_T), INTENT(IN) :: buf_size
+ INTEGER(SIZE_T), INTENT(OUT) :: name_size
+ END FUNCTION h5iget_name_c
+ END INTERFACE
+
+ hdferr = h5iget_name_c(obj_id, buf, buf_size, name_size)
+ END SUBROUTINE h5iget_name_f
+
END MODULE H5I
diff --git a/fortran/src/H5Pf.c b/fortran/src/H5Pf.c
index 27de148..f162963 100644
--- a/fortran/src/H5Pf.c
+++ b/fortran/src/H5Pf.c
@@ -2807,3 +2807,102 @@ DONE:
if(c_name != NULL) HDfree(c_name);
return ret_value;
}
+/*----------------------------------------------------------------------------
+ * Name: h5pset_shuffle_c
+ * Purpose: Call H5Pset_shuffle
+ * Inputs: prp_id - property list identifier
+ * type_size - size of the datatype in bytes
+ * Returns: 0 on success, -1 on failure
+ * Programmer: Elena Pourmal
+ * Wednesday, March 12, 2003
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5pset_shuffle_c ( hid_t_f *prp_id , int_f *type_size)
+{
+ int ret_value = 0;
+ hid_t c_prp_id;
+ int c_type_size;
+ herr_t status;
+
+ c_prp_id = (hid_t)*prp_id;
+ c_type_size = (int)*type_size ;
+ status = H5Pset_shuffle(c_prp_id, c_type_size);
+ if ( status < 0 ) ret_value = -1;
+ return ret_value;
+}
+/*----------------------------------------------------------------------------
+ * Name: h5pset_fletcher32_c
+ * Purpose: Call H5Pset_fletcher32 to enable EDC
+ * Inputs: prp_id - dataset creation property list identifier
+ * Returns: 0 on success, -1 on failure
+ * Programmer: Elena Pourmal
+ * Thursday, March 13, 2003
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5pset_fletcher32_c ( hid_t_f *prp_id )
+{
+ int ret_value = 0;
+ hid_t c_prp_id;
+ herr_t status;
+
+ c_prp_id = (hid_t)*prp_id;
+ status = H5Pset_fletcher32(c_prp_id);
+ if ( status < 0 ) ret_value = -1;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pset_edc_check_c
+ * Purpose: Call H5Pset_edc_check to enable EDC
+ * Inputs: prp_id - dataset transfer property list identifier
+ * flag - EDC flag
+ * Returns: 0 on success, -1 on failure
+ * Programmer: Elena Pourmal
+ * Thursday, March 13, 2003
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5pset_edc_check_c ( hid_t_f *prp_id, int_f *flag )
+{
+ int ret_value = 0;
+ hid_t c_prp_id;
+ H5Z_EDC_t c_flag;
+ herr_t status;
+
+ c_prp_id = (hid_t)*prp_id;
+ c_flag = (H5Z_EDC_t)*flag;
+ status = H5Pset_edc_check(c_prp_id, c_flag);
+ if ( status < 0 ) ret_value = -1;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pget_edc_check_c
+ * Purpose: Call H5Pget_edc_check to query EDC
+ * Inputs: prp_id - dataset transfer property list identifier
+ * Outouts: flag - EDC flag
+ * Returns: 0 on success, -1 on failure
+ * Programmer: Elena Pourmal
+ * Thursday, March 13, 2003
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5pget_edc_check_c ( hid_t_f *prp_id, int_f *flag )
+{
+ int ret_value = 0;
+ hid_t c_prp_id;
+ H5Z_EDC_t c_flag;
+ herr_t status;
+
+ c_prp_id = (hid_t)*prp_id;
+ c_flag = H5Pget_edc_check(c_prp_id);
+ if ( status < 0 ) ret_value = -1;
+ *flag = (int_f)c_flag;
+ return ret_value;
+}
diff --git a/fortran/src/H5Pff.f90 b/fortran/src/H5Pff.f90
index f97bd2b..528c462 100644
--- a/fortran/src/H5Pff.f90
+++ b/fortran/src/H5Pff.f90
@@ -2552,11 +2552,9 @@
! NONE
!
! Programmer: Elena Pourmal
-! August 12, 1999
+! February, 2003
!
-! Modifications: Explicit Fortran interfaces were added for
-! called C functions (it is needed for Windows
-! port). March 14, 2001
+! Modifications:
!
! Comment:
!----------------------------------------------------------------------
@@ -5680,4 +5678,219 @@
hdferr = h5pinsertc_c(plist, name , name_len, size, value, value_len)
END SUBROUTINE h5pinsert_char
+!----------------------------------------------------------------------
+! Name: h5pset_shuffle_f
+!
+! Purpose: Sets shuffling filter
+!
+! Inputs:
+! prp_id - dataset creation property list identifier
+! type_size - size of the datatype
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: Elena Pourmal
+! March 12, 2003
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+
+ SUBROUTINE h5pset_shuffle_f(prp_id, type_size, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_shuffle_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
+ INTEGER, INTENT(IN) :: type_size ! iSize in bytes of the datatype
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+! INTEGER, EXTERNAL :: h5pset_shuffle_c
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pset_shuffle_c(prp_id, type_size)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !MS$ATTRIBUTES C,reference,alias:'_H5PSET_SHUFFLE_C'::h5pset_shuffle_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: prp_id
+ INTEGER, INTENT(IN) :: type_size
+ END FUNCTION h5pset_shuffle_c
+ END INTERFACE
+ hdferr = h5pset_shuffle_c(prp_id, type_size)
+
+ END SUBROUTINE h5pset_shuffle_f
+
+!----------------------------------------------------------------------
+! Name: h5pset_edc_check_f
+!
+! Purpose: Enables/disables error detecting
+!
+! Inputs:
+! prp_id - dataset creation property list identifier
+! flag - EDC flag; possible values:
+! H5Z_DISABLE_EDC_F
+! H5Z_ENABLE_EDC_F
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: Elena Pourmal
+! March 13, 2003
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+
+ SUBROUTINE h5pset_edc_check_f(prp_id, flag, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_edc_check_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
+ INTEGER, INTENT(IN) :: flag ! Checksum filter flag
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+! INTEGER, EXTERNAL :: h5pset_edc_check_c
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pset_edc_check_c(prp_id, flag)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !MS$ATTRIBUTES C,reference,alias:'_H5PSET_EDC_CHECK_C'::h5pset_edc_check_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: prp_id
+ INTEGER, INTENT(IN) :: flag
+ END FUNCTION h5pset_edc_check_c
+ END INTERFACE
+ hdferr = h5pset_edc_check_c(prp_id, flag)
+
+ END SUBROUTINE h5pset_edc_check_f
+
+!----------------------------------------------------------------------
+! Name: h5pget_edc_check_f
+!
+! Purpose: Queries error detecting
+!
+! Inputs:
+! prp_id - dataset creation property list identifier
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: Elena Pourmal
+! March 13, 2003
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+
+ SUBROUTINE h5pget_edc_check_f(prp_id, flag, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pget_edc_check_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset transfer property list identifier
+ INTEGER, INTENT(OUT) :: flag ! Checksum filter flag
+ ! May have one of the following values:
+ ! H5Z_ERROR_EDC_F
+ ! H5Z_DISABLE_EDC_F
+ ! H5Z_ENABLE_EDC_F
+ ! H5Z_NO_EDC_F
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+! INTEGER, EXTERNAL :: h5pget_edc_check_c
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pget_edc_check_c(prp_id, flag)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !MS$ATTRIBUTES C,reference,alias:'_H5PGET_EDC_CHECK_C'::h5pget_edc_check_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: prp_id
+ INTEGER, INTENT(OUT) :: flag
+ END FUNCTION h5pget_edc_check_c
+ END INTERFACE
+ hdferr = h5pget_edc_check_c(prp_id, flag)
+
+ END SUBROUTINE h5pget_edc_check_f
+!----------------------------------------------------------------------
+! Name: h5pset_fletcher32_f
+!
+! Purpose: Sets Fletcher32 checksum of EDC for a dataset creation
+! property list.
+!
+! Inputs:
+! prp_id - dataset creation property list identifier
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: Elena Pourmal
+! March 13, 2003
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+
+ SUBROUTINE h5pset_fletcher32_f(prp_id, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_fletcher32_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+! INTEGER, EXTERNAL :: h5pset_fletcher32_c
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pset_fletcher32_c(prp_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !MS$ATTRIBUTES C,reference,alias:'_H5PSET_FLETCHER32_C'::h5pset_fletcher32_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: prp_id
+ END FUNCTION h5pset_fletcher32_c
+ END INTERFACE
+ hdferr = h5pset_fletcher32_c(prp_id)
+
+ END SUBROUTINE h5pset_fletcher32_f
+
END MODULE H5P
diff --git a/fortran/src/H5Tf.c b/fortran/src/H5Tf.c
index 19d07b1..341f230d 100644
--- a/fortran/src/H5Tf.c
+++ b/fortran/src/H5Tf.c
@@ -1596,3 +1596,29 @@ nh5tvlen_create_c(hid_t_f* type_id, hid_t_f *vltype_id)
ret_value = 0;
return ret_value;
}
+/*----------------------------------------------------------------------------
+ * Name: h5tis_variable_str_c
+ * Purpose: Call H5Tis_variable_str to detrmine if the datatype
+ * is a variable string.
+ * Inputs: type_id - identifier of the dataspace
+ * Outputs: flag - 0 if not VL str, 1 if is not
+ * and negative on failure.
+ * Returns: 0 on success, -1 on failure
+ * Programmer: Elena Pourmal
+ * Wednesday, March 12 , 2003
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5tis_variable_str_c ( hid_t_f *type_id , int_f *flag )
+{
+ int ret_value = 0;
+ hid_t c_type_id;
+ htri_t status;
+
+ c_type_id = (hid_t)*type_id;
+ status = H5Tis_variable_str(c_type_id);
+ *flag = (int_f)status;
+ if ( status < 0 ) ret_value = -1;
+ return ret_value;
+}
diff --git a/fortran/src/H5Tff.f90 b/fortran/src/H5Tff.f90
index e215318..33f2181 100644
--- a/fortran/src/H5Tff.f90
+++ b/fortran/src/H5Tff.f90
@@ -3104,4 +3104,65 @@
hdferr = h5tvlen_create_c(type_id, vltype_id)
END SUBROUTINE h5tvlen_create_f
+!----------------------------------------------------------------------
+! Name: h5tis_variable_str_f
+!
+! Purpose: Determines whether a dattype is a variable string.
+!
+! Inputs:
+! type_id - - datartpe identifier
+! Outputs:
+! status - flag to indicate if datatype
+! is a variable string
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: Elena Pourmal
+! March 12, 2003
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5tis_variable_str_f(type_id, status, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5tis_variable_str_f
+!DEC$endif
+!
+
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+ LOGICAL, INTENT(OUT) :: status ! Flag, idicates if datatype
+ ! is a variable string or not ( TRUE or
+ ! FALSE)
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER :: flag ! "TRUE/FALSE/ERROR from C"
+
+! INTEGER, EXTERNAL :: h5tis_variable_str_c
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5tis_variable_str_c(type_id, flag)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !MS$ATTRIBUTES C,reference,alias:'_H5TIS_VARIABLE_STR_C'::h5tis_variable_str_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: type_id
+ INTEGER :: flag
+ END FUNCTION h5tis_variable_str_c
+ END INTERFACE
+
+ hdferr = h5tis_variable_str_c(type_id, flag)
+ status = .TRUE.
+ if (flag .EQ. 0) status = .FALSE.
+
+ END SUBROUTINE h5tis_variable_str_f
+
+!----------------------------------------------------------------------
END MODULE H5T
diff --git a/fortran/src/H5Zf.c b/fortran/src/H5Zf.c
new file mode 100644
index 0000000..3f6a2a6
--- /dev/null
+++ b/fortran/src/H5Zf.c
@@ -0,0 +1,53 @@
+#include "H5f90.h"
+
+/*----------------------------------------------------------------------------
+ * Name: h5zunregister_c
+ * Purpose: Call H5Zunregister to unregister filter
+ * Inputs: filter identifier
+ * Returns: 0 on success, -1 on failure
+ * Programmer: Elena Pourmal
+ * Wednesday, March 12, 2003
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5zunregister_c (int_f *filter)
+{
+ int ret_value = -1;
+ herr_t status;
+ H5Z_filter_t c_filter;
+
+ /*
+ * Call H5Zunregister function.
+ */
+ c_filter = (H5Z_filter_t)*filter;
+ printf(" filter # %d \n", (int)c_filter);
+ status = H5Zunregister(c_filter);
+ printf("From C zunregister %d \n", status);
+ if (status < 0) return ret_value;
+ ret_value = 0;
+ return ret_value;
+}
+/*----------------------------------------------------------------------------
+ * Name: h5zfiletr_avail_c
+ * Purpose: Call H5Zfilter_avail to find if filter is available
+ * Inputs: filter - filter identifier
+ * Outputs: flag - status flag
+ * Returns: 0 on success, -1 on failure
+ * Programmer: Elena Pourmal
+ * Wednesday, March 12, 2003
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5zfilter_avail_c ( int_f *filter , int_f *flag )
+{
+ int ret_value = 0;
+ H5Z_filter_t c_filter;
+ htri_t status;
+
+ c_filter = (H5Z_filter_t)*filter;
+ status = H5Zfilter_avail(c_filter);
+ *flag = (int_f)status;
+ if ( status < 0 ) ret_value = -1;
+ return ret_value;
+}
diff --git a/fortran/src/H5Zff.f90 b/fortran/src/H5Zff.f90
new file mode 100644
index 0000000..2f33b80
--- /dev/null
+++ b/fortran/src/H5Zff.f90
@@ -0,0 +1,124 @@
+!
+! This file contains FORTRAN90 interfaces for H5I functions
+!
+ MODULE H5Z
+
+ USE H5GLOBAL
+
+ CONTAINS
+
+!----------------------------------------------------------------------
+! Name: h5zunregister_f
+!
+! Purpose: Unregisters specified filetr
+!
+! Inputs: filter - filter; may have one of the following values:
+! H5Z_FILTER_DEFLATE_F
+! H5Z_FILTER_SHUFFLE_F
+! H5Z_FILTER_FLETCHER32_F
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: Elena Pourmal
+! March 12, 2003
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+ SUBROUTINE h5zunregister_f(filter, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5zunregister_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER, INTENT(IN) :: filter
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+! INTEGER, EXTERNAL :: h5zunregister_c
+! Interface is needed for MS FORTRAN
+!
+ INTERFACE
+ INTEGER FUNCTION h5zunregister_c (filter)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !MS$ATTRIBUTES C,reference,alias:'_H5ZUNREGISTER_C':: h5zunregister_c
+ !DEC$ ENDIF
+ INTEGER, INTENT(IN) :: filter
+ END FUNCTION h5zunregister_c
+ END INTERFACE
+ hdferr = h5zunregister_c (filter)
+ END SUBROUTINE h5zunregister_f
+!----------------------------------------------------------------------
+! Name: h5zfilter_avail_f
+!
+! Purpose: Queries if filter is available
+!
+! Inputs:
+! filter - filter
+! Outputs:
+! status - status; .TRUE. if filter is available,
+! .FALSE. otherwise
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: Elena Pourmal
+! March 12, 2003
+!
+! Modifications:
+!
+!----------------------------------------------------------------------
+ SUBROUTINE h5zfilter_avail_f(filter, status, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5zfilter_avail_f
+!DEC$endif
+!
+
+ IMPLICIT NONE
+ INTEGER, INTENT(IN) :: filter ! Filter; may be one of the following:
+ ! H5Z_FILTER_DEFLATE_F
+ ! H5Z_FILTER_SHUFFLE_F
+ ! H5Z_FILTER_FLETCHER32_F
+ LOGICAL, INTENT(OUT) :: status ! Flag, idicates if filter
+ ! is availble not ( TRUE or
+ ! FALSE)
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER :: flag ! "TRUE/FALSE/ERROR from C"
+
+! INTEGER, EXTERNAL :: h5zfilter_avail_c
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5zfilter_avail_c(filter, flag)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !MS$ATTRIBUTES C,reference,alias:'_H5ZFILTER_AVAIL_C'::h5zfilter_avail_c
+ !DEC$ ENDIF
+ INTEGER, INTENT(IN) :: filter
+ INTEGER :: flag
+ END FUNCTION h5zfilter_avail_c
+ END INTERFACE
+
+ hdferr = h5zfilter_avail_c(filter, flag)
+ status = .TRUE.
+ if (flag .EQ. 0) status = .FALSE.
+
+ END SUBROUTINE h5zfilter_avail_f
+
+ END MODULE H5Z
+
+
+
+
+
diff --git a/fortran/src/H5_f.c b/fortran/src/H5_f.c
index 3f86dc9..f24cb31 100644
--- a/fortran/src/H5_f.c
+++ b/fortran/src/H5_f.c
@@ -156,17 +156,18 @@ nh5close_types_c( hid_t_f * types, int_f *lentypes,
* h5r_flags - H5R interface flags
* h5s_flags - H5S interface flags
* h5t_flags - H5T interface flags
+ * h5z_flags - H5Z interface flags
* Outputs: None
* Returns: 0 on success, -1 on failure
* Programmer: Elena Pourmal
* Tuesday, August 3, 1999
- * Modifications:
+ * Modifications: Added Z flags. EIP, March 12, 2003
*---------------------------------------------------------------------------*/
int_f
nh5init_flags_c( int_f *h5d_flags, int_f *h5e_flags, int_f *h5f_flags,
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 *h5t_flags, int_f *h5z_flags)
{
int ret_value = -1;
/*
@@ -354,6 +355,20 @@ nh5init_flags_c( int_f *h5d_flags, int_f *h5e_flags, int_f *h5f_flags,
h5t_flags[27] = H5T_STR_ERROR;
h5t_flags[28] = H5T_VLEN;
h5t_flags[29] = H5T_ARRAY;
+/*
+ * H5Z flags
+ */
+
+ h5z_flags[0] = H5Z_FILTER_ERROR;
+ h5z_flags[1] = H5Z_FILTER_NONE;
+ h5z_flags[2] = H5Z_FILTER_DEFLATE;
+ h5z_flags[3] = H5Z_FILTER_SHUFFLE;
+ h5z_flags[4] = H5Z_FILTER_FLETCHER32;
+ h5z_flags[5] = H5Z_ERROR_EDC;
+ h5z_flags[6] = H5Z_DISABLE_EDC;
+ h5z_flags[7] = H5Z_ENABLE_EDC;
+ h5z_flags[8] = H5Z_NO_EDC;
+
ret_value = 0;
return ret_value;
diff --git a/fortran/src/H5_ff.f90 b/fortran/src/H5_ff.f90
index e29c0e4..2cf0a5a 100644
--- a/fortran/src/H5_ff.f90
+++ b/fortran/src/H5_ff.f90
@@ -70,7 +70,8 @@
i_H5P_flags, &
i_H5R_flags, &
i_H5S_flags, &
- i_H5T_flags )
+ i_H5T_flags, &
+ i_H5Z_flags )
USE H5GLOBAL
INTEGER i_H5F_flags(H5F_FLAGS_LEN)
INTEGER i_H5G_flags(H5G_FLAGS_LEN)
@@ -82,6 +83,7 @@
INTEGER i_H5R_flags(H5R_FLAGS_LEN)
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
@@ -99,7 +101,8 @@
H5P_flags, &
H5R_flags, &
H5S_flags, &
- H5T_flags )
+ H5T_flags, &
+ H5Z_flags )
error = error_0 + error_1 + error_2
END SUBROUTINE h5open_f
diff --git a/fortran/src/H5config_fortran.h.in b/fortran/src/H5config_fortran.h.in
index 0e94c9f..439dfa0 100644
--- a/fortran/src/H5config_fortran.h.in
+++ b/fortran/src/H5config_fortran.h.in
@@ -3,6 +3,15 @@
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
+/* Define if support for deflate filter is enabled */
+#undef HAVE_FILTER_DEFLATE
+
+/* Define if support for Fletcher32 checksum is enabled */
+#undef HAVE_FILTER_FLETCHER32
+
+/* Define if support for shuffle filter is enabled */
+#undef HAVE_FILTER_SHUFFLE
+
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
diff --git a/fortran/src/H5f90global.f90 b/fortran/src/H5f90global.f90
index 7a4a296..76aa21a 100644
--- a/fortran/src/H5f90global.f90
+++ b/fortran/src/H5f90global.f90
@@ -534,5 +534,35 @@
EQUIVALENCE(H5T_flags(29), H5T_VLEN_F)
EQUIVALENCE(H5T_flags(30), H5T_ARRAY_F)
+!
+! H5Z flags declaration
+!
+ INTEGER, PARAMETER :: H5Z_FLAGS_LEN = 9
+ INTEGER H5Z_flags(H5Z_FLAGS_LEN)
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$ ATTRIBUTES DLLEXPORT :: /H5Z_FLAGS/
+!DEC$endif
+ COMMON /H5Z_FLAGS/ H5Z_flags
+
+ INTEGER :: H5Z_FILTER_ERROR_F
+ INTEGER :: H5Z_FILTER_NONE_F
+ INTEGER :: H5Z_FILTER_DEFLATE_F
+ INTEGER :: H5Z_FILTER_SHUFFLE_F
+ INTEGER :: H5Z_FILTER_FLETCHER32_F
+ INTEGER :: H5Z_ERROR_EDC_F
+ INTEGER :: H5Z_DISABLE_EDC_F
+ INTEGER :: H5Z_ENABLE_EDC_F
+ INTEGER :: H5Z_NO_EDC_F
+
+ EQUIVALENCE(H5Z_flags(1), H5Z_FILTER_ERROR_F)
+ EQUIVALENCE(H5Z_flags(2), H5Z_FILTER_NONE_F)
+ EQUIVALENCE(H5Z_flags(3), H5Z_FILTER_DEFLATE_F)
+ EQUIVALENCE(H5Z_flags(4), H5Z_FILTER_SHUFFLE_F)
+ EQUIVALENCE(H5Z_flags(5), H5Z_FILTER_FLETCHER32_F)
+ EQUIVALENCE(H5Z_flags(6), H5Z_ERROR_EDC_F)
+ EQUIVALENCE(H5Z_flags(7), H5Z_DISABLE_EDC_F)
+ EQUIVALENCE(H5Z_flags(8), H5Z_ENABLE_EDC_F)
+ EQUIVALENCE(H5Z_flags(9), H5Z_NO_EDC_F)
+
END MODULE H5GLOBAL
diff --git a/fortran/src/H5f90proto.h b/fortran/src/H5f90proto.h
index 72c30d3..7e03274 100644
--- a/fortran/src/H5f90proto.h
+++ b/fortran/src/H5f90proto.h
@@ -196,53 +196,59 @@ H5_DLL int_f nh5sselect_elements_c ( hid_t_f *space_id , int_f *op, size_t_f *ne
#ifndef H5Df90_FNAMES
# define H5Df90_FNAMES
#ifdef DF_CAPFNAMES
-# define nh5dcreate_c FNAME(H5DCREATE_C)
-# define nh5dclose_c FNAME(H5DCLOSE_C)
-# define nh5dopen_c FNAME(H5DOPEN_C)
-# define nh5dwrite_c FNAME(H5DWRITE_C)
-# define nh5dwrite_ref_obj_c FNAME(H5DWRITE_REF_OBJ_C)
-# define nh5dwrite_ref_reg_c FNAME(H5DWRITE_REF_REG_C)
-# define nh5dwritec_c FNAME(H5DWRITEC_C)
-# define nh5dread_c FNAME(H5DREAD_C)
-# define nh5dread_ref_reg_c FNAME(H5DREAD_REF_REG_C)
-# define nh5dread_ref_obj_c FNAME(H5DREAD_REF_OBJ_C)
-# define nh5dreadc_c FNAME(H5DREADC_C)
-# define nh5dget_space_c FNAME(H5DGET_SPACE_C)
-# define nh5dget_type_c FNAME(H5DGET_TYPE_C)
-# define nh5dget_create_plist_c FNAME(H5DGET_CREATE_PLIST_C)
-# define nh5dextend_c FNAME(H5DEXTEND_C)
-# define nh5dget_storage_size_c FNAME(H5DGET_STORAGE_SIZE_C)
-# define nh5dvlen_get_max_len_c FNAME(H5DVLEN_GET_MAX_LEN_C)
-# define nh5dwrite_vl_integer_c FNAME(H5DWRITE_VL_INTEGER_C)
-# define nh5dread_vl_integer_c FNAME(H5DREAD_VL_INTEGER_C)
-# define nh5dwrite_vl_real_c FNAME(H5DWRITE_VL_REAL_C)
-# define nh5dread_vl_real_c FNAME(H5DREAD_VL_REAL_C)
-# define nh5dwrite_vl_string_c FNAME(H5DWRITE_VL_STRING_C)
-# define nh5dread_vl_string_c FNAME(H5DREAD_VL_STRING_C)
+# define nh5dcreate_c FNAME(H5DCREATE_C)
+# define nh5dclose_c FNAME(H5DCLOSE_C)
+# define nh5dopen_c FNAME(H5DOPEN_C)
+# define nh5dwrite_c FNAME(H5DWRITE_C)
+# define nh5dwrite_ref_obj_c FNAME(H5DWRITE_REF_OBJ_C)
+# define nh5dwrite_ref_reg_c FNAME(H5DWRITE_REF_REG_C)
+# define nh5dwritec_c FNAME(H5DWRITEC_C)
+# define nh5dread_c FNAME(H5DREAD_C)
+# define nh5dread_ref_reg_c FNAME(H5DREAD_REF_REG_C)
+# define nh5dread_ref_obj_c FNAME(H5DREAD_REF_OBJ_C)
+# define nh5dreadc_c FNAME(H5DREADC_C)
+# define nh5dget_space_c FNAME(H5DGET_SPACE_C)
+# define nh5dget_type_c FNAME(H5DGET_TYPE_C)
+# define nh5dget_create_plist_c FNAME(H5DGET_CREATE_PLIST_C)
+# define nh5dextend_c FNAME(H5DEXTEND_C)
+# define nh5dget_storage_size_c FNAME(H5DGET_STORAGE_SIZE_C)
+# define nh5dvlen_get_max_len_c FNAME(H5DVLEN_GET_MAX_LEN_C)
+# define nh5dwrite_vl_integer_c FNAME(H5DWRITE_VL_INTEGER_C)
+# define nh5dread_vl_integer_c FNAME(H5DREAD_VL_INTEGER_C)
+# define nh5dwrite_vl_real_c FNAME(H5DWRITE_VL_REAL_C)
+# define nh5dread_vl_real_c FNAME(H5DREAD_VL_REAL_C)
+# define nh5dwrite_vl_string_c FNAME(H5DWRITE_VL_STRING_C)
+# define nh5dread_vl_string_c FNAME(H5DREAD_VL_STRING_C)
+# define nh5dfillc_c FNAME(H5DFILLC_C)
+# define nh5dfill_c FNAME(H5DFILL_C)
+# define nh5dget_space_status_c FNAME(H5DGET_SPACE_STATUS_C)
#else /* !DF_CAPFNAMES */
-# define nh5dcreate_c FNAME(h5dcreate_c)
-# define nh5dclose_c FNAME(h5dclose_c)
-# define nh5dopen_c FNAME(h5dopen_c)
-# define nh5dwrite_c FNAME(h5dwrite_c)
-# define nh5dwritec_c FNAME(h5dwritec_c)
-# define nh5dwrite_ref_obj_c FNAME(h5dwrite_ref_obj_c)
-# define nh5dwrite_ref_reg_c FNAME(h5dwrite_ref_reg_c)
-# define nh5dread_c FNAME(h5dread_c)
-# define nh5dread_ref_reg_c FNAME(h5dread_ref_reg_c)
-# define nh5dread_ref_obj_c FNAME(h5dread_ref_obj_c)
-# define nh5dreadc_c FNAME(h5dreadc_c)
-# define nh5dget_space_c FNAME(h5dget_space_c)
-# define nh5dget_type_c FNAME(h5dget_type_c)
-# define nh5dget_create_plist_c FNAME(h5dget_create_plist_c)
-# define nh5dextend_c FNAME(h5dextend_c)
-# define nh5dget_storage_size_c FNAME(h5dget_storage_size_c)
-# define nh5dvlen_get_max_len_c FNAME(h5dvlen_get_max_len_c)
-# define nh5dwrite_vl_integer_c FNAME(h5dwrite_vl_integer_c)
+# define nh5dcreate_c FNAME(h5dcreate_c)
+# define nh5dclose_c FNAME(h5dclose_c)
+# define nh5dopen_c FNAME(h5dopen_c)
+# define nh5dwrite_c FNAME(h5dwrite_c)
+# define nh5dwritec_c FNAME(h5dwritec_c)
+# define nh5dwrite_ref_obj_c FNAME(h5dwrite_ref_obj_c)
+# define nh5dwrite_ref_reg_c FNAME(h5dwrite_ref_reg_c)
+# define nh5dread_c FNAME(h5dread_c)
+# define nh5dread_ref_reg_c FNAME(h5dread_ref_reg_c)
+# define nh5dread_ref_obj_c FNAME(h5dread_ref_obj_c)
+# define nh5dreadc_c FNAME(h5dreadc_c)
+# define nh5dget_space_c FNAME(h5dget_space_c)
+# define nh5dget_type_c FNAME(h5dget_type_c)
+# define nh5dget_create_plist_c FNAME(h5dget_create_plist_c)
+# define nh5dextend_c FNAME(h5dextend_c)
+# define nh5dget_storage_size_c FNAME(h5dget_storage_size_c)
+# define nh5dvlen_get_max_len_c FNAME(h5dvlen_get_max_len_c)
+# define nh5dwrite_vl_integer_c FNAME(h5dwrite_vl_integer_c)
# define nh5dread_vl_integer_c FNAME(h5dread_vl_integer_c)
-# define nh5dwrite_vl_real_c FNAME(h5dwrite_vl_real_c)
-# define nh5dread_vl_real_c FNAME(h5dread_vl_real_c)
+# define nh5dwrite_vl_real_c FNAME(h5dwrite_vl_real_c)
+# define nh5dread_vl_real_c FNAME(h5dread_vl_real_c)
# define nh5dwrite_vl_string_c FNAME(h5dwrite_vl_string_c)
-# define nh5dread_vl_string_c FNAME(h5dread_vl_string_c)
+# define nh5dread_vl_string_c FNAME(h5dread_vl_string_c)
+# define nh5dfillc_c FNAME(h5dfillc_c)
+# define nh5dfill_c FNAME(h5dfill_c)
+# define nh5dget_space_status_c FNAME(h5dget_space_status_c)
#endif /* DF_CAPFNAMES */
#endif
@@ -307,6 +313,11 @@ H5_DLL int_f nh5dextend_c ( hid_t_f *dset_id , hsize_t_f *dims);
H5_DLL int_f nh5dvlen_get_max_len_c(hid_t_f *dataset_id, hid_t_f *type_id, hid_t_f *space_id, size_t_f *len);
H5_DLL int_f nh5dget_storage_size_c(hid_t_f *dataset_id, hsize_t_f *size);
+H5_DLL int_f nh5dfillc_c(_fcd fill_value, hid_t_f *fill_type_id, hid_t_f *space_id, _fcd buf, hid_t_f *mem_type_id);
+H5_DLL int_f nh5dfill_c(void * fill_value, hid_t_f *fill_type_id, hid_t_f *space_id, void * buf, hid_t_f *mem_type_id);
+
+H5_DLL int_f nh5dget_space_status_c ( hid_t_f *dset_id, int_f *flag);
+
/*
* Functions from H5Gf.c
*/
@@ -507,6 +518,7 @@ H5_DLL int_f nh5aget_name_c(hid_t_f *attr_id, size_t_f *size, _fcd buf);
# define nh5tget_array_dims_c FNAME(H5TGET_ARRAY_DIMS_C)
# define nh5tget_super_c FNAME(H5TGET_SUPER_C)
# define nh5tvlen_create_c FNAME(H5TVLEN_CREATE_C)
+# define nh5tis_variable_str_c FNAME(H5TIS_VARIABLE_STR_C)
#else
# define nh5topen_c FNAME(h5topen_c)
@@ -563,6 +575,7 @@ H5_DLL int_f nh5aget_name_c(hid_t_f *attr_id, size_t_f *size, _fcd buf);
# define nh5tget_array_dims_c FNAME(h5tget_array_dims_c)
# define nh5tget_super_c FNAME(h5tget_super_c)
# define nh5tvlen_create_c FNAME(h5tvlen_create_c)
+# define nh5tis_variable_str_c FNAME(h5tis_variable_str_c)
#endif
#endif
@@ -648,7 +661,7 @@ H5_DLL int_f
nh5tget_super_c ( hid_t_f *type_id , hid_t_f *base_type_id);
H5_DLL int_f
nh5tvlen_create_c ( hid_t_f *type_id , hid_t_f *vltype_id);
-
+H5_DLL int_f nh5tis_variable_str_c ( hid_t_f *type_id , int_f *flag );
/*
* Functions from H5Pf.c
@@ -750,6 +763,10 @@ nh5tvlen_create_c ( hid_t_f *type_id , hid_t_f *vltype_id);
# define nh5punregister_c FNAME(H5PUNREGISTER_C)
# define nh5pclose_class_c FNAME(H5PCLOSE_CLASS_C)
# define nh5pget_class_name_c FNAME(H5PGET_CLASS_NAME_C)
+# define nh5pset_shuffle_c FNAME(H5PSET_SHUFFLE_C)
+# 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)
#else
# define nh5pcreate_c FNAME(h5pcreate_c)
@@ -845,6 +862,10 @@ nh5tvlen_create_c ( hid_t_f *type_id , hid_t_f *vltype_id);
# define nh5punregister_c FNAME(h5punregister_c)
# define nh5pclose_class_c FNAME(h5pclose_class_c)
# define nh5pget_class_name_c FNAME(h5pget_class_name_c)
+# define nh5pset_shuffle_c FNAME(h5pset_shuffle_c)
+# 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)
#endif
@@ -1025,7 +1046,10 @@ H5_DLL int_f nh5premove_c(hid_t_f *plid, _fcd name, int_f *name_len);
H5_DLL int_f nh5punregister_c(hid_t_f *class, _fcd name, int_f *name_len);
H5_DLL int_f nh5pclose_class_c(hid_t_f * class);
H5_DLL int_f nh5pget_class_name_c(hid_t_f *prp_id, _fcd name, int_f *name_len);
-
+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 );
/*
* Functions frome H5Rf.c
@@ -1075,12 +1099,15 @@ nh5rget_object_type_obj_c (hid_t_f *dset_id, int_f *ref, int_f *obj_type);
# define H5If90_FNAMES
#ifdef DF_CAPFNAMES
# define nh5iget_type_c FNAME(H5IGET_TYPE_C)
+# define nh5iget_name_c FNAME(H5IGET_NAME_C)
#else
# define nh5iget_type_c FNAME(h5iget_type_c)
+# define nh5iget_name_c FNAME(h5iget_name_c)
#endif
#endif
H5_DLL int_f nh5iget_type_c(hid_t_f *obj_id, int_f *type);
+H5_DLL int_f nh5iget_name_c(hid_t_f *obj_id, _fcd buf, size_t_f *buf_size, size_t_f *name_size);
#ifndef H5Ef90_FNAMES
@@ -1144,7 +1171,7 @@ H5_DLL int_f nh5close_types_c(hid_t_f *types, int_f *lentypes, hid_t_f * floatin
H5_DLL int_f nh5init_flags_c( int_f *h5d_flags, int_f *h5e_flags, int_f *h5f_flags,
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 *h5t_flags, int_f *h5z_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);
@@ -1153,4 +1180,22 @@ H5_DLL int_f nh5garbage_collect_c(void);
H5_DLL int_f nh5dont_atexit_c(void);
+/*
+ * Functions from H5Zf.c
+ */
+#ifndef H5Zf90_FNAMES
+# define H5Zf90_FNAMES
+#ifdef DF_CAPFNAMES
+# define nh5zunregister_c FNAME(H5ZUNREGISTER_C)
+# define nh5zfilter_avail_c FNAME(H5ZFILTER_AVAIL_C)
+#else
+# define nh5zunregister_c FNAME(h5zunregister_c)
+# define nh5zfilter_avail_c FNAME(h5zfilter_avail_c)
+#endif
+#endif
+H5_DLL int_f nh5zunregister_c (int_f *filter);
+H5_DLL int_f nh5zfilter_avail_c ( int_f *filter , int_f *flag );
+
+
+
#endif /* _H5f90proto_H */
diff --git a/fortran/src/HDF5.f90 b/fortran/src/HDF5.f90
index 3a7486f..484b306 100644
--- a/fortran/src/HDF5.f90
+++ b/fortran/src/HDF5.f90
@@ -11,5 +11,6 @@
USE H5T
USE H5P
USE H5R
+ USE H5Z
USE H5LIB
END MODULE HDF5
diff --git a/fortran/src/HDF5mpio.f90 b/fortran/src/HDF5mpio.f90
index cca941b..0019a37 100644
--- a/fortran/src/HDF5mpio.f90
+++ b/fortran/src/HDF5mpio.f90
@@ -12,5 +12,6 @@
USE H5P
USE H5FDMPIO
USE H5R
+ USE H5Z
USE H5LIB
END MODULE HDF5
diff --git a/fortran/src/Makefile.in b/fortran/src/Makefile.in
index 40804bc..99b9c8c 100644
--- a/fortran/src/Makefile.in
+++ b/fortran/src/Makefile.in
@@ -31,12 +31,12 @@ FPAR_MOD=${ADD_PARALLEL_FILES:yes=HDF5mpio.f90}
CPARALLEL=${ADD_PARALLEL_FILES:yes=H5FDmpiof.c}
CLIB_SRC=H5f90kit.c H5_f.c H5Git.c H5Rf.c H5Ff.c H5Sf.c H5Df.c H5Gf.c \
- H5Af.c H5Tf.c H5Pf.c H5If.c H5Ef.c ${CPARALLEL:no=}
+ H5Af.c H5Tf.c H5Pf.c H5If.c H5Ef.c H5Zf.c ${CPARALLEL:no=}
FPARALLEL=${ADD_PARALLEL_FILES:yes=H5FDmpioff.f90}
FLIB_SRC=H5fortran_types.f90 H5fortran_flags.f90 H5f90global.f90 H5_ff.f90 \
H5Rff.f90 H5Fff.f90 H5Sff.f90 H5Dff.f90 H5Gff.f90 H5Aff.f90 H5Tff.f90 \
- H5Pff.f90 H5Iff.f90 H5Eff.f90 ${FPARALLEL:no=} ${FPAR_MOD:no=HDF5.f90}
+ H5Pff.f90 H5Iff.f90 H5Eff.f90 H5Zff.f90 ${FPARALLEL:no=} ${FPAR_MOD:no=HDF5.f90}
LIB_SRC=$(CLIB_SRC) $(FLIB_SRC)
LIB_OBJ=$(CLIB_SRC:.c=.lo) $(FLIB_SRC:.f90=.lo)
@@ -58,6 +58,7 @@ H5Pff.lo: $(srcdir)/H5Pff.f90 H5f90global.lo
H5Rff.lo: $(srcdir)/H5Rff.f90 H5f90global.lo
H5Sff.lo: $(srcdir)/H5Sff.f90 H5f90global.lo
H5Tff.lo: $(srcdir)/H5Tff.f90 H5f90global.lo
+H5Zff.lo: $(srcdir)/H5Zff.f90 H5f90global.lo
H5_ff.lo: $(srcdir)/H5_ff.f90 H5f90global.lo
HDF5.lo: $(srcdir)/HDF5.f90 H5f90global.lo H5Aff.lo \
H5Dff.lo H5Eff.lo H5Fff.lo H5Gff.lo H5Iff.lo \
@@ -65,7 +66,7 @@ HDF5.lo: $(srcdir)/HDF5.f90 H5f90global.lo H5Aff.lo \
H5FDmpioff.lo: $(srcdir)/H5FDmpioff.f90 H5f90global.lo
HDF5mpio.lo: $(srcdir)/H5FDmpioff.f90 H5f90global.lo H5Aff.lo \
H5Dff.lo H5Eff.lo H5Fff.lo H5Gff.lo H5Iff.lo \
- H5Pff.lo H5Rff.lo H5Sff.lo H5Tff.lo H5FDmpioff.lo
+ H5Pff.lo H5Rff.lo H5Sff.lo H5Tff.lo H5Zff.lo H5FDmpioff.lo
ARFLAGS=rc