diff options
Diffstat (limited to 'fortran/src/H5Af.c')
-rw-r--r-- | fortran/src/H5Af.c | 800 |
1 files changed, 787 insertions, 13 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; } |