mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-01-30 15:32:37 +08:00
[svn-r14131] Description:
Move H5Giterate() and H5G_iterate_t to deprecated symbols section, replacing them with H5Literate and H5L_iterate_t respectively. Tested on: FreeBSD/32 6.2 (duty) FreeBSD/64 6.2 (liberty) Linux/32 2.6 (kagiso) Linux/64 2.6 (smirom) AIX/32 5.3 (copper) Solaris/32 5.10 (linew) Mac OS X/32 10.4.10 (amazon)
This commit is contained in:
parent
1374654210
commit
a4069db8f4
@ -46,7 +46,8 @@ const H5std_string FILE_NAME( "Group.h5" );
|
||||
const int RANK = 2;
|
||||
|
||||
// Operator function
|
||||
extern "C" herr_t file_info(hid_t loc_id, const char *name, void *opdata);
|
||||
extern "C" herr_t file_info(hid_t loc_id, const char *name, const H5L_info_t *linfo,
|
||||
void *opdata);
|
||||
|
||||
int main(void)
|
||||
{
|
||||
@ -166,7 +167,7 @@ int main(void)
|
||||
* root directory.
|
||||
*/
|
||||
cout << endl << "Iterating over elements in the file" << endl;
|
||||
herr_t idx = H5Giterate(file->getId(), "/", NULL, file_info, NULL);
|
||||
herr_t idx = H5Literate(file->getId(), "/", H5_INDEX_NAME, H5_ITER_INC, NULL, file_info, NULL, H5P_DEFAULT);
|
||||
cout << endl;
|
||||
|
||||
/*
|
||||
@ -184,7 +185,7 @@ int main(void)
|
||||
cout << "\"Data\" is unlinked" << endl;
|
||||
|
||||
cout << endl << "Iterating over elements in the file again" << endl;
|
||||
idx = H5Giterate(file->getId(), "/", NULL, file_info, NULL);
|
||||
idx = H5Literate(file->getId(), "/", H5_INDEX_NAME, H5_ITER_INC, NULL, file_info, NULL, H5P_DEFAULT);
|
||||
cout << endl;
|
||||
|
||||
/*
|
||||
@ -228,9 +229,10 @@ int main(void)
|
||||
* Operator function.
|
||||
*/
|
||||
herr_t
|
||||
file_info(hid_t loc_id, const char *name, void *opdata)
|
||||
file_info(hid_t loc_id, const char *name, const H5L_info_t *linfo, void *opdata)
|
||||
{
|
||||
hid_t group;
|
||||
|
||||
/*
|
||||
* Open the group using its name.
|
||||
*/
|
||||
|
@ -243,7 +243,7 @@ DataSet CommonFG::openDataSet( const H5std_string& name ) const
|
||||
/// specified location.
|
||||
// Programmer Binh-Minh Ribler - 2000
|
||||
//--------------------------------------------------------------------------
|
||||
void CommonFG::link( H5G_link_t link_type, const char* curr_name, const char* new_name ) const
|
||||
void CommonFG::link( H5L_type_t link_type, const char* curr_name, const char* new_name ) const
|
||||
{
|
||||
herr_t ret_value;
|
||||
|
||||
@ -274,7 +274,7 @@ void CommonFG::link( H5G_link_t link_type, const char* curr_name, const char* ne
|
||||
/// \c std::string for \a curr_name and \a new_name.
|
||||
// Programmer Binh-Minh Ribler - 2000
|
||||
//--------------------------------------------------------------------------
|
||||
void CommonFG::link( H5G_link_t link_type, const H5std_string& curr_name, const H5std_string& new_name ) const
|
||||
void CommonFG::link( H5L_type_t link_type, const H5std_string& curr_name, const H5std_string& new_name ) const
|
||||
{
|
||||
link( link_type, curr_name.c_str(), new_name.c_str() );
|
||||
}
|
||||
@ -935,6 +935,7 @@ VarLenType CommonFG::openVarLenType( const H5std_string& name ) const
|
||||
return( openVarLenType( name.c_str()) );
|
||||
}
|
||||
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
//--------------------------------------------------------------------------
|
||||
// Function: CommonFG::iterateElems
|
||||
///\brief Iterates a user's function over the entries of a group.
|
||||
@ -969,6 +970,7 @@ int CommonFG::iterateElems( const H5std_string& name, int *idx, H5G_iterate_t op
|
||||
{
|
||||
return( iterateElems( name.c_str(), idx, op, op_data ));
|
||||
}
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Function: CommonFG::getNumObjs
|
||||
|
@ -86,15 +86,17 @@ class H5_DLLCPP CommonFG {
|
||||
H5G_obj_t getObjTypeByIdx(hsize_t idx) const;
|
||||
H5G_obj_t getObjTypeByIdx(hsize_t idx, H5std_string& type_name) const;
|
||||
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
// Iterates over the elements of this group - not implemented in
|
||||
// C++ style yet.
|
||||
int iterateElems(const char* name, int *idx, H5G_iterate_t op, void *op_data);
|
||||
int iterateElems(const H5std_string& name, int *idx, H5G_iterate_t op, void *op_data);
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
|
||||
// Creates a link of the specified type from new_name to current_name;
|
||||
// both names are interpreted relative to the specified location id.
|
||||
void link(H5G_link_t link_type, const char* curr_name, const char* new_name) const;
|
||||
void link(H5G_link_t link_type, const H5std_string& curr_name, const H5std_string& new_name) const;
|
||||
void link(H5L_type_t link_type, const char* curr_name, const char* new_name) const;
|
||||
void link(H5L_type_t link_type, const H5std_string& curr_name, const H5std_string& new_name) const;
|
||||
|
||||
// Removes the specified name at this location.
|
||||
void unlink(const char* name) const;
|
||||
|
@ -28,10 +28,10 @@
|
||||
#define H5FILE_NAME "group.h5"
|
||||
#define RANK 2
|
||||
|
||||
herr_t file_info(hid_t loc_id, const char *name, void *opdata);
|
||||
/* Operator function */
|
||||
herr_t group_info(hid_t loc_id, const char *name, void *opdata);
|
||||
/* Operator function */
|
||||
static herr_t file_info(hid_t loc_id, const char *name, const H5L_info_t *linfo,
|
||||
void *opdata); /* Link iteration operator function */
|
||||
static herr_t group_info(hid_t loc_id, const char *name, const H5L_info_t *linfo,
|
||||
void *opdata); /* Link iteration operator function */
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
@ -137,7 +137,7 @@ main(void)
|
||||
/*
|
||||
* Use iterator to see the names of the objects in the root group.
|
||||
*/
|
||||
idx_f = H5Giterate(file, "/", NULL, file_info, NULL);
|
||||
idx_f = H5Literate(file, "/", H5_INDEX_NAME, H5_ITER_INC, NULL, file_info, NULL, H5P_DEFAULT);
|
||||
|
||||
/*
|
||||
* Unlink name "Data" and use iterator to see the names
|
||||
@ -148,13 +148,13 @@ main(void)
|
||||
else
|
||||
printf("\"Data\" is unlinked \n");
|
||||
|
||||
idx_f = H5Giterate(file, "/", NULL, file_info, NULL);
|
||||
idx_f = H5Literate(file, "/", H5_INDEX_NAME, H5_ITER_INC, NULL, file_info, NULL, H5P_DEFAULT);
|
||||
|
||||
/*
|
||||
* Use iterator to see the names of the objects in the group
|
||||
* /Data_new.
|
||||
*/
|
||||
idx_g = H5Giterate(grp, "/Data_new", NULL, group_info, NULL);
|
||||
idx_g = H5Literate(grp, "/Data_new", H5_INDEX_NAME, H5_ITER_INC, NULL, group_info, NULL, H5P_DEFAULT);
|
||||
|
||||
/*
|
||||
* Close the file.
|
||||
@ -169,100 +169,93 @@ main(void)
|
||||
/*
|
||||
* Operator function.
|
||||
*/
|
||||
herr_t file_info(hid_t loc_id, const char *name, void *opdata)
|
||||
static herr_t
|
||||
file_info(hid_t loc_id, const char *name, const H5L_info_t *linfo, void *opdata)
|
||||
{
|
||||
/* avoid warnings */
|
||||
/* avoid compiler warnings */
|
||||
loc_id = loc_id;
|
||||
opdata = opdata;
|
||||
linfo = linfo;
|
||||
|
||||
/*
|
||||
* Display group name. The name is passed to the function by
|
||||
* the Library. Some magic :-)
|
||||
*/
|
||||
printf("\n");
|
||||
printf("Name : ");
|
||||
puts(name);
|
||||
printf("\nName : %s\n", name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Operator function.
|
||||
*/
|
||||
herr_t group_info(hid_t loc_id, const char *name, void *opdata)
|
||||
static herr_t
|
||||
group_info(hid_t loc_id, const char *name, const H5L_info_t *linfo, void *opdata)
|
||||
{
|
||||
hid_t did; /* dataset identifier */
|
||||
hid_t tid; /* datatype identifier */
|
||||
H5T_class_t t_class;
|
||||
hid_t pid; /* data_property identifier */
|
||||
hsize_t chunk_dims_out[2];
|
||||
hid_t did; /* dataset identifier */
|
||||
hid_t tid; /* datatype identifier */
|
||||
H5T_class_t t_class;
|
||||
hid_t pid; /* data_property identifier */
|
||||
hsize_t chunk_dims_out[2];
|
||||
int rank_chunk;
|
||||
|
||||
int rank_chunk;
|
||||
/* avoid warnings */
|
||||
opdata = opdata;
|
||||
linfo = linfo;
|
||||
|
||||
/* avoid warnings */
|
||||
opdata = opdata;
|
||||
|
||||
/*
|
||||
* Open the datasets using their names.
|
||||
*/
|
||||
did = H5Dopen(loc_id, name);
|
||||
|
||||
/*
|
||||
* Display dataset name.
|
||||
*/
|
||||
printf("\n");
|
||||
printf("Name : ");
|
||||
puts(name);
|
||||
|
||||
/*
|
||||
* Display dataset information.
|
||||
*/
|
||||
tid = H5Dget_type(did); /* get datatype*/
|
||||
pid = H5Dget_create_plist(did); /* get creation property list */
|
||||
|
||||
/*
|
||||
* Check if dataset is chunked.
|
||||
*/
|
||||
if(H5D_CHUNKED == H5Pget_layout(pid)){
|
||||
/*
|
||||
* get chunking information: rank and dimensions.
|
||||
* Open the datasets using their names.
|
||||
*/
|
||||
rank_chunk = H5Pget_chunk(pid, 2, chunk_dims_out);
|
||||
printf("chunk rank %d, dimensions %lu x %lu\n", rank_chunk,
|
||||
(unsigned long)(chunk_dims_out[0]),
|
||||
(unsigned long)(chunk_dims_out[1]));
|
||||
}
|
||||
else{
|
||||
t_class = H5Tget_class(tid);
|
||||
if(t_class < 0){
|
||||
puts(" Invalid datatype.\n");
|
||||
did = H5Dopen(loc_id, name);
|
||||
|
||||
/*
|
||||
* Display dataset name.
|
||||
*/
|
||||
printf("\nName : %s\n", name);
|
||||
|
||||
/*
|
||||
* Display dataset information.
|
||||
*/
|
||||
tid = H5Dget_type(did); /* get datatype*/
|
||||
pid = H5Dget_create_plist(did); /* get creation property list */
|
||||
|
||||
/*
|
||||
* Check if dataset is chunked.
|
||||
*/
|
||||
if(H5D_CHUNKED == H5Pget_layout(pid)) {
|
||||
/*
|
||||
* get chunking information: rank and dimensions.
|
||||
*/
|
||||
rank_chunk = H5Pget_chunk(pid, 2, chunk_dims_out);
|
||||
printf("chunk rank %d, dimensions %lu x %lu\n", rank_chunk,
|
||||
(unsigned long)(chunk_dims_out[0]),
|
||||
(unsigned long)(chunk_dims_out[1]));
|
||||
}
|
||||
else {
|
||||
if(t_class == H5T_INTEGER)
|
||||
puts(" Datatype is 'H5T_NATIVE_INTEGER'.\n");
|
||||
if(t_class == H5T_FLOAT)
|
||||
puts(" Datatype is 'H5T_NATIVE_FLOAT'.\n");
|
||||
if(t_class == H5T_STRING)
|
||||
puts(" Datatype is 'H5T_NATIVE_STRING'.\n");
|
||||
if(t_class == H5T_BITFIELD)
|
||||
puts(" Datatype is 'H5T_NATIVE_BITFIELD'.\n");
|
||||
if(t_class == H5T_OPAQUE)
|
||||
puts(" Datatype is 'H5T_NATIVE_OPAQUE'.\n");
|
||||
if(t_class == H5T_COMPOUND)
|
||||
puts(" Datatype is 'H5T_NATIVE_COMPOUND'.\n");
|
||||
t_class = H5Tget_class(tid);
|
||||
if(t_class < 0) {
|
||||
puts(" Invalid datatype.\n");
|
||||
}
|
||||
else {
|
||||
if(t_class == H5T_INTEGER)
|
||||
puts(" Datatype is 'H5T_NATIVE_INTEGER'.\n");
|
||||
if(t_class == H5T_FLOAT)
|
||||
puts(" Datatype is 'H5T_NATIVE_FLOAT'.\n");
|
||||
if(t_class == H5T_STRING)
|
||||
puts(" Datatype is 'H5T_NATIVE_STRING'.\n");
|
||||
if(t_class == H5T_BITFIELD)
|
||||
puts(" Datatype is 'H5T_NATIVE_BITFIELD'.\n");
|
||||
if(t_class == H5T_OPAQUE)
|
||||
puts(" Datatype is 'H5T_NATIVE_OPAQUE'.\n");
|
||||
if(t_class == H5T_COMPOUND)
|
||||
puts(" Datatype is 'H5T_NATIVE_COMPOUND'.\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
H5Dclose(did);
|
||||
H5Pclose(pid);
|
||||
H5Tclose(tid);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
H5Dclose(did);
|
||||
H5Pclose(pid);
|
||||
H5Tclose(tid);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -297,7 +297,7 @@ nh5glink_c(hid_t_f *loc_id, int_f *link_type, _fcd current_name,
|
||||
/*
|
||||
* Call appropriate link creation function
|
||||
*/
|
||||
switch((H5G_link_t)*link_type) {
|
||||
switch((H5L_type_t)*link_type) {
|
||||
case H5L_TYPE_HARD:
|
||||
if(H5Lcreate_hard((hid_t)*loc_id, c_current_name, H5L_SAME_LOC, c_new_name, H5P_DEFAULT, H5P_DEFAULT) < 0)
|
||||
goto DONE;
|
||||
@ -359,7 +359,7 @@ nh5glink2_c(hid_t_f *cur_loc_id, _fcd cur_name, int_f *cur_namelen,
|
||||
/*
|
||||
* Call appropriate link creation function
|
||||
*/
|
||||
switch((H5G_link_t)*link_type) {
|
||||
switch((H5L_type_t)*link_type) {
|
||||
case H5L_TYPE_HARD:
|
||||
if(H5Lcreate_hard((hid_t)*cur_loc_id, c_cur_name, (hid_t)*new_loc_id, c_new_name, H5P_DEFAULT, H5P_DEFAULT) < 0)
|
||||
goto DONE;
|
||||
|
@ -304,8 +304,8 @@ nh5init_flags_c( int_f *h5d_flags, int_f *h5f_flags,
|
||||
h5g_flags[3] = H5G_TYPE;
|
||||
h5g_flags[4] = H5G_LINK;
|
||||
h5g_flags[5] = H5G_LINK_ERROR;
|
||||
h5g_flags[6] = H5G_LINK_HARD;
|
||||
h5g_flags[7] = H5G_LINK_SOFT;
|
||||
h5g_flags[6] = H5L_TYPE_HARD;
|
||||
h5g_flags[7] = H5L_TYPE_SOFT;
|
||||
|
||||
/*
|
||||
* H5I flags
|
||||
|
@ -1032,34 +1032,29 @@ out:
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
static herr_t find_dataset( hid_t loc_id, const char *name, void *op_data)
|
||||
static herr_t
|
||||
find_dataset(hid_t loc_id, const char *name, const H5L_info_t *linfo, void *op_data)
|
||||
{
|
||||
/* Define a default zero value for return. This will cause the iterator to continue if
|
||||
* the dataset is not found yet.
|
||||
*/
|
||||
int ret = 0;
|
||||
|
||||
/* Define a default zero value for return. This will cause the iterator to continue if
|
||||
* the dataset is not found yet.
|
||||
*/
|
||||
/* Shut the compiler up */
|
||||
loc_id = loc_id;
|
||||
linfo = linfo;
|
||||
|
||||
int ret = 0;
|
||||
/* Define a positive value for return value if the dataset was found. This will
|
||||
* cause the iterator to immediately return that positive value,
|
||||
* indicating short-circuit success
|
||||
*/
|
||||
if(strcmp(name, (char *)op_data) == 0)
|
||||
ret = 1;
|
||||
|
||||
char *dset_name = (char*)op_data;
|
||||
|
||||
/* Shut the compiler up */
|
||||
loc_id=loc_id;
|
||||
|
||||
/* Define a positive value for return value if the dataset was found. This will
|
||||
* cause the iterator to immediately return that positive value,
|
||||
* indicating short-circuit success
|
||||
*/
|
||||
|
||||
if( strcmp( name, dset_name ) == 0 )
|
||||
ret = 1;
|
||||
|
||||
|
||||
return ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5LTfind_dataset
|
||||
*
|
||||
@ -1082,14 +1077,10 @@ static herr_t find_dataset( hid_t loc_id, const char *name, void *op_data)
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
herr_t H5LTfind_dataset( hid_t loc_id, const char *dset_name )
|
||||
herr_t
|
||||
H5LTfind_dataset( hid_t loc_id, const char *dset_name )
|
||||
{
|
||||
|
||||
herr_t ret;
|
||||
|
||||
ret = H5Giterate( loc_id, ".", 0, find_dataset, (void *)dset_name );
|
||||
|
||||
return ret;
|
||||
return H5Literate(loc_id, ".", H5_INDEX_NAME, H5_ITER_INC, 0, find_dataset, (void *)dset_name, H5P_DEFAULT );
|
||||
}
|
||||
|
||||
|
||||
|
@ -906,10 +906,12 @@ H5G_dense_iterate_bt2_cb(const void *_record, void *_bt2_udata)
|
||||
|
||||
/* Check which type of callback to make */
|
||||
switch(bt2_udata->lnk_op->op_type) {
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
case H5G_LINK_OP_OLD:
|
||||
/* Make the old-type application callback */
|
||||
ret_value = (bt2_udata->lnk_op->u.old_op)(bt2_udata->gid, fh_udata.lnk->name, bt2_udata->op_data);
|
||||
break;
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
|
||||
case H5G_LINK_OP_APP:
|
||||
{
|
||||
|
@ -273,7 +273,7 @@ done:
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5Glink(hid_t cur_loc_id, H5L_type_t type, const char *cur_name, const char *new_name)
|
||||
H5Glink(hid_t cur_loc_id, H5G_link_t type, const char *cur_name, const char *new_name)
|
||||
{
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
@ -318,7 +318,7 @@ done:
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5Glink2(hid_t cur_loc_id, const char *cur_name, H5L_type_t type,
|
||||
H5Glink2(hid_t cur_loc_id, const char *cur_name, H5G_link_t type,
|
||||
hid_t new_loc_id, const char *new_name)
|
||||
{
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
@ -719,7 +719,6 @@ H5Gget_comment(hid_t loc_id, const char *name, size_t bufsize, char *buf)
|
||||
done:
|
||||
FUNC_LEAVE_API(ret_value)
|
||||
} /* end H5Gget_comment() */
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
@ -788,6 +787,7 @@ H5Giterate(hid_t loc_id, const char *name, int *idx_p, H5G_iterate_t op,
|
||||
done:
|
||||
FUNC_LEAVE_API(ret_value)
|
||||
} /* end H5Giterate() */
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
|
@ -623,10 +623,12 @@ H5G_link_iterate_table(const H5G_link_table_t *ltable, hsize_t skip,
|
||||
for(; u < ltable->nlinks && !ret_value; u++) {
|
||||
/* Check which kind of callback to make */
|
||||
switch(lnk_op->op_type) {
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
case H5G_LINK_OP_OLD:
|
||||
/* Make the old-type application callback */
|
||||
ret_value = (lnk_op->u.old_op)(gid, ltable->lnks[u].name, op_data);
|
||||
break;
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
|
||||
case H5G_LINK_OP_APP:
|
||||
{
|
||||
|
@ -1437,10 +1437,12 @@ H5G_node_iterate(H5F_t *f, hid_t dxpl_id, const void UNUSED *_lt_key, haddr_t ad
|
||||
|
||||
/* Check which type of callback to make */
|
||||
switch(udata->lnk_op->op_type) {
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
case H5G_LINK_OP_OLD:
|
||||
/* Make the old-type application callback */
|
||||
ret_value = (udata->lnk_op->u.old_op)(udata->group_id, name, udata->op_data);
|
||||
break;
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
|
||||
case H5G_LINK_OP_APP:
|
||||
{
|
||||
|
@ -133,12 +133,16 @@ typedef herr_t (*H5G_lib_iterate_t)(const H5O_link_t *lnk, void *op_data);
|
||||
/* Describe kind of callback to make for each link */
|
||||
typedef struct {
|
||||
enum {
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
H5G_LINK_OP_OLD, /* Old application callback */
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
H5G_LINK_OP_APP, /* Application callback */
|
||||
H5G_LINK_OP_LIB /* Library internal callback */
|
||||
} op_type;
|
||||
union {
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
H5G_iterate_t old_op; /* Old application callback for each link */
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
H5L_iterate_t app_op; /* Application callback for each link */
|
||||
H5G_lib_iterate_t lib_op; /* Library internal callback for each link */
|
||||
} u;
|
||||
|
@ -47,12 +47,6 @@
|
||||
#define H5G_NUSERTYPES (H5G_NTYPES-H5G_NLIBTYPES)
|
||||
#define H5G_USERTYPE(X) (8+(X)) /* User defined types */
|
||||
|
||||
#define H5G_LINK_ERROR H5L_TYPE_ERROR
|
||||
#define H5G_LINK_HARD H5L_TYPE_HARD
|
||||
#define H5G_LINK_SOFT H5L_TYPE_SOFT
|
||||
#define H5G_link_t H5L_type_t
|
||||
#define H5G_SAME_LOC H5L_SAME_LOC
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@ -109,9 +103,6 @@ typedef struct H5G_stat_t {
|
||||
H5O_stat_t ohdr; /* Object header information */
|
||||
} H5G_stat_t;
|
||||
|
||||
/* Prototype for H5Giterate() operator */
|
||||
typedef herr_t (*H5G_iterate_t)(hid_t group, const char *name, void *op_data);
|
||||
|
||||
/********************/
|
||||
/* Public Variables */
|
||||
/********************/
|
||||
@ -139,8 +130,6 @@ H5_DLL herr_t H5Gclose(hid_t group_id);
|
||||
*/
|
||||
H5_DLL ssize_t H5Gget_objname_by_idx(hid_t loc_id, hsize_t idx, char* name,
|
||||
size_t size);
|
||||
H5_DLL herr_t H5Giterate(hid_t loc_id, const char *name, int *idx,
|
||||
H5G_iterate_t op, void *op_data);
|
||||
H5_DLL H5G_obj_t H5Gget_objtype_by_idx(hid_t loc_id, hsize_t idx);
|
||||
H5_DLL herr_t H5Gget_objinfo(hid_t loc_id, const char *name,
|
||||
hbool_t follow_link, H5G_stat_t *statbuf/*out*/);
|
||||
@ -151,14 +140,28 @@ H5_DLL herr_t H5Gget_num_objs(hid_t loc_id, hsize_t *num_objs);
|
||||
*/
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
|
||||
/* Macros */
|
||||
|
||||
/* Link definitions */
|
||||
#define H5G_SAME_LOC H5L_SAME_LOC
|
||||
#define H5G_LINK_ERROR H5L_TYPE_ERROR
|
||||
#define H5G_LINK_HARD H5L_TYPE_HARD
|
||||
#define H5G_LINK_SOFT H5L_TYPE_SOFT
|
||||
#define H5G_link_t H5L_type_t
|
||||
|
||||
|
||||
/* Typedefs */
|
||||
|
||||
/* Prototype for H5Giterate() operator */
|
||||
typedef herr_t (*H5G_iterate_t)(hid_t group, const char *name, void *op_data);
|
||||
|
||||
|
||||
/* Function prototypes */
|
||||
H5_DLL hid_t H5Gcreate1(hid_t loc_id, const char *name, size_t size_hint);
|
||||
H5_DLL hid_t H5Gopen1(hid_t loc_id, const char *name);
|
||||
H5_DLL herr_t H5Glink(hid_t cur_loc_id, H5L_type_t type, const char *cur_name,
|
||||
H5_DLL herr_t H5Glink(hid_t cur_loc_id, H5G_link_t type, const char *cur_name,
|
||||
const char *new_name);
|
||||
H5_DLL herr_t H5Glink2(hid_t cur_loc_id, const char *cur_name, H5L_type_t type,
|
||||
H5_DLL herr_t H5Glink2(hid_t cur_loc_id, const char *cur_name, H5G_link_t type,
|
||||
hid_t new_loc_id, const char *new_name);
|
||||
H5_DLL herr_t H5Gmove(hid_t src_loc_id, const char *src_name,
|
||||
const char *dst_name);
|
||||
@ -170,6 +173,8 @@ H5_DLL herr_t H5Gget_linkval(hid_t loc_id, const char *name, size_t size,
|
||||
H5_DLL herr_t H5Gset_comment(hid_t loc_id, const char *name, const char *comment);
|
||||
H5_DLL int H5Gget_comment(hid_t loc_id, const char *name, size_t bufsize,
|
||||
char *buf);
|
||||
H5_DLL herr_t H5Giterate(hid_t loc_id, const char *name, int *idx,
|
||||
H5G_iterate_t op, void *op_data);
|
||||
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
|
||||
|
@ -494,7 +494,7 @@ H5G_stab_iterate(const H5O_loc_t *oloc, hid_t dxpl_id, H5_iter_order_t order,
|
||||
|
||||
/* Sanity check */
|
||||
HDassert(oloc);
|
||||
HDassert(lnk_op && lnk_op->u.old_op);
|
||||
HDassert(lnk_op && lnk_op->u.app_op);
|
||||
|
||||
/* Get the B-tree info */
|
||||
if(NULL == H5O_msg_read(oloc, H5O_STAB_ID, &stab, dxpl_id))
|
||||
|
@ -118,13 +118,8 @@ typedef struct {
|
||||
long_long r, s, t;
|
||||
} stype4;
|
||||
|
||||
#if 1
|
||||
# define NX 100u
|
||||
# define NY 2000u
|
||||
#else
|
||||
# define NX 12u
|
||||
# define NY 9u
|
||||
#endif
|
||||
#define NX 100u
|
||||
#define NY 2000u
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
@ -1254,19 +1249,19 @@ error:
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static int
|
||||
compare_data(unsigned char *src_data, unsigned char *dst_data, hbool_t src_subset)
|
||||
compare_data(void *src_data, void *dst_data, hbool_t src_subset)
|
||||
{
|
||||
stype1 *s_ptr;
|
||||
stype2 *d_ptr;
|
||||
int i;
|
||||
|
||||
for (i=0; i<(int)NX*NY; i++) {
|
||||
for(i = 0; i < (int)(NX * NY); i++) {
|
||||
if(src_subset) {
|
||||
s_ptr = ((stype1*)src_data) + i;
|
||||
d_ptr = ((stype2*)dst_data) + i;
|
||||
d_ptr = ((stype2*)dst_data) + i;
|
||||
} else {
|
||||
s_ptr = ((stype2*)src_data) + i;
|
||||
d_ptr = ((stype1*)dst_data) + i;
|
||||
d_ptr = ((stype1*)dst_data) + i;
|
||||
}
|
||||
|
||||
if (s_ptr->a != d_ptr->a ||
|
||||
@ -1469,7 +1464,7 @@ test_hdf5_src_subset(char *filename, hid_t fapl)
|
||||
if(H5Dread(dataset, dst_tid, H5S_ALL, H5S_ALL, dxpl, rbuf)<0)
|
||||
goto error;
|
||||
|
||||
if(compare_data(orig, rbuf, TRUE)<0)
|
||||
if(compare_data(orig, rbuf, TRUE) < 0)
|
||||
goto error;
|
||||
|
||||
if(H5Dclose(dataset) < 0)
|
||||
@ -1482,7 +1477,7 @@ test_hdf5_src_subset(char *filename, hid_t fapl)
|
||||
if(H5Dread(dataset, dst_tid, H5S_ALL, H5S_ALL, dxpl, rbuf)<0)
|
||||
goto error;
|
||||
|
||||
if(compare_data(orig, rbuf, TRUE)<0)
|
||||
if(compare_data(orig, rbuf, TRUE) < 0)
|
||||
goto error;
|
||||
|
||||
if(H5Dclose(dataset) < 0)
|
||||
@ -1673,7 +1668,7 @@ test_hdf5_dst_subset(char *filename, hid_t fapl)
|
||||
if(H5Dread(dataset, dst_tid, H5S_ALL, H5S_ALL, dxpl, rbuf)<0)
|
||||
goto error;
|
||||
|
||||
if(compare_data(orig, rbuf, FALSE)<0)
|
||||
if(compare_data(orig, rbuf, FALSE) < 0)
|
||||
goto error;
|
||||
|
||||
if(H5Dclose(dataset) < 0)
|
||||
@ -1686,7 +1681,7 @@ test_hdf5_dst_subset(char *filename, hid_t fapl)
|
||||
if(H5Dread(dataset, dst_tid, H5S_ALL, H5S_ALL, dxpl, rbuf)<0)
|
||||
goto error;
|
||||
|
||||
if(compare_data(orig, rbuf, FALSE)<0)
|
||||
if(compare_data(orig, rbuf, FALSE) < 0)
|
||||
goto error;
|
||||
|
||||
if(H5Dclose(dataset) < 0)
|
||||
|
24
test/links.c
24
test/links.c
@ -55,7 +55,7 @@ const char *FILENAME[] = {
|
||||
#define UD_PLIST_TYPE 128
|
||||
#define UD_CBFAIL_TYPE UD_PLIST_TYPE
|
||||
#define UD_ERROR_TYPE 189
|
||||
#define UD_BAD_TYPE1 H5G_LINK_HARD
|
||||
#define UD_BAD_TYPE1 H5L_TYPE_HARD
|
||||
#define UD_BAD_TYPE2 (H5L_TYPE_UD_MIN - 5)
|
||||
#define UD_BAD_VERS (H5L_LINK_CLASS_T_VERS + 1)
|
||||
|
||||
@ -5209,7 +5209,7 @@ linkinfo(hid_t fapl, hbool_t new_format)
|
||||
if(H5Lget_info(fid, "ext_link", &li, H5P_DEFAULT) < 0) TEST_ERROR
|
||||
if(li.type != H5L_TYPE_EXTERNAL) TEST_ERROR
|
||||
if(H5Lget_info(fid, "softlink", &li, H5P_DEFAULT) < 0) TEST_ERROR
|
||||
if(li.type != H5G_LINK_SOFT) TEST_ERROR
|
||||
if(li.type != H5L_TYPE_SOFT) TEST_ERROR
|
||||
if(H5Lget_info(fid, "ud_link", &li, H5P_DEFAULT) < 0) TEST_ERROR
|
||||
if(li.type != UD_PLIST_TYPE) TEST_ERROR
|
||||
|
||||
@ -7148,6 +7148,7 @@ HDfprintf(stderr, "op_data->curr = %Hd\n", op_data->curr);
|
||||
return(H5_ITER_CONT);
|
||||
} /* end link_iterate_cb() */
|
||||
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: group_iterate_cb
|
||||
@ -7168,6 +7169,7 @@ group_iterate_cb(hid_t group_id, const char *link_name, void *_op_data)
|
||||
{
|
||||
return(link_iterate_cb(group_id, link_name, NULL, _op_data));
|
||||
} /* end group_iterate_cb() */
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
@ -7211,7 +7213,9 @@ link_iterate_check(hid_t group_id, H5_index_t idx_type, H5_iter_order_t order,
|
||||
{
|
||||
unsigned v; /* Local index variable */
|
||||
hsize_t skip; /* # of links to skip in group */
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
int gskip; /* # of links to skip in group, with H5Giterate */
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
herr_t ret; /* Generic return value */
|
||||
|
||||
/* Iterate over links in group */
|
||||
@ -7229,6 +7233,7 @@ link_iterate_check(hid_t group_id, H5_index_t idx_type, H5_iter_order_t order,
|
||||
if(iter_info->visited[v] == FALSE) TEST_ERROR
|
||||
|
||||
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
/* Iterate over links in group, with H5Giterate */
|
||||
iter_info->nskipped = gskip = 0;
|
||||
iter_info->order = order;
|
||||
@ -7242,6 +7247,7 @@ link_iterate_check(hid_t group_id, H5_index_t idx_type, H5_iter_order_t order,
|
||||
if(gskip != (int)max_links) TEST_ERROR
|
||||
for(v = 0; v < max_links; v++)
|
||||
if(iter_info->visited[v] == FALSE) TEST_ERROR
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
|
||||
|
||||
/* Skip over some links in group */
|
||||
@ -7275,6 +7281,7 @@ link_iterate_check(hid_t group_id, H5_index_t idx_type, H5_iter_order_t order,
|
||||
} /* end else */
|
||||
|
||||
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
/* Skip over some links in group, with H5Giterate */
|
||||
iter_info->nskipped = gskip = max_links / 2;
|
||||
iter_info->order = order;
|
||||
@ -7304,6 +7311,7 @@ link_iterate_check(hid_t group_id, H5_index_t idx_type, H5_iter_order_t order,
|
||||
|
||||
if(nvisit != (max_links / 2)) TEST_ERROR
|
||||
} /* end else */
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
|
||||
|
||||
/* Iterate over links in group, stopping in the middle */
|
||||
@ -7318,6 +7326,7 @@ link_iterate_check(hid_t group_id, H5_index_t idx_type, H5_iter_order_t order,
|
||||
if(iter_info->ncalled != 3) TEST_ERROR
|
||||
|
||||
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
/* Iterate over links in group, stopping in the middle, with H5Giterate() */
|
||||
iter_info->nskipped = gskip = 0;
|
||||
iter_info->order = order;
|
||||
@ -7328,6 +7337,7 @@ link_iterate_check(hid_t group_id, H5_index_t idx_type, H5_iter_order_t order,
|
||||
if((ret = H5Giterate(group_id, ".", &gskip, group_iterate_cb, iter_info)) < 0) TEST_ERROR
|
||||
if(ret != CORDER_ITER_STOP) TEST_ERROR
|
||||
if(iter_info->ncalled != 3) TEST_ERROR
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
|
||||
|
||||
/* Check for iteration routine indicating failure */
|
||||
@ -7617,6 +7627,7 @@ HDfprintf(stderr, "op_data->curr = %Hd\n", op_data->curr);
|
||||
return(H5_ITER_CONT);
|
||||
} /* end link_iterate_old_cb() */
|
||||
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: group_iterate_old_cb
|
||||
@ -7637,6 +7648,7 @@ group_iterate_old_cb(hid_t group_id, const char *link_name, void *_op_data)
|
||||
{
|
||||
return(link_iterate_old_cb(group_id, link_name, NULL, _op_data));
|
||||
} /* end group_iterate_old_cb() */
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
@ -7658,7 +7670,9 @@ link_iterate_old_check(hid_t group_id, H5_iter_order_t order,
|
||||
{
|
||||
unsigned v; /* Local index variable */
|
||||
hsize_t skip; /* # of links to skip in group */
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
int gskip; /* # of links to skip in group, with H5Giterate */
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
herr_t ret; /* Generic return value */
|
||||
|
||||
/* Iterate over links in group */
|
||||
@ -7676,6 +7690,7 @@ link_iterate_old_check(hid_t group_id, H5_iter_order_t order,
|
||||
if(iter_info->visited[v] == FALSE) TEST_ERROR
|
||||
|
||||
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
/* Iterate over links in group, with H5Giterate */
|
||||
iter_info->nskipped = gskip = 0;
|
||||
iter_info->order = order;
|
||||
@ -7689,6 +7704,7 @@ link_iterate_old_check(hid_t group_id, H5_iter_order_t order,
|
||||
if(gskip != (int)max_links) TEST_ERROR
|
||||
for(v = 0; v < max_links; v++)
|
||||
if(iter_info->visited[v] == FALSE) TEST_ERROR
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
|
||||
|
||||
/* Skip over some links in group */
|
||||
@ -7722,6 +7738,7 @@ link_iterate_old_check(hid_t group_id, H5_iter_order_t order,
|
||||
} /* end else */
|
||||
|
||||
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
/* Skip over some links in group, with H5Giterate */
|
||||
iter_info->nskipped = gskip = max_links / 2;
|
||||
iter_info->order = order;
|
||||
@ -7751,6 +7768,7 @@ link_iterate_old_check(hid_t group_id, H5_iter_order_t order,
|
||||
|
||||
if(nvisit != (max_links / 2)) TEST_ERROR
|
||||
} /* end else */
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
|
||||
|
||||
/* Iterate over links in group, stopping in the middle */
|
||||
@ -7765,6 +7783,7 @@ link_iterate_old_check(hid_t group_id, H5_iter_order_t order,
|
||||
if(iter_info->ncalled != 3) TEST_ERROR
|
||||
|
||||
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
/* Iterate over links in group, stopping in the middle, with H5Giterate() */
|
||||
iter_info->nskipped = gskip = 0;
|
||||
iter_info->order = order;
|
||||
@ -7775,6 +7794,7 @@ link_iterate_old_check(hid_t group_id, H5_iter_order_t order,
|
||||
if((ret = H5Giterate(group_id, ".", &gskip, group_iterate_old_cb, iter_info)) < 0) TEST_ERROR
|
||||
if(ret != CORDER_ITER_STOP) TEST_ERROR
|
||||
if(iter_info->ncalled != 3) TEST_ERROR
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
|
||||
|
||||
/* Check for iteration routine indicating failure */
|
||||
|
@ -4979,7 +4979,7 @@ test_copy_group_links(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl)
|
||||
if(H5Dclose(did) < 0) TEST_ERROR
|
||||
|
||||
/* make a hard link to the dataset */
|
||||
if(H5Lcreate_hard(fid_src, NAME_LINK_DATASET, H5G_SAME_LOC, NAME_LINK_HARD, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
||||
if(H5Lcreate_hard(fid_src, NAME_LINK_DATASET, H5L_SAME_LOC, NAME_LINK_HARD, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
||||
|
||||
/* make a soft link to the dataset */
|
||||
if(H5Lcreate_soft(NAME_LINK_DATASET, fid_src, NAME_LINK_SOFT, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
||||
@ -7019,7 +7019,7 @@ test_copy_option(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl, unsigned flag, hboo
|
||||
|
||||
/* Create group to compare with */
|
||||
if((gid = H5Gcreate2(fid_src, NAME_GROUP_LINK2, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
||||
if(H5Lcreate_hard(fid_src, NAME_DATASET_SUB_SUB, H5G_SAME_LOC, NAME_LINK_SOFT2, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
||||
if(H5Lcreate_hard(fid_src, NAME_DATASET_SUB_SUB, H5L_SAME_LOC, NAME_LINK_SOFT2, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
||||
if(H5Lcreate_soft("nowhere", fid_src, NAME_LINK_SOFT_DANGLE2, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
||||
if(H5Gclose(gid) < 0) FAIL_STACK_ERROR
|
||||
} /* end if */
|
||||
|
@ -61,8 +61,10 @@ typedef struct {
|
||||
/* Local functions */
|
||||
int iter_strcmp(const void *s1, const void *s2);
|
||||
int iter_strcmp2(const void *s1, const void *s2);
|
||||
herr_t giter_cb(hid_t group, const char *name, void *op_data);
|
||||
herr_t giter_cb2(hid_t group, const char *name, void *op_data);
|
||||
static herr_t liter_cb(hid_t group, const char *name, const H5L_info_t *info,
|
||||
void *op_data);
|
||||
static herr_t liter_cb2(hid_t group, const char *name, const H5L_info_t *info,
|
||||
void *op_data);
|
||||
herr_t aiter_cb(hid_t loc_id, const char *name, void *op_data);
|
||||
|
||||
/****************************************************************
|
||||
@ -77,10 +79,12 @@ int iter_strcmp(const void *s1, const void *s2)
|
||||
|
||||
/****************************************************************
|
||||
**
|
||||
** giter_cb(): Custom group iteration callback routine.
|
||||
** liter_cb(): Custom link iteration callback routine.
|
||||
**
|
||||
****************************************************************/
|
||||
herr_t giter_cb(hid_t UNUSED group, const char *name, void *op_data)
|
||||
static herr_t
|
||||
liter_cb(hid_t UNUSED group, const char *name, const H5L_info_t UNUSED *link_info,
|
||||
void *op_data)
|
||||
{
|
||||
iter_info *info = (iter_info *)op_data;
|
||||
static int count = 0;
|
||||
@ -107,14 +111,15 @@ herr_t giter_cb(hid_t UNUSED group, const char *name, void *op_data)
|
||||
printf("invalid iteration command");
|
||||
return(-1);
|
||||
} /* end switch */
|
||||
} /* end giter_cb() */
|
||||
} /* end liter_cb() */
|
||||
|
||||
/****************************************************************
|
||||
**
|
||||
** test_iter_group(): Test group iteration functionality
|
||||
**
|
||||
****************************************************************/
|
||||
static void test_iter_group(hid_t fapl, hbool_t new_format)
|
||||
static void
|
||||
test_iter_group(hid_t fapl, hbool_t new_format)
|
||||
{
|
||||
hid_t file; /* File ID */
|
||||
hid_t dataset; /* Dataset ID */
|
||||
@ -122,7 +127,7 @@ static void test_iter_group(hid_t fapl, hbool_t new_format)
|
||||
hid_t filespace; /* Common dataspace ID */
|
||||
hid_t root_group,grp; /* Root group ID */
|
||||
int i; /* counting variable */
|
||||
int idx; /* Index in the group */
|
||||
hsize_t idx; /* Index in the group */
|
||||
char name[NAMELEN]; /* temporary name buffer */
|
||||
char *lnames[NDATASETS + 2];/* Names of the links created */
|
||||
char dataset_name[NAMELEN]; /* dataset name */
|
||||
@ -138,10 +143,10 @@ static void test_iter_group(hid_t fapl, hbool_t new_format)
|
||||
CHECK(file, FAIL, "H5Fcreate");
|
||||
|
||||
/* Test iterating over empty group */
|
||||
info.command=RET_ZERO;
|
||||
idx=0;
|
||||
ret=H5Giterate(file,"/",&idx,giter_cb,&info);
|
||||
VERIFY(ret, SUCCEED, "H5Giterate");
|
||||
info.command = RET_ZERO;
|
||||
idx = 0;
|
||||
ret = H5Literate(file, "/", H5_INDEX_NAME, H5_ITER_INC, &idx, liter_cb, &info, H5P_DEFAULT);
|
||||
VERIFY(ret, SUCCEED, "H5Literate");
|
||||
|
||||
datatype = H5Tcopy(H5T_NATIVE_INT);
|
||||
CHECK(datatype, FAIL, "H5Tcopy");
|
||||
@ -255,45 +260,45 @@ static void test_iter_group(hid_t fapl, hbool_t new_format)
|
||||
|
||||
/* Test invalid indices for starting iteration */
|
||||
info.command = RET_ZERO;
|
||||
idx = -1;
|
||||
idx = (hsize_t)-1;
|
||||
H5E_BEGIN_TRY {
|
||||
ret = H5Giterate(file, "/", &idx, giter_cb, &info);
|
||||
ret = H5Literate(file, "/", H5_INDEX_NAME, H5_ITER_INC, &idx, liter_cb, &info, H5P_DEFAULT);
|
||||
} H5E_END_TRY;
|
||||
VERIFY(ret, FAIL, "H5Giterate");
|
||||
VERIFY(ret, FAIL, "H5Literate");
|
||||
|
||||
/* Test skipping exactly as many entries as in the group */
|
||||
idx = NDATASETS + 2;
|
||||
H5E_BEGIN_TRY {
|
||||
ret = H5Giterate(file, "/", &idx, giter_cb, &info);
|
||||
ret = H5Literate(file, "/", H5_INDEX_NAME, H5_ITER_INC, &idx, liter_cb, &info, H5P_DEFAULT);
|
||||
} H5E_END_TRY;
|
||||
VERIFY(ret, FAIL, "H5Giterate");
|
||||
VERIFY(ret, FAIL, "H5Literate");
|
||||
|
||||
/* Test skipping more entries than are in the group */
|
||||
idx = NDATASETS + 3;
|
||||
H5E_BEGIN_TRY {
|
||||
ret = H5Giterate(file, "/", &idx, giter_cb, &info);
|
||||
ret = H5Literate(file, "/", H5_INDEX_NAME, H5_ITER_INC, &idx, liter_cb, &info, H5P_DEFAULT);
|
||||
} H5E_END_TRY;
|
||||
VERIFY(ret, FAIL, "H5Giterate");
|
||||
VERIFY(ret, FAIL, "H5Literate");
|
||||
|
||||
/* Test all objects in group, when callback always returns 0 */
|
||||
info.command = RET_ZERO;
|
||||
idx = 0;
|
||||
if((ret = H5Giterate(file, "/", &idx, giter_cb, &info)) > 0)
|
||||
if((ret = H5Literate(file, "/", H5_INDEX_NAME, H5_ITER_INC, &idx, liter_cb, &info, H5P_DEFAULT)) > 0)
|
||||
TestErrPrintf("Group iteration function didn't return zero correctly!\n");
|
||||
|
||||
/* Test all objects in group, when callback always returns 1 */
|
||||
/* This also tests the "restarting" ability, because the index changes */
|
||||
info.command = RET_TWO;
|
||||
idx = i = 0;
|
||||
while((ret = H5Giterate(file, "/", &idx, giter_cb, &info)) > 0) {
|
||||
while((ret = H5Literate(file, "/", H5_INDEX_NAME, H5_ITER_INC, &idx, liter_cb, &info, H5P_DEFAULT)) > 0) {
|
||||
/* Verify return value from iterator gets propagated correctly */
|
||||
VERIFY(ret, 2, "H5Giterate");
|
||||
VERIFY(ret, 2, "H5Literate");
|
||||
|
||||
/* Increment the number of times "2" is returned */
|
||||
i++;
|
||||
|
||||
/* Verify that the index is the correct value */
|
||||
VERIFY(idx, i, "H5Giterate");
|
||||
VERIFY(idx, (hsize_t)i, "H5Literate");
|
||||
if(idx > (NDATASETS + 2))
|
||||
TestErrPrintf("Group iteration function walked too far!\n");
|
||||
|
||||
@ -301,7 +306,7 @@ static void test_iter_group(hid_t fapl, hbool_t new_format)
|
||||
if(HDstrcmp(info.name, lnames[idx - 1]) != 0)
|
||||
TestErrPrintf("Group iteration function didn't return name correctly for link - lnames[%u] = '%s'!\n", (idx - 1), lnames[idx - 1]);
|
||||
} /* end while */
|
||||
VERIFY(ret, -1, "H5Giterate");
|
||||
VERIFY(ret, -1, "H5Literate");
|
||||
|
||||
if(i != (NDATASETS + 2))
|
||||
TestErrPrintf("%u: Group iteration function didn't perform multiple iterations correctly!\n", __LINE__);
|
||||
@ -310,15 +315,15 @@ static void test_iter_group(hid_t fapl, hbool_t new_format)
|
||||
/* This also tests the "restarting" ability, because the index changes */
|
||||
info.command = new_format ? RET_CHANGE2 : RET_CHANGE;
|
||||
idx = i = 0;
|
||||
while((ret = H5Giterate(file, "/", &idx, giter_cb, &info)) >= 0) {
|
||||
while((ret = H5Literate(file, "/", H5_INDEX_NAME, H5_ITER_INC, &idx, liter_cb, &info, H5P_DEFAULT)) >= 0) {
|
||||
/* Verify return value from iterator gets propagated correctly */
|
||||
VERIFY(ret, 1, "H5Giterate");
|
||||
VERIFY(ret, 1, "H5Literate");
|
||||
|
||||
/* Increment the number of times "1" is returned */
|
||||
i++;
|
||||
|
||||
/* Verify that the index is the correct value */
|
||||
VERIFY(idx, (i + 10), "H5Giterate");
|
||||
VERIFY(idx, (hsize_t)(i + 10), "H5Literate");
|
||||
if(idx > (NDATASETS + 2))
|
||||
TestErrPrintf("Group iteration function walked too far!\n");
|
||||
|
||||
@ -326,7 +331,7 @@ static void test_iter_group(hid_t fapl, hbool_t new_format)
|
||||
if(HDstrcmp(info.name, lnames[idx - 1]) != 0)
|
||||
TestErrPrintf("Group iteration function didn't return name correctly for link - lnames[%u] = '%s'!\n", (idx - 1), lnames[idx - 1]);
|
||||
} /* end while */
|
||||
VERIFY(ret, -1, "H5Giterate");
|
||||
VERIFY(ret, -1, "H5Literate");
|
||||
|
||||
if(i != 42 || idx != 52)
|
||||
TestErrPrintf("%u: Group iteration function didn't perform multiple iterations correctly!\n", __LINE__);
|
||||
@ -534,10 +539,12 @@ int iter_strcmp2(const void *s1, const void *s2)
|
||||
|
||||
/****************************************************************
|
||||
**
|
||||
** giter_cb2(): Custom group iteration callback routine.
|
||||
** liter_cb2(): Custom link iteration callback routine.
|
||||
**
|
||||
****************************************************************/
|
||||
herr_t giter_cb2(hid_t loc_id, const char *name, void *opdata)
|
||||
static herr_t
|
||||
liter_cb2(hid_t loc_id, const char *name, const H5L_info_t UNUSED *link_info,
|
||||
void *opdata)
|
||||
{
|
||||
const iter_info *test_info = (const iter_info *)opdata;
|
||||
H5G_stat_t statbuf;
|
||||
@ -545,7 +552,7 @@ herr_t giter_cb2(hid_t loc_id, const char *name, void *opdata)
|
||||
|
||||
if(HDstrcmp(name, test_info->name)) {
|
||||
TestErrPrintf("name = '%s', test_info = '%s'\n", name, test_info->name);
|
||||
return(-1);
|
||||
return(H5_ITER_ERROR);
|
||||
} /* end if */
|
||||
|
||||
/*
|
||||
@ -556,11 +563,11 @@ herr_t giter_cb2(hid_t loc_id, const char *name, void *opdata)
|
||||
|
||||
if(test_info->type != statbuf.type) {
|
||||
TestErrPrintf("test_info->type = %d, statbuf.type = %d\n", test_info->type, statbuf.type);
|
||||
return(-1);
|
||||
return(H5_ITER_ERROR);
|
||||
} /* end if */
|
||||
|
||||
return(1);
|
||||
} /* giter_cb2() */
|
||||
return(H5_ITER_STOP);
|
||||
} /* liter_cb2() */
|
||||
|
||||
/****************************************************************
|
||||
**
|
||||
@ -568,7 +575,8 @@ herr_t giter_cb2(hid_t loc_id, const char *name, void *opdata)
|
||||
** for groups with large #'s of objects
|
||||
**
|
||||
****************************************************************/
|
||||
static void test_iter_group_large(hid_t fapl)
|
||||
static void
|
||||
test_iter_group_large(hid_t fapl)
|
||||
{
|
||||
hid_t file; /* HDF5 File IDs */
|
||||
hid_t dataset; /* Dataset ID */
|
||||
@ -666,12 +674,14 @@ static void test_iter_group_large(hid_t fapl)
|
||||
|
||||
/* Iterate through the file to see members of the root group */
|
||||
curr_name = &names[0];
|
||||
ret = H5Giterate(file, "/", NULL, giter_cb2, curr_name);
|
||||
CHECK(ret, FAIL, "H5Giterate");
|
||||
for(i = 1; i < 100; ) {
|
||||
ret = H5Literate(file, "/", H5_INDEX_NAME, H5_ITER_INC, NULL, liter_cb2, curr_name, H5P_DEFAULT);
|
||||
CHECK(ret, FAIL, "H5Literate");
|
||||
for(i = 1; i < 100; i++) {
|
||||
hsize_t idx = i;
|
||||
|
||||
curr_name = &names[i];
|
||||
ret = H5Giterate(file, "/", &i, giter_cb2, curr_name);
|
||||
CHECK(ret, FAIL, "H5Giterate");
|
||||
ret = H5Literate(file, "/", H5_INDEX_NAME, H5_ITER_INC, &idx, liter_cb2, curr_name, H5P_DEFAULT);
|
||||
CHECK(ret, FAIL, "H5Literate");
|
||||
} /* end for */
|
||||
|
||||
/* Close file */
|
||||
|
@ -937,7 +937,8 @@ test_reference_obj_deleted(void)
|
||||
**
|
||||
****************************************************************/
|
||||
static herr_t
|
||||
test_deref_iter_op(hid_t UNUSED group, const char *name, void *op_data)
|
||||
test_deref_iter_op(hid_t UNUSED group, const char *name, const H5L_info_t *info,
|
||||
void *op_data)
|
||||
{
|
||||
int *count = (int *)op_data; /* Pointer to name counter */
|
||||
herr_t ret_value;
|
||||
@ -1060,8 +1061,8 @@ test_reference_group(void)
|
||||
CHECK(gid, FAIL, "H5Rdereference");
|
||||
|
||||
/* Iterate through objects in dereferenced group */
|
||||
ret = H5Giterate(gid, ".", NULL, test_deref_iter_op, &count);
|
||||
CHECK(ret, FAIL, "H5Giterate");
|
||||
ret = H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, test_deref_iter_op, &count, H5P_DEFAULT);
|
||||
CHECK(ret, FAIL, "H5Literate");
|
||||
|
||||
/* Various queries on the group opened */
|
||||
ret = H5Gget_num_objs(gid, &nobjs);
|
||||
|
@ -491,7 +491,7 @@ void test_objnames(hid_t fid, const char* string)
|
||||
HDstrcpy(path_buf, GROUP2_NAME);
|
||||
HDstrcat(path_buf, "/");
|
||||
HDstrcat(path_buf, string);
|
||||
ret = H5Lcreate_hard(grp3_id, path_buf, H5G_SAME_LOC, string, H5P_DEFAULT, H5P_DEFAULT);
|
||||
ret = H5Lcreate_hard(grp3_id, path_buf, H5L_SAME_LOC, string, H5P_DEFAULT, H5P_DEFAULT);
|
||||
CHECK(ret, FAIL, "H5Lcreate_hard");
|
||||
|
||||
/* Open named datatype using soft link */
|
||||
|
@ -181,7 +181,7 @@ test_many(hid_t file)
|
||||
TESTING("forward unlink");
|
||||
for(i = 0; i < how_many; i++) {
|
||||
sprintf(name, "obj_%05d", i);
|
||||
if(H5Lcreate_hard(work, "/test_many_foo", H5G_SAME_LOC, name, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
||||
if(H5Lcreate_hard(work, "/test_many_foo", H5L_SAME_LOC, name, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
||||
} /* end for */
|
||||
for(i = 0; i < how_many; i++) {
|
||||
sprintf(name, "obj_%05d", i);
|
||||
@ -193,7 +193,7 @@ test_many(hid_t file)
|
||||
TESTING("backward unlink");
|
||||
for(i = 0; i < how_many; i++) {
|
||||
sprintf(name, "obj_%05d", i);
|
||||
if(H5Lcreate_hard(work, "/test_many_foo", H5G_SAME_LOC, name, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
||||
if(H5Lcreate_hard(work, "/test_many_foo", H5L_SAME_LOC, name, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
||||
} /* end for */
|
||||
for(i = (how_many - 1); i >= 0; --i) {
|
||||
sprintf(name, "obj_%05d", i);
|
||||
@ -205,7 +205,7 @@ test_many(hid_t file)
|
||||
TESTING("inward unlink");
|
||||
for(i = 0; i < how_many; i++) {
|
||||
sprintf(name, "obj_%05d", i);
|
||||
if(H5Lcreate_hard(work, "/test_many_foo", H5G_SAME_LOC, name, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
||||
if(H5Lcreate_hard(work, "/test_many_foo", H5L_SAME_LOC, name, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
||||
} /* end for */
|
||||
for(i = 0; i < how_many; i++) {
|
||||
if(i % 2)
|
||||
@ -220,7 +220,7 @@ test_many(hid_t file)
|
||||
TESTING("outward unlink");
|
||||
for(i = 0; i < how_many; i++) {
|
||||
sprintf(name, "obj_%05d", i);
|
||||
if(H5Lcreate_hard(work, "/test_many_foo", H5G_SAME_LOC, name, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
||||
if(H5Lcreate_hard(work, "/test_many_foo", H5L_SAME_LOC, name, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
||||
} /* end for */
|
||||
for(i = (how_many - 1); i >= 0; --i) {
|
||||
if(i % 2)
|
||||
@ -380,9 +380,9 @@ test_new_move(hid_t fapl)
|
||||
if(H5Lcreate_soft("/group1/group_move", grp_2, "soft", H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
||||
|
||||
/* Move a group within the file. Both of source and destination use
|
||||
* H5G_SAME_LOC. Should fail. */
|
||||
* H5L_SAME_LOC. Should fail. */
|
||||
H5E_BEGIN_TRY {
|
||||
if(H5Lmove(H5G_SAME_LOC, "group_move", H5G_SAME_LOC, "group_new_name", H5P_DEFAULT, H5P_DEFAULT) != FAIL) TEST_ERROR
|
||||
if(H5Lmove(H5L_SAME_LOC, "group_move", H5L_SAME_LOC, "group_new_name", H5P_DEFAULT, H5P_DEFAULT) != FAIL) TEST_ERROR
|
||||
} H5E_END_TRY;
|
||||
|
||||
/* Move a group across files. Should fail. */
|
||||
|
@ -96,7 +96,7 @@ static int indent; /*how far in to indent the line
|
||||
static hid_t h5_fileaccess(void);
|
||||
static void dump_oid(hid_t oid);
|
||||
static void print_enum(hid_t type);
|
||||
static herr_t dump_all(hid_t group, const char *name, void *op_data);
|
||||
static herr_t dump_all(hid_t group, const char *name, const H5L_info_t *linfo, void *op_data);
|
||||
static int xml_name_to_XID(const char *, char *, int , int );
|
||||
static void init_prefix(char **prfx, size_t prfx_len);
|
||||
static void add_prefix(char **prfx, size_t *prfx_len, const char *name);
|
||||
@ -1411,12 +1411,11 @@ dump_selected_attr(hid_t loc_id, const char *name)
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static herr_t
|
||||
dump_all(hid_t group, const char *name, void * op_data)
|
||||
dump_all(hid_t group, const char *name, const H5L_info_t *linfo, void * op_data)
|
||||
{
|
||||
hid_t obj;
|
||||
char *obj_path = NULL; /* Full path of object */
|
||||
H5G_stat_t statbuf;
|
||||
H5L_info_t linfo; /* Link information */
|
||||
herr_t ret = SUCCEED;
|
||||
|
||||
/* Stat the object */
|
||||
@ -1426,12 +1425,6 @@ dump_all(hid_t group, const char *name, void * op_data)
|
||||
ret = FAIL;
|
||||
goto done;
|
||||
} /* end if */
|
||||
if(H5Lget_info(group, name, &linfo, H5P_DEFAULT) < 0) {
|
||||
error_msg(progname, "unable to get object information\n");
|
||||
d_status = EXIT_FAILURE;
|
||||
ret = FAIL;
|
||||
goto done;
|
||||
} /* end if */
|
||||
|
||||
if (*(int *)op_data != H5G_UNKNOWN && statbuf.type != *(int *) op_data)
|
||||
goto done;
|
||||
@ -1541,9 +1534,10 @@ dump_all(hid_t group, const char *name, void * op_data)
|
||||
HDfree(targbuf);
|
||||
break;
|
||||
}
|
||||
|
||||
case H5G_UDLINK:
|
||||
indentation(indent);
|
||||
switch(linfo.type) {
|
||||
switch(linfo->type) {
|
||||
case H5L_TYPE_EXTERNAL:
|
||||
{
|
||||
char *targbuf;
|
||||
@ -1568,7 +1562,7 @@ dump_all(hid_t group, const char *name, void * op_data)
|
||||
} else {
|
||||
if (!doxml) {
|
||||
indentation(indent + COL);
|
||||
printf("LINKCLASS %d\n", linfo.type);
|
||||
printf("LINKCLASS %d\n", linfo->type);
|
||||
indentation(indent + COL);
|
||||
printf("TARGETFILE \"%s\"\n", filename);
|
||||
indentation(indent + COL);
|
||||
@ -1622,7 +1616,7 @@ dump_all(hid_t group, const char *name, void * op_data)
|
||||
indentation(indent + COL);
|
||||
}
|
||||
if (!doxml)
|
||||
printf("LINKCLASS %d\n", linfo.type);
|
||||
printf("LINKCLASS %d\n", linfo->type);
|
||||
else /* XML */
|
||||
{
|
||||
char linkxid[100];
|
||||
@ -1644,7 +1638,7 @@ dump_all(hid_t group, const char *name, void * op_data)
|
||||
t_name, /* LinkName */
|
||||
linkxid, /* OBJ-XID */
|
||||
t_obj_path, /* H5SourcePath */
|
||||
linfo.type, /* LinkClass */
|
||||
linfo->type, /* LinkClass */
|
||||
parentxid, /* Parents */
|
||||
t_prefix); /* H5ParentPaths */
|
||||
HDfree(t_prefix);
|
||||
@ -1879,12 +1873,12 @@ dump_group(hid_t gid, const char *name)
|
||||
/* dump unamed type in root group */
|
||||
for (u = 0; u < type_table->nobjs; u++)
|
||||
if (!type_table->objs[u].recorded) {
|
||||
dset = H5Dopen(gid, type_table->objs[u].objname);
|
||||
type = H5Dget_type(dset);
|
||||
sprintf(type_name, "#"H5_PRINTF_HADDR_FMT, type_table->objs[u].objno);
|
||||
dump_function_table->dump_named_datatype_function(type, type_name);
|
||||
H5Tclose(type);
|
||||
H5Dclose(dset);
|
||||
dset = H5Dopen(gid, type_table->objs[u].objname);
|
||||
type = H5Dget_type(dset);
|
||||
sprintf(type_name, "#"H5_PRINTF_HADDR_FMT, type_table->objs[u].objno);
|
||||
dump_function_table->dump_named_datatype_function(type, type_name);
|
||||
H5Tclose(type);
|
||||
H5Dclose(dset);
|
||||
}
|
||||
} /* end if */
|
||||
|
||||
@ -1896,22 +1890,22 @@ dump_group(hid_t gid, const char *name)
|
||||
|
||||
found_obj = search_obj(group_table, objno);
|
||||
|
||||
if (found_obj == NULL) {
|
||||
indentation(indent);
|
||||
error_msg(progname, "internal error (file %s:line %d)\n",
|
||||
__FILE__, __LINE__);
|
||||
d_status = EXIT_FAILURE;
|
||||
} else if (found_obj->displayed) {
|
||||
indentation(indent);
|
||||
printf("%s \"%s\"\n", HARDLINK, found_obj->objname);
|
||||
if (found_obj == NULL) {
|
||||
indentation(indent);
|
||||
error_msg(progname, "internal error (file %s:line %d)\n",
|
||||
__FILE__, __LINE__);
|
||||
d_status = EXIT_FAILURE;
|
||||
} else if (found_obj->displayed) {
|
||||
indentation(indent);
|
||||
printf("%s \"%s\"\n", HARDLINK, found_obj->objname);
|
||||
} else {
|
||||
found_obj->displayed = TRUE;
|
||||
H5Aiterate(gid, NULL, dump_attr, NULL);
|
||||
H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
|
||||
}
|
||||
} else {
|
||||
found_obj->displayed = TRUE;
|
||||
H5Aiterate(gid, NULL, dump_attr, NULL);
|
||||
H5Giterate(gid, ".", NULL, dump_all, (void *) &xtype);
|
||||
}
|
||||
} else {
|
||||
H5Aiterate(gid, NULL, dump_attr, NULL);
|
||||
H5Giterate(gid, ".", NULL, dump_all, (void *) &xtype);
|
||||
H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
|
||||
}
|
||||
|
||||
indent -= COL;
|
||||
@ -3786,7 +3780,7 @@ main(int argc, const char *argv[])
|
||||
|
||||
/* find all objects that might be targets of a refernce */
|
||||
init_ref_path_table(fid); /* Insert the root group into the ref. path table */
|
||||
H5Giterate(fid, (const char *)"/", NULL, fill_ref_path_table, (void *)"");
|
||||
H5Literate(fid, (const char *)"/", H5_INDEX_NAME, H5_ITER_INC, NULL, fill_ref_path_table, (void *)"", H5P_DEFAULT);
|
||||
|
||||
if(doxml) {
|
||||
/* initialize XML */
|
||||
@ -5247,15 +5241,15 @@ xml_dump_group(hid_t gid, const char *name)
|
||||
|
||||
/* iterate through all the members */
|
||||
xtype = H5G_TYPE;
|
||||
H5Giterate(gid, ".", NULL, dump_all, (void *) &xtype);
|
||||
H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
|
||||
xtype = H5G_DATASET;
|
||||
H5Giterate(gid, ".", NULL, dump_all, (void *) &xtype);
|
||||
H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
|
||||
xtype = H5G_GROUP;
|
||||
H5Giterate(gid, ".", NULL, dump_all, (void *) &xtype);
|
||||
H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
|
||||
xtype = H5G_LINK;
|
||||
H5Giterate(gid, ".", NULL, dump_all, (void *) &xtype);
|
||||
H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
|
||||
xtype = H5G_UDLINK;
|
||||
H5Giterate(gid, ".", NULL, dump_all, (void *) &xtype);
|
||||
H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
|
||||
}
|
||||
free(t_name);
|
||||
free(grpxid);
|
||||
@ -5263,60 +5257,60 @@ xml_dump_group(hid_t gid, const char *name)
|
||||
}
|
||||
} else {
|
||||
|
||||
/* only link -- must be first time! */
|
||||
char *t_name = xml_escape_the_name(name);
|
||||
char *grpxid = malloc(100);
|
||||
char *parentxid = malloc(100);
|
||||
if (isRoot) {
|
||||
xml_name_to_XID("/",grpxid,100,1);
|
||||
printf("<%sRootGroup OBJ-XID=\"%s\" H5Path=\"%s\">\n",
|
||||
xmlnsprefix,grpxid,"/");
|
||||
} else {
|
||||
char *t_tmp = xml_escape_the_name(tmp);
|
||||
par_name = xml_escape_the_name(par);
|
||||
xml_name_to_XID(tmp,grpxid,100,1);
|
||||
xml_name_to_XID(par,parentxid,100,1);
|
||||
printf("<%sGroup Name=\"%s\" OBJ-XID=\"%s\" H5Path=\"%s\" "
|
||||
"Parents=\"%s\" H5ParentPaths=\"%s\" >\n",
|
||||
xmlnsprefix,t_name, grpxid, t_tmp,
|
||||
parentxid, par_name);
|
||||
free(t_tmp);
|
||||
free(par_name);
|
||||
}
|
||||
free(t_name);
|
||||
free(grpxid);
|
||||
free(parentxid);
|
||||
/* only link -- must be first time! */
|
||||
char *t_name = xml_escape_the_name(name);
|
||||
char *grpxid = malloc(100);
|
||||
char *parentxid = malloc(100);
|
||||
if (isRoot) {
|
||||
xml_name_to_XID("/",grpxid,100,1);
|
||||
printf("<%sRootGroup OBJ-XID=\"%s\" H5Path=\"%s\">\n",
|
||||
xmlnsprefix,grpxid,"/");
|
||||
} else {
|
||||
char *t_tmp = xml_escape_the_name(tmp);
|
||||
par_name = xml_escape_the_name(par);
|
||||
xml_name_to_XID(tmp,grpxid,100,1);
|
||||
xml_name_to_XID(par,parentxid,100,1);
|
||||
printf("<%sGroup Name=\"%s\" OBJ-XID=\"%s\" H5Path=\"%s\" "
|
||||
"Parents=\"%s\" H5ParentPaths=\"%s\" >\n",
|
||||
xmlnsprefix,t_name, grpxid, t_tmp,
|
||||
parentxid, par_name);
|
||||
free(t_tmp);
|
||||
free(par_name);
|
||||
}
|
||||
free(t_name);
|
||||
free(grpxid);
|
||||
free(parentxid);
|
||||
|
||||
/* 1. do all the attributes of the group */
|
||||
H5Aiterate(gid, NULL, dump_function_table->dump_attribute_function, NULL);
|
||||
/* 1. do all the attributes of the group */
|
||||
H5Aiterate(gid, NULL, dump_function_table->dump_attribute_function, NULL);
|
||||
|
||||
if (!strcmp(name, "/") && unamedtype) {
|
||||
if (!strcmp(name, "/") && unamedtype) {
|
||||
unsigned u;
|
||||
|
||||
/* Very special case: dump unamed type in root group */
|
||||
for (u = 0; u < type_table->nobjs; u++) {
|
||||
if (!type_table->objs[u].recorded) {
|
||||
dset = H5Dopen(gid, type_table->objs[u].objname);
|
||||
type = H5Dget_type(dset);
|
||||
sprintf(type_name, "#"H5_PRINTF_HADDR_FMT, type_table->objs[u].objno);
|
||||
dump_function_table->dump_named_datatype_function(type, type_name);
|
||||
H5Tclose(type);
|
||||
H5Dclose(dset);
|
||||
/* Very special case: dump unamed type in root group */
|
||||
for (u = 0; u < type_table->nobjs; u++) {
|
||||
if (!type_table->objs[u].recorded) {
|
||||
dset = H5Dopen(gid, type_table->objs[u].objname);
|
||||
type = H5Dget_type(dset);
|
||||
sprintf(type_name, "#"H5_PRINTF_HADDR_FMT, type_table->objs[u].objno);
|
||||
dump_function_table->dump_named_datatype_function(type, type_name);
|
||||
H5Tclose(type);
|
||||
H5Dclose(dset);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* iterate through all the members */
|
||||
xtype = H5G_TYPE;
|
||||
H5Giterate(gid, ".", NULL, dump_all, (void *) &xtype);
|
||||
xtype = H5G_DATASET;
|
||||
H5Giterate(gid, ".", NULL, dump_all, (void *) &xtype);
|
||||
xtype = H5G_GROUP;
|
||||
H5Giterate(gid, ".", NULL, dump_all, (void *) &xtype);
|
||||
xtype = H5G_LINK;
|
||||
H5Giterate(gid, ".", NULL, dump_all, (void *) &xtype);
|
||||
xtype = H5G_UDLINK;
|
||||
H5Giterate(gid, ".", NULL, dump_all, (void *) &xtype);
|
||||
/* iterate through all the members */
|
||||
xtype = H5G_TYPE;
|
||||
H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
|
||||
xtype = H5G_DATASET;
|
||||
H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
|
||||
xtype = H5G_GROUP;
|
||||
H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
|
||||
xtype = H5G_LINK;
|
||||
H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
|
||||
xtype = H5G_UDLINK;
|
||||
H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
|
||||
}
|
||||
|
||||
indent -= COL;
|
||||
|
@ -76,7 +76,7 @@ static struct dispatch_t {
|
||||
dispatch_g[TYPE].list2 = (LIST2); \
|
||||
}
|
||||
|
||||
static herr_t list (hid_t group, const char *name, void *cd);
|
||||
static herr_t list (hid_t group, const char *name, const H5L_info_t *linfo, void *cd);
|
||||
static void display_type(hid_t type, int ind);
|
||||
static char *fix_name(const char *path, const char *base);
|
||||
|
||||
@ -1673,7 +1673,7 @@ group_list2(hid_t grp, const char *name)
|
||||
|
||||
if (recursive_g) {
|
||||
iter.container = name;
|
||||
H5Giterate(grp, ".", NULL, list, &iter);
|
||||
H5Literate(grp, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, list, &iter, H5P_DEFAULT);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -1830,10 +1830,10 @@ error:
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static herr_t
|
||||
list (hid_t group, const char *name, void *_iter)
|
||||
list(hid_t group, const char *name, const H5L_info_t UNUSED *linfo, void *_iter)
|
||||
{
|
||||
hid_t obj=-1;
|
||||
char buf[512], comment[50], *fullname=NULL, *s=NULL;
|
||||
hid_t obj = -1;
|
||||
char buf[512], comment[50], *fullname = NULL, *s = NULL;
|
||||
H5G_stat_t sb;
|
||||
haddr_t objno; /* Compact form of object's location */
|
||||
struct tm *tm;
|
||||
@ -1855,21 +1855,20 @@ list (hid_t group, const char *name, void *_iter)
|
||||
H5E_BEGIN_TRY {
|
||||
status = H5Gget_objinfo(group, name, FALSE, &sb);
|
||||
} H5E_END_TRY;
|
||||
if (status<0) {
|
||||
if(status < 0) {
|
||||
puts("**NOT FOUND**");
|
||||
return 0;
|
||||
} else if (sb.type<0 || sb.type>=H5G_NTYPES) {
|
||||
} else if(sb.type < 0 || sb.type >= H5G_NTYPES) {
|
||||
printf("Unknown type(%d)", sb.type);
|
||||
sb.type = H5G_UNKNOWN;
|
||||
}
|
||||
if (sb.type>=0 && dispatch_g[sb.type].name) {
|
||||
if(sb.type >= 0 && dispatch_g[sb.type].name)
|
||||
fputs(dispatch_g[sb.type].name, stdout);
|
||||
}
|
||||
objno = (haddr_t)sb.objno[0] | ((haddr_t)sb.objno[1] << (8 * sizeof(long)));
|
||||
|
||||
/* If the object has already been printed then just show the object ID
|
||||
* and return. */
|
||||
if ((s=sym_lookup(&sb))) {
|
||||
if((s = sym_lookup(&sb))) {
|
||||
printf(", same as ");
|
||||
display_string(stdout, s, TRUE);
|
||||
printf("\n");
|
||||
@ -1918,7 +1917,7 @@ list (hid_t group, const char *name, void *_iter)
|
||||
puts("\"");
|
||||
} /* end if */
|
||||
} /* end if */
|
||||
if(sb.type>=0 && dispatch_g[sb.type].list2)
|
||||
if(sb.type >= 0 && dispatch_g[sb.type].list2)
|
||||
(dispatch_g[sb.type].list2)(obj, fullname);
|
||||
|
||||
done:
|
||||
@ -2340,7 +2339,7 @@ main (int argc, const char *argv[])
|
||||
} /* end if */
|
||||
|
||||
/* list */
|
||||
H5Giterate(file, oname, NULL, list, &iter);
|
||||
H5Literate(file, oname, H5_INDEX_NAME, H5_ITER_INC, NULL, list, &iter, H5P_DEFAULT);
|
||||
free(container);
|
||||
|
||||
} else if((root = H5Gopen2(file, "/", H5P_DEFAULT)) < 0) {
|
||||
@ -2350,7 +2349,7 @@ main (int argc, const char *argv[])
|
||||
/* Specified name is a non-group object -- list that object. The
|
||||
* container for the object is everything up to the base name. */
|
||||
iter.container = show_file_name_g ? fname : "/";
|
||||
list(root, oname, &iter);
|
||||
list(root, oname, NULL, &iter);
|
||||
if(H5Gclose(root) < 0)
|
||||
leave(1);
|
||||
}
|
||||
|
@ -459,7 +459,7 @@ attribute_stats(iter_t *iter, const H5O_info_t *oi)
|
||||
*/
|
||||
static herr_t
|
||||
group_stats(hid_t group, const char *name, const char *fullname,
|
||||
const H5O_info_t *oi, H5G_iterate_t walk, iter_t *iter)
|
||||
const H5O_info_t *oi, H5L_iterate_t walk, iter_t *iter)
|
||||
{
|
||||
hid_t gid; /* Group ID */
|
||||
const char *last_container;
|
||||
@ -525,7 +525,7 @@ group_stats(hid_t group, const char *name, const char *fullname,
|
||||
iter->curr_depth++;
|
||||
|
||||
/* Recursively descend into current group's objects */
|
||||
H5Giterate(group, name, NULL, walk, iter);
|
||||
H5Literate(group, name, H5_INDEX_NAME, H5_ITER_INC, NULL, walk, iter, H5P_DEFAULT);
|
||||
|
||||
/* Revert current container info */
|
||||
iter->container = last_container;
|
||||
@ -742,7 +742,7 @@ dataset_stats(hid_t group, const char *name, const H5O_info_t *oi, iter_t *iter)
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static herr_t
|
||||
walk(hid_t group, const char *name, void *_iter)
|
||||
walk(hid_t group, const char *name, const H5L_info_t *linfo, void *_iter)
|
||||
{
|
||||
iter_t *iter = (iter_t *)_iter;
|
||||
H5O_info_t oi;
|
||||
@ -1359,7 +1359,7 @@ main(int argc, const char *argv[])
|
||||
for(i = 0; i < argc; i++) {
|
||||
if(hand[i].obj) {
|
||||
if(hand[i].flag) {
|
||||
walk(fid, hand[i].obj, &iter);
|
||||
walk(fid, hand[i].obj, NULL, &iter);
|
||||
print_statistics(hand[i].obj, &iter);
|
||||
}
|
||||
}
|
||||
|
@ -894,9 +894,8 @@ h5tools_dump_simple_subset(FILE *stream, const h5tool_format_t *info, hid_t dset
|
||||
if (count == 1)
|
||||
flags |= END_OF_DATA;
|
||||
|
||||
for (i = 0; i < ctx.ndims; i++) {
|
||||
for (i = 0; i < ctx.ndims; i++)
|
||||
ctx.p_max_idx[i] = ctx.p_min_idx[i] + MIN(total_size[i], sm_size[i]);
|
||||
}
|
||||
|
||||
/* print array indices. get the lower bound of the hyperslab and calulate
|
||||
the element position at the start of hyperslab */
|
||||
|
@ -348,7 +348,7 @@ typedef struct h5tools_context_t {
|
||||
size_t cur_column; /*current column for output */
|
||||
size_t cur_elmt; /*current element/output line */
|
||||
int need_prefix; /*is line prefix needed? */
|
||||
int ndims; /*dimensionality */
|
||||
unsigned ndims; /*dimensionality */
|
||||
hsize_t p_min_idx[H5S_MAX_RANK]; /*min selected index */
|
||||
hsize_t p_max_idx[H5S_MAX_RANK]; /*max selected index */
|
||||
int prev_multiline; /*was prev datum multiline? */
|
||||
|
@ -339,7 +339,8 @@ lookup_ref_path(haddr_t ref)
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
fill_ref_path_table(hid_t group, const char *obj_name, void *op_data)
|
||||
fill_ref_path_table(hid_t group, const char *obj_name, const H5L_info_t UNUSED *linfo,
|
||||
void *op_data)
|
||||
{
|
||||
const char *obj_prefix = (const char *)op_data;
|
||||
H5G_stat_t statbuf;
|
||||
@ -372,7 +373,7 @@ fill_ref_path_table(hid_t group, const char *obj_name, void *op_data)
|
||||
/* Iterate over objects in this group, using this group's
|
||||
* name as their prefix
|
||||
*/
|
||||
if(H5Giterate(group, obj_name, NULL, fill_ref_path_table, thepath) < 0) {
|
||||
if(H5Literate(group, obj_name, H5_INDEX_NAME, H5_ITER_INC, NULL, fill_ref_path_table, thepath, H5P_DEFAULT) < 0) {
|
||||
error_msg(progname, "unable to dump group \"%s\"\n", obj_name);
|
||||
d_status = EXIT_FAILURE;
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ extern "C" {
|
||||
|
||||
int init_ref_path_table(hid_t fid);
|
||||
const char *lookup_ref_path(haddr_t ref);
|
||||
herr_t fill_ref_path_table(hid_t, const char *, void *);
|
||||
herr_t fill_ref_path_table(hid_t, const char *, const H5L_info_t *, void *);
|
||||
int get_next_xid(void);
|
||||
haddr_t get_fake_xid (void);
|
||||
haddr_t ref_path_table_lookup(const char *);
|
||||
|
@ -845,15 +845,15 @@ h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, hid_t contai
|
||||
if (h5tools_is_zero(vp, H5Tget_size(type))) {
|
||||
h5tools_str_append(str, "NULL");
|
||||
} else {
|
||||
char name[1024];
|
||||
char ref_name[1024];
|
||||
|
||||
obj = H5Rdereference(container, H5R_DATASET_REGION, vp);
|
||||
region = H5Rget_region(container, H5R_DATASET_REGION, vp);
|
||||
H5Gget_objinfo(obj, ".", FALSE, &sb);
|
||||
|
||||
/* get name of the dataset the region reference points to using H5Rget_name */
|
||||
H5Rget_name(obj, H5R_DATASET_REGION, vp, (char*)name, 1024);
|
||||
h5tools_str_append(str, info->dset_format, name);
|
||||
H5Rget_name(obj, H5R_DATASET_REGION, vp, (char*)ref_name, 1024);
|
||||
h5tools_str_append(str, info->dset_format, ref_name);
|
||||
|
||||
h5tools_str_dump_region(str, region, info);
|
||||
H5Sclose(region);
|
||||
|
@ -46,7 +46,8 @@ static void dump_table(char* tablename, table_t *table);
|
||||
#endif /* H5DUMP_DEBUG */
|
||||
static void add_obj(table_t *table, haddr_t objno, char *objname, hbool_t recorded);
|
||||
static char * build_obj_path_name(const char *prefix, const char *name);
|
||||
static herr_t find_objs_cb(hid_t group, const char *name, void *op_data);
|
||||
static herr_t find_objs_cb(hid_t group, const char *name, const H5L_info_t *info,
|
||||
void *op_data);
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
@ -480,7 +481,7 @@ build_obj_path_name(const char *prefix, const char *name)
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static herr_t
|
||||
find_objs_cb(hid_t group, const char *name, void *op_data)
|
||||
find_objs_cb(hid_t group, const char *name, const H5L_info_t UNUSED *linfo, void *op_data)
|
||||
{
|
||||
H5G_stat_t statbuf;
|
||||
find_objs_t *info = (find_objs_t*)op_data;
|
||||
@ -508,7 +509,7 @@ find_objs_cb(hid_t group, const char *name, void *op_data)
|
||||
info->prefix = HDmalloc(tmp_len+1);
|
||||
HDstrcpy(info->prefix, tmp);
|
||||
|
||||
if(H5Giterate(group, name, NULL, find_objs_cb, (void *)info) < 0)
|
||||
if(H5Literate(group, name, H5_INDEX_NAME, H5_ITER_INC, NULL, find_objs_cb, (void *)info, H5P_DEFAULT) < 0)
|
||||
ret_value = FAIL;
|
||||
|
||||
info->prefix = old_prefix;
|
||||
@ -625,7 +626,7 @@ init_objs(hid_t fid, find_objs_t *info, table_t **group_table,
|
||||
|
||||
|
||||
/* Find all shared objects */
|
||||
return(H5Giterate(fid, "/", NULL, find_objs_cb, (void *)info));
|
||||
return(H5Literate(fid, "/", H5_INDEX_NAME, H5_ITER_INC, NULL, find_objs_cb, (void *)info, H5P_DEFAULT));
|
||||
}
|
||||
|
||||
|
||||
|
@ -371,19 +371,19 @@ static hssize_t get_nnames( hid_t loc_id, const char *group_name )
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
static herr_t opget_info( hid_t loc_id, const char *name, void *op_data)
|
||||
static herr_t
|
||||
opget_info(hid_t loc_id, const char *name, const H5L_info_t *linfo, void *op_data)
|
||||
{
|
||||
H5G_stat_t statbuf;
|
||||
|
||||
H5G_stat_t statbuf;
|
||||
if(H5Gget_objinfo(loc_id, name, FALSE, &statbuf) < 0)
|
||||
return -1;
|
||||
|
||||
if (H5Gget_objinfo( loc_id, name, FALSE, &statbuf) < 0 )
|
||||
return -1;
|
||||
((trav_info_t *)op_data)->type = statbuf.type;
|
||||
((trav_info_t *)op_data)->name = (char *)HDstrdup(name);
|
||||
|
||||
((trav_info_t *)op_data)->type = statbuf.type;
|
||||
((trav_info_t *)op_data)->name = (char *)HDstrdup(name);
|
||||
|
||||
/* Define 1 for return. This will cause the iterator to stop */
|
||||
return 1;
|
||||
/* Define 1 for return. This will cause the iterator to stop */
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@ -410,20 +410,20 @@ static herr_t opget_info( hid_t loc_id, const char *name, void *op_data)
|
||||
|
||||
static herr_t get_name_type( hid_t loc_id,
|
||||
const char *group_name,
|
||||
int idx,
|
||||
int _idx,
|
||||
char **name,
|
||||
H5G_obj_t *type )
|
||||
{
|
||||
trav_info_t info;
|
||||
hsize_t idx = (hsize_t)_idx;
|
||||
|
||||
trav_info_t info;
|
||||
if(H5Literate(loc_id, group_name, H5_INDEX_NAME, H5_ITER_INC, &idx, opget_info, (void *)&info, H5P_DEFAULT) < 0)
|
||||
return -1;
|
||||
|
||||
if (H5Giterate( loc_id, group_name, &idx, opget_info, (void *)&info) < 0 )
|
||||
return -1;
|
||||
*name = info.name;
|
||||
*type = info.type;
|
||||
|
||||
*name = info.name;
|
||||
*type = info.type;
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user