summaryrefslogtreecommitdiffstats
path: root/fortran/src
diff options
context:
space:
mode:
Diffstat (limited to 'fortran/src')
-rw-r--r--fortran/src/H5Af.c800
-rw-r--r--fortran/src/H5Aff.f902396
-rw-r--r--fortran/src/H5Df.c61
-rw-r--r--fortran/src/H5Dff.f90452
-rw-r--r--fortran/src/H5Ff.c2
-rw-r--r--fortran/src/H5Fff.f904
-rw-r--r--fortran/src/H5Gf.c241
-rw-r--r--fortran/src/H5Gff.f90636
-rw-r--r--fortran/src/H5If.c12
-rw-r--r--fortran/src/H5Lf.c817
-rw-r--r--fortran/src/H5Lff.f901323
-rw-r--r--fortran/src/H5Of.c99
-rw-r--r--fortran/src/H5Off.f90163
-rw-r--r--fortran/src/H5Pf.c1034
-rw-r--r--fortran/src/H5Pff.f901794
-rw-r--r--fortran/src/H5Rf.c99
-rw-r--r--fortran/src/H5Rff.f90153
-rw-r--r--fortran/src/H5Sf.c124
-rw-r--r--fortran/src/H5Sff.f90168
-rw-r--r--fortran/src/H5Tf.c214
-rw-r--r--fortran/src/H5Tff.f90519
-rw-r--r--fortran/src/H5_f.c385
-rw-r--r--fortran/src/H5_ff.f90366
-rw-r--r--fortran/src/H5f90global.f90280
-rw-r--r--fortran/src/H5f90proto.h253
-rw-r--r--fortran/src/HDF5.f9033
-rw-r--r--fortran/src/HDF5mpio.f902
-rw-r--r--fortran/src/Makefile.am10
-rw-r--r--fortran/src/Makefile.in29
-rw-r--r--fortran/src/README_DEVELOPEMENT36
30 files changed, 11123 insertions, 1382 deletions
diff --git a/fortran/src/H5Af.c b/fortran/src/H5Af.c
index 0be225b..5fdc27e 100644
--- a/fortran/src/H5Af.c
+++ b/fortran/src/H5Af.c
@@ -35,7 +35,7 @@
*---------------------------------------------------------------------------*/
int_f
nh5acreate_c(hid_t_f *obj_id, _fcd name, size_t_f *namelen, hid_t_f *type_id,
- hid_t_f *space_id, hid_t_f *crt_prp, hid_t_f *attr_id)
+ hid_t_f *space_id, hid_t_f *crt_prp, hid_t_f *aapl, hid_t_f *attr_id)
{
char *c_name = NULL; /* Buffer to hold C string */
int_f ret_value = 0; /* Return value */
@@ -49,7 +49,7 @@ nh5acreate_c(hid_t_f *obj_id, _fcd name, size_t_f *namelen, hid_t_f *type_id,
/*
* Call H5Acreate2 function.
*/
- if((*attr_id = (hid_t_f)H5Acreate2((hid_t)*obj_id, c_name, (hid_t)*type_id, (hid_t)*space_id, (hid_t)*crt_prp, H5P_DEFAULT)) < 0)
+ if((*attr_id = (hid_t_f)H5Acreate2((hid_t)*obj_id, c_name, (hid_t)*type_id, (hid_t)*space_id, (hid_t)*crt_prp, (hid_t)*aapl)) < 0)
HGOTO_DONE(FAIL);
done:
@@ -959,7 +959,7 @@ done:
* Name: h5aget_name_c
* Purpose: Call H5Aget_name to get attribute's name
* Inputs: attr_id - attribute identifier
- * bufsize -size of the buffer
+ * bufsize - size of the buffer
* Outputs: buf - buffer to hold the name
* Returns: 0 on success, -1 on failure
* Programmer: Elena Pourmal
@@ -969,27 +969,801 @@ done:
int_f
nh5aget_name_c(hid_t_f *attr_id, size_t_f *bufsize, _fcd buf)
{
- char *c_buf=NULL; /* Buffer to hold C string */
+ size_t c_bufsize;
+ char *c_buf=NULL; /* Buffer to hold C string */
+ int_f ret_value=0; /* Return value */
+
+ c_bufsize = (size_t)*bufsize+1;
+ /*
+ * Allocate buffer to hold name of an attribute
+ */
+ if ((c_buf = HDmalloc(c_bufsize)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Call H5Aget_name function
+ */
+
+ if ((ret_value = (int_f)H5Aget_name((hid_t)*attr_id, c_bufsize, c_buf)) < 0)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Convert C name to FORTRAN and place it in the given buffer
+ */
+ HD5packFstring(c_buf, _fcdtocp(buf), c_bufsize-1);
+
+done:
+ if(c_buf) HDfree(c_buf);
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5aget_storage_size_c
+ * Purpose: Call H5Aget_storage_size
+ * Inputs: attr_id - identifier of an attribute
+ * Outputs: size - attributes storage requirements
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M. S. Breitenfeld
+ * January, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5aget_storage_size_c ( hid_t_f *attr_id, hsize_t_f *size)
+{
+ int_f ret_value=0; /* Return value */
+
+ if ((*size = (hsize_t_f)H5Aget_storage_size((hid_t)*attr_id)) < 0)
+ HGOTO_DONE(FAIL);
+
+done:
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5aget_create_plist_c
+ * Purpose: Call H5Aget_create_plist
+ * Inputs: attr_id - identifier of an attribute
+ * Outputs: creation_prop_id - Identifier for the attribute’s creation property
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M. S. Breitenfeld
+ * January, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5aget_create_plist_c ( hid_t_f *attr_id, hid_t_f *creation_prop_id)
+{
int_f ret_value=0; /* Return value */
+ if ((*creation_prop_id = (hid_t_f)H5Aget_create_plist((hid_t)*attr_id)) < 0)
+ HGOTO_DONE(FAIL);
+
+done:
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5arename_by_name_c
+ * Purpose: Calls H5Arename_by_name
+ * Inputs: loc_id - Object identifier
+ * obj_name - Name of object, relative to location,
+ * whose attribute is to be renamed
+ * obj_name_len - Object name length
+ * old_attr_name - Prior attribute name
+ * old_attr_name_len - Prior attribute name length
+ * new_attr_name - New attribute name
+ * new_attr_name_len - New attribute name length
+ * lapl_id - Link access property list identifier
+ * Outputs: N/A
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M. S. Breitenfeld
+ * January, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5arename_by_name_c( hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen,
+ _fcd old_attr_name, size_t_f *old_attr_namelen,
+ _fcd new_attr_name, size_t_f *new_attr_namelen,
+ hid_t_f *lapl_id )
+{
+ char *c_obj_name = NULL; /* Buffer to hold C string */
+ char *c_old_attr_name = NULL; /* Buffer to hold C string */
+ char *c_new_attr_name = NULL; /* Buffer to hold C string */
+ int_f ret_value=0; /* Return value */
/*
- * Allocate buffer to hold name of an attribute
+ * Convert FORTRAN name to C name
*/
- if ((c_buf = HDmalloc((size_t)*bufsize +1)) == NULL)
- HGOTO_DONE(FAIL);
+ if((c_obj_name = HD5f2cstring(obj_name, (size_t)*obj_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+ if((c_old_attr_name = HD5f2cstring(old_attr_name, (size_t)*old_attr_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+ if((c_new_attr_name = HD5f2cstring(new_attr_name, (size_t)*new_attr_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ if(H5Arename_by_name((hid_t)*loc_id,c_obj_name,c_old_attr_name,c_new_attr_name,(hid_t)*lapl_id) < 0)
+ HGOTO_DONE(FAIL);
+
+done:
+ if(c_obj_name)
+ HDfree(c_obj_name);
+ if(c_old_attr_name)
+ HDfree(c_old_attr_name);
+ if(c_new_attr_name)
+ HDfree(c_new_attr_name);
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5aopen_c
+ * Purpose: Call H5Aopen to open an attribute
+ * Inputs: obj_id - Identifer for object to which attribute is attached
+ * attr_name - Attribute access property list
+ * attr_namelen - size of attr_name
+ * aapl_id - Link access property list
+ * Outputs: attr_id - dataset identifier
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * January, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5aopen_c (hid_t_f *obj_id, _fcd attr_name, size_t_f *attr_namelen, hid_t_f *aapl_id, hid_t_f *attr_id)
+{
+ char *c_attr_name = NULL; /* Buffer to hold C string */
+ int_f ret_value = 0; /* Return value */
/*
- * Call H5Aget_name function
+ * Convert FORTRAN name to C name
+ */
+ if((c_attr_name = HD5f2cstring(attr_name, (size_t)*attr_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+ /*
+ * Call H5Aopen function.
*/
- if ((ret_value = (int_f)H5Aget_name((hid_t)*attr_id, (size_t)*bufsize, c_buf)) < 0)
- HGOTO_DONE(FAIL);
+
+ if((*attr_id = (hid_t_f)H5Aopen((hid_t)*obj_id, c_attr_name, (hid_t)*aapl_id)) < 0)
+ HGOTO_DONE(FAIL);
+
+done:
+ if(c_attr_name)
+ HDfree(c_attr_name);
+ return ret_value;
+}
+/*----------------------------------------------------------------------------
+ * Name: h5adelete_by_name_c
+ * Purpose: Call h5adelete_by_name to remove an attribute from a specified location
+ * Inputs: loc_id - identifer for object to which attribute is attached
+ * obj_name - object identifier
+ * obj_namelen - name length
+ * attr_name - name of the attribute
+ * attr_namelen - name length
+ * lapl_id - link access property list
+ *
+ * Outputs: N/A
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * January, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+int_f
+nh5adelete_by_name_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, _fcd attr_name, size_t_f *attr_namelen, hid_t_f *lapl_id)
+{
+ char *c_obj_name = NULL; /* Buffer to hold C string */
+ char *c_attr_name = NULL; /* Buffer to hold C string */
+ int_f ret_value = 0; /* Return value */
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_obj_name = HD5f2cstring(obj_name, (size_t)*obj_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+ if((c_attr_name = HD5f2cstring(attr_name, (size_t)*attr_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Call H5Adelete_by_name function.
+ */
+ if(H5Adelete_by_name((hid_t)*loc_id, c_obj_name, c_attr_name, (hid_t)*lapl_id) < 0)
+ HGOTO_DONE(FAIL);
+
+done:
+ if(c_attr_name)
+ HDfree(c_attr_name);
+ if(c_obj_name)
+ HDfree(c_obj_name);
+ return ret_value;
+}
+/*----------------------------------------------------------------------------
+ * Name: h5adelete_by_idx_c
+ * Purpose: Call h5adelete_by_idx
+ * Inputs: loc_id - Location or object identifier; may be dataset or group
+ * obj_name - object identifier
+ * obj_namelen - name length
+ * attr_name - name of the attribute
+ * attr_namelen - name length
+ * lapl_id - link access property list
+ *
+ * Outputs: N/A
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * January, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+int_f
+nh5adelete_by_idx_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen,
+ int_f *idx_type, int_f *order, size_t_f *n, hid_t_f *lapl_id)
+{
+ char *c_obj_name = NULL; /* Buffer to hold C string */
+ H5_index_t c_idx_type;
+ H5_iter_order_t c_order;
+ int_f ret_value = 0; /* Return value */
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_obj_name = HD5f2cstring(obj_name, (size_t)*obj_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ c_idx_type = (H5_index_t)*idx_type;
+ c_order = (H5_iter_order_t)*order;
+
+ /*
+ * Call H5Adelete_by_name function.
+ */
+
+ if(H5Adelete_by_idx((hid_t)*loc_id, c_obj_name, c_idx_type, c_order, (hsize_t)*n, (hid_t)*lapl_id) < 0)
+ HGOTO_DONE(FAIL);
+
+
+done:
+ if(c_obj_name)
+ HDfree(c_obj_name);
+ return ret_value;
+}
+/*----------------------------------------------------------------------------
+ * Name: h5aget_name_by_idx_c
+ * Purpose: Call h5aget_name_by_idx
+ * Inputs:
+ *
+ * loc_id - Identifer for object to which attribute is attached
+ * obj_name - Name of object, relative to location,
+ * from which attribute is to be removed *TEST* check NULL
+ * idx_type - Type of index; Possible values are:
+ * H5_INDEX_UNKNOWN - Unknown index type
+ * H5_INDEX_NAME - Index on names
+ * H5_INDEX_CRT_ORDER - Index on creation order
+ * H5_INDEX_N - Number of indices defined
+ *
+ * order - Order in which to iterate over index; Possible values are:
+ * H5_ITER_UNKNOWN - Unknown order
+ * H5_ITER_INC - Increasing order
+ * H5_ITER_DEC - Decreasing order
+ * H5_ITER_NATIVE - No particular order, whatever is fastest
+ * H5_ITER_N - Number of iteration orders
+ *
+ * n - Attribute’s position in index
+ * attr_id - Attribute identifier
+ * size - Buffer size ! *TEST* check for 0 value *CHECK* should this return the correct value
+ *
+ * lapl_id - Link access property list
+ * hdferr - Error code:
+ * Returns attribute name size, -1 if fail
+ *
+ * Outputs: name - Attribute name
+ *
+ * Returns: Size of buffer on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * January, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+int_f
+nh5aget_name_by_idx_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen,
+ int_f *idx_type, int_f *order, size_t_f *n, _fcd name,
+ size_t_f *size, hid_t_f *lapl_id)
+{
+ char *c_obj_name = NULL; /* Buffer to hold C string */
+ H5_index_t c_idx_type;
+ H5_iter_order_t c_order;
+ int_f ret_value = -1; /* Return value */
+ ssize_t c_size;
+ size_t c_buf_size;
+ char *c_buf =NULL;
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_obj_name = HD5f2cstring(obj_name, (size_t)*obj_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ c_idx_type = (H5_index_t)*idx_type;
+ c_order = (H5_iter_order_t)*order;
+
+ /*
+ * Allocate buffer to hold name of an attribute
+ */
+ c_buf_size = (size_t)*size + 1;
+ c_buf = (char *)HDmalloc(c_buf_size);
+ if (c_buf == NULL) return ret_value;
+
+ /*
+ * Call H5Aget_name_by_idx function.
+ */
+ c_size = H5Aget_name_by_idx((hid_t)*loc_id, c_obj_name, c_idx_type, c_order, (hsize_t)*n, c_buf, c_buf_size,(hid_t)*lapl_id);
+
+/* printf( "In C routine, The attr name is %s %i \n ", c_buf, c_buf_size ); */
+/* printf( "In C routine, The c_size is %i \n ", c_size ); */
+
+ if (c_size < 0) goto done;
/*
* Convert C name to FORTRAN and place it in the given buffer
*/
- HD5packFstring(c_buf, _fcdtocp(buf), (size_t)*bufsize);
+ HD5packFstring(c_buf, _fcdtocp(name), c_buf_size);
+ *size = (size_t_f)c_size;
+ ret_value = 0;
+
+done:
+ if(c_obj_name)
+ HDfree(c_obj_name);
+ HDfree(c_buf);
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5aopen_by_idx_c
+ * Purpose: Call H5Aopen_by_idx
+ * Inputs: loc_id - Object identifier
+ * obj_name - Name of object to which attribute is attached
+ * obj_namelen - name length
+ * idx_type - Type of index; Possible values are:
+ * H5_INDEX_UNKNOWN - Unknown index type
+ * H5_INDEX_NAME - Index on names
+ * H5_INDEX_CRT_ORDER - Index on creation order
+ * H5_INDEX_N - Number of indices defined
+ *
+ * order - Order in which to iterate over index; Possible values are:
+ * H5_ITER_UNKNOWN - Unknown order
+ * H5_ITER_INC - Increasing order
+ * H5_ITER_DEC - Decreasing order
+ * H5_ITER_NATIVE - No particular order, whatever is fastest
+ * H5_ITER_N - Number of iteration orders
+ *
+ * n - Attribute’s position in index
+ * aapl_id - Attribute access property list
+ * lapl_id - Link access property list
+ * Outputs: attr_id - attribute identifer
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * January, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+int_f
+nh5aopen_by_idx_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen,
+ int_f *idx_type, int_f *order, size_t_f *n, hid_t_f *aapl_id, hid_t_f *lapl_id, hid_t_f *attr_id )
+{
+ char *c_obj_name = NULL; /* Buffer to hold C string */
+ H5_index_t c_idx_type;
+ H5_iter_order_t c_order;
+ int_f ret_value = 0; /* Return value */
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_obj_name = HD5f2cstring(obj_name, (size_t)*obj_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ c_idx_type = (H5_index_t)*idx_type;
+ c_order = (H5_iter_order_t)*order;
+
+ /*
+ * Call H5Aopen_by_idx function.
+ */
+ if((*attr_id = (hid_t_f)H5Aopen_by_idx((hid_t)*loc_id, c_obj_name, c_idx_type, c_order, (hsize_t)*n, (hid_t)*aapl_id, (hid_t)*lapl_id)) < 0)
+ HGOTO_DONE(FAIL);
+done:
+ if(c_obj_name)
+ HDfree(c_obj_name);
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5aget_info_c
+ * Purpose: Call H5Aget_info
+ * Inputs: loc_id - Object identifier
+ * Outputs:
+ * corder_valid - Indicates whether the the creation order data is valid for this attribute
+ * corder - Is a positive integer containing the creation order of the attribute
+ * cset - Indicates the character set used for the attribute’s name
+ * data_size - indicates the size, in the number of characters, of the attribute
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * January, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+int_f
+nh5aget_info_c (hid_t_f *loc_id, int_f *corder_valid, int_f *corder,
+ int_f *cset, hsize_t_f *data_size )
+{
+
+ int_f ret_value = 0; /* Return value */
+ H5A_info_t ainfo;
+
+
+ /*
+ * Call H5Aget_info function.
+ */
+ if(H5Aget_info((hid_t)*loc_id,&ainfo) < 0)
+ HGOTO_DONE(FAIL);
+
+ /* Unpack the structure */
+
+ *corder_valid = 0;
+ if(ainfo.corder_valid > 0) *corder_valid = 1;
+
+ *corder = (int_f)ainfo.corder;
+ *cset = (int_f)ainfo.cset;
+ *data_size = (hsize_t)ainfo.data_size;
+
+done:
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5aget_info_by_idx_c
+ * Purpose: Call H5Aget_info_by_idx
+ * Inputs: loc_id - Object identifier
+ * obj_name - Name of object to which attribute is attached
+ * obj_namelen - name length
+ * idx_type - Type of index; Possible values are:
+ * H5_INDEX_UNKNOWN - Unknown index type
+ * H5_INDEX_NAME - Index on names
+ * H5_INDEX_CRT_ORDER - Index on creation order
+ * H5_INDEX_N - Number of indices defined
+ *
+ * order - Order in which to iterate over index; Possible values are:
+ * H5_ITER_UNKNOWN - Unknown order
+ * H5_ITER_INC - Increasing order
+ * H5_ITER_DEC - Decreasing order
+ * H5_ITER_NATIVE - No particular order, whatever is fastest
+ * H5_ITER_N - Number of iteration orders
+ *
+ * n - Attribute’s position in index
+ * lapl_id - Link access property list
+ * Outputs:
+ * corder_valid - Indicates whether the the creation order data is valid for this attribute
+ * corder - Is a positive integer containing the creation order of the attribute
+ * cset - Indicates the character set used for the attribute’s name
+ * data_size - indicates the size, in the number of characters, of the attribute
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * January, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+int_f
+nh5aget_info_by_idx_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen,
+ int_f *idx_type, int_f *order, size_t_f *n, hid_t_f *lapl_id,
+ int_f *corder_valid, int_f *corder,
+ int_f *cset, hsize_t_f *data_size )
+{
+ char *c_obj_name = NULL; /* Buffer to hold C string */
+ H5_index_t c_idx_type;
+ H5_iter_order_t c_order;
+ int_f ret_value = 0; /* Return value */
+ H5A_info_t ainfo;
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_obj_name = HD5f2cstring(obj_name, (size_t)*obj_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ c_idx_type = (H5_index_t)*idx_type;
+ c_order = (H5_iter_order_t)*order;
+ /*
+ * Call H5Ainfo_by_idx function.
+ */
+ if(H5Aget_info_by_idx((hid_t)*loc_id, c_obj_name, c_idx_type, c_order, (hsize_t)*n,
+ &ainfo, (hid_t)*lapl_id) < 0)
+ HGOTO_DONE(FAIL);
+
+ /* Unpack the structure */
+
+ *corder_valid = 0;
+ if(ainfo.corder_valid > 0) *corder_valid = 1;
+
+ *corder = (int_f)ainfo.corder;
+ *cset = (int_f)ainfo.cset;
+ *data_size = (hsize_t)ainfo.data_size;
+
+done:
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5aget_info_by_name_c
+ * Purpose: Call H5Aget_info_by_name
+ * Inputs: loc_id - Object identifier
+ * obj_name - Name of object to which attribute is attached
+ * obj_namelen - name length
+ * attr_name - Attribute name
+ * attr_namelen - attribute name length
+ * lapl_id - Link access property list
+ * Outputs:
+ * corder_valid - Indicates whether the the creation order data is valid for this attribute
+ * corder - Is a positive integer containing the creation order of the attribute
+ * cset - Indicates the character set used for the attribute’s name
+ * data_size - indicates the size, in the number of characters, of the attribute
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * January, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+int_f
+nh5aget_info_by_name_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen,
+ _fcd attr_name, size_t_f *attr_namelen, hid_t_f *lapl_id,
+ int_f *corder_valid, int_f *corder,
+ int_f *cset, hsize_t_f *data_size )
+{
+ char *c_obj_name = NULL; /* Buffer to hold C string */
+ char *c_attr_name = NULL; /* Buffer to hold C string */
+ int_f ret_value = 0; /* Return value */
+ H5A_info_t ainfo;
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_obj_name = HD5f2cstring(obj_name, (size_t)*obj_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+ if((c_attr_name = HD5f2cstring(attr_name, (size_t)*attr_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Call H5Ainfo_by_name function.
+ */
+ if(H5Aget_info_by_name((hid_t)*loc_id, c_obj_name, c_attr_name,
+ &ainfo, (hid_t)*lapl_id) < 0)
+ HGOTO_DONE(FAIL);
+
+ /* Unpack the structure */
+
+ *corder_valid = 0;
+ if(ainfo.corder_valid > 0) *corder_valid = 1;
+
+ *corder = (int_f)ainfo.corder;
+ *cset = (int_f)ainfo.cset;
+ *data_size = (hsize_t)ainfo.data_size;
+
+done:
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5acreate_by_name_c
+ * Purpose: Call h5acreate_by_name
+
+ * Inputs:
+ * loc_id - Object identifier
+ * obj_name - Name of object to which attribute is attached
+ * obj_namelen - name length
+ * attr_name - Attribute name
+ * attr_namelen - attribute name length
+ * type_id - Attribute datatype identifier
+ * space_id - Attribute dataspace identifier
+ * acpl_id - Attribute creation property list identifier (Currently not used.)
+ * aapl_id - Attribute access property list identifier (Currently not used.)
+ * lapl_id - Link access property list
+ *
+ * Outputs:
+ * attr - an attribute identifier
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+int_f
+nh5acreate_by_name_c(hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen,
+ _fcd attr_name, size_t_f *attr_namelen, hid_t_f *type_id,
+ hid_t_f *space_id, hid_t_f *acpl_id, hid_t_f *aapl_id,
+ hid_t_f *lapl_id, hid_t_f *attr_id )
+{
+ char *c_obj_name = NULL; /* Buffer to hold C string */
+ char *c_attr_name = NULL; /* Buffer to hold C string */
+ int_f ret_value = 0; /* Return value */
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_obj_name = HD5f2cstring(obj_name, (size_t)*obj_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+ if((c_attr_name = HD5f2cstring(attr_name, (size_t)*attr_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Call H5Acreate_by_name function.
+ */
+ if((*attr_id = (hid_t_f)H5Acreate_by_name((hid_t)*loc_id, c_obj_name, c_attr_name,
+ (hid_t)*type_id, (hid_t)*space_id,(hid_t)*acpl_id,(hid_t)*aapl_id,(hid_t)*lapl_id )) < 0)
+ HGOTO_DONE(FAIL);
+
+done:
+ if(c_obj_name)
+ HDfree(c_obj_name);
+ if(c_attr_name)
+ HDfree(c_attr_name);
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5aexists_c
+ * Purpose: CAll h5aexists
+ * Inputs:
+ * obj_id - Object identifier
+ * attr_name - Attribute name
+ * Outputs:
+ * attr_exists_c - returns a positive value, for TRUE, or 0 (zero), for FALSE.
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5aexists_c (hid_t_f *obj_id, _fcd name, size_t_f *namelen, hid_t_f *attr_exists)
+{
+ char *c_name = NULL; /* Buffer to hold C string */
+ int_f ret_value = 0; /* Return value */
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_name = HD5f2cstring(name, (size_t)*namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Call H5Aexists function.
+ */
+ if((*attr_exists = (hid_t_f)H5Aexists((hid_t)*obj_id, c_name)) < 0)
+ HGOTO_DONE(FAIL);
+
+done:
+ if(c_name)
+ HDfree(c_name);
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5aexists_by_name_c
+ * Purpose: CAll H5Aexists_by_name
+ * Inputs:
+ * loc_id - Location identifier
+ * obj_name - Object name either relative to loc_id, absolute from the file’s root group, or '.' (a dot)
+ * attr_name - Attribute name
+ * lapl_id - Link access property list identifier
+ * Outputs:
+ * attr_exists_c - returns a positive value, for TRUE, or 0 (zero), for FALSE.
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5aexists_by_name_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, _fcd attr_name, size_t_f *attr_namelen,
+ hid_t_f *lapl_id, hid_t_f *attr_exists)
+{
+ char *c_obj_name = NULL; /* Buffer to hold object name C string */
+ char *c_attr_name = NULL; /* Buffer to hold attribute name C string */
+ int_f ret_value = 0; /* Return value */
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_obj_name = HD5f2cstring(obj_name, (size_t)*obj_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+ if((c_attr_name = HD5f2cstring(attr_name, (size_t)*attr_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Call H5Aexists_by_name function.
+ */
+ if((*attr_exists = (hid_t_f)H5Aexists_by_name((hid_t)*loc_id, c_obj_name, c_attr_name, (hid_t)*lapl_id)) < 0)
+ HGOTO_DONE(FAIL);
+
+done:
+ if(c_obj_name)
+ HDfree(c_obj_name);
+ if(c_attr_name)
+ HDfree(c_attr_name);
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5aopen_by_name_c
+ * Purpose: Call H5Aopen_by_name
+ * Inputs:
+ * loc_id - Location identifier
+ * obj_name - Object name either relative to loc_id, absolute from the file’s root group, or '.' (a dot)
+ * attr_name - Attribute name
+ * aapl_id - Attribute access property list (Currently unused; should be passed in as H5P_DEFAULT.)
+ * lapl_id - Link access property list identifier
+ * Outputs:
+ * attr_id - attribute identifier
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5aopen_by_name_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, _fcd attr_name, size_t_f *attr_namelen,
+ hid_t_f *aapl_id, hid_t_f *lapl_id, hid_t_f *attr_id)
+{
+ char *c_obj_name = NULL; /* Buffer to hold object name C string */
+ char *c_attr_name = NULL; /* Buffer to hold attribute name C string */
+ int_f ret_value = 0; /* Return value */
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_obj_name = HD5f2cstring(obj_name, (size_t)*obj_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+ if((c_attr_name = HD5f2cstring(attr_name, (size_t)*attr_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Call H5Aopen function.
+ */
+ if((*attr_id = (hid_t_f)H5Aopen_by_name((hid_t)*loc_id, c_obj_name, c_attr_name, (hid_t)*aapl_id, (hid_t)*lapl_id)) < 0)
+ HGOTO_DONE(FAIL);
+
+ done:
+ if(c_obj_name)
+ HDfree(c_obj_name);
+ if(c_attr_name)
+ HDfree(c_attr_name);
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5arename_c
+ * Purpose: Calls H5Arename
+ * Inputs: loc_id - Object identifier
+ * old_attr_name - Prior attribute name
+ * old_attr_name_len - Prior attribute name length
+ * new_attr_name - New attribute name
+ * new_attr_name_len - New attribute name length
+ * Outputs: N/A
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M. S. Breitenfeld
+ * January, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5arename_c( hid_t_f *loc_id,
+ _fcd old_attr_name, size_t_f *old_attr_namelen,
+ _fcd new_attr_name, size_t_f *new_attr_namelen)
+{
+ char *c_old_attr_name = NULL; /* Buffer to hold C string */
+ char *c_new_attr_name = NULL; /* Buffer to hold C string */
+ int_f ret_value=0; /* Return value */
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_old_attr_name = HD5f2cstring(old_attr_name, (size_t)*old_attr_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+ if((c_new_attr_name = HD5f2cstring(new_attr_name, (size_t)*new_attr_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ if(H5Arename((hid_t)*loc_id,c_old_attr_name,c_new_attr_name) < 0)
+ HGOTO_DONE(FAIL);
done:
- if(c_buf) HDfree(c_buf);
- return ret_value;
+ if(c_old_attr_name)
+ HDfree(c_old_attr_name);
+ if(c_new_attr_name)
+ HDfree(c_new_attr_name);
+ return ret_value;
}
diff --git a/fortran/src/H5Aff.f90 b/fortran/src/H5Aff.f90
index d6f1b6f..f9e5882 100644
--- a/fortran/src/H5Aff.f90
+++ b/fortran/src/H5Aff.f90
@@ -16,96 +16,94 @@
!
! This file contains Fortran90 interfaces for H5A functions.
!
- MODULE H5A
+MODULE H5A
- USE H5GLOBAL
+ USE H5GLOBAL
!
!On Windows there are no big (integer*8) integers, so overloading
!for bug #670 does not work. I have to use DEC compilation directives to make
!Windows DEC Visual Fortran and OSF compilers happy and do right things.
! 05/01/02 EP
-
-!
- INTERFACE h5awrite_f
-
- MODULE PROCEDURE h5awrite_integer_scalar
- MODULE PROCEDURE h5awrite_integer_1
- MODULE PROCEDURE h5awrite_integer_2
- MODULE PROCEDURE h5awrite_integer_3
- MODULE PROCEDURE h5awrite_integer_4
- MODULE PROCEDURE h5awrite_integer_5
- MODULE PROCEDURE h5awrite_integer_6
- MODULE PROCEDURE h5awrite_integer_7
- MODULE PROCEDURE h5awrite_char_scalar
- MODULE PROCEDURE h5awrite_char_1
- MODULE PROCEDURE h5awrite_char_2
- MODULE PROCEDURE h5awrite_char_3
- MODULE PROCEDURE h5awrite_char_4
- MODULE PROCEDURE h5awrite_char_5
- MODULE PROCEDURE h5awrite_char_6
- MODULE PROCEDURE h5awrite_char_7
- MODULE PROCEDURE h5awrite_real_scalar
- MODULE PROCEDURE h5awrite_real_1
- MODULE PROCEDURE h5awrite_real_2
- MODULE PROCEDURE h5awrite_real_3
- MODULE PROCEDURE h5awrite_real_4
- MODULE PROCEDURE h5awrite_real_5
- MODULE PROCEDURE h5awrite_real_6
- MODULE PROCEDURE h5awrite_real_7
+!
+ INTERFACE h5awrite_f
+
+ MODULE PROCEDURE h5awrite_integer_scalar
+ MODULE PROCEDURE h5awrite_integer_1
+ MODULE PROCEDURE h5awrite_integer_2
+ MODULE PROCEDURE h5awrite_integer_3
+ MODULE PROCEDURE h5awrite_integer_4
+ MODULE PROCEDURE h5awrite_integer_5
+ MODULE PROCEDURE h5awrite_integer_6
+ MODULE PROCEDURE h5awrite_integer_7
+ MODULE PROCEDURE h5awrite_char_scalar
+ MODULE PROCEDURE h5awrite_char_1
+ MODULE PROCEDURE h5awrite_char_2
+ MODULE PROCEDURE h5awrite_char_3
+ MODULE PROCEDURE h5awrite_char_4
+ MODULE PROCEDURE h5awrite_char_5
+ MODULE PROCEDURE h5awrite_char_6
+ MODULE PROCEDURE h5awrite_char_7
+ MODULE PROCEDURE h5awrite_real_scalar
+ MODULE PROCEDURE h5awrite_real_1
+ MODULE PROCEDURE h5awrite_real_2
+ MODULE PROCEDURE h5awrite_real_3
+ MODULE PROCEDURE h5awrite_real_4
+ MODULE PROCEDURE h5awrite_real_5
+ MODULE PROCEDURE h5awrite_real_6
+ MODULE PROCEDURE h5awrite_real_7
! Comment if on Crays
- MODULE PROCEDURE h5awrite_double_scalar
- MODULE PROCEDURE h5awrite_double_1
- MODULE PROCEDURE h5awrite_double_2
- MODULE PROCEDURE h5awrite_double_3
- MODULE PROCEDURE h5awrite_double_4
- MODULE PROCEDURE h5awrite_double_5
- MODULE PROCEDURE h5awrite_double_6
- MODULE PROCEDURE h5awrite_double_7
+ MODULE PROCEDURE h5awrite_double_scalar
+ MODULE PROCEDURE h5awrite_double_1
+ MODULE PROCEDURE h5awrite_double_2
+ MODULE PROCEDURE h5awrite_double_3
+ MODULE PROCEDURE h5awrite_double_4
+ MODULE PROCEDURE h5awrite_double_5
+ MODULE PROCEDURE h5awrite_double_6
+ MODULE PROCEDURE h5awrite_double_7
! End commnet if on Crays
-
- END INTERFACE
-
- INTERFACE h5aread_f
-
- MODULE PROCEDURE h5aread_integer_scalar
- MODULE PROCEDURE h5aread_integer_1
- MODULE PROCEDURE h5aread_integer_2
- MODULE PROCEDURE h5aread_integer_3
- MODULE PROCEDURE h5aread_integer_4
- MODULE PROCEDURE h5aread_integer_5
- MODULE PROCEDURE h5aread_integer_6
- MODULE PROCEDURE h5aread_integer_7
- MODULE PROCEDURE h5aread_char_scalar
- MODULE PROCEDURE h5aread_char_1
- MODULE PROCEDURE h5aread_char_2
- MODULE PROCEDURE h5aread_char_3
- MODULE PROCEDURE h5aread_char_4
- MODULE PROCEDURE h5aread_char_5
- MODULE PROCEDURE h5aread_char_6
- MODULE PROCEDURE h5aread_char_7
- MODULE PROCEDURE h5aread_real_scalar
- MODULE PROCEDURE h5aread_real_1
- MODULE PROCEDURE h5aread_real_2
- MODULE PROCEDURE h5aread_real_3
- MODULE PROCEDURE h5aread_real_4
- MODULE PROCEDURE h5aread_real_5
- MODULE PROCEDURE h5aread_real_6
- MODULE PROCEDURE h5aread_real_7
+ END INTERFACE
+
+ INTERFACE h5aread_f
+
+ MODULE PROCEDURE h5aread_integer_scalar
+ MODULE PROCEDURE h5aread_integer_1
+ MODULE PROCEDURE h5aread_integer_2
+ MODULE PROCEDURE h5aread_integer_3
+ MODULE PROCEDURE h5aread_integer_4
+ MODULE PROCEDURE h5aread_integer_5
+ MODULE PROCEDURE h5aread_integer_6
+ MODULE PROCEDURE h5aread_integer_7
+ MODULE PROCEDURE h5aread_char_scalar
+ MODULE PROCEDURE h5aread_char_1
+ MODULE PROCEDURE h5aread_char_2
+ MODULE PROCEDURE h5aread_char_3
+ MODULE PROCEDURE h5aread_char_4
+ MODULE PROCEDURE h5aread_char_5
+ MODULE PROCEDURE h5aread_char_6
+ MODULE PROCEDURE h5aread_char_7
+ MODULE PROCEDURE h5aread_real_scalar
+ MODULE PROCEDURE h5aread_real_1
+ MODULE PROCEDURE h5aread_real_2
+ MODULE PROCEDURE h5aread_real_3
+ MODULE PROCEDURE h5aread_real_4
+ MODULE PROCEDURE h5aread_real_5
+ MODULE PROCEDURE h5aread_real_6
+ MODULE PROCEDURE h5aread_real_7
! Comment if on Crays
- MODULE PROCEDURE h5aread_double_scalar
- MODULE PROCEDURE h5aread_double_1
- MODULE PROCEDURE h5aread_double_2
- MODULE PROCEDURE h5aread_double_3
- MODULE PROCEDURE h5aread_double_4
- MODULE PROCEDURE h5aread_double_5
- MODULE PROCEDURE h5aread_double_6
- MODULE PROCEDURE h5aread_double_7
+ MODULE PROCEDURE h5aread_double_scalar
+ MODULE PROCEDURE h5aread_double_1
+ MODULE PROCEDURE h5aread_double_2
+ MODULE PROCEDURE h5aread_double_3
+ MODULE PROCEDURE h5aread_double_4
+ MODULE PROCEDURE h5aread_double_5
+ MODULE PROCEDURE h5aread_double_6
+ MODULE PROCEDURE h5aread_double_7
! End commnet if on Crays
!
- END INTERFACE
-
- CONTAINS
+ END INTERFACE
+
+CONTAINS
!----------------------------------------------------------------------
! Name: h5acreate_f
@@ -114,7 +112,7 @@
! or named datatype
!
! Inputs:
-! obj_id - identifier of an object (group, dataset,
+! loc_id - identifier of an object (group, dataset,
! or named datatype) attribute is attached to
! name - attribute name
! type_id - attribute datatype identifier
@@ -126,7 +124,8 @@
! Success: 0
! Failure: -1
! Optional parameters:
-! creation_prp - creation property list identifier
+! acpl_id - Attribute creation property list identifier
+! appl_id - Attribute access property list identifier
!
! Programmer: Elena Pourmal
! August 12, 1999
@@ -136,53 +135,60 @@
! port). February 27, 2001
!
!----------------------------------------------------------------------
- SUBROUTINE h5acreate_f(obj_id, name, type_id, space_id, attr_id, &
- hdferr, creation_prp)
+ SUBROUTINE h5acreate_f(loc_id, name, type_id, space_id, attr_id, &
+ hdferr, acpl_id, aapl_id )
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5acreate_f
!DEC$endif
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Attribute name
- INTEGER(HID_T), INTENT(IN) :: type_id
- ! Attribute datatype identifier
- INTEGER(HID_T), INTENT(IN) :: space_id
- ! Attribute dataspace identifier
- INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- INTEGER(HID_T), OPTIONAL, INTENT(IN) :: creation_prp
- ! Attribute creation property
- ! list identifier
- INTEGER(HID_T) :: creation_prp_default
- INTEGER(SIZE_T) :: namelen
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! Object identifier
+ CHARACTER(LEN=*), INTENT(IN) :: name ! Attribute name
+ INTEGER(HID_T), INTENT(IN) :: type_id
+ ! Attribute datatype identifier
+ INTEGER(HID_T), INTENT(IN) :: space_id
+ ! Attribute dataspace identifier
+ INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: acpl_id ! Attribute creation property list identifier
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: aapl_id ! Attribute access property list identifier
+
+ INTEGER(HID_T) :: acpl_id_default
+ INTEGER(HID_T) :: aapl_id_default
+ INTEGER(SIZE_T) :: namelen
! INTEGER, EXTERNAL :: h5acreate_c
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5acreate_c(obj_id, name, namelen, type_id, &
- space_id, creation_prp_default, attr_id)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5ACREATE_C'::h5acreate_c
- !DEC$ ENDIF
- !DEC$ATTRIBUTES reference :: name
- INTEGER(HID_T), INTENT(IN) :: obj_id
- CHARACTER(LEN=*), INTENT(IN) :: name
- INTEGER(SIZE_T) :: namelen
- INTEGER(HID_T), INTENT(IN) :: type_id
- INTEGER(HID_T), INTENT(IN) :: space_id
- INTEGER(HID_T) :: creation_prp_default
- INTEGER(HID_T), INTENT(OUT) :: attr_id
- END FUNCTION h5acreate_c
- END INTERFACE
-
- creation_prp_default = H5P_DEFAULT_F
- namelen = LEN(NAME)
- if (present(creation_prp)) creation_prp_default = creation_prp
- hdferr = h5acreate_c(obj_id, name, namelen, type_id, space_id, &
- creation_prp_default, attr_id)
- END SUBROUTINE h5acreate_f
+ INTERFACE
+ INTEGER FUNCTION h5acreate_c(loc_id, name, namelen, type_id, &
+ space_id, acpl_id_default, aapl_id_default, attr_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5ACREATE_C'::h5acreate_c
+ !DEC$ ENDIF
+ !DEC$ATTRIBUTES reference :: name
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: name
+ INTEGER(SIZE_T) :: namelen
+ INTEGER(HID_T), INTENT(IN) :: type_id
+ INTEGER(HID_T), INTENT(IN) :: space_id
+ INTEGER(HID_T) :: acpl_id_default
+ INTEGER(HID_T) :: aapl_id_default
+ INTEGER(HID_T), INTENT(OUT) :: attr_id
+ END FUNCTION h5acreate_c
+ END INTERFACE
+
+ acpl_id_default = H5P_DEFAULT_F
+ aapl_id_default = H5P_DEFAULT_F
+ namelen = LEN(NAME)
+ IF (PRESENT(acpl_id)) acpl_id_default = acpl_id
+ IF (PRESENT(aapl_id)) aapl_id_default = aapl_id
+
+ hdferr = h5acreate_c(loc_id, name, namelen, type_id, space_id, &
+ acpl_id_default, aapl_id_default, attr_id)
+
+ END SUBROUTINE h5acreate_f
!----------------------------------------------------------------------
@@ -211,38 +217,38 @@
!
!----------------------------------------------------------------------
- SUBROUTINE h5aopen_name_f(obj_id, name, attr_id, hdferr)
+ SUBROUTINE h5aopen_name_f(obj_id, name, attr_id, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5aopen_name_f
!DEC$endif
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Attribute name
- INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- INTEGER(SIZE_T) :: namelen
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
+ CHARACTER(LEN=*), INTENT(IN) :: name ! Attribute name
+ INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER(SIZE_T) :: namelen
! INTEGER, EXTERNAL :: h5aopen_name_c
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5aopen_name_c(obj_id, name, namelen, attr_id)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AOPEN_NAME_C'::h5aopen_name_c
- !DEC$ ENDIF
- !DEC$ATTRIBUTES reference :: name
- INTEGER(HID_T), INTENT(IN) :: obj_id
- CHARACTER(LEN=*), INTENT(IN) :: name
- INTEGER(SIZE_T) :: namelen
- INTEGER(HID_T), INTENT(OUT) :: attr_id
- END FUNCTION h5aopen_name_c
- END INTERFACE
-
- namelen = LEN(name)
- hdferr = h5aopen_name_c(obj_id, name, namelen, attr_id)
- END SUBROUTINE h5aopen_name_f
+ INTERFACE
+ INTEGER FUNCTION h5aopen_name_c(obj_id, name, namelen, attr_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AOPEN_NAME_C'::h5aopen_name_c
+ !DEC$ ENDIF
+ !DEC$ATTRIBUTES reference :: name
+ INTEGER(HID_T), INTENT(IN) :: obj_id
+ CHARACTER(LEN=*), INTENT(IN) :: name
+ INTEGER(SIZE_T) :: namelen
+ INTEGER(HID_T), INTENT(OUT) :: attr_id
+ END FUNCTION h5aopen_name_c
+ END INTERFACE
+
+ namelen = LEN(name)
+ hdferr = h5aopen_name_c(obj_id, name, namelen, attr_id)
+ END SUBROUTINE h5aopen_name_f
!----------------------------------------------------------------------
@@ -271,386 +277,380 @@
!
!----------------------------------------------------------------------
- SUBROUTINE h5aopen_idx_f(obj_id, index, attr_id, hdferr)
+ SUBROUTINE h5aopen_idx_f(obj_id, index, attr_id, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5aopen_idx_f
!DEC$endif
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
- INTEGER, INTENT(IN) :: index ! Attribute index
- INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
+ INTEGER, INTENT(IN) :: index ! Attribute index
+ INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
! INTEGER, EXTERNAL :: h5aopen_idx_c
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5aopen_idx_c(obj_id, index, attr_id)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AOPEN_IDX_C'::h5aopen_idx_c
- !DEC$ ENDIF
- INTEGER(HID_T), INTENT(IN) :: obj_id
- INTEGER, INTENT(IN) :: index
- INTEGER(HID_T), INTENT(OUT) :: attr_id
- END FUNCTION h5aopen_idx_c
- END INTERFACE
-
- hdferr = h5aopen_idx_c(obj_id, index, attr_id)
- END SUBROUTINE h5aopen_idx_f
-
-
- SUBROUTINE h5awrite_integer_scalar(attr_id, memtype_id, buf, dims, hdferr)
+ INTERFACE
+ INTEGER FUNCTION h5aopen_idx_c(obj_id, index, attr_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AOPEN_IDX_C'::h5aopen_idx_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: obj_id
+ INTEGER, INTENT(IN) :: index
+ INTEGER(HID_T), INTENT(OUT) :: attr_id
+ END FUNCTION h5aopen_idx_c
+ END INTERFACE
+
+ hdferr = h5aopen_idx_c(obj_id, index, attr_id)
+ END SUBROUTINE h5aopen_idx_f
+
+
+ SUBROUTINE h5awrite_integer_scalar(attr_id, memtype_id, buf, dims, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5awrite_integer_scalar
!DEC$endif
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
- INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
- ! identifier (in memory)
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER, INTENT(IN) :: buf ! Attribute data
- INTEGER, INTENT(OUT) :: hdferr ! Error code
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
+ INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
+ ! identifier (in memory)
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
+ INTEGER, INTENT(IN) :: buf ! Attribute data
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
! INTEGER, EXTERNAL :: h5awrite_integer_s_c
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5awrite_integer_s_c(attr_id, memtype_id, buf, dims)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_S_C'::h5awrite_integer_s_c
- !DEC$ ENDIF
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER(HID_T), INTENT(IN) :: attr_id
- INTEGER(HID_T), INTENT(IN) :: memtype_id
- INTEGER, INTENT(IN)::buf
- END FUNCTION h5awrite_integer_s_c
- END INTERFACE
-
- hdferr = h5awrite_integer_s_c(attr_id, memtype_id, buf, dims)
- END SUBROUTINE h5awrite_integer_scalar
-
- SUBROUTINE h5awrite_integer_1(attr_id, memtype_id, buf, dims, hdferr)
+ INTERFACE
+ INTEGER FUNCTION h5awrite_integer_s_c(attr_id, memtype_id, buf, dims)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_S_C'::h5awrite_integer_s_c
+ !DEC$ ENDIF
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
+ INTEGER(HID_T), INTENT(IN) :: attr_id
+ INTEGER(HID_T), INTENT(IN) :: memtype_id
+ INTEGER, INTENT(IN)::buf
+ END FUNCTION h5awrite_integer_s_c
+ END INTERFACE
+
+ hdferr = h5awrite_integer_s_c(attr_id, memtype_id, buf, dims)
+ END SUBROUTINE h5awrite_integer_scalar
+
+ SUBROUTINE h5awrite_integer_1(attr_id, memtype_id, buf, dims, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5awrite_integer_1
!DEC$endif
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
- INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
- ! identifier (in memory)
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER, INTENT(IN) , &
- DIMENSION(dims(1)) :: buf
- ! Attribute data
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
+ INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
+ ! identifier (in memory)
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
+ INTEGER, INTENT(IN) , &
+ DIMENSION(dims(1)) :: buf
+ ! Attribute data
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
! INTEGER, EXTERNAL :: h5awrite_integer_1_c
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5awrite_integer_1_c(attr_id, memtype_id, buf, dims)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_1_C'::h5awrite_integer_1_c
- !DEC$ ENDIF
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER(HID_T), INTENT(IN) :: attr_id
- INTEGER(HID_T), INTENT(IN) :: memtype_id
- INTEGER, INTENT(IN), &
- DIMENSION(dims(1)) :: buf
- END FUNCTION h5awrite_integer_1_c
- END INTERFACE
+ INTERFACE
+ INTEGER FUNCTION h5awrite_integer_1_c(attr_id, memtype_id, buf, dims)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_1_C'::h5awrite_integer_1_c
+ !DEC$ ENDIF
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
+ INTEGER(HID_T), INTENT(IN) :: attr_id
+ INTEGER(HID_T), INTENT(IN) :: memtype_id
+ INTEGER, INTENT(IN), DIMENSION(dims(1)) :: buf
+ END FUNCTION h5awrite_integer_1_c
+ END INTERFACE
- hdferr = h5awrite_integer_1_c(attr_id, memtype_id, buf, dims)
- END SUBROUTINE h5awrite_integer_1
+ hdferr = h5awrite_integer_1_c(attr_id, memtype_id, buf, dims)
+ END SUBROUTINE h5awrite_integer_1
- SUBROUTINE h5awrite_integer_2(attr_id, memtype_id, buf, dims, hdferr)
+
+ SUBROUTINE h5awrite_integer_2(attr_id, memtype_id, buf, dims, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5awrite_integer_2
!DEC$endif
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
- INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
- ! identifier (in memory)
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER, INTENT(IN) , &
- DIMENSION(dims(1),dims(2)) :: buf
- ! Attribute data
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
+ INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
+ ! identifier (in memory)
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
+ INTEGER, INTENT(IN) , &
+ DIMENSION(dims(1),dims(2)) :: buf
+ ! Attribute data
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
! INTEGER, EXTERNAL :: h5awrite_integer_2_c
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5awrite_integer_2_c(attr_id, memtype_id, buf, dims)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_2_C'::h5awrite_integer_2_c
- !DEC$ ENDIF
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER(HID_T), INTENT(IN) :: attr_id
- INTEGER(HID_T), INTENT(IN) :: memtype_id
- INTEGER, INTENT(IN), &
- DIMENSION(dims(1),dims(2)) :: buf
- END FUNCTION h5awrite_integer_2_c
- END INTERFACE
+ INTERFACE
+ INTEGER FUNCTION h5awrite_integer_2_c(attr_id, memtype_id, buf, dims)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_2_C'::h5awrite_integer_2_c
+ !DEC$ ENDIF
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
+ INTEGER(HID_T), INTENT(IN) :: attr_id
+ INTEGER(HID_T), INTENT(IN) :: memtype_id
+ INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2)) :: buf
+ END FUNCTION h5awrite_integer_2_c
+ END INTERFACE
- hdferr = h5awrite_integer_2_c(attr_id, memtype_id, buf, dims)
- END SUBROUTINE h5awrite_integer_2
+ hdferr = h5awrite_integer_2_c(attr_id, memtype_id, buf, dims)
+ END SUBROUTINE h5awrite_integer_2
- SUBROUTINE h5awrite_integer_3(attr_id, memtype_id, buf, dims, hdferr)
+ SUBROUTINE h5awrite_integer_3(attr_id, memtype_id, buf, dims, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5awrite_integer_3
!DEC$endif
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
- INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
- ! identifier (in memory)
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER, INTENT(IN) , &
- DIMENSION(dims(1),dims(2),dims(3)) :: buf
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
+ INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
+ ! identifier (in memory)
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
+ INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2),dims(3)) :: buf
! Attribute data
- INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
! INTEGER, EXTERNAL :: h5awrite_integer_3_c
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5awrite_integer_3_c(attr_id, memtype_id, buf, dims)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_3_C'::h5awrite_integer_3_c
- !DEC$ ENDIF
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER(HID_T), INTENT(IN) :: attr_id
- INTEGER(HID_T), INTENT(IN) :: memtype_id
- INTEGER, INTENT(IN), &
- DIMENSION(dims(1),dims(2),dims(3)) :: buf
- END FUNCTION h5awrite_integer_3_c
- END INTERFACE
-
- hdferr = h5awrite_integer_3_c(attr_id, memtype_id, buf, dims)
- END SUBROUTINE h5awrite_integer_3
-
-
- SUBROUTINE h5awrite_integer_4(attr_id, memtype_id, buf, dims, hdferr)
+ INTERFACE
+ INTEGER FUNCTION h5awrite_integer_3_c(attr_id, memtype_id, buf, dims)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_3_C'::h5awrite_integer_3_c
+ !DEC$ ENDIF
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
+ INTEGER(HID_T), INTENT(IN) :: attr_id
+ INTEGER(HID_T), INTENT(IN) :: memtype_id
+ INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2),dims(3)) :: buf
+ END FUNCTION h5awrite_integer_3_c
+ END INTERFACE
+
+ hdferr = h5awrite_integer_3_c(attr_id, memtype_id, buf, dims)
+ END SUBROUTINE h5awrite_integer_3
+
+
+ SUBROUTINE h5awrite_integer_4(attr_id, memtype_id, buf, dims, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5awrite_integer_4
!DEC$endif
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
- INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
- ! identifier (in memory)
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER, INTENT(IN), &
- DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf
- ! Attribute data
- INTEGER, INTENT(OUT) :: hdferr ! Error code
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
+ INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
+ ! identifier (in memory)
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
+ INTEGER, INTENT(IN), &
+ DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf
+ ! Attribute data
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
! INTEGER, EXTERNAL :: h5awrite_integer_4_c
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5awrite_integer_4_c(attr_id, memtype_id, buf, dims)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_4_C'::h5awrite_integer_4_c
- !DEC$ ENDIF
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER(HID_T), INTENT(IN) :: attr_id
- INTEGER(HID_T), INTENT(IN) :: memtype_id
- INTEGER, INTENT(IN), &
- DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf
- END FUNCTION h5awrite_integer_4_c
- END INTERFACE
+ INTERFACE
+ INTEGER FUNCTION h5awrite_integer_4_c(attr_id, memtype_id, buf, dims)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_4_C'::h5awrite_integer_4_c
+ !DEC$ ENDIF
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
+ INTEGER(HID_T), INTENT(IN) :: attr_id
+ INTEGER(HID_T), INTENT(IN) :: memtype_id
+ INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf
+ END FUNCTION h5awrite_integer_4_c
+ END INTERFACE
- hdferr = h5awrite_integer_4_c(attr_id, memtype_id, buf, dims)
- END SUBROUTINE h5awrite_integer_4
+ hdferr = h5awrite_integer_4_c(attr_id, memtype_id, buf, dims)
+ END SUBROUTINE h5awrite_integer_4
- SUBROUTINE h5awrite_integer_5(attr_id, memtype_id, buf, dims, hdferr)
+ SUBROUTINE h5awrite_integer_5(attr_id, memtype_id, buf, dims, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5awrite_integer_5
!DEC$endif
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
- INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
- ! identifier (in memory)
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER, INTENT(IN), &
- DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
+ INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
+ ! identifier (in memory)
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
+ INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf
! Attribute data
- INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
! INTEGER, EXTERNAL :: h5awrite_integer_5_c
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5awrite_integer_5_c(attr_id, memtype_id, buf, dims)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_5_C'::h5awrite_integer_5_c
- !DEC$ ENDIF
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER(HID_T), INTENT(IN) :: attr_id
- INTEGER(HID_T), INTENT(IN) :: memtype_id
- INTEGER, INTENT(IN), &
- DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf
- END FUNCTION h5awrite_integer_5_c
- END INTERFACE
+ INTERFACE
+ INTEGER FUNCTION h5awrite_integer_5_c(attr_id, memtype_id, buf, dims)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_5_C'::h5awrite_integer_5_c
+ !DEC$ ENDIF
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
+ INTEGER(HID_T), INTENT(IN) :: attr_id
+ INTEGER(HID_T), INTENT(IN) :: memtype_id
+ INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf
+ END FUNCTION h5awrite_integer_5_c
+ END INTERFACE
- hdferr = h5awrite_integer_5_c(attr_id, memtype_id, buf, dims)
- END SUBROUTINE h5awrite_integer_5
+ hdferr = h5awrite_integer_5_c(attr_id, memtype_id, buf, dims)
+ END SUBROUTINE h5awrite_integer_5
- SUBROUTINE h5awrite_integer_6(attr_id, memtype_id, buf, dims, hdferr)
+ SUBROUTINE h5awrite_integer_6(attr_id, memtype_id, buf, dims, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5awrite_integer_6
!DEC$endif
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
- INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
- ! identifier (in memory)
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER, INTENT(IN), &
- DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf
- ! Attribute data
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
+ INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
+ ! identifier (in memory)
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
+ INTEGER, INTENT(IN), &
+ DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf
+ ! Attribute data
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
! INTEGER, EXTERNAL :: h5awrite_integer_6_c
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5awrite_integer_6_c(attr_id, memtype_id, buf, dims)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_6_C'::h5awrite_integer_6_c
- !DEC$ ENDIF
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER(HID_T), INTENT(IN) :: attr_id
- INTEGER(HID_T), INTENT(IN) :: memtype_id
- INTEGER, INTENT(IN), &
+ INTERFACE
+ INTEGER FUNCTION h5awrite_integer_6_c(attr_id, memtype_id, buf, dims)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_6_C'::h5awrite_integer_6_c
+ !DEC$ ENDIF
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
+ INTEGER(HID_T), INTENT(IN) :: attr_id
+ INTEGER(HID_T), INTENT(IN) :: memtype_id
+ INTEGER, INTENT(IN), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf
- END FUNCTION h5awrite_integer_6_c
- END INTERFACE
+ END FUNCTION h5awrite_integer_6_c
+ END INTERFACE
- hdferr = h5awrite_integer_6_c(attr_id, memtype_id, buf, dims)
- END SUBROUTINE h5awrite_integer_6
+ hdferr = h5awrite_integer_6_c(attr_id, memtype_id, buf, dims)
+ END SUBROUTINE h5awrite_integer_6
- SUBROUTINE h5awrite_integer_7(attr_id, memtype_id, buf, dims, hdferr)
+ SUBROUTINE h5awrite_integer_7(attr_id, memtype_id, buf, dims, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5awrite_integer_7
!DEC$endif
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
- INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
- ! identifier (in memory)
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER, INTENT(IN), &
- DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf
- ! Attribute data
- INTEGER, INTENT(OUT) :: hdferr ! Error code
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
+ INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
+ ! identifier (in memory)
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
+ INTEGER, INTENT(IN), &
+ DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf
+ ! Attribute data
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
! INTEGER, EXTERNAL :: h5awrite_integer_7_c
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5awrite_integer_7_c(attr_id, memtype_id, buf, dims)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_7_C'::h5awrite_integer_7_c
- !DEC$ ENDIF
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER(HID_T), INTENT(IN) :: attr_id
- INTEGER(HID_T), INTENT(IN) :: memtype_id
- INTEGER, INTENT(IN), &
+ INTERFACE
+ INTEGER FUNCTION h5awrite_integer_7_c(attr_id, memtype_id, buf, dims)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_INTEGER_7_C'::h5awrite_integer_7_c
+ !DEC$ ENDIF
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
+ INTEGER(HID_T), INTENT(IN) :: attr_id
+ INTEGER(HID_T), INTENT(IN) :: memtype_id
+ INTEGER, INTENT(IN), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf
- END FUNCTION h5awrite_integer_7_c
- END INTERFACE
+ END FUNCTION h5awrite_integer_7_c
+ END INTERFACE
- hdferr = h5awrite_integer_7_c(attr_id, memtype_id, buf, dims)
- END SUBROUTINE h5awrite_integer_7
+ hdferr = h5awrite_integer_7_c(attr_id, memtype_id, buf, dims)
+ END SUBROUTINE h5awrite_integer_7
- SUBROUTINE h5awrite_real_scalar(attr_id, memtype_id, buf, dims, hdferr)
+ SUBROUTINE h5awrite_real_scalar(attr_id, memtype_id, buf, dims, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5awrite_real_scalar
!DEC$endif
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
- INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
- ! identifier (in memory)
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- REAL, INTENT(IN) :: buf ! Attribute data
- INTEGER, INTENT(OUT) :: hdferr ! Error code
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
+ INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
+ ! identifier (in memory)
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
+ REAL, INTENT(IN) :: buf ! Attribute data
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
! INTEGER, EXTERNAL :: h5awrite_real_s_c
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5awrite_real_s_c(attr_id, memtype_id, buf, dims)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_REAL_S_C'::h5awrite_real_s_c
- !DEC$ ENDIF
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER(HID_T), INTENT(IN) :: attr_id
- INTEGER(HID_T), INTENT(IN) :: memtype_id
- REAL, INTENT(IN)::buf
- END FUNCTION h5awrite_real_s_c
- END INTERFACE
-
- hdferr = h5awrite_real_s_c(attr_id, memtype_id, buf, dims)
- END SUBROUTINE h5awrite_real_scalar
-
- SUBROUTINE h5awrite_real_1(attr_id, memtype_id, buf, dims, hdferr)
+ INTERFACE
+ INTEGER FUNCTION h5awrite_real_s_c(attr_id, memtype_id, buf, dims)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_REAL_S_C'::h5awrite_real_s_c
+ !DEC$ ENDIF
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
+ INTEGER(HID_T), INTENT(IN) :: attr_id
+ INTEGER(HID_T), INTENT(IN) :: memtype_id
+ REAL, INTENT(IN)::buf
+ END FUNCTION h5awrite_real_s_c
+ END INTERFACE
+
+ hdferr = h5awrite_real_s_c(attr_id, memtype_id, buf, dims)
+ END SUBROUTINE h5awrite_real_scalar
+
+ SUBROUTINE h5awrite_real_1(attr_id, memtype_id, buf, dims, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5awrite_real_1
!DEC$endif
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
- INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
- ! identifier (in memory)
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- REAL, INTENT(IN), &
- DIMENSION(dims(1)) :: buf
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
+ INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
+ ! identifier (in memory)
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
+ REAL, INTENT(IN), &
+ DIMENSION(dims(1)) :: buf
! Attribute data
- INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
! INTEGER, EXTERNAL :: h5awrite_real_1_c
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5awrite_real_1_c(attr_id, memtype_id, buf, dims)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_REAL_1_C'::h5awrite_real_1_c
- !DEC$ ENDIF
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER(HID_T), INTENT(IN) :: attr_id
- INTEGER(HID_T), INTENT(IN) :: memtype_id
- REAL, INTENT(IN), &
+ INTERFACE
+ INTEGER FUNCTION h5awrite_real_1_c(attr_id, memtype_id, buf, dims)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AWRITE_REAL_1_C'::h5awrite_real_1_c
+ !DEC$ ENDIF
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
+ INTEGER(HID_T), INTENT(IN) :: attr_id
+ INTEGER(HID_T), INTENT(IN) :: memtype_id
+ REAL, INTENT(IN), &
DIMENSION(dims(1)) :: buf
- END FUNCTION h5awrite_real_1_c
- END INTERFACE
+ END FUNCTION h5awrite_real_1_c
+ END INTERFACE
- hdferr = h5awrite_real_1_c(attr_id, memtype_id, buf, dims)
- END SUBROUTINE h5awrite_real_1
+ hdferr = h5awrite_real_1_c(attr_id, memtype_id, buf, dims)
+ END SUBROUTINE h5awrite_real_1
SUBROUTINE h5awrite_real_2(attr_id, memtype_id, buf, dims, hdferr)
@@ -1463,6 +1463,11 @@
! dims parameter was added to make code portable;
! Aprile 4, 2001
!
+! Changed buf intent to INOUT to be consistant
+! with how the C functions handles it. The pg
+! compiler will return 0 if a buf value is not set.
+! February, 2008
+!
! Comment: This function is overloaded to write INTEGER,
! REAL, DOUBLE PRECISION and CHARACTER buffers
! up to 7 dimensions.
@@ -1478,7 +1483,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER, INTENT(OUT) :: buf ! Attribute data
+ INTEGER, INTENT(INOUT) :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
! INTEGER, EXTERNAL :: h5aread_integer_s_c
@@ -1490,13 +1495,12 @@
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
!DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AREAD_INTEGER_S_C'::h5aread_integer_s_c
!DEC$ ENDIF
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- INTEGER, INTENT(OUT)::buf
+ INTEGER, INTENT(INOUT)::buf
END FUNCTION h5aread_integer_s_c
END INTERFACE
-
hdferr = h5aread_integer_s_c(attr_id, memtype_id, buf, dims)
END SUBROUTINE h5aread_integer_scalar
@@ -1510,8 +1514,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER, INTENT(OUT), &
- DIMENSION(dims(1)) :: buf
+ INTEGER, INTENT(INOUT), DIMENSION(dims(1)) :: buf
INTEGER, INTENT(OUT) :: hdferr ! Error code
! INTEGER, EXTERNAL :: h5aread_integer_1_c
@@ -1526,8 +1529,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- INTEGER, INTENT(OUT), &
- DIMENSION(dims(1)) :: buf
+ INTEGER, INTENT(INOUT), DIMENSION(dims(1)) :: buf
END FUNCTION h5aread_integer_1_c
END INTERFACE
@@ -1545,8 +1547,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER, INTENT(OUT), &
- DIMENSION(dims(1),dims(2)) :: buf
+ INTEGER, INTENT(INOUT),DIMENSION(dims(1),dims(2)) :: buf
INTEGER, INTENT(OUT) :: hdferr ! Error code
! INTEGER, EXTERNAL :: h5aread_integer_2_c
@@ -1561,8 +1562,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- INTEGER, INTENT(OUT), &
- DIMENSION(dims(1),dims(2)) :: buf
+ INTEGER, INTENT(INOUT), DIMENSION(dims(1),dims(2)) :: buf
END FUNCTION h5aread_integer_2_c
END INTERFACE
@@ -1580,8 +1580,8 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER, INTENT(OUT), &
- DIMENSION(dims(1),dims(2),dims(3)) :: buf
+ INTEGER, INTENT(INOUT), &
+ DIMENSION(dims(1),dims(2),dims(3)) :: buf
INTEGER, INTENT(OUT) :: hdferr ! Error code
! INTEGER, EXTERNAL :: h5aread_integer_3_c
@@ -1596,7 +1596,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- INTEGER, INTENT(OUT), &
+ INTEGER, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3)) :: buf
END FUNCTION h5aread_integer_3_c
END INTERFACE
@@ -1615,7 +1615,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER, INTENT(OUT), &
+ INTEGER, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -1632,7 +1632,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- INTEGER, INTENT(OUT), &
+ INTEGER, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf
END FUNCTION h5aread_integer_4_c
END INTERFACE
@@ -1651,7 +1651,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER, INTENT(OUT), &
+ INTEGER, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -1668,7 +1668,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- INTEGER, INTENT(OUT), &
+ INTEGER, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf
END FUNCTION h5aread_integer_5_c
END INTERFACE
@@ -1687,7 +1687,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER, INTENT(OUT), &
+ INTEGER, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -1704,7 +1704,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- INTEGER, INTENT(OUT), &
+ INTEGER, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf
END FUNCTION h5aread_integer_6_c
END INTERFACE
@@ -1723,7 +1723,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- INTEGER, INTENT(OUT), &
+ INTEGER, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -1740,7 +1740,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- INTEGER, INTENT(OUT), &
+ INTEGER, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf
END FUNCTION h5aread_integer_7_c
END INTERFACE
@@ -1759,7 +1759,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- REAL, INTENT(OUT) :: buf ! Attribute data
+ REAL, INTENT(INOUT) :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
! INTEGER, EXTERNAL :: h5aread_real_s_c
@@ -1774,7 +1774,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- REAL, INTENT(OUT)::buf
+ REAL, INTENT(INOUT)::buf
END FUNCTION h5aread_real_s_c
END INTERFACE
@@ -1791,7 +1791,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- REAL, INTENT(OUT), &
+ REAL, INTENT(INOUT), &
DIMENSION(dims(1)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -1808,7 +1808,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- REAL, INTENT(OUT), &
+ REAL, INTENT(INOUT), &
DIMENSION(dims(1)) :: buf
END FUNCTION h5aread_real_1_c
END INTERFACE
@@ -1827,7 +1827,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- REAL, INTENT(OUT), &
+ REAL, INTENT(INOUT), &
DIMENSION(dims(1),dims(2)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -1844,7 +1844,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- REAL, INTENT(OUT), &
+ REAL, INTENT(INOUT), &
DIMENSION(dims(1),dims(2)) :: buf
END FUNCTION h5aread_real_2_c
END INTERFACE
@@ -1863,7 +1863,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- REAL, INTENT(OUT), &
+ REAL, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -1880,7 +1880,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- REAL, INTENT(OUT), &
+ REAL, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3)) :: buf
END FUNCTION h5aread_real_3_c
END INTERFACE
@@ -1899,7 +1899,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- REAL, INTENT(OUT), &
+ REAL, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -1916,7 +1916,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- REAL, INTENT(OUT), &
+ REAL, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf
END FUNCTION h5aread_real_4_c
END INTERFACE
@@ -1935,7 +1935,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- REAL, INTENT(OUT), &
+ REAL, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -1952,7 +1952,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- REAL, INTENT(OUT), &
+ REAL, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf
END FUNCTION h5aread_real_5_c
END INTERFACE
@@ -1971,7 +1971,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- REAL, INTENT(OUT), &
+ REAL, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -1988,7 +1988,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- REAL, INTENT(OUT), &
+ REAL, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf
END FUNCTION h5aread_real_6_c
END INTERFACE
@@ -2007,7 +2007,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- REAL, INTENT(OUT), &
+ REAL, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -2024,7 +2024,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- REAL, INTENT(OUT), &
+ REAL, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf
END FUNCTION h5aread_real_7_c
END INTERFACE
@@ -2043,7 +2043,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- DOUBLE PRECISION, INTENT(OUT) :: buf ! Attribute data
+ DOUBLE PRECISION, INTENT(INOUT) :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
! INTEGER, EXTERNAL :: h5aread_double_s_c
@@ -2058,7 +2058,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- DOUBLE PRECISION, INTENT(OUT)::buf
+ DOUBLE PRECISION, INTENT(INOUT)::buf
END FUNCTION h5aread_double_s_c
END INTERFACE
@@ -2075,7 +2075,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- DOUBLE PRECISION, INTENT(OUT), &
+ DOUBLE PRECISION, INTENT(INOUT), &
DIMENSION(dims(1)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -2092,7 +2092,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- DOUBLE PRECISION, INTENT(OUT), &
+ DOUBLE PRECISION, INTENT(INOUT), &
DIMENSION(dims(1)) :: buf
END FUNCTION h5aread_double_1_c
END INTERFACE
@@ -2111,7 +2111,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- DOUBLE PRECISION, INTENT(OUT), &
+ DOUBLE PRECISION, INTENT(INOUT), &
DIMENSION(dims(1),dims(2)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -2128,7 +2128,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- DOUBLE PRECISION, INTENT(OUT), &
+ DOUBLE PRECISION, INTENT(INOUT), &
DIMENSION(dims(1),dims(2)) :: buf
END FUNCTION h5aread_double_2_c
END INTERFACE
@@ -2147,7 +2147,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- DOUBLE PRECISION, INTENT(OUT), &
+ DOUBLE PRECISION, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -2164,7 +2164,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- DOUBLE PRECISION, INTENT(OUT), &
+ DOUBLE PRECISION, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3)) :: buf
END FUNCTION h5aread_double_3_c
END INTERFACE
@@ -2183,7 +2183,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- DOUBLE PRECISION, INTENT(OUT), &
+ DOUBLE PRECISION, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -2200,7 +2200,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- DOUBLE PRECISION, INTENT(OUT), &
+ DOUBLE PRECISION, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf
END FUNCTION h5aread_double_4_c
END INTERFACE
@@ -2219,7 +2219,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- DOUBLE PRECISION, INTENT(OUT), &
+ DOUBLE PRECISION, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -2236,7 +2236,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- DOUBLE PRECISION, INTENT(OUT), &
+ DOUBLE PRECISION, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf
END FUNCTION h5aread_double_5_c
END INTERFACE
@@ -2255,7 +2255,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- DOUBLE PRECISION, INTENT(OUT), &
+ DOUBLE PRECISION, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -2272,7 +2272,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- DOUBLE PRECISION, INTENT(OUT), &
+ DOUBLE PRECISION, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf
END FUNCTION h5aread_double_6_c
END INTERFACE
@@ -2291,7 +2291,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- DOUBLE PRECISION, INTENT(OUT), &
+ DOUBLE PRECISION, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -2308,7 +2308,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- DOUBLE PRECISION, INTENT(OUT), &
+ DOUBLE PRECISION, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf
END FUNCTION h5aread_double_7_c
END INTERFACE
@@ -2327,7 +2327,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- CHARACTER(LEN=*), INTENT(OUT) :: buf
+ CHARACTER(LEN=*), INTENT(INOUT) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -2344,7 +2344,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- CHARACTER(LEN=*) :: buf
+ CHARACTER(LEN=*), INTENT(INOUT) :: buf
END FUNCTION h5areadc_s_c
END INTERFACE
@@ -2361,7 +2361,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- CHARACTER(LEN=*), INTENT(OUT), &
+ CHARACTER(LEN=*), INTENT(INOUT), &
DIMENSION(dims(1)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -2379,8 +2379,8 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- CHARACTER(LEN=*), INTENT(OUT), &
- DIMENSION(dims(1)) :: buf
+ CHARACTER(LEN=*), INTENT(INOUT), &
+ DIMENSION(dims(1)) :: buf
END FUNCTION h5areadc_1_c
END INTERFACE
@@ -2398,8 +2398,8 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- CHARACTER(LEN=*), INTENT(OUT), &
- DIMENSION(dims(1),dims(2)) :: buf
+ CHARACTER(LEN=*), INTENT(INOUT), &
+ DIMENSION(dims(1),dims(2)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -2416,7 +2416,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- CHARACTER(LEN=*), INTENT(OUT), &
+ CHARACTER(LEN=*), INTENT(INOUT), &
DIMENSION(dims(1),dims(2)) :: buf
END FUNCTION h5areadc_2_c
END INTERFACE
@@ -2435,7 +2435,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- CHARACTER(LEN=*), INTENT(OUT), &
+ CHARACTER(LEN=*), INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -2453,7 +2453,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- CHARACTER(LEN=*), INTENT(OUT), &
+ CHARACTER(LEN=*), INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3)) :: buf
END FUNCTION h5areadc_3_c
END INTERFACE
@@ -2472,7 +2472,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- CHARACTER(LEN=*), INTENT(OUT), &
+ CHARACTER(LEN=*), INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -2490,7 +2490,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- CHARACTER(LEN=*), INTENT(OUT), &
+ CHARACTER(LEN=*), INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf
END FUNCTION h5areadc_4_c
END INTERFACE
@@ -2509,7 +2509,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- CHARACTER(LEN=*), INTENT(OUT), &
+ CHARACTER(LEN=*), INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -2527,7 +2527,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- CHARACTER(LEN=*), INTENT(OUT), &
+ CHARACTER(LEN=*), INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf
END FUNCTION h5areadc_5_c
END INTERFACE
@@ -2546,7 +2546,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- CHARACTER(LEN=*), INTENT(OUT), &
+ CHARACTER(LEN=*), INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -2564,7 +2564,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- CHARACTER(LEN=*), INTENT(OUT), &
+ CHARACTER(LEN=*), INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf
END FUNCTION h5areadc_6_c
END INTERFACE
@@ -2583,7 +2583,7 @@
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
- CHARACTER(LEN=*), INTENT(OUT), &
+ CHARACTER(LEN=*), INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
@@ -2601,7 +2601,7 @@
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER(HID_T), INTENT(IN) :: attr_id
INTEGER(HID_T), INTENT(IN) :: memtype_id
- CHARACTER(LEN=*), INTENT(OUT), &
+ CHARACTER(LEN=*), INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf
END FUNCTION h5areadc_7_c
END INTERFACE
@@ -2740,37 +2740,147 @@
!----------------------------------------------------------------------
- SUBROUTINE h5aget_name_f(attr_id, size, buf, hdferr)
+ SUBROUTINE h5aget_name_f(attr_id, size, buf, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5aget_name_f
!DEC$endif
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
- INTEGER(SIZE_T), INTENT(IN) :: size ! Buffer size
- CHARACTER(LEN=*), INTENT(INOUT) :: buf
- ! Buffer to hold attribute name
- INTEGER, INTENT(OUT) :: hdferr ! Error code:
- ! name length is successful,
- ! -1 if fail
-! INTEGER, EXTERNAL :: h5aget_name_c
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
+ INTEGER(SIZE_T), INTENT(IN) :: size ! Buffer size
+ CHARACTER(LEN=*), INTENT(INOUT) :: buf
+ ! Buffer to hold attribute name
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! name length is successful,
+ ! -1 if fail
+
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5aget_name_c(attr_id, size, buf)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AGET_NAME_C'::h5aget_name_c
- !DEC$ ENDIF
- !DEC$ATTRIBUTES reference :: buf
- INTEGER(HID_T), INTENT(IN) :: attr_id
- INTEGER(SIZE_T), INTENT(IN) :: size
- CHARACTER(LEN=*), INTENT(OUT) :: buf
- END FUNCTION h5aget_name_c
- END INTERFACE
+ INTERFACE
+ INTEGER FUNCTION h5aget_name_c(attr_id, size, buf)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AGET_NAME_C'::h5aget_name_c
+ !DEC$ ENDIF
+ !DEC$ATTRIBUTES reference :: buf
+ INTEGER(HID_T), INTENT(IN) :: attr_id
+ INTEGER(SIZE_T), INTENT(IN) :: size
+ CHARACTER(LEN=*), INTENT(OUT) :: buf
+ END FUNCTION h5aget_name_c
+ END INTERFACE
+
+ hdferr = h5aget_name_c(attr_id, size, buf)
+ END SUBROUTINE h5aget_name_f
- hdferr = h5aget_name_c(attr_id, size, buf)
- END SUBROUTINE h5aget_name_f
+!----------------------------------------------------------------------
+! Name: h5aget_name_by_idx_f
+!
+! Purpose: Gets an attribute name, by attribute index position.
+!
+! Inputs:
+! loc_id - Location of object to which attribute is attached
+! obj_name - Name of object to which attribute is attached, relative to location
+! idx_type - Type of index; Possible values are:
+!
+! H5_INDEX_UNKNOWN_F = -1 - Unknown index type
+! H5_INDEX_NAME_F - Index on names
+! H5_INDEX_CRT_ORDER_F - Index on creation order
+! H5_INDEX_N _F - Number of indices defined
+!
+! order - Order in which to iterate over index; Possible values are:
+!
+! H5_ITER_UNKNOWN_F - Unknown order
+! H5_ITER_INC_F - Increasing order
+! H5_ITER_DEC_F - Decreasing order
+! H5_ITER_NATIVE_F - No particular order, whatever is fastest
+! H5_ITER_N_F - Number of iteration orders
+!
+! order - Index traversal order
+! n - Attribute’s position in index
+! size - Size, in bytes, of attribute name
+!
+! Outputs:
+! name - Attribute name
+! name_size_out - Size of Attribute name returned from function
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! lapl_id - Link access property list
+!
+! Programmer: M.S. Breitenfeld
+! January, 2008
+!
+! Modifications: N/A
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5aget_name_by_idx_f(loc_id, obj_name, idx_type, order, &
+ n, name, size, hdferr, lapl_id)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5aget_name_by_idx_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifer for object to which attribute is attached
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name ! Name of object, relative to location,
+ ! from which attribute is to be removed *TEST* check NULL
+ INTEGER, INTENT(IN) :: idx_type ! Type of index; Possible values are:
+ ! H5_INDEX_UNKNOWN_F - Unknown index type
+ ! H5_INDEX_NAME_F - Index on names
+ ! H5_INDEX_CRT_ORDER_F - Index on creation order
+ ! H5_INDEX_N_F - Number of indices defined
+
+ INTEGER, INTENT(IN) :: order ! Order in which to iterate over index; Possible values are:
+ ! H5_ITER_UNKNOWN_F - Unknown order
+ ! H5_ITER_INC_F - Increasing order
+ ! H5_ITER_DEC_F - Decreasing order
+ ! H5_ITER_NATIVE_F - No particular order, whatever is fastest
+ ! H5_ITER_N_F - Number of iteration orders
+
+ INTEGER(HSIZE_T), INTENT(IN) :: n ! Attribute’s position in index
+
+ CHARACTER(LEN=*), INTENT(OUT) :: name ! Attribute name
+
+ INTEGER(SIZE_T), INTENT(INOUT) :: size ! Buffer size ! *TEST* check for 0 value *CHECK* should this return the correct value
+
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! Returns attribute name size,
+ ! -1 if fail
+ INTEGER(SIZE_T) :: obj_namelen
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+ INTEGER(HID_T) :: lapl_id_default
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5aget_name_by_idx_c(loc_id, obj_name, obj_namelen, idx_type, order, &
+ n, name, size, lapl_id_default)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AGET_NAME_BY_IDX_C'::h5aget_name_by_idx_c
+ !DEC$ ENDIF
+
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name
+ INTEGER, INTENT(IN) :: idx_type
+ INTEGER, INTENT(IN) :: order
+ INTEGER(HSIZE_T), INTENT(IN) :: n
+
+ CHARACTER(LEN=*), INTENT(OUT) :: name
+ INTEGER(SIZE_T), INTENT(INOUT) :: size
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER(SIZE_T) :: obj_namelen
+ END FUNCTION h5aget_name_by_idx_c
+ END INTERFACE
+
+ obj_namelen = LEN(obj_name)
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+
+ hdferr = h5aget_name_by_idx_c(loc_id, obj_name, obj_namelen, idx_type, order, &
+ n, name, size, lapl_id_default)
+
+ END SUBROUTINE h5aget_name_by_idx_f
!----------------------------------------------------------------------
@@ -2798,33 +2908,33 @@
!
!----------------------------------------------------------------------
- SUBROUTINE h5aget_num_attrs_f(obj_id, attr_num, hdferr)
+ SUBROUTINE h5aget_num_attrs_f(obj_id, attr_num, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5aget_num_attrs_f
!DEC$endif
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
- INTEGER, INTENT(OUT) :: attr_num ! Number of attributes of the
- ! object
- INTEGER, INTENT(OUT) :: hdferr ! Error code
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
+ INTEGER, INTENT(OUT) :: attr_num ! Number of attributes of the
+ ! object
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
! INTEGER, EXTERNAL :: h5aget_num_attrs_c
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5aget_num_attrs_c(obj_id, attr_num)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AGET_NUM_ATTRS_C'::h5aget_num_attrs_c
- !DEC$ ENDIF
- INTEGER(HID_T), INTENT(IN) :: obj_id
- INTEGER, INTENT(OUT) :: attr_num
- END FUNCTION h5aget_num_attrs_c
- END INTERFACE
-
- hdferr = h5aget_num_attrs_c(obj_id, attr_num)
- END SUBROUTINE h5aget_num_attrs_f
+ INTERFACE
+ INTEGER FUNCTION h5aget_num_attrs_c(obj_id, attr_num)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AGET_NUM_ATTRS_C'::h5aget_num_attrs_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: obj_id
+ INTEGER, INTENT(OUT) :: attr_num
+ END FUNCTION h5aget_num_attrs_c
+ END INTERFACE
+
+ hdferr = h5aget_num_attrs_c(obj_id, attr_num)
+ END SUBROUTINE h5aget_num_attrs_f
!----------------------------------------------------------------------
! Name: h5adelete_f
@@ -2852,36 +2962,36 @@
!
!----------------------------------------------------------------------
- SUBROUTINE h5adelete_f(obj_id, name, hdferr)
+ SUBROUTINE h5adelete_f(obj_id, name, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5adelete_f
!DEC$endif
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Attribute name
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- INTEGER(SIZE_T) :: namelen
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
+ CHARACTER(LEN=*), INTENT(IN) :: name ! Attribute name
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER(SIZE_T) :: namelen
! INTEGER, EXTERNAL :: h5adelete_c
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5adelete_c(obj_id, name, namelen)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5ADELETE_C'::h5adelete_c
- !DEC$ ENDIF
- !DEC$ATTRIBUTES reference :: name
- INTEGER(HID_T), INTENT(IN) :: obj_id
- CHARACTER(LEN=*), INTENT(IN) :: name
- INTEGER(SIZE_T) :: namelen
- END FUNCTION h5adelete_c
- END INTERFACE
-
- namelen = LEN(name)
- hdferr = h5adelete_c(obj_id, name, namelen)
- END SUBROUTINE h5adelete_f
+ INTERFACE
+ INTEGER FUNCTION h5adelete_c(obj_id, name, namelen)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5ADELETE_C'::h5adelete_c
+ !DEC$ ENDIF
+ !DEC$ATTRIBUTES reference :: name
+ INTEGER(HID_T), INTENT(IN) :: obj_id
+ CHARACTER(LEN=*), INTENT(IN) :: name
+ INTEGER(SIZE_T) :: namelen
+ END FUNCTION h5adelete_c
+ END INTERFACE
+
+ namelen = LEN(name)
+ hdferr = h5adelete_c(obj_id, name, namelen)
+ END SUBROUTINE h5adelete_f
!----------------------------------------------------------------------
! Name: h5aclose_f
@@ -2907,29 +3017,1177 @@
!
!----------------------------------------------------------------------
- SUBROUTINE h5aclose_f(attr_id, hdferr)
+ SUBROUTINE h5aclose_f(attr_id, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5aclose_f
!DEC$endif
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
! INTEGER, EXTERNAL :: h5aclose_c
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5aclose_c(attr_id)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5ACLOSE_C'::h5aclose_c
- !DEC$ ENDIF
- INTEGER(HID_T), INTENT(IN) :: attr_id
- END FUNCTION h5aclose_c
- END INTERFACE
+ INTERFACE
+ INTEGER FUNCTION h5aclose_c(attr_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5ACLOSE_C'::h5aclose_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: attr_id
+ END FUNCTION h5aclose_c
+ END INTERFACE
+
+ hdferr = h5aclose_c(attr_id)
+ END SUBROUTINE h5aclose_f
+
+!----------------------------------------------------------------------
+! Name: h5aget_storage_size_f
+!
+! Purpose: Returns the amount of storage required for an attribute.
+!
+! Inputs:
+! attr_id - attribute identifier
+! Outputs:
+! size - attribute storage size
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M. S. Breitenfeld
+! January, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5aget_storage_size_f(attr_id, size, hdferr)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5aget_storage_size_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
+ INTEGER(HSIZE_T), INTENT(OUT) :: size ! Attribute storage requirement
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5aget_storage_size_c(attr_id, size)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AGET_STORAGE_SIZE_C'::h5aget_storage_size_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: attr_id
+ INTEGER(HSIZE_T), INTENT(OUT) :: size
+ END FUNCTION h5aget_storage_size_c
+ END INTERFACE
+
+ hdferr = h5aget_storage_size_c(attr_id, size)
+ END SUBROUTINE h5aget_storage_size_f
+
+!----------------------------------------------------------------------
+! Name: h5aget_create_plist_f
+!
+! Purpose: Gets an attribute creation property list identifier
+!
+! Inputs:
+! attr_id - Identifier of the attribute
+! Outputs:
+! creation_prop_id - Identifier for the attribute’s creation property
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M. S. Breitenfeld
+! January, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5aget_create_plist_f(attr_id, creation_prop_id, hdferr)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5aget_create_plist_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: attr_id ! Identifier of the attribute
+ INTEGER(HID_T), INTENT(OUT) :: creation_prop_id ! Identifier for the attribute’s creation property
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5aget_create_plist_c(attr_id, creation_prop_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AGET_CREATE_PLIST_C'::h5aget_create_plist_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: attr_id
+ INTEGER(HID_T), INTENT(OUT) :: creation_prop_id
+ END FUNCTION h5aget_create_plist_c
+ END INTERFACE
+
+ hdferr = h5aget_create_plist_c(attr_id, creation_prop_id)
+ END SUBROUTINE h5aget_create_plist_f
+
+!----------------------------------------------------------------------
+! Name: h5arename_by_name_f
+!
+! Purpose: Renames an attribute
+!
+! Inputs:
+! loc_id - Location or object identifier; may be dataset or group
+! obj_name - Name of object, relative to location,
+! whose attribute is to be renamed
+! old_attr_name - Prior attribute name
+! new_attr_name - New attribute name
+! lapl_id - Link access property list identifier
+!
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+!
+! Programmer: M.S. Breitenfeld
+! January, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5arename_by_name_f(loc_id, obj_name, old_attr_name, new_attr_name, &
+ hdferr, lapl_id)
+
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5arename_by_name_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! Object identifier
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name ! Name of object, relative to location,
+ ! whose attribute is to be renamed
+ CHARACTER(LEN=*), INTENT(IN) :: old_attr_name ! Prior attribute name
+ CHARACTER(LEN=*), INTENT(IN) :: new_attr_name ! New attribute name
+
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier
+
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER(SIZE_T) :: obj_namelen
+ INTEGER(SIZE_T) :: old_attr_namelen
+ INTEGER(SIZE_T) :: new_attr_namelen
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5arename_by_name_c(loc_id, obj_name, obj_namelen, &
+ old_attr_name, old_attr_namelen, new_attr_name, new_attr_namelen, &
+ lapl_id_default)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5ARENAME_BY_NAME_C'::h5arename_by_name_c
+ !DEC$ ENDIF
+ !DEC$ATTRIBUTES reference :: name
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name
+ INTEGER(SIZE_T) :: obj_namelen
+ CHARACTER(LEN=*), INTENT(IN) :: old_attr_name
+ INTEGER(SIZE_T) :: old_attr_namelen
+ CHARACTER(LEN=*), INTENT(IN) :: new_attr_name
+ INTEGER(SIZE_T) :: new_attr_namelen
+ INTEGER(HID_T) :: lapl_id_default
+
+ END FUNCTION h5arename_by_name_c
+ END INTERFACE
+
+ obj_namelen = LEN(obj_name)
+ old_attr_namelen = LEN(old_attr_name)
+ new_attr_namelen = LEN(new_attr_name)
+
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lapl_id)) lapl_id_default=lapl_id
+
+ hdferr = h5arename_by_name_c(loc_id, obj_name, obj_namelen, &
+ old_attr_name, old_attr_namelen, new_attr_name, new_attr_namelen, &
+ lapl_id_default)
+
+ END SUBROUTINE h5arename_by_name_f
+
+!----------------------------------------------------------------------
+! Name: h5aopen_f
+!
+! Purpose: Opens an attribute for an object specified by object
+! identifier and attribute name
+!
+! Inputs:
+! obj_id - Identifer for object to which attribute is attached
+! attr_name - Name of attribute to open
+! Outputs:
+! attr_id - attribute identifier
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! aapl_id - Attribute access property list
+!
+! Programmer: M.S. Breitenfeld
+! January, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5aopen_f(obj_id, attr_name, attr_id, hdferr, aapl_id)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5aopen_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
+ CHARACTER(LEN=*), INTENT(IN) :: attr_name ! Attribute name
+ INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ ! Success: 0
+ ! Failure: -1
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: aapl_id ! Attribute access property list
+ INTEGER(HID_T) :: aapl_id_default
+
+ INTEGER(SIZE_T) :: attr_namelen
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5aopen_c(obj_id, attr_name, attr_namelen, aapl_id_default, attr_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AOPEN_C'::h5aopen_c
+ !DEC$ ENDIF
+ !DEC$ATTRIBUTES reference :: name
+ INTEGER(HID_T), INTENT(IN) :: obj_id
+ CHARACTER(LEN=*), INTENT(IN) :: attr_name
+ INTEGER(HID_T) :: aapl_id_default
+ INTEGER(SIZE_T) :: attr_namelen
+ INTEGER(HID_T), INTENT(OUT) :: attr_id
+ END FUNCTION h5aopen_c
+ END INTERFACE
+
+ attr_namelen = LEN(attr_name)
+
+ aapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(aapl_id)) aapl_id_default = aapl_id
+
+ hdferr = h5aopen_c(obj_id, attr_name, attr_namelen, aapl_id_default, attr_id)
+
+ END SUBROUTINE h5aopen_f
+
+!----------------------------------------------------------------------
+! Name: h5adelete_by_idx_f
+!
+! Purpose: Deletes an attribute from an object according to index order
+!
+! Inputs:
+! loc_id - Location or object identifier; may be dataset or group
+! obj_name - Name of object, relative to location, from which attribute is to be removed
+! idx_type - Type of index; Possible values are:
+!
+! H5_INDEX_UNKNOWN_F = -1 - Unknown index type
+! H5_INDEX_NAME_F - Index on names
+! H5_INDEX_CRT_ORDER_F - Index on creation order
+! H5_INDEX_N_F - Number of indices defined
+!
+! order - Order in which to iterate over index; Possible values are:
+!
+! H5_ITER_UNKNOWN_F - Unknown order
+! H5_ITER_INC_F - Increasing order
+! H5_ITER_DEC_F - Decreasing order
+! H5_ITER_NATIVE_F - No particular order, whatever is fastest
+! H5_ITER_N_F - Number of iteration orders
+!
+! n - Offset within index
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! lapl_id - Link access property list
+!
+! Programmer: M.S. Breitenfeld
+! January, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+ SUBROUTINE h5adelete_by_idx_f(loc_id, obj_name, idx_type, order, n, hdferr, lapl_id)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5adelete_by_idx_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifer for object to which attribute is attached
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name ! Name of object, relative to location,
+ ! from which attribute is to be removed
+ INTEGER, INTENT(IN) :: idx_type ! Type of index; Possible values are:
+ ! H5_INDEX_UNKNOWN_F - Unknown index type
+ ! H5_INDEX_NAME_F - Index on names
+ ! H5_INDEX_CRT_ORDER_F - Index on creation order
+ ! H5_INDEX_N_F - Number of indices defined
+
+ INTEGER, INTENT(IN) :: order ! Order in which to iterate over index; Possible values are:
+ ! H5_ITER_UNKNOWN_F - Unknown order
+ ! H5_ITER_INC_F - Increasing order
+ ! H5_ITER_DEC_F - Decreasing order
+ ! H5_ITER_NATIVE_F - No particular order, whatever is fastest
+ ! H5_ITER_N_F - Number of iteration orders
+!
+ INTEGER(HSIZE_T), INTENT(IN) :: n ! Offset within index
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER(SIZE_T) :: obj_namelen
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+
+ INTEGER(HID_T) :: lapl_id_default
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5adelete_by_idx_c(loc_id, obj_name, obj_namelen, idx_type, order, n, lapl_id_default)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5ADELETE_BY_IDX_C'::h5adelete_by_idx_c
+ !DEC$ ENDIF
+ !DEC$ATTRIBUTES reference :: name
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name
+ INTEGER, INTENT(IN) :: idx_type
+ INTEGER, INTENT(IN) :: order
+ INTEGER(HSIZE_T), INTENT(IN) :: n
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER(SIZE_T) :: obj_namelen
+ END FUNCTION h5adelete_by_idx_c
+ END INTERFACE
+
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+
+ obj_namelen = LEN(obj_name)
+ hdferr = h5adelete_by_idx_c(loc_id, obj_name, obj_namelen, idx_type, order, n, lapl_id_default)
+
+ END SUBROUTINE h5adelete_by_idx_f
+
+!----------------------------------------------------------------------
+! Name: h5adelete_by_name_f
+!
+! Purpose: Removes an attribute from a specified location
+!
+! Inputs:
+! loc_id - Identifer for object to which attribute is attached
+! obj_name - Name of attribute to open
+! attr_name - Attribute access property list
+! lapl_id - Link access property list
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! January, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+ SUBROUTINE h5adelete_by_name_f(loc_id, obj_name, attr_name, hdferr, lapl_id)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5adelete_by_name_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifer for object to which attribute is attached
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name ! Name of object, relative to location,
+ ! from which attribute is to be removed
+ CHARACTER(LEN=*), INTENT(IN) :: attr_name ! Name of attribute to delete
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+ INTEGER(SIZE_T) :: attr_namelen
+ INTEGER(SIZE_T) :: obj_namelen
+
+ INTEGER(HID_T) :: lapl_id_default
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5adelete_by_name_c(loc_id, obj_name, obj_namelen, attr_name, attr_namelen, lapl_id_default)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5ADELETE_BY_NAME_C'::h5adelete_by_name_c
+ !DEC$ ENDIF
+ !DEC$ATTRIBUTES reference :: name
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name
+ CHARACTER(LEN=*), INTENT(IN) :: attr_name
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER(SIZE_T) :: attr_namelen
+ INTEGER(SIZE_T) :: obj_namelen
+ END FUNCTION h5adelete_by_name_c
+ END INTERFACE
+
+ obj_namelen = LEN(obj_name)
+ attr_namelen = LEN(attr_name)
+
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+
+ hdferr = h5adelete_by_name_c(loc_id, obj_name, obj_namelen, attr_name, attr_namelen, lapl_id_default)
+
+ END SUBROUTINE h5adelete_by_name_f
+
+!----------------------------------------------------------------------
+! Name: h5aopen_by_idx_f
+!
+! Purpose: Opens an existing attribute that is attached to an object specified by location and name
+!
+! Inputs:
+! loc_id - Location of object to which attribute is attached
+! obj_name - Name of object to which attribute is attached, relative to location
+! idx_type - Type of index
+! order - Index traversal order
+! n - Attribute’s position in index
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! aapl_id - Attribute access property list
+! lapl_id - Link access property list
+!
+! Programmer: M.S. Breitenfeld
+! January, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5aopen_by_idx_f(loc_id, obj_name, idx_type, order, n, attr_id, hdferr, aapl_id, lapl_id)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5aopen_by_idx_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! Object identifier
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name ! Name of object to which attribute is attached
+ INTEGER, INTENT(IN) :: idx_type ! Type of index; Possible values are:
+ ! H5_INDEX_UNKNOWN_F - Unknown index type
+ ! H5_INDEX_NAME_F - Index on names
+ ! H5_INDEX_CRT_ORDER_F - Index on creation order
+ ! H5_INDEX_N_F - Number of indices defined
+ INTEGER, INTENT(IN) :: order ! Order in which to iterate over index; Possible values are:
+ ! H5_ITER_UNKNOWN_F - Unknown order
+ ! H5_ITER_INC_F - Increasing order
+ ! H5_ITER_DEC_F - Decreasing order
+ ! H5_ITER_NATIVE_F - No particular order, whatever is fastest
+
+ INTEGER(HSIZE_T), INTENT(IN) :: n ! Attribute’s position in index
+
+ INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: aapl_id ! Attribute access property list
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+
+ INTEGER(SIZE_T) :: obj_namelen
+ INTEGER(HID_T) :: aapl_id_default
+ INTEGER(HID_T) :: lapl_id_default
+
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5aopen_by_idx_c(loc_id, obj_name, obj_namelen, idx_type, order, n, &
+ aapl_id_default, lapl_id_default, attr_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AOPEN_BY_IDX_C'::h5aopen_by_idx_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name
+ INTEGER, INTENT(IN) :: idx_type
+ INTEGER, INTENT(IN) :: order
+ INTEGER(HSIZE_T), INTENT(IN) :: n
+ INTEGER(HID_T) :: aapl_id_default
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER(SIZE_T) :: obj_namelen
+ INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier
+ END FUNCTION h5aopen_by_idx_c
+ END INTERFACE
+
+ obj_namelen = LEN(obj_name)
+
+ aapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(aapl_id)) aapl_id_default = aapl_id
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+
+ hdferr = h5aopen_by_idx_c(loc_id, obj_name, obj_namelen, idx_type, order, n, &
+ aapl_id_default, lapl_id_default, attr_id)
+
+ END SUBROUTINE h5aopen_by_idx_f
+
+!----------------------------------------------------------------------
+! Name: h5aget_info_f
+!
+! Purpose: Retrieves attribute information, by attribute identifier
+!
+! Inputs:
+! attr_id - attribute identifier
+!
+! Outputs: NOTE: In C it is defined as a structure: H5A_info_t
+!
+! corder_valid - indicates whether the creation order data is valid for this attribute
+! corder - is a positive integer containing the creation order of the attribute
+! cset - indicates the character set used for the attribute’s name
+! data_size - indicates the size, in the number of characters, of the attribute
+!
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M. S. Breitenfeld
+! January, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5aget_info_f(attr_id, f_corder_valid, corder, cset, data_size, hdferr)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5aget_info_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
+
+ LOGICAL, INTENT(OUT) :: f_corder_valid ! Indicates whether the creation order data is valid for this attribute
+ INTEGER, INTENT(OUT) :: corder ! Is a positive integer containing the creation order of the attribute
+ INTEGER, INTENT(OUT) :: cset ! Indicates the character set used for the attribute’s name
+ INTEGER(HSIZE_T), INTENT(OUT) :: data_size ! Indicates the size, in the number of characters, of the attribute
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+
+ INTEGER :: corder_valid
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5aget_info_c(attr_id, corder_valid, corder, cset, data_size)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AGET_INFO_C'::h5aget_info_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: attr_id
+
+ INTEGER, INTENT(OUT) :: corder_valid
+ INTEGER, INTENT(OUT) :: corder
+ INTEGER, INTENT(OUT) :: cset
+ INTEGER(HSIZE_T), INTENT(OUT) :: data_size
+ END FUNCTION h5aget_info_c
+ END INTERFACE
+
+ hdferr = h5aget_info_c(attr_id, corder_valid, corder, cset, data_size)
+
+ f_corder_valid =.FALSE.
+ IF (corder_valid .EQ. 1) f_corder_valid =.TRUE.
+
+
+
+ END SUBROUTINE h5aget_info_f
+
+!----------------------------------------------------------------------
+! Name: h5aget_info_by_idx_f
+!
+! Purpose: Retrieves attribute information, by attribute index position
+!
+! Inputs:
+! loc_id - Location of object to which attribute is attached
+! obj_name - Name of object to which attribute is attached, relative to location
+! idx_type - Type of index
+! order - Index traversal order
+! n - Attribute’s position in index
+!
+! Outputs: NOTE: In C it is defined as a structure: H5A_info_t
+! corder_valid - indicates whether the creation order data is valid for this attribute
+! corder - is a positive integer containing the creation order of the attribute
+! cset - indicates the character set used for the attribute’s name
+! data_size - indicates the size, in the number of characters, of the attribute
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! lapl_id - Link access property list
+!
+! Programmer: M. S. Breitenfeld
+! January, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+ SUBROUTINE h5aget_info_by_idx_f(loc_id, obj_name, idx_type, order, n, &
+ f_corder_valid, corder, cset, data_size, hdferr, lapl_id)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5aget_info_by_idx_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! Object identifier
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name ! Name of object to which attribute is attached
+ INTEGER, INTENT(IN) :: idx_type ! Type of index; Possible values are:
+ ! H5_INDEX_UNKNOWN_F - Unknown index type
+ ! H5_INDEX_NAME_F - Index on names
+ ! H5_INDEX_CRT_ORDER_F - Index on creation order
+ ! H5_INDEX_N_F - Number of indices defined
+ INTEGER, INTENT(IN) :: order ! Order in which to iterate over index; Possible values are:
+ ! H5_ITER_UNKNOWN_F - Unknown order
+ ! H5_ITER_INC_F - Increasing order
+ ! H5_ITER_DEC_F - Decreasing order
+ ! H5_ITER_NATIVE_F - No particular order, whatever is fastest
+
+ INTEGER(HSIZE_T), INTENT(IN) :: n ! Attribute’s position in index
+
+
+ LOGICAL, INTENT(OUT) :: f_corder_valid ! Indicates whether the creation order data is valid for this attribute
+ INTEGER, INTENT(OUT) :: corder ! Is a positive integer containing the creation order of the attribute
+ INTEGER, INTENT(OUT) :: cset ! Indicates the character set used for the attribute’s name
+ INTEGER(HSIZE_T), INTENT(OUT) :: data_size ! Indicates the size, in the number of characters, of the attribute
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER :: corder_valid
+ INTEGER(SIZE_T) :: obj_namelen
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+ INTEGER(HID_T) :: lapl_id_default
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5aget_info_by_idx_c(loc_id, obj_name, obj_namelen, idx_type, order, n, lapl_id_default, &
+ corder_valid, corder, cset, data_size)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AGET_INFO_BY_IDX_C'::h5aget_info_by_idx_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name
+ INTEGER, INTENT(IN) :: idx_type
+ INTEGER, INTENT(IN) :: order
+ INTEGER(HSIZE_T), INTENT(IN) :: n
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER, INTENT(OUT) :: corder_valid
+ INTEGER, INTENT(OUT) :: corder
+ INTEGER, INTENT(OUT) :: cset
+ INTEGER(HSIZE_T), INTENT(OUT) :: data_size
+
+ INTEGER(SIZE_T) :: obj_namelen
+ END FUNCTION h5aget_info_by_idx_c
+ END INTERFACE
+
+ obj_namelen = LEN(obj_name)
+
+ lapl_id_default = H5P_DEFAULT_F
+ IF(present(lapl_id)) lapl_id_default = lapl_id
+
+ hdferr = h5aget_info_by_idx_c(loc_id, obj_name, obj_namelen, idx_type, order, n, lapl_id_default, &
+ corder_valid, corder, cset, data_size)
+
+ f_corder_valid =.FALSE.
+ IF (corder_valid .EQ. 1) f_corder_valid =.TRUE.
+
+ END SUBROUTINE h5aget_info_by_idx_f
+
+!----------------------------------------------------------------------
+! Name: h5aget_info_by_name_f
+!
+! Purpose: Retrieves attribute information, by attribute name
+!
+! Inputs:
+! loc_id - Location of object to which attribute is attached
+! obj_name - Name of object to which attribute is attached, relative to location
+! attr_name - Attribute name
+!
+! Outputs: NOTE: In C it is defined as a structure: H5A_info_t
+! corder_valid - indicates whether the creation order data is valid for this attribute
+! corder - is a positive integer containing the creation order of the attribute
+! cset - indicates the character set used for the attribute’s name
+! data_size - indicates the size, in the number of characters, of the attribute
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! lapl_id - Link access property list
+!
+! Programmer: M. S. Breitenfeld
+! January, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+ SUBROUTINE h5aget_info_by_name_f(loc_id, obj_name, attr_name, &
+ f_corder_valid, corder, cset, data_size, hdferr, lapl_id)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5aget_info_by_name_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! Object identifier
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name ! Name of object to which attribute is attached
+ CHARACTER(LEN=*), INTENT(IN) :: attr_name ! Attribute name
+
+
+ LOGICAL, INTENT(OUT) :: f_corder_valid ! Indicates whether the creation order data is valid for this attribute
+ INTEGER, INTENT(OUT) :: corder ! Is a positive integer containing the creation order of the attribute
+ INTEGER, INTENT(OUT) :: cset ! Indicates the character set used for the attribute’s name
+ INTEGER(HSIZE_T), INTENT(OUT) :: data_size ! Indicates the size, in the number of characters, of the attribute
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER :: corder_valid
+ INTEGER(SIZE_T) :: obj_namelen
+ INTEGER(SIZE_T) :: attr_namelen
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+ INTEGER(HID_T) :: lapl_id_default
+
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5aget_info_by_name_c(loc_id, obj_name, obj_namelen, attr_name, attr_namelen, lapl_id_default, &
+ corder_valid, corder, cset, data_size)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AGET_INFO_BY_NAME_C'::h5aget_info_by_name_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name
+ INTEGER(SIZE_T), INTENT(IN) :: obj_namelen
+ CHARACTER(LEN=*), INTENT(IN) :: attr_name
+ INTEGER(SIZE_T), INTENT(IN) :: attr_namelen
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER, INTENT(OUT) :: corder_valid
+ INTEGER, INTENT(OUT) :: corder
+ INTEGER, INTENT(OUT) :: cset
+ INTEGER(HSIZE_T), INTENT(OUT) :: data_size
+
+ END FUNCTION h5aget_info_by_name_c
+ END INTERFACE
+
+ obj_namelen = LEN(obj_name)
+ attr_namelen = LEN(attr_name)
+
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+
+ hdferr = h5aget_info_by_name_c(loc_id, obj_name, obj_namelen, attr_name, attr_namelen, lapl_id_default, &
+ corder_valid, corder, cset, data_size)
+
+ f_corder_valid =.FALSE.
+ IF (corder_valid .EQ. 1) f_corder_valid =.TRUE.
+
+ END SUBROUTINE h5aget_info_by_name_f
+
+!----------------------------------------------------------------------
+! Name: H5Acreate_by_name_f
+!
+! Purpose: Creates an attribute attached to a specified object
+!
+! Inputs:
+! loc_id - Location or object identifier; may be dataset or group
+! obj_name - Name, relative to loc_id, of object that attribute is to be attached to
+! attr_name - Attribute name
+! type_id - Attribute datatype identifier
+! space_id - Attribute dataspace identifier
+!
+! Outputs:
+! attr - an attribute identifier
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! acpl_id - Attribute creation property list identifier (Currently not used.)
+! aapl_id - Attribute access property list identifier (Currently not used.)
+! lapl_id - Link access property list
+!
+! Programmer: M. S. Breitenfeld
+! February, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+ SUBROUTINE h5acreate_by_name_f(loc_id, obj_name, attr_name, type_id, space_id, attr, hdferr, &
+ acpl_id, aapl_id, lapl_id)
+
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5acreate_by_name_f
+!DEC$endif
+
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! Object identifier
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name ! Name of object to which attribute is attached
+ CHARACTER(LEN=*), INTENT(IN) :: attr_name ! Attribute name
+
+ INTEGER(HID_T), INTENT(IN) :: type_id ! Attribute datatype identifier
+ INTEGER(HID_T), INTENT(IN) :: space_id ! Attribute dataspace identifier
+
+ INTEGER(HID_T), INTENT(OUT) :: attr ! an attribute identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: acpl_id ! Attribute creation property list identifier (Currently not used.)
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: aapl_id ! Attribute access property list identifier (Currently not used.)
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+
+ INTEGER(SIZE_T) :: obj_namelen
+ INTEGER(SIZE_T) :: attr_namelen
+
+ INTEGER(HID_T) :: acpl_id_default
+ INTEGER(HID_T) :: aapl_id_default
+ INTEGER(HID_T) :: lapl_id_default
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5acreate_by_name_c(loc_id, obj_name, obj_namelen, attr_name, attr_namelen, &
+ type_id, space_id, acpl_id_default, aapl_id_default, lapl_id_default, attr)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5ACREATE_BY_NAME_C'::h5acreate_by_name_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name
+ INTEGER(SIZE_T), INTENT(IN) :: obj_namelen
+ CHARACTER(LEN=*), INTENT(IN) :: attr_name
+ INTEGER(SIZE_T), INTENT(IN) :: attr_namelen
+ INTEGER(HID_T), INTENT(IN) :: type_id
+ INTEGER(HID_T), INTENT(IN) :: space_id
+ INTEGER(HID_T) :: acpl_id_default
+ INTEGER(HID_T) :: aapl_id_default
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER(HID_T), INTENT(OUT) :: attr
+
+ END FUNCTION h5acreate_by_name_c
+ END INTERFACE
+
+ obj_namelen = LEN(obj_name)
+ attr_namelen = LEN(attr_name)
+
+ acpl_id_default = H5P_DEFAULT_F
+ aapl_id_default = H5P_DEFAULT_F
+ lapl_id_default = H5P_DEFAULT_F
+
+ IF(PRESENT(acpl_id)) acpl_id_default = acpl_id
+ IF(PRESENT(aapl_id)) aapl_id_default = aapl_id
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+
+ hdferr = h5acreate_by_name_c(loc_id, obj_name, obj_namelen, attr_name, attr_namelen, &
+ type_id, space_id, acpl_id_default, aapl_id_default, lapl_id_default, attr)
+ END SUBROUTINE h5acreate_by_name_f
+
+!----------------------------------------------------------------------
+! Name: H5Aexists_f
+!
+! Purpose: Determines whether an attribute with a given name exists on an object
+!
+! Inputs:
+! obj_id - Object identifier
+! attr_name - Attribute name
+!
+! Outputs:
+! attr_exists - attribute exists status
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M. S. Breitenfeld
+! February, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+ SUBROUTINE h5aexists_f(obj_id, attr_name, attr_exists, hdferr)
+
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5aexists_f
+!DEC$endif
+
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
+ CHARACTER(LEN=*), INTENT(IN) :: attr_name ! Attribute name
+ LOGICAL, INTENT(OUT) :: attr_exists ! .TRUE. if exists, .FALSE. otherwise
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER(HID_T) :: attr_exists_c
+ INTEGER(SIZE_T) :: attr_namelen
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5aexists_c(obj_id, attr_name, attr_namelen, attr_exists_c)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AEXISTS_C'::h5aexists_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: obj_id
+ CHARACTER(LEN=*), INTENT(IN) :: attr_name
+ INTEGER(SIZE_T) :: attr_namelen
+ INTEGER(HID_T) :: attr_exists_c
+ END FUNCTION h5aexists_c
+ END INTERFACE
+
+ attr_namelen = LEN(attr_name)
+
+ hdferr = h5aexists_c(obj_id, attr_name, attr_namelen, attr_exists_c)
+
+ attr_exists = .FALSE.
+ IF(attr_exists_c.GT.0) attr_exists = .TRUE.
+
+ END SUBROUTINE h5aexists_f
+
+!----------------------------------------------------------------------
+! Name: H5Aexists_by_name_f
+!
+! Purpose: Determines whether an attribute with a given name exists on an object
+!
+! Inputs:
+! loc_id - Location identifier
+! obj_name - Object name either relative to loc_id, absolute from the file’s root group, or '.' (a dot)
+! attr_name - Attribute name
+!
+! Outputs:
+! attr_exists - attribute exists status
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! lapl_id - Link access property list identifier
+!
+! Programmer: M. S. Breitenfeld
+! February, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+ SUBROUTINE h5aexists_by_name_f(loc_id, obj_name, attr_name, attr_exists, hdferr, lapl_id)
+
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5aexists_by_name_f
+!DEC$endif
+
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! Location identifier
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name ! Object name either relative to loc_id,
+ ! absolute from the file’s root group, or '.'
+ CHARACTER(LEN=*), INTENT(IN) :: attr_name ! Attribute name
+ LOGICAL, INTENT(OUT) :: attr_exists ! .TRUE. if exists, .FALSE. otherwise
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier
+ INTEGER :: attr_exists_c
+ INTEGER(SIZE_T) :: obj_namelen
+ INTEGER(SIZE_T) :: attr_namelen
+
+ INTEGER(HID_T) :: lapl_id_default
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5aexists_by_name_c(loc_id, obj_name, obj_namelen, attr_name, attr_namelen, lapl_id_default, attr_exists_c)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AEXISTS_BY_NAME_C'::h5aexists_by_name_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name
+ INTEGER(SIZE_T), INTENT(IN) :: obj_namelen
+ CHARACTER(LEN=*), INTENT(IN) :: attr_name
+ INTEGER(SIZE_T), INTENT(IN) :: attr_namelen
+ INTEGER(HID_T), INTENT(IN) :: lapl_id_default
+ INTEGER(HID_T), INTENT(OUT) :: attr_exists_c
+ END FUNCTION h5aexists_by_name_c
+ END INTERFACE
+
+ attr_namelen = LEN(attr_name)
+ obj_namelen = LEN(obj_name)
+
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+
+ hdferr = h5aexists_by_name_c(loc_id, obj_name, obj_namelen, attr_name, attr_namelen, lapl_id_default, attr_exists_c)
+
+ attr_exists = .FALSE.
+ IF(attr_exists_c.GT.0) attr_exists = .TRUE.
+
+ END SUBROUTINE h5aexists_by_name_f
+!----------------------------------------------------------------------
+! Name: H5Aopen_by_name_f
+!
+! Purpose: Opens an attribute for an object by object name and attribute name.
+!
+! Inputs:
+! loc_id - Location from which to find object to which attribute is attached
+! obj_name - Object name either relative to loc_id, absolute from the file’s root group, or '.' (a dot)
+! attr_name - Attribute name
+!
+! Outputs:
+! attr_id - attribute identifier
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! aapl_id - Attribute access property list (Currently unused; should be passed in as H5P_DEFAULT.)
+! lapl_id - Link access property list identifier
+!
+! Programmer: M. S. Breitenfeld
+! February, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+ SUBROUTINE h5aopen_by_name_f(loc_id, obj_name, attr_name, attr_id, hdferr, aapl_id, lapl_id)
+
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5aopen_by_name_f
+!DEC$endif
+
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! Location identifier
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name ! Object name either relative to loc_id,
+ ! absolute from the file’s root group, or '.'
+ CHARACTER(LEN=*), INTENT(IN) :: attr_name ! Attribute name
+ INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: aapl_id ! Attribute access property list
+ ! (Currently unused; should be passed in as H5P_DEFAULT_F)
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier
+
+ INTEGER(HID_T) :: aapl_id_default
+ INTEGER(HID_T) :: lapl_id_default
+
+ INTEGER(SIZE_T) :: obj_namelen
+ INTEGER(SIZE_T) :: attr_namelen
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5aopen_by_name_c(loc_id, obj_name, obj_namelen, attr_name, attr_namelen, &
+ aapl_id_default, lapl_id_default, attr_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5AOPEN_BY_NAME_C'::h5aopen_by_name_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name
+ INTEGER(SIZE_T), INTENT(IN) :: obj_namelen
+ CHARACTER(LEN=*), INTENT(IN) :: attr_name
+ INTEGER(SIZE_T), INTENT(IN) :: attr_namelen
+ INTEGER(HID_T) :: aapl_id_default
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER(HID_T), INTENT(OUT) :: attr_id
+ END FUNCTION h5aopen_by_name_c
+ END INTERFACE
+
+ attr_namelen = LEN(attr_name)
+ obj_namelen = LEN(obj_name)
+
+ aapl_id_default = H5P_DEFAULT_F
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(aapl_id)) aapl_id_default = aapl_id
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+
+ hdferr = h5aopen_by_name_c(loc_id, obj_name, obj_namelen, attr_name, attr_namelen, &
+ aapl_id_default, lapl_id_default, attr_id)
+
+ END SUBROUTINE h5aopen_by_name_f
+
+!----------------------------------------------------------------------
+! Name: h5arename_f
+!
+! Purpose: Renames an attribute
+!
+! Inputs:
+! loc_id - Location or object identifier; may be dataset or group
+! old_attr_name - Prior attribute name
+! new_attr_name - New attribute name
+!
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+!
+! Programmer: M.S. Breitenfeld
+! January, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5arename_f(loc_id, old_attr_name, new_attr_name, hdferr)
+
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5arename_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! Object identifier
+ CHARACTER(LEN=*), INTENT(IN) :: old_attr_name ! Prior attribute name
+ CHARACTER(LEN=*), INTENT(IN) :: new_attr_name ! New attribute name
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER(SIZE_T) :: old_attr_namelen
+ INTEGER(SIZE_T) :: new_attr_namelen
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5arename_c(loc_id, &
+ old_attr_name, old_attr_namelen, new_attr_name, new_attr_namelen)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5ARENAME_C'::h5arename_c
+ !DEC$ ENDIF
+ !DEC$ATTRIBUTES reference :: old_attr_name, new_attr_name
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: old_attr_name
+ INTEGER(SIZE_T) :: old_attr_namelen
+ CHARACTER(LEN=*), INTENT(IN) :: new_attr_name
+ INTEGER(SIZE_T) :: new_attr_namelen
+
+ END FUNCTION h5arename_c
+ END INTERFACE
+
+ old_attr_namelen = LEN(old_attr_name)
+ new_attr_namelen = LEN(new_attr_name)
+
+ hdferr = h5arename_c(loc_id, &
+ old_attr_name, old_attr_namelen, new_attr_name, new_attr_namelen)
+
+ END SUBROUTINE h5arename_f
+
+END MODULE H5A
- hdferr = h5aclose_c(attr_id)
- END SUBROUTINE h5aclose_f
- END MODULE H5A
diff --git a/fortran/src/H5Df.c b/fortran/src/H5Df.c
index 929a056..49f8266 100644
--- a/fortran/src/H5Df.c
+++ b/fortran/src/H5Df.c
@@ -30,10 +30,13 @@
* Returns: 0 on success, -1 on failure
* Programmer: Elena Pourmal
* Wednesday, August 4, 1999
- * Modifications:
+ * Modifications:
+ * - Added optional parameters introduced in version 1.8
+ * February, 2008
*---------------------------------------------------------------------------*/
int_f
-nh5dcreate_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id, hid_t_f *space_id, hid_t_f *crt_prp, hid_t_f *dset_id)
+nh5dcreate_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id, hid_t_f *space_id,
+ hid_t_f *lcpl_id, hid_t_f *dcpl_id, hid_t_f *dapl_id, hid_t_f *dset_id)
{
char *c_name = NULL;
hid_t c_dset_id;
@@ -48,7 +51,8 @@ nh5dcreate_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id, hid_
/*
* Call H5Dcreate2 function.
*/
- if((c_dset_id = H5Dcreate2((hid_t)*loc_id, c_name, (hid_t)*type_id, (hid_t)*space_id, H5P_DEFAULT, (hid_t)*crt_prp, H5P_DEFAULT)) < 0)
+ if((c_dset_id = H5Dcreate2((hid_t)*loc_id, c_name, (hid_t)*type_id, (hid_t)*space_id,
+ (hid_t)*lcpl_id, (hid_t)*dcpl_id, (hid_t)*dapl_id)) < 0)
goto DONE;
*dset_id = (hid_t_f)c_dset_id;
@@ -66,14 +70,15 @@ DONE:
* Inputs: loc_id - file or group identifier
* name - name of the dataset
* namelen - name length
+ * dapl_id - Dataset access property list
* Outputs: dset_id - dataset identifier
* Returns: 0 on success, -1 on failure
* Programmer: Elena Pourmal
* Wednesday, August 4, 1999
- * Modifications:
+ * Modifications: Added 1.8 parameter: dapl_id
*---------------------------------------------------------------------------*/
int_f
-nh5dopen_c(hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *dset_id)
+nh5dopen_c(hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *dapl_id, hid_t_f *dset_id)
{
char *c_name = NULL;
hid_t c_dset_id;
@@ -88,7 +93,7 @@ nh5dopen_c(hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *dset_id)
/*
* Call H5Dopen2 function.
*/
- if((c_dset_id = H5Dopen2((hid_t)*loc_id, c_name, H5P_DEFAULT)) < 0)
+ if((c_dset_id = H5Dopen2((hid_t)*loc_id, c_name, (hid_t)*dapl_id)) < 0)
goto DONE;
*dset_id = (hid_t_f)c_dset_id;
@@ -1257,18 +1262,21 @@ nh5dget_create_plist_c ( hid_t_f *dset_id , hid_t_f *plist_id)
/*----------------------------------------------------------------------------
- * Name: h5dextend_c
+ * Name: h5dset_extent_c
* Purpose: Call H5Dset_extent to extend dataset with unlimited dimensions
* Inputs: dset_id - identifier of the dataset
* Outputs: dims - array with the dimension sizes
* Returns: 0 on success, -1 on failure
* Programmer: Elena Pourmal
* Thursday, August 19, 1999
- * Modifications:
+ *
+ * Modifications: Changed name from the now obsolete h5dextend
+ * to h5dset_extent in order to match new fortran interface.
+ * -MSB- March 14, 2008
*---------------------------------------------------------------------------*/
int_f
-nh5dextend_c ( hid_t_f *dset_id , hsize_t_f *dims)
+nh5dset_extent_c ( hid_t_f *dset_id , hsize_t_f *dims)
{
hid_t c_space_id;
hsize_t c_dims[H5S_MAX_RANK];
@@ -1946,4 +1954,39 @@ nh5dget_space_status_c ( hid_t_f *dset_id, int_f *flag)
ret_value = 0;
return ret_value;
}
+/*----------------------------------------------------------------------------
+ * Name: h5dcreate_anon_c
+ * Purpose: Call H5Dcreate_anon
+ * Inputs:
+ * loc_id - Identifier of the file or group within which to create the dataset.
+ * type_id - Identifier of the datatype to use when creating the dataset.
+ * space_id - Identifier of the dataspace to use when creating the dataset.
+ * dcpl_id - Dataset creation property list identifier.
+ * dapl_id - Dataset access property list identifier.
+ * Outputs:
+ * dset_id - dataset identifier
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February, 2008
+ *---------------------------------------------------------------------------*/
+int_f
+nh5dcreate_anon_c (hid_t_f *loc_id, hid_t_f *type_id, hid_t_f *space_id,
+ hid_t_f *dcpl_id, hid_t_f *dapl_id, hid_t_f *dset_id)
+{
+ int ret_value = -1;
+
+ /*
+ * Call H5Dcreate2 function.
+ */
+ if((*dset_id = (hid_t_f)H5Dcreate_anon((hid_t)*loc_id, (hid_t)*type_id, (hid_t)*space_id,
+ (hid_t)*dcpl_id, (hid_t)*dapl_id)) < 0)
+ goto DONE;
+
+ ret_value = 0;
+
+ DONE:
+ return ret_value;
+}
+
diff --git a/fortran/src/H5Dff.f90 b/fortran/src/H5Dff.f90
index 34bcdf4..a94339f 100644
--- a/fortran/src/H5Dff.f90
+++ b/fortran/src/H5Dff.f90
@@ -16,111 +16,115 @@
!
! This file contains Fortran90 interfaces for H5D functions.
!
- MODULE H5D
- USE H5GLOBAL
-
- INTERFACE h5dwrite_f
-
- MODULE PROCEDURE h5dwrite_reference_obj
- MODULE PROCEDURE h5dwrite_reference_dsetreg
- MODULE PROCEDURE h5dwrite_integer_scalar
- MODULE PROCEDURE h5dwrite_integer_1
- MODULE PROCEDURE h5dwrite_integer_2
- MODULE PROCEDURE h5dwrite_integer_3
- MODULE PROCEDURE h5dwrite_integer_4
- MODULE PROCEDURE h5dwrite_integer_5
- MODULE PROCEDURE h5dwrite_integer_6
- MODULE PROCEDURE h5dwrite_integer_7
- MODULE PROCEDURE h5dwrite_char_scalar
- MODULE PROCEDURE h5dwrite_char_1
- MODULE PROCEDURE h5dwrite_char_2
- MODULE PROCEDURE h5dwrite_char_3
- MODULE PROCEDURE h5dwrite_char_4
- MODULE PROCEDURE h5dwrite_char_5
- MODULE PROCEDURE h5dwrite_char_6
- MODULE PROCEDURE h5dwrite_char_7
- MODULE PROCEDURE h5dwrite_real_scalar
- MODULE PROCEDURE h5dwrite_real_1
- MODULE PROCEDURE h5dwrite_real_2
- MODULE PROCEDURE h5dwrite_real_3
- MODULE PROCEDURE h5dwrite_real_4
- MODULE PROCEDURE h5dwrite_real_5
- MODULE PROCEDURE h5dwrite_real_6
- MODULE PROCEDURE h5dwrite_real_7
-! Comment if on Crays
- MODULE PROCEDURE h5dwrite_double_scalar
- MODULE PROCEDURE h5dwrite_double_1
- MODULE PROCEDURE h5dwrite_double_2
- MODULE PROCEDURE h5dwrite_double_3
- MODULE PROCEDURE h5dwrite_double_4
- MODULE PROCEDURE h5dwrite_double_5
- MODULE PROCEDURE h5dwrite_double_6
- MODULE PROCEDURE h5dwrite_double_7
-! End comment if on Crays
- END INTERFACE
-
- INTERFACE h5dread_f
-
- MODULE PROCEDURE h5dread_reference_obj
- MODULE PROCEDURE h5dread_reference_dsetreg
- MODULE PROCEDURE h5dread_integer_scalar
- MODULE PROCEDURE h5dread_integer_1
- MODULE PROCEDURE h5dread_integer_2
- MODULE PROCEDURE h5dread_integer_3
- MODULE PROCEDURE h5dread_integer_4
- MODULE PROCEDURE h5dread_integer_5
- MODULE PROCEDURE h5dread_integer_6
- MODULE PROCEDURE h5dread_integer_7
- MODULE PROCEDURE h5dread_char_scalar
- MODULE PROCEDURE h5dread_char_1
- MODULE PROCEDURE h5dread_char_2
- MODULE PROCEDURE h5dread_char_3
- MODULE PROCEDURE h5dread_char_4
- MODULE PROCEDURE h5dread_char_5
- MODULE PROCEDURE h5dread_char_6
- MODULE PROCEDURE h5dread_char_7
- MODULE PROCEDURE h5dread_real_scalar
- MODULE PROCEDURE h5dread_real_1
- MODULE PROCEDURE h5dread_real_2
- MODULE PROCEDURE h5dread_real_3
- MODULE PROCEDURE h5dread_real_4
- MODULE PROCEDURE h5dread_real_5
- MODULE PROCEDURE h5dread_real_6
- MODULE PROCEDURE h5dread_real_7
-! Comment if on Crays
- MODULE PROCEDURE h5dread_double_scalar
- MODULE PROCEDURE h5dread_double_1
- MODULE PROCEDURE h5dread_double_2
- MODULE PROCEDURE h5dread_double_3
- MODULE PROCEDURE h5dread_double_4
- MODULE PROCEDURE h5dread_double_5
- MODULE PROCEDURE h5dread_double_6
- MODULE PROCEDURE h5dread_double_7
-! End comment if on Crays
-
- END INTERFACE
-
- INTERFACE h5dwrite_vl_f
- MODULE PROCEDURE h5dwrite_vl_integer
- MODULE PROCEDURE h5dwrite_vl_real
- MODULE PROCEDURE h5dwrite_vl_string
- END INTERFACE
-
- INTERFACE h5dread_vl_f
- MODULE PROCEDURE h5dread_vl_integer
- MODULE PROCEDURE h5dread_vl_real
- 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
+MODULE H5D
+ USE H5GLOBAL
+
+ INTERFACE h5dwrite_f
+
+ MODULE PROCEDURE h5dwrite_reference_obj
+ MODULE PROCEDURE h5dwrite_reference_dsetreg
+ MODULE PROCEDURE h5dwrite_integer_scalar
+ MODULE PROCEDURE h5dwrite_integer_1
+ MODULE PROCEDURE h5dwrite_integer_2
+ MODULE PROCEDURE h5dwrite_integer_3
+ MODULE PROCEDURE h5dwrite_integer_4
+ MODULE PROCEDURE h5dwrite_integer_5
+ MODULE PROCEDURE h5dwrite_integer_6
+ MODULE PROCEDURE h5dwrite_integer_7
+ MODULE PROCEDURE h5dwrite_char_scalar
+ MODULE PROCEDURE h5dwrite_char_1
+ MODULE PROCEDURE h5dwrite_char_2
+ MODULE PROCEDURE h5dwrite_char_3
+ MODULE PROCEDURE h5dwrite_char_4
+ MODULE PROCEDURE h5dwrite_char_5
+ MODULE PROCEDURE h5dwrite_char_6
+ MODULE PROCEDURE h5dwrite_char_7
+ MODULE PROCEDURE h5dwrite_real_scalar
+ MODULE PROCEDURE h5dwrite_real_1
+ MODULE PROCEDURE h5dwrite_real_2
+ MODULE PROCEDURE h5dwrite_real_3
+ MODULE PROCEDURE h5dwrite_real_4
+ MODULE PROCEDURE h5dwrite_real_5
+ MODULE PROCEDURE h5dwrite_real_6
+ MODULE PROCEDURE h5dwrite_real_7
+ ! Comment if on Crays
+ MODULE PROCEDURE h5dwrite_double_scalar
+ MODULE PROCEDURE h5dwrite_double_1
+ MODULE PROCEDURE h5dwrite_double_2
+ MODULE PROCEDURE h5dwrite_double_3
+ MODULE PROCEDURE h5dwrite_double_4
+ MODULE PROCEDURE h5dwrite_double_5
+ MODULE PROCEDURE h5dwrite_double_6
+ MODULE PROCEDURE h5dwrite_double_7
+ ! End comment if on Crays
+ END INTERFACE
+
+ INTERFACE h5dread_f
+
+ MODULE PROCEDURE h5dread_reference_obj
+ MODULE PROCEDURE h5dread_reference_dsetreg
+ MODULE PROCEDURE h5dread_integer_scalar
+ MODULE PROCEDURE h5dread_integer_1
+ MODULE PROCEDURE h5dread_integer_2
+ MODULE PROCEDURE h5dread_integer_3
+ MODULE PROCEDURE h5dread_integer_4
+ MODULE PROCEDURE h5dread_integer_5
+ MODULE PROCEDURE h5dread_integer_6
+ MODULE PROCEDURE h5dread_integer_7
+ MODULE PROCEDURE h5dread_char_scalar
+ MODULE PROCEDURE h5dread_char_1
+ MODULE PROCEDURE h5dread_char_2
+ MODULE PROCEDURE h5dread_char_3
+ MODULE PROCEDURE h5dread_char_4
+ MODULE PROCEDURE h5dread_char_5
+ MODULE PROCEDURE h5dread_char_6
+ MODULE PROCEDURE h5dread_char_7
+ MODULE PROCEDURE h5dread_real_scalar
+ MODULE PROCEDURE h5dread_real_1
+ MODULE PROCEDURE h5dread_real_2
+ MODULE PROCEDURE h5dread_real_3
+ MODULE PROCEDURE h5dread_real_4
+ MODULE PROCEDURE h5dread_real_5
+ MODULE PROCEDURE h5dread_real_6
+ MODULE PROCEDURE h5dread_real_7
+ ! Comment if on Crays
+ MODULE PROCEDURE h5dread_double_scalar
+ MODULE PROCEDURE h5dread_double_1
+ MODULE PROCEDURE h5dread_double_2
+ MODULE PROCEDURE h5dread_double_3
+ MODULE PROCEDURE h5dread_double_4
+ MODULE PROCEDURE h5dread_double_5
+ MODULE PROCEDURE h5dread_double_6
+ MODULE PROCEDURE h5dread_double_7
+ ! End comment if on Crays
+
+ END INTERFACE
+
+ INTERFACE h5dwrite_vl_f
+ MODULE PROCEDURE h5dwrite_vl_integer
+ MODULE PROCEDURE h5dwrite_vl_real
+ MODULE PROCEDURE h5dwrite_vl_string
+ END INTERFACE
+
+ INTERFACE h5dread_vl_f
+ MODULE PROCEDURE h5dread_vl_integer
+ MODULE PROCEDURE h5dread_vl_real
+ 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
+
+ INTERFACE h5dextend_f
+ MODULE PROCEDURE h5dset_extent_f
+ END INTERFACE
+
+
+CONTAINS
!----------------------------------------------------------------------
! Name: h5dcreate_f
@@ -138,64 +142,86 @@
! Success: 0
! Failure: -1
! Optional parameters:
-! createion_prp - dataset creation property list identifier
+! creation_prp - Dataset creation property list
+! lcpl_id - Link creation property list
+! dapl_id - Dataset access property list
!
! Programmer: Elena Pourmal
! August 12, 1999
!
-! Modifications: Explicit Fortran interfaces were added for
-! called C functions (it is needed for Windows
-! port). February 28, 2001
+! Modifications:
+! - Explicit Fortran interfaces were added for
+! called C functions (it is needed for Windows
+! port). February 28, 2001
+!
+! - Added version's 1.8 new optional parameters
+! February, 2008
!
! Comment:
!----------------------------------------------------------------------
- SUBROUTINE h5dcreate_f(loc_id, name, type_id, space_id, dset_id, &
- hdferr, creation_prp)
+ SUBROUTINE h5dcreate_f(loc_id, name, type_id, space_id, dset_id, &
+ hdferr, dcpl_id, lcpl_id, dapl_id)
+
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5dcreate_f
!DEC$endif
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the dataset
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- INTEGER(HID_T), INTENT(OUT) :: dset_id ! Dataset identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- INTEGER(HID_T), OPTIONAL, INTENT(IN) :: creation_prp
- ! Dataset creation propertly
- ! list identifier
- INTEGER(HID_T) :: creation_prp_default
- INTEGER :: namelen ! Name length
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the dataset
+ INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+ INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
+ INTEGER(HID_T), INTENT(OUT) :: dset_id ! Dataset identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: dcpl_id ! Dataset creation property list
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: dapl_id ! Dataset access property list
+
+ INTEGER(HID_T) :: lcpl_id_default
+ INTEGER(HID_T) :: dcpl_id_default
+ INTEGER(HID_T) :: dapl_id_default
+
+ INTEGER :: namelen ! Name length
-! INTEGER, EXTERNAL :: h5dcreate_c
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5dcreate_c(loc_id, name, namelen, type_id, &
- space_id, creation_prp_default, dset_id)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5DCREATE_C'::h5dcreate_c
- !DEC$ ENDIF
- !DEC$ATTRIBUTES reference :: name
- INTEGER(HID_T), INTENT(IN) :: loc_id
- CHARACTER(LEN=*), INTENT(IN) :: name
- INTEGER :: namelen
- INTEGER(HID_T), INTENT(IN) :: type_id
- INTEGER(HID_T), INTENT(IN) :: space_id
- INTEGER(HID_T) :: creation_prp_default
- INTEGER(HID_T), INTENT(OUT) :: dset_id
- END FUNCTION h5dcreate_c
- END INTERFACE
-
- creation_prp_default = H5P_DEFAULT_F
- if (present(creation_prp)) creation_prp_default = creation_prp
- namelen = LEN(name)
- hdferr = h5dcreate_c(loc_id, name, namelen, type_id, space_id, &
- creation_prp_default, dset_id)
- END SUBROUTINE h5dcreate_f
+ INTERFACE
+ INTEGER FUNCTION h5dcreate_c(loc_id, name, namelen, type_id, &
+ space_id, lcpl_id_default, dcpl_id_default, dapl_id_default, dset_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5DCREATE_C'::h5dcreate_c
+ !DEC$ ENDIF
+ !DEC$ATTRIBUTES reference :: name
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: name
+ INTEGER :: namelen
+ INTEGER(HID_T), INTENT(IN) :: type_id
+ INTEGER(HID_T), INTENT(IN) :: space_id
+
+ INTEGER(HID_T) :: lcpl_id_default
+ INTEGER(HID_T) :: dcpl_id_default
+ INTEGER(HID_T) :: dapl_id_default
+
+ INTEGER(HID_T), INTENT(OUT) :: dset_id
+ END FUNCTION h5dcreate_c
+ END INTERFACE
+
+ lcpl_id_default = H5P_DEFAULT_F
+ dcpl_id_default = H5P_DEFAULT_F
+ dapl_id_default = H5P_DEFAULT_F
+
+ IF(PRESENT(lcpl_id)) lcpl_id_default = lcpl_id
+ IF(PRESENT(dcpl_id)) dcpl_id_default = dcpl_id
+ IF(PRESENT(dapl_id)) dapl_id_default = dapl_id
+
+ namelen = LEN(name)
+ hdferr = h5dcreate_c(loc_id, name, namelen, type_id, space_id, &
+ lcpl_id_default, dcpl_id_default, dapl_id_default, dset_id)
+
+ END SUBROUTINE h5dcreate_f
!----------------------------------------------------------------------
! Name: h5dopen_f
@@ -211,19 +237,22 @@
! Success: 0
! Failure: -1
! Optional parameters:
-! NONE
+! dapl_id - Dataset access property list
!
! Programmer: Elena Pourmal
! August 12, 1999
!
-! Modifications: Explicit Fortran interfaces were added for
-! called C functions (it is needed for Windows
-! port). February 28, 2001
+! Modifications: -Explicit Fortran interfaces were added for
+! called C functions (it is needed for Windows
+! port). February 28, 2001
+!
+! -Added 1.8 (optional) parameter dapl_id
+! February, 2008, M.S. Breitenfeld
!
! Comment:
!----------------------------------------------------------------------
- SUBROUTINE h5dopen_f(loc_id, name, dset_id, hdferr)
+ SUBROUTINE h5dopen_f(loc_id, name, dset_id, hdferr, dapl_id)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5dopen_f
@@ -231,15 +260,18 @@
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the dataset
- INTEGER(HID_T), INTENT(OUT) :: dset_id ! Dataset identifier
+ INTEGER(HID_T), INTENT(OUT) :: dset_id ! Dataset identifier
INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: dapl_id ! Dataset access property list
INTEGER :: namelen ! Name length
+ INTEGER(HID_T) :: dapl_id_default
+
! INTEGER, EXTERNAL :: h5dopen_c
! MS FORTRAN needs explicit interface for C functions called here.
!
INTERFACE
- INTEGER FUNCTION h5dopen_c(loc_id, name, namelen, dset_id)
+ INTEGER FUNCTION h5dopen_c(loc_id, name, namelen, dapl_id_default, dset_id)
USE H5GLOBAL
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
!DEC$ ATTRIBUTES C,reference,decorate,alias:'H5DOPEN_C'::h5dopen_c
@@ -248,12 +280,16 @@
INTEGER(HID_T), INTENT(IN) :: loc_id
CHARACTER(LEN=*), INTENT(IN) :: name
INTEGER :: namelen
+ INTEGER(HID_T), INTENT(IN) :: dapl_id_default
INTEGER(HID_T), INTENT(OUT) :: dset_id
END FUNCTION h5dopen_c
END INTERFACE
+ dapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(dapl_id)) dapl_id_default = dapl_id
+
namelen = LEN(name)
- hdferr = h5dopen_c(loc_id, name, namelen, dset_id)
+ hdferr = h5dopen_c(loc_id, name, namelen, dapl_id_default, dset_id)
END SUBROUTINE h5dopen_f
@@ -332,7 +368,7 @@
INTEGER(HID_T) :: mem_space_id_default
INTEGER(HID_T) :: file_space_id_default
INTEGER(HADDR_T), ALLOCATABLE, DIMENSION(:) :: ref_buf
- INTEGER :: i,j
+ INTEGER :: j
! INTEGER, EXTERNAL :: h5dwrite_ref_obj_c
! MS FORTRAN needs explicit interface for C functions called here.
@@ -2499,7 +2535,7 @@
INTEGER(HID_T) :: mem_space_id_default
INTEGER(HID_T) :: file_space_id_default
INTEGER(HADDR_T), ALLOCATABLE, DIMENSION(:) :: ref_buf
- INTEGER :: i,j
+ INTEGER :: j
! INTEGER, EXTERNAL :: h5dread_ref_obj_c
! MS FORTRAN needs explicit interface for C functions called here.
@@ -4705,7 +4741,7 @@
END SUBROUTINE h5dget_type_f
!----------------------------------------------------------------------
-! Name: h5dextend_f
+! Name: h5dset_extent (instead of obsolete name: h5dextend_f)
!
! Purpose: Extends a dataset with unlimited dimension.
!
@@ -4727,14 +4763,18 @@
! called C functions (it is needed for Windows
! port). February 28, 2001
!
+! Changed name from the now obsolete h5dextend_f
+! to h5dset_extent_f. Provided interface to old name
+! for backward compatability. -MSB- March 14, 2008
+!
! Comment:
!----------------------------------------------------------------------
- SUBROUTINE h5dextend_f(dataset_id, size, hdferr)
+ SUBROUTINE H5Dset_extent_f(dataset_id, size, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
-!DEC$attributes dllexport :: h5dextend_f
+!DEC$attributes dllexport :: H5Dset_extent_f
!DEC$endif
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier
@@ -4743,22 +4783,22 @@
! dimensions' sizes
INTEGER, INTENT(OUT) :: hdferr ! Error code
-! INTEGER, EXTERNAL :: h5dextend_c
+! INTEGER, EXTERNAL :: H5Dset_extent_c
! MS FORTRAN needs explicit interface for C functions called here.
!
INTERFACE
- INTEGER FUNCTION h5dextend_c(dataset_id, size)
+ INTEGER FUNCTION H5Dset_extent_c(dataset_id, size)
USE H5GLOBAL
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5DEXTEND_C'::h5dextend_c
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5DSET_EXTENT_C'::H5Dset_extent_c
!DEC$ ENDIF
INTEGER(HID_T), INTENT(IN) :: dataset_id
INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: size
- END FUNCTION h5dextend_c
+ END FUNCTION H5Dset_extent_c
END INTERFACE
- hdferr = h5dextend_c(dataset_id, size)
- END SUBROUTINE h5dextend_f
+ hdferr = H5Dset_extent_c(dataset_id, size)
+ END SUBROUTINE H5Dset_extent_f
!----------------------------------------------------------------------
@@ -5215,7 +5255,6 @@
INTEGER(HID_T) :: mem_space_id_default
INTEGER(HID_T) :: file_space_id_default
! CHARACTER, DIMENSION(dims(1)*dims(2)) :: tmp_buf
- integer i, j
INTERFACE
INTEGER FUNCTION h5dwrite_vl_string_c(dset_id, mem_type_id, &
@@ -5646,4 +5685,79 @@
hdferr = h5dget_space_status_c(dset_id, flag)
END SUBROUTINE h5dget_space_status_f
- END MODULE H5D
+!----------------------------------------------------------------------
+! Name: h5dcreate_anon_f
+!
+! Purpose: Creates a dataset in a file without linking it into the file structure
+!
+! Inputs:
+! loc_id - Identifier of the file or group within which to create the dataset.
+! type_id - Identifier of the datatype to use when creating the dataset.
+! space_id - Identifier of the dataspace to use when creating the dataset.
+! Outputs:
+! dset_id - dataset identifier
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! dcpl_id - Dataset creation property list identifier.
+! dapl_id - Dataset access property list identifier.
+!
+! Programmer: M.S. Breitenfeld
+! February 11, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5dcreate_anon_f(loc_id, type_id, space_id, dset_id, hdferr, dcpl_id, dapl_id)
+
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5dcreate_anon_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier.
+ INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier.
+ INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier.
+ INTEGER(HID_T), INTENT(OUT) :: dset_id ! Dataset identifier.
+ INTEGER, INTENT(OUT) :: hdferr ! Error code.
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: dcpl_id ! Dataset creation property list identifier.
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: dapl_id ! Dataset access property list identifier.
+
+ INTEGER(HID_T) :: dcpl_id_default
+ INTEGER(HID_T) :: dapl_id_default
+
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5dcreate_anon_c(loc_id, type_id, space_id, dcpl_id_default, dapl_id_default, dset_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5DCREATE_ANON_C'::h5dcreate_anon_c
+ !DEC$ ENDIF
+ !DEC$ATTRIBUTES reference :: name
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ INTEGER(HID_T), INTENT(IN) :: type_id
+ INTEGER(HID_T), INTENT(IN) :: space_id
+ INTEGER(HID_T) :: dcpl_id_default
+ INTEGER(HID_T) :: dapl_id_default
+ INTEGER(HID_T), INTENT(OUT) :: dset_id
+ END FUNCTION h5dcreate_anon_c
+ END INTERFACE
+
+ dcpl_id_default = H5P_DEFAULT_F
+ dapl_id_default = H5P_DEFAULT_F
+
+ IF(PRESENT(dcpl_id)) dcpl_id_default = dcpl_id
+ IF(PRESENT(dapl_id)) dapl_id_default = dapl_id
+
+ hdferr = h5dcreate_anon_c(loc_id, type_id, space_id, dcpl_id_default, dapl_id_default, dset_id)
+
+ END SUBROUTINE h5dcreate_anon_f
+
+END MODULE H5D
+
+
diff --git a/fortran/src/H5Ff.c b/fortran/src/H5Ff.c
index 575d92b..2190d05 100644
--- a/fortran/src/H5Ff.c
+++ b/fortran/src/H5Ff.c
@@ -508,7 +508,7 @@ nh5fget_name_c(hid_t_f *obj_id, size_t_f *size, _fcd buf, size_t_f *buflen)
HGOTO_DONE(FAIL);
/*
- * Call H5Aget_name function
+ * Call H5Fget_name function
*/
if ((size_c = (size_t_f)H5Fget_name((hid_t)*obj_id, c_buf, (size_t)*buflen)) < 0)
HGOTO_DONE(FAIL);
diff --git a/fortran/src/H5Fff.f90 b/fortran/src/H5Fff.f90
index 3926656..6cf6c05 100644
--- a/fortran/src/H5Fff.f90
+++ b/fortran/src/H5Fff.f90
@@ -58,14 +58,14 @@
!DEC$endif
!
- IMPLICIT NONE
+ IMPLICIT NONE
CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the file
INTEGER, INTENT(IN) :: access_flags ! File access flags
INTEGER(HID_T), INTENT(OUT) :: file_id ! File identifier
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTEGER(HID_T), OPTIONAL, INTENT(IN) :: creation_prp
! File creation propertly
- ! list identifier
+ ! list identifier
INTEGER(HID_T), OPTIONAL, INTENT(IN) :: access_prp
! File access property list
! identifier
diff --git a/fortran/src/H5Gf.c b/fortran/src/H5Gf.c
index 0316c03..f2a4187 100644
--- a/fortran/src/H5Gf.c
+++ b/fortran/src/H5Gf.c
@@ -16,6 +16,7 @@
/* This files contains C stubs for H5G Fortran APIs */
#include "H5f90.h"
+#include "H5Eprivate.h"
/*----------------------------------------------------------------------------
* Name: h5gcreate_c
@@ -35,9 +36,9 @@
*---------------------------------------------------------------------------*/
int_f
nh5gcreate_c(hid_t_f *loc_id, _fcd name, int_f *namelen, size_t_f *size_hint,
- hid_t_f *grp_id)
+ hid_t_f *grp_id, hid_t_f *lcpl_id, hid_t_f *gcpl_id, hid_t_f *gapl_id )
{
- hid_t gcpl_id = -1; /* Group creation property list */
+ hid_t c_gcpl_id = -1; /* Group creation property list */
char *c_name = NULL;
hid_t c_grp_id;
int_f ret_value = -1;
@@ -51,19 +52,19 @@ nh5gcreate_c(hid_t_f *loc_id, _fcd name, int_f *namelen, size_t_f *size_hint,
/*
* Call H5Gcreate function.
*/
- if(*size_hint == OBJECT_NAMELEN_DEFAULT_F )
- c_grp_id = H5Gcreate2((hid_t)*loc_id, c_name, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+ if(*size_hint == OBJECT_NAMELEN_DEFAULT_F ){
+ c_grp_id = H5Gcreate2((hid_t)*loc_id, c_name,(hid_t)*lcpl_id,(hid_t)*gcpl_id,(hid_t)*gapl_id);}
else {
- /* Create the group creation property list */
- if((gcpl_id = H5Pcreate(H5P_GROUP_CREATE)) < 0)
- goto DONE;
+ /* Create the group creation property list */
+ if((c_gcpl_id = H5Pcreate(H5P_GROUP_CREATE)) < 0)
+ goto DONE;
- /* Set the local heap size hint */
- if(H5Pset_local_heap_size_hint(gcpl_id, (size_t)*size_hint) < 0)
- goto DONE;
+ /* Set the local heap size hint */
+ if(H5Pset_local_heap_size_hint(c_gcpl_id, (size_t)*size_hint) < 0)
+ goto DONE;
- /* Create the group */
- c_grp_id = H5Gcreate2((hid_t)*loc_id, c_name, H5P_DEFAULT, gcpl_id, H5P_DEFAULT);
+ /* Create the group */
+ c_grp_id = H5Gcreate2((hid_t)*loc_id, c_name, H5P_DEFAULT, c_gcpl_id, H5P_DEFAULT);
}
if(c_grp_id < 0)
goto DONE;
@@ -73,8 +74,8 @@ nh5gcreate_c(hid_t_f *loc_id, _fcd name, int_f *namelen, size_t_f *size_hint,
ret_value = 0;
DONE:
- if(gcpl_id > 0)
- H5Pclose(gcpl_id);
+ if(c_gcpl_id > 0)
+ H5Pclose(c_gcpl_id);
if(c_name)
HDfree(c_name);
return ret_value;
@@ -86,6 +87,7 @@ DONE:
* Inputs: loc_id - file or group identifier
* name - name of the group
* namelen - name length
+ * gapl_id - Group access property list identifier
* Outputs: grp_id - group identifier
* Returns: 0 on success, -1 on failure
* Programmer: Elena Pourmal
@@ -93,7 +95,7 @@ DONE:
* Modifications:
*---------------------------------------------------------------------------*/
int_f
-nh5gopen_c(hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *grp_id)
+nh5gopen_c(hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *gapl_id, hid_t_f *grp_id)
{
char *c_name = NULL;
hid_t c_grp_id;
@@ -108,7 +110,7 @@ nh5gopen_c(hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *grp_id)
/*
* Call H5Gopen function.
*/
- if((c_grp_id = H5Gopen2((hid_t)*loc_id, c_name, H5P_DEFAULT)) < 0)
+ if((c_grp_id = H5Gopen2((hid_t)*loc_id, c_name, (hid_t)*gapl_id)) < 0)
goto DONE;
/* Everything OK, set values to return */
@@ -659,3 +661,210 @@ DONE:
return ret_value;
}
+/*----------------------------------------------------------------------------
+ * Name: h5gcreate_anon_c
+ * Purpose: Call H5Gcreate_anon
+ * Inputs:
+ * loc_id - Location identifier
+ * gcpl_id - Group creation property list identifier
+ * gapl_id - Group access property list identifier
+ *
+ * Outputs: grp_id - group identifier
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February 15, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5gcreate_anon_c(hid_t_f *loc_id, hid_t_f *gcpl_id, hid_t_f *gapl_id, hid_t_f *grp_id)
+{
+
+ int_f ret_value=0; /* Return value */
+
+ if ((*grp_id = (hid_t_f)H5Gcreate_anon((hid_t)*loc_id,(hid_t)*gcpl_id,(hid_t)*gapl_id)) < 0)
+ HGOTO_DONE(FAIL);
+
+done:
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5gget_create_plist_c
+ * Purpose: Call H5Gget_create_plist
+ * Inputs:
+ * grp_id - group identifier
+ *
+ * Outputs: gcpl_id - Group creation property list identifier
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February 15, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5gget_create_plist_c(hid_t_f *grp_id, hid_t_f *gcpl_id )
+{
+ int_f ret_value=0; /* Return value */
+
+ if ((*gcpl_id = (hid_t_f)H5Gget_create_plist((hid_t)*grp_id)) < 0)
+ HGOTO_DONE(FAIL);
+
+done:
+ return ret_value;
+}
+
+
+/*----------------------------------------------------------------------------
+ * Name: h5gget_info_c
+ * Purpose: Call H5Gget_info
+ * Inputs: group_id - Group identifier
+ * Outputs:
+ * storage_type - Type of storage for links in group:
+ * H5G_STORAGE_TYPE_COMPACT: Compact storage
+ * H5G_STORAGE_TYPE_DENSE: Indexed storage
+ * H5G_STORAGE_TYPE_SYMBOL_TABLE: Symbol tables, the original HDF5 structure
+ *
+ * nlinks - Number of links in group
+ * max_corder - Current maximum creation order value for group
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February 15, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+int_f
+nh5gget_info_c (hid_t_f *group_id, int_f *storage_type, int_f *nlinks, int_f *max_corder)
+{
+
+ int_f ret_value = 0; /* Return value */
+ H5G_info_t ginfo;
+
+ /*
+ * Call H5Gget_info function.
+ */
+ if(H5Gget_info((hid_t)*group_id,&ginfo) < 0)
+ HGOTO_DONE(FAIL);
+
+ /* Unpack the structure */
+
+ *storage_type = (int_f)ginfo.storage_type;
+ *nlinks = (int_f)ginfo.nlinks;
+ *max_corder = (int_f)ginfo.max_corder;
+
+done:
+ return ret_value;
+}
+
+
+/*----------------------------------------------------------------------------
+ * Name: h5gget_info_by_idx_c
+ * Purpose: Call H5Gget_info_by_idx
+ * Inputs:
+ * loc_id - File or group identifier
+ * group_name - Name of group containing group for which information is to be retrieved
+ * group_namelen - name length
+ * index_type - Index type
+ * order - Order of the count in the index
+ * n - Position in the index of the group for which information is retrieved
+ * lapl_id - Link access property list
+ * Outputs:
+ * storage_type - Type of storage for links in group:
+ * H5G_STORAGE_TYPE_COMPACT: Compact storage
+ * H5G_STORAGE_TYPE_DENSE: Indexed storage
+ * H5G_STORAGE_TYPE_SYMBOL_TABLE: Symbol tables, the original HDF5 structure
+ *
+ * nlinks - Number of links in group
+ * max_corder - Current maximum creation order value for group
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February 18, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+int_f
+nh5gget_info_by_idx_c(hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen,
+ hid_t_f *index_type, hid_t_f *order, hsize_t_f *n, hid_t_f *lapl_id,
+ int_f *storage_type, int_f *nlinks, int_f *max_corder)
+
+{
+ char *c_group_name = NULL; /* Buffer to hold group name C string */
+ int_f ret_value = 0; /* Return value */
+ H5G_info_t ginfo;
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_group_name = HD5f2cstring(group_name, (size_t)*group_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Call H5Gget_info_by_idx function.
+ */
+ if(H5Gget_info_by_idx((hid_t)*loc_id,c_group_name, (H5_index_t)*index_type,(H5_iter_order_t)*order,(hsize_t)*n,
+ &ginfo, (hid_t)*lapl_id) < 0)
+ HGOTO_DONE(FAIL);
+
+ /* Unpack the structure */
+
+ *storage_type = (int_f)ginfo.storage_type;
+ *nlinks = (int_f)ginfo.nlinks;
+ *max_corder = (int_f)ginfo.max_corder;
+
+ done:
+ if(c_group_name)
+ HDfree(c_group_name);
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5gget_info_by_name_c
+ * Purpose: Call H5Gget_info_by_name
+ * Inputs:
+ * loc_id - File or group identifier
+ * group_name - Name of group containing group for which information is to be retrieved
+ * group_namelen - name length
+ * lapl_id - Link access property list
+ * Outputs:
+ * storage_type - Type of storage for links in group:
+ * H5G_STORAGE_TYPE_COMPACT: Compact storage
+ * H5G_STORAGE_TYPE_DENSE: Indexed storage
+ * H5G_STORAGE_TYPE_SYMBOL_TABLE: Symbol tables, the original HDF5 structure
+ *
+ * nlinks - Number of links in group
+ * max_corder - Current maximum creation order value for group
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February 18, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+int_f
+nh5gget_info_by_name_c(hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen, hid_t_f *lapl_id,
+ int_f *storage_type, int_f *nlinks, int_f *max_corder)
+
+{
+ char *c_group_name = NULL; /* Buffer to hold group name C string */
+ int_f ret_value = 0; /* Return value */
+ H5G_info_t ginfo;
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_group_name = HD5f2cstring(group_name, (size_t)*group_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Call H5Gget_info_by_name function.
+ */
+ if(H5Gget_info_by_name((hid_t)*loc_id, c_group_name, &ginfo, (hid_t)*lapl_id) < 0)
+ HGOTO_DONE(FAIL);
+
+ /* Unpack the structure */
+
+ *storage_type = (int_f)ginfo.storage_type;
+ *nlinks = (int_f)ginfo.nlinks;
+ *max_corder = (int_f)ginfo.max_corder;
+
+ done:
+ if(c_group_name)
+ HDfree(c_group_name);
+ return ret_value;
+}
+
diff --git a/fortran/src/H5Gff.f90 b/fortran/src/H5Gff.f90
index 5866539..6e4dd4f 100644
--- a/fortran/src/H5Gff.f90
+++ b/fortran/src/H5Gff.f90
@@ -16,10 +16,18 @@
!
! This file contains Fortran90 interfaces for H5F functions.
!
- MODULE H5G
- USE H5GLOBAL
-
- CONTAINS
+MODULE H5G
+ USE H5GLOBAL
+
+! PRIVATE :: h5gcreate1_f
+! PRIVATE :: h5gcreate2_f
+
+! INTERFACE h5gcreate_f
+! MODULE PROCEDURE h5gcreate1_f
+! MODULE PROCEDURE h5gcreate2_f
+! END INTERFACE
+
+CONTAINS
!----------------------------------------------------------------------
! Name: h5gcreate_f
@@ -35,9 +43,12 @@
! Success: 0
! Failure: -1
! Optional parameters:
-! size_hint - a parameter indicating the number of bytes
+! size_hint - a parameter indicating the number of bytes
! to reserve for the names that will appear
! in the group
+! lcpl_id - Property list for link creation
+! gcpl_id - Property list for group creation
+! gapl_id - Property list for group access
!
! Programmer: Elena Pourmal
! August 12, 1999
@@ -46,56 +57,170 @@
! called C functions (it is needed for Windows
! port). March 5, 2001
!
+! Added additional optional paramaters in 1.8
+! MSB - February 27, 2008
+!
! Comment:
!----------------------------------------------------------------------
- SUBROUTINE h5gcreate_f(loc_id, name, grp_id, hdferr, size_hint)
+ SUBROUTINE h5gcreate_f(loc_id, name, grp_id, hdferr, size_hint, lcpl_id, gcpl_id, gapl_id)
!
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5gcreate_f
!DEC$endif
-!
-
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group
- INTEGER(HID_T), INTENT(OUT) :: grp_id ! Group identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- INTEGER(SIZE_T), OPTIONAL, INTENT(IN) :: size_hint
- ! Parameter indicating
- ! the number of bytes
- ! to reserve for the
- ! names that will appear
- ! in the group
- INTEGER :: namelen ! Length of the name character string
- INTEGER(SIZE_T) :: size_hint_default
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group
+ INTEGER(HID_T), INTENT(OUT) :: grp_id ! Group identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER(SIZE_T), OPTIONAL, INTENT(IN) :: size_hint
+ ! Parameter indicating
+ ! the number of bytes
+ ! to reserve for the
+ ! names that will appear
+ ! in the group. Set to OBJECT_NAMELEN_DEFAULT_F
+ ! if using any of the optional
+ ! parameters lcpl_id, gcpl_id, and/or gapl_id when not
+ ! using keywords in specifying the optional parameters
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Property list for link creation
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gcpl_id ! Property list for group creation
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gapl_id ! Property list for group access
+
+ INTEGER(HID_T) :: lcpl_id_default
+ INTEGER(HID_T) :: gcpl_id_default
+ INTEGER(HID_T) :: gapl_id_default
+
+ INTEGER :: namelen ! Length of the name character string
+ INTEGER(SIZE_T) :: size_hint_default
-! INTEGER, EXTERNAL :: h5gcreate_c
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5gcreate_c(loc_id, name, namelen, &
- size_hint_default, grp_id)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5GCREATE_C'::h5gcreate_c
- !DEC$ ENDIF
- !DEC$ATTRIBUTES reference :: name
- INTEGER(HID_T), INTENT(IN) :: loc_id
- CHARACTER(LEN=*), INTENT(IN) :: name
- INTEGER :: namelen
- INTEGER(SIZE_T) :: size_hint_default
- INTEGER(HID_T), INTENT(OUT) :: grp_id
- END FUNCTION h5gcreate_c
- END INTERFACE
+ INTERFACE
+ INTEGER FUNCTION h5gcreate_c(loc_id, name, namelen, &
+ size_hint_default, grp_id, lcpl_id_default, gcpl_id_default, gapl_id_default)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5GCREATE_C'::h5gcreate_c
+ !DEC$ ENDIF
+ !DEC$ATTRIBUTES reference :: name
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: name
+ INTEGER :: namelen
+ INTEGER(SIZE_T) :: size_hint_default
+ INTEGER(HID_T), INTENT(OUT) :: grp_id
+ INTEGER(HID_T) :: lcpl_id_default
+ INTEGER(HID_T) :: gcpl_id_default
+ INTEGER(HID_T) :: gapl_id_default
+ END FUNCTION h5gcreate_c
+ END INTERFACE
- size_hint_default = OBJECT_NAMELEN_DEFAULT_F
- if (present(size_hint)) size_hint_default = size_hint
- namelen = LEN(name)
- hdferr = h5gcreate_c(loc_id, name, namelen, size_hint_default, &
- grp_id)
+ size_hint_default = OBJECT_NAMELEN_DEFAULT_F
+ IF (PRESENT(size_hint)) size_hint_default = size_hint
+ lcpl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lcpl_id)) lcpl_id_default = lcpl_id
+ gcpl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(gcpl_id)) gcpl_id_default = gcpl_id
+ gapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(gapl_id)) gapl_id_default = gapl_id
+
+ namelen = LEN(name)
+
+ hdferr = h5gcreate_c(loc_id, name, namelen, size_hint_default, grp_id, &
+ lcpl_id_default, gcpl_id_default, gapl_id_default)
+
+ END SUBROUTINE h5gcreate_f
+
+!!$!----------------------------------------------------------------------
+!!$! Name: h5gcreate2_f
+!!$!
+!!$! Purpose: Creates a new group.
+!!$!
+!!$! Inputs:
+!!$! loc_id - location identifier
+!!$! name - group name at the specified location
+!!$! Outputs:
+!!$! grp_id - group identifier
+!!$! hdferr: - error code
+!!$! Success: 0
+!!$! Failure: -1
+!!$! Optional parameters:
+!!$!
+!!$! lcpl_id - Property list for link creation
+!!$! gcpl_id - Property list for group creation
+!!$! gapl_id - Property list for group access
+!!$!
+!!$! Programmer: M.S. BREITENFELD
+!!$! February 27, 2008
+!!$!
+!!$! Modifications:
+!!$!
+!!$! Comment: Needed to switch the first 2 arguments to avoid conflect
+!!$! with h5gcreate1_f
+!!$!----------------------------------------------------------------------
+!!$
+!!$ SUBROUTINE h5gcreate2_f(name, loc_id, grp_id, hdferr, &
+!!$ lcpl_id, gcpl_id, gapl_id)
+!!$!
+!!$!This definition is needed for Windows DLLs
+!!$!DEC$if defined(BUILD_HDF5_DLL)
+!!$!DEC$attributes dllexport :: h5gcreate_f
+!!$!DEC$endif
+!!$!
+!!$ IMPLICIT NONE
+!!$ CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group
+!!$ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+!!$ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!!$ INTEGER(HID_T), INTENT(OUT) :: grp_id ! Group identifier
+!!$
+!!$ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Property list for link creation
+!!$ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gcpl_id ! Property list for group creation
+!!$ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gapl_id ! Property list for group access
+!!$
+!!$ INTEGER(HID_T) :: lcpl_id_default
+!!$ INTEGER(HID_T) :: gcpl_id_default
+!!$ INTEGER(HID_T) :: gapl_id_default
+!!$
+!!$ INTEGER(SIZE_T) :: OBJECT_NAMELEN_DEFAULT ! Dummy argument to pass to c call
+!!$ INTEGER :: namelen ! Length of the name character string
+!!$
+!!$! MS FORTRAN needs explicit interface for C functions called here.
+!!$!
+!!$ INTERFACE
+!!$ INTEGER FUNCTION h5gcreate_c(loc_id, name, namelen, &
+!!$ OBJECT_NAMELEN_DEFAULT, grp_id, lcpl_id_default, gcpl_id_default, gapl_id_default)
+!!$ USE H5GLOBAL
+!!$ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+!!$ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5GCREATE_C'::h5gcreate_c
+!!$ !DEC$ ENDIF
+!!$ !DEC$ATTRIBUTES reference :: name
+!!$ INTEGER(HID_T), INTENT(IN) :: loc_id
+!!$ CHARACTER(LEN=*), INTENT(IN) :: name
+!!$ INTEGER :: namelen
+!!$ INTEGER(SIZE_T) :: OBJECT_NAMELEN_DEFAULT
+!!$ INTEGER(HID_T) :: lcpl_id_default
+!!$ INTEGER(HID_T) :: gcpl_id_default
+!!$ INTEGER(HID_T) :: gapl_id_default
+!!$ INTEGER(HID_T), INTENT(OUT) :: grp_id
+!!$ END FUNCTION h5gcreate_c
+!!$ END INTERFACE
+!!$
+!!$ namelen = LEN(name)
+!!$ OBJECT_NAMELEN_DEFAULT = OBJECT_NAMELEN_DEFAULT_F
+!!$
+!!$ lcpl_id_default = H5P_DEFAULT_F
+!!$ IF(PRESENT(lcpl_id)) lcpl_id_default = lcpl_id
+!!$ gcpl_id_default = H5P_DEFAULT_F
+!!$ IF(PRESENT(gcpl_id)) gcpl_id_default = gcpl_id
+!!$ gapl_id_default = H5P_DEFAULT_F
+!!$ IF(PRESENT(gapl_id)) gapl_id_default = gapl_id
+!!$
+!!$
+!!$ hdferr = h5gcreate_c(loc_id, name, namelen, OBJECT_NAMELEN_DEFAULT, grp_id, &
+!!$ lcpl_id_default, gcpl_id_default, gapl_id_default)
+!!$
+!!$ END SUBROUTINE h5gcreate2_f
- END SUBROUTINE h5gcreate_f
!----------------------------------------------------------------------
! Name: h5gopen_f
@@ -111,54 +236,62 @@
! Success: 0
! Failure: -1
! Optional parameters:
-! NONE
+! gapl_id - Group access property list identifier
!
! Programmer: Elena Pourmal
! August 12, 1999
!
! Modifications: Explicit Fortran interfaces were added for
! called C functions (it is needed for Windows
-! port). March 5, 2001
+! port). March 5, 2001
+!
+! Added 1.8 (optional) parameter gapl_id
+! February, 2008 M.S. Breitenfeld
!
! Comment:
!----------------------------------------------------------------------
- SUBROUTINE h5gopen_f(loc_id, name, grp_id, hdferr)
+ SUBROUTINE h5gopen_f(loc_id, name, grp_id, hdferr, gapl_id)
!
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5gopen_f
!DEC$endif
!
-
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group
- INTEGER(HID_T), INTENT(OUT) :: grp_id ! File identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
- INTEGER :: namelen ! Length of the name character string
-
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group
+ INTEGER(HID_T), INTENT(OUT) :: grp_id ! File identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gapl_id ! Group access property list identifier
+
+ INTEGER(HID_T) :: gapl_id_default
+ INTEGER :: namelen ! Length of the name character string
+
! INTEGER, EXTERNAL :: h5gopen_c
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5gopen_c(loc_id, name, namelen, grp_id)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5GOPEN_C'::h5gopen_c
- !DEC$ ENDIF
- !DEC$ATTRIBUTES reference :: name
- INTEGER(HID_T), INTENT(IN) :: loc_id
- CHARACTER(LEN=*), INTENT(IN) :: name
- INTEGER :: namelen
- INTEGER(HID_T), INTENT(OUT) :: grp_id
- END FUNCTION h5gopen_c
- END INTERFACE
-
- namelen = LEN(name)
- hdferr = h5gopen_c(loc_id, name, namelen, grp_id)
+ INTERFACE
+ INTEGER FUNCTION h5gopen_c(loc_id, name, namelen, gapl_id_default, grp_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5GOPEN_C'::h5gopen_c
+ !DEC$ ENDIF
+ !DEC$ATTRIBUTES reference :: name
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: name
+ INTEGER :: namelen
+ INTEGER(HID_T), INTENT(IN) :: gapl_id_default
+ INTEGER(HID_T), INTENT(OUT) :: grp_id
+ END FUNCTION h5gopen_c
+ END INTERFACE
- END SUBROUTINE h5gopen_f
+ gapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(gapl_id)) gapl_id_default = gapl_id
+
+ namelen = LEN(name)
+ hdferr = h5gopen_c(loc_id, name, namelen, gapl_id_default, grp_id)
+
+ END SUBROUTINE h5gopen_f
!----------------------------------------------------------------------
! Name: h5gclose_f
@@ -929,7 +1062,362 @@
namelen = LEN(name)
hdferr = h5gget_comment_c(loc_id, name, namelen, size, buffer)
- END SUBROUTINE h5gget_comment_f
+ END SUBROUTINE h5gget_comment_f
+
+!----------------------------------------------------------------------
+! Name: H5Gcreate_anon_f
+!
+! Purpose: Creates a new empty group without linking it into the file structure.
+!
+! Inputs:
+! loc_id - Location identifier
+! Outputs:
+! grp_id - group identifier
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! gcpl_id - Group creation property list identifier
+! gapl_id - Group access property list identifier
+!
+! Programmer: M.S. Breitenfeld
+! February 15, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+ SUBROUTINE h5Gcreate_anon_f(loc_id, grp_id, hdferr, gcpl_id, gapl_id)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5gcreate_anon_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ INTEGER(HID_T), INTENT(OUT) :: grp_id ! Group identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gcpl_id ! Property list for group creation
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gapl_id ! Property list for group access
+
+ INTEGER(HID_T) :: gcpl_id_default
+ INTEGER(HID_T) :: gapl_id_default
+
+ INTERFACE
+ INTEGER FUNCTION h5gcreate_anon_c(loc_id, gcpl_id_default, gapl_id_default, grp_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5GCREATE_ANON_C'::h5gcreate_anon_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ INTEGER(HID_T), INTENT(IN) :: gcpl_id_default ! Property list for group creation
+ INTEGER(HID_T), INTENT(IN) :: gapl_id_default ! Property list for group access
+ INTEGER(HID_T), INTENT(OUT) :: grp_id ! Group identifier
+ END FUNCTION h5gcreate_anon_c
+ END INTERFACE
+
+ gcpl_id_default = H5P_DEFAULT_F
+ gapl_id_default = H5P_DEFAULT_F
+
+ IF(PRESENT(gcpl_id)) gcpl_id_default = gcpl_id
+ IF(PRESENT(gapl_id)) gapl_id_default = gapl_id
+
+ hdferr = h5gcreate_anon_c(loc_id, gcpl_id_default, gapl_id_default, grp_id)
+
+ END SUBROUTINE h5Gcreate_anon_f
+
+!----------------------------------------------------------------------
+! Name: H5Gget_create_plist_f
+!
+! Purpose: Gets a group creation property list identifier.
+!
+! Inputs:
+! grp_id - group identifier
+! Outputs:
+! gcpl_id - Group creation property list identifier
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+!
+! Programmer: M.S. Breitenfeld
+! February 15, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+ SUBROUTINE h5gget_create_plist_f(grp_id, gcpl_id, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5gget_create_plist_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: grp_id ! Group identifier
+ INTEGER(HID_T), INTENT(OUT) :: gcpl_id ! Property list for group creation
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5gget_create_plist_c(grp_id, gcpl_id )
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5GGET_CREATE_PLIST_C'::h5gget_create_plist_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: grp_id
+ INTEGER(HID_T), INTENT(OUT) :: gcpl_id
+ END FUNCTION h5gget_create_plist_c
+ END INTERFACE
+
+ hdferr = h5gget_create_plist_c(grp_id, gcpl_id )
+
+ END SUBROUTINE h5gget_create_plist_f
+
+!----------------------------------------------------------------------
+! Name: h5gget_info_f
+!
+! Purpose: Retrieves information about a group
+!
+! Inputs:
+! group_id - Group identifier
+!
+! Outputs: NOTE: In C it is defined as a structure: H5G_info_t
+!
+! storage_type - Type of storage for links in group
+! H5G_STORAGE_TYPE_COMPACT: Compact storage
+! H5G_STORAGE_TYPE_DENSE: Indexed storage
+! H5G_STORAGE_TYPE_SYMBOL_TABLE: Symbol tables, the original HDF5 structure
+! nlinks - Number of links in group
+! max_corder - Current maximum creation order value for group
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M. S. Breitenfeld
+! February 15, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5gget_info_f(group_id, storage_type, nlinks, max_corder, hdferr)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5gget_info_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: group_id ! Group identifier
+
+ INTEGER, INTENT(OUT) :: storage_type ! Type of storage for links in group:
+ ! H5G_STORAGE_TYPE_COMPACT_F: Compact storage
+ ! H5G_STORAGE_TYPE_DENSE_F: Indexed storage
+ ! H5G_STORAGE_TYPE_SYMBOL_TABLE_F: Symbol tables, the original HDF5 structure
+ INTEGER, INTENT(OUT) :: nlinks ! Number of links in group
+ INTEGER, INTENT(OUT) :: max_corder ! Current maximum creation order value for group
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5gget_info_c(group_id, storage_type, nlinks, max_corder)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5GGET_INFO_C'::h5gget_info_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: group_id
+ INTEGER, INTENT(OUT) :: storage_type
+ INTEGER, INTENT(OUT) :: nlinks
+ INTEGER, INTENT(OUT) :: max_corder
+ END FUNCTION h5gget_info_c
+ END INTERFACE
+
+ hdferr = h5gget_info_c(group_id, storage_type, nlinks, max_corder)
+
+ END SUBROUTINE h5gget_info_f
+
+!----------------------------------------------------------------------
+! Name: h5gget_info_by_idx_f
+!
+! Purpose: Retrieves information about a group, according to the group’s position within an index.
+!
+! Inputs:
+! loc_id - File or group identifier
+! group_name - Name of group containing group for which information is to be retrieved
+! index_type - Index type
+! order - Order of the count in the index
+! n - Position in the index of the group for which information is retrieved
+!
+! Outputs: NOTE: In C the following are defined as a structure: H5G_info_t
+!
+! storage_type - Type of storage for links in group
+! H5G_STORAGE_TYPE_COMPACT: Compact storage
+! H5G_STORAGE_TYPE_DENSE: Indexed storage
+! H5G_STORAGE_TYPE_SYMBOL_TABLE: Symbol tables, the original HDF5 structure
+! nlinks - Number of links in group
+! max_corder - Current maximum creation order value for group
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! lapl_id - Link access property list
+!
+! Programmer: M. S. Breitenfeld
+! February 18, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5gget_info_by_idx_f(loc_id, group_name, index_type, order, n, &
+ storage_type, nlinks, max_corder, hdferr, lapl_id)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5gget_info_by_idx_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: group_name ! Name of group containing group for which information is to be retrieved
+ INTEGER(HID_T), INTENT(IN) :: index_type ! Index type
+ INTEGER(HID_T), INTENT(IN) :: order ! Order of the count in the index
+ INTEGER(HSIZE_T), INTENT(IN) :: n ! Position in the index of the group for which information is retrieved
+
+ INTEGER, INTENT(OUT) :: storage_type ! Type of storage for links in group:
+ ! H5G_STORAGE_TYPE_COMPACT_F: Compact storage
+ ! H5G_STORAGE_TYPE_DENSE_F: Indexed storage
+ ! H5G_STORAGE_TYPE_SYMBOL_TABLE_F: Symbol tables, the original HDF5 structure
+ INTEGER, INTENT(OUT) :: nlinks ! Number of links in group
+ INTEGER, INTENT(OUT) :: max_corder ! Current maximum creation order value for group
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER(SIZE_T) :: group_name_len ! length of group name
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5gget_info_by_idx_c(loc_id, group_name, group_name_len, index_type, order, n, lapl_id_default, &
+ storage_type, nlinks, max_corder)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5GGET_INFO_BY_IDX_C'::h5gget_info_by_idx_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: group_name
+ INTEGER(HID_T), INTENT(IN) :: index_type
+ INTEGER(HID_T), INTENT(IN) :: order
+ INTEGER(HSIZE_T), INTENT(IN) :: n
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER, INTENT(OUT) :: storage_type
+ INTEGER, INTENT(OUT) :: nlinks
+ INTEGER, INTENT(OUT) :: max_corder
+
+ INTEGER(SIZE_T) :: group_name_len
+
+ END FUNCTION h5gget_info_by_idx_c
+ END INTERFACE
+
+ group_name_len = LEN(group_name)
+
+ lapl_id_default = H5P_DEFAULT_F
+ IF(present(lapl_id)) lapl_id_default = lapl_id
+
+ hdferr = h5gget_info_by_idx_c(loc_id, group_name, group_name_len, &
+ index_type, order, n, lapl_id_default, &
+ storage_type, nlinks, max_corder)
+
+ END SUBROUTINE h5gget_info_by_idx_f
+
+!----------------------------------------------------------------------
+! Name: h5gget_info_by_name_f
+!
+! Purpose: Retrieves information about a group.
+!
+! Inputs:
+! loc_id - File or group identifier
+! group_name - Name of group containing group for which information is to be retrieved
+!
+! Outputs: NOTE: In C the following are defined as a structure: H5G_info_t
+!
+! storage_type - Type of storage for links in group
+! H5G_STORAGE_TYPE_COMPACT: Compact storage
+! H5G_STORAGE_TYPE_DENSE: Indexed storage
+! H5G_STORAGE_TYPE_SYMBOL_TABLE: Symbol tables, the original HDF5 structure
+! nlinks - Number of links in group
+! max_corder - Current maximum creation order value for group
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! lapl_id - Link access property list
+!
+! Programmer: M. S. Breitenfeld
+! February 18, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5gget_info_by_name_f(loc_id, group_name, &
+ storage_type, nlinks, max_corder, hdferr, lapl_id)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5gget_info_by_name_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: group_name ! Name of group containing group for which information is to be retrieved
+
+ INTEGER, INTENT(OUT) :: storage_type ! Type of storage for links in group:
+ ! H5G_STORAGE_TYPE_COMPACT_F: Compact storage
+ ! H5G_STORAGE_TYPE_DENSE_F: Indexed storage
+ ! H5G_STORAGE_TYPE_SYMBOL_TABLE_F: Symbol tables, the original HDF5 structure
+ INTEGER, INTENT(OUT) :: nlinks ! Number of links in group
+ INTEGER, INTENT(OUT) :: max_corder ! Current maximum creation order value for group
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER(SIZE_T) :: group_name_len ! length of group name
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5gget_info_by_name_c(loc_id, group_name, group_name_len, lapl_id_default, &
+ storage_type, nlinks, max_corder)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5GGET_INFO_BY_NAME_C'::h5gget_info_by_name_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: group_name
+ INTEGER(HID_T), INTENT(IN) :: lapl_id_default
+ INTEGER, INTENT(OUT) :: storage_type
+ INTEGER, INTENT(OUT) :: nlinks
+ INTEGER, INTENT(OUT) :: max_corder
+
+ INTEGER(SIZE_T) :: group_name_len
+
+ END FUNCTION h5gget_info_by_name_c
+ END INTERFACE
+
+ group_name_len = LEN(group_name)
+
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+ hdferr = h5gget_info_by_name_c(loc_id, group_name, group_name_len, lapl_id_default, &
+ storage_type, nlinks, max_corder)
+
+ END SUBROUTINE h5gget_info_by_name_f
- END MODULE H5G
+END MODULE H5G
diff --git a/fortran/src/H5If.c b/fortran/src/H5If.c
index d948259..b4c7660 100644
--- a/fortran/src/H5If.c
+++ b/fortran/src/H5If.c
@@ -54,7 +54,11 @@ nh5iget_type_c (hid_t_f *obj_id, int_f *type)
* Returns: length of the name on success, -1 on failure
* Programmer: Elena Pourmal
* Wednesday, March 12, 2003
- * Modifications:
+ * Modifications:
+ * Changed the size of c_buf_size to c_buf_size + 1, which
+ * fixes the problem of truncating the string by 1 if the
+ * exact size of the string (buf_size) is passed in.
+ * M.S. Breitenfeld, April 21, 2008
*---------------------------------------------------------------------------*/
int_f
nh5iget_name_c(hid_t_f *obj_id, _fcd buf, size_t_f *buf_size, size_t_f *name_size)
@@ -68,8 +72,8 @@ nh5iget_name_c(hid_t_f *obj_id, _fcd buf, size_t_f *buf_size, size_t_f *name_siz
/*
* Allocate buffer to hold name of an attribute
*/
- c_buf_size = (size_t)*buf_size;
- c_buf = (char *)HDmalloc(c_buf_size +1);
+ c_buf_size = (size_t)*buf_size +1;
+ c_buf = (char *)HDmalloc(c_buf_size);
if (c_buf == NULL) return ret_value;
/*
@@ -82,7 +86,7 @@ nh5iget_name_c(hid_t_f *obj_id, _fcd buf, size_t_f *buf_size, size_t_f *name_siz
/*
* Convert C name to FORTRAN and place it in the given buffer
*/
- HD5packFstring(c_buf, _fcdtocp(buf), c_buf_size);
+ HD5packFstring(c_buf, _fcdtocp(buf), c_buf_size-1);
*name_size = (size_t_f)c_size;
ret_value = 0;
diff --git a/fortran/src/H5Lf.c b/fortran/src/H5Lf.c
new file mode 100644
index 0000000..208ad19
--- /dev/null
+++ b/fortran/src/H5Lf.c
@@ -0,0 +1,817 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * Copyright by the Board of Trustees of the University of Illinois. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the files COPYING and Copyright.html. COPYING can be found at the root *
+ * of the source code distribution tree; Copyright.html can be found at the *
+ * root level of an installed copy of the electronic HDF5 document set and *
+ * is linked from the top-level documents page. It can also be found at *
+ * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
+ * access to either file, you may request a copy from help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/* This files contains C stubs for H5L Fortran APIs */
+
+#include "H5f90.h"
+#include "H5Eprivate.h"
+
+/*----------------------------------------------------------------------------
+ * Name: h5lcopy_c
+ * Purpose: Call H5Lcopy
+ * Inputs:
+ * src_loc_id - Location identifier of the source link
+ * src_name - Name of the link to be copied
+ * src_namelen - length of the name
+ * dest_loc_id - Location identifier specifying the destination of the copy
+ * dest_name - Name to be assigned to the NEW copy
+ * dest_namelen - Length of the name
+ * loc_id - Identifier of the file or group containing the object
+ * name - Name of the link to delete
+ * lcpl_id - Link creation property list identifier
+ * lapl_id - Link access property list identifier
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * January, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5lcopy_c(hid_t_f *src_loc_id, _fcd src_name, size_t_f *src_namelen, hid_t_f *dest_loc_id,
+ _fcd dest_name, size_t_f *dest_namelen,
+ hid_t_f *lcpl_id, hid_t_f *lapl_id)
+{
+ char *c_src_name = NULL;
+ char *c_dest_name = NULL;
+ int ret_value = 0;
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_src_name = HD5f2cstring(src_name, (size_t)*src_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+ if((c_dest_name = HD5f2cstring(dest_name, (size_t)*dest_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Call H5Lcopy function.
+ */
+ if( H5Lcopy( (hid_t)*src_loc_id, c_src_name, (hid_t) *dest_loc_id,
+ c_dest_name, (hid_t)*lcpl_id, (hid_t)*lapl_id ) < 0)
+ HGOTO_DONE(FAIL);
+
+done:
+ if(c_src_name)
+ HDfree(c_src_name);
+ if(c_dest_name)
+ HDfree(c_dest_name);
+
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5lcreate_external_c
+ * Purpose: Call H5Lcreate_external_c
+ * Inputs:
+ * file_name - Name of the file containing the target object. Neither the file nor the target object is
+ * required to exist. May be the file the link is being created in.
+ * obj_name - Path within the target file to the target object.
+ * link_loc_id - The file or group identifier for the new link.
+ * link_name - The name of the new link.
+ * lcpl_id - Link creation property list identifier.
+ * lapl_id - Link access property list identifier.
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February 29, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5lcreate_external_c(_fcd file_name, size_t_f *file_namelen, _fcd obj_name, size_t_f *obj_namelen,
+ hid_t_f *link_loc_id, _fcd link_name, size_t_f *link_namelen,
+ hid_t_f *lcpl_id, hid_t_f *lapl_id)
+
+{
+ char *c_file_name = NULL;
+ char *c_obj_name = NULL;
+ char *c_link_name = NULL;
+ int ret_value = 0;
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_file_name = HD5f2cstring(file_name, (size_t)*file_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+ if((c_obj_name = HD5f2cstring(obj_name, (size_t)*obj_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+ if((c_link_name = HD5f2cstring(link_name, (size_t)*link_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Call H5Lcopy function.
+ */
+ if( H5Lcreate_external( c_file_name, c_obj_name, (hid_t) *link_loc_id, c_link_name,
+ (hid_t) *lcpl_id, (hid_t) *lapl_id) < 0)
+ HGOTO_DONE(FAIL);
+
+done:
+ if(c_file_name)
+ HDfree(c_file_name);
+ if(c_obj_name)
+ HDfree(c_obj_name);
+ if(c_link_name)
+ HDfree(c_link_name);
+
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5ldelete_c
+ * Purpose: Call H5Ldelete
+ * Inputs:
+ *
+ * loc_id - Identifier of the file or group containing the object
+ * name - Name of the link to delete
+ * lapl_id - Link access property list identifier
+ * namelen - length of name
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * January, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5ldelete_c ( hid_t_f *loc_id, _fcd name, size_t_f *namelen, hid_t_f *lapl_id )
+{
+ char *c_name = NULL;
+ int ret_value = 0;
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_name = HD5f2cstring(name, (size_t)*namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Call H5Ldelete function.
+ */
+ if( H5Ldelete( (hid_t)*loc_id, c_name, (hid_t)*lapl_id ) < 0)
+ HGOTO_DONE(FAIL);
+
+done:
+ if(c_name)
+ HDfree(c_name);
+
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5lcreate_soft_c
+ * Purpose: Call H5Lcreate_soft
+ * Inputs:
+ *
+ * target_path - Path to the target object, which is not required to exist.
+ * link_loc_id - The file or group identifier for the new link.
+ * link_name - The name of the new link.
+ * lcpl_id - Link creation property list identifier.
+ * lapl_id - Link access property list identifier.
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February 20, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5lcreate_soft_c(_fcd target_path, size_t_f *target_path_len,
+ hid_t_f *link_loc_id,
+ _fcd link_name, size_t_f *link_name_len,
+ hid_t_f *lcpl_id, hid_t_f *lapl_id )
+{
+ char *c_target_path = NULL;
+ char *c_link_name = NULL;
+ int ret_value = 0;
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_target_path = HD5f2cstring(target_path, (size_t)*target_path_len)) == NULL)
+ HGOTO_DONE(FAIL);
+ if((c_link_name = HD5f2cstring(link_name, (size_t)*link_name_len)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Call H5Adelete function.
+ */
+ if ( H5Lcreate_soft(c_target_path,(hid_t)*link_loc_id, c_link_name, (hid_t)*lcpl_id, (hid_t)*lapl_id) < 0)
+ HGOTO_DONE(FAIL);
+
+ done:
+ if(c_target_path)
+ HDfree(c_target_path);
+ if(c_link_name)
+ HDfree(c_link_name);
+
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5lcreate_hard_c
+ * Purpose: Call H5Lcreate_hard
+ * Inputs:
+ * obj_loc_id - The file or group identifier for the target object.
+ * obj_name - Name of the target object, which must already exist.
+ * obj_namelen - Name length
+ * link_loc_id - The file or group identifier for the new link.
+ * link_name - The name of the new link.
+ * link_namelen- Name length
+ * lcpl_id - Link creation property list identifier.
+ * lapl_id - Link access property list identifier.
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February 27, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5lcreate_hard_c(hid_t_f *obj_loc_id, _fcd obj_name, size_t_f *obj_namelen,
+ hid_t_f *link_loc_id,
+ _fcd link_name, size_t_f *link_namelen,
+ hid_t_f *lcpl_id, hid_t_f *lapl_id )
+{
+ char *c_obj_name = NULL;
+ char *c_link_name = NULL;
+ int ret_value = 0;
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_obj_name = HD5f2cstring(obj_name, (size_t)*obj_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+ if((c_link_name = HD5f2cstring(link_name, (size_t)*link_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Call H5Lcreate_hard function.
+ */
+ if ( H5Lcreate_hard((hid_t)*obj_loc_id, c_obj_name, (hid_t)*link_loc_id, c_link_name, (hid_t)*lcpl_id, (hid_t)*lapl_id) < 0)
+ HGOTO_DONE(FAIL);
+
+ done:
+ if(c_obj_name)
+ HDfree(c_obj_name);
+ if(c_link_name)
+ HDfree(c_link_name);
+
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5ldelete_by_idx_c
+ * Purpose: Calls h5ldelete_by_idx
+ * Inputs:
+ * loc_id - File or group identifier specifying location of subject group
+ * group_name - Name of subject group
+ * group_namelen - Name length
+ * index_field - Type of index; Possible values are:
+ * H5_INDEX_UNKNOWN_F = -1 - Unknown index type
+ * H5_INDEX_NAME_F - Index on names
+ * H5_INDEX_CRT_ORDER_F - Index on creation order
+ * H5_INDEX_N_F - Number of indices defined
+ * order - Order within field or index; Possible values are:
+ * H5_ITER_UNKNOWN_F - Unknown order
+ * H5_ITER_INC_F - Increasing order
+ * H5_ITER_DEC_F - Decreasing order
+ * H5_ITER_NATIVE_F - No particular order, whatever is fastest
+ * H5_ITER_N_F - Number of iteration orders
+ * n - Link for which to retrieve information
+ * lapl_id - Link access property list
+ *
+ * Outputs: N/A
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February 29, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+int_f
+nh5ldelete_by_idx_c (hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen,
+ int_f *index_field, int_f *order, size_t_f *n, hid_t_f *lapl_id)
+{
+ char *c_group_name = NULL; /* Buffer to hold C string */
+ H5_index_t c_index_field;
+ H5_iter_order_t c_order;
+ int_f ret_value = 0; /* Return value */
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_group_name = HD5f2cstring(group_name, (size_t)*group_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ c_index_field = (H5_index_t)*index_field;
+ c_order = (H5_iter_order_t)*order;
+
+ /*
+ * Call H5Ldelete_by_name function.
+ */
+ if(H5Ldelete_by_idx((hid_t)*loc_id, c_group_name, c_index_field, c_order, (hsize_t)*n, (hid_t)*lapl_id) < 0)
+ HGOTO_DONE(FAIL);
+
+done:
+ if(c_group_name)
+ HDfree(c_group_name);
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5lexists_c
+ * Purpose: Calls H5Lexists
+ * Inputs:
+ * loc_id - Identifier of the file or group to query.
+ * name - Link name to check
+ * lapl_id - Link access property list identifier.
+ * Outputs:
+ * link_exists_c - returns a positive value, for TRUE, or 0 (zero), for FALSE.
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February 29, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5lexists_c (hid_t_f *loc_id, _fcd name, size_t_f *namelen, hid_t_f *lapl_id, hid_t_f *link_exists)
+{
+ char *c_name = NULL; /* Buffer to hold C string */
+ int_f ret_value = 0; /* Return value */
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_name = HD5f2cstring(name, (size_t)*namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Call H5Lexists function.
+ */
+ if((*link_exists = (hid_t_f)H5Lexists((hid_t)*loc_id, c_name, (hid_t)*lapl_id)) < 0)
+ HGOTO_DONE(FAIL);
+
+done:
+ if(c_name)
+ HDfree(c_name);
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5lget_info_c
+ * Purpose: Call H5Lget_info
+ * Inputs:
+ * link_loc_id - File or group identifier.
+ * link_name - Name of the link for which information is being sought
+ * link_namelen - Name length
+ * lapl_id - Link access property list
+ * Outputs:
+ *
+ * cset - indicates the character set used for link’s name.
+ * corder - specifies the link’s creation order position.
+ * corder_valid - indicates whether the value in corder is valid.
+ * link_type - specifies the link class:
+ * H5L_LINK_HARD_F - Hard link
+ * H5L_LINK_SOFT_F - Soft link
+ * H5L_LINK_EXTERNAL_F - External link
+ * H5L_LINK_ERROR_F - Error
+ * address - If the link is a hard link, address specifies the file address that the link points to
+ * val_size - If the link is a symbolic link, val_size will be the length of the link value
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * January, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+int_f
+nh5lget_info_c (hid_t_f *link_loc_id, _fcd link_name, size_t_f *link_namelen,
+ int_f *cset, int_f *corder, int_f *corder_valid, int_f *link_type,
+ int_f *address, hsize_t_f *val_size,
+ hid_t_f *lapl_id)
+{
+ char *c_link_name = NULL; /* Buffer to hold C string */
+ int_f ret_value = 0; /* Return value */
+ H5L_info_t link_buff;
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_link_name = HD5f2cstring(link_name, (size_t)*link_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+ /*
+ * Call H5Linfo function.
+ */
+ if(H5Lget_info((hid_t)*link_loc_id, c_link_name, &link_buff, (hid_t)*lapl_id) < 0)
+ HGOTO_DONE(FAIL);
+
+ /* Unpack the structure */
+
+ *cset = (int_f)link_buff.cset;
+ *corder = (int_f)link_buff.corder;
+ *corder_valid = 0;
+ if(link_buff.corder_valid > 0) *corder_valid = 1;
+ *link_type = (int_f)link_buff.type;
+ *address = (int_f)link_buff.u.address;
+ *val_size = (hsize_t)link_buff.u.val_size;
+
+done:
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5lget_info_by_idx_c
+ * Purpose: Call H5Lget_info_by_idx
+ * Inputs:
+ * loc_id - File or group identifier specifying location of subject group
+ * group_name - Name of subject group
+ *group_namelen - Name length
+ * index_field - Index or field which determines the order
+ * order - Order within field or index
+ * n - Link for which to retrieve information
+ * lapl_id - Link access property list
+ * Outputs:
+ * corder_valid - Indicates whether the the creation order data is valid for this attribute
+ * corder - Is a positive integer containing the creation order of the attribute
+ * cset - Indicates the character set used for the attribute’s name
+ * data_size - indicates the size, in the number of characters, of the attribute
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * January, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+int_f
+nh5lget_info_by_idx_c(hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen,
+ int_f *index_field, int_f *order, hsize_t_f *n,
+ int_f *corder_valid, int_f *corder, int_f *cset, hsize_t_f *data_size, hid_t_f *lapl_id)
+{
+ char *c_group_name = NULL; /* Buffer to hold C string */
+ H5_index_t c_index_field;
+ H5_iter_order_t c_order;
+ int_f ret_value = 0; /* Return value */
+ H5L_info_t link_buff;
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_group_name = HD5f2cstring(group_name, (size_t)*group_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ c_index_field = (H5_index_t)*index_field;
+ c_order = (H5_iter_order_t)*order;
+ /*
+ * Call H5Linfo_by_idx function.
+ */
+ if(H5Lget_info_by_idx((hid_t)*loc_id, c_group_name, c_index_field, c_order, (hsize_t)*n,
+ &link_buff, (hid_t)*lapl_id) < 0)
+ HGOTO_DONE(FAIL);
+
+ /* Unpack the structure */
+
+ *corder_valid = 0;
+ if(link_buff.corder_valid > 0) *corder_valid = 1;
+
+ *corder = (int_f)link_buff.corder;
+ *cset = (int_f)link_buff.cset;
+ *data_size = (hsize_t)link_buff.u.val_size;
+
+done:
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: H5Lis_registered_c
+ * Purpose: Call H5Lis_registered
+ * Inputs:
+ * link_cls_id - User-defined link class identifier
+ * Outputs: NONE
+ *
+ * Returns: Returns a positive value if the link class has been registered
+ * and zero if it is unregistered. Otherwise returns a negative value
+ * Programmer: M.S. Breitenfeld
+ * March 3, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+int_f
+nh5lis_registered_c(int_f *link_cls_id)
+{
+ int_f ret_value = 0; /* Return value */
+ H5L_type_t c_link_cls_id; /* User-defined link class identifier */
+ htri_t registered; /* registration status */
+
+
+ c_link_cls_id = (H5L_type_t)*link_cls_id;
+ /*
+ * Call H5Lis_registered
+ */
+ registered = H5Lis_registered(c_link_cls_id);
+
+ ret_value = (int_f)registered;
+
+ return ret_value;
+}
+
+
+/*----------------------------------------------------------------------------
+ * Name: h5lmove_c
+ * Purpose: Call H5Lmove
+ * Inputs:
+ * src_loc_id - Original file or group identifier.
+ * src_name - Original link name.
+ * src_namelen - name length
+ * dest_loc_id - Destination file or group identifier.
+ * dest_name - NEW link name.
+ * dest_namelen - name length
+ * Outputs:
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * March 3, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+int_f
+nh5lmove_c(hid_t_f *src_loc_id, _fcd src_name, size_t_f *src_namelen, hid_t_f *dest_loc_id,
+ _fcd dest_name, size_t_f *dest_namelen, hid_t_f *lcpl_id, hid_t_f *lapl_id)
+
+{
+ char *c_src_name = NULL; /* Buffer to hold C string */
+ char *c_dest_name = NULL; /* Buffer to hold C string */
+ int_f ret_value = 0; /* Return value */
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_src_name = HD5f2cstring(src_name, (size_t)*src_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+ if((c_dest_name = HD5f2cstring(dest_name, (size_t)*dest_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Call H5Lmove function.
+ */
+ if(H5Lmove((hid_t)*src_loc_id, c_src_name, (hid_t)*dest_loc_id,
+ c_dest_name, (hid_t)*lcpl_id, (hid_t)*lapl_id) < 0)
+ HGOTO_DONE(FAIL);
+done:
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5lget_name_by_idx_c
+ * Purpose: Call H5Lget_name_by_idx
+ * Inputs:
+ * loc_id - File or group identifier specifying location of subject group
+ * group_name - Name of subject group
+ * index_field - Index or field which determines the order
+ * order - Order within field or index
+ * n - Link for which to retrieve information
+ * size - Maximum number of characters of link value to be returned.
+ * lapl_id - Link access property list
+ * Outputs:
+ * name - Buffer in which link value is returned
+ * size - The size of the link name on success
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * March 10, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+int_f
+nh5lget_name_by_idx_c(hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen,
+ int_f *index_field, int_f *order, hsize_t_f *n,
+ size_t_f *size, _fcd name, hid_t_f *lapl_id)
+{
+ char *c_group_name = NULL; /* Buffer to hold C string */
+ char *c_name = NULL; /* Buffer to hold C string */
+ int_f ret_value = 0; /* Return value */
+ size_t c_size;
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_group_name = HD5f2cstring(group_name, (size_t)*group_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ c_size = (size_t)*size + 1;
+ /*
+ * Allocate buffer to hold name of an attribute
+ */
+ if ((c_name = HDmalloc(c_size)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ if((*size = (size_t)H5Lget_name_by_idx((hid_t)*loc_id, c_group_name, (H5_index_t)*index_field,
+ (H5_iter_order_t)*order, (hsize_t)*n,c_name, c_size, (hid_t)*lapl_id)) < 0)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Convert C name to FORTRAN and place it in the given buffer
+ */
+ if(c_name != NULL)
+ HD5packFstring(c_name, _fcdtocp(name), c_size-1);
+done:
+ if(c_group_name) HDfree(c_group_name);
+ if(c_name) HDfree(c_name);
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5lget_val_c
+ * Purpose: Call H5Lget_val
+ * Inputs:
+ * link_loc_id - File or group identifier.
+ * link_name - Name of the link for which valrmation is being sought
+ * link_namelen - Name length
+ * size - Maximum number of characters of link value to be returned.
+ * lapl_id - Link access property list
+ * Outputs:
+ * linkval_buff - The buffer to hold the returned link value.
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * March 3, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+/* int_f */
+/* nh5lget_val_c (hid_t_f *link_loc_id, _fcd link_name, size_t_f *link_namelen, */
+/* size_t_f *size, _fcd linkval_buff, */
+/* hid_t_f *lapl_id) */
+/* { */
+/* char *c_link_name = NULL; /\* Buffer to hold C string *\/ */
+/* int_f ret_value = 0; /\* Return value *\/ */
+/* void *c_linkval_buff = NULL; */
+
+/* /\* */
+/* * Convert FORTRAN name to C name */
+/* *\/ */
+/* if((c_link_name = HD5f2cstring(link_name, (size_t)*link_namelen)) == NULL) */
+/* HGOTO_DONE(FAIL); */
+/* /\* */
+/* * Call H5Lval function. */
+/* *\/ */
+/* if(H5Lget_val((hid_t)*link_loc_id, c_link_name, &linkval_buff, (size_t)*size, (hid_t)*lapl_id) < 0) */
+/* HGOTO_DONE(FAIL); */
+/* /\* */
+/* * Convert C name to FORTRAN */
+/* *\/ */
+/* HD5packFstring(c_buf, _fcdtocp(buf), c_bufsize-1); */
+
+
+/* done: */
+/* return ret_value; */
+/* } */
+
+
+/*----------------------------------------------------------------------------
+ * Name: H5Lregistered_c
+ * Purpose: Call H5Lregistered
+ * Inputs:
+ *
+ * Inputs:
+ * version - Version number of this struct
+ * class_id - Link class identifier
+ * comment - Comment for debugging
+ * comment_len - Comment for debugging
+ * create_func - Callback during link creation
+ * create_func_len - length
+ * move_func - Callback after moving link
+ * move_func_len - length
+ * copy_func - Callback after copying link
+ * copy_func_len - length
+ * trav_func - The main traversal function
+ * trav_func_len - length
+ * del_func - Callback for link deletion
+ * del_func_len - length
+ * query_func - Callback for queries
+ * query_func_len - length
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February 3, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+/* int_f */
+
+/* nh5lregistered_c(int_f *version, int_f *class_id, */
+/* _fcd comment, size_t_f *comment_len, */
+/* _fcd create_func, size_t_f *create_func_len, */
+/* _fcd move_func, size_t_f *move_func_len, */
+/* _fcd copy_func, size_t_f *copy_func_len, */
+/* _fcd trav_func, size_t_f *trav_func_len, */
+/* _fcd del_func , size_t_f *del_func_len, */
+/* _fcd query_func, size_t_f *query_func_len) */
+/* { */
+/* char *c_comment = NULL; */
+/* char *c_create_func = NULL; */
+/* char *c_move_func = NULL; */
+/* char *c_copy_func = NULL; */
+/* char *c_trav_func = NULL; */
+/* char *c_del_func = NULL; */
+/* char *c_query_func = NULL; */
+
+/* H5L_class_t class_t; */
+
+/* int ret_value = 0; */
+
+/* /\* */
+/* * Convert FORTRAN name to C name */
+/* *\/ */
+/* if((c_comment = HD5f2cstring(c_comment, (size_t)*sc_comment_len)) == NULL) */
+/* HGOTO_DONE(FAIL); */
+/* if((c_create_func = HD5f2cstring(c_create_func, (size_t)*c_create_func_len)) == NULL) */
+/* HGOTO_DONE(FAIL); */
+/* if((c_move_func = HD5f2cstring(c_move_func, (size_t)*sc_move_func_len)) == NULL) */
+/* HGOTO_DONE(FAIL); */
+/* if((c_copy_func = HD5f2cstring(c_copy_func, (size_t)*c_copy_func_len)) == NULL) */
+/* HGOTO_DONE(FAIL); */
+/* if((c_trav_func = HD5f2cstring(c_trav_func, (size_t)*sc_trav_func_len)) == NULL) */
+/* HGOTO_DONE(FAIL); */
+/* if((c_del_func = HD5f2cstring(c_del_func, (size_t)*c_del_func_len)) == NULL) */
+/* HGOTO_DONE(FAIL); */
+/* if((c_query_func = HD5f2cstring(c_query_func, (size_t)*c_query_func_len)) == NULL) */
+/* HGOTO_DONE(FAIL); */
+/* /\* */
+/* * Pack into C struct H5L_class_t */
+/* *\/ */
+/* int version; /\* Version number of this struct *\/ */
+/* H5L_type_t class_id; /\* Link class identifier *\/ */
+/* const char *comment; /\* Comment for debugging *\/ */
+/* H5L_create_func_t create_func; /\* Callback during link creation *\/ */
+/* H5L_move_func_t move_func; /\* Callback after moving link *\/ */
+/* H5L_copy_func_t copy_func; /\* Callback after copying link *\/ */
+/* H5L_traverse_func_t trav_func; /\* The main traversal function *\/ */
+/* H5L_delete_func_t del_func; /\* Callback for link deletion *\/ */
+/* H5L_query_func_t query_func; /\* Callback for queries *\/ */
+
+/* class_t.version = (int)*version; */
+/* class_t.class_id = (H5L_type_t)*class_id; */
+/* class_t.comment = c_comment; */
+/* class_t. */
+
+/* /\* */
+/* * Call H5Lcopy function. */
+/* *\/ */
+/* if( H5Lcopy( (hid_t)*src_loc_id, c_src_name, (hid_t) *dest_loc_id, */
+/* c_dest_name, (hid_t)*lcpl_id, (hid_t)*lapl_id ) < 0) */
+/* HGOTO_DONE(FAIL); */
+
+/* done: */
+/* if(c_src_name) */
+/* HDfree(c_src_name); */
+/* if(c_dest_name) */
+/* HDfree(c_dest_name); */
+
+/* return ret_value; */
+/* } */
+
+/*----------------------------------------------------------------------------
+ * Name: h5lget_val_c
+ * Purpose: Call H5Lget_val_c
+ * Inputs:
+ * link_loc_id - File or group identifier.
+ * link_name - Link whose value is to be returned.
+ * link_name_len - length of link_name
+ * size - Maximum number of characters of link value to be returned.
+ * lapl_id - List access property list identifier
+ * Outputs:
+ * linkval_buff - The buffer to hold the returned link value.
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * April 11, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+int_f
+nh5lget_val_c(hid_t_f *link_loc_id, _fcd link_name, size_t_f *link_namelen, size_t_f *size,
+ void *linkval_buff, hid_t_f *lapl_id)
+{
+ int_f ret_value = 0; /* Return value */
+ char *c_link_name = NULL; /* Buffer to hold C string */
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_link_name = HD5f2cstring(link_name, (size_t)*link_namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Call H5Lget_val
+ */
+
+ if(H5Lget_val( (hid_t)*link_loc_id, c_link_name, &linkval_buff, (size_t)*size, (hid_t)*lapl_id )< 0)
+ HGOTO_DONE(FAIL);
+
+done:
+ return ret_value;
+}
+
+
diff --git a/fortran/src/H5Lff.f90 b/fortran/src/H5Lff.f90
new file mode 100644
index 0000000..acb7c73
--- /dev/null
+++ b/fortran/src/H5Lff.f90
@@ -0,0 +1,1323 @@
+! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+! Copyright by The HDF Group. *
+! Copyright by the Board of Trustees of the University of Illinois. *
+! All rights reserved. *
+! *
+! This file is part of HDF5. The full HDF5 copyright notice, including *
+! terms governing use, modification, and redistribution, is contained in *
+! the files COPYING and Copyright.html. COPYING can be found at the root *
+! of the source code distribution tree; Copyright.html can be found at the *
+! root level of an installed copy of the electronic HDF5 document set and *
+! is linked from the top-level documents page. It can also be found at *
+! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
+! access to either file, you may request a copy from help@hdfgroup.org. *
+! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+!
+!
+! This file contains Fortran90 interfaces for H5L functions.
+!
+MODULE H5L
+
+ USE H5GLOBAL
+
+CONTAINS
+
+!----------------------------------------------------------------------
+! Name: h5lcopy_f
+!
+! Purpose: Copies a link from one location to another.
+!
+! Inputs:
+! src_loc_id - Location identifier of the source link
+! src_name - Name of the link to be copied
+! dest_loc_id - Location identifier specifying the destination of the copy
+! dest_name - Name to be assigned to the NEW copy
+! loc_id - Identifier of the file or group containing the object
+! name - Name of the link to delete
+!
+! Outputs:
+! hdferr - error code:
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! lcpl_id - Link creation property list identifier
+! lapl_id - Link access property list identifier
+!
+! Programmer: M.S. Breitenfeld
+! February 27, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+ SUBROUTINE h5lcopy_f(src_loc_id, src_name, dest_loc_id, dest_name, hdferr, &
+ lcpl_id, lapl_id)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5lcopy
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: src_loc_id ! Location identifier of the source link
+ CHARACTER(LEN=*), INTENT(IN) :: src_name ! Name of the link to be copied
+ INTEGER(HID_T), INTENT(IN) :: dest_loc_id ! Location identifier specifying the destination of the copy
+ CHARACTER(LEN=*), INTENT(IN) :: dest_name ! Name to be assigned to the NEW copy
+
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list identifier
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier
+
+ INTEGER(HID_T) :: lcpl_id_default
+ INTEGER(HID_T) :: lapl_id_default
+
+ INTEGER(SIZE_T) :: src_namelen
+ INTEGER(SIZE_T) :: dest_namelen
+
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5lcopy_c(src_loc_id, src_name, src_namelen, dest_loc_id, dest_name, dest_namelen, &
+ lcpl_id_default, lapl_id_default)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5LCOPY_C'::h5lcopy_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: src_loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: src_name
+ INTEGER(HID_T), INTENT(IN) :: dest_loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: dest_name
+
+ INTEGER(HID_T) :: lcpl_id_default
+ INTEGER(HID_T) :: lapl_id_default
+
+ INTEGER(SIZE_T) :: src_namelen
+ INTEGER(SIZE_T) :: dest_namelen
+ END FUNCTION h5lcopy_c
+ END INTERFACE
+
+ src_namelen = LEN(src_name)
+ dest_namelen = LEN(dest_name)
+
+ lcpl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lcpl_id)) lcpl_id_default = lcpl_id
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+
+ hdferr = h5lcopy_c(src_loc_id, src_name, src_namelen, dest_loc_id, dest_name, dest_namelen, &
+ lcpl_id_default, lapl_id_default)
+
+ END SUBROUTINE h5lcopy_f
+
+!----------------------------------------------------------------------
+! Name: h5ldelete_f
+!
+! Purpose: Removes a link from a group.
+!
+! Inputs:
+! loc_id - Identifier of the file or group containing the object
+! name - Name of the link to delete
+!
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! lapl_id - Link access property list identifier
+!
+! Programmer: M.S. Breitenfeld
+! January, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+ SUBROUTINE h5ldelete_f(loc_id, name, hdferr, lapl_id)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5ldelete_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifier of the file or group containing the object
+ CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the link to delete
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER(SIZE_T) :: namelen
+
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5ldelete_c(loc_id, name, namelen, lapl_id_default)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5LDELETE_C'::h5ldelete_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: name
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER(SIZE_T) :: namelen
+ END FUNCTION h5ldelete_c
+ END INTERFACE
+
+ namelen = LEN(name)
+
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+
+ hdferr = h5ldelete_c(loc_id, name, namelen, lapl_id_default)
+
+ END SUBROUTINE h5ldelete_f
+
+!----------------------------------------------------------------------
+! Name: H5Lcreate_soft_f
+!
+! Purpose: Creates a soft link to an object.
+!
+! Inputs:
+! target_path - Path to the target object, which is not required to exist.
+! link_loc_id - The file or group identifier for the new link.
+! link_name - The name of the new link.
+!
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! lcpl_id - Link creation property list identifier.
+! lapl_id - Link access property list identifier.
+!
+! Programmer: M.S. Breitenfeld
+! February 20, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+ SUBROUTINE h5lcreate_soft_f(target_path, link_loc_id, link_name, hdferr, lcpl_id, lapl_id)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5lcreate_soft_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ CHARACTER(LEN=*), INTENT(IN) :: target_path ! Path to the target object, which is not required to exist.
+ INTEGER(HID_T), INTENT(IN) :: link_loc_id ! The file or group identifier for the new link.
+ CHARACTER(LEN=*), INTENT(IN) :: link_name ! The name of the new link.
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list identifier.
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier.
+
+ INTEGER(HID_T) :: lcpl_id_default
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER(SIZE_T) :: target_path_len
+ INTEGER(SIZE_T) :: link_name_len
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5lcreate_soft_c(target_path, target_path_len, &
+ link_loc_id, &
+ link_name,link_name_len, &
+ lcpl_id_default, lapl_id_default )
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5LCREATE_SOFT_C'::h5lcreate_soft_c
+ !DEC$ ENDIF
+ CHARACTER(LEN=*), INTENT(IN) :: target_path
+ INTEGER(SIZE_T) :: target_path_len
+ INTEGER(HID_T), INTENT(IN) :: link_loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: link_name
+ INTEGER(SIZE_T) :: link_name_len
+ INTEGER(HID_T) :: lcpl_id_default
+ INTEGER(HID_T) :: lapl_id_default
+ END FUNCTION h5lcreate_soft_c
+ END INTERFACE
+
+ target_path_len = LEN(target_path)
+ link_name_len = LEN(link_name)
+
+ lcpl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lcpl_id)) lcpl_id_default = lcpl_id
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+
+ hdferr = h5lcreate_soft_c(target_path, target_path_len,&
+ link_loc_id, &
+ link_name, link_name_len, &
+ lcpl_id_default, lapl_id_default )
+
+ END SUBROUTINE h5lcreate_soft_f
+
+!----------------------------------------------------------------------
+! Name: H5Lcreate_hard_f
+!
+! Purpose: Creates a hard link to an object.
+!
+! Inputs:
+!
+! obj_loc_id - The file or group identifier for the target object.
+! obj_name - Name of the target object, which must already exist.
+! link_loc_id - The file or group identifier for the new link.
+! link_name - The name of the new link.
+!
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! lcpl_id - Link creation property list identifier.
+! lapl_id - Link access property list identifier.
+!
+! Programmer: M.S. Breitenfeld
+! February 27, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+ SUBROUTINE h5lcreate_hard_f(obj_loc_id, obj_name, link_loc_id, link_name, hdferr, lcpl_id, lapl_id)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5lcreate_hard_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: obj_loc_id ! The file or group identifier for the target object.
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name ! Name of the target object, which must already exist.
+ INTEGER(HID_T), INTENT(IN) :: link_loc_id ! The file or group identifier for the new link.
+ CHARACTER(LEN=*), INTENT(IN) :: link_name ! The name of the new link.
+
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list identifier.
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier.
+
+ INTEGER(HID_T) :: lcpl_id_default
+ INTEGER(HID_T) :: lapl_id_default
+
+ INTEGER(SIZE_T) :: obj_namelen
+ INTEGER(SIZE_T) :: link_namelen
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5lcreate_hard_c(obj_loc_id, obj_name, obj_namelen, &
+ link_loc_id, link_name, link_namelen, lcpl_id_default, lapl_id_default)
+
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5LCREATE_HARD_C'::h5lcreate_hard_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: obj_loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name
+ INTEGER(HID_T), INTENT(IN) :: link_loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: link_name
+ INTEGER(SIZE_T) :: obj_namelen
+ INTEGER(SIZE_T) :: link_namelen
+ INTEGER(HID_T) :: lcpl_id_default
+ INTEGER(HID_T) :: lapl_id_default
+ END FUNCTION h5lcreate_hard_c
+ END INTERFACE
+ obj_namelen = LEN(obj_name)
+ link_namelen = LEN(link_name)
+
+ lcpl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lcpl_id)) lcpl_id_default = lcpl_id
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+
+ hdferr = h5lcreate_hard_c(obj_loc_id, obj_name, obj_namelen, &
+ link_loc_id, link_name, link_namelen, lcpl_id_default, lapl_id_default)
+
+ END SUBROUTINE h5lcreate_hard_f
+
+!----------------------------------------------------------------------
+! Name: H5Lcreate_external_f
+!
+! Purpose: Creates a soft link to an object in a different file.
+!
+! Inputs:
+!
+! file_name - Name of the file containing the target object. Neither the file nor the target object is
+! required to exist. May be the file the link is being created in.
+! obj_name - Path within the target file to the target object.
+! link_loc_id - The file or group identifier for the new link.
+! link_name - The name of the new link.
+!
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! lcpl_id - Link creation property list identifier.
+! lapl_id - Link access property list identifier.
+!
+! Programmer: M.S. Breitenfeld
+! February 27, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+ SUBROUTINE h5lcreate_external_f(file_name, obj_name, link_loc_id, link_name, hdferr, lcpl_id, lapl_id)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5lcreate_external_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ CHARACTER(LEN=*), INTENT(IN) :: file_name ! Name of the file containing the target object. Neither
+ ! the file nor the target object is required to exist.
+ ! May be the file the link is being created in.
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name ! Name of the target object, which must already exist.
+ INTEGER(HID_T), INTENT(IN) :: link_loc_id ! The file or group identifier for the new link.
+ CHARACTER(LEN=*), INTENT(IN) :: link_name ! The name of the new link.
+
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list identifier.
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier.
+
+ INTEGER(HID_T) :: lcpl_id_default
+ INTEGER(HID_T) :: lapl_id_default
+
+ INTEGER(SIZE_T) :: file_namelen
+ INTEGER(SIZE_T) :: obj_namelen
+ INTEGER(SIZE_T) :: link_namelen
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5lcreate_external_c(file_name, file_namelen, obj_name, obj_namelen, &
+ link_loc_id, link_name, link_namelen, lcpl_id_default, lapl_id_default)
+
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5LCREATE_EXTERNAL_C'::h5lcreate_external_c
+ !DEC$ ENDIF
+ CHARACTER(LEN=*), INTENT(IN) :: file_name
+ CHARACTER(LEN=*), INTENT(IN) :: obj_name
+ INTEGER(HID_T), INTENT(IN) :: link_loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: link_name
+ INTEGER(SIZE_T) :: file_namelen
+ INTEGER(SIZE_T) :: obj_namelen
+ INTEGER(SIZE_T) :: link_namelen
+ INTEGER(HID_T) :: lcpl_id_default
+ INTEGER(HID_T) :: lapl_id_default
+ END FUNCTION h5lcreate_external_c
+ END INTERFACE
+ file_namelen = LEN(file_name)
+ obj_namelen = LEN(obj_name)
+ link_namelen = LEN(link_name)
+
+ lcpl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lcpl_id)) lcpl_id_default = lcpl_id
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+
+ hdferr = h5lcreate_external_c(file_name, file_namelen, obj_name, obj_namelen, &
+ link_loc_id, link_name, link_namelen, lcpl_id_default, lapl_id_default)
+
+ END SUBROUTINE h5lcreate_external_f
+
+!----------------------------------------------------------------------
+! Name: h5ldelete_by_idx_f
+!
+! Purpose: Removes the nth link in a group.
+! Inputs:
+! loc_id - File or group identifier specifying location of subject group
+! group_name - Name of subject group
+! index_field - Type of index; Possible values are:
+!
+! H5_INDEX_UNKNOWN_F = -1 - Unknown index type
+! H5_INDEX_NAME_F - Index on names
+! H5_INDEX_CRT_ORDER_F - Index on creation order
+! H5_INDEX_N_F - Number of indices defined
+!
+! order - Order within field or index; Possible values are:
+!
+! H5_ITER_UNKNOWN_F - Unknown order
+! H5_ITER_INC_F - Increasing order
+! H5_ITER_DEC_F - Decreasing order
+! H5_ITER_NATIVE_F - No particular order, whatever is fastest
+! H5_ITER_N_F - Number of iteration orders
+!
+! n - Link for which to retrieve information
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! lapl_id - Link access property list
+!
+! Programmer: M.S. Breitenfeld
+! February 29, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+ SUBROUTINE h5ldelete_by_idx_f(loc_id, group_name, index_field, order, n, hdferr, lapl_id)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5ldelete_by_idx_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifer for object to which attribute is attached
+ CHARACTER(LEN=*), INTENT(IN) :: group_name ! Name of object, relative to location,
+ ! from which attribute is to be removed
+ INTEGER, INTENT(IN) :: index_field ! Type of index; Possible values are:
+ ! H5_INDEX_UNKNOWN_F - Unknown index type
+ ! H5_INDEX_NAME_F - Index on names
+ ! H5_INDEX_CRT_ORDER_F - Index on creation order
+ ! H5_INDEX_N_F - Number of indices defined
+ INTEGER, INTENT(IN) :: order ! Order in which to iterate over index; Possible values are:
+ ! H5_ITER_UNKNOWN_F - Unknown order
+ ! H5_ITER_INC_F - Increasing order
+ ! H5_ITER_DEC_F - Decreasing order
+ ! H5_ITER_NATIVE_F - No particular order, whatever is fastest
+ ! H5_ITER_N_F - Number of iteration orders
+ INTEGER(HSIZE_T), INTENT(IN) :: n ! Offset within index
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER(SIZE_T) :: group_namelen
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5ldelete_by_idx_c(loc_id, group_name, group_namelen, index_field, order, n, lapl_id_default)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5LDELETE_BY_IDX_C'::h5ldelete_by_idx_c
+ !DEC$ ENDIF
+ !DEC$ATTRIBUTES reference :: name
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: group_name
+ INTEGER, INTENT(IN) :: index_field
+ INTEGER, INTENT(IN) :: order
+ INTEGER(HSIZE_T), INTENT(IN) :: n
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER(SIZE_T) :: group_namelen
+ END FUNCTION h5ldelete_by_idx_c
+ END INTERFACE
+
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+
+ group_namelen = LEN(group_name)
+ hdferr = h5ldelete_by_idx_c(loc_id, group_name, group_namelen, index_field, order, n, lapl_id_default)
+
+ END SUBROUTINE h5ldelete_by_idx_f
+
+!----------------------------------------------------------------------
+! Name: H5Lexists_f
+!
+! Purpose: Check if a link with a particular name exists in a group.
+!
+! Inputs:
+! loc_id - Identifier of the file or group to query.
+! name - Link name to check
+!
+! Outputs:
+! link_exists - link exists status (.TRUE.,.FALSE.)
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! lapl_id - Link access property list identifier.
+!
+! Programmer: M. S. Breitenfeld
+! February 29, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+ SUBROUTINE h5lexists_f(loc_id, name, link_exists, hdferr, lapl_id)
+
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5lexists_f
+!DEC$endif
+
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifier of the file or group to query.
+ CHARACTER(LEN=*), INTENT(IN) :: name ! Link name to check.
+ LOGICAL, INTENT(OUT) :: link_exists ! .TRUE. if exists, .FALSE. otherwise
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id
+ ! Link access property list identifier.
+ INTEGER :: link_exists_c
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER(SIZE_T) :: namelen
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5lexists_c(loc_id, name, namelen, lapl_id_default, link_exists_c)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5LEXISTS_C'::h5lexists_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: name
+ INTEGER(SIZE_T), INTENT(IN) :: namelen
+ INTEGER(HID_T), INTENT(OUT) :: link_exists_c
+ INTEGER(HID_T) :: lapl_id_default
+
+ END FUNCTION h5lexists_c
+ END INTERFACE
+
+ namelen = LEN(name)
+
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+
+ hdferr = h5lexists_c(loc_id, name, namelen, lapl_id_default, link_exists_c)
+
+ link_exists = .FALSE.
+ IF(link_exists_c.GT.0) link_exists = .TRUE.
+
+ END SUBROUTINE h5lexists_f
+
+!----------------------------------------------------------------------
+! Name: h5lget_info_f
+!
+! Purpose: Returns information about a link.
+!
+! Inputs:
+! link_loc_id - File or group identifier.
+! link_name - Name of the link for which information is being sought
+!
+! Outputs: NOTE: In C these are contained in the structure H5L_info_t
+!
+! cset - indicates the character set used for link’s name.
+! corder - specifies the link’s creation order position.
+!corder_valid - indicates whether the value in corder is valid.
+! link_type - specifies the link class:
+! H5L_LINK_HARD_F - Hard link
+! H5L_LINK_SOFT_F - Soft link
+! H5L_LINK_EXTERNAL_F - External link
+! H5L_LINK_ERROR_ F - Error
+! address - If the link is a hard link, address specifies the file address that the link points to
+! val_size - If the link is a symbolic link, val_size will be the length of the link value
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! lapl_id - Link access property list
+!
+! Programmer: M. S. Breitenfeld
+! February 29, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5lget_info_f(link_loc_id, link_name, &
+ cset, corder, f_corder_valid, link_type, address, val_size, &
+ hdferr, lapl_id)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5lget_info_f
+!DEC$endif
+ IMPLICIT NONE
+
+ INTEGER(HID_T), INTENT(IN) :: link_loc_id ! File or group identifier.
+ CHARACTER(LEN=*), INTENT(IN) :: link_name ! Name of the link for which information is being sought
+
+! Outputs: NOTE: In C these are contained in the structure H5L_info_t
+ INTEGER, INTENT(OUT) :: cset ! Indicates the character set used for the link’s name.
+ INTEGER, INTENT(OUT) :: corder ! Specifies the link’s creation order position.
+ LOGICAL, INTENT(OUT) :: f_corder_valid ! Indicates whether the value in corder is valid.
+ INTEGER, INTENT(OUT) :: link_type ! Specifies the link class:
+ ! H5L_LINK_HARD_F - Hard link
+ ! H5L_LINK_SOFT_F - Soft link
+ ! H5L_LINK_EXTERNAL_F - External link
+ ! H5L_LINK_ERROR _F - Error
+ INTEGER, INTENT(OUT) :: address ! If the link is a hard link, address specifies the file address that the link points to
+ INTEGER(HSIZE_T), INTENT(OUT) :: val_size ! If the link is a symbolic link, val_size will be the length of the link value
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+
+ INTEGER(SIZE_T) :: link_namelen
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER :: corder_valid
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5lget_info_c(link_loc_id, link_name, link_namelen, &
+ cset, corder, corder_valid, link_type, address, val_size, &
+ lapl_id_default)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5LGET_INFO_C'::h5lget_info_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: link_loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: link_name
+ INTEGER, INTENT(OUT) :: cset
+ INTEGER, INTENT(OUT) :: corder
+ INTEGER, INTENT(OUT) :: link_type
+ INTEGER, INTENT(OUT) :: address
+ INTEGER(HSIZE_T), INTENT(OUT) :: val_size
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER(SIZE_T) :: link_namelen
+ INTEGER :: corder_valid
+ END FUNCTION h5lget_info_c
+ END INTERFACE
+
+ link_namelen = LEN(link_name)
+
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+
+ hdferr = h5lget_info_c(link_loc_id, link_name, link_namelen, &
+ cset, corder, corder_valid, link_type, &
+ address, val_size, &
+ lapl_id_default)
+
+ f_corder_valid =.FALSE.
+ IF(corder_valid .EQ. 1) f_corder_valid =.TRUE.
+
+ END SUBROUTINE h5lget_info_f
+
+!----------------------------------------------------------------------
+! Name: h5lget_info_by_idx_f
+!
+! Purpose: Retrieves metadata for a link in a group, according to the order within a field or index.
+!
+! Inputs:
+! loc_id - File or group identifier specifying location of subject group
+! group_name - Name of subject group
+! index_field - Index or field which determines the order
+! order - Order within field or index
+! n - Link for which to retrieve information
+!
+! Outputs: NOTE: In C these are defined as a structure: H5L_info_t
+! corder_valid - indicates whether the creation order data is valid for this attribute
+! corder - is a positive integer containing the creation order of the attribute
+! cset - indicates the character set used for the attribute’s name
+! data_size - indicates the size, in the number of characters, of the attribute
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! lapl_id - Link access property list
+!
+! Programmer: M.S. Breitenfeld
+! February 29, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+ SUBROUTINE h5lget_info_by_idx_f(loc_id, group_name, index_field, order, n, &
+ f_corder_valid, corder, cset, data_size, hdferr, lapl_id)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5lget_info_by_idx_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier specifying location of subject group
+ CHARACTER(LEN=*), INTENT(IN) :: group_name ! Name of subject group
+ INTEGER, INTENT(IN) :: index_field ! Index or field which determines the order
+ ! H5_INDEX_UNKNOWN_F - Unknown index type
+ ! H5_INDEX_NAME_F - Index on names
+ ! H5_INDEX_CRT_ORDER_F - Index on creation order
+ ! H5_INDEX_N_F - Number of indices defined
+ INTEGER, INTENT(IN) :: order ! Order in which to iterate over index; Possible values are:
+ ! H5_ITER_UNKNOWN_F - Unknown order
+ ! H5_ITER_INC_F - Increasing order
+ ! H5_ITER_DEC_F - Decreasing order
+ ! H5_ITER_NATIVE_F - No particular order, whatever is fastest
+ INTEGER(HSIZE_T), INTENT(IN) :: n ! Attribute’s position in index
+ LOGICAL, INTENT(OUT) :: f_corder_valid ! Indicates whether the creation order data is valid for this attribute
+ INTEGER, INTENT(OUT) :: corder ! Is a positive integer containing the creation order of the attribute
+ INTEGER, INTENT(OUT) :: cset ! Indicates the character set used for the attribute’s name
+ INTEGER(HSIZE_T), INTENT(OUT) :: data_size ! Indicates the size, in the number of characters, of the attribute
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+ INTEGER :: corder_valid
+ INTEGER(SIZE_T) :: group_namelen
+ INTEGER(HID_T) :: lapl_id_default
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5lget_info_by_idx_c(loc_id, group_name, group_namelen, index_field, order, n, &
+ corder_valid, corder, cset, data_size, lapl_id_default)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5LGET_INFO_BY_IDX_C'::h5lget_info_by_idx_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: group_name
+ INTEGER(SIZE_T) :: group_namelen
+ INTEGER, INTENT(IN) :: index_field
+ INTEGER, INTENT(IN) :: order
+ INTEGER(HSIZE_T), INTENT(IN) :: n
+ INTEGER :: corder_valid
+ INTEGER, INTENT(OUT) :: corder
+ INTEGER, INTENT(OUT) :: cset
+ INTEGER(HSIZE_T), INTENT(OUT) :: data_size
+ INTEGER(HID_T) :: lapl_id_default
+ END FUNCTION h5lget_info_by_idx_c
+ END INTERFACE
+
+ group_namelen = LEN(group_name)
+
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+
+ hdferr = h5lget_info_by_idx_c(loc_id, group_name, group_namelen, index_field, order, n, &
+ corder_valid, corder, cset, data_size, lapl_id_default)
+
+ f_corder_valid =.FALSE.
+ IF (corder_valid .EQ. 1) f_corder_valid =.TRUE.
+
+ END SUBROUTINE h5lget_info_by_idx_f
+
+!----------------------------------------------------------------------
+! Name: H5Lis_registered_f
+!
+! Purpose: Determines whether a class of user-defined links is registered.
+!
+! Inputs:
+! link_cls_id - User-defined link class identifier
+!
+! Outputs:
+! registered - .TRUE. - if the link class has been registered
+! .FALSE. - if it is unregistered
+! hdferr - Error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! None
+!
+! Programmer: M.S. Breitenfeld
+! February 29, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+ SUBROUTINE H5Lis_registered_f(link_cls_id, registered, hdferr)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: H5Lis_registered_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER, INTENT(IN) :: link_cls_id ! User-defined link class identifier
+ LOGICAL, INTENT(OUT) :: registered ! .TRUE. - if the link class has been registered and
+ ! .FALSE. - if it is unregistered
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION H5Lis_registered_c(link_cls_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5LIS_REGISTERED_C'::h5lis_registered_c
+ !DEC$ ENDIF
+ INTEGER, INTENT(IN) :: link_cls_id ! User-defined link class identifier
+ END FUNCTION H5Lis_registered_c
+ END INTERFACE
+
+ hdferr = H5Lis_registered_c(link_cls_id)
+
+ IF(hdferr.GT.0)THEN
+ registered = .TRUE.
+ ELSE IF(hdferr.EQ.0)THEN
+ registered = .FALSE.
+ ENDIF
+
+ END SUBROUTINE H5Lis_registered_f
+
+!----------------------------------------------------------------------
+! Name: H5Lmove_f
+!
+! Purpose: Renames a link within an HDF5 file.
+!
+! Inputs:
+! src_loc_id - Original file or group identifier.
+! src_name - Original link name.
+! dest_loc_id - Destination file or group identifier.
+! dest_name - NEW link name.
+!
+! Outputs:
+! hdferr - Error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! lcpl_id - Link creation property list identifier to be associated WITH the NEW link.
+! lapl_id - Link access property list identifier to be associated WITH the NEW link.
+!
+! Programmer: M.S. Breitenfeld
+! March 3, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+ SUBROUTINE h5lmove_f(src_loc_id, src_name, dest_loc_id, dest_name, hdferr, lcpl_id, lapl_id)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: H5Lmove_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: src_loc_id ! Original file or group identifier.
+ CHARACTER(LEN=*), INTENT(IN) :: src_name ! Original link name.
+ INTEGER(HID_T), INTENT(IN) :: dest_loc_id ! Destination file or group identifier.
+ CHARACTER(LEN=*), INTENT(IN) :: dest_name ! NEW link name.
+ INTEGER(HID_T), INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list identifier
+ ! to be associated WITH the NEW link.
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list identifier
+ ! to be associated WITH the NEW link.
+
+ INTEGER(SIZE_T) :: src_namelen
+ INTEGER(SIZE_T) :: dest_namelen
+
+ INTEGER(HID_T) :: lcpl_id_default
+ INTEGER(HID_T) :: lapl_id_default
+
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION H5Lmove_c(src_loc_id, src_name, src_namelen, dest_loc_id, &
+ dest_name, dest_namelen, lcpl_id_default, lapl_id_default)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5LMOVE_C'::h5lmove_c
+ !DEC$ ENDIF
+
+ INTEGER(HID_T), INTENT(IN) :: src_loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: src_name
+ INTEGER(SIZE_T) :: src_namelen
+ INTEGER(HID_T), INTENT(IN) :: dest_loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: dest_name
+ INTEGER(SIZE_T) :: dest_namelen
+
+ INTEGER(HID_T) :: lcpl_id_default
+ INTEGER(HID_T) :: lapl_id_default
+
+ END FUNCTION H5Lmove_c
+ END INTERFACE
+
+ lcpl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lcpl_id)) lcpl_id_default = lcpl_id
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+
+ src_namelen = LEN(src_name)
+ dest_namelen = LEN(dest_name)
+
+ hdferr = H5Lmove_c(src_loc_id, src_name, src_namelen, dest_loc_id, &
+ dest_name, dest_namelen, lcpl_id_default, lapl_id_default)
+
+ END SUBROUTINE H5Lmove_f
+
+!----------------------------------------------------------------------
+! Name: h5lget_name_by_idx_f
+!
+! Purpose: Retrieves name of the nth link in a group, according to the order within a specified field or index.
+!
+! Inputs:
+! loc_id - File or group identifier specifying location of subject group
+! group_name - Name of subject group
+! index_field - Index or field which determines the order
+! order - Order within field or index
+! n - Link for which to retrieve information
+!
+! Outputs:
+! name - Buffer in which link value is returned
+! size - Maximum number of characters of link value to be returned.
+! hdferr - error code
+! Success: 0
+! Failure: -1
+!
+! Optional parameters:
+! lapl_id - List access property list identifier.
+!
+! Programmer: M. S. Breitenfeld
+! March 10, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+ SUBROUTINE h5lget_name_by_idx_f(loc_id, group_name, index_field, order, n, &
+ size, name, hdferr, lapl_id)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5lget_name_by_idx_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier specifying location of subject group
+ CHARACTER(LEN=*), INTENT(IN) :: group_name ! Name of subject group
+ INTEGER, INTENT(IN) :: index_field ! Index or field which determines the order
+ ! H5_INDEX_UNKNOWN_F - Unknown index type
+ ! H5_INDEX_NAME_F - Index on names
+ ! H5_INDEX_CRT_ORDER_F - Index on creation order
+ ! H5_INDEX_N_F - Number of indices defined
+ INTEGER, INTENT(IN) :: order ! Order in which to iterate over index; Possible values are:
+ ! H5_ITER_UNKNOWN_F - Unknown order
+ ! H5_ITER_INC_F - Increasing order
+ ! H5_ITER_DEC_F - Decreasing order
+ ! H5_ITER_NATIVE_F - No particular order, whatever is fastest
+ INTEGER(HSIZE_T), INTENT(IN) :: n ! Attribute’s position in index
+ INTEGER(SIZE_T), INTENT(INOUT) :: size ! Indicates the size, in the number of characters, of the attribute
+ ! returns correct size
+ CHARACTER(LEN=*), INTENT(OUT) :: name ! Buffer in which link value is returned
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+
+ INTEGER(SIZE_T) :: group_namelen
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+ INTEGER(HID_T) :: lapl_id_default
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5lget_name_by_idx_c(loc_id, group_name, group_namelen, index_field, order, n, &
+ size, name, lapl_id_default)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5LGET_NAME_BY_IDX_C'::h5lget_name_by_idx_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: group_name
+ INTEGER(SIZE_T) :: group_namelen
+ INTEGER, INTENT(IN) :: index_field
+ INTEGER, INTENT(IN) :: order
+ INTEGER(HSIZE_T), INTENT(IN) :: n
+ INTEGER(SIZE_T), INTENT(INOUT) :: size
+ CHARACTER(LEN=*), INTENT(OUT) :: name
+ INTEGER(HID_T) :: lapl_id_default
+ END FUNCTION h5lget_name_by_idx_c
+ END INTERFACE
+
+ group_namelen = LEN(group_name)
+
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+
+ hdferr = h5lget_name_by_idx_c(loc_id, group_name, group_namelen, index_field, order, n, &
+ size, name, lapl_id_default)
+
+ END SUBROUTINE h5lget_name_by_idx_f
+
+
+! HAS PROBLEM WITH void pointer in C
+
+!!$!----------------------------------------------------------------------
+!!$! Name: h5lget_val_by_idx_f
+!!$!
+!!$! Purpose: Returns the link value of a link, according to the order of
+!!$! an index. For symbolic links, this is the path to which the
+!!$! link points, including the null terminator. For user-defined
+!!$! links, it is the link buffer.
+!!$! Inputs:
+!!$! loc_id - File or group identifier specifying location of subject group
+!!$! group_name - Name of subject group
+!!$! index_field - Index or field which determines the order
+!!$! order - Order within field or index
+!!$! n - Link for which to retrieve information
+!!$! size - Maximum number of characters of link value to be returned.
+!!$!
+!!$! Outputs: NOTE: In C these are defined as a structure: H5L_info_t
+!!$! corder_valid - indicates whether the creation order data is valid for this attribute
+!!$! corder - is a positive integer containing the creation order of the attribute
+!!$! cset - indicates the character set used for the attribute’s name
+!!$! data_size - indicates the size, in the number of characters, of the attribute
+!!$! hdferr - error code
+!!$! Success: 0
+!!$! Failure: -1
+!!$! Optional parameters:
+!!$! lapl_id - List access property list identifier.
+!!$!
+!!$! Programmer: M. S. Breitenfeld
+!!$! March 3, 2008
+!!$!
+!!$! Modifications: N/A
+!!$!
+!!$!----------------------------------------------------------------------
+!!$ SUBROUTINE h5lget_val_by_idx_f(loc_id, group_name, index_field, order, n, &
+!!$ f_corder_valid, corder, cset, data_size, hdferr, lapl_id)
+!!$!This definition is needed for Windows DLLs
+!!$!DEC$if defined(BUILD_HDF5_DLL)
+!!$!DEC$attributes dllexport :: h5lget_val_by_idx_f
+!!$!DEC$endif
+!!$ IMPLICIT NONE
+!!$ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier specifying location of subject group
+!!$ CHARACTER(LEN=*), INTENT(IN) :: group_name ! Name of subject group
+!!$ INTEGER, INTENT(IN) :: index_field ! Index or field which determines the order
+!!$ ! H5_INDEX_UNKNOWN_F - Unknown index type
+!!$ ! H5_INDEX_NAME_F - Index on names
+!!$ ! H5_INDEX_CRT_ORDER_F - Index on creation order
+!!$ ! H5_INDEX_N_F - Number of indices defined
+!!$ INTEGER, INTENT(IN) :: order ! Order in which to iterate over index; Possible values are:
+!!$ ! H5_ITER_UNKNOWN_F - Unknown order
+!!$ ! H5_ITER_INC_F - Increasing order
+!!$ ! H5_ITER_DEC_F - Decreasing order
+!!$ ! H5_ITER_NATIVE_F - No particular order, whatever is fastest
+!!$ INTEGER(HSIZE_T), INTENT(IN) :: n ! Attribute’s position in index
+!!$ LOGICAL, INTENT(OUT) :: f_corder_valid ! Indicates whether the creation order data is valid for this attribute
+!!$ INTEGER, INTENT(OUT) :: corder ! Is a positive integer containing the creation order of the attribute
+!!$ INTEGER, INTENT(OUT) :: cset ! Indicates the character set used for the attribute’s name
+!!$ INTEGER(HSIZE_T), INTENT(OUT) :: data_size ! Indicates the size, in the number of characters, of the attribute
+!!$ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+!!$ ! 0 on success and -1 on failure
+!!$ INTEGER :: corder_valid
+!!$ INTEGER(SIZE_T) :: group_namelen
+!!$ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+!!$ INTEGER(HID_T) :: lapl_id_default
+!!$
+!!$! MS FORTRAN needs explicit interface for C functions called here.
+!!$!
+!!$ INTERFACE
+!!$ INTEGER FUNCTION h5lget_val_by_idx_c(loc_id, group_name, group_namelen, index_field, order, n, &
+!!$ corder_valid, corder, cset, data_size, lapl_id_default)
+!!$ USE H5GLOBAL
+!!$ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+!!$ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5LGET_VAL_BY_IDX_C'::h5lget_val_by_idx_c
+!!$ !DEC$ ENDIF
+!!$ INTEGER(HID_T), INTENT(IN) :: loc_id
+!!$ CHARACTER(LEN=*), INTENT(IN) :: group_name
+!!$ INTEGER(SIZE_T) :: group_namelen
+!!$ INTEGER, INTENT(IN) :: index_field
+!!$ INTEGER, INTENT(IN) :: order
+!!$ INTEGER(HSIZE_T), INTENT(IN) :: n
+!!$ INTEGER :: corder_valid
+!!$ INTEGER, INTENT(OUT) :: corder
+!!$ INTEGER, INTENT(OUT) :: cset
+!!$ INTEGER(HSIZE_T), INTENT(OUT) :: data_size
+!!$ INTEGER(HID_T) :: lapl_id_default
+!!$ END FUNCTION h5lget_val_by_idx_c
+!!$ END INTERFACE
+!!$
+!!$ group_namelen = LEN(group_name)
+!!$
+!!$ lapl_id_default = H5P_DEFAULT_F
+!!$ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+!!$
+!!$ hdferr = h5lget_info_by_idx_c(loc_id, group_name, group_namelen, index_field, order, n, &
+!!$ corder_valid, corder, cset, data_size, lapl_id_default)
+!!$
+!!$ f_corder_valid =.FALSE.
+!!$ IF (corder_valid .EQ. 1) f_corder_valid =.TRUE.
+!!$
+!!$ END SUBROUTINE h5lget_val_by_idx_f
+
+
+
+!----------------------------------------------------------------------
+! Name: h5lget_val_f
+!
+! Purpose: Returns the value of a symbolic link.
+!
+! Inputs:
+! link_loc_id - File or group identifier.
+! link_name - Link whose value is to be returned.
+! size - Maximum number of characters of link value to be returned.
+!
+! Outputs:
+! linkval_buff - The buffer to hold the returned link value.
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! lapl_id - List access property list identifier.
+!
+! Programmer: M. S. Breitenfeld
+! March 3, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+
+!!$ SUBROUTINE h5lget_val_f(link_loc_id, link_name, size, linkval_buff, &
+!!$ hdferr, lapl_id)
+!!$!This definition is needed for Windows DLLs
+!!$!DEC$if defined(BUILD_HDF5_DLL)
+!!$!DEC$attributes dllexport :: h5lget_val_f
+!!$!DEC$endif
+!!$ IMPLICIT NONE
+!!$ INTEGER(HID_T), INTENT(IN) :: link_loc_id ! File or group identifier.
+!!$ CHARACTER(LEN=*), INTENT(IN) :: link_name ! Link whose value is to be returned.
+!!$ INTEGER(SIZE_T), INTENT(IN) :: size ! Maximum number of characters of link value to be returned.
+!!$
+!!$ CHARACTER(LEN=size), INTENT(OUT) :: linkval_buff ! The buffer to hold the returned link value.
+!!$ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+!!$ ! 0 on success and -1 on failure
+!!$ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+!!$
+!!$ INTEGER :: link_namelen
+!!$ INTEGER(HID_T) :: lapl_id_default
+!!$ INTEGER :: corder_valid
+!!$
+!!$ INTEGER :: link_namelen
+!!$ INTEGER(HID_T) :: lapl_id_default
+!!$
+!!$! MS FORTRAN needs explicit interface for C functions called here.
+!!$!
+!!$ INTERFACE
+!!$ INTEGER FUNCTION h5lget_val_c(link_loc_id, link_name, link_namelen, size, linkval_buff, &
+!!$ lapl_id_default)
+!!$ USE H5GLOBAL
+!!$ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+!!$ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5LGET_VAL_C'::h5lget_val_c
+!!$ !DEC$ ENDIF
+!!$ INTEGER(HID_T), INTENT(IN) :: link_loc_id ! File or group identifier.
+!!$ CHARACTER(LEN=*), INTENT(IN) :: link_name ! Link whose value is to be returned.
+!!$ INTEGER :: link_namelen
+!!$ INTEGER(SIZE_T), INTENT(IN) :: size ! Maximum number of characters of link value to be returned.
+!!$
+!!$ CHARACTER(LEN=size), INTENT(OUT) :: linkval_buff ! The buffer to hold the returned link value.
+!!$
+!!$ INTEGER :: link_namelen
+!!$ INTEGER(HID_T) :: lapl_id_default
+!!$
+!!$ END FUNCTION h5lget_val_c
+!!$ END INTERFACE
+!!$
+!!$ link_namelen = LEN(link_name)
+!!$
+!!$ lapl_id_default = H5P_DEFAULT_F
+!!$ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+!!$
+!!$ hdferr = h5lget_val_c(link_loc_id, link_name, link_namelen, size, linkval_buff, &
+!!$ lapl_id_default)
+!!$
+!!$ END SUBROUTINE h5lget_val_f
+
+
+
+!----------------------------------------------------------------------
+! Name: H5Lregistered_f
+!
+! Purpose: Registers user-defined link class or changes behavior of existing class.
+!
+! Inputs: NOTE: In C the following represents struct H5L_class_t:
+! version - Version number of this struct
+! class_id - Link class identifier
+! comment - Comment for debugging
+! create_func - Callback during link creation
+! move_func - Callback after moving link
+! copy_func - Callback after copying link
+! trav_func - The main traversal function
+! del_func - Callback for link deletion
+! query_func - Callback for queries
+!
+! Outputs:
+! hdferr - Error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! None
+!
+! Programmer: M.S. Breitenfeld
+! February 29, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+!!$ SUBROUTINE H5Lregistered_f(version, class_id, comment, create_func, &
+!!$ move_func, copy_func, trav_func, del_func, query_func, hdferr)
+!!$!This definition is needed for Windows DLLs
+!!$!DEC$if defined(BUILD_HDF5_DLL)
+!!$!DEC$attributes dllexport :: H5Lregistered_f
+!!$!DEC$endif
+!!$ IMPLICIT NONE
+!!$ INTEGER, INTENT(IN) :: version ! Version number of this struct
+!!$ INTEGER, INTENT(IN) :: class_id ! Link class identifier
+!!$ CHARACTER(LEN=*), INTENT(IN) :: comment ! Comment for debugging
+!!$ CHARACTER(LEN=*), INTENT(IN) :: create_func ! Callback during link creation
+!!$ CHARACTER(LEN=*), INTENT(IN) :: move_func ! Callback after moving link
+!!$ CHARACTER(LEN=*), INTENT(IN) :: copy_func ! Callback after copying link
+!!$ CHARACTER(LEN=*), INTENT(IN) :: trav_func ! The main traversal function
+!!$ CHARACTER(LEN=*), INTENT(IN) :: del_func ! Callback for link deletion
+!!$ CHARACTER(LEN=*), INTENT(IN) :: query_func ! Callback for queries
+!!$ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+!!$ ! 0 on success and -1 on failure
+!!$ INTEGER :: comment_len
+!!$ INTEGER :: create_func_len
+!!$ INTEGER :: move_func_len
+!!$ INTEGER :: copy_func_len
+!!$ INTEGER :: trav_func_len
+!!$ INTEGER :: del_func_len
+!!$ INTEGER :: query_func_len
+!!$
+!!$!
+!!$! MS FORTRAN needs explicit interface for C functions called here.
+!!$!
+!!$ INTERFACE
+!!$ INTEGER FUNCTION H5Lregistered_c(version, class_id, comment, &
+!!$ create_func, create_func_len, &
+!!$ move_func, move_func_len, &
+!!$ copy_func, copy_func_len, &
+!!$ trav_func, trav_func_len, &
+!!$ del_func, del_func_len, &
+!!$ query_func,query_func_len)
+!!$ USE H5GLOBAL
+!!$ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+!!$ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5LREGISTERED_C'::H5Lregistered_c
+!!$ !DEC$ ENDIF
+!!$ INTEGER, INTENT(IN) :: version ! Version number of this struct
+!!$ INTEGER, INTENT(IN) :: class_id ! Link class identifier
+!!$ CHARACTER(LEN=*), INTENT(IN) :: comment ! Comment for debugging
+!!$ CHARACTER(LEN=*), INTENT(IN) :: create_func ! Callback during link creation
+!!$ CHARACTER(LEN=*), INTENT(IN) :: move_func ! Callback after moving link
+!!$ CHARACTER(LEN=*), INTENT(IN) :: copy_func ! Callback after copying link
+!!$ CHARACTER(LEN=*), INTENT(IN) :: trav_func ! The main traversal function
+!!$ CHARACTER(LEN=*), INTENT(IN) :: del_func ! Callback for link deletion
+!!$ CHARACTER(LEN=*), INTENT(IN) :: query_func ! Callback for queries
+!!$ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+!!$ ! 0 on success and -1 on failure
+!!$ INTEGER :: comment_len
+!!$ INTEGER :: create_func_len
+!!$ INTEGER :: move_func_len
+!!$ INTEGER :: copy_func_len
+!!$ INTEGER :: trav_func_len
+!!$ INTEGER :: del_func_len
+!!$ INTEGER :: query_func_len
+!!$
+!!$ END FUNCTION H5Lregistered_c
+!!$ END INTERFACE
+!!$
+!!$ comment_len = LEN(comment)
+!!$ create_func_len = LEN(create_func)
+!!$ move_func_len = LEN(move_func)
+!!$ copy_func_len = LEN(copy_func)
+!!$ trav_func_len = LEN(trav_func)
+!!$ del_func_len = LEN(del_func)
+!!$ query_func_len = LEN(query_func)
+!!$
+!!$ hdferr = H5Lregistered_c(version, class_id, comment, &
+!!$ create_func, create_func_len, &
+!!$ move_func, move_func_len, &
+!!$ copy_func, copy_func_len, &
+!!$ trav_func, trav_func_len, &
+!!$ del_func, del_func_len, &
+!!$ query_func, query_func_len)
+!!$
+!!$ END SUBROUTINE H5Lregistered_f
+
+END MODULE H5L
diff --git a/fortran/src/H5Of.c b/fortran/src/H5Of.c
new file mode 100644
index 0000000..9a708da
--- /dev/null
+++ b/fortran/src/H5Of.c
@@ -0,0 +1,99 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * Copyright by the Board of Trustees of the University of Illinois. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the files COPYING and Copyright.html. COPYING can be found at the root *
+ * of the source code distribution tree; Copyright.html can be found at the *
+ * root level of an installed copy of the electronic HDF5 document set and *
+ * is linked from the top-level documents page. It can also be found at *
+ * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
+ * access to either file, you may request a copy from help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/* This files contains C stubs for H5O Fortran APIs */
+
+#include "H5f90.h"
+#include "H5Eprivate.h"
+
+/*----------------------------------------------------------------------------
+ * Name: h5olink_c
+ * Purpose: Calls H5Olink
+ * Inputs:
+ * object_id - Object to be linked.
+ * new_loc_id - File or group identifier specifying location at which object is to be linked.
+ * name - Name of link to be created, relative to new_loc_id.
+ * namelen - Length of buffer for link to be created.
+ * lcpl_id - Link creation property list identifier.
+ * lapl_id - Link access property list identifier.
+ * Outputs:
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * April 21, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5olink_c (hid_t_f *object_id, hid_t_f *new_loc_id, _fcd name, size_t_f *namelen,
+ hid_t_f *lcpl_id, hid_t_f *lapl_id)
+{
+ char *c_name = NULL; /* Buffer to hold C string */
+ int_f ret_value = 0; /* Return value */
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if( (c_name = HD5f2cstring(name, (size_t)*namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Call H5Olink function.
+ */
+ if((hid_t_f)H5Olink((hid_t)*object_id, (hid_t)*new_loc_id, c_name,
+ (hid_t)*lcpl_id, (hid_t)*lapl_id) < 0)
+ HGOTO_DONE(FAIL);
+
+ done:
+ if(c_name)
+ HDfree(c_name);
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5oopen_c
+ * Purpose: Calls H5Oopen
+ * Inputs: loc_id - File or group identifier
+ * name - Attribute access property list
+ * namelen - Size of name
+ * lapl_id - Link access property list
+ * Outputs: obj_id - Dataset identifier
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * April 18, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5oopen_c (hid_t_f *loc_id, _fcd name, size_t_f *namelen, hid_t_f *lapl_id, hid_t_f *obj_id)
+{
+ char *c_name = NULL; /* Buffer to hold C string */
+ int_f ret_value = 0; /* Return value */
+
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if((c_name = HD5f2cstring(name, (size_t)*namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * Call H5Oopen function.
+ */
+ if((*obj_id = (hid_t_f)H5Oopen((hid_t)*loc_id, c_name, (hid_t)*lapl_id)) < 0)
+ HGOTO_DONE(FAIL);
+
+ done:
+ if(c_name)
+ HDfree(c_name);
+ return ret_value;
+}
+
diff --git a/fortran/src/H5Off.f90 b/fortran/src/H5Off.f90
new file mode 100644
index 0000000..c64b82d
--- /dev/null
+++ b/fortran/src/H5Off.f90
@@ -0,0 +1,163 @@
+! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+! Copyright by The HDF Group. *
+! Copyright by the Board of Trustees of the University of Illinois. *
+! All rights reserved. *
+! *
+! This file is part of HDF5. The full HDF5 copyright notice, including *
+! terms governing use, modification, and redistribution, is contained in *
+! the files COPYING and Copyright.html. COPYING can be found at the root *
+! of the source code distribution tree; Copyright.html can be found at the *
+! root level of an installed copy of the electronic HDF5 document set and *
+! is linked from the top-level documents page. It can also be found at *
+! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
+! access to either file, you may request a copy from help@hdfgroup.org. *
+! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+!
+!
+! This file contains Fortran90 interfaces for H5O functions.
+!
+MODULE H5O
+
+ USE H5GLOBAL
+
+CONTAINS
+
+!----------------------------------------------------------------------
+! Name: h5olink_f
+!
+! Purpose: Creates a hard link to an object in an HDF5 file.
+!
+! Inputs:
+! object_id - Object to be linked.
+! new_loc_id - File or group identifier specifying location at which object is to be linked.
+! new_link_name - Name of link to be created, relative to new_loc_id.
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! lcpl_id - Link creation property list identifier.
+! lapl_id - Link access property list identifier.
+!
+! Programmer: M.S. Breitenfeld
+! April 21, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5olink_f(object_id, new_loc_id, new_link_name, hdferr, lcpl_id, lapl_id)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5olink_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: object_id ! Object to be linked
+ INTEGER(HID_T), INTENT(IN) :: new_loc_id ! File or group identifier specifying
+ ! location at which object is to be linked.
+ CHARACTER(LEN=*), INTENT(IN) :: new_link_name ! Name of link to be created, relative to new_loc_id.
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ ! Success: 0
+ ! Failure: -1
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list identifier.
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link creation property list identifier.
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER(HID_T) :: lcpl_id_default
+
+ INTEGER(SIZE_T) :: new_link_namelen
+
+ INTERFACE
+ INTEGER FUNCTION h5olink_c(object_id, new_loc_id, new_link_name, new_link_namelen, &
+ lcpl_id_default, lapl_id_default)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5OLINK_C'::h5olink_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: object_id
+ INTEGER(HID_T), INTENT(IN) :: new_loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: new_link_name
+ INTEGER(SIZE_T) :: new_link_namelen
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER(HID_T) :: lcpl_id_default
+ END FUNCTION h5olink_c
+ END INTERFACE
+
+ new_link_namelen = LEN(new_link_name)
+
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+ lcpl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lcpl_id)) lcpl_id_default = lcpl_id
+
+ hdferr = h5olink_c(object_id, new_loc_id, new_link_name, new_link_namelen, &
+ lcpl_id_default, lapl_id_default)
+
+ END SUBROUTINE h5olink_f
+
+!----------------------------------------------------------------------
+! Name: h5oopen_f
+!
+! Purpose: Opens an object in an HDF5 file by location identifier and path name.O
+!
+! Inputs:
+! loc_id - File or group identifier
+! name - Path to the object, relative to loc_id.
+! Outputs:
+! obj_id - Object identifier for the opened object
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! lapl_id - Access property list identifier for the link pointing to the object
+!
+! Programmer: M.S. Breitenfeld
+! April 18, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5oopen_f(loc_id, name, obj_id, hdferr, lapl_id)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5oopen_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: name ! Path to the object, relative to loc_id
+ INTEGER(HID_T), INTENT(OUT) :: obj_id ! Object identifier for the opened object
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ ! Success: 0
+ ! Failure: -1
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Attribute access property list
+ INTEGER(HID_T) :: lapl_id_default
+
+ INTEGER(SIZE_T) :: namelen
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5oopen_c(loc_id, name, namelen, lapl_id_default, obj_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5OOPEN_C'::h5oopen_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: name
+ INTEGER(HID_T) :: lapl_id_default
+ INTEGER(SIZE_T) :: namelen
+ INTEGER(HID_T), INTENT(OUT) :: obj_id
+ END FUNCTION h5oopen_c
+ END INTERFACE
+
+ namelen = LEN(name)
+
+ lapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
+
+ hdferr = h5oopen_c(loc_id, name, namelen, lapl_id_default, obj_id)
+
+ END SUBROUTINE h5oopen_f
+
+
+END MODULE H5O
diff --git a/fortran/src/H5Pf.c b/fortran/src/H5Pf.c
index f674530..ea7a4bb 100644
--- a/fortran/src/H5Pf.c
+++ b/fortran/src/H5Pf.c
@@ -1,3 +1,4 @@
+
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Copyright by The HDF Group. *
* Copyright by the Board of Trustees of the University of Illinois. *
@@ -17,7 +18,6 @@
#include "H5f90.h"
-
/*----------------------------------------------------------------------------
* Name: h5pcreate_c
* Purpose: Call H5Pcreate to create a property list
@@ -2710,16 +2710,20 @@ int_f
nh5pget_class_name_c(hid_t_f *class, _fcd name, int_f *name_len)
{
int_f ret_value = -1;
- hid_t c_class;
- char* c_name;
-
+ char *c_name = NULL; /* Buffer to hold C string */
+ size_t c_size;
- c_class = (hid_t)*class;
+ c_size = (size_t)*name_len + 1;
+ /*
+ * Allocate buffer to hold name
+ */
+ if ((c_name = HDmalloc(c_size)) == NULL)
+ goto DONE;
/*
* Call H5Pget_class_name function.
*/
- c_name = H5Pget_class_name(c_class);
- if( c_name == NULL) goto DONE;
+ c_name = H5Pget_class_name((hid_t)*class);
+ if(c_name == NULL) goto DONE;
HD5packFstring(c_name, _fcdtocp(name), (size_t)*name_len);
ret_value = (int_f)HDstrlen(c_name);
@@ -3131,7 +3135,7 @@ nh5pset_fapl_multi_sc ( hid_t_f *prp_id , int_f *flag)
*/
status = H5Pset_fapl_multi(c_prp_id, NULL, NULL, NULL, NULL, relax);
- if ( status < 0 ) return ret_value;
+ if ( status < 0 ) return ret_value; /* error occurred */
ret_value = 0;
return ret_value;
}
@@ -3414,3 +3418,1017 @@ DONE:
return ret_value;
}
+/*----------------------------------------------------------------------------
+ * Name: h5pget_attr_phase_change_c
+ * Purpose: Calls H5Pget_attr_phase_change
+ *
+ * Inputs: ocpl_id - Object (dataset or group) creation property list identifier
+ * Outputs max_compact - Maximum number of attributes to be stored in compact storage
+ * min_dense - Minimum number of attributes to be stored in dense storage
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * January, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pget_attr_phase_change_c(hid_t_f *ocpl_id, int_f *max_compact, int_f *min_dense )
+{
+ int ret_value = -1;
+ hid_t c_ocpl_id;
+ unsigned c_max_compact;
+ unsigned c_min_dense;
+ herr_t ret;
+ /*
+ * Call H5Pget_attr_phase_change function.
+ */
+ c_ocpl_id = (hid_t)*ocpl_id;
+ ret = H5Pget_attr_phase_change(c_ocpl_id, &c_max_compact,&c_min_dense);
+ if (ret < 0) return ret_value;
+
+ *max_compact = (int_f)c_max_compact;
+ *min_dense = (int_f)c_min_dense;
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pset_attr_creation_order_c
+ * Purpose: Calls H5Ppset_attr_creation_order
+ *
+ * Inputs: ocpl_id - Object (dataset or group) creation property list identifier
+ * Outputs crt_order_flags - Flags specifying whether to track and index attribute creation order
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * January, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pset_attr_creation_order_c(hid_t_f *ocpl_id, int_f *crt_order_flags )
+{
+ int ret_value = -1;
+ unsigned c_crt_order_flags;
+ herr_t ret;
+ /*
+ * Call h5pset_attr_creation_order function.
+ */
+ c_crt_order_flags = (unsigned)*crt_order_flags;
+ ret = H5Pset_attr_creation_order((hid_t)*ocpl_id, c_crt_order_flags);
+ if (ret < 0) return ret_value;
+
+ *crt_order_flags = (int_f)c_crt_order_flags;
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pset_shared_mesg_nindexes_c
+ * Purpose: Calls h5pset_shared_mesg_nindexes
+ *
+ * Inputs:
+ * plist_id - file creation property list
+ * nindexes - Number of shared object header message indexes
+ * available in files created WITH this property list
+ *
+ * Outputs:
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * January, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pset_shared_mesg_nindexes_c(hid_t_f *plist_id, int_f *nindexes )
+{
+ int ret_value = -1;
+ hid_t c_plist_id;
+ unsigned c_nindexes;
+ herr_t ret;
+ /*
+ * Call h5pset_shared_mesg_nindexes function.
+ */
+ c_plist_id = (hid_t)*plist_id;
+ c_nindexes = (unsigned)*nindexes;
+ ret = H5Pset_shared_mesg_nindexes(c_plist_id, c_nindexes );
+ if (ret < 0) return ret_value;
+
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pset_shared_mesg_index_c
+ * Purpose: Calls H5Pset_shared_mesg_index
+ *
+ * Inputs:
+ * fcpl_id - File creation property list identifier.
+ * index_num - Index being configured.
+ * mesg_type_flags - Types of messages that should be stored in this index.
+ * min_mesg_size - Minimum message size.
+ *
+ * Outputs:
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * January, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pset_shared_mesg_index_c(hid_t_f *fcpl_id, int_f *index_num, int_f *mesg_type_flags, int_f *min_mesg_size)
+{
+ int ret_value = -1;
+ herr_t ret;
+ /*
+ * Call h5pset_shared_mesg_index function.
+ */
+ ret = H5Pset_shared_mesg_index((hid_t)*fcpl_id,(unsigned)*index_num, (unsigned)*mesg_type_flags, (unsigned)*min_mesg_size);
+ if (ret < 0) return ret_value;
+
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pget_attr_creation_order_c
+ * Purpose: Calls H5Pget_attr_creation_order
+ *
+ * Inputs:
+ * ocpl_id - Object (group or dataset) creation property list identifier
+ * Outputs:
+ * crt_order_flags - Flags specifying whether to track and index attribute creation order
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pget_attr_creation_order_c(hid_t_f *ocpl_id, int_f *crt_order_flags)
+{
+ int ret_value = -1;
+ herr_t ret;
+
+ unsigned c_crt_order_flags;
+ /*
+ * Call h5pget_attr_creation_order function.
+ */
+
+ ret = H5Pget_attr_creation_order((hid_t)*ocpl_id, &c_crt_order_flags);
+ if (ret < 0) return ret_value;
+
+ *crt_order_flags = (int_f)c_crt_order_flags;
+
+ ret_value = 0;
+ return ret_value;
+}
+/*----------------------------------------------------------------------------
+ * Name: h5pset_libver_bounds_c
+ * Purpose: Calls H5Pset_libver_bounds
+ *
+ * Inputs:
+ * fapl_id - File access property list identifier
+ * low - The earliest version of the library that will be used for writing objects.
+ * high - The latest version of the library that will be used for writing objects.
+ * Outputs:
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February 18, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pset_libver_bounds_c(hid_t_f *fapl_id, int_f *low, int_f *high )
+{
+ int ret_value = -1;
+ herr_t ret;
+
+ /*
+ * Call H5Pset_libver_bounds function.
+ */
+ ret = H5Pset_libver_bounds( (hid_t)*fapl_id, (H5F_libver_t)*low, (H5F_libver_t)*high );
+ if (ret < 0) return ret_value;
+
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pset_link_creation_order_c
+ * Purpose: Calls H5Pset_link_creation_order
+ *
+ * Inputs: gcpl_id - Group creation property list identifier
+ * crt_order_flags - Creation order flag(s)
+ * Outputs:
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February 18, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pset_link_creation_order_c(hid_t_f *gcpl_id, int_f *crt_order_flags )
+{
+ int ret_value = -1;
+ herr_t ret;
+ /*
+ * Call H5Pset_link_creation_order function.
+ */
+ ret = H5Pset_link_creation_order((hid_t)*gcpl_id, (unsigned)*crt_order_flags);
+ if (ret < 0) return ret_value;
+
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pget_link_phase_change_c
+ * Purpose: Calls H5Pget_link_phase_change
+ *
+ * Inputs: gcpl_id - Group creation property list identifier
+ * Outputs max_compact - Maximum number of attributes to be stored in compact storage
+ * min_dense - Minimum number of attributes to be stored in dense storage
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February 20, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pget_link_phase_change_c(hid_t_f *gcpl_id, int_f *max_compact, int_f *min_dense )
+{
+ int ret_value = -1;
+ unsigned c_max_compact;
+ unsigned c_min_dense;
+ herr_t ret;
+
+ /*
+ * Call H5Pget_link_phase_change function.
+ */
+ ret = H5Pget_link_phase_change((hid_t)*gcpl_id, &c_max_compact,&c_min_dense);
+ if (ret < 0) return ret_value;
+
+ *max_compact = (int_f)c_max_compact;
+ *min_dense = (int_f)c_min_dense;
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pget_obj_track_times_c
+ * Purpose: Call H5Pget_obj_track_times
+ *
+ * Inputs: plist_id - property list id
+ * Outputs:
+ * flag - TRUE/FALSE flag
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February 22, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5pget_obj_track_times_c(hid_t_f *plist_id, int_f *flag)
+{
+ int ret_value = -1;
+ hbool_t c_track_times=0;
+ herr_t ret;
+
+ /*
+ * Call H5Pget_obj_track_times function.
+ */
+ ret = H5Pget_obj_track_times((hid_t)*plist_id, &c_track_times);
+
+ if (ret < 0) return ret_value; /* error occurred */
+
+ *flag = 0;
+ if(c_track_times > 0) *flag = 1;
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pset_obj_track_times_c
+ * Purpose: Call H5Pset_obj_track_times
+ *
+ * Inputs: plist_id - property list id
+ * flag - TRUE/FALSE flag
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February 22, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5pset_obj_track_times_c(hid_t_f *plist_id, int_f *flag)
+{
+ int ret_value = -1;
+ hbool_t c_track_times;
+ herr_t ret;
+
+
+ c_track_times = (hbool_t)*flag;
+
+ /*
+ * Call H5Pset_obj_track_times function.
+ */
+ ret = H5Pset_obj_track_times((hid_t)*plist_id, c_track_times);
+
+ if (ret < 0) return ret_value; /* error occurred */
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pset_create_inter_group_c
+ * Purpose: Calls H5Pset_create_intermediate_group
+ *
+ * Inputs:
+ * lcpl_id - Link creation property list identifier
+ * crt_intermed_group - crt_intermed_group specifying whether
+ * to create intermediate groups upon the
+ * creation of an object
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February 22, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5pset_create_inter_group_c(hid_t_f *lcpl_id, int_f *crt_intermed_group)
+{
+ int ret_value = -1;
+ herr_t ret;
+
+ /*
+ * Call H5Pset_create_intermediate_group function.
+ */
+ ret = H5Pset_create_intermediate_group((hid_t)*lcpl_id, (unsigned)*crt_intermed_group);
+
+ if (ret < 0) return ret_value; /* error occurred */
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pget_link_creation_order_c
+ * Purpose: Calls H5Pget_link_creation_order
+ *
+ * Inputs:
+ * gcpl_id - Group creation property list identifier
+ * Outputs:
+ * crt_order_flags - Creation order flag(s)
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * March 3, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pget_link_creation_order_c(hid_t_f *gcpl_id, int_f *crt_order_flags)
+{
+ int ret_value = -1;
+ herr_t ret;
+
+ unsigned c_crt_order_flags;
+ /*
+ * Call h5pget_link_creation_order function.
+ */
+
+ ret = H5Pget_link_creation_order((hid_t)*gcpl_id, &c_crt_order_flags);
+ if (ret < 0) return ret_value;
+
+ *crt_order_flags = (int_f)c_crt_order_flags;
+
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pset_char_encoding_c
+ * Purpose: Calls H5Pset_char_encoding
+ *
+ * Inputs:
+ * plist_id - Property list identifier
+ * encoding - String encoding character set:
+ * H5T_CSET_ASCII_F -> US ASCII
+ * H5T_CSET_UTF8_F -> UTF-8 Unicode encoding
+ * Outputs: NONE
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * March 3, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pset_char_encoding_c(hid_t_f *plist_id, int_f *encoding)
+{
+ int ret_value = -1;
+ herr_t ret;
+
+ /*
+ * Call H5Pset_char_encoding function.
+ */
+ ret = H5Pset_char_encoding((hid_t)*plist_id, (H5T_cset_t)*encoding);
+ if (ret < 0) return ret_value;
+
+ ret_value = 0;
+ return ret_value;
+}
+
+
+/*----------------------------------------------------------------------------
+ * Name: h5pget_char_encoding_c
+ * Purpose: Calls H5Pget_char_encoding
+ *
+ * Inputs:
+ * plist_id - Property list identifier
+ * Outputs:
+ * encoding - Encoding character set:
+ * H5T_CSET_ASCII_F -> US ASCII
+ * H5T_CSET_UTF8_F -> UTF-8 Unicode encoding
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * March 3, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pget_char_encoding_c(hid_t_f *plist_id, int_f *encoding)
+{
+ int ret_value = -1;
+ H5T_cset_t c_encoding;
+ herr_t ret;
+ /*
+ * Call H5Pget_char_encoding function.
+ */
+ ret = H5Pget_char_encoding((hid_t)*plist_id, &c_encoding);
+ if (ret < 0) return ret_value;
+
+ *encoding = (int_f)c_encoding;
+
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pset_copy_object_c
+ * Purpose: Calls H5Pset_copy_object
+ *
+ * Inputs:
+ * ocp_plist_id - Object copy property list identifier
+ * copy_options - Copy option(s) to be set
+ *
+ * Outputs:
+ * NONE
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * March 3, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pset_copy_object_c(hid_t_f *ocp_plist_id, int_f *copy_options)
+{
+ int ret_value = -1;
+ herr_t ret;
+ /*
+ * Call H5Pset_copy_object function.
+ */
+ ret = H5Pset_copy_object((hid_t)*ocp_plist_id, (unsigned)*copy_options);
+ if (ret < 0) return ret_value;
+
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pget_copy_object_c
+ * Purpose: Calls H5Pget_copy_object
+ *
+ * Inputs:
+ * ocp_plist_id - Object copy property list identifier
+ *
+ * Outputs:
+ * copy_options - Copy option(s) to be get
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * March 3, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pget_copy_object_c(hid_t_f *ocp_plist_id, int_f *copy_options)
+{
+ int ret_value = -1;
+ unsigned c_copy_options;
+ herr_t ret;
+ /*
+ * Call H5Pget_copy_object function.
+ */
+ ret = H5Pget_copy_object((hid_t)*ocp_plist_id, &c_copy_options);
+ if (ret < 0) return ret_value;
+
+ *copy_options = (int_f)c_copy_options;
+
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pget_data_transform_c
+ * Purpose: Calls H5Pget_data_transform
+ * Inputs:
+ * prp_id - property list identifier to query
+ * expression_len - buffer size transorm expression
+ *
+ * Output:
+ * expression - buffer to hold transform expression
+ *
+ * Returns:
+ * Success: 0
+ * Failure: -1
+ *
+ * Programmer: M.S. Breitenfeld
+ * March 19, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pget_data_transform_c(hid_t_f *plist_id, _fcd expression, int_f *expression_len, size_t_f *size)
+{
+ int_f ret_value = -1;
+ char *c_expression = NULL; /* Buffer to hold C string */
+ size_t c_expression_len;
+ ssize_t ret;
+
+
+ c_expression_len = (size_t)*expression_len + 1;
+
+ /* should expression_len be size_t_f? */
+ /*
+ * Allocate memory to store the expression.
+ */
+ if( c_expression_len) c_expression = (char*) HDmalloc(c_expression_len);
+ if (c_expression == NULL) return ret_value;
+
+ /*
+ * Call h5pget_data_transform function.
+ */
+ ret = H5Pget_data_transform((hid_t)*plist_id, c_expression, c_expression_len);
+ if(ret < 0) return ret_value;
+ /* or strlen ? */
+ HD5packFstring(c_expression, _fcdtocp(expression), c_expression_len-1);
+
+ *size = (size_t_f)ret;
+
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pset_data_transform_c
+ * Purpose: Calls H5Pset_data_transform
+ * Inputs:
+ * prp_id - property list identifier to query
+ * expression - buffer to hold transform expression
+ * expression_len - buffer size transorm expression
+ *
+ * Output:
+ *
+ * Returns:
+ * Success: 0
+ * Failure: -1
+ *
+ * Programmer: M.S. Breitenfeld
+ * March 19, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pset_data_transform_c(hid_t_f *plist_id, _fcd expression, int_f *expression_len)
+{
+ int_f ret_value = -1; /* Return value */
+ char* c_expression = NULL; /* Buffer to hold C string */
+ herr_t ret;
+ /*
+ * Convert FORTRAN name to C name
+ */
+ if(NULL == (c_expression = HD5f2cstring(expression, (size_t)*expression_len)))
+ return ret_value;
+ /*
+ * Call h5pset_data_transform function.
+ */
+ ret = H5Pset_data_transform((hid_t)*plist_id, c_expression);
+ if(ret<0) return ret_value;
+
+ ret_value = 0;
+ if(c_expression)
+ HDfree(c_expression);
+
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pget_local_heap_size_hint_c
+ * Purpose: Calls H5Pget_local_heap_size_hint
+ * Inputs:
+ * gcpl_id - Group creation property list identifier
+ *
+ * Output:
+ * size_hint - Hint for size of local heap
+ * Returns:
+ * Success: 0
+ * Failure: -1
+ *
+ * Programmer: M.S. Breitenfeld
+ * March 21, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pget_local_heap_size_hint_c(hid_t_f *gcpl_id, size_t_f *size_hint)
+{
+ int_f ret_value = -1; /* Return value */
+ size_t c_size_hint;
+ herr_t ret;
+ /*
+ * Call H5Pget_local_heap_size_hint function.
+ */
+ ret = H5Pget_local_heap_size_hint((hid_t)*gcpl_id, &c_size_hint);
+ if(ret<0) return ret_value;
+
+ *size_hint = (size_t_f)c_size_hint;
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pget_est_link_info_c
+ * Purpose: Calls H5Pget_est_link_info
+ * Inputs:
+ * gcpl_id - Group creation property list identifier
+ *
+ * Output:
+ * est_num_entries - Estimated number of links to be inserted into group
+ * est_name_len - Estimated average length of link names
+ * Returns:
+ * Success: 0
+ * Failure: -1
+ *
+ * Programmer: M.S. Breitenfeld
+ * March 21, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pget_est_link_info_c(hid_t_f *gcpl_id, int_f *est_num_entries, int_f *est_name_len)
+{
+ int_f ret_value = -1; /* Return value */
+ unsigned c_est_num_entries;
+ unsigned c_est_name_len;
+ herr_t ret;
+ /*
+ * Call h5pget_est_link_info function.
+ */
+ ret = H5Pget_est_link_info((hid_t)*gcpl_id, &c_est_num_entries, &c_est_name_len);
+ if(ret<0) return ret_value;
+
+ *est_num_entries = (int_f)c_est_num_entries;
+ *est_name_len = (int_f)c_est_name_len;
+
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pset_local_heap_size_hint_c
+ * Purpose: Calls H5Pset_local_heap_size_hint
+ * Inputs:
+ * gcpl_id - Group creation property list identifier
+ * size_hint - Hint for size of local heap
+ *
+ * Output:
+ *
+ * Returns:
+ * Success: 0
+ * Failure: -1
+ *
+ * Programmer: M.S. Breitenfeld
+ * March 21, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pset_local_heap_size_hint_c(hid_t_f *gcpl_id, size_t_f *size_hint)
+{
+ int_f ret_value = -1; /* Return value */
+ herr_t ret;
+ /*
+ * Call H5Pget_local_heap_size_hint function.
+ */
+ ret = H5Pset_local_heap_size_hint((hid_t)*gcpl_id, (size_t)*size_hint);
+ if(ret<0) return ret_value;
+
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pset_est_link_info_c
+ * Purpose: Calls H5Pset_est_link_info
+ * Inputs:
+ * gcpl_id - Group creation property list identifier
+ * est_num_entries - Estimated number of links to be inserted into group
+ * est_name_len - Estimated average length of link names
+ *
+ * Output:
+ * Returns:
+ * Success: 0
+ * Failure: -1
+ *
+ * Programmer: M.S. Breitenfeld
+ * March 21, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pset_est_link_info_c(hid_t_f *gcpl_id, int_f *est_num_entries, int_f *est_name_len)
+{
+ int_f ret_value = -1; /* Return value */
+ herr_t ret;
+ /*
+ * Call h5pset_est_link_info function.
+ */
+ ret = H5Pset_est_link_info((hid_t)*gcpl_id, (unsigned)*est_num_entries, (unsigned)*est_name_len);
+ if(ret<0) return ret_value;
+
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pset_link_phase_change_c
+ * Purpose: Calls H5Pset_link_phase_change
+ *
+ * Inputs: gcpl_id - Group creation property list identifier
+ * max_compact - Maximum number of attributes to be stored in compact storage
+ * min_dense - Minimum number of attributes to be stored in dense storage
+ * Outputs
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * March 21, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pset_link_phase_change_c(hid_t_f *gcpl_id, int_f *max_compact, int_f *min_dense )
+{
+ int ret_value = -1;
+ herr_t ret;
+
+ /*
+ * Call H5Pset_link_phase_change function.
+ */
+ ret = H5Pset_link_phase_change((hid_t)*gcpl_id, (unsigned)*max_compact,(unsigned)*min_dense);
+ if (ret < 0) return ret_value;
+
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pset_fapl_direct_c
+ * Purpose: Calls H5Pset_fapl_direct
+ *
+ * Inputs:
+ * fapl_id - File access property list identifier
+ * alignment - Required memory alignment boundary
+ * block_size - File system block size
+ * cbuf_size - Copy buffer size
+ * Outputs
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * March 21, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pset_fapl_direct_c(hid_t_f *fapl_id, size_t_f *alignment, size_t_f *block_size, size_t_f *cbuf_size )
+{
+ int ret_value = -1;
+ herr_t ret;
+
+ /*
+ * Call H5Pset_link_phase_change function.
+ */
+#ifdef H5_HAVE_DIRECT
+ ret = H5Pset_fapl_direct((hid_t)*fapl_id, (size_t)*alignment, (size_t)*block_size, (size_t)*cbuf_size );
+ if (ret < 0) return ret_value;
+
+ ret_value = 0;
+
+#endif
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pget_fapl_direct_c
+ * Purpose: Calls H5Pget_fapl_direct
+ *
+ * Inputs:
+ * fapl_id - File access property list identifier
+ * Outputs:
+ * alignment - Required memory alignment boundary
+ * block_size - File system block size
+ * cbuf_size - Copy buffer size
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * March 21, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pget_fapl_direct_c(hid_t_f *fapl_id, size_t_f *alignment, size_t_f *block_size, size_t_f *cbuf_size )
+{
+ int ret_value = -1;
+ herr_t ret;
+ size_t c_alignment;
+ size_t c_block_size;
+ size_t c_cbuf_size;
+
+ /*
+ * Call H5Pget_link_phase_change function.
+ */
+#ifdef H5_HAVE_DIRECT
+ ret = H5Pget_fapl_direct((hid_t)*fapl_id, &c_alignment, &c_block_size, &c_cbuf_size );
+ if (ret < 0) return ret_value;
+
+ *alignment = (size_t_f)c_alignment;
+ *block_size = (size_t_f)c_block_size;
+ *cbuf_size = (size_t_f)c_cbuf_size;
+
+ ret_value = 0;
+#endif
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pset_attr_phase_change_c
+ * Purpose: Calls H5Pset_attr_phase_change
+ *
+ * Inputs: ocpl_id - Object (dataset or group) creation property list identifier
+ * max_compact - Maximum number of attributes to be stored in compact storage
+ * min_dense - Minimum number of attributes to be stored in dense storage
+ * Outputs:
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * March 21, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pset_attr_phase_change_c(hid_t_f *ocpl_id, int_f *max_compact, int_f *min_dense )
+{
+ int ret_value = -1;
+ herr_t ret;
+ /*
+ * Call H5Pset_attr_phase_change function.
+ */
+ ret = H5Pset_attr_phase_change((hid_t)*ocpl_id, (unsigned)*max_compact,(unsigned)*min_dense);
+ if (ret < 0) return ret_value;
+
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pset_nbit_c
+ * Purpose: Calls H5Pset_nbit
+ *
+ * Inputs: plist_id - Dataset creation property list identifier
+ * Outputs:
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * March 21, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pset_nbit_c(hid_t_f *plist_id )
+{
+ int ret_value = -1;
+ herr_t ret;
+ /*
+ * Call H5Pset_nbit_change function.
+ */
+ ret = H5Pset_nbit((hid_t)*plist_id);
+ if (ret < 0) return ret_value;
+
+ ret_value = 0;
+ return ret_value;
+}
+/*----------------------------------------------------------------------------
+ * Name: h5pset_scaleoffset_c
+ * Purpose: Calls H5Pset_scaleoffset
+ *
+ * Inputs:
+ * plist_id - Dataset creation property list identifier
+ * scale_type - Flag indicating compression method.
+ * scale_factor - Parameter related to scale.
+ * Outputs:
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * March 21, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pset_scaleoffset_c(hid_t_f *plist_id, int_f *scale_type, int_f *scale_factor )
+{
+ int ret_value = -1;
+ H5Z_SO_scale_type_t c_scale_type;
+ herr_t ret;
+ /*
+ * Call H5Pset_scaleoffset_change function.
+ */
+ c_scale_type = (H5Z_SO_scale_type_t)*scale_type;
+
+ ret = H5Pset_scaleoffset((hid_t)*plist_id, c_scale_type, (int)*scale_factor);
+ if (ret < 0) return ret_value;
+
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pset_nlinks
+ * Purpose: Calls H5Pset_nlinks
+ *
+ * Inputs:
+ * lapl_id - File access property list identifier
+ * nlinks - Maximum number of links to traverse
+ * Outputs:
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * March 24, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pset_nlinks_c(hid_t_f *lapl_id, size_t_f *nlinks)
+{
+ int ret_value = -1;
+ herr_t ret;
+ /*
+ * Call H5Pset_nlinks function.
+ */
+ ret = H5Pset_nlinks((hid_t)*lapl_id, (size_t)*nlinks);
+ if (ret < 0) return ret_value;
+
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pget_nlinks
+ * Purpose: Calls H5Pget_nlinks
+ *
+ * Inputs:
+ * lapl_id - File access property list identifier
+ *
+ * Outputs:
+ * nlinks - Maximum number of links to traverse
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * March 24, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5pget_nlinks_c(hid_t_f *lapl_id, size_t_f *nlinks)
+{
+ int ret_value = -1;
+ herr_t ret;
+ size_t c_nlinks;
+ /*
+ * Call H5Pget_nlinks function.
+ */
+ ret = H5Pget_nlinks((hid_t)*lapl_id, &c_nlinks);
+ if (ret < 0) return ret_value;
+
+ *nlinks = (size_t_f)c_nlinks;
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5pget_create_inter_group_c
+ * Purpose: Calls H5Pget_create_intermediate_group
+ *
+ * Inputs:
+ * lcpl_id - Link creation property list identifier
+ * crt_intermed_group - Specifying whether to create intermediate groups upon
+ * the creation of an object
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * April 4, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5pget_create_inter_group_c(hid_t_f *lcpl_id, int_f *crt_intermed_group)
+{
+ int ret_value = -1;
+ herr_t ret;
+
+ /*
+ * Call H5Pget_create_intermediate_group function.
+ */
+ ret = H5Pget_create_intermediate_group((hid_t)*lcpl_id, (unsigned)*crt_intermed_group);
+
+ if (ret < 0) return ret_value; /* error occurred */
+ ret_value = 0;
+ return ret_value;
+}
diff --git a/fortran/src/H5Pff.f90 b/fortran/src/H5Pff.f90
index 1c1fb90..ed935e9 100644
--- a/fortran/src/H5Pff.f90
+++ b/fortran/src/H5Pff.f90
@@ -1943,7 +1943,7 @@
hdferr = h5pget_fapl_core_c(prp_id, increment, backing_store_flag)
backing_store =.FALSE.
- if (backing_store_flag .eq. 1) backing_store =.TRUE.
+ IF (backing_store_flag .EQ. 1) backing_store =.TRUE.
END SUBROUTINE h5pget_fapl_core_f
!----------------------------------------------------------------------
@@ -4665,19 +4665,18 @@
!----------------------------------------------------------------------
! Name: h5pget_class_name_f
!
-! Purpose: Queries the ithe name of a class.
+! Purpose: Queries the name of a class.
!
! Inputs:
! prp_id - property list identifier to query
! Outputs:
! name - name of a class
-! hdferr: - error code
-!
-! Success: Actual lenght of the class name
-! If provided buffer "name" is
-! smaller, than name will be
-! truncated to fit into
-! provided user buffer
+! size - Actual length of the class name
+! If provided buffer "name" is smaller,
+! than name will be truncated to fit into
+! provided user buffer
+! hdferr: - error code
+! Success: 0
! Failure: -1
! Optional parameters:
! NONE
@@ -4685,12 +4684,12 @@
! Programmer: Elena Pourmal
! October 9, 2002
!
-! Modifications:
+! Modifications: Returned the size of name as an argument
!
! Comment:
!----------------------------------------------------------------------
- SUBROUTINE h5pget_class_name_f(prp_id, name, hdferr)
+ SUBROUTINE h5pget_class_name_f(prp_id, name, size, hdferr)
!
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
@@ -4699,7 +4698,9 @@
!
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- CHARACTER(LEN=*), INTENT(INOUT) :: name ! Buffer to retireve class name
+ CHARACTER(LEN=*), INTENT(OUT) :: name ! Buffer to retireve class name
+
+ INTEGER, INTENT(OUT) :: size ! Actual length of the class name
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTEGER :: name_len
@@ -4715,8 +4716,13 @@
INTEGER, INTENT(IN) :: name_len
END FUNCTION h5pget_class_name_c
END INTERFACE
+
name_len = LEN(name)
- hdferr = h5pget_class_name_c(prp_id, name , name_len)
+ size = h5pget_class_name_c(prp_id, name, name_len)
+
+ hdferr = 0
+ IF(size.LT.0) hdferr = -1
+
END SUBROUTINE h5pget_class_name_f
!----------------------------------------------------------------------
@@ -6387,4 +6393,1764 @@
hdferr = h5premove_filter_c(prp_id, filter)
END SUBROUTINE h5premove_filter_f
- END MODULE H5P
+!----------------------------------------------------------------------
+! Name: H5Pget_attr_phase_change_f
+!
+! Purpose: Retrieves attribute storage phase change thresholds
+!
+! Inputs:
+! ocpl_id - Object (dataset or group) creation property list identifier
+! Outputs:
+! max_compact - Maximum number of attributes to be stored in compact storage
+! (Default: 8)
+! min_dense - Minimum number of attributes to be stored in dense storage
+! (Default: 6)
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! January, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5pget_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pget_attr_phase_change_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: ocpl_id ! Object (dataset or group) creation property list identifier
+ INTEGER, INTENT(OUT) :: max_compact ! Maximum number of attributes to be stored in compact storage
+ !(Default: 8)
+ INTEGER, INTENT(OUT) :: min_dense ! Minimum number of attributes to be stored in dense storage
+ ! (Default: 6)
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pget_attr_phase_change_c(ocpl_id, max_compact, min_dense)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PGET_ATTR_PHASE_CHANGE_C'::h5pget_attr_phase_change_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: ocpl_id
+ INTEGER, INTENT(OUT) :: max_compact
+ INTEGER, INTENT(OUT) :: min_dense
+
+ END FUNCTION h5pget_attr_phase_change_c
+ END INTERFACE
+
+ hdferr = h5pget_attr_phase_change_c(ocpl_id, max_compact, min_dense)
+ END SUBROUTINE h5pget_attr_phase_change_f
+
+!----------------------------------------------------------------------
+! Name: H5Pset_attr_creation_order_f
+!
+! Purpose: Sets tracking and indexing of attribute creation order
+!
+! Inputs:
+! ocpl_id - Object creation property list identifier
+! crt_order_flags - Flags specifying whether to track and index attribute creation order
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! January, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5pset_attr_creation_order_f(ocpl_id, crt_order_flags , hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_attr_creation_order_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: ocpl_id ! Object (dataset or group) creation property list identifier
+ INTEGER, INTENT(IN) :: crt_order_flags ! Flags specifying whether to track and index attribute creation order
+
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION H5Pset_attr_creation_order_c(ocpl_id, crt_order_flags)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PSET_ATTR_CREATION_ORDER_C'::h5pset_attr_creation_order_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: ocpl_id
+ INTEGER, INTENT(IN) :: crt_order_flags
+
+ END FUNCTION H5Pset_attr_creation_order_c
+ END INTERFACE
+
+ hdferr = H5Pset_attr_creation_order_c(ocpl_id, crt_order_flags)
+ END SUBROUTINE h5pset_attr_creation_order_f
+
+
+!----------------------------------------------------------------------
+! Name: H5Pset_shared_mesg_nindexes_f
+!
+! Purpose: Sets number of shared object header message indexes
+!
+! Inputs:
+! plist_id - file creation property list
+! nindexes - Number of shared object header message indexes to be available in files created with this property list
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! January, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5pset_shared_mesg_nindexes_f( plist_id, nindexes, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_shared_mesg_nindexes_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: plist_id ! file creation property list
+ INTEGER, INTENT(IN) :: nindexes ! Number of shared object header message indexes
+ ! available in files created WITH this property list
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pset_shared_mesg_nindexes_c(plist_id, nindexes)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PSET_SHARED_MESG_NINDEXES_C'::h5pset_shared_mesg_nindexes_c
+ !DEC$ ENDIF
+
+ INTEGER(HID_T), INTENT(IN) :: plist_id
+ INTEGER, INTENT(IN) :: nindexes
+
+ END FUNCTION H5pset_shared_mesg_nindexes_c
+ END INTERFACE
+
+ hdferr = h5pset_shared_mesg_nindexes_c(plist_id, nindexes)
+
+ END SUBROUTINE h5pset_shared_mesg_nindexes_f
+
+!----------------------------------------------------------------------
+! Name: H5Pset_shared_mesg_index_f
+!
+! Purpose: Configures the specified shared object header message index
+!
+! Inputs:
+! fcpl_id - File creation property list identifier.
+! index_num - Index being configured.
+! mesg_type_flags - Types of messages that should be stored in this index.
+! min_mesg_size - Minimum message size.
+!
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! January, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5pset_shared_mesg_index_f(fcpl_id, index_num, mesg_type_flags, min_mesg_size, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_shared_mesg_index_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: fcpl_id ! file creation property list
+ INTEGER, INTENT(IN) :: index_num ! Index being configured.
+ INTEGER, INTENT(IN) :: mesg_type_flags ! Types of messages that should be stored in this index.
+ INTEGER, INTENT(IN) :: min_mesg_size ! Minimum message size.
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pset_shared_mesg_index_c(fcpl_id, index_num, mesg_type_flags, min_mesg_size)
+
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PSET_SHARED_MESG_INDEX_C'::h5pset_shared_mesg_index_c
+ !DEC$ ENDIF
+
+ INTEGER(HID_T), INTENT(IN) :: fcpl_id
+ INTEGER, INTENT(IN) :: index_num
+ INTEGER, INTENT(IN) :: mesg_type_flags
+ INTEGER, INTENT(IN) :: min_mesg_size
+
+ END FUNCTION H5pset_shared_mesg_index_c
+ END INTERFACE
+
+ hdferr = h5pset_shared_mesg_index_c(fcpl_id, index_num, mesg_type_flags, min_mesg_size)
+
+ END SUBROUTINE h5pset_shared_mesg_index_f
+
+!----------------------------------------------------------------------
+! Name: H5Pget_attr_creation_order_f
+!
+! Purpose: Retrieves tracking and indexing settings for attribute creation order
+!
+! Inputs:
+! ocpl_id - Object (group or dataset) creation property list identifier
+!
+! Outputs:
+! crt_order_flags - Flags specifying whether to track and index attribute creation order
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! February, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5pget_attr_creation_order_f(ocpl_id, crt_order_flags, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pget_attr_creation_order_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: ocpl_id ! Object (group or dataset) creation property list identifier
+ INTEGER, INTENT(OUT) :: crt_order_flags ! Flags specifying whether to track and index attribute creation order
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pget_attr_creation_order_c(ocpl_id, crt_order_flags)
+
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PGET_ATTR_CREATION_ORDER_C'::h5pget_attr_creation_order_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: ocpl_id
+ INTEGER, INTENT(OUT) :: crt_order_flags
+
+ END FUNCTION H5pget_attr_creation_order_c
+ END INTERFACE
+
+ hdferr = h5pget_attr_creation_order_c(ocpl_id, crt_order_flags)
+
+ END SUBROUTINE h5pget_attr_creation_order_f
+
+!----------------------------------------------------------------------
+! Name: H5Pset_libver_bounds_f
+!
+! Purpose: Sets bounds on library versions, and indirectly format versions, to be used when creating objects.
+!
+! Inputs:
+! fapl_id - File access property list identifier
+! low - The earliest version of the library that will be used for writing objects.
+! high - The latest version of the library that will be used for writing objects.
+!
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! February 18, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5pset_libver_bounds_f(fapl_id, low, high, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_libver_bounds_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: fapl_id ! File access property list identifier
+ INTEGER(HID_T), INTENT(IN) :: low ! The earliest version of the library that will be used for writing objects.
+ ! Currently, low must be one of two pre-defined values:
+ ! HDF_LIBVER_EARLIEST_F
+ ! HDF_LIBVER_LATEST_F
+ INTEGER(HID_T), INTENT(IN) :: high ! The latest version of the library that will be used for writing objects.
+ ! Currently, low must set to the pre-defined value:
+ ! HDF_LIBVER_LATEST_F
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pset_libver_bounds_c(fapl_id, low, high)
+
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PSET_LIBVER_BOUNDS_C'::h5pset_libver_bounds_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: fapl_id
+ INTEGER(HID_T), INTENT(IN) :: low
+ INTEGER(HID_T), INTENT(IN) :: high
+
+ END FUNCTION H5pset_libver_bounds_c
+ END INTERFACE
+
+ hdferr = h5pset_libver_bounds_c(fapl_id, low, high)
+
+ END SUBROUTINE h5pset_libver_bounds_f
+
+!----------------------------------------------------------------------
+! Name: H5Pset_link_creation_order_f
+!
+! Purpose: Sets creation order tracking and indexing for links in a group.
+!
+! Inputs:
+! gcpl_id - Group creation property list identifier
+! crt_order_flags - Creation order flag(s)
+!
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! February 18, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5pset_link_creation_order_f(gcpl_id, crt_order_flags, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_libver_bounds_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: gcpl_id ! File access property list identifier
+ INTEGER(HID_T), INTENT(IN) :: crt_order_flags ! Creation order flag(s)
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pset_link_creation_order_c(gcpl_id, crt_order_flags)
+
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PSET_LINK_CREATION_ORDER_C'::h5pset_link_creation_order_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: gcpl_id
+ INTEGER(HID_T), INTENT(IN) :: crt_order_flags
+
+ END FUNCTION H5pset_link_creation_order_c
+ END INTERFACE
+
+ hdferr = h5pset_link_creation_order_c(gcpl_id, crt_order_flags)
+
+ END SUBROUTINE h5pset_link_creation_order_f
+
+!----------------------------------------------------------------------
+! Name: H5Pget_link_phase_change_f
+!
+! Purpose: Queries the settings for conversion between compact and dense groups.
+!
+! Inputs:
+! gcpl_id - Group creation property list identifier
+! Outputs:
+! max_compact - Maximum number of attributes to be stored in compact storage
+! min_dense - Minimum number of attributes to be stored in dense storage
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! February 20, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5pget_link_phase_change_f(gcpl_id, max_compact, min_dense, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pget_link_phase_change_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: gcpl_id ! Group creation property list identifier
+ INTEGER, INTENT(OUT) :: max_compact ! Maximum number of attributes to be stored in compact storage
+ INTEGER, INTENT(OUT) :: min_dense ! Minimum number of attributes to be stored in dense storage
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pget_link_phase_change_c(gcpl_id, max_compact, min_dense)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PGET_LINK_PHASE_CHANGE_C'::h5pget_link_phase_change_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: gcpl_id
+ INTEGER, INTENT(OUT) :: max_compact
+ INTEGER, INTENT(OUT) :: min_dense
+
+ END FUNCTION h5pget_link_phase_change_c
+ END INTERFACE
+
+ hdferr = h5pget_link_phase_change_c(gcpl_id, max_compact, min_dense)
+ END SUBROUTINE h5pget_link_phase_change_f
+
+!----------------------------------------------------------------------
+! Name: H5Pget_obj_track_times_f
+!
+! Purpose: Returns whether times are tracked for an object.
+!
+! Inputs:
+! plist_id - property list id
+! flag - object timestamp setting
+! .TRUE.,.FALSE.
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! February 22, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5pget_obj_track_times_f(plist_id, flag, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pget_obj_track_times_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation property
+ ! list identifier
+ LOGICAL, INTENT(OUT) :: flag ! Object timestamp setting
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER :: status
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pget_obj_track_times_c(plist_id, status)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PGET_OBJ_TRACK_TIMES_C'::h5pget_obj_track_times_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: plist_id ! File creation property list identifier
+ INTEGER, INTENT(OUT) :: status
+ END FUNCTION h5pget_obj_track_times_c
+ END INTERFACE
+ flag = .TRUE.
+ hdferr = h5pget_obj_track_times_c(plist_id, status)
+ IF(status.EQ.0) flag = .FALSE.
+
+ END SUBROUTINE h5pget_obj_track_times_f
+
+!----------------------------------------------------------------------
+! Name: H5Pset_obj_track_times_f
+!
+! Purpose: Set whether the birth, access, modification & change times for
+! an object are stored.
+!
+! Birth time is the time the object was created. Access time is
+! the last time that metadata or raw data was read from this
+! object. Modification time is the last time the data for
+! this object was changed (either writing raw data to a dataset
+! or inserting/modifying/deleting a link in a group). Change
+! time is the last time the metadata for this object was written
+! (adding/modifying/deleting an attribute on an object, extending
+! the size of a dataset, etc).
+!
+! If these times are not tracked, they will be reported as
+! 12:00 AM UDT, Jan. 1, 1970 (i.e. 0 seconds past the UNIX
+! epoch) when queried.
+!
+! Inputs:
+! plist_id - property list id
+! flag - object timestamp setting
+! .TRUE.,.FALSE.
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! February 22, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5pset_obj_track_times_f(plist_id, flag, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_obj_track_times_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation property
+ ! list identifier
+ LOGICAL, INTENT(IN) :: flag ! Object timestamp setting
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER :: status
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pset_obj_track_times_c(plist_id, status)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PSET_OBJ_TRACK_TIMES_C'::h5pset_obj_track_times_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: plist_id ! File creation property list identifier
+ INTEGER, INTENT(IN) :: status
+ END FUNCTION h5pset_obj_track_times_c
+ END INTERFACE
+
+ status = 0
+ IF(flag) status = 1
+
+ hdferr = h5pset_obj_track_times_c(plist_id, status)
+
+ END SUBROUTINE h5pset_obj_track_times_f
+
+!----------------------------------------------------------------------
+! Name: H5Pset_create_inter_group_f
+!
+! Purpose: Specifies in property list whether to create missing intermediate groups.
+!
+! Inputs:
+! lcpl_id - Link creation property list identifier
+! crt_intermed_group - crt_intermed_group specifying whether
+! to create intermediate groups upon the creation
+! of an object
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! February 22, 2008
+!
+! Modifications:
+!
+! Comment: The long subroutine name (>31) on older f90 compilers causes problems
+! so had to shorten the name
+!--------------------------------------------------------------------------------------
+
+ SUBROUTINE h5pset_create_inter_group_f(lcpl_id, crt_intermed_group, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_create_inter_group_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: lcpl_id ! Link creation property list identifier
+ INTEGER, INTENT(IN) :: crt_intermed_group ! specifying whether to create intermediate groups
+ ! upon the creation of an object
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pset_create_inter_group_c(lcpl_id, crt_intermed_group)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PSET_CREATE_INTER_GROUP_C'::h5pset_create_inter_group_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: lcpl_id
+ INTEGER(HID_T), INTENT(IN) :: crt_intermed_group
+ END FUNCTION h5pset_create_inter_group_c
+ END INTERFACE
+
+ hdferr = h5pset_create_inter_group_c(lcpl_id, crt_intermed_group)
+
+ END SUBROUTINE h5pset_create_inter_group_f
+
+!----------------------------------------------------------------------
+! Name: H5Pget_link_creation_order_f
+!
+! Purpose: Queries whether link creation order is tracked and/or indexed in a group.
+!
+! Inputs:
+! gcpl_id - Group creation property list identifier
+!
+! Outputs:
+! crt_order_flags - Creation order flag(s)
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! March 3, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5pget_link_creation_order_f(gcpl_id, crt_order_flags, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pget_link_creation_order_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: gcpl_id ! Group creation property list identifier
+ INTEGER, INTENT(OUT) :: crt_order_flags ! Creation order flag(s)
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pget_link_creation_order_c(gcpl_id, crt_order_flags)
+
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PGET_LINK_CREATION_ORDER_C'::h5pget_link_creation_order_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: gcpl_id
+ INTEGER, INTENT(OUT) :: crt_order_flags
+
+ END FUNCTION H5pget_link_creation_order_c
+ END INTERFACE
+
+ hdferr = h5pget_link_creation_order_c(gcpl_id, crt_order_flags)
+
+ END SUBROUTINE h5pget_link_creation_order_f
+
+!----------------------------------------------------------------------
+! Name: H5Pset_char_encoding
+!
+! Purpose: Sets the character encoding used to encode a string.
+!
+! Inputs:
+! plist_id - Property list identifier
+! encoding - Valid values for encoding are:
+! H5T_CSET_ASCII_F -> US ASCII
+! H5T_CSET_UTF8_F -> UTF-8 Unicode encoding
+!
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! March 3, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5pset_char_encoding_f(plist_id, encoding, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_attr_creation_order_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: plist_id ! Property list identifier
+
+ INTEGER, INTENT(IN) :: encoding ! String encoding character set:
+! H5T_CSET_ASCII_F -> US ASCII
+! H5T_CSET_UTF8_F -> UTF-8 Unicode encoding
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pset_char_encoding_c(plist_id, encoding)
+
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PSET_CHAR_ENCODING_C'::h5pset_char_encoding_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: plist_id
+ INTEGER, INTENT(IN) :: encoding
+
+ END FUNCTION H5pset_char_encoding_c
+ END INTERFACE
+
+ hdferr = h5pset_char_encoding_c(plist_id, encoding)
+
+ END SUBROUTINE h5pset_char_encoding_f
+
+!----------------------------------------------------------------------
+! Name: H5Pget_char_encoding
+!
+! Purpose: Retrieves the character encoding used to create a string
+!
+! Inputs:
+! plist_id - Property list identifier
+!
+! Outputs:
+! encoding - Valid values for encoding are:
+! H5T_CSET_ASCII_F -> US ASCII
+! H5T_CSET_UTF8_F -> UTF-8 Unicode encoding
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! March 3, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5pget_char_encoding_f(plist_id, encoding, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pget_char_encoding_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: plist_id ! Property list identifier
+
+ INTEGER, INTENT(OUT) :: encoding ! Valid values for encoding are:
+! H5T_CSET_ASCII_F -> US ASCII
+! H5T_CSET_UTF8_F -> UTF-8 Unicode encoding
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pget_char_encoding_c(plist_id, encoding)
+
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PGET_CHAR_ENCODING_C'::h5pget_char_encoding_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: plist_id
+ INTEGER, INTENT(OUT) :: encoding
+
+ END FUNCTION H5pget_char_encoding_c
+ END INTERFACE
+
+ hdferr = h5pget_char_encoding_c(plist_id, encoding)
+
+ END SUBROUTINE h5pget_char_encoding_f
+
+!----------------------------------------------------------------------
+! Name: h5pset_copy_object_f
+!
+! Purpose: Sets properties to be used when an object is copied.
+!
+! Inputs:
+! ocp_plist_id - Object copy property list identifier
+! copy_options - Copy option(s) to be set
+! Outputs:
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! March 3, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5pset_copy_object_f(ocp_plist_id, copy_options, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_copy_object_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: ocp_plist_id ! Object copy property list identifier
+ INTEGER, INTENT(IN) :: copy_options ! Copy option(s) to be set, valid options are:
+ ! H5O_COPY_SHALLOW_HIERARCHY_F
+ ! H5O_COPY_EXPAND_SOFT_LINK_F
+ ! H5O_COPY_EXPAND_EXT_LINK_F
+ ! H5O_COPY_EXPAND_REFERENCE_F
+ ! H5O_COPY_WITHOUT_ATTR_FLAG_F
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pset_copy_object_c(ocp_plist_id, copy_options)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PSET_COPY_OBJECT_C'::h5pset_copy_object_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: ocp_plist_id
+ INTEGER, INTENT(IN) :: copy_options
+ END FUNCTION h5pset_copy_object_c
+ END INTERFACE
+ hdferr = h5pset_copy_object_c(ocp_plist_id, copy_options)
+ END SUBROUTINE h5pset_copy_object_f
+
+!----------------------------------------------------------------------
+! Name: h5pget_copy_object_f
+!
+! Purpose: Retrieves the properties to be used when an object is copied.
+!
+! Inputs:
+! ocp_plist_id - Object copy property list identifier
+! Outputs:
+! copy_options - Copy option(s) to be get
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! March 3, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5pget_copy_object_f(ocp_plist_id, copy_options, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pget_copy_object_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: ocp_plist_id ! Object copy property list identifier
+ INTEGER, INTENT(OUT) :: copy_options ! valid copy options returned are:
+ ! H5O_COPY_SHALLOW_HIERARCHY_F
+ ! H5O_COPY_EXPAND_SOFT_LINK_F
+ ! H5O_COPY_EXPAND_EXT_LINK_F
+ ! H5O_COPY_EXPAND_REFERENCE_F
+ ! H5O_COPY_WITHOUT_ATTR_FLAG_F
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pget_copy_object_c(ocp_plist_id, copy_options)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PGET_COPY_OBJECT_C'::h5pget_copy_object_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: ocp_plist_id
+ INTEGER, INTENT(OUT) :: copy_options
+ END FUNCTION h5pget_copy_object_c
+ END INTERFACE
+ hdferr = h5pget_copy_object_c(ocp_plist_id, copy_options)
+ END SUBROUTINE h5pget_copy_object_f
+
+!----------------------------------------------------------------------
+! Name: h5pget_data_transform_f
+!
+! Purpose: Retrieves a data transform expression.
+!
+! Inputs:
+! plist_id - Identifier of the property list or class
+! Outputs:
+! expression - buffer to hold transform expression
+! hdferr - error code
+! Success: Actual lenght of the expression
+! If provided buffer "expression" is
+! smaller, than expression will be
+! truncated to fit into
+! provided user buffer
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! March 19, 2008
+!
+! Modifications:
+!
+! Comment: Should hdferr return just 0 or 1 and add another arguement for the size?
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5pget_data_transform_f(plist_id, expression, hdferr, size)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pget_data_transform_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: plist_id ! Identifier of the property list or class
+ CHARACTER(LEN=*), INTENT(OUT) :: expression ! Buffer to hold transform expression
+
+ INTEGER(SIZE_T), INTENT(OUT), OPTIONAL :: size ! registered size of the transform expression
+
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER :: expression_len
+ INTEGER(SIZE_T) :: size_default
+
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pget_data_transform_c(plist_id, expression, expression_len, size_default)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PGET_DATA_TRANSFORM_C'::h5pget_data_transform_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: plist_id
+ CHARACTER(LEN=*), INTENT(OUT) :: expression
+ INTEGER(SIZE_T) :: size_default
+ INTEGER :: expression_len
+ END FUNCTION h5pget_data_transform_c
+ END INTERFACE
+
+ size_default = 0
+ expression_len = LEN(expression)
+
+ hdferr = h5pget_data_transform_c(plist_id, expression, expression_len, size_default)
+
+ IF(present(size)) size = size_default
+
+ END SUBROUTINE h5pget_data_transform_f
+
+!----------------------------------------------------------------------
+! Name: h5pset_data_transform_f
+!
+! Purpose: Sets a data transform expression.
+!
+! Inputs:
+! plist_id - Identifier of the property list or class
+! expression - buffer to hold transform expression
+! Outputs:
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! March 19, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5pset_data_transform_f(plist_id, expression, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_data_transform_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: plist_id ! Identifier of the property list or class
+ CHARACTER(LEN=*), INTENT(IN) :: expression ! Buffer to hold transform expression
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER :: expression_len
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pset_data_transform_c(plist_id, expression, expression_len)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PSET_DATA_TRANSFORM_C'::h5pset_data_transform_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: plist_id
+ CHARACTER(LEN=*), INTENT(IN) :: expression
+ INTEGER :: expression_len
+ END FUNCTION h5pset_data_transform_c
+ END INTERFACE
+
+ expression_len = LEN(expression)
+ hdferr = h5pset_data_transform_c(plist_id, expression, expression_len)
+
+ END SUBROUTINE h5pset_data_transform_f
+
+!----------------------------------------------------------------------
+! Name: H5Pget_local_heap_size_hint_f
+!
+! Purpose: Queries the local heap size hint for original-style groups.
+!
+! Inputs:
+! gcpl_id - Group creation property list identifier
+! Outputs:
+! size_hint - Hint for size of local heap
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! March 21, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE H5Pget_local_heap_size_hint_f(gcpl_id, size_hint, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pget_local_heap_size_hint_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: gcpl_id ! Group creation property list identifier
+ INTEGER(SIZE_T), INTENT(OUT) :: size_hint ! Hint for size of local heap
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION H5Pget_local_heap_size_hint_c(gcpl_id, size_hint)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PGET_LOCAL_HEAP_SIZE_HINT_C'::h5pget_local_heap_size_hint_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: gcpl_id
+ INTEGER(SIZE_T), INTENT(OUT) :: size_hint
+ END FUNCTION H5Pget_local_heap_size_hint_c
+ END INTERFACE
+
+ hdferr = H5Pget_local_heap_size_hint_c(gcpl_id, size_hint)
+
+ END SUBROUTINE H5Pget_local_heap_size_hint_f
+
+!----------------------------------------------------------------------
+! Name: H5Pget_est_link_info_f
+!
+! Purpose: Queries data required to estimate required local heap or object header size.
+!
+! Inputs:
+! gcpl_id - Group creation property list identifier
+! Outputs:
+! est_num_entries - Estimated number of links to be inserted into group
+! est_name_len - Estimated average length of link names
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! March 21, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE H5Pget_est_link_info_f(gcpl_id, est_num_entries, est_name_len, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pget_est_link_info_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: gcpl_id ! Group creation property list identifier
+ INTEGER, INTENT(OUT) :: est_num_entries ! Estimated number of links to be inserted into group
+ INTEGER, INTENT(OUT) :: est_name_len ! Estimated average length of link names
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION H5Pget_est_link_info_c(gcpl_id, est_num_entries, est_name_len)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PGET_EST_LINK_INFO_C'::h5pget_est_link_info_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: gcpl_id
+ INTEGER, INTENT(OUT) :: est_num_entries
+ INTEGER, INTENT(OUT) :: est_name_len
+ END FUNCTION H5Pget_est_link_info_c
+ END INTERFACE
+
+ hdferr = H5Pget_est_link_info_c(gcpl_id, est_num_entries, est_name_len)
+
+ END SUBROUTINE H5Pget_est_link_info_f
+
+!----------------------------------------------------------------------
+! Name: H5Pset_local_heap_size_hint_f
+!
+! Purpose: Sets the local heap size hint for original-style groups.
+!
+! Inputs:
+! gcpl_id - Group creation property list identifier
+! size_hint - Hint for size of local heap
+! Outputs:
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! March 21, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE H5Pset_local_heap_size_hint_f(gcpl_id, size_hint, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_local_heap_size_hint_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: gcpl_id ! Group creation property list identifier
+ INTEGER(SIZE_T), INTENT(IN) :: size_hint ! Hint for size of local heap
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION H5Pset_local_heap_size_hint_c(gcpl_id, size_hint)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PSET_LOCAL_HEAP_SIZE_HINT_C'::h5pset_local_heap_size_hint_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: gcpl_id
+ INTEGER(SIZE_T), INTENT(IN) :: size_hint
+ END FUNCTION H5Pset_local_heap_size_hint_c
+ END INTERFACE
+
+ hdferr = H5Pset_local_heap_size_hint_c(gcpl_id, size_hint)
+
+ END SUBROUTINE H5Pset_local_heap_size_hint_f
+
+!----------------------------------------------------------------------
+! Name: H5Pset_est_link_info_f
+!
+! Purpose: Sets estimated number of links and length of link names in a group.
+!
+! Inputs:
+! gcpl_id - Group creation property list identifier
+! est_num_entries - Estimated number of links to be inserted into group
+! est_name_len - Estimated average length of link names
+! Outputs:
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! March 21, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE H5Pset_est_link_info_f(gcpl_id, est_num_entries, est_name_len, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_est_link_info_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: gcpl_id ! Group creation property list identifier
+ INTEGER, INTENT(IN) :: est_num_entries ! Estimated number of links to be inserted into group
+ INTEGER, INTENT(IN) :: est_name_len ! Estimated average length of link names
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION H5Pset_est_link_info_c(gcpl_id, est_num_entries, est_name_len)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PSET_EST_LINK_INFO_C'::h5pset_est_link_info_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: gcpl_id
+ INTEGER, INTENT(IN) :: est_num_entries
+ INTEGER, INTENT(IN) :: est_name_len
+ END FUNCTION H5Pset_est_link_info_c
+ END INTERFACE
+
+ hdferr = H5Pset_est_link_info_c(gcpl_id, est_num_entries, est_name_len)
+
+ END SUBROUTINE H5Pset_est_link_info_f
+
+!----------------------------------------------------------------------
+! Name: H5Pset_link_phase_change_f
+!
+! Purpose: Sets the parameters for conversion between compact and dense groups.
+!
+! Inputs:
+! gcpl_id - Group creation property list identifier
+! max_compact - Maximum number of attributes to be stored in compact storage
+! min_dense - Minimum number of attributes to be stored in dense storage
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! March 21, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5pset_link_phase_change_f(gcpl_id, max_compact, min_dense, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_link_phase_change_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: gcpl_id ! Group creation property list identifier
+ INTEGER, INTENT(IN) :: max_compact ! Maximum number of attributes to be stored in compact storage
+ INTEGER, INTENT(IN) :: min_dense ! Minimum number of attributes to be stored in dense storage
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pset_link_phase_change_c(gcpl_id, max_compact, min_dense)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PSET_LINK_PHASE_CHANGE_C'::h5pset_link_phase_change_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: gcpl_id
+ INTEGER, INTENT(IN) :: max_compact
+ INTEGER, INTENT(IN) :: min_dense
+
+ END FUNCTION h5pset_link_phase_change_c
+ END INTERFACE
+
+ hdferr = h5pset_link_phase_change_c(gcpl_id, max_compact, min_dense)
+ END SUBROUTINE h5pset_link_phase_change_f
+
+!----------------------------------------------------------------------
+! Name: H5Pset_fapl_direct_f
+!
+! Purpose: Sets up use of the direct I/O driver.
+!
+! Inputs:
+! fapl_id - File access property list identifier
+! alignment - Required memory alignment boundary
+! block_size - File system block size
+! cbuf_size - Copy buffer size
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! March 21, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE H5Pset_fapl_direct_f(fapl_id, alignment, block_size, cbuf_size, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_fapl_direct_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: fapl_id ! File access property list identifier
+ INTEGER(SIZE_T), INTENT(IN) :: alignment ! Required memory alignment boundary!
+ INTEGER(SIZE_T), INTENT(IN) :: block_size ! File system block size
+ INTEGER(SIZE_T), INTENT(IN) :: cbuf_size ! Copy buffer size
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION H5Pset_fapl_direct_c(fapl_id, alignment, block_size, cbuf_size)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PSET_FAPL_DIRECT_C'::h5pset_fapl_direct_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: fapl_id
+ INTEGER(SIZE_T), INTENT(IN) :: alignment
+ INTEGER(SIZE_T), INTENT(IN) :: block_size
+ INTEGER(SIZE_T), INTENT(IN) :: cbuf_size
+ END FUNCTION H5Pset_fapl_direct_c
+ END INTERFACE
+
+ hdferr = H5Pset_fapl_direct_c(fapl_id, alignment, block_size, cbuf_size)
+ END SUBROUTINE H5Pset_fapl_direct_f
+
+!----------------------------------------------------------------------
+! Name: H5Pget_fapl_direct_f
+!
+! Purpose: Gets up use of the direct I/O driver.
+!
+! Inputs:
+! fapl_id - File access property list identifier
+! Outputs:
+! alignment - Required memory alignment boundary
+! block_size - File system block size
+! cbuf_size - Copy buffer size
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! March 21, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE H5Pget_fapl_direct_f(fapl_id, alignment, block_size, cbuf_size, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pget_fapl_direct_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: fapl_id ! File access property list identifier
+ INTEGER(SIZE_T), INTENT(OUT) :: alignment ! Required memory alignment boundary!
+ INTEGER(SIZE_T), INTENT(OUT) :: block_size ! File system block size
+ INTEGER(SIZE_T), INTENT(OUT) :: cbuf_size ! Copy buffer size
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION H5Pget_fapl_direct_c(fapl_id, alignment, block_size, cbuf_size)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PGET_FAPL_DIRECT_C'::h5pget_fapl_direct_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: fapl_id
+ INTEGER(SIZE_T), INTENT(OUT) :: alignment
+ INTEGER(SIZE_T), INTENT(OUT) :: block_size
+ INTEGER(SIZE_T), INTENT(OUT) :: cbuf_size
+ END FUNCTION H5Pget_fapl_direct_c
+ END INTERFACE
+
+ hdferr = H5Pget_fapl_direct_c(fapl_id, alignment, block_size, cbuf_size)
+ END SUBROUTINE H5Pget_fapl_direct_f
+
+!----------------------------------------------------------------------
+! Name: H5Pset_attr_phase_change_f
+!
+! Purpose: Sets attribute storage phase change thresholds.
+!
+! Inputs:
+! ocpl_id - Object (dataset or group) creation property list identifier
+! Outputs:
+! max_compact - Maximum number of attributes to be stored in compact storage
+! (Default: 8)
+! min_dense - Minimum number of attributes to be stored in dense storage
+! (Default: 6)
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! January, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_attr_phase_change_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: ocpl_id ! Object (dataset or group) creation property list identifier
+ INTEGER, INTENT(IN) :: max_compact ! Maximum number of attributes to be stored in compact storage
+ !(Default: 8)
+ INTEGER, INTENT(IN) :: min_dense ! Minimum number of attributes to be stored in dense storage
+ ! (Default: 6)
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pset_attr_phase_change_c(ocpl_id, max_compact, min_dense)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PSET_ATTR_PHASE_CHANGE_C'::h5pset_attr_phase_change_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: ocpl_id
+ INTEGER, INTENT(IN) :: max_compact
+ INTEGER, INTENT(IN) :: min_dense
+
+ END FUNCTION h5pset_attr_phase_change_c
+ END INTERFACE
+
+ hdferr = h5pset_attr_phase_change_c(ocpl_id, max_compact, min_dense)
+
+
+ END SUBROUTINE h5pset_attr_phase_change_f
+
+!----------------------------------------------------------------------
+! Name: H5Pset_nbit_f
+!
+! Purpose: Sets up the use of the N-Bit filter.
+!
+! Inputs:
+! plist_id - Dataset creation property list identifier.
+! Outputs:
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! March 21, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE H5Pset_nbit_f(plist_id, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_nbit_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation property list identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION H5Pset_nbit_c(plist_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PSET_NBIT_C'::h5pset_nbit_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: plist_id
+ END FUNCTION H5Pset_nbit_c
+ END INTERFACE
+
+ hdferr = H5Pset_nbit_c(plist_id)
+
+ END SUBROUTINE H5Pset_nbit_f
+
+!----------------------------------------------------------------------
+! Name: H5Pset_scaleoffset_f
+!
+! Purpose: Sets up the use of the Scale-Offset filter.
+!
+! Inputs:
+! plist_id - Dataset creation property list identifier.
+! scale_type - Flag indicating compression method.
+! scale_factor - Parameter related to scale.
+! Outputs:
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! March 21, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE H5Pset_scaleoffset_f(plist_id, scale_type, scale_factor, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_scaleoffset_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation property list identifier
+ INTEGER, INTENT(IN) :: scale_type ! Flag indicating compression method.
+ INTEGER, INTENT(IN) :: scale_factor ! parameter related to scale.
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION H5Pset_scaleoffset_c(plist_id, scale_type, scale_factor)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PSET_SCALEOFFSET_C'::h5pset_scaleoffset_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: plist_id
+ INTEGER, INTENT(IN) :: scale_type
+ INTEGER, INTENT(IN) :: scale_factor
+ END FUNCTION H5Pset_scaleoffset_c
+ END INTERFACE
+
+ hdferr = H5Pset_scaleoffset_c(plist_id, scale_type, scale_factor)
+
+ END SUBROUTINE H5Pset_scaleoffset_f
+
+!----------------------------------------------------------------------
+! Name: h5pset_nlinks_f
+!
+! Purpose: Sets maximum number of soft or user-defined link traversals.
+!
+! Inputs:
+! lapl_id - File access property list identifier
+! nlinks - Maximum number of links to traverse
+!
+! Outputs:
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! March 24, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5pset_nlinks_f(lapl_id, nlinks, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pset_nlinks_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: lapl_id ! File access property list identifier
+ INTEGER(SIZE_T), INTENT(IN) :: nlinks ! Maximum number of links to traverse
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pset_nlinks_c(lapl_id, nlinks)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PSET_NLINKS_C'::h5pset_nlinks_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: lapl_id
+ INTEGER(SIZE_T), INTENT(IN) :: nlinks
+ END FUNCTION h5pset_nlinks_c
+ END INTERFACE
+
+ hdferr = h5pset_nlinks_c(lapl_id, nlinks)
+
+ END SUBROUTINE h5pset_nlinks_f
+
+!----------------------------------------------------------------------
+! Name: h5pget_nlinks_f
+!
+! Purpose: Gets maximum number of soft or user-defined link traversals.
+!
+! Inputs:
+! lapl_id - File access property list identifier
+! nlinks - Maximum number of links to traverse
+!
+! Outputs:
+! hdferr - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! March 24, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5pget_nlinks_f(lapl_id, nlinks, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pget_nlinks_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: lapl_id ! File access property list identifier
+ INTEGER(SIZE_T), INTENT(OUT) :: nlinks ! Maximum number of links to traverse
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5pget_nlinks_c(lapl_id, nlinks)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PGET_NLINKS_C'::h5pget_nlinks_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: lapl_id
+ INTEGER(SIZE_T), INTENT(OUT) :: nlinks
+ END FUNCTION h5pget_nlinks_c
+ END INTERFACE
+
+ hdferr = h5pget_nlinks_c(lapl_id, nlinks)
+
+ END SUBROUTINE h5pget_nlinks_f
+
+!----------------------------------------------------------------------
+! Name: H5Pget_create_inter_group_f
+!
+! Purpose: Determines whether property is set to enable creating missing intermediate groups.
+!
+! Inputs:
+! lcpl_id - Link creation property list identifier
+! crt_intermed_group - Specifying whether to create intermediate groups upon
+! the creation of an object
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! April 4, 2008
+!
+! Modifications:
+!
+! Comment: The long subroutine name (>31) on older f90 compilers causes problems
+! so had to shorten the name
+!--------------------------------------------------------------------------------------
+
+ SUBROUTINE h5pget_create_inter_group_f(lcpl_id, crt_intermed_group, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5pget_create_inter_group_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: lcpl_id ! Link creation property list identifier
+ INTEGER, INTENT(IN) :: crt_intermed_group ! Flag specifying whether to create intermediate groups
+ ! upon creation of an object
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+ INTERFACE
+ INTEGER FUNCTION h5pget_create_inter_group_c(lcpl_id, crt_intermed_group)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5PGET_CREATE_INTER_GROUP_C'::h5pget_create_inter_group_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: lcpl_id
+ INTEGER(HID_T), INTENT(IN) :: crt_intermed_group
+ END FUNCTION h5pget_create_inter_group_c
+ END INTERFACE
+
+ hdferr = h5pget_create_inter_group_c(lcpl_id, crt_intermed_group)
+
+ END SUBROUTINE h5pget_create_inter_group_f
+
+
+END MODULE H5P
+
diff --git a/fortran/src/H5Rf.c b/fortran/src/H5Rf.c
index 4430e1a..299f6bd 100644
--- a/fortran/src/H5Rf.c
+++ b/fortran/src/H5Rf.c
@@ -239,3 +239,102 @@ nh5rget_object_type_obj_c (hid_t_f *dset_id, haddr_t_f *ref, int_f *obj_type)
return ret_value;
}
+/*----------------------------------------------------------------------------
+ * Name: h5rget_name_object_c
+ * Purpose: Call H5Rget_name for an object
+ * Inputs:
+ * loc_id - Identifier for the dataset containing the reference or for the group that dataset is in.
+ * ref - An object or dataset region reference.
+ *
+ * Outputs: name - A name associated with the referenced object or dataset region.
+ * size - The size of the name buffer.
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * March 31, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5rget_name_object_c (hid_t_f *loc_id, haddr_t_f *ref, _fcd name, size_t_f *name_len, size_t_f *size_default)
+{
+ hobj_ref_t ref_c;
+ int_f ret_value = -1;
+ ssize_t c_size;
+ size_t c_bufsize;
+ char *c_buf= NULL; /* Buffer to hold C string */
+
+ ref_c = *ref;
+
+ c_bufsize = (size_t)*name_len+1;
+ /*
+ * Allocate buffer to hold name of an attribute
+ */
+ if ((c_buf = HDmalloc(c_bufsize)) == NULL)
+ return ret_value;
+
+ /*
+ * Call H5Rget_name function.
+ */
+ if((c_size=H5Rget_name((hid_t)*loc_id, H5R_OBJECT, &ref_c, c_buf, c_bufsize)) < 0)
+ return ret_value;
+ /*
+ * Convert C name to FORTRAN and place it in the given buffer
+ */
+ HD5packFstring(c_buf, _fcdtocp(name), c_bufsize-1);
+
+ *size_default = (size_t_f)c_size;
+ ret_value = 0;
+ if(c_buf) HDfree(c_buf);
+
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5rget_name_region_c
+ * Purpose: Call H5Rget_name for a dataset region
+ * Inputs:
+ * loc_id - Identifier for the dataset containing the reference or for the group that dataset is in.
+ * ref - An object or dataset region reference.
+ *
+ * Outputs: name - A name associated with the referenced object or dataset region.
+ * size - The size of the name buffer.
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * March 31, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5rget_name_region_c (hid_t_f *loc_id, int_f *ref, _fcd name, size_t_f *name_len, size_t_f *size_default)
+{
+ hdset_reg_ref_t ref_c;
+ int_f ret_value = -1;
+ ssize_t c_size;
+ size_t c_bufsize;
+ char *c_buf= NULL; /* Buffer to hold C string */
+
+ HDmemcpy (&ref_c, ref, H5R_DSET_REG_REF_BUF_SIZE);
+
+ c_bufsize = (size_t)*name_len+1;
+ /*
+ * Allocate buffer to hold name of an attribute
+ */
+ if ((c_buf = HDmalloc(c_bufsize)) == NULL)
+ return ret_value;
+
+ /*
+ * Call H5Rget_name function.
+ */
+ if((c_size=H5Rget_name((hid_t)*loc_id, H5R_DATASET_REGION, &ref_c, c_buf, c_bufsize)) < 0)
+ return ret_value;
+ /*
+ * Convert C name to FORTRAN and place it in the given buffer
+ */
+ HD5packFstring(c_buf, _fcdtocp(name), c_bufsize-1);
+
+ *size_default = (size_t_f)c_size;
+ ret_value = 0;
+ if(c_buf) HDfree(c_buf);
+
+ return ret_value;
+}
diff --git a/fortran/src/H5Rff.f90 b/fortran/src/H5Rff.f90
index 6400f43..a4f4a65 100644
--- a/fortran/src/H5Rff.f90
+++ b/fortran/src/H5Rff.f90
@@ -58,6 +58,12 @@
END INTERFACE
+ INTERFACE h5rget_name_f
+
+ MODULE PROCEDURE h5rget_name_object_f
+ MODULE PROCEDURE h5rget_name_region_f
+
+ END INTERFACE
CONTAINS
@@ -243,7 +249,6 @@
INTEGER(HID_T), INTENT(OUT) :: obj_id ! Object identifier
INTEGER, INTENT(OUT) :: hdferr ! Error code
- INTEGER :: ref_type ! Reference type
INTEGER(HADDR_T) :: ref_f ! Local buffer to pass reference
! INTEGER, EXTERNAL :: h5h5rdereference_object_c
@@ -309,7 +314,6 @@
INTEGER(HID_T), INTENT(OUT) :: obj_id ! Dataspace identifier
INTEGER, INTENT(OUT) :: hdferr ! Error code
- INTEGER :: ref_type ! Reference type
INTEGER :: ref_f(REF_REG_BUF_LEN) ! Local buffer to pass reference
! INTEGER, EXTERNAL :: h5rdereference_region_c
@@ -328,7 +332,6 @@
END FUNCTION h5rdereference_region_c
END INTERFACE
- ref_type = H5R_DATASET_REGION_F
ref_f = ref%ref
hdferr = h5rdereference_region_c(dset_id, ref_f, obj_id )
@@ -475,4 +478,146 @@
END SUBROUTINE h5rget_object_type_obj_f
- END MODULE H5R
+!----------------------------------------------------------------------
+! Name: h5rget_name_object_f
+!
+! Purpose: Retrieves a name of a referenced object.
+!
+! Inputs:
+! loc_id - Identifier for the dataset containing the reference or for the group that dataset is in.
+! ref - An object or dataset region reference.
+!
+! Outputs:
+! name - A name associated with the referenced object or dataset region.
+!
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! size - The size of the name buffer.
+!
+! Programmer: M.S. Breitenfeld
+! March 28, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+
+ SUBROUTINE h5rget_name_object_f(loc_id, ref, name, hdferr, size)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5rget_name_object_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifier for the dataset containing the reference
+ ! or for the group that dataset is in.
+ TYPE(hobj_ref_t_f), INTENT(IN) :: ref ! Object reference
+ INTEGER(SIZE_T), OPTIONAL, INTENT(OUT) :: size ! The size of the name buffer,
+ ! returning 0 (zero) if no name is associated with the identifier
+ CHARACTER(LEN=*), INTENT(OUT) :: name ! A name associated with the referenced object or dataset region.
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER(HADDR_T) :: ref_f ! Local buffer to pass reference
+
+ INTEGER(SIZE_T) :: size_default
+ INTEGER(SIZE_T) :: name_len
+
+ INTERFACE
+ INTEGER FUNCTION h5rget_name_object_c(loc_id, ref_f, name, name_len, size_default)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5RGET_NAME_OBJECT_C':: h5rget_name_object_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ INTEGER(SIZE_T) :: size_default
+ CHARACTER(LEN=*), INTENT(OUT) :: name
+ INTEGER(HADDR_T) :: ref_f
+
+ INTEGER(SIZE_T) :: name_len
+ END FUNCTION h5rget_name_object_c
+ END INTERFACE
+
+ name_len=LEN(name)
+
+ ref_f = ref%ref
+ hdferr = h5rget_name_object_c(loc_id, ref_f, name, name_len, size_default)
+
+ IF(PRESENT(size)) size = size_default
+
+ END SUBROUTINE h5rget_name_object_f
+
+!----------------------------------------------------------------------
+! Name: h5rget_name_region_f
+!
+! Purpose: Retrieves a name of a dataset region.
+!
+! Inputs:
+! loc_id - Identifier for the dataset containing the reference or for the group that dataset is in.
+! ref - An object or dataset region reference.
+!
+! Outputs:
+! name - A name associated with the referenced object or dataset region.
+!
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! size - The size of the name buffer.
+!
+! Programmer: M.S. Breitenfeld
+! March 28, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+
+ SUBROUTINE h5rget_name_region_f(loc_id, ref, name, hdferr, size)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5rget_name_region_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifier for the dataset containing the reference
+ ! or for the group that dataset is in.
+ TYPE(hdset_reg_ref_t_f), INTENT(IN) :: ref ! Object reference
+ INTEGER(SIZE_T), OPTIONAL, INTENT(OUT) :: size ! The size of the name buffer,
+ ! returning 0 (zero) if no name is associated with the identifier
+ CHARACTER(LEN=*), INTENT(OUT) :: name ! A name associated with the referenced object or dataset region.
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+ INTEGER :: ref_f(REF_REG_BUF_LEN) ! Local buffer to pass reference
+ INTEGER(SIZE_T) :: size_default
+ INTEGER(SIZE_T) :: name_len
+
+ INTERFACE
+ INTEGER FUNCTION h5rget_name_region_c(loc_id, ref_f, name, name_len, size_default)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5RGET_NAME_REGION_C':: h5rget_name_region_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ INTEGER(SIZE_T) :: size_default
+ CHARACTER(LEN=*), INTENT(OUT) :: name
+ INTEGER :: ref_f(REF_REG_BUF_LEN)
+
+ INTEGER(SIZE_T) :: name_len
+ END FUNCTION h5rget_name_region_c
+ END INTERFACE
+
+ name_len=LEN(name)
+
+ ref_f = ref%ref
+ hdferr = h5rget_name_region_c(loc_id, ref_f, name, name_len, size_default)
+
+ IF(PRESENT(size)) size = size_default
+
+ END SUBROUTINE h5rget_name_region_f
+
+END MODULE H5R
diff --git a/fortran/src/H5Sf.c b/fortran/src/H5Sf.c
index 0a4bd40..c33e7e6 100644
--- a/fortran/src/H5Sf.c
+++ b/fortran/src/H5Sf.c
@@ -1027,3 +1027,127 @@ nh5sselect_elements_c ( hid_t_f *space_id , int_f *op, size_t_f *nelements, hsi
return ret_value;
}
+/*----------------------------------------------------------------------------
+ * Name: h5sdecode_c
+ * Purpose: Call H5Sdecode
+ * Inputs:
+ * buf - Buffer for the data space object to be decoded.
+ * Outputs:
+ * obj_id - Object_id (non-negative)
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * March 26, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5sdecode_c ( _fcd buf, int_f *obj_id )
+{
+ int ret_value = -1;
+ unsigned char *c_buf = NULL; /* Buffer to hold C string */
+ hid_t c_obj_id;
+
+ /*
+ * Call H5Sdecode function.
+ */
+
+ c_buf = (unsigned char*)buf;
+
+ c_obj_id = H5Sdecode(c_buf);
+ if(c_obj_id < 0)
+ return ret_value;
+
+ *obj_id = (int_f)c_obj_id;
+ ret_value = 0;
+
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5sencode_c
+ * Purpose: Call H5Sencode
+ * Inputs:
+ * obj_id - Identifier of the object to be encoded.
+ * buf - Buffer for the object to be encoded into.
+ * nalloc - The size of the allocated buffer.
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * March 26, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5sencode_c (_fcd buf, hid_t_f *obj_id, size_t_f *nalloc )
+{
+ int ret_value = -1;
+ unsigned char *c_buf = NULL; /* Buffer to hold C string */
+ size_t c_size;
+
+ /* return just the size of the allocated buffer;
+ * equivalent to C routine for which 'name' is set equal to NULL
+ */
+
+ if (*nalloc == 0) {
+
+ if(H5Sencode((hid_t)*obj_id, c_buf, &c_size) < 0)
+ return ret_value;
+
+ *nalloc = (size_t_f)c_size;
+
+ ret_value = 0;
+ return ret_value;
+ }
+
+ c_size = (size_t)*nalloc;
+ /*
+ * Allocate buffer
+ */
+ if ((c_buf = HDmalloc(c_size)) == NULL)
+ return ret_value;
+ /*
+ * Call H5Sencode function.
+ */
+ if(H5Sencode((hid_t)*obj_id, c_buf, &c_size) < 0){
+ return ret_value;
+ }
+
+ /* copy the C buffer to the FORTRAN buffer.
+ * Can not use HD5packFstring because we don't want to
+ * eliminate the NUL terminator or pad remaining space
+ * with blanks.
+ */
+
+ HDmemcpy(_fcdtocp(buf),(char *)c_buf,c_size);
+
+ ret_value = 0;
+ if(c_buf) HDfree(c_buf);
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5sextent_equal_c
+ * Purpose: Call H5Sextent_equal
+ * Inputs:
+ * space1_id - First dataspace identifier.
+ * space2_id - Second dataspace identifier.
+ * Outputs:
+ * equal - TRUE if equal, FALSE if unequal.
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * April 4, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5sextent_equal_c ( hid_t_f * space1_id, hid_t_f *space2_id, hid_t_f *c_equal)
+{
+ int ret_value = -1;
+
+ if( (*c_equal = (hid_t_f)H5Sextent_equal((hid_t)*space1_id, (hid_t)*space2_id)) < 0)
+ return ret_value;
+
+ ret_value = 0;
+ return ret_value;
+}
+
diff --git a/fortran/src/H5Sff.f90 b/fortran/src/H5Sff.f90
index a4780c1..9e1367d 100644
--- a/fortran/src/H5Sff.f90
+++ b/fortran/src/H5Sff.f90
@@ -1942,4 +1942,170 @@
END SUBROUTINE h5sget_select_type_f
- END MODULE H5S
+!----------------------------------------------------------------------
+! Name: H5Sdecode_f
+!
+! Purpose: Decode a binary object description of data space and return a new object handle.
+!
+! Inputs:
+! buf - Buffer for the data space object to be decoded.
+! obj_id - Object ID
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+!
+! Optional parameters: - NONE
+!
+! Programmer: M.S. Breitenfeld
+! March 26, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5sdecode_f(buf, obj_id, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5sdecode_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ CHARACTER(LEN=*), INTENT(IN) :: buf ! Buffer for the data space object to be decoded.
+ INTEGER, INTENT(OUT) :: obj_id ! Object ID
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+ INTERFACE
+ INTEGER FUNCTION h5sdecode_c(buf, obj_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5SDECODE_C'::h5sdecode_c
+ !DEC$ ENDIF
+ CHARACTER(LEN=*), INTENT(IN) :: buf
+ INTEGER, INTENT(OUT) :: obj_id ! Object ID
+ END FUNCTION h5sdecode_c
+ END INTERFACE
+
+ hdferr = h5sdecode_c(buf, obj_id)
+
+ END SUBROUTINE h5sdecode_f
+
+!----------------------------------------------------------------------
+! Name: H5Sencode_f
+!
+! Purpose: Encode a data space object description into a binary buffer.
+!
+! Inputs:
+! obj_id - Identifier of the object to be encoded.
+! buf - Buffer for the object to be encoded into.
+! nalloc - The size of the allocated buffer.
+! Outputs:
+! nalloc - The size of the buffer needed.
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+!
+! Optional parameters: - NONE
+!
+! Programmer: M.S. Breitenfeld
+! March 26, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5sencode_f(obj_id, buf, nalloc, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5sencode_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: obj_id ! Identifier of the object to be encoded.
+ CHARACTER(LEN=*), INTENT(OUT) :: buf ! Buffer for the object to be encoded into.
+ INTEGER(SIZE_T), INTENT(INOUT) :: nalloc ! The size of the allocated buffer.
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+
+ INTERFACE
+ INTEGER FUNCTION h5sencode_c(buf, obj_id, nalloc)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5SENCODE_C'::h5sencode_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: obj_id
+ CHARACTER(LEN=*), INTENT(OUT) :: buf
+ INTEGER(SIZE_T), INTENT(INOUT) :: nalloc
+ END FUNCTION h5sencode_c
+ END INTERFACE
+
+ hdferr = h5sencode_c(buf, obj_id, nalloc)
+
+ END SUBROUTINE h5sencode_f
+
+
+!----------------------------------------------------------------------
+! Name: h5sextent_equal_f
+!
+! Purpose: Determines whether two dataspace extents are equal.
+!
+! Inputs:
+! space1_id - First dataspace identifier.
+! space2_id - Second dataspace identifier.
+! Outputs:
+! Equal - .TRUE. if equal, .FALSE. if unequal.
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! April 2, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5sextent_equal_f(space1_id, space2_id, equal, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5sextent_equal_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: space1_id ! First dataspace identifier.
+ INTEGER(HID_T), INTENT(IN) :: space2_id ! Second dataspace identifier.
+ LOGICAL, INTENT(OUT) :: Equal ! .TRUE. if equal, .FALSE. if unequal.
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+ INTEGER(HID_T) :: c_equal
+
+ INTERFACE
+ INTEGER FUNCTION h5sextent_equal_c(space1_id, space2_id, c_equal)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5SEXTENT_EQUAL_C'::h5sextent_equal_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: space1_id
+ INTEGER(HID_T), INTENT(IN) :: space2_id
+ INTEGER(HID_T) :: c_equal
+ END FUNCTION h5sextent_equal_c
+ END INTERFACE
+
+ hdferr = h5sextent_equal_c(space1_id, space2_id, c_equal)
+
+
+ equal = .FALSE.
+ IF(c_equal.GT.0) equal = .TRUE.
+
+
+ END SUBROUTINE h5sextent_equal_f
+
+END MODULE H5S
diff --git a/fortran/src/H5Tf.c b/fortran/src/H5Tf.c
index 7c3befc..0ad0bc9 100644
--- a/fortran/src/H5Tf.c
+++ b/fortran/src/H5Tf.c
@@ -24,6 +24,7 @@
* Inputs: loc_id - file or group identifier
* name - name of the datatype within file or group
* namelen - name length
+ * tapl_id - datatype access property list identifier
* Outputs: type_id - dataset identifier
* Returns: 0 on success, -1 on failure
* Programmer: Elena Pourmal
@@ -31,7 +32,7 @@
* Modifications:
*---------------------------------------------------------------------------*/
int_f
-nh5topen_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id)
+nh5topen_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id, hid_t_f *tapl_id)
{
char *c_name = NULL;
hid_t c_type_id;
@@ -46,7 +47,7 @@ nh5topen_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id)
/*
* Call H5Topen2 function.
*/
- if((c_type_id = H5Topen2((hid_t)*loc_id, c_name, H5P_DEFAULT)) < 0)
+ if((c_type_id = H5Topen2((hid_t)*loc_id, c_name, (hid_t)*tapl_id)) < 0)
goto done;
*type_id = (hid_t_f)c_type_id;
@@ -67,13 +68,19 @@ done:
* name - name of the datatype within file or group
* namelen - name length
* type_id - dataset identifier
+ * lcpl_id - Link creation property list
+ * tcpl_id - Datatype creation property list
+ * tapl_id - Datatype access property list
* Returns: 0 on success, -1 on failure
* Programmer: Elena Pourmal
* Saturday, August 14, 1999
* Modifications:
+ * - Added passing optional parameters for version 1.8
+ * M.S. Breitenfeld
*---------------------------------------------------------------------------*/
int_f
-nh5tcommit_c(hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id)
+nh5tcommit_c(hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id,
+ hid_t_f *lcpl_id, hid_t_f *tcpl_id, hid_t_f *tapl_id)
{
char *c_name = NULL;
int ret_value = -1;
@@ -83,7 +90,7 @@ nh5tcommit_c(hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id)
goto done;
/* Call H5Tcommit2 function */
- if(H5Tcommit2((hid_t)*loc_id, c_name, (hid_t)*type_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT) < 0)
+ if(H5Tcommit2((hid_t)*loc_id, c_name, (hid_t)*type_id, (hid_t)*lcpl_id, (hid_t)*tcpl_id, (hid_t)*tapl_id) < 0)
goto done;
ret_value = 0;
@@ -1634,3 +1641,202 @@ nh5tget_member_class_c ( hid_t_f *type_id , int_f *member_no, int_f *class )
*class = (int_f)c_class;
return ret_value;
}
+
+/*----------------------------------------------------------------------------
+ * Name: h5tcommit_anon_c
+ * Purpose: Call H5Tcommit_anon
+ * Inputs: loc_id - file or group identifier
+ * dtype_id - dataset identifier
+ * tcpl_id - Datatype creation property list
+ * tapl_id - Datatype access property list
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * February 25, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5tcommit_anon_c(hid_t_f *loc_id, hid_t_f *dtype_id,
+ hid_t_f *tcpl_id, hid_t_f *tapl_id)
+{
+ int ret_value = -1;
+
+ /* Call H5Tcommit_anon function */
+ if(H5Tcommit_anon((hid_t)*loc_id, (hid_t)*dtype_id, (hid_t)*tcpl_id, (hid_t)*tapl_id) < 0)
+ goto done;
+
+ ret_value = 0;
+
+ done:
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5tcommitted_c
+ * Purpose: Call H5Tcommitted
+ * dtype_id - dataset identifier
+ * Returns: a positive value, for TRUE, if the datatype has been committed,
+ * or 0 (zero), for FALSE, if the datatype has not been committed.
+ * Otherwise returns a negative value.
+ * Programmer: M.S. Breitenfeld
+ * February 25, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+int_f
+nh5tcommitted_c(hid_t_f *dtype_id)
+{
+ int_f ret_value;
+
+ /* Call H5Tcommitted function */
+
+ ret_value=(int_f)H5Tcommitted((hid_t)*dtype_id);
+
+ return ret_value;
+
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5tdecode_c
+ * Purpose: Call H5Tdecode
+ * Inputs:
+ * buf - Buffer for the data space object to be decoded.
+ * Outputs:
+ * obj_id - Object_id (non-negative)
+ *
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * April 9, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5tdecode_c ( _fcd buf, int_f *obj_id )
+{
+ int ret_value = -1;
+ unsigned char *c_buf = NULL; /* Buffer to hold C string */
+ hid_t c_obj_id;
+
+ /*
+ * Call H5Tdecode function.
+ */
+
+ c_buf = (unsigned char*)buf;
+
+ c_obj_id = H5Tdecode(c_buf);
+ if(c_obj_id < 0)
+ return ret_value;
+
+ *obj_id = (int_f)c_obj_id;
+ ret_value = 0;
+
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5tencode_c
+ * Purpose: Call H5Tencode
+ * Inputs:
+ * obj_id - Identifier of the object to be encoded.
+ * buf - Buffer for the object to be encoded into.
+ * nalloc - The size of the allocated buffer.
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * April 9, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5tencode_c (_fcd buf, hid_t_f *obj_id, size_t_f *nalloc )
+{
+ int ret_value = -1;
+ unsigned char *c_buf = NULL; /* Buffer to hold C string */
+ size_t c_size;
+
+ /* return just the size of the allocated buffer;
+ * equivalent to C routine for which 'name' is set equal to NULL
+ */
+
+ if (*nalloc == 0) {
+
+ if(H5Tencode((hid_t)*obj_id, c_buf, &c_size) < 0)
+ return ret_value;
+
+ *nalloc = (size_t_f)c_size;
+
+ ret_value = 0;
+ return ret_value;
+ }
+
+ c_size = (size_t)*nalloc;
+ /*
+ * Allocate buffer
+ */
+ if ((c_buf = HDmalloc(c_size)) == NULL)
+ return ret_value;
+ /*
+ * Call H5Tencode function.
+ */
+ if(H5Tencode((hid_t)*obj_id, c_buf, &c_size) < 0){
+ return ret_value;
+ }
+
+ /* copy the C buffer to the FORTRAN buffer.
+ * Can not use HD5packFstring because we don't want to
+ * eliminate the NUL terminator or pad remaining space
+ * with blanks.
+ */
+
+ HDmemcpy(_fcdtocp(buf),(char *)c_buf,c_size);
+
+ ret_value = 0;
+ if(c_buf) HDfree(c_buf);
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5tget_create_plist_c
+ * Purpose: Call H5Tget_create_plist
+ * Inputs: dtype_id - Datatype identifier
+ * Outputs: dtpl_id - Datatype property list identifier
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * April 9, 2008
+ * Modifications: N/A
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5tget_create_plist_c ( hid_t_f *dtype_id, hid_t_f *dtpl_id)
+{
+ int_f ret_value=-1; /* Return value */
+
+ if ((*dtpl_id = (hid_t_f)H5Tget_create_plist((hid_t)*dtype_id)) < 0)
+ return ret_value;
+
+ ret_value = 0;
+ return ret_value;
+}
+
+/*----------------------------------------------------------------------------
+ * Name: h5tcompiler_conv_c
+ * Purpose: Call H5Tcompiler_conv
+ * Inputs:
+ * src_id - Identifier for the source datatype.
+ * dst_id - Identifier for the destination datatype.
+ * Outputs: c_flag - flag; TRUE for compiler conversion, FALSE for library conversion
+ * Returns: 0 on success, -1 on failure
+ * Programmer: M.S. Breitenfeld
+ * April 9, 2008
+ * Modifications:
+ *---------------------------------------------------------------------------*/
+
+int_f
+nh5tcompiler_conv_c ( hid_t_f *src_id, hid_t_f *dst_id, int_f *c_flag)
+{
+ int ret_value = -1;
+ htri_t status;
+
+ status = H5Tcompiler_conv( (hid_t)*src_id , (hid_t)*dst_id);
+ if ( status < 0 ) return ret_value;
+ *c_flag = (int_f)status;
+ ret_value = 0;
+ return ret_value;
+}
diff --git a/fortran/src/H5Tff.f90 b/fortran/src/H5Tff.f90
index ee5bb77..dee6990 100644
--- a/fortran/src/H5Tff.f90
+++ b/fortran/src/H5Tff.f90
@@ -16,11 +16,11 @@
!
! This file contains FORTRAN90 interfaces for H5T functions
!
- MODULE H5T
+MODULE H5T
- USE H5GLOBAL
+ USE H5GLOBAL
- CONTAINS
+CONTAINS
!----------------------------------------------------------------------
! Name: h5topen_f
@@ -36,53 +36,62 @@
! Success: 0
! Failure: -1
! Optional parameters:
-! NONE
+! tapl_id - datatype access property list identifier.
!
! Programmer: Elena Pourmal
! August 12, 1999
!
-! Modifications: Explicit Fortran interfaces were added for
-! called C functions (it is needed for Windows
-! port). March 7, 2001
+! Modifications: Explicit Fortran interfaces were added for
+! called C functions (it is needed for Windows
+! port). March 7, 2001
+!
+! Added optional parameter 'tapl_id' for compatability
+! with H5Topen2. April 9, 2009.
!
! Comment:
!----------------------------------------------------------------------
- SUBROUTINE h5topen_f(loc_id, name, type_id, hdferr)
+ SUBROUTINE h5topen_f(loc_id, name, type_id, hdferr, tapl_id)
!
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5topen_f
!DEC$endif
!
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
- CHARACTER(LEN=*), INTENT(IN) :: name
- ! Datatype name within file or group
- INTEGER(HID_T), INTENT(OUT) :: type_id ! Datatype identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- INTEGER :: namelen ! Name length
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: name ! Datatype name within file or group
+ INTEGER(HID_T), INTENT(OUT) :: type_id ! Datatype identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: tapl_id ! datatype access property list identifier
-! INTEGER, EXTERNAL :: h5topen_c
+ INTEGER :: namelen ! Name length
+ INTEGER(HID_T) :: tapl_id_default
+!
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5topen_c(loc_id, name, namelen, type_id)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5TOPEN_C'::h5topen_c
- !DEC$ ENDIF
- !DEC$ATTRIBUTES reference ::name
- INTEGER(HID_T), INTENT(IN) :: loc_id
- CHARACTER(LEN=*), INTENT(IN) :: name
- INTEGER :: namelen
- INTEGER(HID_T), INTENT(OUT) :: type_id
- END FUNCTION h5topen_c
- END INTERFACE
-
- namelen = LEN(name)
- hdferr = h5topen_c(loc_id, name, namelen, type_id)
- END SUBROUTINE h5topen_f
+ INTERFACE
+ INTEGER FUNCTION h5topen_c(loc_id, name, namelen, type_id, tapl_id_default)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5TOPEN_C'::h5topen_c
+ !DEC$ ENDIF
+ !DEC$ATTRIBUTES reference ::name
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: name
+ INTEGER :: namelen
+ INTEGER(HID_T), INTENT(OUT) :: type_id
+ INTEGER(HID_T) :: tapl_id_default
+ END FUNCTION h5topen_c
+ END INTERFACE
+
+ namelen = LEN(name)
+
+ tapl_id_default = H5P_DEFAULT_F
+ IF(PRESENT(tapl_id)) tapl_id_default = tapl_id
+
+ hdferr = h5topen_c(loc_id, name, namelen, type_id, tapl_id_default)
+ END SUBROUTINE h5topen_f
!----------------------------------------------------------------------
! Name: h5tcommit_f
@@ -100,53 +109,84 @@
! Success: 0
! Failure: -1
! Optional parameters:
-! NONE
+! lcpl_id - Link creation property list
+! tcpl_id - Datatype creation property list
+! tapl_id - Datatype access property list
!
! Programmer: Elena Pourmal
! August 12, 1999
!
-! Modifications: Explicit Fortran interfaces were added for
-! called C functions (it is needed for Windows
-! port). March 7, 2001
+! Modifications: - Explicit Fortran interfaces were added for
+! called C functions (it is needed for Windows
+! port). March 7, 2001
+!
+! - Added optional parameters introduced in version 1.8
+! M.S. Breitenfeld
+!
+!
!
! Comment:
!----------------------------------------------------------------------
- SUBROUTINE h5tcommit_f(loc_id, name, type_id, hdferr)
+ SUBROUTINE h5tcommit_f(loc_id, name, type_id, hdferr, &
+ lcpl_id, tcpl_id, tapl_id )
!
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5tcommit_f
!DEC$endif
!
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
- CHARACTER(LEN=*), INTENT(IN) :: name
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: name
! Datatype name within file or group
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- INTEGER :: namelen ! Name length
+ INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Link creation property list
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: tcpl_id ! Datatype creation property list
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: tapl_id ! Datatype access property list
+
+
+ INTEGER :: namelen ! Name length
+
+ INTEGER(HID_T) :: lcpl_id_default
+ INTEGER(HID_T) :: tcpl_id_default
+ INTEGER(HID_T) :: tapl_id_default
-! INTEGER, EXTERNAL :: h5tcommit_c
! MS FORTRAN needs explicit interface for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5tcommit_c(loc_id, name, namelen, type_id)
- USE H5GLOBAL
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5TCOMMIT_C'::h5tcommit_c
- !DEC$ ENDIF
- !DEC$ATTRIBUTES reference ::name
- INTEGER(HID_T), INTENT(IN) :: loc_id
- CHARACTER(LEN=*), INTENT(IN) :: name
- INTEGER :: namelen
- INTEGER(HID_T), INTENT(IN) :: type_id
- END FUNCTION h5tcommit_c
- END INTERFACE
-
- namelen = LEN(name)
- hdferr = h5tcommit_c(loc_id, name, namelen, type_id)
- END SUBROUTINE h5tcommit_f
+ INTERFACE
+ INTEGER FUNCTION h5tcommit_c(loc_id, name, namelen, type_id, &
+ lcpl_id_default, tcpl_id_default, tapl_id_default )
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5TCOMMIT_C'::h5tcommit_c
+ !DEC$ ENDIF
+ !DEC$ATTRIBUTES reference ::name
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(LEN=*), INTENT(IN) :: name
+ INTEGER :: namelen
+ INTEGER(HID_T), INTENT(IN) :: type_id
+ INTEGER(HID_T) :: lcpl_id_default
+ INTEGER(HID_T) :: tcpl_id_default
+ INTEGER(HID_T) :: tapl_id_default
+ END FUNCTION h5tcommit_c
+ END INTERFACE
+
+ lcpl_id_default = H5P_DEFAULT_F
+ tcpl_id_default = H5P_DEFAULT_F
+ tapl_id_default = H5P_DEFAULT_F
+
+ IF (PRESENT(lcpl_id)) lcpl_id_default = lcpl_id
+ IF (PRESENT(tcpl_id)) tcpl_id_default = tcpl_id
+ IF (PRESENT(tapl_id)) tapl_id_default = tapl_id
+
+ namelen = LEN(name)
+
+ hdferr = h5tcommit_c(loc_id, name, namelen, type_id, &
+ lcpl_id_default, tcpl_id_default, tapl_id_default )
+
+ END SUBROUTINE h5tcommit_f
!----------------------------------------------------------------------
! Name: h5tcopy_f
@@ -3249,4 +3289,357 @@
END SUBROUTINE h5tget_member_class_f
!----------------------------------------------------------------------
- END MODULE H5T
+! Name: h5tcommit_anon_f
+!
+! Purpose: Commits a transient datatype to a file,
+! creating a new named datatype,
+! but does not link it into the file structure.
+!
+! Inputs:
+! loc_id - A file or group identifier specifying the file
+! in which the new named datatype is to be created.
+! dtype_id - A datatype identifier.
+!
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! tcpl_id - A datatype creation property list identifier.
+! (H5P_DEFAULT_F for the default property list.)
+! tapl_id - A datatype access property list identifier.
+! should always be passed as the value H5P_DEFAULT_F.
+!
+! Programmer: M.S. Breitenfeld
+! February 25, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5tcommit_anon_f(loc_id, dtype_id, hdferr, tcpl_id, tapl_id)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5tcommit_anon_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! A file or group identifier specifying
+ ! the file in which the new named datatype
+ ! is to be created.
+ INTEGER(HID_T), INTENT(IN) :: dtype_id ! Datatype identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: tcpl_id ! A datatype creation property
+ ! list identifier.
+ ! (H5P_DEFAULT_F for the default property list.)
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: tapl_id ! A datatype access property list identifier.
+ ! should always be passed as the value H5P_DEFAULT_F.
+ INTEGER(HID_T) :: tcpl_id_default
+ INTEGER(HID_T) :: tapl_id_default
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5tcommit_anon_c(loc_id, dtype_id, &
+ tcpl_id_default, tapl_id_default)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5TCOMMIT_ANON_C'::h5tcommit_anon_c
+ !DEC$ ENDIF
+ !DEC$ATTRIBUTES reference ::name
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ INTEGER(HID_T), INTENT(IN) :: dtype_id
+ INTEGER(HID_T) :: tcpl_id_default
+ INTEGER(HID_T) :: tapl_id_default
+ END FUNCTION h5tcommit_anon_c
+ END INTERFACE
+
+ tcpl_id_default = H5P_DEFAULT_F
+ tapl_id_default = H5P_DEFAULT_F
+
+ IF(PRESENT(tcpl_id)) tcpl_id_default = tcpl_id
+ IF(PRESENT(tapl_id)) tapl_id_default = tapl_id
+
+ hdferr = h5tcommit_anon_c(loc_id, dtype_id, &
+ tcpl_id_default, tapl_id_default )
+
+ END SUBROUTINE h5tcommit_anon_f
+
+!----------------------------------------------------------------------
+! Name: h5tcommitted_f
+!
+! Purpose: Determines whether a datatype is a named type or a transient type.
+!
+! Inputs:
+! dtype_id - A datatype identifier.
+!
+! Outputs:
+! committed - .TRUE., if the datatype has been committed
+! .FALSE., if the datatype has not been committed.
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+! Optional parameters: None
+!
+! Programmer: M.S. Breitenfeld
+! February 25, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5tcommitted_f(dtype_id, committed, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5tcommitted_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: dtype_id ! A datatype identifier
+ LOGICAL, INTENT(OUT) :: committed ! .TRUE., if the datatype has been committed
+ !.FALSE., if the datatype has not been committed.
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+! Success: 0
+! Failure: -1
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5tcommitted_c(dtype_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5TCOMMITTED_C'::h5tcommitted_c
+ !DEC$ ENDIF
+ !DEC$ATTRIBUTES reference ::name
+ INTEGER(HID_T), INTENT(IN) :: dtype_id
+ END FUNCTION h5tcommitted_c
+ END INTERFACE
+
+ hdferr = h5tcommitted_c(dtype_id)
+
+ IF(hdferr.GT.0)THEN
+ committed = .TRUE.
+ hdferr = 0
+ ELSE IF(hdferr.EQ.0)THEN
+ committed = .FALSE.
+ hdferr = 0
+ ELSE
+ hdferr = -1
+ ENDIF
+
+
+ END SUBROUTINE h5tcommitted_f
+
+!----------------------------------------------------------------------
+! Name: H5Tdecode_f
+!
+! Purpose: Decode a binary object description of data type and return a new object handle.
+! Inputs:
+! buf - Buffer for the data space object to be decoded.
+! obj_id - Object ID
+! Outputs:
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+!
+! Optional parameters: - NONE
+!
+! Programmer: M.S. Breitenfeld
+! April 9, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5tdecode_f(buf, obj_id, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5tdecode_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ CHARACTER(LEN=*), INTENT(IN) :: buf ! Buffer for the data space object to be decoded.
+ INTEGER, INTENT(OUT) :: obj_id ! Object ID
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+ INTERFACE
+ INTEGER FUNCTION h5tdecode_c(buf, obj_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5TDECODE_C'::h5tdecode_c
+ !DEC$ ENDIF
+ CHARACTER(LEN=*), INTENT(IN) :: buf
+ INTEGER, INTENT(OUT) :: obj_id ! Object ID
+ END FUNCTION h5tdecode_c
+ END INTERFACE
+
+ hdferr = h5tdecode_c(buf, obj_id)
+
+ END SUBROUTINE h5tdecode_f
+
+!----------------------------------------------------------------------
+! Name: H5Tencode_f
+!
+! Purpose: Encode a data type object description into a binary buffer.
+!
+! Inputs:
+! obj_id - Identifier of the object to be encoded.
+! buf - Buffer for the object to be encoded into.
+! nalloc - The size of the allocated buffer.
+! Outputs:
+! nalloc - The size of the buffer needed.
+! hdferr: - error code
+! Success: 0
+! Failure: -1
+!
+! Optional parameters: - NONE
+!
+! Programmer: M.S. Breitenfeld
+! April 9, 2008
+!
+! Modifications:
+!
+! Comment:
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5tencode_f(obj_id, buf, nalloc, hdferr)
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5tencode_f
+!DEC$endif
+!
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: obj_id ! Identifier of the object to be encoded.
+ CHARACTER(LEN=*), INTENT(OUT) :: buf ! Buffer for the object to be encoded into.
+ INTEGER(SIZE_T), INTENT(INOUT) :: nalloc ! The size of the allocated buffer.
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+
+
+ INTERFACE
+ INTEGER FUNCTION h5tencode_c(buf, obj_id, nalloc)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5TENCODE_C'::h5tencode_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: obj_id
+ CHARACTER(LEN=*), INTENT(OUT) :: buf
+ INTEGER(SIZE_T), INTENT(INOUT) :: nalloc
+ END FUNCTION h5tencode_c
+ END INTERFACE
+
+ hdferr = h5tencode_c(buf, obj_id, nalloc)
+
+ END SUBROUTINE h5tencode_f
+
+!----------------------------------------------------------------------
+! Name: h5tget_create_plist_f
+!
+! Purpose: Returns a copy of a datatype creation property list.
+!
+! Inputs:
+! dtype_id - Datatype identifier
+! Outputs:
+! dtpl_id - Datatype property list identifier
+! hdferr: - Error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! April 9, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5tget_create_plist_f(dtype_id, dtpl_id, hdferr)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5tget_create_plist_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: dtype_id ! Datatype identifier
+ INTEGER(HID_T), INTENT(OUT) :: dtpl_id ! Datatype property list identifier.
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+
+! MS FORTRAN needs explicit interface for C functions called here.
+!
+ INTERFACE
+ INTEGER FUNCTION h5tget_create_plist_c(dtype_id, dtpl_id)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5TGET_CREATE_PLIST_C'::h5tget_create_plist_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: dtype_id
+ INTEGER(HID_T), INTENT(OUT) :: dtpl_id
+ END FUNCTION h5tget_create_plist_c
+ END INTERFACE
+
+ hdferr = h5tget_create_plist_c(dtype_id, dtpl_id)
+ END SUBROUTINE h5tget_create_plist_f
+
+!----------------------------------------------------------------------
+! Name: h5tcompiler_conv_f
+!
+! Purpose: Check whether the library’s default conversion is hard conversion.R
+!
+! Inputs:
+! src_id - Identifier for the source datatype.
+! dst_id - Identifier for the destination datatype.
+! Outputs:
+! flag - TRUE for compiler conversion, FALSE for library conversion
+! hdferr: - Error code
+! Success: 0
+! Failure: -1
+! Optional parameters:
+! NONE
+!
+! Programmer: M.S. Breitenfeld
+! April 9, 2008
+!
+! Modifications: N/A
+!
+!----------------------------------------------------------------------
+
+ SUBROUTINE h5tcompiler_conv_f( src_id, dst_id, flag, hdferr)
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5tcompiler_conv_f
+!DEC$endif
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: src_id ! Identifier for the source datatype.
+ INTEGER(HID_T), INTENT(IN) :: dst_id ! Identifier for the destination datatype.
+ LOGICAL, INTENT(OUT) :: flag ! .TRUE. for compiler conversion, .FALSE. for library conversion
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER :: c_flag
+
+ INTERFACE
+ INTEGER FUNCTION h5tcompiler_conv_c(src_id, dst_id, c_flag)
+ USE H5GLOBAL
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5TCOMPILER_CONV_C'::h5tcompiler_conv_c
+ !DEC$ ENDIF
+ INTEGER(HID_T), INTENT(IN) :: src_id
+ INTEGER(HID_T), INTENT(IN) :: dst_id
+ INTEGER :: c_flag
+ END FUNCTION h5tcompiler_conv_c
+ END INTERFACE
+
+ hdferr = h5tcompiler_conv_c(src_id, dst_id, c_flag)
+
+ flag = .FALSE.
+ IF(c_flag .GT. 0) flag = .TRUE.
+
+ END SUBROUTINE h5tcompiler_conv_f
+
+END MODULE H5T
diff --git a/fortran/src/H5_f.c b/fortran/src/H5_f.c
index a9ac279..77240b2 100644
--- a/fortran/src/H5_f.c
+++ b/fortran/src/H5_f.c
@@ -215,213 +215,310 @@ nh5close_types_c( hid_t_f * types, int_f *lentypes,
* Added more FD flags and new H5LIB flags
* Added more FD flags for HDF5 file driver
* EIP, April 9, 2005
+ * Added Generic flags introduced in version 1.8
+ * MSB, January, 2008
+ * Added types in lines h5*_flags = ( )variable to match input
*---------------------------------------------------------------------------*/
int_f
nh5init_flags_c( int_f *h5d_flags, int_f *h5f_flags,
int_f *h5fd_flags, hid_t_f *h5fd_hid_flags,
- int_f *h5g_flags, int_f *h5i_flags,
+ int_f *h5g_flags, int_f *h5i_flags, int_f *h5l_flags, int_f *h5o_flags,
hid_t_f *h5p_flags, int_f *h5r_flags, int_f *h5s_flags,
- int_f *h5t_flags, int_f *h5z_flags)
+ int_f *h5t_flags, int_f *h5z_flags, int_f *h5_generic_flags)
{
int ret_value = -1;
/*
* H5D flags
*/
- h5d_flags[0] = H5D_COMPACT;
- h5d_flags[1] = H5D_CONTIGUOUS;
- h5d_flags[2] = H5D_CHUNKED;
- h5d_flags[3] = H5D_ALLOC_TIME_ERROR;
- h5d_flags[4] = H5D_ALLOC_TIME_DEFAULT;
- h5d_flags[5] = H5D_ALLOC_TIME_EARLY;
- h5d_flags[6] = H5D_ALLOC_TIME_LATE;
- h5d_flags[7] = H5D_ALLOC_TIME_INCR;
- h5d_flags[8] = H5D_SPACE_STATUS_ERROR;
- h5d_flags[9] = H5D_SPACE_STATUS_NOT_ALLOCATED;
- h5d_flags[10] = H5D_SPACE_STATUS_PART_ALLOCATED;
- h5d_flags[11] = H5D_SPACE_STATUS_ALLOCATED;
- h5d_flags[12] = H5D_FILL_TIME_ERROR;
- h5d_flags[13] = H5D_FILL_TIME_ALLOC;
- h5d_flags[14] = H5D_FILL_TIME_NEVER;
- h5d_flags[15] = H5D_FILL_VALUE_ERROR;
- h5d_flags[16] = H5D_FILL_VALUE_UNDEFINED;
- h5d_flags[17] = H5D_FILL_VALUE_DEFAULT;
- h5d_flags[18] = H5D_FILL_VALUE_USER_DEFINED;
+ h5d_flags[0] = (int_f)H5D_COMPACT;
+ h5d_flags[1] = (int_f)H5D_CONTIGUOUS;
+ h5d_flags[2] = (int_f)H5D_CHUNKED;
+ h5d_flags[3] = (int_f)H5D_ALLOC_TIME_ERROR;
+ h5d_flags[4] = (int_f)H5D_ALLOC_TIME_DEFAULT;
+ h5d_flags[5] = (int_f)H5D_ALLOC_TIME_EARLY;
+ h5d_flags[6] = (int_f)H5D_ALLOC_TIME_LATE;
+ h5d_flags[7] = (int_f)H5D_ALLOC_TIME_INCR;
+ h5d_flags[8] = (int_f)H5D_SPACE_STATUS_ERROR;
+ h5d_flags[9] = (int_f)H5D_SPACE_STATUS_NOT_ALLOCATED;
+ h5d_flags[10] = (int_f)H5D_SPACE_STATUS_PART_ALLOCATED;
+ h5d_flags[11] = (int_f)H5D_SPACE_STATUS_ALLOCATED;
+ h5d_flags[12] = (int_f)H5D_FILL_TIME_ERROR;
+ h5d_flags[13] = (int_f)H5D_FILL_TIME_ALLOC;
+ h5d_flags[14] = (int_f)H5D_FILL_TIME_NEVER;
+ h5d_flags[15] = (int_f)H5D_FILL_VALUE_ERROR;
+ h5d_flags[16] = (int_f)H5D_FILL_VALUE_UNDEFINED;
+ h5d_flags[17] = (int_f)H5D_FILL_VALUE_DEFAULT;
+ h5d_flags[18] = (int_f)H5D_FILL_VALUE_USER_DEFINED;
/*
* H5F flags
*/
- h5f_flags[0] = (int_f)H5F_ACC_RDWR;
- h5f_flags[1] = (int_f)H5F_ACC_RDONLY;
- h5f_flags[2] = (int_f)H5F_ACC_TRUNC;
- h5f_flags[3] = (int_f)H5F_ACC_EXCL;
- h5f_flags[4] = (int_f)H5F_ACC_DEBUG;
- h5f_flags[5] = (int_f)H5F_SCOPE_LOCAL;
- h5f_flags[6] = (int_f)H5F_SCOPE_GLOBAL;
- h5f_flags[7] = (int_f)H5F_CLOSE_DEFAULT;
- h5f_flags[8] = (int_f)H5F_CLOSE_WEAK;
- h5f_flags[9] = (int_f)H5F_CLOSE_SEMI;
- h5f_flags[10] = (int_f)H5F_CLOSE_STRONG;
- h5f_flags[11] = (int_f)H5F_OBJ_FILE;
- h5f_flags[12] = (int_f)H5F_OBJ_DATASET;
- h5f_flags[13] = (int_f)H5F_OBJ_GROUP;
- h5f_flags[14] = (int_f)H5F_OBJ_DATATYPE;
- h5f_flags[15] = (int_f)H5F_OBJ_ALL;
-
+ h5f_flags[0] = (int_f)H5F_ACC_RDWR;
+ h5f_flags[1] = (int_f)H5F_ACC_RDONLY;
+ h5f_flags[2] = (int_f)H5F_ACC_TRUNC;
+ h5f_flags[3] = (int_f)H5F_ACC_EXCL;
+ h5f_flags[4] = (int_f)H5F_ACC_DEBUG;
+ h5f_flags[5] = (int_f)H5F_SCOPE_LOCAL;
+ h5f_flags[6] = (int_f)H5F_SCOPE_GLOBAL;
+ h5f_flags[7] = (int_f)H5F_CLOSE_DEFAULT;
+ h5f_flags[8] = (int_f)H5F_CLOSE_WEAK;
+ h5f_flags[9] = (int_f)H5F_CLOSE_SEMI;
+ h5f_flags[10] = (int_f)H5F_CLOSE_STRONG;
+ h5f_flags[11] = (int_f)H5F_OBJ_FILE;
+ h5f_flags[12] = (int_f)H5F_OBJ_DATASET;
+ h5f_flags[13] = (int_f)H5F_OBJ_GROUP;
+ h5f_flags[14] = (int_f)H5F_OBJ_DATATYPE;
+ h5f_flags[15] = (int_f)H5F_OBJ_ALL;
+ h5f_flags[16] = (int_f)H5F_LIBVER_EARLIEST;
+ h5f_flags[17] = (int_f)H5F_LIBVER_LATEST;
+
/*
* H5FD 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;
+ h5fd_flags[0] = (int_f)H5FD_MPIO_INDEPENDENT;
+ h5fd_flags[1] = (int_f)H5FD_MPIO_COLLECTIVE;
+ h5fd_flags[2] = (int_f)H5FD_MEM_NOLIST;
+ h5fd_flags[3] = (int_f)H5FD_MEM_DEFAULT;
+ h5fd_flags[4] = (int_f)H5FD_MEM_SUPER;
+ h5fd_flags[5] = (int_f)H5FD_MEM_BTREE;
+ h5fd_flags[6] = (int_f)H5FD_MEM_DRAW;
+ h5fd_flags[7] = (int_f)H5FD_MEM_GHEAP;
+ h5fd_flags[8] = (int_f)H5FD_MEM_LHEAP;
+ h5fd_flags[9] = (int_f)H5FD_MEM_OHDR;
+ h5fd_flags[10] = (int_f)H5FD_MEM_NTYPES;
/*
* H5FD flags of type hid_t
*/
- h5fd_hid_flags[0] = H5FD_CORE;
- h5fd_hid_flags[1] = H5FD_FAMILY;
- h5fd_hid_flags[2] = H5FD_LOG;
- h5fd_hid_flags[3] = H5FD_MPIO;
- h5fd_hid_flags[4] = H5FD_MULTI;
- h5fd_hid_flags[5] = H5FD_SEC2;
- h5fd_hid_flags[6] = H5FD_STDIO;
+ h5fd_hid_flags[0] = (int_f)H5FD_CORE;
+ h5fd_hid_flags[1] = (int_f)H5FD_FAMILY;
+ h5fd_hid_flags[2] = (int_f)H5FD_LOG;
+ h5fd_hid_flags[3] = (int_f)H5FD_MPIO;
+ h5fd_hid_flags[4] = (int_f)H5FD_MULTI;
+ h5fd_hid_flags[5] = (int_f)H5FD_SEC2;
+ h5fd_hid_flags[6] = (int_f)H5FD_STDIO;
/*
* H5G flags
*/
- h5g_flags[0] = H5O_TYPE_UNKNOWN;
- h5g_flags[1] = H5O_TYPE_GROUP;
- h5g_flags[2] = H5O_TYPE_DATASET;
- h5g_flags[3] = H5O_TYPE_NAMED_DATATYPE;
+ h5g_flags[0] = (int_f)H5O_TYPE_UNKNOWN;
+ h5g_flags[1] = (int_f)H5O_TYPE_GROUP;
+ h5g_flags[2] = (int_f)H5O_TYPE_DATASET;
+ h5g_flags[3] = (int_f)H5O_TYPE_NAMED_DATATYPE;
/* This value can no longer be returned and all these flags should be updated
* to reflect the refinements between links and objects. -QAK */
-/* h5g_flags[4] = H5G_LINK; */
- h5g_flags[5] = H5L_TYPE_ERROR;
- h5g_flags[6] = H5L_TYPE_HARD;
- h5g_flags[7] = H5L_TYPE_SOFT;
+/* h5g_flags[4] = H5G_LINK; */
+ h5g_flags[5] = (int_f)H5L_TYPE_ERROR;
+ h5g_flags[6] = (int_f)H5L_TYPE_HARD;
+ h5g_flags[7] = (int_f)H5L_TYPE_SOFT;
+
+ h5g_flags[8] = (int_f)H5G_STORAGE_TYPE_UNKNOWN;
+ h5g_flags[9] = (int_f)H5G_STORAGE_TYPE_SYMBOL_TABLE;
+ h5g_flags[10] = (int_f)H5G_STORAGE_TYPE_COMPACT;
+ h5g_flags[11] = (int_f)H5G_STORAGE_TYPE_DENSE;
/*
* H5I flags
*/
- h5i_flags[0] = H5I_FILE;
- h5i_flags[1] = H5I_GROUP;
- h5i_flags[2] = H5I_DATATYPE;
- h5i_flags[3] = H5I_DATASPACE;
- h5i_flags[4] = H5I_DATASET;
- h5i_flags[5] = H5I_ATTR;
- h5i_flags[6] = H5I_BADID;
+ h5i_flags[0] = (int_f)H5I_FILE;
+ h5i_flags[1] = (int_f)H5I_GROUP;
+ h5i_flags[2] = (int_f)H5I_DATATYPE;
+ h5i_flags[3] = (int_f)H5I_DATASPACE;
+ h5i_flags[4] = (int_f)H5I_DATASET;
+ h5i_flags[5] = (int_f)H5I_ATTR;
+ h5i_flags[6] = (int_f)H5I_BADID;
+/*
+ * H5L flags
+ */
+ h5l_flags[0] = (int_f)H5L_TYPE_ERROR;
+ h5l_flags[1] = (int_f)H5L_TYPE_HARD;
+ h5l_flags[2] = (int_f)H5L_TYPE_SOFT;
+ h5l_flags[3] = (int_f)H5L_TYPE_EXTERNAL;
+ h5l_flags[4] = (int_f)H5L_SAME_LOC; /* Macro to indicate operation occurs on same location */
+ h5l_flags[5] = (int_f)H5L_LINK_CLASS_T_VERS; /* Current version of the H5L_class_t struct */
+
+/*
+ * H5O flags
+ */
+
+/* Flags for object copy (H5Ocopy) */
+ h5o_flags[0] = (int_f)H5O_COPY_SHALLOW_HIERARCHY_FLAG; /* Copy only immediate members */
+ h5o_flags[1] = (int_f)H5O_COPY_EXPAND_SOFT_LINK_FLAG; /* Expand soft links into new objects */
+ h5o_flags[2] = (int_f)H5O_COPY_EXPAND_EXT_LINK_FLAG; /* Expand external links into new objects */
+ h5o_flags[3] = (int_f)H5O_COPY_EXPAND_REFERENCE_FLAG; /* Copy objects that are pointed by references */
+ h5o_flags[4] = (int_f)H5O_COPY_WITHOUT_ATTR_FLAG; /* Copy object without copying attributes */
+ h5o_flags[5] = (int_f)H5O_COPY_PRESERVE_NULL_FLAG; /* Copy NULL messages (empty space) */
+ h5o_flags[6] = (int_f)H5O_COPY_ALL; /* All object copying flags (for internal checking) */
+
+/* Flags for shared message indexes.
+ * Pass these flags in using the mesg_type_flags parameter in
+ * H5P_set_shared_mesg_index.
+ * (Developers: These flags correspond to object header message type IDs,
+ * but we need to assign each kind of message to a different bit so that
+ * one index can hold multiple types.)
+ */
+ h5o_flags[7] = (int_f)H5O_SHMESG_NONE_FLAG; /* No shared messages */
+ h5o_flags[8] = (int_f)H5O_SHMESG_SDSPACE_FLAG; /* Simple Dataspace Message. */
+ h5o_flags[9] = (int_f)H5O_SHMESG_DTYPE_FLAG; /* Datatype Message. */
+ h5o_flags[10] = (int_f)H5O_SHMESG_FILL_FLAG; /* Fill Value Message. */
+ h5o_flags[11] = (int_f)H5O_SHMESG_PLINE_FLAG; /* Filter pipeline message. */
+ h5o_flags[12] = (int_f)H5O_SHMESG_ATTR_FLAG; /* Attribute Message. */
+ h5o_flags[13] = (int_f)H5O_SHMESG_ALL_FLAG;
+
+/* Object header status flag definitions */
+ h5o_flags[14] = (int_f)H5O_HDR_CHUNK0_SIZE; /* 2-bit field indicating # of bytes to store the size of chunk 0's data */
+ h5o_flags[15] = (int_f)H5O_HDR_ATTR_CRT_ORDER_TRACKED; /* Attribute creation order is tracked */
+ h5o_flags[16] = (int_f)H5O_HDR_ATTR_CRT_ORDER_INDEXED; /* Attribute creation order has index */
+ h5o_flags[17] = (int_f)H5O_HDR_ATTR_STORE_PHASE_CHANGE; /* Non-default attribute storage phase change values stored */
+ h5o_flags[18] = (int_f)H5O_HDR_STORE_TIMES; /* Store access, modification, change & birth times for object */
+ h5o_flags[19] = (int_f)H5O_HDR_ALL_FLAGS;
+
+/* Maximum shared message values. Number of indexes is 8 to allow room to add
+ * new types of messages.
+ */
+ h5o_flags[20] = (int_f)H5O_SHMESG_MAX_NINDEXES;
+ h5o_flags[21] = (int_f)H5O_SHMESG_MAX_LIST_SIZE;
/*
* H5P flags
*/
- h5p_flags[0] = H5P_FILE_CREATE;
- h5p_flags[1] = H5P_FILE_ACCESS;
- h5p_flags[2] = H5P_DATASET_CREATE;
- h5p_flags[3] = H5P_DATASET_XFER;
- h5p_flags[4] = H5P_FILE_MOUNT;
- h5p_flags[5] = H5P_DEFAULT;
- h5p_flags[6] = H5P_ROOT;
-
+ h5p_flags[0] = (hid_t_f)H5P_FILE_CREATE;
+ h5p_flags[1] = (hid_t_f)H5P_FILE_ACCESS;
+ h5p_flags[2] = (hid_t_f)H5P_DATASET_CREATE;
+ h5p_flags[3] = (hid_t_f)H5P_DATASET_XFER;
+ h5p_flags[4] = (hid_t_f)H5P_FILE_MOUNT;
+ h5p_flags[5] = (hid_t_f)H5P_DEFAULT;
+ h5p_flags[6] = (hid_t_f)H5P_ROOT;
+ h5p_flags[7] = (hid_t_f)H5P_CRT_ORDER_INDEXED;
+ h5p_flags[8] = (hid_t_f)H5P_CRT_ORDER_TRACKED;
+ h5p_flags[9] = (hid_t_f)H5P_OBJECT_CREATE;
+ h5p_flags[10] = (hid_t_f)H5P_DATASET_ACCESS;
+ h5p_flags[11] = (hid_t_f)H5P_GROUP_CREATE;
+ h5p_flags[12] = (hid_t_f)H5P_GROUP_ACCESS;
+ h5p_flags[13] = (hid_t_f)H5P_DATATYPE_CREATE;
+ h5p_flags[14] = (hid_t_f)H5P_DATATYPE_ACCESS;
+ h5p_flags[15] = (hid_t_f)H5P_STRING_CREATE;
+ h5p_flags[16] = (hid_t_f)H5P_ATTRIBUTE_CREATE;
+ h5p_flags[17] = (hid_t_f)H5P_OBJECT_COPY;
+ h5p_flags[18] = (hid_t_f)H5P_LINK_CREATE;
+ h5p_flags[19] = (hid_t_f)H5P_LINK_ACCESS;
/*
* H5R flags
*/
- h5r_flags[0] = H5R_OBJECT;
- h5r_flags[1] = H5R_DATASET_REGION;
+ h5r_flags[0] = (int_f)H5R_OBJECT;
+ h5r_flags[1] = (int_f)H5R_DATASET_REGION;
/*
* H5S flags
*/
- h5s_flags[0] = H5S_SCALAR;
- h5s_flags[1] = H5S_SIMPLE;
- h5s_flags[2] = H5S_NULL;
- h5s_flags[3] = H5S_SELECT_SET;
- h5s_flags[4] = H5S_SELECT_OR;
+ h5s_flags[0] = (int_f)H5S_SCALAR;
+ h5s_flags[1] = (int_f)H5S_SIMPLE;
+ h5s_flags[2] = (int_f)H5S_NULL;
+ h5s_flags[3] = (int_f)H5S_SELECT_SET;
+ h5s_flags[4] = (int_f)H5S_SELECT_OR;
h5s_flags[5] = (int_f)H5S_UNLIMITED;
h5s_flags[6] = (int_f)H5S_ALL;
- h5s_flags[7] = H5S_SELECT_NOOP;
- h5s_flags[8] = H5S_SELECT_AND;
- h5s_flags[9] = H5S_SELECT_XOR;
- h5s_flags[10] = H5S_SELECT_NOTB;
- h5s_flags[11] = H5S_SELECT_NOTA;
- h5s_flags[12] = H5S_SELECT_APPEND;
- h5s_flags[13] = H5S_SELECT_PREPEND;
- h5s_flags[14] = H5S_SELECT_INVALID;
+ h5s_flags[7] = (int_f)H5S_SELECT_NOOP;
+ h5s_flags[8] = (int_f)H5S_SELECT_AND;
+ h5s_flags[9] = (int_f)H5S_SELECT_XOR;
+ h5s_flags[10] = (int_f)H5S_SELECT_NOTB;
+ h5s_flags[11] = (int_f)H5S_SELECT_NOTA;
+ h5s_flags[12] = (int_f)H5S_SELECT_APPEND;
+ h5s_flags[13] = (int_f)H5S_SELECT_PREPEND;
+ h5s_flags[14] = (int_f)H5S_SELECT_INVALID;
- h5s_flags[15] = H5S_SEL_ERROR;
- h5s_flags[16] = H5S_SEL_NONE;
- h5s_flags[17] = H5S_SEL_POINTS;
- h5s_flags[18] = H5S_SEL_HYPERSLABS;
- h5s_flags[19] = H5S_SEL_ALL;
+ h5s_flags[15] = (int_f)H5S_SEL_ERROR;
+ h5s_flags[16] = (int_f)H5S_SEL_NONE;
+ h5s_flags[17] = (int_f)H5S_SEL_POINTS;
+ h5s_flags[18] = (int_f)H5S_SEL_HYPERSLABS;
+ h5s_flags[19] = (int_f)H5S_SEL_ALL;
/*
* H5T flags
*/
- h5t_flags[0] = H5T_NO_CLASS;
- h5t_flags[1] = H5T_INTEGER;
- h5t_flags[2] = H5T_FLOAT;
- h5t_flags[3] = H5T_TIME;
- h5t_flags[4] = H5T_STRING;
- h5t_flags[5] = H5T_BITFIELD;
- h5t_flags[6] = H5T_OPAQUE;
- h5t_flags[7] = H5T_COMPOUND;
- h5t_flags[8] = H5T_REFERENCE;
- h5t_flags[9] = H5T_ENUM;
- h5t_flags[10] = H5T_ORDER_LE;
- h5t_flags[11] = H5T_ORDER_BE;
- h5t_flags[12] = H5T_ORDER_VAX;
- h5t_flags[13] = H5T_PAD_ZERO;
- h5t_flags[14] = H5T_PAD_ONE;
- h5t_flags[15] = H5T_PAD_BACKGROUND;
- h5t_flags[16] = H5T_PAD_ERROR;
- h5t_flags[17] = H5T_SGN_NONE;
- h5t_flags[18] = H5T_SGN_2;
- h5t_flags[19] = H5T_SGN_ERROR;
- h5t_flags[20] = H5T_NORM_IMPLIED;
- h5t_flags[21] = H5T_NORM_MSBSET;
- h5t_flags[22] = H5T_NORM_NONE;
- h5t_flags[23] = H5T_CSET_ASCII;
- h5t_flags[24] = H5T_CSET_UTF8;
- h5t_flags[25] = H5T_STR_NULLTERM;
- h5t_flags[26] = H5T_STR_NULLPAD;
- h5t_flags[27] = H5T_STR_SPACEPAD;
- h5t_flags[28] = H5T_STR_ERROR;
- h5t_flags[29] = H5T_VLEN;
- h5t_flags[30] = H5T_ARRAY;
+ h5t_flags[0] = (int_f)H5T_NO_CLASS;
+ h5t_flags[1] = (int_f)H5T_INTEGER;
+ h5t_flags[2] = (int_f)H5T_FLOAT;
+ h5t_flags[3] = (int_f)H5T_TIME;
+ h5t_flags[4] = (int_f)H5T_STRING;
+ h5t_flags[5] = (int_f)H5T_BITFIELD;
+ h5t_flags[6] = (int_f)H5T_OPAQUE;
+ h5t_flags[7] = (int_f)H5T_COMPOUND;
+ h5t_flags[8] = (int_f)H5T_REFERENCE;
+ h5t_flags[9] = (int_f)H5T_ENUM;
+ h5t_flags[10] = (int_f)H5T_ORDER_LE;
+ h5t_flags[11] = (int_f)H5T_ORDER_BE;
+ h5t_flags[12] = (int_f)H5T_ORDER_VAX;
+ h5t_flags[13] = (int_f)H5T_PAD_ZERO;
+ h5t_flags[14] = (int_f)H5T_PAD_ONE;
+ h5t_flags[15] = (int_f)H5T_PAD_BACKGROUND;
+ h5t_flags[16] = (int_f)H5T_PAD_ERROR;
+ h5t_flags[17] = (int_f)H5T_SGN_NONE;
+ h5t_flags[18] = (int_f)H5T_SGN_2;
+ h5t_flags[19] = (int_f)H5T_SGN_ERROR;
+ h5t_flags[20] = (int_f)H5T_NORM_IMPLIED;
+ h5t_flags[21] = (int_f)H5T_NORM_MSBSET;
+ h5t_flags[22] = (int_f)H5T_NORM_NONE;
+ h5t_flags[23] = (int_f)H5T_CSET_ASCII;
+ h5t_flags[24] = (int_f)H5T_CSET_UTF8;
+ h5t_flags[25] = (int_f)H5T_STR_NULLTERM;
+ h5t_flags[26] = (int_f)H5T_STR_NULLPAD;
+ h5t_flags[27] = (int_f)H5T_STR_SPACEPAD;
+ h5t_flags[28] = (int_f)H5T_STR_ERROR;
+ h5t_flags[29] = (int_f)H5T_VLEN;
+ h5t_flags[30] = (int_f)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;
- h5z_flags[9] = H5Z_FILTER_SZIP;
- h5z_flags[10] = H5Z_FLAG_OPTIONAL;
- h5z_flags[11] = H5Z_FILTER_CONFIG_ENCODE_ENABLED;
- h5z_flags[12] = H5Z_FILTER_CONFIG_DECODE_ENABLED;
- h5z_flags[13] = H5Z_FILTER_ALL;
+ h5z_flags[0] = (int_f)H5Z_FILTER_ERROR;
+ h5z_flags[1] = (int_f)H5Z_FILTER_NONE;
+ h5z_flags[2] = (int_f)H5Z_FILTER_DEFLATE;
+ h5z_flags[3] = (int_f)H5Z_FILTER_SHUFFLE;
+ h5z_flags[4] = (int_f)H5Z_FILTER_FLETCHER32;
+ h5z_flags[5] = (int_f)H5Z_ERROR_EDC;
+ h5z_flags[6] = (int_f)H5Z_DISABLE_EDC;
+ h5z_flags[7] = (int_f)H5Z_ENABLE_EDC;
+ h5z_flags[8] = (int_f)H5Z_NO_EDC;
+ h5z_flags[9] = (int_f)H5Z_FILTER_SZIP;
+ h5z_flags[10] = (int_f)H5Z_FLAG_OPTIONAL;
+ h5z_flags[11] = (int_f)H5Z_FILTER_CONFIG_ENCODE_ENABLED;
+ h5z_flags[12] = (int_f)H5Z_FILTER_CONFIG_DECODE_ENABLED;
+ h5z_flags[13] = (int_f)H5Z_FILTER_ALL;
+/*
+ * H5A flags
+ */
+
+
+/*
+ * H5 Generic flags introduced in version 1.8 -MSB-
+ */
+
+ /* H5_index_t enum struct */
+
+ h5_generic_flags[0] = (int_f)H5_INDEX_UNKNOWN; /* Unknown index type */
+ h5_generic_flags[1] = (int_f)H5_INDEX_NAME; /* Index on names */
+ h5_generic_flags[2] = (int_f)H5_INDEX_CRT_ORDER; /* Index on creation order */
+ h5_generic_flags[3] = (int_f)H5_INDEX_N; /* Index on creation order */
+
+
+ /* H5_iter_order_t enum struct */
+
+ h5_generic_flags[4] = (int_f)H5_ITER_UNKNOWN; /* Unknown order */
+ h5_generic_flags[5] = (int_f)H5_ITER_INC; /* Increasing order */
+ h5_generic_flags[6] = (int_f)H5_ITER_DEC; /* Decreasing order */
+ h5_generic_flags[7] = (int_f)H5_ITER_NATIVE; /* No particular order, whatever is fastest */
+ h5_generic_flags[8] = (int_f)H5_ITER_N; /* Number of iteration orders */
ret_value = 0;
return ret_value;
diff --git a/fortran/src/H5_ff.f90 b/fortran/src/H5_ff.f90
index eeffa34..899ce00 100644
--- a/fortran/src/H5_ff.f90
+++ b/fortran/src/H5_ff.f90
@@ -13,8 +13,9 @@
! access to either file, you may request a copy from help@hdfgroup.org. *
! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!
- MODULE H5LIB
- CONTAINS
+MODULE H5LIB
+
+CONTAINS
!----------------------------------------------------------------------
! Name: h5open_f
!
@@ -37,18 +38,18 @@
!
! Comment:
!----------------------------------------------------------------------
- SUBROUTINE h5open_f(error)
+ SUBROUTINE h5open_f(error)
!
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5open_f
!DEC$endif
!
- USE H5GLOBAL
+ USE H5GLOBAL
- IMPLICIT NONE
- INTEGER, INTENT(OUT) :: error
- INTEGER :: error_0, error_1, error_2, error_3
+ IMPLICIT NONE
+ INTEGER, INTENT(OUT) :: error
+ INTEGER :: error_0, error_1, error_2, error_3
! INTEGER, EXTERNAL :: h5init_types_c
! INTEGER, EXTERNAL :: h5init_flags_c
! INTEGER, EXTERNAL :: h5init1_flags_c
@@ -57,78 +58,87 @@
!
! MS FORTRAN needs explicit interfaces for C functions called here.
!
- INTERFACE
- INTEGER FUNCTION h5open_c()
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5OPEN_C'::h5open_c
- !DEC$ ENDIF
- END FUNCTION h5open_c
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION h5init_types_c(p_types, f_types, i_types)
- USE H5GLOBAL
- INTEGER(HID_T), DIMENSION(PREDEF_TYPES_LEN) :: p_types
- INTEGER(HID_T), DIMENSION(FLOATING_TYPES_LEN) :: f_types
- INTEGER(HID_T), DIMENSION(INTEGER_TYPES_LEN) :: i_types
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5INIT_TYPES_C'::h5init_types_c
- !DEC$ ENDIF
- END FUNCTION h5init_types_c
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION h5init_flags_c(i_H5D_flags, &
- i_H5F_flags, &
- i_H5FD_flags, &
- i_H5FD_hid_flags, &
- i_H5G_flags, &
- i_H5I_flags, &
- i_H5P_flags, &
- i_H5R_flags, &
- i_H5S_flags, &
- i_H5T_flags, &
- i_H5Z_flags)
- USE H5GLOBAL
- INTEGER i_H5F_flags(H5F_FLAGS_LEN)
- INTEGER i_H5G_flags(H5G_FLAGS_LEN)
- INTEGER i_H5D_flags(H5D_FLAGS_LEN)
- INTEGER i_H5FD_flags(H5FD_FLAGS_LEN)
- INTEGER(HID_T) i_H5FD_hid_flags(H5FD_HID_FLAGS_LEN)
- INTEGER i_H5I_flags(H5I_FLAGS_LEN)
- INTEGER(HID_T) i_H5P_flags(H5P_FLAGS_LEN)
- 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)
+ INTERFACE
+ INTEGER FUNCTION h5open_c()
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5OPEN_C'::h5open_c
+ !DEC$ ENDIF
+ END FUNCTION h5open_c
+ END INTERFACE
+ INTERFACE
+ INTEGER FUNCTION h5init_types_c(p_types, f_types, i_types)
+ USE H5GLOBAL
+ INTEGER(HID_T), DIMENSION(PREDEF_TYPES_LEN) :: p_types
+ INTEGER(HID_T), DIMENSION(FLOATING_TYPES_LEN) :: f_types
+ INTEGER(HID_T), DIMENSION(INTEGER_TYPES_LEN) :: i_types
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5INIT_TYPES_C'::h5init_types_c
+ !DEC$ ENDIF
+ END FUNCTION h5init_types_c
+ END INTERFACE
+ INTERFACE
+ INTEGER FUNCTION h5init_flags_c(i_H5D_flags, &
+ i_H5F_flags, &
+ i_H5FD_flags, &
+ i_H5FD_hid_flags, &
+ i_H5G_flags, &
+ i_H5I_flags, &
+ i_H5L_flags, &
+ i_H5O_flags, &
+ i_H5P_flags, &
+ i_H5R_flags, &
+ i_H5S_flags, &
+ i_H5T_flags, &
+ i_H5Z_flags, &
+ i_H5generic_flags)
+ USE H5GLOBAL
+ INTEGER i_H5F_flags(H5F_FLAGS_LEN)
+ INTEGER i_H5G_flags(H5G_FLAGS_LEN)
+ INTEGER i_H5D_flags(H5D_FLAGS_LEN)
+ INTEGER i_H5FD_flags(H5FD_FLAGS_LEN)
+ INTEGER(HID_T) i_H5FD_hid_flags(H5FD_HID_FLAGS_LEN)
+ INTEGER i_H5I_flags(H5I_FLAGS_LEN)
+ INTEGER i_H5L_flags(H5L_FLAGS_LEN)
+ INTEGER i_H5O_flags(H5O_FLAGS_LEN)
+ INTEGER(HID_T) i_H5P_flags(H5P_FLAGS_LEN)
+ 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)
+ INTEGER i_H5generic_flags(H5generic_FLAGS_LEN)
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
!DEC$ ATTRIBUTES C,reference,decorate,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 i_H5LIB_flags(H5LIB_FLAGS_LEN)
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,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, &
- H5F_flags, &
- H5FD_flags, &
- H5FD_hid_flags, &
- H5G_flags, &
- H5I_flags, &
- H5P_flags, &
- H5R_flags, &
- H5S_flags, &
- H5T_flags, &
- H5Z_flags)
- error_3 = h5init1_flags_c(H5LIB_flags )
- error = error_0 + error_1 + error_2 + error_3
- END SUBROUTINE h5open_f
+ END FUNCTION h5init_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)
+ !DEC$ ATTRIBUTES C,reference,decorate,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, &
+ H5F_flags, &
+ H5FD_flags, &
+ H5FD_hid_flags, &
+ H5G_flags, &
+ H5I_flags, &
+ H5L_flags, &
+ H5O_flags, &
+ H5P_flags, &
+ H5R_flags, &
+ H5S_flags, &
+ H5T_flags, &
+ H5Z_flags, &
+ H5generic_flags)
+ error_3 = h5init1_flags_c(H5LIB_flags )
+ error = error_0 + error_1 + error_2 + error_3
+ END SUBROUTINE h5open_f
!----------------------------------------------------------------------
! Name: h5close_f
@@ -153,49 +163,49 @@
! Comment:
!----------------------------------------------------------------------
- SUBROUTINE h5close_f(error)
+ SUBROUTINE h5close_f(error)
!
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5close_f
!DEC$endif
!
- USE H5GLOBAL
+ USE H5GLOBAL
- IMPLICIT NONE
- INTEGER :: error_1, error_2
- INTEGER, INTENT(OUT) :: error
-! INTEGER, EXTERNAL :: h5close_types_c, h5close_c
- INTERFACE
- INTEGER FUNCTION h5close_c()
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5CLOSE_C'::h5close_c
- !DEC$ ENDIF
- END FUNCTION h5close_c
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION h5close_types_c(p_types, P_TYPES_LEN, &
- f_types, F_TYPES_LEN, &
- i_types, I_TYPES_LEN )
- USE H5GLOBAL
- INTEGER P_TYPES_LEN
- INTEGER F_TYPES_LEN
- INTEGER I_TYPES_LEN
- INTEGER(HID_T), DIMENSION(P_TYPES_LEN) :: p_types
- INTEGER(HID_T), DIMENSION(F_TYPES_LEN) :: f_types
- INTEGER(HID_T), DIMENSION(I_TYPES_LEN) :: i_types
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5CLOSE_TYPES_C'::h5close_types_c
- !DEC$ ENDIF
- END FUNCTION h5close_types_c
- END INTERFACE
- error_1 = h5close_types_c(predef_types, PREDEF_TYPES_LEN, &
- floating_types, FLOATING_TYPES_LEN, &
- integer_types, INTEGER_TYPES_LEN )
- error_2 = h5close_c()
- error = error_1 + error_2
+ IMPLICIT NONE
+ INTEGER :: error_1, error_2
+ INTEGER, INTENT(OUT) :: error
+ ! INTEGER, EXTERNAL :: h5close_types_c, h5close_c
+ INTERFACE
+ INTEGER FUNCTION h5close_c()
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5CLOSE_C'::h5close_c
+ !DEC$ ENDIF
+ END FUNCTION h5close_c
+ END INTERFACE
+ INTERFACE
+ INTEGER FUNCTION h5close_types_c(p_types, P_TYPES_LEN, &
+ f_types, F_TYPES_LEN, &
+ i_types, I_TYPES_LEN )
+ USE H5GLOBAL
+ INTEGER P_TYPES_LEN
+ INTEGER F_TYPES_LEN
+ INTEGER I_TYPES_LEN
+ INTEGER(HID_T), DIMENSION(P_TYPES_LEN) :: p_types
+ INTEGER(HID_T), DIMENSION(F_TYPES_LEN) :: f_types
+ INTEGER(HID_T), DIMENSION(I_TYPES_LEN) :: i_types
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5CLOSE_TYPES_C'::h5close_types_c
+ !DEC$ ENDIF
+ END FUNCTION h5close_types_c
+ END INTERFACE
+ error_1 = h5close_types_c(predef_types, PREDEF_TYPES_LEN, &
+ floating_types, FLOATING_TYPES_LEN, &
+ integer_types, INTEGER_TYPES_LEN )
+ error_2 = h5close_c()
+ error = error_1 + error_2
- END SUBROUTINE h5close_f
+ END SUBROUTINE h5close_f
!----------------------------------------------------------------------
! Name: h5get_libversion_f
@@ -219,29 +229,29 @@
! Comment:
!----------------------------------------------------------------------
- SUBROUTINE h5get_libversion_f(majnum, minnum, relnum, error)
+ SUBROUTINE h5get_libversion_f(majnum, minnum, relnum, error)
!
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5get_libversion_f
!DEC$endif
!
- USE H5GLOBAL
-
- IMPLICIT NONE
- INTEGER, INTENT(OUT) :: majnum, minnum, relnum, error
- INTERFACE
- INTEGER FUNCTION h5get_libversion_c(majnum, minnum, relnum)
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5GET_LIBVERSION_C'::h5get_libversion_c
- !DEC$ ENDIF
- INTEGER, INTENT(OUT) :: majnum, minnum, relnum
- END FUNCTION h5get_libversion_c
- END INTERFACE
-
- error = h5get_libversion_c(majnum, minnum, relnum)
-
- END SUBROUTINE h5get_libversion_f
+ USE H5GLOBAL
+
+ IMPLICIT NONE
+ INTEGER, INTENT(OUT) :: majnum, minnum, relnum, error
+ INTERFACE
+ INTEGER FUNCTION h5get_libversion_c(majnum, minnum, relnum)
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5GET_LIBVERSION_C'::h5get_libversion_c
+ !DEC$ ENDIF
+ INTEGER, INTENT(OUT) :: majnum, minnum, relnum
+ END FUNCTION h5get_libversion_c
+ END INTERFACE
+
+ error = h5get_libversion_c(majnum, minnum, relnum)
+
+ END SUBROUTINE h5get_libversion_f
!----------------------------------------------------------------------
! Name: h5check_version_f
@@ -265,30 +275,30 @@
! Comment:
!----------------------------------------------------------------------
- SUBROUTINE h5check_version_f(majnum, minnum, relnum, error)
+ SUBROUTINE h5check_version_f(majnum, minnum, relnum, error)
!
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5check_version_f
!DEC$endif
!
- USE H5GLOBAL
-
- IMPLICIT NONE
- INTEGER, INTENT(IN) :: majnum, minnum, relnum
- INTEGER, INTENT(OUT) :: error
- INTERFACE
- INTEGER FUNCTION h5check_version_c(majnum, minnum, relnum)
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5CHECK_VERSION_C'::h5check_version_c
- !DEC$ ENDIF
- INTEGER, INTENT(IN) :: majnum, minnum, relnum
- END FUNCTION h5check_version_c
- END INTERFACE
-
- error = h5check_version_c(majnum, minnum, relnum)
-
- END SUBROUTINE h5check_version_f
+ USE H5GLOBAL
+
+ IMPLICIT NONE
+ INTEGER, INTENT(IN) :: majnum, minnum, relnum
+ INTEGER, INTENT(OUT) :: error
+ INTERFACE
+ INTEGER FUNCTION h5check_version_c(majnum, minnum, relnum)
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5CHECK_VERSION_C'::h5check_version_c
+ !DEC$ ENDIF
+ INTEGER, INTENT(IN) :: majnum, minnum, relnum
+ END FUNCTION h5check_version_c
+ END INTERFACE
+
+ error = h5check_version_c(majnum, minnum, relnum)
+
+ END SUBROUTINE h5check_version_f
!----------------------------------------------------------------------
! Name: h5garbage_collect_f
@@ -310,28 +320,28 @@
! Comment:
!----------------------------------------------------------------------
- SUBROUTINE h5garbage_collect_f(error)
+ SUBROUTINE h5garbage_collect_f(error)
!
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5garbage_collect_f
!DEC$endif
!
- USE H5GLOBAL
+ USE H5GLOBAL
+
+ IMPLICIT NONE
+ INTEGER, INTENT(OUT) :: error
+ INTERFACE
+ INTEGER FUNCTION h5garbage_collect_c()
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5GARBAGE_COLLECT_C'::h5garbage_collect_c
+ !DEC$ ENDIF
+ END FUNCTION h5garbage_collect_c
+ END INTERFACE
+
+ error = h5garbage_collect_c()
- IMPLICIT NONE
- INTEGER, INTENT(OUT) :: error
- INTERFACE
- INTEGER FUNCTION h5garbage_collect_c()
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5GARBAGE_COLLECT_C'::h5garbage_collect_c
- !DEC$ ENDIF
- END FUNCTION h5garbage_collect_c
- END INTERFACE
-
- error = h5garbage_collect_c()
-
- END SUBROUTINE h5garbage_collect_f
+ END SUBROUTINE h5garbage_collect_f
!----------------------------------------------------------------------
! Name: h5dont_atexit_f
@@ -353,26 +363,26 @@
! Comment:
!----------------------------------------------------------------------
- SUBROUTINE h5dont_atexit_f(error)
+ SUBROUTINE h5dont_atexit_f(error)
!
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5dont_atexit_f
!DEC$endif
!
- USE H5GLOBAL
-
- IMPLICIT NONE
- INTEGER, INTENT(OUT) :: error
- INTERFACE
- INTEGER FUNCTION h5dont_atexit_c()
- !DEC$ IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5DONT_ATEXIT_C'::h5dont_atexit_c
- !DEC$ ENDIF
- END FUNCTION h5dont_atexit_c
- END INTERFACE
-
- error = h5dont_atexit_c()
-
- END SUBROUTINE h5dont_atexit_f
- END MODULE H5LIB
+ USE H5GLOBAL
+
+ IMPLICIT NONE
+ INTEGER, INTENT(OUT) :: error
+ INTERFACE
+ INTEGER FUNCTION h5dont_atexit_c()
+ !DEC$ IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ ATTRIBUTES C,reference,decorate,alias:'H5DONT_ATEXIT_C'::h5dont_atexit_c
+ !DEC$ ENDIF
+ END FUNCTION h5dont_atexit_c
+ END INTERFACE
+
+ error = h5dont_atexit_c()
+
+ END SUBROUTINE h5dont_atexit_f
+END MODULE H5LIB
diff --git a/fortran/src/H5f90global.f90 b/fortran/src/H5f90global.f90
index a13d732..42f5cf0 100644
--- a/fortran/src/H5f90global.f90
+++ b/fortran/src/H5f90global.f90
@@ -15,19 +15,20 @@
!
MODULE H5GLOBAL
USE H5FORTRAN_TYPES
+!
!
! Definitions for reference datatypes.
! If you change the value of these parameters, do not forget to change corresponding
! values in the H5f90.h file.
- INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3
+ INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3
- TYPE hobj_ref_t_f
- INTEGER(HADDR_T) ref
- END TYPE
+ TYPE hobj_ref_t_f
+ INTEGER(HADDR_T) ref
+ END TYPE hobj_ref_t_f
- TYPE hdset_reg_ref_t_f
- INTEGER ref(REF_REG_BUF_LEN)
- END TYPE
+ TYPE hdset_reg_ref_t_f
+ INTEGER ref(REF_REG_BUF_LEN)
+ END TYPE hdset_reg_ref_t_f
INTEGER, PARAMETER :: PREDEF_TYPES_LEN = 6 ! Do not forget to change this
! value when new predefined
@@ -41,32 +42,32 @@
INTEGER, PARAMETER :: INTEGER_TYPES_LEN = 17
INTEGER(HID_T) H5T_NATIVE_INTEGER, &
- H5T_NATIVE_REAL, &
- H5T_NATIVE_DOUBLE, &
- H5T_NATIVE_CHARACTER , &
- H5T_STD_REF_OBJ, &
- H5T_STD_REF_DSETREG, &
- H5T_IEEE_F32BE, &
- H5T_IEEE_F32LE, &
- H5T_IEEE_F64BE, &
- H5T_IEEE_F64LE, &
- H5T_STD_I8BE, &
- H5T_STD_I8LE, &
- H5T_STD_I16BE, &
- H5T_STD_I16LE, &
- H5T_STD_I32BE, &
- H5T_STD_I32LE, &
- H5T_STD_I64BE, &
- H5T_STD_I64LE, &
- H5T_STD_U8BE, &
- H5T_STD_U8LE, &
- H5T_STD_U16BE, &
- H5T_STD_U16LE, &
- H5T_STD_U32BE, &
- H5T_STD_U32LE, &
- H5T_STD_U64BE, &
- H5T_STD_U64LE, &
- H5T_STRING
+ H5T_NATIVE_REAL, &
+ H5T_NATIVE_DOUBLE, &
+ H5T_NATIVE_CHARACTER , &
+ H5T_STD_REF_OBJ, &
+ H5T_STD_REF_DSETREG, &
+ H5T_IEEE_F32BE, &
+ H5T_IEEE_F32LE, &
+ H5T_IEEE_F64BE, &
+ H5T_IEEE_F64LE, &
+ H5T_STD_I8BE, &
+ H5T_STD_I8LE, &
+ H5T_STD_I16BE, &
+ H5T_STD_I16LE, &
+ H5T_STD_I32BE, &
+ H5T_STD_I32LE, &
+ H5T_STD_I64BE, &
+ H5T_STD_I64LE, &
+ H5T_STD_U8BE, &
+ H5T_STD_U8LE, &
+ H5T_STD_U16BE, &
+ H5T_STD_U16LE, &
+ H5T_STD_U32BE, &
+ H5T_STD_U32LE, &
+ H5T_STD_U64BE, &
+ H5T_STD_U64LE, &
+ H5T_STRING
INTEGER(HID_T), DIMENSION(PREDEF_TYPES_LEN) :: predef_types
@@ -76,13 +77,13 @@
EQUIVALENCE (predef_types(4), H5T_NATIVE_CHARACTER)
EQUIVALENCE (predef_types(5), H5T_STD_REF_OBJ)
EQUIVALENCE (predef_types(6), H5T_STD_REF_DSETREG)
-
+
INTEGER(HID_T), DIMENSION(FLOATING_TYPES_LEN) :: floating_types
EQUIVALENCE (floating_types(1), H5T_IEEE_F32BE )
EQUIVALENCE (floating_types(2), H5T_IEEE_F32LE)
EQUIVALENCE (floating_types(3), H5T_IEEE_F64BE)
EQUIVALENCE (floating_types(4), H5T_IEEE_F64LE)
-
+
INTEGER(HID_T), DIMENSION(INTEGER_TYPES_LEN) :: integer_types
EQUIVALENCE (integer_types(1), H5T_STD_I8BE )
EQUIVALENCE (integer_types(2), H5T_STD_I8LE)
@@ -151,7 +152,7 @@
!
! H5F flags declaration
!
- INTEGER, PARAMETER :: H5F_FLAGS_LEN = 16
+ INTEGER, PARAMETER :: H5F_FLAGS_LEN = 19
INTEGER H5F_flags(H5F_FLAGS_LEN)
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$ ATTRIBUTES DLLEXPORT :: /H5F_FLAGS/
@@ -174,6 +175,8 @@
INTEGER :: H5F_OBJ_GROUP_F
INTEGER :: H5F_OBJ_DATATYPE_F
INTEGER :: H5F_OBJ_ALL_F
+ INTEGER :: H5F_LIBVER_EARLIEST_F
+ INTEGER :: H5F_LIBVER_LATEST_F
EQUIVALENCE(H5F_flags(1), H5F_ACC_RDWR_F)
EQUIVALENCE(H5F_flags(2), H5F_ACC_RDONLY_F)
@@ -191,10 +194,43 @@
EQUIVALENCE(H5F_flags(14), H5F_OBJ_GROUP_F)
EQUIVALENCE(H5F_flags(15), H5F_OBJ_DATATYPE_F)
EQUIVALENCE(H5F_flags(16), H5F_OBJ_ALL_F)
+ EQUIVALENCE(H5F_flags(17), H5F_LIBVER_EARLIEST_F)
+ EQUIVALENCE(H5F_flags(18), H5F_LIBVER_LATEST_F)
+!
+! H5generic flags declaration
+!
+ INTEGER, PARAMETER :: H5generic_FLAGS_LEN = 9
+ INTEGER H5generic_flags(H5generic_FLAGS_LEN)
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$ ATTRIBUTES DLLEXPORT :: /H5generic_FLAGS/
+!DEC$endif
+ COMMON /H5generic_FLAGS/ H5generic_flags
+
+ INTEGER :: H5_INDEX_UNKNOWN_F
+ INTEGER :: H5_INDEX_NAME_F
+ INTEGER :: H5_INDEX_CRT_ORDER_F
+ INTEGER :: H5_INDEX_N_F
+ INTEGER :: H5_ITER_UNKNOWN_F
+ INTEGER :: H5_ITER_INC_F
+ INTEGER :: H5_ITER_DEC_F
+ INTEGER :: H5_ITER_NATIVE_F
+ INTEGER :: H5_ITER_N_F
+
+ EQUIVALENCE(H5generic_flags(1), H5_INDEX_UNKNOWN_F)
+ EQUIVALENCE(H5generic_flags(2), H5_INDEX_NAME_F)
+ EQUIVALENCE(H5generic_flags(3), H5_INDEX_CRT_ORDER_F)
+ EQUIVALENCE(H5generic_flags(4), H5_INDEX_N_F)
+ EQUIVALENCE(H5generic_flags(5), H5_ITER_UNKNOWN_F)
+ EQUIVALENCE(H5generic_flags(6), H5_ITER_INC_F)
+ EQUIVALENCE(H5generic_flags(7), H5_ITER_DEC_F)
+ EQUIVALENCE(H5generic_flags(8), H5_ITER_NATIVE_F)
+ EQUIVALENCE(H5generic_flags(9), H5_ITER_N_F)
+
+
!
! H5G flags declaration
!
- INTEGER, PARAMETER :: H5G_FLAGS_LEN = 8
+ INTEGER, PARAMETER :: H5G_FLAGS_LEN = 12
INTEGER H5G_flags(H5G_FLAGS_LEN)
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$ ATTRIBUTES DLLEXPORT :: /H5G_FLAGS/
@@ -210,16 +246,26 @@
INTEGER :: H5G_LINK_ERROR_F
INTEGER :: H5G_LINK_HARD_F
INTEGER :: H5G_LINK_SOFT_F
+ INTEGER :: H5G_STORAGE_TYPE_UNKNOWN_F
+ INTEGER :: H5G_STORAGE_TYPE_SYMBOL_TABLE_F
+ INTEGER :: H5G_STORAGE_TYPE_COMPACT_F
+ INTEGER :: H5G_STORAGE_TYPE_DENSE_F
EQUIVALENCE(H5G_flags(1), H5G_UNKNOWN_F)
EQUIVALENCE(H5G_flags(2), H5G_GROUP_F)
EQUIVALENCE(H5G_flags(3), H5G_DATASET_F)
EQUIVALENCE(H5G_flags(4), H5G_TYPE_F)
-! XXX: Fix problems with H5G_LINK_F! - QAK
+! XXX: Fix problems with H5G_LINK_F! - QAK ! these are really H5L values -MSB-
EQUIVALENCE(H5G_flags(5), H5G_LINK_F)
- EQUIVALENCE(H5G_flags(6), H5G_LINK_ERROR_F)
- EQUIVALENCE(H5G_flags(7), H5G_LINK_HARD_F)
- EQUIVALENCE(H5G_flags(8), H5G_LINK_SOFT_F)
+ EQUIVALENCE(H5G_flags(6), H5G_LINK_ERROR_F)
+ EQUIVALENCE(H5G_flags(7), H5G_LINK_HARD_F)
+ EQUIVALENCE(H5G_flags(8), H5G_LINK_SOFT_F)
+! XXX
+
+ EQUIVALENCE(H5G_flags(9), H5G_STORAGE_TYPE_UNKNOWN_F )
+ EQUIVALENCE(H5G_flags(10), H5G_STORAGE_TYPE_SYMBOL_TABLE_F)
+ EQUIVALENCE(H5G_flags(11), H5G_STORAGE_TYPE_COMPACT_F)
+ EQUIVALENCE(H5G_flags(12), H5G_STORAGE_TYPE_DENSE_F)
!
! H5D flags declaration
!
@@ -338,8 +384,6 @@
EQUIVALENCE(H5FD_hid_flags(6), H5FD_SEC2_F)
EQUIVALENCE(H5FD_hid_flags(7), H5FD_STDIO_F)
-
-
!
! H5I flags declaration
!
@@ -365,24 +409,116 @@
EQUIVALENCE(H5I_flags(5), H5I_DATASET_F)
EQUIVALENCE(H5I_flags(6), H5I_ATTR_F)
EQUIVALENCE(H5I_flags(7), H5I_BADID_F)
+!
+! H5L flags declaration
+!
+ INTEGER, PARAMETER :: H5L_FLAGS_LEN = 6
+ INTEGER :: H5L_flags(H5L_FLAGS_LEN)
+
+ INTEGER :: H5L_LINK_F
+ INTEGER :: H5L_LINK_ERROR_F
+ INTEGER :: H5L_LINK_HARD_F
+ INTEGER :: H5L_LINK_SOFT_F
+ INTEGER :: H5L_SAME_LOC_F
+ INTEGER :: H5L_LINK_CLASS_T_VERS_F
+
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$ ATTRIBUTES DLLEXPORT :: /H5L_FLAGS/
+!DEC$endif
+ COMMON /H5L_FLAGS/ H5L_flags
+
+ EQUIVALENCE(H5L_flags(1), H5L_LINK_F)
+ EQUIVALENCE(H5L_flags(2), H5L_LINK_ERROR_F)
+ EQUIVALENCE(H5L_flags(3), H5L_LINK_HARD_F)
+ EQUIVALENCE(H5L_flags(4), H5L_LINK_SOFT_F)
+ EQUIVALENCE(H5L_flags(5), H5L_SAME_LOC_F)
+ EQUIVALENCE(H5L_flags(6), H5L_LINK_CLASS_T_VERS_F)
+!
+! H5O flags declaration
+!
+ INTEGER, PARAMETER :: H5O_FLAGS_LEN = 22
+ INTEGER :: H5o_flags(H5O_FLAGS_LEN)
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$ ATTRIBUTES DLLEXPORT :: /H5O_FLAGS/
+!DEC$endif
+ COMMON /H5O_FLAGS/ H5O_flags
+
+ INTEGER :: H5O_COPY_SHALLOW_HIERARCHY_F ! * THESE VARIABLES DO
+ INTEGER :: H5O_COPY_EXPAND_SOFT_LINK_F ! NOT MATCH THE C VARIABLE
+ INTEGER :: H5O_COPY_EXPAND_EXT_LINK_F ! IN ORDER
+ INTEGER :: H5O_COPY_EXPAND_REFERENCE_F ! TO STAY UNDER THE
+ INTEGER :: H5O_COPY_WITHOUT_ATTR_FLAG_F
+ INTEGER :: H5O_COPY_PRESERVE_NULL_FLAG_F
+ INTEGER :: H5O_COPY_ALL_F
+ INTEGER :: H5O_SHMESG_NONE_FLAG_F
+ INTEGER :: H5O_SHMESG_SDSPACE_FLAG_F
+ INTEGER :: H5O_SHMESG_DTYPE_FLAG_F
+ INTEGER :: H5O_SHMESG_FILL_FLAG_F
+ INTEGER :: H5O_SHMESG_PLINE_FLAG_F
+ INTEGER :: H5O_SHMESG_ATTR_FLAG_F
+ INTEGER :: H5O_SHMESG_ALL_FLAG_F
+ INTEGER :: H5O_HDR_CHUNK0_SIZE_F
+ INTEGER :: H5O_HDR_ATTR_CRT_ORDER_TRACK_F ! 32 CHARACTER
+ INTEGER :: H5O_HDR_ATTR_CRT_ORDER_INDEX_F ! VARIABLE
+ INTEGER :: H5O_HDR_ATTR_STORE_PHASE_CHA_F ! LENGTH *
+ INTEGER :: H5O_HDR_STORE_TIMES_F
+ INTEGER :: H5O_HDR_ALL_FLAGS_F
+ INTEGER :: H5O_SHMESG_MAX_NINDEXES_F
+ INTEGER :: H5O_SHMESG_MAX_LIST_SIZE_F
+
+ EQUIVALENCE(h5o_flags(1) , H5O_COPY_SHALLOW_HIERARCHY_F)
+ EQUIVALENCE(h5o_flags(2) , H5O_COPY_EXPAND_SOFT_LINK_F)
+ EQUIVALENCE(h5o_flags(3) , H5O_COPY_EXPAND_EXT_LINK_F)
+ EQUIVALENCE(h5o_flags(4) , H5O_COPY_EXPAND_REFERENCE_F)
+ EQUIVALENCE(h5o_flags(5) , H5O_COPY_WITHOUT_ATTR_FLAG_F)
+ EQUIVALENCE(h5o_flags(6) , H5O_COPY_PRESERVE_NULL_FLAG_F)
+ EQUIVALENCE(h5o_flags(7) , H5O_COPY_ALL_F)
+ EQUIVALENCE(h5o_flags(8) , H5O_SHMESG_NONE_FLAG_F)
+ EQUIVALENCE(h5o_flags(9) , H5O_SHMESG_SDSPACE_FLAG_F)
+ EQUIVALENCE(h5o_flags(10) , H5O_SHMESG_DTYPE_FLAG_F)
+ EQUIVALENCE(h5o_flags(11) , H5O_SHMESG_FILL_FLAG_F)
+ EQUIVALENCE(h5o_flags(12) , H5O_SHMESG_PLINE_FLAG_F)
+ EQUIVALENCE(h5o_flags(13) , H5O_SHMESG_ATTR_FLAG_F)
+ EQUIVALENCE(h5o_flags(14) , H5O_SHMESG_ALL_FLAG_F)
+ EQUIVALENCE(h5o_flags(15) , H5O_HDR_CHUNK0_SIZE_F)
+ EQUIVALENCE(h5o_flags(16) , H5O_HDR_ATTR_CRT_ORDER_TRACK_F)
+ EQUIVALENCE(h5o_flags(17) , H5O_HDR_ATTR_CRT_ORDER_INDEX_F)
+ EQUIVALENCE(h5o_flags(18) , H5O_HDR_ATTR_STORE_PHASE_CHA_F)
+ EQUIVALENCE(h5o_flags(19) , H5O_HDR_STORE_TIMES_F)
+ EQUIVALENCE(h5o_flags(20) , H5O_HDR_ALL_FLAGS_F)
+ EQUIVALENCE(h5o_flags(21) , H5O_SHMESG_MAX_NINDEXES_F)
+ EQUIVALENCE(h5o_flags(22) , H5O_SHMESG_MAX_LIST_SIZE_F)
!
! H5P flags declaration
!
- INTEGER, PARAMETER :: H5P_FLAGS_LEN = 7
+ INTEGER, PARAMETER :: H5P_FLAGS_LEN = 20
INTEGER(HID_T) H5P_flags(H5P_FLAGS_LEN)
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$ ATTRIBUTES DLLEXPORT :: /H5P_FLAGS/
!DEC$endif
COMMON /H5P_FLAGS/ H5P_flags
- INTEGER(HID_T) :: H5P_FILE_CREATE_F
- INTEGER(HID_T) :: H5P_FILE_ACCESS_F
- INTEGER(HID_T) :: H5P_DATASET_CREATE_F
- INTEGER(HID_T) :: H5P_DATASET_XFER_F
- INTEGER(HID_T) :: H5P_FILE_MOUNT_F
- INTEGER(HID_T) :: H5P_DEFAULT_F
- INTEGER(HID_T) :: H5P_ROOT_F
+ INTEGER(HID_T) :: H5P_FILE_CREATE_F
+ INTEGER(HID_T) :: H5P_FILE_ACCESS_F
+ INTEGER(HID_T) :: H5P_DATASET_CREATE_F
+ INTEGER(HID_T) :: H5P_DATASET_XFER_F
+ INTEGER(HID_T) :: H5P_FILE_MOUNT_F
+ INTEGER(HID_T) :: H5P_DEFAULT_F
+ INTEGER(HID_T) :: H5P_ROOT_F
+ INTEGER(HID_T) :: H5P_CRT_ORDER_INDEXED_F
+ INTEGER(HID_T) :: H5P_CRT_ORDER_TRACKED_F
+ INTEGER(HID_T) :: H5P_OBJECT_CREATE_F
+ INTEGER(HID_T) :: H5P_DATASET_ACCESS_F
+ INTEGER(HID_T) :: H5P_GROUP_CREATE_F
+ INTEGER(HID_T) :: H5P_GROUP_ACCESS_F
+ INTEGER(HID_T) :: H5P_DATATYPE_CREATE_F
+ INTEGER(HID_T) :: H5P_DATATYPE_ACCESS_F
+ INTEGER(HID_T) :: H5P_STRING_CREATE_F
+ INTEGER(HID_T) :: H5P_ATTRIBUTE_CREATE_F
+ INTEGER(HID_T) :: H5P_OBJECT_COPY_F
+ INTEGER(HID_T) :: H5P_LINK_CREATE_F
+ INTEGER(HID_T) :: H5P_LINK_ACCESS_F
EQUIVALENCE(H5P_flags(1), H5P_FILE_CREATE_F)
EQUIVALENCE(H5P_flags(2), H5P_FILE_ACCESS_F)
@@ -391,9 +527,21 @@
EQUIVALENCE(H5P_flags(5), H5P_FILE_MOUNT_F)
EQUIVALENCE(H5P_flags(6), H5P_DEFAULT_F)
EQUIVALENCE(H5P_flags(7), H5P_ROOT_F)
-
+ EQUIVALENCE(H5P_flags(8), H5P_CRT_ORDER_INDEXED_F)
+ EQUIVALENCE(H5P_flags(9), H5P_CRT_ORDER_TRACKED_F)
+ EQUIVALENCE(H5P_flags(10), H5P_OBJECT_CREATE_F)
+ EQUIVALENCE(H5P_flags(11), H5P_DATASET_ACCESS_F)
+ EQUIVALENCE(H5P_flags(12), H5P_GROUP_CREATE_F)
+ EQUIVALENCE(H5P_flags(13), H5P_GROUP_ACCESS_F)
+ EQUIVALENCE(H5P_flags(14), H5P_DATATYPE_CREATE_F)
+ EQUIVALENCE(H5P_flags(15), H5P_DATATYPE_ACCESS_F)
+ EQUIVALENCE(H5P_flags(16), H5P_STRING_CREATE_F)
+ EQUIVALENCE(H5P_flags(17), H5P_ATTRIBUTE_CREATE_F)
+ EQUIVALENCE(H5P_flags(18), H5P_OBJECT_COPY_F)
+ EQUIVALENCE(H5P_flags(19), H5P_LINK_CREATE_F)
+ EQUIVALENCE(H5P_flags(20), H5P_LINK_ACCESS_F)
!
-! H5P flags declaration
+! H5R flags declaration
!
INTEGER, PARAMETER :: H5R_FLAGS_LEN = 2
INTEGER H5R_flags(H5R_FLAGS_LEN)
@@ -592,11 +740,27 @@
!DEC$ ATTRIBUTES DLLEXPORT :: /H5LIB_FLAGS/
!DEC$endif
COMMON /H5LIB_FLAGS/ H5LIB_flags
- INTEGER :: H5_SZIP_EC_OM_F
- INTEGER :: H5_SZIP_NN_OM_F
+ INTEGER :: H5_SZIP_EC_OM_F
+ INTEGER :: H5_SZIP_NN_OM_F
!
- EQUIVALENCE(H5LIB_flags(1), H5_SZIP_EC_OM_F)
- EQUIVALENCE(H5LIB_flags(2), H5_SZIP_NN_OM_F)
+ EQUIVALENCE(H5LIB_flags(1), H5_SZIP_EC_OM_F)
+ EQUIVALENCE(H5LIB_flags(2), H5_SZIP_NN_OM_F)
+
- END MODULE H5GLOBAL
+! General H5 flags declarations
+!
+!!$ INTEGER, PARAMETER :: H5_FLAGS_LEN = 2
+!!$ INTEGER H5_flags(H5_FLAGS_LEN)
+!!$!DEC$if defined(BUILD_HDF5_DLL)
+!!$!DEC$ ATTRIBUTES DLLEXPORT :: /H5_FLAGS/
+!!$!DEC$endif
+!!$ COMMON /H5_FLAGS/ H5_flags
+!!$
+!!$ INTEGER :: _F
+!!$ INTEGER :: H5F_SCOPE_LOCAL_F
+!!$
+!!$ EQUIVALENCE(H5F_flags(1), H5F_SCOPE_GLOBAL_F)
+!!$ EQUIVALENCE(H5F_flags(2), H5F_SCOPE_LOCAL_F)
+
+ END MODULE H5GLOBAL
diff --git a/fortran/src/H5f90proto.h b/fortran/src/H5f90proto.h
index 8099ecc..071b74a 100644
--- a/fortran/src/H5f90proto.h
+++ b/fortran/src/H5f90proto.h
@@ -93,6 +93,9 @@ H5_FCDLL int_f nh5fget_filesize_c(hid_t_f *file_id, hsize_t_f *size);
# define nh5sselect_select_c H5_FC_FUNC_(h5sselect_select_c, H5SSELECT_SELECT_C)
# define nh5sget_select_type_c H5_FC_FUNC_(h5sget_select_type_c, H5SGET_SELECT_TYPE_C)
# define nh5sselect_elements_c H5_FC_FUNC_(h5sselect_elements_c, H5SSELECT_ELEMENTS_C)
+# define nh5sdecode_c H5_FC_FUNC_(h5sdecode_c, H5SDECODE_C)
+# define nh5sencode_c H5_FC_FUNC_(h5sencode_c, H5SENCODE_C)
+# define nh5sextent_equal_c H5_FC_FUNC_(h5sextent_equal_c, H5SEXTENT_EQUAL_C)
H5_FCDLL int_f nh5screate_simple_c ( int_f *rank, hsize_t_f *dims, hsize_t_f *maxdims, hid_t_f *space_id );
H5_FCDLL int_f nh5sclose_c ( hid_t_f *space_id );
@@ -123,6 +126,9 @@ H5_FCDLL int_f nh5sselect_elements_c ( hid_t_f *space_id , int_f *op, size_t_f *
H5_FCDLL int_f nh5scombine_hyperslab_c ( hid_t_f *space_id , int_f *op, hsize_t_f *start, hsize_t_f *count, hsize_t_f *stride, hsize_t_f *block, hid_t_f *hyper_id);
H5_FCDLL int_f nh5scombine_select_c ( hid_t_f *space1_id , int_f *op, hid_t_f *space2_id, hid_t_f *ds_id);
H5_FCDLL int_f nh5sselect_select_c ( hid_t_f *space1_id , int_f *op, hid_t_f *space2_id);
+H5_FCDLL int_f nh5sdecode_c ( _fcd buf, int_f *obj_id );
+H5_FCDLL int_f nh5sencode_c (_fcd buf, hid_t_f *obj_id, size_t_f *nalloc );
+H5_FCDLL int_f nh5sextent_equal_c ( hid_t_f * space1_id, hid_t_f *space2_id, hid_t_f *c_equal);
/*
* Functions from H5Df.c
@@ -207,7 +213,7 @@ H5_FCDLL int_f nh5sselect_select_c ( hid_t_f *space1_id , int_f *op, hid_t_f *sp
# define nh5dget_space_c H5_FC_FUNC_(h5dget_space_c, H5DGET_SPACE_C)
# define nh5dget_type_c H5_FC_FUNC_(h5dget_type_c, H5DGET_TYPE_C)
# define nh5dget_create_plist_c H5_FC_FUNC_(h5dget_create_plist_c, H5DGET_CREATE_PLIST_C)
-# define nh5dextend_c H5_FC_FUNC_(h5dextend_c, H5DEXTEND_C)
+# define nh5dset_extent_c H5_FC_FUNC_(h5dset_extent_c, H5DSET_EXTENT_C)
# define nh5dget_storage_size_c H5_FC_FUNC_(h5dget_storage_size_c, H5DGET_STORAGE_SIZE_C)
# define nh5dvlen_get_max_len_c H5_FC_FUNC_(h5dvlen_get_max_len_c, H5DVLEN_GET_MAX_LEN_C)
# define nh5dwrite_vl_integer_c H5_FC_FUNC_(h5dwrite_vl_integer_c, H5DWRITE_VL_INTEGER_C)
@@ -222,12 +228,13 @@ H5_FCDLL int_f nh5sselect_select_c ( hid_t_f *space1_id , int_f *op, hid_t_f *sp
# define nh5dfill_real_c H5_FC_FUNC_(h5dfill_real_c, H5DFILL_REAL_C)
# define nh5dfill_double_c H5_FC_FUNC_(h5dfill_double_c, H5DFILL_DOUBLE_C)
# define nh5dget_space_status_c H5_FC_FUNC_(h5dget_space_status_c, H5DGET_SPACE_STATUS_C)
+# define nh5dcreate_anon_c H5_FC_FUNC_(h5dcreate_anon_c, H5DCREATE_ANON_C)
-H5_FCDLL int_f nh5dcreate_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id, hid_t_f *space_id, hid_t_f *crt_prp, hid_t_f *dset_id);
-H5_FCDLL int_f nh5dopen_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *dset_id);
+H5_FCDLL int_f nh5dcreate_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id, hid_t_f *space_id,
+ hid_t_f *lcpl_id, hid_t_f *dcpl_id, hid_t_f *dapl_id, hid_t_f *dset_id);
+H5_FCDLL int_f nh5dopen_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *dapl_id, hid_t_f *dset_id);
H5_FCDLL int_f nh5dclose_c ( hid_t_f *dset_id );
-
H5_FCDLL int_f nh5dwrite_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims);
H5_FCDLL int_f nh5dwrite_integer_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims);
H5_FCDLL int_f nh5dwrite_integer_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims);
@@ -322,7 +329,7 @@ H5_FCDLL int_f nh5dreadc_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *m
H5_FCDLL int_f nh5dget_space_c ( hid_t_f *dset_id , hid_t_f *space_id);
H5_FCDLL int_f nh5dget_type_c ( hid_t_f *dset_id , hid_t_f *type_id);
H5_FCDLL int_f nh5dget_create_plist_c ( hid_t_f *dset_id , hid_t_f *plist_id);
-H5_FCDLL int_f nh5dextend_c ( hid_t_f *dset_id , hsize_t_f *dims);
+H5_FCDLL int_f nh5dset_extent_c ( hid_t_f *dset_id , hsize_t_f *dims);
H5_FCDLL 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_FCDLL int_f nh5dget_storage_size_c(hid_t_f *dataset_id, hsize_t_f *size);
H5_FCDLL 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);
@@ -331,6 +338,8 @@ H5_FCDLL int_f nh5dfill_integer_c(void * fill_value, hid_t_f *fill_type_id, hid_
H5_FCDLL int_f nh5dfill_real_c(void * fill_value, hid_t_f *fill_type_id, hid_t_f *space_id, void * buf, hid_t_f *mem_type_id);
H5_FCDLL int_f nh5dfill_double_c(void * fill_value, hid_t_f *fill_type_id, hid_t_f *space_id, void * buf, hid_t_f *mem_type_id);
H5_FCDLL int_f nh5dget_space_status_c ( hid_t_f *dset_id, int_f *flag);
+H5_FCDLL int_f nh5dcreate_anon_c (hid_t_f *loc_id, hid_t_f *type_id, hid_t_f *space_id,
+ hid_t_f *dcpl_id, hid_t_f *dapl_id, hid_t_f *dset_id); /*MSB*/
/*
* Functions from H5Gf.c
@@ -348,10 +357,16 @@ H5_FCDLL int_f nh5dget_space_status_c ( hid_t_f *dset_id, int_f *flag);
# define nh5gget_linkval_c H5_FC_FUNC_(h5gget_linkval_c, H5GGET_LINKVAL_C)
# define nh5gset_comment_c H5_FC_FUNC_(h5gset_comment_c, H5GSET_COMMENT_C)
# define nh5gget_comment_c H5_FC_FUNC_(h5gget_comment_c, H5GGET_COMMENT_C)
+# define nh5gcreate_anon_c H5_FC_FUNC_(h5gcreate_anon_c, H5GCREATE_ANON_C)
+# define nh5gget_create_plist_c H5_FC_FUNC_(h5gget_create_plist_c, H5GGET_CREATE_PLIST_C)
+# define nh5gget_info_c H5_FC_FUNC_(h5gget_info_c, H5GGET_INFO_C)
+# define nh5gget_info_by_idx_c H5_FC_FUNC_(h5gget_info_by_idx_c, H5GGET_INFO_BY_IDX_C)
+# define nh5gget_info_by_name_c H5_FC_FUNC_(h5gget_info_by_name_c, H5GGET_INFO_BY_NAME_C)
-H5_FCDLL int_f nh5gcreate_c (hid_t_f *loc_id, _fcd name, int_f *namelen, size_t_f *size_hint, hid_t_f *grp_id);
-H5_FCDLL int_f nh5gopen_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *grp_id);
+H5_FCDLL int_f nh5gcreate_c (hid_t_f *loc_id, _fcd name, int_f *namelen, size_t_f *size_hint, hid_t_f *grp_id,
+ hid_t_f *lcpl_id, hid_t_f *gcpl_id, hid_t_f *gapl_id);
+H5_FCDLL int_f nh5gopen_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *gapl_id, hid_t_f *grp_id);
H5_FCDLL int_f nh5gclose_c ( hid_t_f *grp_id );
H5_FCDLL int_f nh5gget_obj_info_idx_c (hid_t_f *loc_id, _fcd name, int_f *namelen, int_f *idx, _fcd obj_name, int_f *obj_namelen, int_f *obj_type);
H5_FCDLL int_f nh5gn_members_c (hid_t_f *loc_id, _fcd name, int_f *namelen, int_f *nmembers);
@@ -363,6 +378,14 @@ H5_FCDLL int_f nh5gmove2_c (hid_t_f *src_loc_id, _fcd src_name, int_f *src_namel
H5_FCDLL int_f nh5gget_linkval_c (hid_t_f *loc_id, _fcd name, int_f *namelen, size_t_f *size, _fcd value );
H5_FCDLL int_f nh5gset_comment_c (hid_t_f *loc_id, _fcd name, int_f *namelen, _fcd comment, int_f *commentlen);
H5_FCDLL int_f nh5gget_comment_c (hid_t_f *loc_id, _fcd name, int_f *namelen, size_t_f *bufsize, _fcd comment);
+H5_FCDLL int_f nh5gcreate_anon_c (hid_t_f *loc_id, hid_t_f *gcpl_id, hid_t_f *gapl_id, hid_t_f *grp_id); /*MSB*/
+H5_FCDLL int_f nh5gget_create_plist_c(hid_t_f *grp_id, hid_t_f *gcpl_id ); /*MSB*/
+H5_FCDLL int_f nh5gget_info_c (hid_t_f *group_id, int_f *storage_type, int_f *nlinks, int_f *max_corder); /*MSB*/
+H5_FCDLL int_f nh5gget_info_by_idx_c(hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen,
+ hid_t_f *index_type, hid_t_f *order, hsize_t_f *n, hid_t_f *lapl_id,
+ int_f *storage_type, int_f *nlinks, int_f *max_corder); /*MSB*/
+H5_FCDLL int_f nh5gget_info_by_name_c(hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen, hid_t_f *lapl_id,
+ int_f *storage_type, int_f *nlinks, int_f *max_corder); /*MSB*/
/*
* Functions from H5Af.c
@@ -444,9 +467,25 @@ H5_FCDLL int_f nh5gget_comment_c (hid_t_f *loc_id, _fcd name, int_f *namelen, si
# define nh5aget_type_c H5_FC_FUNC_(h5aget_type_c, H5AGET_TYPE_C)
# define nh5aget_num_attrs_c H5_FC_FUNC_(h5aget_num_attrs_c, H5AGET_NUM_ATTRS_C)
# define nh5adelete_c H5_FC_FUNC_(h5adelete_c, H5ADELETE_C)
+# define nh5aget_storage_size_c H5_FC_FUNC_(h5aget_storage_size_c, H5AGET_STORAGE_SIZE_C) /* MSB */
+# define nh5arename_by_name_c H5_FC_FUNC_(h5arename_by_name_c, H5ARENAME_BY_NAME_C) /* MSB */
+# define nh5aopen_c H5_FC_FUNC_(h5aopen_c, H5AOPEN_C) /* MSB */
+# define nh5adelete_by_name_c H5_FC_FUNC_(h5adelete_by_name_c,H5ADELETE_BY_NAME_C) /* MSB */
+# define nh5adelete_by_idx_c H5_FC_FUNC_(h5adelete_by_idx_c,H5ADELETE_BY_IDX_C) /* MSB */
+# define nh5aget_name_by_idx_c H5_FC_FUNC_(h5aget_name_by_idx_c,H5AGET_NAME_BY_IDX_C) /* MSB */
+# define nh5aget_create_plist_c H5_FC_FUNC_(h5aget_create_plist_c,H5AGET_CREATE_PLIST_C) /* MSB */
+# define nh5aopen_by_idx_c H5_FC_FUNC_(h5aopen_by_idx_c,H5AOPEN_BY_IDX_C) /* MSB */
+# define nh5aget_info_c H5_FC_FUNC_(h5aget_info_c,H5AGET_INFO_C) /* MSB */
+# define nh5aget_info_by_idx_c H5_FC_FUNC_(h5aget_info_by_idx_c,H5AGET_INFO_BY_IDX_C) /* MSB */
+# define nh5aget_info_by_name_c H5_FC_FUNC_(h5aget_info_by_name_c,H5AGET_INFO_BY_NAME_C) /* MSB */
+# define nh5aget_info_by_name_c H5_FC_FUNC_(h5aget_info_by_name_c,H5AGET_INFO_BY_NAME_C) /* MSB */
+# define nh5acreate_by_name_c H5_FC_FUNC_(h5acreate_by_name_c,H5ACREATE_BY_NAME_C) /* MSB */
+# define nh5aexists_c H5_FC_FUNC_(h5aexists_c,H5AEXISTS_C) /* MSB */
+# define nh5aexists_by_name_c H5_FC_FUNC_(h5aexists_by_name_c,H5AEXISTS_BY_NAME_C) /* MSB */
+# define nh5aopen_by_name_c H5_FC_FUNC_(h5aopen_by_name_c,H5AOPEN_BY_NAME_C) /* MSB */
+# define nh5arename_c H5_FC_FUNC_(h5arename_c,H5ARENAME_C) /* MSB */
-
-H5_FCDLL int_f nh5acreate_c (hid_t_f *obj_id, _fcd name, size_t_f *namelen, hid_t_f *type_id, hid_t_f *space_id, hid_t_f *crt_prp, hid_t_f *attr_id);
+H5_FCDLL int_f nh5acreate_c (hid_t_f *obj_id, _fcd name, size_t_f *namelen, hid_t_f *type_id, hid_t_f *space_id, hid_t_f *crt_prp, hid_t_f *aapl, hid_t_f *attr_id);
H5_FCDLL int_f nh5aopen_name_c (hid_t_f *obj_id, _fcd name, size_t_f *namelen, hid_t_f *attr_id);
H5_FCDLL int_f nh5awritec_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims);
H5_FCDLL int_f nh5awritec_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims);
@@ -523,6 +562,45 @@ H5_FCDLL int_f nh5aget_space_c (hid_t_f *attr_id, hid_t_f *space_id);
H5_FCDLL int_f nh5aget_type_c (hid_t_f *attr_id, hid_t_f *type_id);
H5_FCDLL int_f nh5aget_num_attrs_c (hid_t_f *obj_id, int_f *attr_num);
H5_FCDLL int_f nh5aget_name_c(hid_t_f *attr_id, size_t_f *size, _fcd buf);
+H5_FCDLL int_f nh5aget_storage_size_c ( hid_t_f *attr_id, hsize_t_f *size ); /* MSB */
+H5_FCDLL int_f nh5arename_by_name_c ( hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen,
+ _fcd old_attr_name, size_t_f *old_attr_namelen,
+ _fcd new_attr_name, size_t_f *new_attr_namelen,
+ hid_t_f *lapl_id ); /* MSB */
+H5_FCDLL int_f nh5aopen_c ( hid_t_f *obj_id, _fcd attr_name, size_t_f *attr_namelen,
+ hid_t_f *aapl_id, hid_t_f *attr_id); /* MSB */
+H5_FCDLL int_f nh5adelete_by_name_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen,
+ _fcd attr_name, size_t_f *attr_namelen, hid_t_f *lapl_id); /* MSB */
+H5_FCDLL int_f nh5adelete_by_idx_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen,
+ int_f *idx_type, int_f *order, size_t_f *n, hid_t_f *lapl_id); /* MSB */
+H5_FCDLL int_f nh5aget_name_by_idx_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen,
+ int_f *idx_type, int_f *order, size_t_f *n, _fcd name,
+ size_t_f *size, hid_t_f *lapl_id); /* MSB */
+H5_FCDLL int_f nh5aget_create_plist_c ( hid_t_f *attr_id, hid_t_f *creation_prop_id ); /* MSB */
+H5_FCDLL int_f nh5aopen_by_idx_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen,
+ int_f *idx_type, int_f *order, size_t_f *n, hid_t_f *aapl_id, hid_t_f *lapl_id, hid_t_f *attr_id); /* MSB */
+H5_FCDLL int_f nh5aget_info_c (hid_t_f *loc_id, int_f *corder_valid, int_f *corder,
+ int_f *cset, hsize_t_f *data_size ); /* MSB */
+H5_FCDLL int_f nh5aget_info_by_idx_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen,
+ int_f *idx_type, int_f *order, size_t_f *n, hid_t_f *lapl_id,
+ int_f *corder_valid, int_f *corder,
+ int_f *cset, hsize_t_f *data_size ); /* MSB */
+H5_FCDLL int_f nh5aget_info_by_name_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen,
+ _fcd attr_name, size_t_f *attr_namelen, hid_t_f *lapl_id,
+ int_f *corder_valid, int_f *corder,
+ int_f *cset, hsize_t_f *data_size ); /* MSB */
+H5_FCDLL int_f nh5acreate_by_name_c(hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen,
+ _fcd attr_name, size_t_f *attr_namelen, hid_t_f *type_id,
+ hid_t_f *space_id, hid_t_f *acpl_id, hid_t_f *aapl_id,
+ hid_t_f *lapl_id, hid_t_f *attr_id ); /* MSB */
+H5_FCDLL int_f nh5aexists_c (hid_t_f *obj_id, _fcd name, size_t_f *namelen, hid_t_f *attr_exists); /* MSB */
+H5_FCDLL int_f nh5aexists_by_name_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, _fcd attr_name, size_t_f *attr_namelen,
+ hid_t_f *lapl_id, hid_t_f *attr_exists); /* MSB */
+H5_FCDLL int_f nh5aopen_by_name_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, _fcd attr_name, size_t_f *attr_namelen,
+ hid_t_f *aapl_id, hid_t_f *lapl_id, hid_t_f *attr_id); /* MSB */
+H5_FCDLL int_f nh5arename_c( hid_t_f *loc_id,
+ _fcd old_attr_name, size_t_f *old_attr_namelen,
+ _fcd new_attr_name, size_t_f *new_attr_namelen); /* MSB */
/*
* Functions form H5Tf.c file
@@ -583,11 +661,15 @@ H5_FCDLL int_f nh5aget_name_c(hid_t_f *attr_id, size_t_f *size, _fcd buf);
# define nh5tvlen_create_c H5_FC_FUNC_(h5tvlen_create_c, H5TVLEN_CREATE_C)
# define nh5tis_variable_str_c H5_FC_FUNC_(h5tis_variable_str_c, H5TIS_VARIABLE_STR_C)
# define nh5tget_member_class_c H5_FC_FUNC_(h5tget_member_class_c, H5TGET_MEMBER_CLASS_C)
-
+# define nh5tcommit_anon_c H5_FC_FUNC_(h5tcommit_anon_c, H5TCOMMIT_ANON_C)
+# define nh5tdecode_c H5_FC_FUNC_(h5tdecode_c, H5TDECODE_C)
+# define nh5tencode_c H5_FC_FUNC_(h5tencode_c, H5TENCODE_C)
+# define nh5tget_create_plist_c H5_FC_FUNC_(h5tget_create_plist_c, H5TGET_CREATE_PLIST_C)
+# define nh5tcompiler_conv_c H5_FC_FUNC_(h5tcompiler_conv_c, H5TCOMPILER_CONV_C)
H5_FCDLL int_f nh5tcreate_c(int_f *class, size_t_f *size, hid_t_f *type_id);
-H5_FCDLL int_f nh5topen_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id);
-H5_FCDLL int_f nh5tcommit_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id);
+H5_FCDLL int_f nh5topen_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id, hid_t_f *tapl_id );
+H5_FCDLL int_f nh5tcommit_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id, hid_t_f *lcpl_id, hid_t_f *tcpl_id, hid_t_f *tapl_id);
H5_FCDLL int_f nh5tclose_c ( hid_t_f *type_id );
H5_FCDLL int_f nh5tequal_c ( hid_t_f *type1_id , hid_t_f *type2_id, int_f *c_flag);
H5_FCDLL int_f nh5tcopy_c ( hid_t_f *type_id , hid_t_f *new_type_id);
@@ -596,7 +678,7 @@ H5_FCDLL int_f nh5tget_order_c ( hid_t_f *type_id , int_f *order);
H5_FCDLL int_f nh5tset_order_c ( hid_t_f *type_id , int_f *order);
H5_FCDLL int_f nh5tget_size_c ( hid_t_f *type_id , size_t_f *size);
H5_FCDLL int_f nh5tset_size_c ( hid_t_f *type_id , size_t_f *size);
-H5_FCDLL int_f nh5tcommitted_c (hid_t_f *type_id);
+H5_FCDLL int_f nh5tcommitted_c (hid_t_f *dtype_id);
H5_FCDLL int_f nh5tget_precision_c ( hid_t_f *type_id , size_t_f *precision);
H5_FCDLL int_f nh5tset_precision_c ( hid_t_f *type_id , size_t_f *precision);
H5_FCDLL int_f nh5tget_offset_c ( hid_t_f *type_id , size_t_f *offset);
@@ -641,7 +723,24 @@ H5_FCDLL int_f nh5tget_super_c ( hid_t_f *type_id , hid_t_f *base_type_id);
H5_FCDLL int_f nh5tvlen_create_c ( hid_t_f *type_id , hid_t_f *vltype_id);
H5_FCDLL int_f nh5tis_variable_str_c ( hid_t_f *type_id , int_f *flag );
H5_FCDLL int_f nh5tget_member_class_c ( hid_t_f *type_id , int_f *member_no, int_f *class );
+H5_FCDLL int_f nh5tcommit_anon_c(hid_t_f *loc_id, hid_t_f *dtype_id, hid_t_f *tcpl_id, hid_t_f *tapl_id);
+H5_FCDLL int_f nh5tdecode_c ( _fcd buf, int_f *obj_id );
+H5_FCDLL int_f nh5tencode_c (_fcd buf, hid_t_f *obj_id, size_t_f *nalloc );
+H5_FCDLL int_f nh5tget_create_plist_c ( hid_t_f *dtype_id, hid_t_f *dtpl_id);
+H5_FCDLL int_f nh5tcompiler_conv_c ( hid_t_f *src_id, hid_t_f *dst_id, int_f *c_flag);
+
+
+/*
+ * Functions from H5Of.c
+ */
+
+# define nh5olink_c H5_FC_FUNC_(h5olink_c, H5OLINK_C)
+# define nh5oopen_c H5_FC_FUNC_(h5oopen_c, H5OOPEN_C)
+
+H5_FCDLL int_f nh5oopen_c (hid_t_f *loc_id, _fcd name, size_t_f *namelen, hid_t_f *lapl_id, hid_t_f *obj_id);
+H5_FCDLL int_f nh5olink_c (hid_t_f *object_id, hid_t_f *new_loc_id, _fcd name, size_t_f *namelen,
+ hid_t_f *lcpl_id, hid_t_f *lapl_id);
/*
* Functions from H5Pf.c
*/
@@ -768,7 +867,37 @@ H5_FCDLL int_f nh5tget_member_class_c ( hid_t_f *type_id , int_f *member_no, in
# define nh5pset_fapl_multi_sc H5_FC_FUNC_(h5pset_fapl_multi_sc, H5PSET_FAPL_MULTI_SC)
# define nh5pset_szip_c H5_FC_FUNC_(h5pset_szip_c, H5PSET_SZIP_C)
# define nh5pall_filters_avail_c H5_FC_FUNC_(h5pall_filters_avail_c, H5PALL_FILTERS_AVAIL_C)
-
+# define nh5pget_attr_phase_change_c H5_FC_FUNC_(h5pget_attr_phase_change_c, H5PGET_ATTR_PHASE_CHANGE_C) /* MSB */
+# define nh5pset_attr_creation_order_c H5_FC_FUNC_(h5pset_attr_creation_order_c, H5PSET_ATTR_CREATION_ORDER_C) /* MSB */
+# define nh5pset_shared_mesg_nindexes_c H5_FC_FUNC_(h5pset_shared_mesg_nindexes_c, H5PSET_SHARED_MESG_NINDEXES_C) /* MSB */
+# define nh5pset_shared_mesg_index_c H5_FC_FUNC_(h5pset_shared_mesg_index_c,H5PSET_SHARED_MESG_INDEX_C) /* MSB */
+# define nh5pget_attr_creation_order_c H5_FC_FUNC_(h5pget_attr_creation_order_c,H5PGET_ATTR_CREATION_ORDER_C) /* MSB */
+# define nh5pset_libver_bounds_c H5_FC_FUNC_(h5pset_libver_bounds_c,H5PSET_LIBVER_BOUNDS_C) /* MSB */
+# define nh5pset_link_creation_order_c H5_FC_FUNC_(h5pset_link_creation_order_c, H5PSET_LINK_CREATION_ORDER_C) /* MSB */
+# define nh5pget_link_phase_change_c H5_FC_FUNC_(h5pget_link_phase_change_c, H5PGET_LINK_PHASE_CHANGE_C) /* MSB */
+# define nh5pget_obj_track_times_c H5_FC_FUNC_(h5pget_obj_track_times_c, H5PGET_OBJ_TRACK_TIMES_C) /* MSB */
+# define nh5pset_obj_track_times_c H5_FC_FUNC_(h5pset_obj_track_times_c, H5PSET_OBJ_TRACK_TIMES_C) /* MSB */
+# define nh5pset_create_inter_group_c H5_FC_FUNC_(h5pset_create_inter_group_c,H5PSET_CREATE_INTER_GROUP_C) /* MSB */
+# define nh5pget_create_inter_group_c H5_FC_FUNC_(h5pget_create_inter_group_c,H5PGET_CREATE_INTER_GROUP_C) /* MSB */
+# define nh5pget_link_creation_order_c H5_FC_FUNC_(h5pget_link_creation_order_c,H5PGET_LINK_CREATION_ORDER_C) /* MSB */
+# define nh5pset_char_encoding_c H5_FC_FUNC_(h5pset_char_encoding_c, H5PSET_CHAR_ENCODING_C) /* MSB */
+# define nh5pget_char_encoding_c H5_FC_FUNC_(h5pget_char_encoding_c, H5PGET_CHAR_ENCODING_C) /* MSB */
+# define nh5pset_copy_object_c H5_FC_FUNC_(h5pset_copy_object_c, H5PSET_COPY_OBJECT_C) /* MSB */
+# define nh5pget_copy_object_c H5_FC_FUNC_(h5pget_copy_object_c, H5PGET_COPY_OBJECT_C) /* MSB */
+# define nh5pget_data_transform_c H5_FC_FUNC_(h5pget_data_transform_c, H5PGET_DATA_TRANSFORM_C) /* MSB */
+# define nh5pset_data_transform_c H5_FC_FUNC_(h5pset_data_transform_c, H5PSET_DATA_TRANSFORM_C) /* MSB */
+# define nh5pget_local_heap_size_hint_c H5_FC_FUNC_(h5pget_local_heap_size_hint_c, H5PGET_LOCAL_HEAP_SIZE_HINT_C) /* MSB */
+# define nh5pget_est_link_info_c H5_FC_FUNC_(h5pget_est_link_info_c,H5PGET_EST_LINK_INFO_C) /* MSB */
+# define nh5pset_est_link_info_c H5_FC_FUNC_(h5pset_est_link_info_c,H5PSET_EST_LINK_INFO_C) /* MSB */
+# define nh5pset_local_heap_size_hint_c H5_FC_FUNC_(h5pset_local_heap_size_hint_c, H5PSET_LOCAL_HEAP_SIZE_HINT_C) /* MSB */
+# define nh5pset_link_phase_change_c H5_FC_FUNC_(h5pset_link_phase_change_c, H5PSET_LINK_PHASE_CHANGE_C) /* MSB */
+# define nh5pset_fapl_direct_c H5_FC_FUNC_(h5pset_fapl_direct_c, H5PSET_FAPL_DIRECT_C) /* MSB */
+# define nh5pget_fapl_direct_c H5_FC_FUNC_(h5pget_fapl_direct_c, H5PGET_FAPL_DIRECT_C) /* MSB */
+# define nh5pset_attr_phase_change_c H5_FC_FUNC_(h5pset_attr_phase_change_c, H5PSET_ATTR_PHASE_CHANGE_C) /* MSB */
+# define nh5pset_nbit_c H5_FC_FUNC_(h5pset_nbit_c, H5PSET_NBIT_C) /* MSB */
+# define nh5pset_scaleoffset_c H5_FC_FUNC_(h5pset_scaleoffset_c, H5PSET_SCALEOFFSET_C) /* MSB */
+# define nh5pset_nlinks_c H5_FC_FUNC_(h5pset_nlinks_c, H5PSET_NLINKS_C) /* MSB */
+# define nh5pget_nlinks_c H5_FC_FUNC_(h5pget_nlinks_c, H5PGET_NLINKS_C) /* MSB */
H5_FCDLL int_f nh5pcreate_c ( hid_t_f *class, hid_t_f *prp_id );
H5_FCDLL int_f nh5pclose_c ( hid_t_f *prp_id );
@@ -894,7 +1023,37 @@ H5_FCDLL int_f nh5pset_fapl_multi_sc ( hid_t_f *prp_id , int_f *flag);
H5_FCDLL int_f nh5pset_szip_c ( hid_t_f *prp_id , int_f *options_mask, int_f *pixels_per_block);
H5_FCDLL int_f nh5pall_filters_avail_c ( hid_t_f *prp_id , int_f *status);
H5_FCDLL int_f nh5pfill_value_defined_c ( hid_t_f *prp_id , int_f *flag);
-
+H5_FCDLL int_f nh5pget_attr_phase_change_c (hid_t_f *ocpl_id, int_f *max_compact, int_f *min_dense ); /* MSB */
+H5_FCDLL int_f nh5pset_attr_creation_order_c(hid_t_f *ocpl_id, int_f *crt_order_flags ); /* MSB */
+H5_FCDLL int_f nh5pset_shared_mesg_nindexes_c(hid_t_f *plist_id, int_f *nindexes ); /* MSB */
+H5_FCDLL int_f nh5pset_shared_mesg_index_c(hid_t_f *fcpl_id, int_f *index_num, int_f *mesg_type_flags, int_f *min_mesg_size); /* MSB */
+H5_FCDLL int_f nh5pget_attr_creation_order_c(hid_t_f *ocpl_id, int_f *crt_order_flags); /* MSB */
+H5_FCDLL int_f nh5pset_libver_bounds_c(hid_t_f *fapl_id, int_f *low, int_f *high); /* MSB */
+H5_FCDLL int_f nh5pset_link_creation_order_c(hid_t_f *gcpl_id, int_f *crt_order_flags); /* MSB */
+H5_FCDLL int_f nh5pget_link_phase_change_c(hid_t_f *gcpl_id, int_f *max_compact, int_f *min_dense ); /* MSB */
+H5_FCDLL int_f nh5pget_obj_track_times_c(hid_t_f *plist_id, int_f *flag); /* MSB */
+H5_FCDLL int_f nh5pset_obj_track_times_c(hid_t_f *plist_id, int_f *flag); /* MSB */
+H5_FCDLL int_f nh5pset_create_inter_group_c(hid_t_f *lcpl_id, int_f *crt_intermed_group); /* MSB */
+H5_FCDLL int_f nh5pget_create_inter_group_c(hid_t_f *lcpl_id, int_f *crt_intermed_group); /* MSB */
+H5_FCDLL int_f nh5pget_link_creation_order_c(hid_t_f *gcpl_id, int_f *crt_order_flags); /* MSB */
+H5_FCDLL int_f nh5pset_char_encoding_c(hid_t_f *plist_id, int_f *encoding); /* MSB */
+H5_FCDLL int_f nh5pget_char_encoding_c(hid_t_f *plist_id, int_f *encoding); /* MSB */
+H5_FCDLL int_f nh5pset_copy_object_c(hid_t_f *ocp_plist_id, int_f *copy_options); /* MSB */
+H5_FCDLL int_f nh5pget_copy_object_c(hid_t_f *ocp_plist_id, int_f *copy_options); /* MSB */
+H5_FCDLL int_f nh5pget_data_transform_c(hid_t_f *plist_id, _fcd expression, int_f *expression_len, size_t_f *size); /* MSB */
+H5_FCDLL int_f nh5pset_data_transform_c(hid_t_f *plist_id, _fcd expression, int_f *expression_len); /* MSB */
+H5_FCDLL int_f nh5pget_local_heap_size_hint_c(hid_t_f *gcpl_id, size_t_f *size_hint); /* MSB */
+H5_FCDLL int_f nh5pget_est_link_info_c(hid_t_f *gcpl_id, int_f *est_num_entries, int_f *est_name_len); /* MSB */
+H5_FCDLL int_f nh5pset_local_heap_size_hint_c(hid_t_f *gcpl_id, size_t_f *size_hint); /* MSB */
+H5_FCDLL int_f nh5pset_est_link_info_c(hid_t_f *gcpl_id, int_f *est_num_entries, int_f *est_name_len); /* MSB */
+H5_FCDLL int_f nh5pset_link_phase_change_c(hid_t_f *gcpl_id, int_f *max_compact, int_f *min_dense ); /* MSB */
+H5_FCDLL int_f nh5pset_fapl_direct_c(hid_t_f *fapl_id, size_t_f *alignment, size_t_f *block_size, size_t_f *cbuf_size ); /* MSB */
+H5_FCDLL int_f nh5pget_fapl_direct_c(hid_t_f *fapl_id, size_t_f *alignment, size_t_f *block_size, size_t_f *cbuf_size ); /* MSB */
+H5_FCDLL int_f nh5pset_attr_phase_change_c (hid_t_f *ocpl_id, int_f *max_compact, int_f *min_dense ); /* MSB */
+H5_FCDLL int_f nh5pset_nbit_c(hid_t_f *plist_id ); /* MSB */
+H5_FCDLL int_f nh5pset_scaleoffset_c(hid_t_f *plist_id, int_f *scale_type, int_f *scale_factor ); /* MSB */
+H5_FCDLL int_f nh5pset_nlinks_c(hid_t_f *lapl_id, size_t_f *nlinks); /* MSB */
+H5_FCDLL int_f nh5pget_nlinks_c(hid_t_f *lapl_id, size_t_f *nlinks); /* MSB */
/*
* Functions frome H5Rf.c
*/
@@ -904,6 +1063,8 @@ H5_FCDLL int_f nh5pfill_value_defined_c ( hid_t_f *prp_id , int_f *flag);
# define nh5rdereference_object_c H5_FC_FUNC_(h5rdereference_object_c, H5RDEREFERENCE_OBJECT_C)
# define nh5rget_region_region_c H5_FC_FUNC_(h5rget_region_region_c, H5RGET_REGION_REGION_C)
# define nh5rget_object_type_obj_c H5_FC_FUNC_(h5rget_object_type_obj_c, H5RGET_OBJECT_TYPE_OBJ_C)
+# define nh5rget_name_object_c H5_FC_FUNC_(h5rget_name_object_c, H5RGET_NAME_OBJECT_C)
+# define nh5rget_name_region_c H5_FC_FUNC_(h5rget_name_region_c, H5RGET_NAME_REGION_C)
H5_FCDLL int_f nh5rcreate_object_c (haddr_t_f *ref, hid_t_f *loc_id, _fcd name, int_f *namelen);
@@ -912,7 +1073,8 @@ H5_FCDLL int_f nh5rdereference_region_c (hid_t_f *dset_id, int_f *ref, hid_t_f *
H5_FCDLL int_f nh5rdereference_object_c (hid_t_f *dset_id, haddr_t_f *ref, hid_t_f *obj_id);
H5_FCDLL int_f nh5rget_region_region_c (hid_t_f *dset_id, int_f *ref, hid_t_f *space_id);
H5_FCDLL int_f nh5rget_object_type_obj_c (hid_t_f *dset_id, haddr_t_f *ref, int_f *obj_type);
-
+H5_FCDLL int_f nh5rget_name_object_c (hid_t_f *loc_id, haddr_t_f *ref, _fcd name, size_t_f *name_len, size_t_f *size_default);
+H5_FCDLL int_f nh5rget_name_region_c (hid_t_f *loc_id, int_f *ref, _fcd name, size_t_f *name_len, size_t_f *size_default);
/*
* Functions from H5If.c
*/
@@ -968,10 +1130,10 @@ H5_FCDLL int_f nh5close_c(void);
H5_FCDLL int_f nh5init_types_c(hid_t_f *types, hid_t_f * floatingtypes, hid_t_f * integertypes);
H5_FCDLL int_f nh5close_types_c(hid_t_f *types, int_f *lentypes, hid_t_f * floatingtypes, int_f * floatinglen, hid_t_f * integertypes, int_f * integerlen);
H5_FCDLL int_f nh5init_flags_c( int_f *h5d_flags, int_f *h5f_flags,
- int_f *h5fd_flags, hid_t_f *h5fd_hid_flags,
- int_f *h5g_flags, int_f *h5i_flags,
- hid_t_f *h5p_flags, int_f *h5r_flags, int_f *h5s_flags,
- int_f *h5t_flags, int_f *h5z_flags);
+ int_f *h5fd_flags, hid_t_f *h5fd_hid_flags,
+ int_f *h5g_flags, int_f *h5i_flags, int_f *h5l_flags, int_f *h5o_flags,
+ hid_t_f *h5p_flags, int_f *h5r_flags, int_f *h5s_flags,
+ int_f *h5t_flags, int_f *h5z_flags, int_f *h5_generic_flags);
H5_FCDLL int_f nh5init1_flags_c(int_f *h5lib_flags);
H5_FCDLL int_f nh5get_libversion_c(int_f *majnum, int_f *minnum, int_f *relnum);
H5_FCDLL int_f nh5check_version_c(int_f *majnum, int_f *minnum, int_f *relnum);
@@ -991,4 +1153,55 @@ H5_FCDLL int_f nh5zfilter_avail_c (int_f *filter, int_f *flag);
H5_FCDLL int_f nh5zget_filter_info_c (int_f *filter, int_f *flag);
+/*
+ * Functions from H5Lf.c
+ */
+# define nh5lcopy_c H5_FC_FUNC_(h5lcopy_c, H5LCOPY_C) /*MSB*/
+# define nh5lcreate_external_c H5_FC_FUNC_(h5lcreate_external_c, H5LCREATE_EXTERNAL_C) /*MSB*/
+# define nh5lcreate_hard_c H5_FC_FUNC_(h5lcreate_hard_c, H5LCREATE_HARD_C) /*MSB*/
+# define nh5lcreate_soft_c H5_FC_FUNC_(h5lcreate_soft_c, H5LCREATE_SOFT_C) /*MSB*/
+# define nh5ldelete_c H5_FC_FUNC_(h5ldelete_c, H5LDELETE_C) /*MSB*/
+# define nh5ldelete_by_idx_c H5_FC_FUNC_(h5ldelete_by_idx_c, H5LDELETE_BY_IDX_C) /*MSB*/
+# define nh5lexists_c H5_FC_FUNC_(h5lexists_c, H5LEXISTS_C) /*MSB*/
+# define nh5lget_info_c H5_FC_FUNC_(h5lget_info_c, H5LGET_INFO_C) /*MSB*/
+# define nh5lget_info_by_idx_c H5_FC_FUNC_(h5lget_info_by_idx_c, H5LGET_INFO_BY_IDX_C) /*MSB*/
+# define nh5lis_registered_c H5_FC_FUNC_(h5lis_registered_c, H5LIS_REGISTERED_C) /*MSB*/
+# define nh5lmove_c H5_FC_FUNC_(h5lmove_c, H5LMOVE_C) /* MSB */
+# define nh5lget_name_by_idx_c H5_FC_FUNC_(h5lget_name_by_idx_c, H5LGET_NAME_BY_IDX_C) /* MSB */
+# define nh5lget_val_c H5_FC_FUNC_(h5lget_val_c, H5LGET_VAL_C) /* MSB */
+
+H5_FCDLL int_f nh5lcopy_c(hid_t_f *src_loc_id, _fcd src_name, size_t_f *src_namelen, hid_t_f *dest_loc_id,
+ _fcd dest_name, size_t_f *dest_namelen,
+ hid_t_f *lcpl_id, hid_t_f *lapl_id); /*MSB*/
+H5_FCDLL int_f nh5lcreate_external_c(_fcd file_name, size_t_f *file_namelen, _fcd obj_name, size_t_f *obj_namelen,
+ hid_t_f *link_loc_id, _fcd link_name, size_t_f *link_namelen,
+ hid_t_f *lcpl_id, hid_t_f *lapl_id); /*MSB*/
+H5_FCDLL int_f nh5lcreate_hard_c(hid_t_f *obj_loc_id, _fcd obj_name, size_t_f *obj_namelen,
+ hid_t_f *link_loc_id,
+ _fcd link_name, size_t_f *link_namelen,
+ hid_t_f *lcpl_id, hid_t_f *lapl_id ); /*MSB*/
+H5_FCDLL int_f nh5lcreate_soft_c(_fcd target_path, size_t_f *target_path_len,
+ hid_t_f *link_loc_id,
+ _fcd link_name, size_t_f *link_name_len,
+ hid_t_f *lcpl_id, hid_t_f *lapl_id ); /*MSB*/
+H5_FCDLL int_f nh5ldelete_c( hid_t_f *loc_id, _fcd name, size_t_f *namelen, hid_t_f *lapl_id ); /*MSB*/
+H5_FCDLL int_f nh5ldelete_by_idx_c (hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen,
+ int_f *index_field, int_f *order, size_t_f *n, hid_t_f *lapl_id); /*MSB*/
+H5_FCDLL int_f nh5lexists_c (hid_t_f *loc_id, _fcd name, size_t_f *namelen, hid_t_f *lapl_id, hid_t_f *link_exists); /*MSB*/
+H5_FCDLL int_f nh5lget_info_c (hid_t_f *link_loc_id, _fcd link_name, size_t_f *link_namelen,
+ int_f *cset, int_f *corder, int_f *corder_valid, int_f *link_type,
+ int_f *address, hsize_t_f *link_len,
+ hid_t_f *lapl_id); /*MSB*/
+H5_FCDLL int_f nh5lget_info_by_idx_c(hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen,
+ int_f *index_field, int_f *order, hsize_t_f *n,
+ int_f *corder_valid, int_f *corder, int_f *cset, hsize_t_f *data_size, hid_t_f *lapl_id); /*MSB*/
+H5_FCDLL int_f nh5lis_registered_c(int_f *link_cls_id); /*MSB*/
+H5_FCDLL int_f nh5lmove_c(hid_t_f *src_loc_id, _fcd src_name, size_t_f *src_namelen, hid_t_f *dest_loc_id,
+ _fcd dest_name, size_t_f *dest_namelen, hid_t_f *lcpl_id, hid_t_f *lapl_id); /*MSB*/
+H5_FCDLL int_f nh5lget_name_by_idx_c(hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen,
+ int_f *index_field, int_f *order, hsize_t_f *n,
+ size_t_f *size, _fcd name, hid_t_f *lapl_id); /*MSB*/
+H5_FCDLL int_f nh5lget_val_c(hid_t_f *link_loc_id, _fcd link_name, size_t_f *link_namelen, size_t_f *size,
+ void *linkval_buff, hid_t_f *lapl_id) ;
+
#endif /* _H5f90proto_H */
diff --git a/fortran/src/HDF5.f90 b/fortran/src/HDF5.f90
index b24d295..04ad33d 100644
--- a/fortran/src/HDF5.f90
+++ b/fortran/src/HDF5.f90
@@ -13,18 +13,21 @@
! access to either file, you may request a copy from help@hdfgroup.org. *
! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!
- MODULE HDF5
- USE H5GLOBAL
- USE H5F
- USE H5G
- USE H5E
- USE H5I
- USE H5S
- USE H5D
- USE H5A
- USE H5T
- USE H5P
- USE H5R
- USE H5Z
- USE H5LIB
- END MODULE HDF5
+MODULE HDF5
+ USE H5GLOBAL
+ USE H5F
+ USE H5G
+ USE H5E
+ USE H5I
+ USE H5L
+ USE H5S
+ USE H5D
+ USE H5A
+ USE H5T
+ USE H5O
+ USE H5P
+ USE H5R
+ USE H5Z
+ USE H5LIB
+
+END MODULE HDF5
diff --git a/fortran/src/HDF5mpio.f90 b/fortran/src/HDF5mpio.f90
index 95c6273..59ec309 100644
--- a/fortran/src/HDF5mpio.f90
+++ b/fortran/src/HDF5mpio.f90
@@ -19,10 +19,12 @@
USE H5E
USE H5G
USE H5I
+ USE H5L
USE H5S
USE H5D
USE H5A
USE H5T
+ USE H5O
USE H5P
USE H5FDMPIO
USE H5R
diff --git a/fortran/src/Makefile.am b/fortran/src/Makefile.am
index a4f9025..4216f34 100644
--- a/fortran/src/Makefile.am
+++ b/fortran/src/Makefile.am
@@ -48,10 +48,10 @@ endif
# Source files for the library.
libhdf5_fortran_la_SOURCES=H5fortran_flags.f90 H5f90global.f90 \
H5fortran_types.f90 H5_ff.f90 H5Aff.f90 H5Dff.f90 H5Eff.f90 \
- H5Fff.f90 H5Gff.f90 H5Iff.f90 H5Pff.f90 H5Rff.f90 H5Sff.f90 \
+ H5Fff.f90 H5Gff.f90 H5Iff.f90 H5Lff.f90 H5Off.f90 H5Pff.f90 H5Rff.f90 H5Sff.f90 \
H5Tff.f90 H5Zff.f90 \
H5f90kit.c H5_f.c H5Af.c H5Df.c H5Ef.c H5Ff.c H5Gf.c \
- H5If.c H5Pf.c H5Rf.c H5Sf.c H5Tf.c H5Zf.c \
+ H5If.c H5Lf.c H5Of.c H5Pf.c H5Rf.c H5Sf.c H5Tf.c H5Zf.c \
$(PARALLEL_COND_SRC)
# h5fc and libhdf5_fortran.settings are generated during configure.
@@ -167,17 +167,19 @@ H5Eff.lo: $(srcdir)/H5Eff.f90 H5f90global.lo
H5Fff.lo: $(srcdir)/H5Fff.f90 H5f90global.lo
H5Gff.lo: $(srcdir)/H5Gff.f90 H5f90global.lo
H5Iff.lo: $(srcdir)/H5Iff.f90 H5f90global.lo
+H5Lff.lo: $(srcdir)/H5Lff.f90 H5f90global.lo
+H5Off.lo: $(srcdir)/H5Off.f90 H5f90global.lo
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
HDF5.lo: $(srcdir)/HDF5.f90 H5f90global.lo H5Aff.lo \
- H5Dff.lo H5Eff.lo H5Fff.lo H5Gff.lo H5Iff.lo \
+ H5Dff.lo H5Eff.lo H5Fff.lo H5Gff.lo H5Iff.lo H5Lff.lo \
H5Pff.lo H5Rff.lo H5Sff.lo H5Tff.lo H5Zff.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 \
+ H5Dff.lo H5Eff.lo H5Fff.lo H5Gff.lo H5Iff.lo H5Lff.lo \
H5Pff.lo H5Rff.lo H5Sff.lo H5Tff.lo H5Zff.lo H5FDmpioff.lo
include $(top_srcdir)/config/conclude.am
diff --git a/fortran/src/Makefile.in b/fortran/src/Makefile.in
index 31baee2..a51254a 100644
--- a/fortran/src/Makefile.in
+++ b/fortran/src/Makefile.in
@@ -78,19 +78,20 @@ LTLIBRARIES = $(lib_LTLIBRARIES)
libhdf5_fortran_la_LIBADD =
am__libhdf5_fortran_la_SOURCES_DIST = H5fortran_flags.f90 \
H5f90global.f90 H5fortran_types.f90 H5_ff.f90 H5Aff.f90 \
- H5Dff.f90 H5Eff.f90 H5Fff.f90 H5Gff.f90 H5Iff.f90 H5Pff.f90 \
- H5Rff.f90 H5Sff.f90 H5Tff.f90 H5Zff.f90 H5f90kit.c H5_f.c \
- H5Af.c H5Df.c H5Ef.c H5Ff.c H5Gf.c H5If.c H5Pf.c H5Rf.c H5Sf.c \
- H5Tf.c H5Zf.c HDF5.f90 H5FDmpiof.c HDF5mpio.f90 H5FDmpioff.f90
+ H5Dff.f90 H5Eff.f90 H5Fff.f90 H5Gff.f90 H5Iff.f90 H5Lff.f90 \
+ H5Off.f90 H5Pff.f90 H5Rff.f90 H5Sff.f90 H5Tff.f90 H5Zff.f90 \
+ H5f90kit.c H5_f.c H5Af.c H5Df.c H5Ef.c H5Ff.c H5Gf.c H5If.c \
+ H5Lf.c H5Of.c H5Pf.c H5Rf.c H5Sf.c H5Tf.c H5Zf.c HDF5.f90 \
+ H5FDmpiof.c HDF5mpio.f90 H5FDmpioff.f90
@BUILD_PARALLEL_CONDITIONAL_FALSE@am__objects_1 = HDF5.lo
@BUILD_PARALLEL_CONDITIONAL_TRUE@am__objects_1 = H5FDmpiof.lo \
@BUILD_PARALLEL_CONDITIONAL_TRUE@ HDF5mpio.lo H5FDmpioff.lo
am_libhdf5_fortran_la_OBJECTS = H5fortran_flags.lo H5f90global.lo \
H5fortran_types.lo H5_ff.lo H5Aff.lo H5Dff.lo H5Eff.lo \
- H5Fff.lo H5Gff.lo H5Iff.lo H5Pff.lo H5Rff.lo H5Sff.lo H5Tff.lo \
- H5Zff.lo H5f90kit.lo H5_f.lo H5Af.lo H5Df.lo H5Ef.lo H5Ff.lo \
- H5Gf.lo H5If.lo H5Pf.lo H5Rf.lo H5Sf.lo H5Tf.lo H5Zf.lo \
- $(am__objects_1)
+ H5Fff.lo H5Gff.lo H5Iff.lo H5Lff.lo H5Off.lo H5Pff.lo H5Rff.lo \
+ H5Sff.lo H5Tff.lo H5Zff.lo H5f90kit.lo H5_f.lo H5Af.lo H5Df.lo \
+ H5Ef.lo H5Ff.lo H5Gf.lo H5If.lo H5Lf.lo H5Of.lo H5Pf.lo \
+ H5Rf.lo H5Sf.lo H5Tf.lo H5Zf.lo $(am__objects_1)
libhdf5_fortran_la_OBJECTS = $(am_libhdf5_fortran_la_OBJECTS)
PROGRAMS = $(noinst_PROGRAMS)
am_H5fortran_detect_OBJECTS = H5fortran_detect.$(OBJEXT)
@@ -381,10 +382,10 @@ lib_LTLIBRARIES = libhdf5_fortran.la
# Source files for the library.
libhdf5_fortran_la_SOURCES = H5fortran_flags.f90 H5f90global.f90 \
H5fortran_types.f90 H5_ff.f90 H5Aff.f90 H5Dff.f90 H5Eff.f90 \
- H5Fff.f90 H5Gff.f90 H5Iff.f90 H5Pff.f90 H5Rff.f90 H5Sff.f90 \
+ H5Fff.f90 H5Gff.f90 H5Iff.f90 H5Lff.f90 H5Off.f90 H5Pff.f90 H5Rff.f90 H5Sff.f90 \
H5Tff.f90 H5Zff.f90 \
H5f90kit.c H5_f.c H5Af.c H5Df.c H5Ef.c H5Ff.c H5Gf.c \
- H5If.c H5Pf.c H5Rf.c H5Sf.c H5Tf.c H5Zf.c \
+ H5If.c H5Lf.c H5Of.c H5Pf.c H5Rf.c H5Sf.c H5Tf.c H5Zf.c \
$(PARALLEL_COND_SRC)
@@ -536,6 +537,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5Ff.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5Gf.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5If.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5Lf.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5Of.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5Pf.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5Rf.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5Sf.Plo@am__quote@
@@ -869,17 +872,19 @@ H5Eff.lo: $(srcdir)/H5Eff.f90 H5f90global.lo
H5Fff.lo: $(srcdir)/H5Fff.f90 H5f90global.lo
H5Gff.lo: $(srcdir)/H5Gff.f90 H5f90global.lo
H5Iff.lo: $(srcdir)/H5Iff.f90 H5f90global.lo
+H5Lff.lo: $(srcdir)/H5Lff.f90 H5f90global.lo
+H5Off.lo: $(srcdir)/H5Off.f90 H5f90global.lo
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
HDF5.lo: $(srcdir)/HDF5.f90 H5f90global.lo H5Aff.lo \
- H5Dff.lo H5Eff.lo H5Fff.lo H5Gff.lo H5Iff.lo \
+ H5Dff.lo H5Eff.lo H5Fff.lo H5Gff.lo H5Iff.lo H5Lff.lo \
H5Pff.lo H5Rff.lo H5Sff.lo H5Tff.lo H5Zff.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 \
+ H5Dff.lo H5Eff.lo H5Fff.lo H5Gff.lo H5Iff.lo H5Lff.lo \
H5Pff.lo H5Rff.lo H5Sff.lo H5Tff.lo H5Zff.lo H5FDmpioff.lo
# lib/progs/tests targets recurse into subdirectories. build-* targets
diff --git a/fortran/src/README_DEVELOPEMENT b/fortran/src/README_DEVELOPEMENT
new file mode 100644
index 0000000..dc65f47
--- /dev/null
+++ b/fortran/src/README_DEVELOPEMENT
@@ -0,0 +1,36 @@
+Procedure to add a new function:
+
+(1) Edit the fortran/src/H5*ff.f90 file
+(2) Edit the fortran/sr/H5*f.c file
+(3) Edit the fortran/src/H5f90proto.h file
+
+
+
+Procedure:
+(1) Find the struct name you are interested in:
+ (a) src/H5public.h if it is a generic type, i.e. H5_*
+ or
+ (b) src/H5*public.h if is a specific type, i.e. H5*_
+
+(2) Put that structure into an array that will be passed to fortran in:
+ (a) fortran/src/H5_f.c (add to nh5init_flags_c subroutine)
+ (b) edit fortran/src/H5f90proto.h and edit nh5init_flags_c interface call
+
+(3) Edit the function call in fortran/src/H5_ff.f90
+ (a) edit the call FUNCTION h5init_flags_c
+ (b) edit h5init_flags_c call in h5open_f to match the number of arguments passing
+
+(4) add the size of the array and array to fortran/src/H5f90global.f90
+ - must match the size found it H5_f.c
+
+NOTE: To just add a default C value argument, do steps (2a) and (4)
+
+Adding a new file to the repository
+-------------------------------------
+
+Add the name of the file to:
+ (1) Makefile.am located in the same directory as the newfile
+ (2) MANIFEST located in the top level directory
+
+
+If you add a new file, be sure to add it to the MANIFEST located in the top directory