mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-03-19 16:50:46 +08:00
[svn-r14182]
Added support for displaying several iteration orders on dataset attributes, 4 new tests in test script (name ascending, name descending, creation_order ascending, creation_order descending) New h5 file is made on the generator program Tested: windows, linux
This commit is contained in:
parent
b2c7d08ae0
commit
3026ace6ae
5
MANIFEST
5
MANIFEST
@ -1219,6 +1219,11 @@
|
||||
./tools/testfiles/tordergr1.ddl
|
||||
./tools/testfiles/tordergr5.ddl
|
||||
./tools/testfiles/tordergr2.ddl
|
||||
./tools/testfiles/torderattr1.ddl
|
||||
./tools/testfiles/torderattr2.ddl
|
||||
./tools/testfiles/torderattr3.ddl
|
||||
./tools/testfiles/torderattr4.ddl
|
||||
./tools/testfiles/torderattr.h5
|
||||
|
||||
|
||||
|
||||
|
@ -501,7 +501,7 @@ static void dump_named_datatype(hid_t, const char *);
|
||||
static void dump_dataset(hid_t, const char *, struct subset_t *);
|
||||
static void dump_dataspace(hid_t space);
|
||||
static void dump_datatype(hid_t type);
|
||||
static herr_t dump_attr(hid_t, const char *, const H5A_info_t *, void *);
|
||||
static herr_t dump_attr_cb(hid_t loc_id, const char *attr_name, const H5A_info_t *info, void *_op_data);
|
||||
static void dump_data(hid_t, int, struct subset_t *, int);
|
||||
static void dump_dcpl(hid_t dcpl, hid_t type_id, hid_t obj_id);
|
||||
static void dump_comment(hid_t obj_id);
|
||||
@ -530,7 +530,7 @@ typedef struct dump_functions_t {
|
||||
void (*dump_dataset_function) (hid_t, const char *, struct subset_t *);
|
||||
void (*dump_dataspace_function) (hid_t);
|
||||
void (*dump_datatype_function) (hid_t);
|
||||
herr_t (*dump_attribute_function) (hid_t, const char *, void *);
|
||||
herr_t (*dump_attribute_function) (hid_t, const char *, const H5A_info_t *, void *);
|
||||
void (*dump_data_function) (hid_t, int, struct subset_t *, int);
|
||||
} dump_functions;
|
||||
|
||||
@ -541,7 +541,7 @@ static const dump_functions ddl_function_table = {
|
||||
dump_dataset,
|
||||
dump_dataspace,
|
||||
dump_datatype,
|
||||
dump_attr,
|
||||
dump_attr_cb,
|
||||
dump_data
|
||||
};
|
||||
|
||||
@ -1207,8 +1207,9 @@ dump_dataspace(hid_t space)
|
||||
dump_header_format->dataspaceblockend);
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: dump_attr
|
||||
* Function: dump_attr_cb
|
||||
*
|
||||
* Purpose: dump the attribute
|
||||
*
|
||||
@ -1218,13 +1219,13 @@ dump_dataspace(hid_t space)
|
||||
*
|
||||
* Programmer: Ruey-Hsia Li
|
||||
*
|
||||
* Modifications:
|
||||
* Modifications: Pedro Vicente, October 4, 2007
|
||||
* Added H5A_info_t parameter to conform with H5Aiterate2
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static herr_t
|
||||
dump_attr(hid_t oid, const char *attr_name, const H5A_info_t UNUSED *info,
|
||||
void UNUSED *op_data)
|
||||
static herr_t
|
||||
dump_attr_cb(hid_t oid, const char *attr_name, const H5A_info_t UNUSED *info, void UNUSED *_op_data)
|
||||
{
|
||||
hid_t attr_id;
|
||||
herr_t ret = SUCCEED;
|
||||
@ -1260,8 +1261,7 @@ dump_attr(hid_t oid, const char *attr_name, const H5A_info_t UNUSED *info,
|
||||
H5Aclose(attr_id);
|
||||
|
||||
indentation(indent);
|
||||
end_obj(dump_header_format->attributeend,
|
||||
dump_header_format->attributeblockend);
|
||||
end_obj(dump_header_format->attributeend,dump_header_format->attributeblockend);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@ -1818,7 +1818,7 @@ dump_named_datatype(hid_t type, const char *name)
|
||||
|
||||
/* print attributes */
|
||||
indent += COL;
|
||||
H5Aiterate2(type, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_attr, NULL, H5P_DEFAULT);
|
||||
H5Aiterate2(type, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_attr_cb, NULL, H5P_DEFAULT);
|
||||
indent -= COL;
|
||||
|
||||
end_obj(dump_header_format->datatypeend,
|
||||
@ -1895,11 +1895,11 @@ dump_group(hid_t gid, const char *name, H5_index_t idx_type, H5_iter_order_t ite
|
||||
printf("%s \"%s\"\n", HARDLINK, found_obj->objname);
|
||||
} else {
|
||||
found_obj->displayed = TRUE;
|
||||
H5Aiterate2(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_attr, NULL, H5P_DEFAULT);
|
||||
H5Aiterate2(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_attr_cb, NULL, H5P_DEFAULT);
|
||||
H5Literate(gid, ".", idx_type, iter_order, NULL, dump_all, NULL, H5P_DEFAULT);
|
||||
}
|
||||
} else {
|
||||
H5Aiterate2(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_attr, NULL, H5P_DEFAULT);
|
||||
H5Aiterate2(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_attr_cb, NULL, H5P_DEFAULT);
|
||||
H5Literate(gid, ".", idx_type, iter_order, NULL, dump_all, NULL, H5P_DEFAULT);
|
||||
}
|
||||
|
||||
@ -1918,7 +1918,10 @@ dump_group(hid_t gid, const char *name, H5_index_t idx_type, H5_iter_order_t ite
|
||||
*
|
||||
* Programmer: Ruey-Hsia Li
|
||||
*
|
||||
* Modifications: pvn, 2004, added dcpl dump
|
||||
* Modifications:
|
||||
* Pedro Vicente, 2004, added dataset creation property list display
|
||||
* Pedro Vicente, October 4, 2007, added parameters to H5Aiterate2() to allow for
|
||||
* other iteration orders
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -1974,15 +1977,16 @@ dump_dataset(hid_t did, const char *name, struct subset_t *sset)
|
||||
} /* end switch */
|
||||
|
||||
indent += COL;
|
||||
H5Aiterate2(did, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_attr, NULL, H5P_DEFAULT);
|
||||
|
||||
H5Aiterate2(did, ".", sort_by, sort_order, NULL, dump_attr_cb, NULL, H5P_DEFAULT);
|
||||
|
||||
indent -= COL;
|
||||
|
||||
H5Tclose(type);
|
||||
H5Sclose(space);
|
||||
|
||||
indentation(indent);
|
||||
end_obj(dump_header_format->datasetend,
|
||||
dump_header_format->datasetblockend);
|
||||
end_obj(dump_header_format->datasetend,dump_header_format->datasetblockend);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
|
@ -86,7 +86,7 @@
|
||||
#define FILE56 "tbigdims.h5"
|
||||
#define FILE57 "thyperslab.h5"
|
||||
#define FILE58 "tordergr.h5"
|
||||
|
||||
#define FILE59 "torderattr.h5"
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
@ -5753,10 +5753,6 @@ gent_hyperslab(void)
|
||||
free(buf);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: gent_group_creation_order
|
||||
*
|
||||
@ -5768,10 +5764,10 @@ gent_hyperslab(void)
|
||||
static void
|
||||
gent_group_creation_order()
|
||||
{
|
||||
hid_t fid; /* file id */
|
||||
hid_t gid; /* group id */
|
||||
hid_t gcpl_id; /* group creation property list id */
|
||||
hid_t fcpl_id; /* file creation property list id (to set root group order) */
|
||||
hid_t fid; /* file ID */
|
||||
hid_t gid; /* group ID */
|
||||
hid_t gcpl_id; /* group creation property list ID */
|
||||
hid_t fcpl_id; /* file creation property list ID (to set root group order) */
|
||||
|
||||
if ((fcpl_id = H5Pcreate(H5P_FILE_CREATE)) < 0)
|
||||
goto out;
|
||||
@ -5897,6 +5893,97 @@ out:
|
||||
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: gent_attr_creation_order
|
||||
*
|
||||
* Purpose: generate a file with several objects with attributes with creation
|
||||
* order set and not set
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static void
|
||||
gent_attr_creation_order()
|
||||
{
|
||||
hid_t fid; /* file id */
|
||||
hid_t gid; /* group id */
|
||||
hid_t did; /* dataset id */
|
||||
hid_t sid; /* space id */
|
||||
hid_t aid; /* attribute id */
|
||||
hid_t gcpl_id; /* group creation property list ID */
|
||||
hid_t dcpl_id; /* dataset creation property list ID */
|
||||
int i;
|
||||
char *attr_name[3] = {"c", "b", "a" };
|
||||
|
||||
if ((fid = H5Fcreate(FILE59, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0)
|
||||
goto out;
|
||||
|
||||
/* create group creation property list */
|
||||
if((gcpl_id = H5Pcreate(H5P_GROUP_CREATE)) < 0)
|
||||
goto out;
|
||||
|
||||
/* create dataset creation property list */
|
||||
if((dcpl_id = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
||||
goto out;
|
||||
|
||||
#if 0
|
||||
/* enable creation order tracking on attributes */
|
||||
if(H5Pset_attr_creation_order(dcpl_id, H5P_CRT_ORDER_TRACKED) < 0)
|
||||
goto out;
|
||||
#endif
|
||||
/*-------------------------------------------------------------------------
|
||||
* create a dataset and atributes in it
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* create dataspace for dataset */
|
||||
if ((sid = H5Screate(H5S_SCALAR)) < 0)
|
||||
goto out;
|
||||
|
||||
/* create a dataset */
|
||||
if ((did = H5Dcreate(fid, "dset", H5T_NATIVE_UCHAR, sid, dcpl_id)) < 0)
|
||||
goto out;
|
||||
|
||||
/* add attributes */
|
||||
for(i = 0; i < 3; i++)
|
||||
{
|
||||
if ((aid = H5Acreate(did, attr_name[i], H5T_NATIVE_UCHAR, sid, H5P_DEFAULT)) < 0)
|
||||
goto out;
|
||||
|
||||
/* close attribute */
|
||||
if (H5Aclose(aid) < 0)
|
||||
goto out;
|
||||
|
||||
} /* end for */
|
||||
|
||||
|
||||
/* close */
|
||||
if (H5Sclose(sid) < 0)
|
||||
goto out;
|
||||
if (H5Dclose(did) < 0)
|
||||
goto out;
|
||||
if (H5Pclose(dcpl_id) < 0)
|
||||
goto out;
|
||||
if (H5Pclose(gcpl_id) < 0)
|
||||
goto out;
|
||||
if (H5Fclose(fid) < 0)
|
||||
goto out;
|
||||
|
||||
return;
|
||||
|
||||
out:
|
||||
printf("Error.....\n");
|
||||
H5E_BEGIN_TRY {
|
||||
H5Gclose(gid);
|
||||
H5Dclose(did);
|
||||
H5Sclose(sid);
|
||||
H5Pclose(gcpl_id);
|
||||
H5Pclose(dcpl_id);
|
||||
H5Fclose(fid);
|
||||
|
||||
} H5E_END_TRY;
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
@ -5965,6 +6052,7 @@ int main(void)
|
||||
gent_bigdims();
|
||||
gent_hyperslab();
|
||||
gent_group_creation_order();
|
||||
gent_attr_creation_order();
|
||||
|
||||
|
||||
return 0;
|
||||
|
@ -483,6 +483,13 @@ TOOLTEST tordergr3.ddl -g 2 -q name -z ascending tordergr.h5
|
||||
TOOLTEST tordergr4.ddl -g 2 -q name -z descending tordergr.h5
|
||||
TOOLTEST tordergr5.ddl -q creation_order tordergr.h5
|
||||
|
||||
# tests for dataset attribute order
|
||||
TOOLTEST torderattr1.ddl -H --sort_by=name --sort_order=ascending torderattr.h5
|
||||
TOOLTEST torderattr2.ddl -H --sort_by=name --sort_order=descending torderattr.h5
|
||||
TOOLTEST torderattr3.ddl -H --sort_by=creation_order --sort_order=ascending torderattr.h5
|
||||
TOOLTEST torderattr4.ddl -H --sort_by=creation_order --sort_order=descending torderattr.h5
|
||||
|
||||
|
||||
|
||||
if test $nerrors -eq 0 ; then
|
||||
echo "All $DUMPER tests passed."
|
||||
|
BIN
tools/testfiles/torderattr.h5
Normal file
BIN
tools/testfiles/torderattr.h5
Normal file
Binary file not shown.
23
tools/testfiles/torderattr1.ddl
Normal file
23
tools/testfiles/torderattr1.ddl
Normal file
@ -0,0 +1,23 @@
|
||||
#############################
|
||||
Expected output for 'h5dump -H --sort_by=name --sort_order=ascending torderattr.h5'
|
||||
#############################
|
||||
HDF5 "torderattr.h5" {
|
||||
GROUP "/" {
|
||||
DATASET "dset" {
|
||||
DATATYPE H5T_STD_U8LE
|
||||
DATASPACE SCALAR
|
||||
ATTRIBUTE "a" {
|
||||
DATATYPE H5T_STD_U8LE
|
||||
DATASPACE SCALAR
|
||||
}
|
||||
ATTRIBUTE "b" {
|
||||
DATATYPE H5T_STD_U8LE
|
||||
DATASPACE SCALAR
|
||||
}
|
||||
ATTRIBUTE "c" {
|
||||
DATATYPE H5T_STD_U8LE
|
||||
DATASPACE SCALAR
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
23
tools/testfiles/torderattr2.ddl
Normal file
23
tools/testfiles/torderattr2.ddl
Normal file
@ -0,0 +1,23 @@
|
||||
#############################
|
||||
Expected output for 'h5dump -H --sort_by=name --sort_order=descending torderattr.h5'
|
||||
#############################
|
||||
HDF5 "torderattr.h5" {
|
||||
GROUP "/" {
|
||||
DATASET "dset" {
|
||||
DATATYPE H5T_STD_U8LE
|
||||
DATASPACE SCALAR
|
||||
ATTRIBUTE "c" {
|
||||
DATATYPE H5T_STD_U8LE
|
||||
DATASPACE SCALAR
|
||||
}
|
||||
ATTRIBUTE "b" {
|
||||
DATATYPE H5T_STD_U8LE
|
||||
DATASPACE SCALAR
|
||||
}
|
||||
ATTRIBUTE "a" {
|
||||
DATATYPE H5T_STD_U8LE
|
||||
DATASPACE SCALAR
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
23
tools/testfiles/torderattr3.ddl
Normal file
23
tools/testfiles/torderattr3.ddl
Normal file
@ -0,0 +1,23 @@
|
||||
#############################
|
||||
Expected output for 'h5dump -H --sort_by=creation_order --sort_order=ascending torderattr.h5'
|
||||
#############################
|
||||
HDF5 "torderattr.h5" {
|
||||
GROUP "/" {
|
||||
DATASET "dset" {
|
||||
DATATYPE H5T_STD_U8LE
|
||||
DATASPACE SCALAR
|
||||
ATTRIBUTE "c" {
|
||||
DATATYPE H5T_STD_U8LE
|
||||
DATASPACE SCALAR
|
||||
}
|
||||
ATTRIBUTE "b" {
|
||||
DATATYPE H5T_STD_U8LE
|
||||
DATASPACE SCALAR
|
||||
}
|
||||
ATTRIBUTE "a" {
|
||||
DATATYPE H5T_STD_U8LE
|
||||
DATASPACE SCALAR
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
23
tools/testfiles/torderattr4.ddl
Normal file
23
tools/testfiles/torderattr4.ddl
Normal file
@ -0,0 +1,23 @@
|
||||
#############################
|
||||
Expected output for 'h5dump -H --sort_by=creation_order --sort_order=descending torderattr.h5'
|
||||
#############################
|
||||
HDF5 "torderattr.h5" {
|
||||
GROUP "/" {
|
||||
DATASET "dset" {
|
||||
DATATYPE H5T_STD_U8LE
|
||||
DATASPACE SCALAR
|
||||
ATTRIBUTE "a" {
|
||||
DATATYPE H5T_STD_U8LE
|
||||
DATASPACE SCALAR
|
||||
}
|
||||
ATTRIBUTE "b" {
|
||||
DATATYPE H5T_STD_U8LE
|
||||
DATASPACE SCALAR
|
||||
}
|
||||
ATTRIBUTE "c" {
|
||||
DATATYPE H5T_STD_U8LE
|
||||
DATASPACE SCALAR
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user