[svn-r7322] Purpose:

Refactored code

Description:
   Use H5E_BEGIN_TRY/H5E_END_TRY macros around blocks where errors shouldn't
be printed, instead of managing 'automatic error' information.

    Use new 'flags' field in table objects where appropriate

    Chase changes to 'fileno' and 'objno' fields of H5G_stat_t

Platforms tested:
    h5committested
This commit is contained in:
Quincey Koziol 2003-08-08 14:30:19 -05:00
parent 21c1f05808
commit 64b045691c

View File

@ -1,4 +1,3 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Copyright by the Board of Trustees of the University of Illinois. *
* All rights reserved. *
@ -37,9 +36,6 @@ int traverse( hid_t loc_id, const char *group_name, table_t *table, info_t *info
herr_t get_nobjects( hid_t loc_id, const char *group_name );
herr_t get_name_type( hid_t loc_id, const char *group_name, int idx, char **name, int *type );
/*-------------------------------------------------------------------------
* Function: H5get_object_info
*
@ -237,8 +233,6 @@ int traverse( hid_t loc_id, const char *group_name, table_t *table, info_t *info
H5G_stat_t statbuf;
int inserted_objs=0;
int j;
void *edata;
H5E_auto_t func;
if (( nobjs = get_nobjects( loc_id, group_name )) < 0 )
return -1;
@ -259,12 +253,11 @@ int traverse( hid_t loc_id, const char *group_name, table_t *table, info_t *info
strcat( path, name );
/* disable error reporting */
H5Eget_auto(H5E_DEFAULT, &func, &edata);
H5Eset_auto(H5E_DEFAULT, NULL, NULL);
H5E_BEGIN_TRY {
/* get info */
H5Gget_objinfo( loc_id, path, TRUE, &statbuf);
H5Eset_auto(H5E_DEFAULT, &func, edata);
} H5E_END_TRY;
/* add to array */
if ( info )
@ -289,10 +282,10 @@ int traverse( hid_t loc_id, const char *group_name, table_t *table, info_t *info
inserted_objs++;
/* nlink is number of hard links to object */
if (statbuf.nlink > 0 && table_search(statbuf.objno, table ) == FAIL)
if (statbuf.nlink > 0 && table_search_obj(statbuf.objno, table ) == FAIL)
{
/* add object to table */
table_add(statbuf.objno, path, H5G_GROUP, table );
table_add_obj(statbuf.objno, path, H5G_GROUP, table );
/* recurse with the absolute name */
inserted_objs += traverse( loc_id, path, table, info, idx );
@ -302,7 +295,7 @@ int traverse( hid_t loc_id, const char *group_name, table_t *table, info_t *info
group with more than one link to it */
if (statbuf.nlink > 1)
{
if ((j = table_search(statbuf.objno, table )) < 0 )
if ((j = table_search_obj(statbuf.objno, table )) < 0 )
return -1;
if ( table->objs[j].displayed == 0 )
@ -329,17 +322,17 @@ int traverse( hid_t loc_id, const char *group_name, table_t *table, info_t *info
inserted_objs++;
/* nlink is number of hard links to object */
if (statbuf.nlink > 0 && table_search(statbuf.objno, table ) == FAIL)
if (statbuf.nlink > 0 && table_search_obj(statbuf.objno, table ) == FAIL)
{
/* add object to table */
table_add(statbuf.objno, path, H5G_DATASET, table );
table_add_obj(statbuf.objno, path, H5G_DATASET, table );
}
/* search table
dataset with more than one link to it */
if (statbuf.nlink > 1)
{
if ((j = table_search(statbuf.objno, table )) < 0 )
if ((j = table_search_obj(statbuf.objno, table )) < 0 )
return -1;
if ( table->objs[j].displayed == 0 )
@ -367,10 +360,10 @@ int traverse( hid_t loc_id, const char *group_name, table_t *table, info_t *info
inserted_objs++;
/* nlink is number of hard links to object */
if (statbuf.nlink > 0 && table_search(statbuf.objno, table ) == FAIL)
if (statbuf.nlink > 0 && table_search_obj(statbuf.objno, table ) == FAIL)
{
/* add object to table */
table_add(statbuf.objno, path, H5G_TYPE, table );
table_add_obj(statbuf.objno, path, H5G_TYPE, table );
}
break;
@ -415,7 +408,7 @@ int traverse( hid_t loc_id, const char *group_name, table_t *table, info_t *info
/*-------------------------------------------------------------------------
* Function: table_search
* Function: table_search_obj
*
* Purpose:
*
@ -432,12 +425,12 @@ int traverse( hid_t loc_id, const char *group_name, table_t *table, info_t *info
*-------------------------------------------------------------------------
*/
int table_search(unsigned long *objno, table_t *table )
int table_search_obj(haddr_t objno, table_t *table )
{
int i;
for (i = 0; i < table->nobjs; i++)
if (table->objs[i].objno[0] == *objno && table->objs[i].objno[1] == *(objno + 1))
if (table->objs[i].objno == objno)
return i;
return FAIL;
@ -445,7 +438,7 @@ int table_search(unsigned long *objno, table_t *table )
/*-------------------------------------------------------------------------
* Function: table_add
* Function: table_add_obj
*
* Purpose:
*
@ -462,7 +455,8 @@ int table_search(unsigned long *objno, table_t *table )
*-------------------------------------------------------------------------
*/
void table_add(unsigned long *objno, char *objname, int type, table_t *table)
void
table_add_obj(haddr_t objno, char *objname, int type, table_t *table)
{
int i;
@ -471,7 +465,8 @@ void table_add(unsigned long *objno, char *objname, int type, table_t *table)
table->objs = (obj_t*)realloc(table->objs, table->size * sizeof(obj_t));
for (i = table->nobjs; i < table->size; i++) {
table->objs[i].objno[0] = table->objs[i].objno[1] = 0;
table->objs[i].objno = 0;
table->objs[i].flags[0] = table->objs[i].flags[1] = 0;
table->objs[i].displayed = 0;
table->objs[i].type = H5G_UNKNOWN;
table->objs[i].objname = NULL;
@ -479,11 +474,57 @@ void table_add(unsigned long *objno, char *objname, int type, table_t *table)
}
i = table->nobjs++;
table->objs[i].objno[0] = objno[0];
table->objs[i].objno[1] = objno[1];
table->objs[i].objno = objno;
table->objs[i].flags[0] = table->objs[i].flags[1] = 0;
free(table->objs[i].objname);
table->objs[i].objname = (char *)HDstrdup(objname);
table->objs[i].type = type;
table->objs[i].type = type;
}
/*-------------------------------------------------------------------------
* Function: table_add_flags
*
* Purpose:
*
* Return:
*
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
*
* Date: November 4, 2002
*
* Comments:
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
void
table_add_flags(unsigned *flags, char *objname, int type, table_t *table)
{
int i;
if (table->nobjs == table->size) {
table->size *= 2;
table->objs = (obj_t*)realloc(table->objs, table->size * sizeof(obj_t));
for (i = table->nobjs; i < table->size; i++) {
table->objs[i].objno = 0;
table->objs[i].flags[0] = table->objs[i].flags[1] = 0;
table->objs[i].displayed = 0;
table->objs[i].type = H5G_UNKNOWN;
table->objs[i].objname = NULL;
}
}
i = table->nobjs++;
table->objs[i].objno = 0;
table->objs[i].flags[0] = flags[0];
table->objs[i].flags[1] = flags[1];
free(table->objs[i].objname);
table->objs[i].objname = (char *)HDstrdup(objname);
table->objs[i].type = type;
}
@ -515,7 +556,8 @@ void table_init( table_t **tbl )
table->objs = (obj_t*) malloc(table->size * sizeof(obj_t));
for (i = 0; i < table->size; i++) {
table->objs[i].objno[0] = table->objs[i].objno[1] = 0;
table->objs[i].objno = 0;
table->objs[i].flags[0] = table->objs[i].flags[1] = 0;
table->objs[i].displayed = 0;
table->objs[i].type = H5G_UNKNOWN;
table->objs[i].objname = NULL;