[svn-r5911]

Purpose:
    bug fix in 'ID to name' function
Description:
    the function replace_name was only checking for immutable datatypes
Solution:
added a new function H5T_is_named, that checks for named datatypes


Platforms tested:
windows 2000, linux, solaris with Fortran
This commit is contained in:
Pedro Vicente Nunes 2002-09-04 10:50:12 -05:00
parent 46d9c62ba1
commit d3f2e1bdff
3 changed files with 52 additions and 8 deletions

View File

@ -2594,6 +2594,8 @@ done:
*-------------------------------------------------------------------------
*/
herr_t H5G_replace_name( int type, H5G_entry_t *loc, const char *src_name,
const char *dst_name, int op )
{
@ -2776,7 +2778,7 @@ done:
assert(obj_ptr);
/* avoid no named datatypes */
if( names->obj_type==H5I_DATATYPE && H5T_is_immutable((H5T_t*)obj_ptr))
if( names->obj_type==H5I_DATATYPE && !H5T_is_named((H5T_t*)obj_ptr))
{
/* Do not exit loop */
ret_value = SUCCEED;
@ -2800,8 +2802,7 @@ done:
"unknown data object");
}
if( !ent)
goto done;
assert( ent );
/* Check if is a mounted file */

View File

@ -7512,7 +7512,7 @@ done:
/*-------------------------------------------------------------------------
* Function: H5T_is_immutable
*
* Purpose: Check is a datatype is immutable.
* Purpose: Check if a datatype is immutable.
*
* Return: TRUE
*
@ -7522,6 +7522,9 @@ done:
* Friday, Dec 7, 2001
*
* Modifications:
* Pedro Vicente
* Tuesday, Sep 3, 2002
* Added 'else'
*
*-------------------------------------------------------------------------
*/
@ -7536,11 +7539,50 @@ H5T_is_immutable(H5T_t *dt)
if(dt->state == H5T_STATE_IMMUTABLE)
ret_value = TRUE;
else
ret_value = FALSE;
done:
FUNC_LEAVE(ret_value);
}
/*-------------------------------------------------------------------------
* Function: H5T_is_named
*
* Purpose: Check if a datatype is named.
*
* Return: TRUE
*
* FALSE
*
* Programmer: Pedro Vicente
* Tuesday, Sep 3, 2002
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
htri_t
H5T_is_named(H5T_t *dt)
{
htri_t ret_value = FALSE;
FUNC_ENTER_NOAPI(H5T_is_named, FAIL);
assert(dt);
if( dt->state == H5T_STATE_OPEN || dt->state == H5T_STATE_NAMED )
ret_value = TRUE;
else
ret_value = FALSE;
done:
FUNC_LEAVE(ret_value);
}
/*--------------------------------------------------------------------------
NAME

View File

@ -117,6 +117,7 @@ __DLL__ herr_t H5T_pack(H5T_t *dt);
__DLL__ herr_t H5T_debug(const H5T_t *dt, FILE * stream);
__DLL__ H5G_entry_t *H5T_entof(H5T_t *dt);
__DLL__ htri_t H5T_is_immutable(H5T_t *dt);
__DLL__ htri_t H5T_is_named(H5T_t *dt);
__DLL__ H5T_path_t *H5T_path_find(const H5T_t *src, const H5T_t *dst,
const char *name, H5T_conv_t func);
__DLL__ herr_t H5T_sort_value(H5T_t *dt, int *map);