mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-04-12 17:31:09 +08:00
[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:
parent
302830e601
commit
59b51a2ea7
@ -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");
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
100
test/tattr.c
100
test/tattr.c
@ -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 */
|
||||
|
@ -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__);
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
</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"
|
||||
</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"
|
||||
</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"
|
||||
</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"
|
||||
</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"
|
||||
</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"
|
||||
</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"
|
||||
</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
Loading…
x
Reference in New Issue
Block a user