diff options
author | Elena Pourmal <epourmal@hdfgroup.org> | 2008-05-06 19:23:32 (GMT) |
---|---|---|
committer | Elena Pourmal <epourmal@hdfgroup.org> | 2008-05-06 19:23:32 (GMT) |
commit | 0bfb17bf00b9d4dae00e7f454c437ca98f2a5677 (patch) | |
tree | 1d4ef1dd28b642ee28d27fd5fc579c5a10714538 /fortran/src/H5Tf.c | |
parent | 464e4619f670006c2477583b7f9d7b0530b0a245 (diff) | |
download | hdf5-0bfb17bf00b9d4dae00e7f454c437ca98f2a5677.zip hdf5-0bfb17bf00b9d4dae00e7f454c437ca98f2a5677.tar.gz hdf5-0bfb17bf00b9d4dae00e7f454c437ca98f2a5677.tar.bz2 |
[svn-r14942] Maintenance: Merged new Fortran APIs and tests from trunk into hdf5_1_8 branch
(used svn merge -r 14505:14941 http://svn.hdfgorup.uiuc.edu/hdf5/trunk/fortran
command).
Updated MANIFEST
Disabled -O3 optimization for gcc 4.3 (long due check-in)
Platforms tested: kagiso with PGI compilers, smirom with g95 and v16 option, linew
Diffstat (limited to 'fortran/src/H5Tf.c')
-rw-r--r-- | fortran/src/H5Tf.c | 214 |
1 files changed, 210 insertions, 4 deletions
diff --git a/fortran/src/H5Tf.c b/fortran/src/H5Tf.c index 7c3befc..633389b 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, hid_t_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 = (hid_t_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; +} |