diff options
Diffstat (limited to 'fortran/src/H5Af.c')
-rw-r--r-- | fortran/src/H5Af.c | 355 |
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; } |