summaryrefslogtreecommitdiffstats
path: root/fortran/src/H5Af.c
diff options
context:
space:
mode:
Diffstat (limited to 'fortran/src/H5Af.c')
-rw-r--r--fortran/src/H5Af.c355
1 files changed, 78 insertions, 277 deletions
diff --git a/fortran/src/H5Af.c b/fortran/src/H5Af.c
index 696b8ed..a25161e 100644
--- a/fortran/src/H5Af.c
+++ b/fortran/src/H5Af.c
@@ -15,6 +15,7 @@
/* This files contains C stubs for H5A Fortran APIs */
#include "H5f90.h"
+#include "H5Eprivate.h"
/*----------------------------------------------------------------------------
* Name: h5acreate_c
@@ -32,47 +33,26 @@
* Modifications:
*---------------------------------------------------------------------------*/
int_f
-nh5acreate_c (hid_t_f *obj_id, _fcd name, int_f *namelen, hid_t_f *type_id, hid_t_f *space_id, hid_t_f *crt_prp, hid_t_f *attr_id)
+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)
{
- int ret_value = -1;
- char *c_name;
- int c_namelen;
- hid_t c_obj_id;
- hid_t c_type_id;
- hid_t c_space_id;
- hid_t c_attr_id;
- hid_t c_crt_prp;
- /*
- * Define creation property
- */
- c_crt_prp = (hid_t)*crt_prp;
-/*
- if ( H5P_DEFAULT_F == c_crt_prp ) c_crt_prp = H5P_DEFAULT;
-*/
+ char *c_name=NULL; /* Buffer to hold C string */
+ int_f ret_value=0; /* Return value */
/*
* Convert FORTRAN name to C name
*/
- c_namelen = *namelen;
- c_name = (char *)HD5f2cstring(name, c_namelen);
- if (c_name == NULL) return ret_value;
+ if ((c_name = HD5f2cstring(name, (size_t)*namelen)) == NULL)
+ HGOTO_DONE(FAIL);
/*
* Call H5Acreate function.
*/
- c_obj_id = *obj_id;
- c_type_id = *type_id;
- c_space_id = *space_id;
- c_attr_id = H5Acreate(c_obj_id, c_name, c_type_id, c_space_id, c_crt_prp);
-
+ if((*attr_id = (hid_t_f)H5Acreate((hid_t)*obj_id, c_name, (hid_t)*type_id, (hid_t)*space_id, (hid_t)*crt_prp))<0)
+ HGOTO_DONE(FAIL);
- if (c_attr_id < 0) goto DONE;
- *attr_id = (hid_t_f)c_attr_id;
- ret_value = 0;
-
-DONE:
- HDfree(c_name);
- return ret_value;
+done:
+ if(c_name) HDfree(c_name);
+ return ret_value;
}
/*----------------------------------------------------------------------------
@@ -88,33 +68,26 @@ DONE:
* Modifications:
*---------------------------------------------------------------------------*/
int_f
-nh5aopen_name_c (hid_t_f *obj_id, _fcd name, int_f *namelen, hid_t_f *attr_id)
+nh5aopen_name_c (hid_t_f *obj_id, _fcd name, size_t_f *namelen, hid_t_f *attr_id)
{
- int ret_value = -1;
- char *c_name;
- int c_namelen;
- hid_t c_obj_id;
- hid_t c_attr_id;
+ char *c_name=NULL; /* Buffer to hold C string */
+ int_f ret_value=0; /* Return value */
/*
* Convert FORTRAN name to C name
*/
- c_namelen = *namelen;
- c_name = (char *)HD5f2cstring(name, c_namelen);
- if (c_name == NULL) return ret_value;
+ if ((c_name = HD5f2cstring(name, (size_t)*namelen)) == NULL)
+ HGOTO_DONE(FAIL);
+
/*
* Call H5Aopen function.
*/
- c_obj_id = *obj_id;
- c_attr_id = H5Aopen_name(c_obj_id, c_name);
+ if ((*attr_id = (hid_t_f)H5Aopen_name((hid_t)*obj_id, c_name)) < 0)
+ HGOTO_DONE(FAIL);
- if (c_attr_id < 0) goto DONE;
- *attr_id = (hid_t_f)c_attr_id;
- ret_value = 0;
-
-DONE:
- HDfree(c_name);
- return ret_value;
+done:
+ if(c_name) HDfree(c_name);
+ return ret_value;
}
/*----------------------------------------------------------------------------
@@ -132,16 +105,12 @@ DONE:
* April 4, 2001
*---------------------------------------------------------------------------*/
int_f
-nh5awritec_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, int_f *dims)
+nh5awritec_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims)
{
- int ret_value = -1;
-
/*
* Call h5awrite_c function.
*/
- ret_value = nh5awrite_c(attr_id, mem_type_id, _fcdtocp(buf), dims);
-
- return ret_value;
+ return nh5awrite_c(attr_id, mem_type_id, _fcdtocp(buf), dims);
}
/*----------------------------------------------------------------------------
@@ -159,88 +128,20 @@ nh5awritec_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, int_f *dims)
* April 4, 2001
*---------------------------------------------------------------------------*/
int_f
-nh5awrite_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, int_f *dims)
-{
- int ret_value = -1;
- herr_t ret;
- hid_t c_attr_id;
- hid_t c_mem_type_id;
-
- /*
- * Call H5Awrite function.
- */
- c_attr_id = *attr_id;
- c_mem_type_id = *mem_type_id;
- ret = H5Awrite(c_attr_id, c_mem_type_id, buf);
-
- if (ret < 0) return ret_value;
- ret_value = 0;
- return ret_value;
-}
-
-/*----------------------------------------------------------------------------
- * Name: h5awritec_c_b
- * Purpose: Call h5awrite_c_b to write a character attribute
- * Inputs: attr_id - dataset identifier
- * mem_type_id - memory datatype identifier
- * buf - character data buffer
- * dims - array to store dimensions sizes of buf; used only
- * by Fortran routine.
- * Returns: 0 on success, -1 on failure
- * Programmer: Elena Pourmal
- * Tuesday, May 14, 2002
- * Modifications: This function was added to accomodate h5awrite_f call with
- * dims buffer being of INTEGER(HSIZE_T) type
- *---------------------------------------------------------------------------*/
-int_f
-nh5awritec_c_b (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, hsize_t_f *dims)
-{
- int ret_value = -1;
-
- /*
- * Call h5awrite_c function.
- */
- ret_value = nh5awrite_c_b(attr_id, mem_type_id, _fcdtocp(buf), dims);
-
- return ret_value;
-}
-
-/*----------------------------------------------------------------------------
- * Name: h5awrite_c_b
- * Purpose: Call H5Awrite to write a attribute
- * Inputs: attr_id - attribute identifier
- * mem_type_id - memory datatype identifier
- * buf - data buffer
- * dims - array to store dimensions sizes of buf; used only
- * by Fortran routine.
- * Returns: 0 on success, -1 on failure
- * Programmer: Elena Pourmal
- * Tuesday, May 14, 2002
- * Modifications: This function was added to accomodate h5awrite_f call with
- * dims buffer being of INTEGER(HSIZE_T) type
- *---------------------------------------------------------------------------*/
-int_f
-nh5awrite_c_b (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, hsize_t_f *dims)
+nh5awrite_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED *dims)
{
- int ret_value = -1;
- herr_t ret;
- hid_t c_attr_id;
- hid_t c_mem_type_id;
+ int_f ret_value=0; /* Return value */
/*
* Call H5Awrite function.
*/
- c_attr_id = *attr_id;
- c_mem_type_id = *mem_type_id;
- ret = H5Awrite(c_attr_id, c_mem_type_id, buf);
+ if (H5Awrite((hid_t)*attr_id, (hid_t)*mem_type_id, buf) < 0)
+ HGOTO_DONE(FAIL);
- if (ret < 0) return ret_value;
- ret_value = 0;
+done:
return ret_value;
}
-
-
/*----------------------------------------------------------------------------
* Name: h5areadc_c
* Purpose: Call h5aread_c to read character attribute
@@ -256,16 +157,12 @@ nh5awrite_c_b (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, hsize_t_f *dim
* April 4, 2001
*---------------------------------------------------------------------------*/
int_f
-nh5areadc_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, int_f *dims)
+nh5areadc_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims)
{
- int ret_value = -1;
-
/*
* Call h5aread_c function.
*/
- ret_value = nh5aread_c(attr_id, mem_type_id, (_fcdtocp(buf)), dims);
-
- return ret_value;
+ return nh5aread_c(attr_id, mem_type_id, _fcdtocp(buf), dims);
}
/*----------------------------------------------------------------------------
@@ -283,87 +180,21 @@ nh5areadc_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, int_f *dims)
* April 4, 2001
*---------------------------------------------------------------------------*/
int_f
-nh5aread_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, int_f *dims)
+nh5aread_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void UNUSED * dims)
{
- int ret_value = -1;
- herr_t ret;
- hid_t c_attr_id;
- hid_t c_mem_type_id;
+ int_f ret_value=0; /* Return value */
/*
* Call H5Aread function.
*/
- c_attr_id = *attr_id;
- c_mem_type_id = *mem_type_id;
- ret = H5Aread(c_attr_id, c_mem_type_id, buf);
-
- if (ret < 0) return ret_value;
- ret_value = 0;
- return ret_value;
-}
-/*----------------------------------------------------------------------------
- * Name: h5areadc_c_b
- * Purpose: Call h5aread_c_b to read character attribute
- * Inputs: dset_id - dataset identifier
- * mem_type_id - memory datatype identifier
- * dims - array to store dimensions sizes of buf; used only
- * by Fortran routine.
- * Outputs: buf - character data buffer
- * Returns: 0 on success, -1 on failure
- * Programmer: Elena Pourmal
- * Tuesday, May 14, 2002
- * Modifications: This function was added to accomodate h5aread_f call with
- * dims buffer being of INTEGER(HSIZE_T) type
- *---------------------------------------------------------------------------*/
-int_f
-nh5areadc_c_b (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, hsize_t_f *dims)
-{
- int ret_value = -1;
-
- /*
- * Call h5aread_c function.
- */
- ret_value = nh5aread_c_b(attr_id, mem_type_id, (_fcdtocp(buf)), dims);
+ if (H5Aread((hid_t)*attr_id, (hid_t)*mem_type_id, buf) < 0)
+ HGOTO_DONE(FAIL);
+done:
return ret_value;
}
/*----------------------------------------------------------------------------
- * Name: h5aread_c_b
- * Purpose: Call H5Aread to read an attribute
- * Inputs: dset_id - dataset identifier
- * mem_type_id - memory datatype identifier
- * dims - array to store dimensions sizes of buf; used only
- * by Fortran routine.
- * Outputs: buf - data buffer
- * Returns: 0 on success, -1 on failure
- * Programmer: Elena Pourmal
- * Tuesday, May 14, 2002
- * Modifications: This function was added to accomodate h5awrite_f call with
- * dims buffer being of INTEGER(HSIZE_T) type
- *---------------------------------------------------------------------------*/
-int_f
-nh5aread_c_b (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, hsize_t_f *dims)
-{
- int ret_value = -1;
- herr_t ret;
- hid_t c_attr_id;
- hid_t c_mem_type_id;
-
- /*
- * Call H5Aread function.
- */
- c_attr_id = *attr_id;
- c_mem_type_id = *mem_type_id;
- ret = H5Aread(c_attr_id, c_mem_type_id, buf);
-
- if (ret < 0) return ret_value;
- ret_value = 0;
- return ret_value;
-}
-
-
-/*----------------------------------------------------------------------------
* Name: h5aclose_c
* Purpose: Call H5Aclose to close an attribute
* Inputs: attr_id - identifier of an attribute to be closed
@@ -376,11 +207,13 @@ nh5aread_c_b (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, hsize_t_f *dims
int_f
nh5aclose_c ( hid_t_f *attr_id )
{
- int ret_value = 0;
- hid_t c_attr_id;
- c_attr_id = *attr_id;
- if ( H5Aclose(c_attr_id) < 0 ) ret_value = -1;
- return ret_value;
+ int_f ret_value=0; /* Return value */
+
+ if (H5Aclose((hid_t)*attr_id) < 0)
+ HGOTO_DONE(FAIL);
+
+done:
+ return ret_value;
}
/*----------------------------------------------------------------------------
@@ -395,33 +228,26 @@ nh5aclose_c ( hid_t_f *attr_id )
* Modifications:
*---------------------------------------------------------------------------*/
int_f
-nh5adelete_c (hid_t_f *obj_id, _fcd name, int_f *namelen)
+nh5adelete_c (hid_t_f *obj_id, _fcd name, size_t_f *namelen)
{
- int ret_value = -1;
- herr_t status;
- hid_t c_obj_id;
- char *c_name;
- int c_namelen;
+ char *c_name=NULL; /* Buffer to hold C string */
+ int_f ret_value=0; /* Return value */
/*
* Convert FORTRAN name to C name
*/
- c_namelen = *namelen;
- c_name = (char *)HD5f2cstring(name, c_namelen);
- if (c_name == NULL) return ret_value;
+ if ((c_name = HD5f2cstring(name, (size_t)*namelen)) == NULL)
+ HGOTO_DONE(FAIL);
/*
* Call H5Adelete function.
*/
- c_obj_id = *obj_id;
- status = H5Adelete(c_obj_id, c_name);
-
- if (status < 0) goto DONE;
- ret_value = 0;
+ if (H5Adelete((hid_t)*obj_id, c_name) < 0)
+ HGOTO_DONE(FAIL);
-DONE:
- HDfree(c_name);
- return ret_value;
+done:
+ if(c_name) HDfree(c_name);
+ return ret_value;
}
@@ -439,21 +265,15 @@ DONE:
int_f
nh5aopen_idx_c (hid_t_f *obj_id, int_f *idx, hid_t_f *attr_id)
{
- int ret_value = -1;
- hid_t c_obj_id;
- hid_t c_attr_id;
- unsigned c_idx;
- c_idx = (unsigned)*idx;
+ int_f ret_value=0; /* Return value */
/*
* Call H5Aopen_idx function.
*/
- c_obj_id = *obj_id;
- c_attr_id = H5Aopen_idx(c_obj_id, c_idx);
+ if ((*attr_id = (hid_t_f)H5Aopen_idx((hid_t)*obj_id, (unsigned)*idx)) < 0)
+ HGOTO_DONE(FAIL);
- if (c_attr_id < 0) return ret_value;
- *attr_id = (hid_t_f)c_attr_id;
- ret_value = 0;
+done:
return ret_value;
}
@@ -471,19 +291,15 @@ nh5aopen_idx_c (hid_t_f *obj_id, int_f *idx, hid_t_f *attr_id)
int_f
nh5aget_space_c (hid_t_f *attr_id, hid_t_f *space_id)
{
- int ret_value = -1;
- hid_t c_attr_id;
- hid_t c_space_id;
+ int_f ret_value=0; /* Return value */
/*
* Call H5Aget_space function.
*/
- c_attr_id = *attr_id;
- c_space_id = H5Aget_space(c_attr_id);
+ if ((*space_id = (hid_t_f)H5Aget_space((hid_t)*attr_id)) < 0)
+ HGOTO_DONE(FAIL);
- if (c_space_id < 0) return ret_value;
- *space_id = (hid_t_f)c_space_id;
- ret_value = 0;
+done:
return ret_value;
}
@@ -500,19 +316,15 @@ nh5aget_space_c (hid_t_f *attr_id, hid_t_f *space_id)
int_f
nh5aget_type_c (hid_t_f *attr_id, hid_t_f *type_id)
{
- int ret_value = -1;
- hid_t c_attr_id;
- hid_t c_type_id;
+ int_f ret_value=0; /* Return value */
/*
* Call H5Aget_type function.
*/
- c_attr_id = *attr_id;
- c_type_id = H5Aget_type(c_attr_id);
+ if ((*type_id = (hid_t_f)H5Aget_type((hid_t)*attr_id)) < 0)
+ HGOTO_DONE(FAIL);
- if (c_type_id < 0) return ret_value;
- *type_id = (hid_t_f)c_type_id;
- ret_value = 0;
+done:
return ret_value;
}
@@ -530,23 +342,18 @@ nh5aget_type_c (hid_t_f *attr_id, hid_t_f *type_id)
int_f
nh5aget_num_attrs_c (hid_t_f *obj_id, int_f *attr_num)
{
- int ret_value = -1;
- hid_t c_obj_id;
- int c_attr_num;
+ int_f ret_value=0; /* Return value */
/*
* Call H5Aget_num_attrs function.
*/
- c_obj_id = *obj_id;
- c_attr_num = H5Aget_num_attrs(c_obj_id);
+ if ((*attr_num = (int_f)H5Aget_num_attrs((hid_t)*obj_id)) < 0)
+ HGOTO_DONE(FAIL);
- if (c_attr_num < 0) return ret_value;
- *attr_num = c_attr_num;
- ret_value = 0;
+done:
return ret_value;
}
-
/*----------------------------------------------------------------------------
* Name: h5aget_name_c
* Purpose: Call H5Aget_name to get attribute's name
@@ -561,33 +368,27 @@ nh5aget_num_attrs_c (hid_t_f *obj_id, int_f *attr_num)
int_f
nh5aget_name_c(hid_t_f *attr_id, size_t_f *bufsize, _fcd buf)
{
- int ret_value = -1;
- hid_t c_attr_id;
- ssize_t c_size;
- size_t c_bufsize;
- char *c_buf =NULL;
+ char *c_buf=NULL; /* Buffer to hold C string */
+ int_f ret_value=0; /* Return value */
/*
* Allocate buffer to hold name of an attribute
*/
- c_bufsize = *bufsize;
- c_buf = (char *)HDmalloc(c_bufsize +1);
- if (c_buf == NULL) return ret_value;
+ if ((c_buf = HDmalloc((size_t)*bufsize +1)) == NULL)
+ HGOTO_DONE(FAIL);
/*
* Call H5Aget_name function
*/
- c_attr_id = *attr_id;
- c_size = H5Aget_name(c_attr_id, c_bufsize, c_buf);
- if (c_size < 0) goto DONE;
+ if ((ret_value = (int_f)H5Aget_name((hid_t)*attr_id, (size_t)*bufsize, c_buf)) < 0)
+ HGOTO_DONE(FAIL);
/*
* Convert C name to FORTRAN and place it in the given buffer
*/
- HD5packFstring(c_buf, _fcdtocp(buf), (int)c_bufsize);
- ret_value = (int_f)c_size;
+ HD5packFstring(c_buf, _fcdtocp(buf), (size_t)*bufsize);
-DONE:
- HDfree(c_buf);
+done:
+ if(c_buf) HDfree(c_buf);
return ret_value;
}