[svn-r14180] Description:

Make H5Aiterate() versioned and change all internal use to H5Aiterate2()
	
	Leave some regression tests that exercise H5Aiterate1()

	Fix attribute display in h5dump & h5ls to be "by name" by default

Tested on:
        FreeBSD/32 6.2 (duty) in debug mode
        FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
        Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
                                in debug mode
        Linux/64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
                                in production mode
        Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
                                w/szip filter, in production mode
        Mac OS X/32 10.4.10 (amazon) in debug mode
This commit is contained in:
Quincey Koziol 2007-10-04 10:06:28 -05:00
parent 302830e601
commit 59b51a2ea7
19 changed files with 1364 additions and 1347 deletions

View File

@ -33,9 +33,10 @@ namespace H5 {
#ifndef DOXYGEN_SHOULD_SKIP_THIS
// userAttrOpWrpr simply interfaces between the user's function and the
// C library function H5Aiterate; used to resolve the different prototype
// C library function H5Aiterate2; used to resolve the different prototype
// problem. May be moved to Iterator later.
extern "C" herr_t userAttrOpWrpr( hid_t loc_id, const char* attr_name, void* op_data )
extern "C" herr_t userAttrOpWrpr(hid_t loc_id, const char *attr_name,
const H5A_info_t *ainfo, void *op_data)
{
H5std_string s_attr_name = H5std_string( attr_name );
#ifdef NO_STATIC_CAST
@ -200,26 +201,29 @@ Attribute H5Object::openAttribute( const unsigned int idx ) const
/// http://hdf.ncsa.uiuc.edu/HDF5/doc/RM_H5A.html#Annot-Iterate
// Programmer Binh-Minh Ribler - 2000
//--------------------------------------------------------------------------
int H5Object::iterateAttrs( attr_operator_t user_op, unsigned * idx, void *op_data )
int H5Object::iterateAttrs( attr_operator_t user_op, unsigned *_idx, void *op_data )
{
// store the user's function and data
UserData4Aiterate* userData = new UserData4Aiterate;
userData->opData = op_data;
userData->idx = idx;
userData->op = user_op;
userData->object = this;
// call the C library routine H5Aiterate to iterate the attributes
int ret_value = H5Aiterate( id, idx, userAttrOpWrpr, (void *) userData );
// call the C library routine H5Aiterate2 to iterate the attributes
hsize_t idx = (hsize_t)*_idx;
int ret_value = H5Aiterate2(id, ".", H5_INDEX_NAME, H5_ITER_INC, &idx, userAttrOpWrpr, (void *) userData, H5P_DEFAULT);
// release memory
delete userData;
if( ret_value >= 0 )
if( ret_value >= 0 ) {
/* Pass back update index value to calling code */
*_idx = (unsigned)idx;
return( ret_value );
else // raise exception when H5Aiterate returns a negative value
{
throw AttributeIException(inMemFunc("iterateAttrs"), "H5Aiterate failed");
}
else // raise exception when H5Aiterate returns a negative value
throw AttributeIException(inMemFunc("iterateAttrs"), "H5Aiterate2 failed");
}
//--------------------------------------------------------------------------

View File

@ -38,7 +38,6 @@ typedef void (*attr_operator_t)( H5Object& loc/*in*/,
class UserData4Aiterate { // user data for attribute iteration
public:
unsigned int* idx;
attr_operator_t op;
void* opData;
H5Object* object;

View File

@ -40,7 +40,7 @@
#define ANAME "Float attribute" /* Name of the array attribute */
#define ANAMES "Character attribute" /* Name of the string attribute */
herr_t attr_info(hid_t loc_id, const char *name, void *opdata);
static herr_t attr_info(hid_t loc_id, const char *name, const H5A_info_t *ainfo, void *opdata);
/* Operator function */
int
@ -209,7 +209,7 @@ main (void)
/*
* Get attribute info using iteration function.
*/
ret = H5Aiterate(dataset, NULL, attr_info, NULL);
ret = H5Aiterate2(dataset, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, attr_info, NULL, H5P_DEFAULT);
/*
* Close the dataset and the file.
@ -223,8 +223,8 @@ main (void)
/*
* Operator function.
*/
herr_t
attr_info(hid_t loc_id, const char *name, void *opdata)
static herr_t
attr_info(hid_t loc_id, const char *name, const H5A_info_t *ainfo, void *opdata)
{
hid_t attr, atype, aspace; /* Attribute, datatype and dataspace identifiers */
int rank;
@ -245,9 +245,7 @@ attr_info(hid_t loc_id, const char *name, void *opdata)
/*
* Display attribute name.
*/
printf("\n");
printf("Name : ");
puts(name);
printf("\nName : %s\n", name);
/*
* Get attribute datatype, dataspace, rank, and dimensions.
@ -262,10 +260,11 @@ attr_info(hid_t loc_id, const char *name, void *opdata)
*/
if(rank > 0) {
printf("Rank : %d \n", rank);
printf("Dimension sizes : ");
for (i=0; i< rank; i++) printf("%d ", (int)sdim[i]);
printf("\n");
printf("Rank : %d \n", rank);
printf("Dimension sizes : ");
for (i=0; i< rank; i++)
printf("%d ", (int)sdim[i]);
printf("\n");
}
/*
@ -273,14 +272,15 @@ attr_info(hid_t loc_id, const char *name, void *opdata)
*/
if (H5T_FLOAT == H5Tget_class(atype)) {
printf("Type : FLOAT \n");
npoints = H5Sget_simple_extent_npoints(aspace);
float_array = (float *)malloc(sizeof(float)*(int)npoints);
ret = H5Aread(attr, atype, float_array);
printf("Values : ");
for( i = 0; i < (int)npoints; i++) printf("%f ", float_array[i]);
printf("\n");
free(float_array);
printf("Type : FLOAT \n");
npoints = H5Sget_simple_extent_npoints(aspace);
float_array = (float *)malloc(sizeof(float)*(int)npoints);
ret = H5Aread(attr, atype, float_array);
printf("Values : ");
for( i = 0; i < (int)npoints; i++)
printf("%f ", float_array[i]);
printf("\n");
free(float_array);
}
/*
@ -292,3 +292,4 @@ attr_info(hid_t loc_id, const char *name, void *opdata)
return 0;
}

View File

@ -166,30 +166,23 @@ herr_t H5IMmake_image_24bit( hid_t loc_id,
*
*-------------------------------------------------------------------------
*/
static herr_t find_palette( hid_t loc_id, const char *name, void *op_data )
static herr_t
find_palette(hid_t loc_id, const char *name, const H5A_info_t *ainfo,
void *op_data)
{
int ret = H5_ITER_CONT;
/* Define a default zero value for return. This will cause the iterator to continue if
* the palette attribute is not found yet.
*/
/* Shut compiler up */
loc_id = loc_id; ainfo = ainfo; op_data = op_data;
int ret = 0;
/* Define a positive value for return value if the attribute was found. This will
* cause the iterator to immediately return that positive value,
* indicating short-circuit success
*/
if(strcmp(name, "PALETTE") == 0)
ret = H5_ITER_STOP;
/* Shut compiler */
loc_id=loc_id;
op_data=op_data;
/* Define a positive value for return value if the attribute was found. This will
* cause the iterator to immediately return that positive value,
* indicating short-circuit success
*/
if( strcmp( name, "PALETTE" ) == 0 )
ret = 1;
return ret;
return ret;
}
@ -205,7 +198,7 @@ static herr_t find_palette( hid_t loc_id, const char *name, void *op_data )
* Date: May 11, 2001
*
* Comments:
* The function uses H5Aiterate with the operator function find_palette
* The function uses H5Aiterate2 with the operator function find_palette
*
* Modifications:
*
@ -214,14 +207,7 @@ static herr_t find_palette( hid_t loc_id, const char *name, void *op_data )
herr_t H5IM_find_palette( hid_t loc_id )
{
unsigned int attr_num; /* Starting attribute to look up */
herr_t ret;
attr_num = 0;
ret = H5Aiterate( loc_id, &attr_num, find_palette, 0 );
return ret;
return H5Aiterate2(loc_id, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, find_palette, NULL, H5P_DEFAULT);
}

View File

@ -1619,31 +1619,23 @@ herr_t H5LTset_attribute_double( hid_t loc_id,
*
*-------------------------------------------------------------------------
*/
static herr_t find_attr( hid_t loc_id, const char *name, void *op_data)
static herr_t
find_attr(hid_t loc_id, const char *name, const H5A_info_t *ainfo,
void *op_data)
{
int ret = H5_ITER_CONT;
/* Define a default zero value for return. This will cause the iterator to continue if
* the palette attribute is not found yet.
*/
/* Shut compiler up */
loc_id = loc_id; ainfo = ainfo;
int ret = 0;
/* Define a positive value for return value if the attribute 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 = H5_ITER_STOP;
char *attr_name = (char*)op_data;
/* Shut the compiler up */
loc_id=loc_id;
/* Define a positive value for return value if the attribute was found. This will
* cause the iterator to immediately return that positive value,
* indicating short-circuit success
*/
if( strcmp( name, attr_name ) == 0 )
ret = 1;
return ret;
return ret;
}
@ -1680,7 +1672,7 @@ herr_t H5LTfind_attribute( hid_t loc_id, const char* attr_name )
* Date: June 21, 2001
*
* Comments:
* The function uses H5Aiterate with the operator function find_attr
* The function uses H5Aiterate2 with the operator function find_attr
*
* Return:
* Success: The return value of the first operator that
@ -1694,16 +1686,10 @@ herr_t H5LTfind_attribute( hid_t loc_id, const char* attr_name )
*-------------------------------------------------------------------------
*/
herr_t H5LT_find_attribute( hid_t loc_id, const char* attr_name )
herr_t
H5LT_find_attribute( hid_t loc_id, const char* attr_name )
{
unsigned int attr_num;
herr_t ret;
attr_num = 0;
ret = H5Aiterate( loc_id, &attr_num, find_attr, (void *)attr_name );
return ret;
return H5Aiterate2(loc_id, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, find_attr, (void *)attr_name, H5P_DEFAULT);
}

View File

@ -1024,10 +1024,12 @@ H5A_dense_iterate_bt2_cb(const void *_record, void *_bt2_udata)
break;
}
#ifndef H5_NO_DEPRECATED_SYMBOLS
case H5A_ATTR_OP_APP:
/* Make the application callback */
ret_value = (bt2_udata->attr_op->u.app_op)(bt2_udata->loc_id, fh_udata.attr->name, bt2_udata->op_data);
break;
#endif /* H5_NO_DEPRECATED_SYMBOLS */
case H5A_ATTR_OP_LIB:
/* Call the library's callback */

View File

@ -377,19 +377,18 @@ H5Arename1(hid_t loc_id, const char *old_name, const char *new_name)
done:
FUNC_LEAVE_API(ret_value)
} /* H5Arename1() */
#endif /* H5_NO_DEPRECATED_SYMBOLS */
/*--------------------------------------------------------------------------
NAME
H5Aiterate
H5Aiterate1
PURPOSE
Calls a user's function for each attribute on an object
USAGE
herr_t H5Aiterate (loc_id, attr_num, op, data)
herr_t H5Aiterate1(loc_id, attr_num, op, data)
hid_t loc_id; IN: Object (dataset or group) to be iterated over
unsigned *attr_num; IN/OUT: Starting (IN) & Ending (OUT) attribute number
H5A_operator_t op; IN: User's function to pass each attribute to
H5A_operator1_t op; IN: User's function to pass each attribute to
void *op_data; IN/OUT: User's data to pass through to iterator operator function
RETURNS
Returns a negative value if something is wrong, the return value of the
@ -414,16 +413,18 @@ done:
C. Negative causes the iterator to immediately return that value,
indicating failure. The iterator can be restarted at the next
attribute.
NOTE
Deprecated in favor of H5Aiterate2
--------------------------------------------------------------------------*/
herr_t
H5Aiterate(hid_t loc_id, unsigned *attr_num, H5A_operator_t op, void *op_data)
H5Aiterate1(hid_t loc_id, unsigned *attr_num, H5A_operator1_t op, void *op_data)
{
H5A_attr_iter_op_t attr_op; /* Attribute operator */
hsize_t start_idx; /* Index of attribute to start iterating at */
hsize_t last_attr; /* Index of last attribute examined */
herr_t ret_value; /* Return value */
FUNC_ENTER_API(H5Aiterate, FAIL)
FUNC_ENTER_API(H5Aiterate1, FAIL)
H5TRACE4("e", "i*Iux*x", loc_id, attr_num, op, op_data);
/* check arguments */
@ -445,9 +446,8 @@ H5Aiterate(hid_t loc_id, unsigned *attr_num, H5A_operator_t op, void *op_data)
done:
FUNC_LEAVE_API(ret_value)
} /* H5Aiterate() */
} /* H5Aiterate1() */
#ifndef H5_NO_DEPRECATED_SYMBOLS
/*--------------------------------------------------------------------------
NAME

View File

@ -554,10 +554,12 @@ H5A_attr_iterate_table(const H5A_attr_table_t *atable, hsize_t skip,
break;
}
#ifndef H5_NO_DEPRECATED_SYMBOLS
case H5A_ATTR_OP_APP:
/* Make the application callback */
ret_value = (attr_op->u.app_op)(loc_id, atable->attrs[u].name, op_data);
break;
#endif /* H5_NO_DEPRECATED_SYMBOLS */
case H5A_ATTR_OP_LIB:
/* Call the library's callback */

View File

@ -161,12 +161,16 @@ typedef herr_t (*H5A_lib_iterate_t)(const H5A_t *attr, void *op_data);
/* Describe kind of callback to make for each attribute */
struct H5A_attr_iter_op_t {
enum {
#ifndef H5_NO_DEPRECATED_SYMBOLS
H5A_ATTR_OP_APP, /* Application callback */
#endif /* H5_NO_DEPRECATED_SYMBOLS */
H5A_ATTR_OP_APP2, /* Revised application callback */
H5A_ATTR_OP_LIB /* Library internal callback */
} op_type;
union {
H5A_operator_t app_op; /* Application callback for each attribute */
#ifndef H5_NO_DEPRECATED_SYMBOLS
H5A_operator1_t app_op; /* Application callback for each attribute */
#endif /* H5_NO_DEPRECATED_SYMBOLS */
H5A_operator2_t app_op2; /* Revised application callback for each attribute */
H5A_lib_iterate_t lib_op; /* Library internal callback for each attribute */
} u;

View File

@ -36,10 +36,6 @@ typedef struct {
hsize_t data_size; /* Size of raw data */
} H5A_info_t;
/* Typedef for H5Aiterate() callbacks */
typedef herr_t (*H5A_operator_t)(hid_t location_id/*in*/,
const char *attr_name/*in*/, void *operator_data/*in,out*/);
/* Typedef for H5Aiterate2() callbacks */
typedef herr_t (*H5A_operator2_t)(hid_t location_id/*in*/,
const char *attr_name/*in*/, const H5A_info_t *ainfo/*in*/, void *op_data/*in,out*/);
@ -89,8 +85,6 @@ H5_DLL hid_t H5Acreate(hid_t loc_id, const char *name, hid_t type_id,
H5_DLL hid_t H5Aopen_name(hid_t loc_id, const char *name);
H5_DLL hid_t H5Aopen_idx(hid_t loc_id, unsigned idx);
H5_DLL int H5Aget_num_attrs(hid_t loc_id);
H5_DLL herr_t H5Aiterate(hid_t loc_id, unsigned *attr_num, H5A_operator_t op,
void *op_data);
/* Symbols defined for compatibility with previous versions of the HDF5 API.
*
@ -103,10 +97,16 @@ H5_DLL herr_t H5Aiterate(hid_t loc_id, unsigned *attr_num, H5A_operator_t op,
/* Typedefs */
/* Typedef for H5Aiterate1() callbacks */
typedef herr_t (*H5A_operator1_t)(hid_t location_id/*in*/,
const char *attr_name/*in*/, void *operator_data/*in,out*/);
/* Function prototypes */
H5_DLL herr_t H5Adelete1(hid_t loc_id, const char *name);
H5_DLL herr_t H5Arename1(hid_t loc_id, const char *old_name, const char *new_name);
H5_DLL herr_t H5Aiterate1(hid_t loc_id, unsigned *attr_num, H5A_operator1_t op,
void *op_data);
#endif /* H5_NO_DEPRECATED_SYMBOLS */

View File

@ -46,6 +46,7 @@
# (although not required, it's easier to compare this file with the headers
# generated if the list below is in alphanumeric sort order - QAK)
FUNCTION: H5Adelete; ; v10, v18
FUNCTION: H5Aiterate; H5A_operator; v10, v18
FUNCTION: H5Arename; ; v16, v18
FUNCTION: H5Eclear; ; v10, v18
FUNCTION: H5Eget_auto; ; v10, v18

View File

@ -42,6 +42,10 @@
#define H5Adelete_vers 1
#endif /* !defined(H5Adelete_vers) */
#if !defined(H5Aiterate_vers)
#define H5Aiterate_vers 1
#endif /* !defined(H5Aiterate_vers) */
#if !defined(H5Arename_vers)
#define H5Arename_vers 1
#endif /* !defined(H5Arename_vers) */
@ -122,6 +126,19 @@
#error "H5Adelete_vers set to invalid value"
#endif /* H5Adelete_vers */
#if !defined(H5Aiterate_vers) || H5Aiterate_vers == 2
#ifndef H5Aiterate_vers
#define H5Aiterate_vers 2
#endif /* H5Aiterate_vers */
#define H5Aiterate H5Aiterate2
#define H5A_operator_t H5A_operator2_t
#elif H5Aiterate_vers == 1
#define H5Aiterate H5Aiterate1
#define H5A_operator_t H5A_operator1_t
#else /* H5Aiterate_vers */
#error "H5Aiterate_vers set to invalid value"
#endif /* H5Aiterate_vers */
#if !defined(H5Arename_vers) || H5Arename_vers == 2
#ifndef H5Arename_vers
#define H5Arename_vers 2

View File

@ -142,7 +142,8 @@ typedef struct {
hbool_t *visited; /* Pointer to array of "visited attribute" flags */
} attr_iter_info_t;
static herr_t attr_op1(hid_t loc_id, const char *name, void *op_data);
static herr_t attr_op1(hid_t loc_id, const char *name, const H5A_info_t *ainfo,
void *op_data);
@ -1362,32 +1363,34 @@ test_attr_mult_read(hid_t fapl)
** attr_op1(): Attribute operator
**
****************************************************************/
herr_t attr_op1(hid_t UNUSED loc_id, const char *name, void *op_data)
static herr_t
attr_op1(hid_t UNUSED loc_id, const char *name, const H5A_info_t UNUSED *ainfo,
void *op_data)
{
int *count=(int *)op_data;
herr_t ret=0;
int *count = (int *)op_data;
herr_t ret = 0;
switch(*count) {
case 0:
if(HDstrcmp(name,ATTR1_NAME))
TestErrPrintf("attribute name different: name=%s, should be %s\n",name,ATTR1_NAME);
if(HDstrcmp(name, ATTR1_NAME))
TestErrPrintf("attribute name different: name=%s, should be %s\n", name, ATTR1_NAME);
(*count)++;
break;
case 1:
if(HDstrcmp(name,ATTR2_NAME))
TestErrPrintf("attribute name different: name=%s, should be %s\n",name,ATTR2_NAME);
if(HDstrcmp(name, ATTR2_NAME))
TestErrPrintf("attribute name different: name=%s, should be %s\n", name, ATTR2_NAME);
(*count)++;
break;
case 2:
if(HDstrcmp(name,ATTR3_NAME))
TestErrPrintf("attribute name different: name=%s, should be %s\n",name,ATTR3_NAME);
if(HDstrcmp(name, ATTR3_NAME))
TestErrPrintf("attribute name different: name=%s, should be %s\n", name, ATTR3_NAME);
(*count)++;
break;
default:
ret=-1;
ret = -1;
break;
} /* end switch() */
@ -1406,7 +1409,6 @@ test_attr_iterate(hid_t fapl)
hid_t file; /* HDF5 File ID */
hid_t dataset; /* Dataset ID */
hid_t sid; /* Dataspace ID */
unsigned start; /* Starting attribute to look up */
int count; /* operator data for the iterator */
herr_t ret; /* Generic return value */
@ -1418,11 +1420,11 @@ test_attr_iterate(hid_t fapl)
CHECK(file, FAIL, "H5Fopen");
/* Create a dataspace */
sid=H5Screate(H5S_SCALAR);
sid = H5Screate(H5S_SCALAR);
CHECK(sid, FAIL, "H5Screate");
/* Create a new dataset */
dataset=H5Dcreate(file,DSET2_NAME,H5T_NATIVE_INT,sid,H5P_DEFAULT);
dataset = H5Dcreate(file, DSET2_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT);
CHECK(dataset, FAIL, "H5Dcreate");
/* Close dataspace */
@ -1430,32 +1432,30 @@ test_attr_iterate(hid_t fapl)
CHECK(ret, FAIL, "H5Sclose");
/* Verify the correct number of attributes */
ret=H5Aget_num_attrs(dataset);
ret = H5Aget_num_attrs(dataset);
VERIFY(ret, 0, "H5Aget_num_attrs");
/* Iterate over attributes on dataset */
start = 0;
count = 0;
ret = H5Aiterate(dataset, &start, attr_op1, &count);
VERIFY(ret, 0, "H5Aiterate");
ret = H5Aiterate2(dataset, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, attr_op1, &count, H5P_DEFAULT);
VERIFY(ret, 0, "H5Aiterate2");
/* Close dataset */
ret = H5Dclose(dataset);
CHECK(ret, FAIL, "H5Dclose");
/* Open existing dataset w/attributes */
dataset=H5Dopen(file,DSET1_NAME);
dataset = H5Dopen(file, DSET1_NAME);
CHECK(dataset, FAIL, "H5Dopen");
/* Verify the correct number of attributes */
ret=H5Aget_num_attrs(dataset);
ret = H5Aget_num_attrs(dataset);
VERIFY(ret, 3, "H5Aget_num_attrs");
/* Iterate over attributes on dataset */
start=0;
count=0;
ret = H5Aiterate(dataset,&start,attr_op1,&count);
VERIFY(ret, 0, "H5Aiterate");
count = 0;
ret = H5Aiterate2(dataset, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, attr_op1, &count, H5P_DEFAULT);
VERIFY(ret, 0, "H5Aiterate2");
/* Close dataset */
ret = H5Dclose(dataset);
@ -5608,17 +5608,19 @@ HDfprintf(stderr, "op_data->curr = %Hd\n", op_data->curr);
return(H5_ITER_CONT);
} /* end attr_iterate2_cb() */
#ifndef H5_NO_DEPRECATED_SYMBOLS
/****************************************************************
**
** attr_iterate_cb(): Attribute operator
** attr_iterate1_cb(): Attribute operator
**
****************************************************************/
static herr_t
attr_iterate_cb(hid_t loc_id, const char *attr_name, void *_op_data)
attr_iterate1_cb(hid_t loc_id, const char *attr_name, void *_op_data)
{
return(attr_iterate2_cb(loc_id, attr_name, NULL, _op_data));
} /* end attr_iterate_cb() */
} /* end attr_iterate1_cb() */
#endif /* H5_NO_DEPRECATED_SYMBOLS */
/*-------------------------------------------------------------------------
@ -5662,7 +5664,9 @@ attr_iterate_check(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order,
{
unsigned v; /* Local index variable */
hsize_t skip; /* # of attributes to skip on object */
unsigned oskip; /* # of attributes to skip on object, with H5Aiterate */
#ifndef H5_NO_DEPRECATED_SYMBOLS
unsigned oskip; /* # of attributes to skip on object, with H5Aiterate1 */
#endif /* H5_NO_DEPRECATED_SYMBOLS */
int old_nerrs; /* Number of errors when entering this check */
herr_t ret; /* Generic return value */
@ -5685,20 +5689,22 @@ attr_iterate_check(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order,
VERIFY(iter_info->visited[v], TRUE, "H5Aiterate2");
/* Iterate over attributes on object, with H5Aiterate */
#ifndef H5_NO_DEPRECATED_SYMBOLS
/* Iterate over attributes on object, with H5Aiterate1 */
iter_info->nskipped = oskip = 0;
iter_info->order = order;
iter_info->stop = -1;
iter_info->ncalled = 0;
iter_info->curr = order != H5_ITER_DEC ? 0 : (max_attrs - 1);
HDmemset(iter_info->visited, 0, sizeof(hbool_t) * iter_info->max_visit);
ret = H5Aiterate(obj_id, &oskip, attr_iterate_cb, iter_info);
CHECK(ret, FAIL, "H5Aiterate");
ret = H5Aiterate1(obj_id, &oskip, attr_iterate1_cb, iter_info);
CHECK(ret, FAIL, "H5Aiterate1");
/* Verify that we visited all the attributes */
VERIFY(skip, max_attrs, "H5Aiterate");
VERIFY(skip, max_attrs, "H5Aiterate1");
for(v = 0; v < max_attrs; v++)
VERIFY(iter_info->visited[v], TRUE, "H5Aiterate");
VERIFY(iter_info->visited[v], TRUE, "H5Aiterate1");
#endif /* H5_NO_DEPRECATED_SYMBOLS */
/* Skip over some attributes on object */
@ -5733,25 +5739,26 @@ attr_iterate_check(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order,
} /* end else */
/* Skip over some attributes on object, with H5Aiterate */
#ifndef H5_NO_DEPRECATED_SYMBOLS
/* Skip over some attributes on object, with H5Aiterate1 */
iter_info->nskipped = oskip = max_attrs / 2;
iter_info->order = order;
iter_info->stop = -1;
iter_info->ncalled = 0;
iter_info->curr = order != H5_ITER_DEC ? (unsigned)oskip : ((max_attrs - 1) - oskip);
HDmemset(iter_info->visited, 0, sizeof(hbool_t) * iter_info->max_visit);
ret = H5Aiterate(obj_id, &oskip, attr_iterate_cb, iter_info);
CHECK(ret, FAIL, "H5Aiterate");
ret = H5Aiterate1(obj_id, &oskip, attr_iterate1_cb, iter_info);
CHECK(ret, FAIL, "H5Aiterate1");
/* Verify that we visited all the links */
VERIFY(oskip, max_attrs, "H5Aiterate");
VERIFY(oskip, max_attrs, "H5Aiterate1");
if(order == H5_ITER_INC) {
for(v = 0; v < (max_attrs / 2); v++)
VERIFY(iter_info->visited[v + (max_attrs / 2)], TRUE, "H5Aiterate");
VERIFY(iter_info->visited[v + (max_attrs / 2)], TRUE, "H5Aiterate1");
} /* end if */
else if(order == H5_ITER_DEC) {
for(v = 0; v < (max_attrs / 2); v++)
VERIFY(iter_info->visited[v], TRUE, "H5Aiterate");
VERIFY(iter_info->visited[v], TRUE, "H5Aiterate1");
} /* end if */
else {
unsigned nvisit = 0; /* # of links visited */
@ -5761,8 +5768,9 @@ attr_iterate_check(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order,
if(iter_info->visited[v] == TRUE)
nvisit++;
VERIFY(skip, (max_attrs / 2), "H5Aiterate");
VERIFY(skip, (max_attrs / 2), "H5Aiterate1");
} /* end else */
#endif /* H5_NO_DEPRECATED_SYMBOLS */
/* Iterate over attributes on object, stopping in the middle */
@ -5778,17 +5786,19 @@ attr_iterate_check(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order,
VERIFY(iter_info->ncalled, 3, "H5Aiterate2");
/* Iterate over attributes on object, stopping in the middle, with H5Aiterate() */
#ifndef H5_NO_DEPRECATED_SYMBOLS
/* Iterate over attributes on object, stopping in the middle, with H5Aiterate1() */
iter_info->nskipped = oskip = 0;
iter_info->order = order;
iter_info->stop = 3;
iter_info->ncalled = 0;
iter_info->curr = order != H5_ITER_DEC ? 0 : (max_attrs - 1);
HDmemset(iter_info->visited, 0, sizeof(hbool_t) * iter_info->max_visit);
ret = H5Aiterate(obj_id, &oskip, attr_iterate_cb, iter_info);
CHECK(ret, FAIL, "H5Aiterate");
VERIFY(ret, CORDER_ITER_STOP, "H5Aiterate2");
VERIFY(iter_info->ncalled, 3, "H5Aiterate2");
ret = H5Aiterate1(obj_id, &oskip, attr_iterate1_cb, iter_info);
CHECK(ret, FAIL, "H5Aiterate1");
VERIFY(ret, CORDER_ITER_STOP, "H5Aiterate1");
VERIFY(iter_info->ncalled, 3, "H5Aiterate1");
#endif /* H5_NO_DEPRECATED_SYMBOLS */
/* Check for iteration routine indicating failure */

View File

@ -65,7 +65,8 @@ 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);
herr_t aiter_cb(hid_t group, const char *name, const H5A_info_t *ainfo,
void *op_data);
/****************************************************************
**
@ -344,7 +345,8 @@ test_iter_group(hid_t fapl, hbool_t new_format)
**
****************************************************************/
herr_t
aiter_cb(hid_t UNUSED group, const char *name, void *op_data)
aiter_cb(hid_t UNUSED group, const char *name, const H5A_info_t UNUSED *ainfo,
void *op_data)
{
iter_info *info = (iter_info *)op_data;
static int count = 0;
@ -385,7 +387,7 @@ static void test_iter_attr(hid_t fapl, hbool_t new_format)
hid_t filespace; /* Common dataspace ID */
hid_t attribute; /* Attribute ID */
int i; /* counting variable */
unsigned idx; /* Index in the attribute list */
hsize_t idx; /* Index in the attribute list */
char name[NAMELEN]; /* temporary name buffer */
char *anames[NATTR]; /* Names of the attributes created */
iter_info info; /* Custom iteration information */
@ -398,88 +400,88 @@ static void test_iter_attr(hid_t fapl, hbool_t new_format)
file = H5Fcreate(DATAFILE, H5F_ACC_TRUNC, H5P_DEFAULT, fapl);
CHECK(file, FAIL, "H5Fcreate");
filespace=H5Screate(H5S_SCALAR);
filespace = H5Screate(H5S_SCALAR);
CHECK(filespace, FAIL, "H5Screate");
dataset = H5Dcreate(file, "Dataset", H5T_NATIVE_INT, filespace, H5P_DEFAULT);
CHECK(dataset, FAIL, "H5Dcreate");
for(i=0; i< NATTR; i++) {
sprintf(name,"Attribute %d",i);
for(i = 0; i < NATTR; i++) {
sprintf(name, "Attribute %02d", i);
attribute = H5Acreate(dataset, name, H5T_NATIVE_INT, filespace, H5P_DEFAULT);
CHECK(attribute, FAIL, "H5Acreate");
/* Keep a copy of the attribute names around for later */
anames[i]=HDstrdup(name);
anames[i] = HDstrdup(name);
CHECK(anames[i], NULL, "strdup");
ret=H5Aclose(attribute);
ret = H5Aclose(attribute);
CHECK(ret, FAIL, "H5Aclose");
}
} /* end for */
/* Close everything up */
ret=H5Dclose(dataset);
ret = H5Dclose(dataset);
CHECK(ret, FAIL, "H5Dclose");
ret=H5Sclose(filespace);
ret = H5Sclose(filespace);
CHECK(ret, FAIL, "H5Sclose");
ret=H5Fclose(file);
ret = H5Fclose(file);
CHECK(ret, FAIL, "H5Fclose");
/* Iterate through the attributes on the dataset in various ways */
file=H5Fopen(DATAFILE, H5F_ACC_RDONLY, fapl);
file = H5Fopen(DATAFILE, H5F_ACC_RDONLY, fapl);
CHECK(file, FAIL, "H5Fopen");
dataset=H5Dopen(file, "Dataset");
dataset = H5Dopen(file, "Dataset");
CHECK(dataset, FAIL, "H5Dopen");
/* Test invalid indices for starting iteration */
info.command=RET_ZERO;
info.command = RET_ZERO;
/* Test skipping exactly as many attributes as there are */
idx=NATTR;
idx = NATTR;
H5E_BEGIN_TRY {
ret=H5Aiterate(dataset,&idx,aiter_cb,&info);
ret = H5Aiterate2(dataset, ".", H5_INDEX_NAME, H5_ITER_INC, &idx, aiter_cb, &info, H5P_DEFAULT);
} H5E_END_TRY;
VERIFY(ret, FAIL, "H5Aiterate");
VERIFY(ret, FAIL, "H5Aiterate2");
/* Test skipping more attributes than there are */
idx=NATTR+1;
idx = NATTR + 1;
H5E_BEGIN_TRY {
ret=H5Aiterate(dataset,&idx,aiter_cb,&info);
ret = H5Aiterate2(dataset, ".", H5_INDEX_NAME, H5_ITER_INC, &idx, aiter_cb, &info, H5P_DEFAULT);
} H5E_END_TRY;
VERIFY(ret, FAIL, "H5Aiterate");
VERIFY(ret, FAIL, "H5Aiterate2");
/* Test all attributes on dataset, when callback always returns 0 */
info.command = RET_ZERO;
idx = 0;
if((ret = H5Aiterate(dataset, &idx, aiter_cb, &info)) > 0)
if((ret = H5Aiterate2(dataset, ".", H5_INDEX_NAME, H5_ITER_INC, &idx, aiter_cb, &info, H5P_DEFAULT)) > 0)
TestErrPrintf("Attribute iteration function didn't return zero correctly!\n");
/* Test all attributes on dataset, when callback always returns 1 */
/* This also tests the "restarting" ability, because the index changes */
info.command = RET_TWO;
idx = i = 0;
while((ret = H5Aiterate(dataset, &idx, aiter_cb, &info)) > 0) {
while((ret = H5Aiterate2(dataset, ".", H5_INDEX_NAME, H5_ITER_INC, &idx, aiter_cb, &info, H5P_DEFAULT)) > 0) {
/* Verify return value from iterator gets propagated correctly */
VERIFY(ret, 2, "H5Aiterate");
VERIFY(ret, 2, "H5Aiterate2");
/* Increment the number of times "2" is returned */
i++;
/* Verify that the index is the correct value */
VERIFY(idx, (unsigned)i, "H5Aiterate");
VERIFY(idx, (unsigned)i, "H5Aiterate2");
/* Don't check name when new format is used */
if(!new_format) {
/* Verify that the correct name is retrieved */
if(HDstrcmp(info.name, anames[idx - 1]) != 0)
TestErrPrintf("%u: Attribute iteration function didn't set names correctly, info.name = '%s', anames[idx - 1] = '%s'!\n", __LINE__, info.name, anames[idx - 1]);
if(HDstrcmp(info.name, anames[(size_t)idx - 1]) != 0)
TestErrPrintf("%u: Attribute iteration function didn't set names correctly, info.name = '%s', anames[%u] = '%s'!\n", __LINE__, info.name, (unsigned)(idx - 1), anames[(size_t)idx - 1]);
} /* end if */
} /* end while */
VERIFY(ret, -1, "H5Aiterate");
VERIFY(ret, -1, "H5Aiterate2");
if(i != 50 || idx != 50)
TestErrPrintf("%u: Attribute iteration function didn't perform multiple iterations correctly!\n", __LINE__);
@ -488,24 +490,24 @@ static void test_iter_attr(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 = H5Aiterate(dataset, &idx, aiter_cb, &info)) > 0) {
while((ret = H5Aiterate2(dataset, ".", H5_INDEX_NAME, H5_ITER_INC, &idx, aiter_cb, &info, H5P_DEFAULT)) > 0) {
/* Verify return value from iterator gets propagated correctly */
VERIFY(ret, 1, "H5Aiterate");
VERIFY(ret, 1, "H5Aiterate2");
/* Increment the number of times "1" is returned */
i++;
/* Verify that the index is the correct value */
VERIFY(idx, (unsigned)i + 10, "H5Aiterate");
VERIFY(idx, (unsigned)i + 10, "H5Aiterate2");
/* Don't check name when new format is used */
if(!new_format) {
/* Verify that the correct name is retrieved */
if(HDstrcmp(info.name, anames[idx - 1]) != 0)
TestErrPrintf("%u: Attribute iteration function didn't set names correctly, info.name = '%s', anames[idx - 1] = '%s'!\n", __LINE__, info.name, anames[idx - 1]);
if(HDstrcmp(info.name, anames[(size_t)idx - 1]) != 0)
TestErrPrintf("%u: Attribute iteration function didn't set names correctly, info.name = '%s', anames[%u] = '%s'!\n", __LINE__, info.name, (unsigned)(idx - 1), anames[(size_t)idx - 1]);
} /* end if */
} /* end while */
VERIFY(ret, -1, "H5Aiterate");
VERIFY(ret, -1, "H5Aiterate2");
if(i != 40 || idx != 50)
TestErrPrintf("%u: Attribute iteration function didn't perform multiple iterations correctly!\n", __LINE__);

View File

@ -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 *, void *);
static herr_t dump_attr(hid_t, const char *, const H5A_info_t *, void *);
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);
@ -515,7 +515,7 @@ static void xml_dump_named_datatype(hid_t, const char *);
static void xml_dump_dataset(hid_t, const char *, struct subset_t *);
static void xml_dump_dataspace(hid_t space);
static void xml_dump_datatype(hid_t type);
static herr_t xml_dump_attr(hid_t, const char *, void *);
static herr_t xml_dump_attr(hid_t, const char *, const H5A_info_t *, void *);
static void xml_dump_data(hid_t, int, struct subset_t *, int);
/**
@ -1223,7 +1223,8 @@ dump_dataspace(hid_t space)
*-------------------------------------------------------------------------
*/
static herr_t
dump_attr(hid_t oid, const char *attr_name, void UNUSED * op_data)
dump_attr(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;
@ -1817,7 +1818,7 @@ dump_named_datatype(hid_t type, const char *name)
/* print attributes */
indent += COL;
H5Aiterate(type, NULL, dump_attr, NULL);
H5Aiterate2(type, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_attr, NULL, H5P_DEFAULT);
indent -= COL;
end_obj(dump_header_format->datatypeend,
@ -1894,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;
H5Aiterate(gid, NULL, dump_attr, NULL);
H5Aiterate2(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_attr, NULL, H5P_DEFAULT);
H5Literate(gid, ".", idx_type, iter_order, NULL, dump_all, NULL, H5P_DEFAULT);
}
} else {
H5Aiterate(gid, NULL, dump_attr, NULL);
H5Aiterate2(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_attr, NULL, H5P_DEFAULT);
H5Literate(gid, ".", idx_type, iter_order, NULL, dump_all, NULL, H5P_DEFAULT);
}
@ -1973,7 +1974,7 @@ dump_dataset(hid_t did, const char *name, struct subset_t *sset)
} /* end switch */
indent += COL;
H5Aiterate(did, NULL, dump_attr, NULL);
H5Aiterate2(did, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_attr, NULL, H5P_DEFAULT);
indent -= COL;
H5Tclose(type);
@ -5074,7 +5075,8 @@ xml_dump_data(hid_t obj_id, int obj_data, struct subset_t UNUSED * sset, int UNU
*-------------------------------------------------------------------------
*/
static herr_t
xml_dump_attr(hid_t attr, const char *attr_name, void UNUSED * op_data)
xml_dump_attr(hid_t attr, const char *attr_name, const H5A_info_t UNUSED *info,
void UNUSED * op_data)
{
hid_t attr_id, type, space;
H5S_class_t space_type;
@ -5384,8 +5386,8 @@ xml_dump_group(hid_t gid, const char *name, H5_index_t UNUSED idx_type, H5_iter_
found_obj->displayed = TRUE;
/* 1. do all the attributes of the group */
H5Aiterate(gid, NULL,
dump_function_table->dump_attribute_function, NULL);
H5Aiterate2(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL,
dump_function_table->dump_attribute_function, NULL, H5P_DEFAULT);
if(isRoot && unamedtype) {
unsigned u;
@ -5439,7 +5441,7 @@ xml_dump_group(hid_t gid, const char *name, H5_index_t UNUSED idx_type, H5_iter_
free(parentxid);
/* 1. do all the attributes of the group */
H5Aiterate(gid, NULL, dump_function_table->dump_attribute_function, NULL);
H5Aiterate2(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_function_table->dump_attribute_function, NULL, H5P_DEFAULT);
if(isRoot && unamedtype) {
unsigned u;
@ -6088,7 +6090,7 @@ xml_dump_dataset(hid_t did, const char *name, struct subset_t UNUSED * sset)
dump_function_table->dump_datatype_function(type);
indent += COL;
H5Aiterate(did, NULL, dump_function_table->dump_attribute_function, NULL);
H5Aiterate2(did, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_function_table->dump_attribute_function, NULL, H5P_DEFAULT);
indent -= COL;
tempi = H5Dget_storage_size(did);

View File

@ -1322,10 +1322,11 @@ dump_dataset_values(hid_t dset)
*-------------------------------------------------------------------------
*/
static herr_t
list_attr (hid_t obj, const char *attr_name, void UNUSED *op_data)
list_attr(hid_t obj, const char *attr_name, const H5A_info_t UNUSED *ainfo,
void UNUSED *op_data)
{
hid_t attr, space, type, p_type;
hsize_t size[64], nelmts=1;
hsize_t size[64], nelmts = 1;
int ndims, i, n;
size_t need;
hsize_t temp_need;
@ -1784,7 +1785,7 @@ list(hid_t group, const char *name, const H5L_info_t *linfo, void *_iter)
/* Display attributes */
if(oi.type >= 0)
H5Aiterate(obj, NULL, list_attr, NULL);
H5Aiterate2(obj, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, list_attr, NULL, H5P_DEFAULT);
/* Object location & reference count */
printf(" %-10s %lu:"H5_PRINTF_HADDR_FMT"\n", "Location:", oi.fileno, oi.addr);
@ -2312,7 +2313,7 @@ main(int argc, const char *argv[])
if(verbose_g > 0) {
if((root = H5Gopen2(file, "/", H5P_DEFAULT)) < 0)
leave(1);
H5Aiterate(root, NULL, list_attr, NULL);
H5Aiterate2(root, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, list_attr, NULL, H5P_DEFAULT);
if(H5Gclose(root) < 0)
leave(1);
} /* end if */

View File

@ -2,54 +2,40 @@
output for 'h5ls -w80 -v -S tattr2.h5'
#############################
Opened "tattr2.h5" with sec2 driver.
Attribute: string {2}
Type: 2-byte null-terminated ASCII string
Data: "ab", "de"
Attribute: array {2}
Type: [3] 32-bit little-endian integer
Data: [1,2,3], [4,5,6]
Attribute: array2D {3, 2}
Type: [3] 32-bit little-endian integer
Data:
(0,0) [1,2,3], [4,5,6], [7,8,9], [10,11,12], [13,14,15], [16,17,18]
Attribute: array3D {4, 3, 2}
Type: [3] 32-bit little-endian integer
Data:
(0,0,0) [1,2,3], [4,5,6], [7,8,9], [10,11,12], [13,14,15],
(0,2,1) [16,17,18], [19,20,21], [22,23,24], [25,26,27], [28,29,30],
(1,2,0) [31,32,33], [34,35,36], [37,38,39], [40,41,42], [43,44,45],
(2,1,1) [46,47,48], [49,50,51], [52,53,54], [55,56,57], [58,59,60],
(3,1,0) [61,62,63], [64,65,66], [67,68,69], [70,71,72]
Attribute: bitfield {2}
Type: 8-bit bitfield
Data: 0x01, 0x02
Attribute: opaque {2}
Type: 1-byte opaque type
(tag = "1-byte opaque type")
Data: 0x01, 0x02
Attribute: bitfield2D {3, 2}
Type: 8-bit bitfield
Data:
(0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
Attribute: bitfield3D {4, 3, 2}
Type: 8-bit bitfield
Data:
(0,0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
(1,2,0) 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
(3,1,0) 0x15, 0x16, 0x17, 0x18
Attribute: compound {2}
Type: struct {
"a" +0 8-bit integer
"b" +4 IEEE 64-bit little-endian float
} 12 bytes
Data: {1, 2}, {3, 4}
Attribute: enum {2}
Type: enum 32-bit little-endian integer {
RED = 0
GREEN = 1
}
Data: RED, RED
Attribute: vlen {2}
Type: variable length of
32-bit little-endian integer
Data: (1), (2,3)
Attribute: array {2}
Type: [3] 32-bit little-endian integer
Data: [1,2,3], [4,5,6]
Attribute: integer {2}
Type: 32-bit little-endian integer
Data: 1, 2
Attribute: float {2}
Type: IEEE 32-bit little-endian float
Data: 1, 2
Attribute: string2D {3, 2}
Type: 2-byte null-terminated ASCII string
Data:
(0,0) "ab", "cd", "ef", "gh", "ij", "kl"
Attribute: bitfield2D {3, 2}
Type: 8-bit bitfield
Data:
(0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
Attribute: opaque2D {3, 2}
Type: 1-byte opaque type
(tag = "1-byte opaque type")
Data:
(0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
Attribute: compound2D {3, 2}
Type: struct {
"a" +0 8-bit integer
@ -57,49 +43,6 @@ Opened "tattr2.h5" with sec2 driver.
} 12 bytes
Data:
(0,0) {1, 2}, {3, 4}, {5, 6}, {7, 8}, {9, 10}, {11, 12}
Attribute: enum2D {3, 2}
Type: enum 32-bit little-endian integer {
RED = 0
GREEN = 1
}
Data:
(0,0) RED, RED, RED, RED, RED, RED
Attribute: vlen2D {3, 2}
Type: variable length of
32-bit little-endian integer
Data:
(0,0) (0), (1), (2,3), (4,5), (6,7,8), (9,10,11)
Attribute: array2D {3, 2}
Type: [3] 32-bit little-endian integer
Data:
(0,0) [1,2,3], [4,5,6], [7,8,9], [10,11,12], [13,14,15], [16,17,18]
Attribute: integer2D {3, 2}
Type: 32-bit little-endian integer
Data:
(0,0) 1, 2, 3, 4, 5, 6
Attribute: float2D {3, 2}
Type: IEEE 32-bit little-endian float
Data:
(0,0) 1, 2, 3, 4, 5, 6
Attribute: string3D {4, 3, 2}
Type: 2-byte null-terminated ASCII string
Data:
(0,0,0) "ab", "cd", "ef", "gh", "ij", "kl", "mn", "pq", "rs", "tu",
(1,2,0) "vw", "xz", "AB", "CD", "EF", "GH", "IJ", "KL", "MN", "PQ",
(3,1,0) "RS", "TU", "VW", "XZ"
Attribute: bitfield3D {4, 3, 2}
Type: 8-bit bitfield
Data:
(0,0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
(1,2,0) 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
(3,1,0) 0x15, 0x16, 0x17, 0x18
Attribute: opaque3D {4, 3, 2}
Type: 1-byte opaque type
(tag = "1-byte opaque type")
Data:
(0,0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
(1,2,0) 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
(3,1,0) 0x15, 0x16, 0x17, 0x18
Attribute: compound3D {4, 3, 2}
Type: struct {
"a" +0 8-bit integer
@ -110,6 +53,19 @@ Opened "tattr2.h5" with sec2 driver.
(1,0,0) 14}, {15, 16}, {17, 18}, {19, 20}, {21, 22}, {23, 24},
(2,0,0) {25, 26}, {27, 28}, {29, 30}, {31, 32}, {33, 34}, {35, 36},
(3,0,0) {37, 38}, {39, 40}, {41, 42}, {43, 44}, {45, 46}, {47, 48}
Attribute: enum {2}
Type: enum 32-bit little-endian integer {
RED = 0
GREEN = 1
}
Data: RED, RED
Attribute: enum2D {3, 2}
Type: enum 32-bit little-endian integer {
RED = 0
GREEN = 1
}
Data:
(0,0) RED, RED, RED, RED, RED, RED
Attribute: enum3D {4, 3, 2}
Type: enum 32-bit little-endian integer {
RED = 0
@ -118,6 +74,68 @@ Opened "tattr2.h5" with sec2 driver.
Data:
(0,0,0) RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED,
(2,0,0) RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED
Attribute: float {2}
Type: IEEE 32-bit little-endian float
Data: 1, 2
Attribute: float2D {3, 2}
Type: IEEE 32-bit little-endian float
Data:
(0,0) 1, 2, 3, 4, 5, 6
Attribute: float3D {4, 3, 2}
Type: IEEE 32-bit little-endian float
Data:
(0,0,0) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
(2,2,1) 18, 19, 20, 21, 22, 23, 24
Attribute: integer {2}
Type: 32-bit little-endian integer
Data: 1, 2
Attribute: integer2D {3, 2}
Type: 32-bit little-endian integer
Data:
(0,0) 1, 2, 3, 4, 5, 6
Attribute: integer3D {4, 3, 2}
Type: 32-bit little-endian integer
Data:
(0,0,0) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
(2,2,1) 18, 19, 20, 21, 22, 23, 24
Attribute: opaque {2}
Type: 1-byte opaque type
(tag = "1-byte opaque type")
Data: 0x01, 0x02
Attribute: opaque2D {3, 2}
Type: 1-byte opaque type
(tag = "1-byte opaque type")
Data:
(0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
Attribute: opaque3D {4, 3, 2}
Type: 1-byte opaque type
(tag = "1-byte opaque type")
Data:
(0,0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
(1,2,0) 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
(3,1,0) 0x15, 0x16, 0x17, 0x18
Attribute: string {2}
Type: 2-byte null-terminated ASCII string
Data: "ab", "de"
Attribute: string2D {3, 2}
Type: 2-byte null-terminated ASCII string
Data:
(0,0) "ab", "cd", "ef", "gh", "ij", "kl"
Attribute: string3D {4, 3, 2}
Type: 2-byte null-terminated ASCII string
Data:
(0,0,0) "ab", "cd", "ef", "gh", "ij", "kl", "mn", "pq", "rs", "tu",
(1,2,0) "vw", "xz", "AB", "CD", "EF", "GH", "IJ", "KL", "MN", "PQ",
(3,1,0) "RS", "TU", "VW", "XZ"
Attribute: vlen {2}
Type: variable length of
32-bit little-endian integer
Data: (1), (2,3)
Attribute: vlen2D {3, 2}
Type: variable length of
32-bit little-endian integer
Data:
(0,0) (0), (1), (2,3), (4,5), (6,7,8), (9,10,11)
Attribute: vlen3D {4, 3, 2}
Type: variable length of
32-bit little-endian integer
@ -127,6 +145,14 @@ Opened "tattr2.h5" with sec2 driver.
(2,1,0) (24,25,26), (27,28,29), (30,31,32), (33,34,35),
(3,0,0) (36,37,38,39), (40,41,42,43), (44,45,46,47), (48,49,50,51),
(3,2,0) (52,53,54,55), (56,57,58,59)
dset Dataset {2/2}
Attribute: array {2}
Type: [3] 32-bit little-endian integer
Data: [1,2,3], [4,5,6]
Attribute: array2D {3, 2}
Type: [3] 32-bit little-endian integer
Data:
(0,0) [1,2,3], [4,5,6], [7,8,9], [10,11,12], [13,14,15], [16,17,18]
Attribute: array3D {4, 3, 2}
Type: [3] 32-bit little-endian integer
Data:
@ -135,68 +161,25 @@ Opened "tattr2.h5" with sec2 driver.
(1,2,0) [31,32,33], [34,35,36], [37,38,39], [40,41,42], [43,44,45],
(2,1,1) [46,47,48], [49,50,51], [52,53,54], [55,56,57], [58,59,60],
(3,1,0) [61,62,63], [64,65,66], [67,68,69], [70,71,72]
Attribute: integer3D {4, 3, 2}
Type: 32-bit little-endian integer
Data:
(0,0,0) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
(2,2,1) 18, 19, 20, 21, 22, 23, 24
Attribute: float3D {4, 3, 2}
Type: IEEE 32-bit little-endian float
Data:
(0,0,0) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
(2,2,1) 18, 19, 20, 21, 22, 23, 24
dset Dataset {2/2}
Attribute: string {2}
Type: 2-byte null-terminated ASCII string
Data: "ab", "de"
Attribute: bitfield {2}
Type: 8-bit bitfield
Data: 0x01, 0x02
Attribute: opaque {2}
Type: 1-byte opaque type
(tag = "1-byte opaque type")
Data: 0x01, 0x02
Attribute: bitfield2D {3, 2}
Type: 8-bit bitfield
Data:
(0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
Attribute: bitfield3D {4, 3, 2}
Type: 8-bit bitfield
Data:
(0,0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
(1,2,0) 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
(3,1,0) 0x15, 0x16, 0x17, 0x18
Attribute: compound {2}
Type: struct {
"a" +0 8-bit integer
"b" +4 IEEE 64-bit little-endian float
} 12 bytes
Data: {1, 2}, {3, 4}
Attribute: reference {2}
Type: object reference
Data: DATASET-1:976, DATASET-1:976
Attribute: enum {2}
Type: enum 32-bit little-endian integer {
RED = 0
GREEN = 1
}
Data: RED, RED
Attribute: vlen {2}
Type: variable length of
32-bit little-endian integer
Data: (1), (2,3)
Attribute: array {2}
Type: [3] 32-bit little-endian integer
Data: [1,2,3], [4,5,6]
Attribute: integer {2}
Type: 32-bit little-endian integer
Data: 1, 2
Attribute: float {2}
Type: IEEE 32-bit little-endian float
Data: 1, 2
Attribute: string2D {3, 2}
Type: 2-byte null-terminated ASCII string
Data:
(0,0) "ab", "cd", "ef", "gh", "ij", "kl"
Attribute: bitfield2D {3, 2}
Type: 8-bit bitfield
Data:
(0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
Attribute: opaque2D {3, 2}
Type: 1-byte opaque type
(tag = "1-byte opaque type")
Data:
(0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
Attribute: compound2D {3, 2}
Type: struct {
"a" +0 8-bit integer
@ -204,54 +187,6 @@ dset Dataset {2/2}
} 12 bytes
Data:
(0,0) {1, 2}, {3, 4}, {5, 6}, {7, 8}, {9, 10}, {11, 12}
Attribute: reference2D {3, 2}
Type: object reference
Data:
(0,0) DATASET-1:976, DATASET-1:976, DATASET-1:976, DATASET-1:976,
(2,0) DATASET-1:976, DATASET-1:976
Attribute: enum2D {3, 2}
Type: enum 32-bit little-endian integer {
RED = 0
GREEN = 1
}
Data:
(0,0) RED, RED, RED, RED, RED, RED
Attribute: vlen2D {3, 2}
Type: variable length of
32-bit little-endian integer
Data:
(0,0) (0), (1), (2,3), (4,5), (6,7,8), (9,10,11)
Attribute: array2D {3, 2}
Type: [3] 32-bit little-endian integer
Data:
(0,0) [1,2,3], [4,5,6], [7,8,9], [10,11,12], [13,14,15], [16,17,18]
Attribute: integer2D {3, 2}
Type: 32-bit little-endian integer
Data:
(0,0) 1, 2, 3, 4, 5, 6
Attribute: float2D {3, 2}
Type: IEEE 32-bit little-endian float
Data:
(0,0) 1, 2, 3, 4, 5, 6
Attribute: string3D {4, 3, 2}
Type: 2-byte null-terminated ASCII string
Data:
(0,0,0) "ab", "cd", "ef", "gh", "ij", "kl", "mn", "pq", "rs", "tu",
(1,2,0) "vw", "xz", "AB", "CD", "EF", "GH", "IJ", "KL", "MN", "PQ",
(3,1,0) "RS", "TU", "VW", "XZ"
Attribute: bitfield3D {4, 3, 2}
Type: 8-bit bitfield
Data:
(0,0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
(1,2,0) 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
(3,1,0) 0x15, 0x16, 0x17, 0x18
Attribute: opaque3D {4, 3, 2}
Type: 1-byte opaque type
(tag = "1-byte opaque type")
Data:
(0,0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
(1,2,0) 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
(3,1,0) 0x15, 0x16, 0x17, 0x18
Attribute: compound3D {4, 3, 2}
Type: struct {
"a" +0 8-bit integer
@ -262,6 +197,75 @@ dset Dataset {2/2}
(1,0,0) 14}, {15, 16}, {17, 18}, {19, 20}, {21, 22}, {23, 24},
(2,0,0) {25, 26}, {27, 28}, {29, 30}, {31, 32}, {33, 34}, {35, 36},
(3,0,0) {37, 38}, {39, 40}, {41, 42}, {43, 44}, {45, 46}, {47, 48}
Attribute: enum {2}
Type: enum 32-bit little-endian integer {
RED = 0
GREEN = 1
}
Data: RED, RED
Attribute: enum2D {3, 2}
Type: enum 32-bit little-endian integer {
RED = 0
GREEN = 1
}
Data:
(0,0) RED, RED, RED, RED, RED, RED
Attribute: enum3D {4, 3, 2}
Type: enum 32-bit little-endian integer {
RED = 0
GREEN = 1
}
Data:
(0,0,0) RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED,
(2,0,0) RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED
Attribute: float {2}
Type: IEEE 32-bit little-endian float
Data: 1, 2
Attribute: float2D {3, 2}
Type: IEEE 32-bit little-endian float
Data:
(0,0) 1, 2, 3, 4, 5, 6
Attribute: float3D {4, 3, 2}
Type: IEEE 32-bit little-endian float
Data:
(0,0,0) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
(2,2,1) 18, 19, 20, 21, 22, 23, 24
Attribute: integer {2}
Type: 32-bit little-endian integer
Data: 1, 2
Attribute: integer2D {3, 2}
Type: 32-bit little-endian integer
Data:
(0,0) 1, 2, 3, 4, 5, 6
Attribute: integer3D {4, 3, 2}
Type: 32-bit little-endian integer
Data:
(0,0,0) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
(2,2,1) 18, 19, 20, 21, 22, 23, 24
Attribute: opaque {2}
Type: 1-byte opaque type
(tag = "1-byte opaque type")
Data: 0x01, 0x02
Attribute: opaque2D {3, 2}
Type: 1-byte opaque type
(tag = "1-byte opaque type")
Data:
(0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
Attribute: opaque3D {4, 3, 2}
Type: 1-byte opaque type
(tag = "1-byte opaque type")
Data:
(0,0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
(1,2,0) 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
(3,1,0) 0x15, 0x16, 0x17, 0x18
Attribute: reference {2}
Type: object reference
Data: DATASET-1:976, DATASET-1:976
Attribute: reference2D {3, 2}
Type: object reference
Data:
(0,0) DATASET-1:976, DATASET-1:976, DATASET-1:976, DATASET-1:976,
(2,0) DATASET-1:976, DATASET-1:976
Attribute: reference3D {4, 3, 2}
Type: object reference
Data:
@ -271,14 +275,28 @@ dset Dataset {2/2}
(2,0,0) DATASET-1:976, DATASET-1:976, DATASET-1:976, DATASET-1:976,
(2,2,0) DATASET-1:976, DATASET-1:976, DATASET-1:976, DATASET-1:976,
(3,1,0) DATASET-1:976, DATASET-1:976, DATASET-1:976, DATASET-1:976
Attribute: enum3D {4, 3, 2}
Type: enum 32-bit little-endian integer {
RED = 0
GREEN = 1
}
Attribute: string {2}
Type: 2-byte null-terminated ASCII string
Data: "ab", "de"
Attribute: string2D {3, 2}
Type: 2-byte null-terminated ASCII string
Data:
(0,0,0) RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED,
(2,0,0) RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED
(0,0) "ab", "cd", "ef", "gh", "ij", "kl"
Attribute: string3D {4, 3, 2}
Type: 2-byte null-terminated ASCII string
Data:
(0,0,0) "ab", "cd", "ef", "gh", "ij", "kl", "mn", "pq", "rs", "tu",
(1,2,0) "vw", "xz", "AB", "CD", "EF", "GH", "IJ", "KL", "MN", "PQ",
(3,1,0) "RS", "TU", "VW", "XZ"
Attribute: vlen {2}
Type: variable length of
32-bit little-endian integer
Data: (1), (2,3)
Attribute: vlen2D {3, 2}
Type: variable length of
32-bit little-endian integer
Data:
(0,0) (0), (1), (2,3), (4,5), (6,7,8), (9,10,11)
Attribute: vlen3D {4, 3, 2}
Type: variable length of
32-bit little-endian integer
@ -288,6 +306,18 @@ dset Dataset {2/2}
(2,1,0) (24,25,26), (27,28,29), (30,31,32), (33,34,35),
(3,0,0) (36,37,38,39), (40,41,42,43), (44,45,46,47), (48,49,50,51),
(3,2,0) (52,53,54,55), (56,57,58,59)
Location: 1:976
Links: 1
Storage: 8 logical bytes, 0 allocated bytes
Type: 32-bit little-endian integer
g1 Group
Attribute: array {2}
Type: [3] 32-bit little-endian integer
Data: [1,2,3], [4,5,6]
Attribute: array2D {3, 2}
Type: [3] 32-bit little-endian integer
Data:
(0,0) [1,2,3], [4,5,6], [7,8,9], [10,11,12], [13,14,15], [16,17,18]
Attribute: array3D {4, 3, 2}
Type: [3] 32-bit little-endian integer
Data:
@ -296,69 +326,25 @@ dset Dataset {2/2}
(1,2,0) [31,32,33], [34,35,36], [37,38,39], [40,41,42], [43,44,45],
(2,1,1) [46,47,48], [49,50,51], [52,53,54], [55,56,57], [58,59,60],
(3,1,0) [61,62,63], [64,65,66], [67,68,69], [70,71,72]
Attribute: integer3D {4, 3, 2}
Type: 32-bit little-endian integer
Data:
(0,0,0) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
(2,2,1) 18, 19, 20, 21, 22, 23, 24
Attribute: float3D {4, 3, 2}
Type: IEEE 32-bit little-endian float
Data:
(0,0,0) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
(2,2,1) 18, 19, 20, 21, 22, 23, 24
Location: 1:976
Links: 1
Storage: 8 logical bytes, 0 allocated bytes
Type: 32-bit little-endian integer
g1 Group
Attribute: string {2}
Type: 2-byte null-terminated ASCII string
Data: "ab", "de"
Attribute: bitfield {2}
Type: 8-bit bitfield
Data: 0x01, 0x02
Attribute: opaque {2}
Type: 1-byte opaque type
(tag = "1-byte opaque type")
Data: 0x01, 0x02
Attribute: bitfield2D {3, 2}
Type: 8-bit bitfield
Data:
(0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
Attribute: bitfield3D {4, 3, 2}
Type: 8-bit bitfield
Data:
(0,0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
(1,2,0) 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
(3,1,0) 0x15, 0x16, 0x17, 0x18
Attribute: compound {2}
Type: struct {
"a" +0 8-bit integer
"b" +4 IEEE 64-bit little-endian float
} 12 bytes
Data: {1, 2}, {3, 4}
Attribute: enum {2}
Type: enum 32-bit little-endian integer {
RED = 0
GREEN = 1
}
Data: RED, RED
Attribute: vlen {2}
Type: variable length of
32-bit little-endian integer
Data: (1), (2,3)
Attribute: array {2}
Type: [3] 32-bit little-endian integer
Data: [1,2,3], [4,5,6]
Attribute: integer {2}
Type: 32-bit little-endian integer
Data: 1, 2
Attribute: float {2}
Type: IEEE 32-bit little-endian float
Data: 1, 2
Attribute: string2D {3, 2}
Type: 2-byte null-terminated ASCII string
Data:
(0,0) "ab", "cd", "ef", "gh", "ij", "kl"
Attribute: bitfield2D {3, 2}
Type: 8-bit bitfield
Data:
(0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
Attribute: opaque2D {3, 2}
Type: 1-byte opaque type
(tag = "1-byte opaque type")
Data:
(0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
Attribute: compound2D {3, 2}
Type: struct {
"a" +0 8-bit integer
@ -366,49 +352,6 @@ g1 Group
} 12 bytes
Data:
(0,0) {1, 2}, {3, 4}, {5, 6}, {7, 8}, {9, 10}, {11, 12}
Attribute: enum2D {3, 2}
Type: enum 32-bit little-endian integer {
RED = 0
GREEN = 1
}
Data:
(0,0) RED, RED, RED, RED, RED, RED
Attribute: vlen2D {3, 2}
Type: variable length of
32-bit little-endian integer
Data:
(0,0) (0), (1), (2,3), (4,5), (6,7,8), (9,10,11)
Attribute: array2D {3, 2}
Type: [3] 32-bit little-endian integer
Data:
(0,0) [1,2,3], [4,5,6], [7,8,9], [10,11,12], [13,14,15], [16,17,18]
Attribute: integer2D {3, 2}
Type: 32-bit little-endian integer
Data:
(0,0) 1, 2, 3, 4, 5, 6
Attribute: float2D {3, 2}
Type: IEEE 32-bit little-endian float
Data:
(0,0) 1, 2, 3, 4, 5, 6
Attribute: string3D {4, 3, 2}
Type: 2-byte null-terminated ASCII string
Data:
(0,0,0) "ab", "cd", "ef", "gh", "ij", "kl", "mn", "pq", "rs", "tu",
(1,2,0) "vw", "xz", "AB", "CD", "EF", "GH", "IJ", "KL", "MN", "PQ",
(3,1,0) "RS", "TU", "VW", "XZ"
Attribute: bitfield3D {4, 3, 2}
Type: 8-bit bitfield
Data:
(0,0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
(1,2,0) 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
(3,1,0) 0x15, 0x16, 0x17, 0x18
Attribute: opaque3D {4, 3, 2}
Type: 1-byte opaque type
(tag = "1-byte opaque type")
Data:
(0,0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
(1,2,0) 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
(3,1,0) 0x15, 0x16, 0x17, 0x18
Attribute: compound3D {4, 3, 2}
Type: struct {
"a" +0 8-bit integer
@ -419,6 +362,19 @@ g1 Group
(1,0,0) 14}, {15, 16}, {17, 18}, {19, 20}, {21, 22}, {23, 24},
(2,0,0) {25, 26}, {27, 28}, {29, 30}, {31, 32}, {33, 34}, {35, 36},
(3,0,0) {37, 38}, {39, 40}, {41, 42}, {43, 44}, {45, 46}, {47, 48}
Attribute: enum {2}
Type: enum 32-bit little-endian integer {
RED = 0
GREEN = 1
}
Data: RED, RED
Attribute: enum2D {3, 2}
Type: enum 32-bit little-endian integer {
RED = 0
GREEN = 1
}
Data:
(0,0) RED, RED, RED, RED, RED, RED
Attribute: enum3D {4, 3, 2}
Type: enum 32-bit little-endian integer {
RED = 0
@ -427,6 +383,68 @@ g1 Group
Data:
(0,0,0) RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED,
(2,0,0) RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED
Attribute: float {2}
Type: IEEE 32-bit little-endian float
Data: 1, 2
Attribute: float2D {3, 2}
Type: IEEE 32-bit little-endian float
Data:
(0,0) 1, 2, 3, 4, 5, 6
Attribute: float3D {4, 3, 2}
Type: IEEE 32-bit little-endian float
Data:
(0,0,0) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
(2,2,1) 18, 19, 20, 21, 22, 23, 24
Attribute: integer {2}
Type: 32-bit little-endian integer
Data: 1, 2
Attribute: integer2D {3, 2}
Type: 32-bit little-endian integer
Data:
(0,0) 1, 2, 3, 4, 5, 6
Attribute: integer3D {4, 3, 2}
Type: 32-bit little-endian integer
Data:
(0,0,0) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
(2,2,1) 18, 19, 20, 21, 22, 23, 24
Attribute: opaque {2}
Type: 1-byte opaque type
(tag = "1-byte opaque type")
Data: 0x01, 0x02
Attribute: opaque2D {3, 2}
Type: 1-byte opaque type
(tag = "1-byte opaque type")
Data:
(0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
Attribute: opaque3D {4, 3, 2}
Type: 1-byte opaque type
(tag = "1-byte opaque type")
Data:
(0,0,0) 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
(1,2,0) 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
(3,1,0) 0x15, 0x16, 0x17, 0x18
Attribute: string {2}
Type: 2-byte null-terminated ASCII string
Data: "ab", "de"
Attribute: string2D {3, 2}
Type: 2-byte null-terminated ASCII string
Data:
(0,0) "ab", "cd", "ef", "gh", "ij", "kl"
Attribute: string3D {4, 3, 2}
Type: 2-byte null-terminated ASCII string
Data:
(0,0,0) "ab", "cd", "ef", "gh", "ij", "kl", "mn", "pq", "rs", "tu",
(1,2,0) "vw", "xz", "AB", "CD", "EF", "GH", "IJ", "KL", "MN", "PQ",
(3,1,0) "RS", "TU", "VW", "XZ"
Attribute: vlen {2}
Type: variable length of
32-bit little-endian integer
Data: (1), (2,3)
Attribute: vlen2D {3, 2}
Type: variable length of
32-bit little-endian integer
Data:
(0,0) (0), (1), (2,3), (4,5), (6,7,8), (9,10,11)
Attribute: vlen3D {4, 3, 2}
Type: variable length of
32-bit little-endian integer
@ -436,24 +454,6 @@ g1 Group
(2,1,0) (24,25,26), (27,28,29), (30,31,32), (33,34,35),
(3,0,0) (36,37,38,39), (40,41,42,43), (44,45,46,47), (48,49,50,51),
(3,2,0) (52,53,54,55), (56,57,58,59)
Attribute: array3D {4, 3, 2}
Type: [3] 32-bit little-endian integer
Data:
(0,0,0) [1,2,3], [4,5,6], [7,8,9], [10,11,12], [13,14,15],
(0,2,1) [16,17,18], [19,20,21], [22,23,24], [25,26,27], [28,29,30],
(1,2,0) [31,32,33], [34,35,36], [37,38,39], [40,41,42], [43,44,45],
(2,1,1) [46,47,48], [49,50,51], [52,53,54], [55,56,57], [58,59,60],
(3,1,0) [61,62,63], [64,65,66], [67,68,69], [70,71,72]
Attribute: integer3D {4, 3, 2}
Type: 32-bit little-endian integer
Data:
(0,0,0) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
(2,2,1) 18, 19, 20, 21, 22, 23, 24
Attribute: float3D {4, 3, 2}
Type: IEEE 32-bit little-endian float
Data:
(0,0,0) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
(2,2,1) 18, 19, 20, 21, 22, 23, 24
Location: 1:2176
Links: 1
g2 Group

View File

@ -200,6 +200,82 @@ Expected output for 'h5dump --xml tref-escapes-at.h5'
<hdf5:IntegerType ByteOrder="BE" Sign="false" Size="1" />
</hdf5:AtomicType>
</hdf5:DataType>
<hdf5:Attribute Name="reftoamp">
<hdf5:Dataspace>
<hdf5:SimpleDataspace Ndims="1">
<hdf5:Dimension DimSize="1" MaxDimSize="1"/>
</hdf5:SimpleDataspace>
</hdf5:Dataspace>
<hdf5:DataType>
<hdf5:AtomicType>
<hdf5:ReferenceType>
<hdf5:ObjectReferenceType />
</hdf5:ReferenceType>
</hdf5:AtomicType>
</hdf5:DataType>
<hdf5:Data>
<hdf5:DataFromFile>
"/Group1/Dataset&amp;amp"
</hdf5:DataFromFile>
</hdf5:Data>
</hdf5:Attribute>
<hdf5:Attribute Name="reftoapos">
<hdf5:Dataspace>
<hdf5:SimpleDataspace Ndims="1">
<hdf5:Dimension DimSize="1" MaxDimSize="1"/>
</hdf5:SimpleDataspace>
</hdf5:Dataspace>
<hdf5:DataType>
<hdf5:AtomicType>
<hdf5:ReferenceType>
<hdf5:ObjectReferenceType />
</hdf5:ReferenceType>
</hdf5:AtomicType>
</hdf5:DataType>
<hdf5:Data>
<hdf5:DataFromFile>
"/Group1/Dataset&apos;apos"
</hdf5:DataFromFile>
</hdf5:Data>
</hdf5:Attribute>
<hdf5:Attribute Name="reftogt">
<hdf5:Dataspace>
<hdf5:SimpleDataspace Ndims="1">
<hdf5:Dimension DimSize="1" MaxDimSize="1"/>
</hdf5:SimpleDataspace>
</hdf5:Dataspace>
<hdf5:DataType>
<hdf5:AtomicType>
<hdf5:ReferenceType>
<hdf5:ObjectReferenceType />
</hdf5:ReferenceType>
</hdf5:AtomicType>
</hdf5:DataType>
<hdf5:Data>
<hdf5:DataFromFile>
"/Group1/Dataset&gt;gt"
</hdf5:DataFromFile>
</hdf5:Data>
</hdf5:Attribute>
<hdf5:Attribute Name="reftolt">
<hdf5:Dataspace>
<hdf5:SimpleDataspace Ndims="1">
<hdf5:Dimension DimSize="1" MaxDimSize="1"/>
</hdf5:SimpleDataspace>
</hdf5:Dataspace>
<hdf5:DataType>
<hdf5:AtomicType>
<hdf5:ReferenceType>
<hdf5:ObjectReferenceType />
</hdf5:ReferenceType>
</hdf5:AtomicType>
</hdf5:DataType>
<hdf5:Data>
<hdf5:DataFromFile>
"/Group1/Dataset&lt;lt"
</hdf5:DataFromFile>
</hdf5:Data>
</hdf5:Attribute>
<hdf5:Attribute Name="reftoquote">
<hdf5:Dataspace>
<hdf5:SimpleDataspace Ndims="1">
@ -238,82 +314,6 @@ Expected output for 'h5dump --xml tref-escapes-at.h5'
</hdf5:DataFromFile>
</hdf5:Data>
</hdf5:Attribute>
<hdf5:Attribute Name="reftoamp">
<hdf5:Dataspace>
<hdf5:SimpleDataspace Ndims="1">
<hdf5:Dimension DimSize="1" MaxDimSize="1"/>
</hdf5:SimpleDataspace>
</hdf5:Dataspace>
<hdf5:DataType>
<hdf5:AtomicType>
<hdf5:ReferenceType>
<hdf5:ObjectReferenceType />
</hdf5:ReferenceType>
</hdf5:AtomicType>
</hdf5:DataType>
<hdf5:Data>
<hdf5:DataFromFile>
"/Group1/Dataset&amp;amp"
</hdf5:DataFromFile>
</hdf5:Data>
</hdf5:Attribute>
<hdf5:Attribute Name="reftolt">
<hdf5:Dataspace>
<hdf5:SimpleDataspace Ndims="1">
<hdf5:Dimension DimSize="1" MaxDimSize="1"/>
</hdf5:SimpleDataspace>
</hdf5:Dataspace>
<hdf5:DataType>
<hdf5:AtomicType>
<hdf5:ReferenceType>
<hdf5:ObjectReferenceType />
</hdf5:ReferenceType>
</hdf5:AtomicType>
</hdf5:DataType>
<hdf5:Data>
<hdf5:DataFromFile>
"/Group1/Dataset&lt;lt"
</hdf5:DataFromFile>
</hdf5:Data>
</hdf5:Attribute>
<hdf5:Attribute Name="reftogt">
<hdf5:Dataspace>
<hdf5:SimpleDataspace Ndims="1">
<hdf5:Dimension DimSize="1" MaxDimSize="1"/>
</hdf5:SimpleDataspace>
</hdf5:Dataspace>
<hdf5:DataType>
<hdf5:AtomicType>
<hdf5:ReferenceType>
<hdf5:ObjectReferenceType />
</hdf5:ReferenceType>
</hdf5:AtomicType>
</hdf5:DataType>
<hdf5:Data>
<hdf5:DataFromFile>
"/Group1/Dataset&gt;gt"
</hdf5:DataFromFile>
</hdf5:Data>
</hdf5:Attribute>
<hdf5:Attribute Name="reftoapos">
<hdf5:Dataspace>
<hdf5:SimpleDataspace Ndims="1">
<hdf5:Dimension DimSize="1" MaxDimSize="1"/>
</hdf5:SimpleDataspace>
</hdf5:Dataspace>
<hdf5:DataType>
<hdf5:AtomicType>
<hdf5:ReferenceType>
<hdf5:ObjectReferenceType />
</hdf5:ReferenceType>
</hdf5:AtomicType>
</hdf5:DataType>
<hdf5:Data>
<hdf5:DataFromFile>
"/Group1/Dataset&apos;apos"
</hdf5:DataFromFile>
</hdf5:Data>
</hdf5:Attribute>
<hdf5:Attribute Name="reftospace">
<hdf5:Dataspace>
<hdf5:SimpleDataspace Ndims="1">

File diff suppressed because it is too large Load Diff