From 77a223347552ceb2029c1d2677f7aec4d3cd6684 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Wed, 15 Jun 2016 13:35:25 -0500 Subject: [svn-r30083] Added BRANCH.txt --- BRANCH.txt | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 BRANCH.txt diff --git a/BRANCH.txt b/BRANCH.txt new file mode 100644 index 0000000..9efaed8 --- /dev/null +++ b/BRANCH.txt @@ -0,0 +1,8 @@ +evict_on_close + +This branch is for the development of the "evict on close" feature +which will cause the library to evict all cached information +on object close. + +Dana Robinson is in charge of the branch, which follows the trunk. +It will be deleted when the feature is merged to the trunk. -- cgit v0.12 From 75aa26981b4becc6926f4100707d9614e84a041c Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Wed, 15 Jun 2016 13:55:59 -0500 Subject: [svn-r30084] First pass at the evict-on-close feature. The features is controlled via H5Pset/get_evict_on_close() and is currently enabled by default (it will be disabled by default in the final implementation). There is a bug in the code where the eviction of tagged metadata fails due to some of the metadata being dirty, resulting in error return values and test failures. --- MANIFEST | 1 + src/H5D.c | 30 +++++++++++++++--- src/H5Fint.c | 16 ++++++++++ src/H5Fpkg.h | 1 + src/H5Fprivate.h | 6 +++- src/H5Fquery.c | 27 ++++++++++++++++ src/H5Pfapl.c | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/H5Ppublic.h | 2 ++ test/CMakeTests.cmake | 2 ++ test/Makefile.am | 2 +- 10 files changed, 168 insertions(+), 6 deletions(-) diff --git a/MANIFEST b/MANIFEST index e3b0195..13596d0 100644 --- a/MANIFEST +++ b/MANIFEST @@ -900,6 +900,7 @@ ./test/enc_dec_plist.c ./test/enc_dec_plist_cross_platform.c ./test/enum.c +./test/evict_on_close.c ./test/extend.c ./test/external.c ./test/error_test.c diff --git a/src/H5D.c b/src/H5D.c index 23397ad..1ba3829 100644 --- a/src/H5D.c +++ b/src/H5D.c @@ -324,21 +324,43 @@ done: herr_t H5Dclose(hid_t dset_id) { - herr_t ret_value = SUCCEED; /* Return value */ + H5D_t *dset = NULL; /* Dataset */ + H5F_t *file = NULL; /* File */ + hbool_t evict = FALSE; /* Evict metadata on close? */ + haddr_t tag = HADDR_UNDEF; /* Metadata tag for evictions */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_API(FAIL) H5TRACE1("e", "i", dset_id); /* Check args */ - if(NULL == H5I_object_verify(dset_id, H5I_DATASET)) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset") + if(NULL == (dset = (H5D_t *)H5I_object_verify(dset_id, H5I_DATASET))) + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset") + + /* Check if this is the last object reference and we'll be evicting + * on close. We need to cache this info since it will be gone after the + * decrement call frees the struct. + */ + file = dset->oloc.file; + if(1 == dset->shared->fo_count && H5F_EVICT_ON_CLOSE(file)) { + evict = TRUE; + tag = dset->oloc.addr; + } /* end if */ /* * Decrement the counter on the dataset. It will be freed if the count * reaches zero. */ if(H5I_dec_app_ref_always_close(dset_id) < 0) - HGOTO_ERROR(H5E_DATASET, H5E_CANTDEC, FAIL, "can't decrement count on dataset ID") + HGOTO_ERROR(H5E_DATASET, H5E_CANTDEC, FAIL, "can't decrement count on dataset ID") + + /* Clean up metadata in the metadata cache if evicting on close */ + if(evict && H5F_SHARED(file)) { + if(H5F_flush_tagged_metadata(file, tag, H5AC_ind_read_dxpl_id) < 0) + HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush tagged metadata") + if(H5F_evict_tagged_metadata(file, tag, H5AC_ind_read_dxpl_id) < 0) + HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to evict tagged metadata") + } /* end if */ done: FUNC_LEAVE_API(ret_value) diff --git a/src/H5Fint.c b/src/H5Fint.c index 80c593b..5b7fdda 100644 --- a/src/H5Fint.c +++ b/src/H5Fint.c @@ -954,6 +954,7 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id, H5FD_class_t *drvr; /*file driver class info */ H5P_genplist_t *a_plist; /*file access property list */ H5F_close_degree_t fc_degree; /*file close degree */ + hbool_t evict_on_close; /* evict on close value from plist */ H5F_t *ret_value = NULL; /*actual return value */ FUNC_ENTER_NOAPI(NULL) @@ -1118,6 +1119,21 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id, HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, NULL, "file close degree doesn't match") } /* end if */ + /* Record the evict-on-close MDC behavior. If it's the first time opening + * the file, set it to access property list value; if it's the second time + * or later, verify that the access property list value matches the value + * in shared file structure. + */ + if(H5P_get(a_plist, H5F_ACS_EVICT_ON_CLOSE_FLAG_NAME, &evict_on_close) < 0) + HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, NULL, "can't get evict on close value") + + if(shared->nrefs == 1) { + shared->evict_on_close = evict_on_close; + } else if(shared->nrefs > 1) { + if(shared->evict_on_close != evict_on_close) + HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, NULL, "file evict-on-close value doesn't match") + } /* end if */ + /* Formulate the absolute path for later search of target file for external links */ if(H5_build_extpath(name, &file->extpath) < 0) HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, NULL, "unable to build extpath") diff --git a/src/H5Fpkg.h b/src/H5Fpkg.h index c5aed3b..8ec2a93 100644 --- a/src/H5Fpkg.h +++ b/src/H5Fpkg.h @@ -261,6 +261,7 @@ struct H5F_file_t { /* not change thereafter. */ hid_t fcpl_id; /* File creation property list ID */ H5F_close_degree_t fc_degree; /* File close behavior degree */ + hbool_t evict_on_close; /* If the file's objects should be evicted from the metadata cache on close */ size_t rdcc_nslots; /* Size of raw data chunk cache (slots) */ size_t rdcc_nbytes; /* Size of raw data chunk cache (bytes) */ double rdcc_w0; /* Preempt read chunks first? [0.0..1.0]*/ diff --git a/src/H5Fprivate.h b/src/H5Fprivate.h index 34a5277..e3b5547 100644 --- a/src/H5Fprivate.h +++ b/src/H5Fprivate.h @@ -279,7 +279,7 @@ #define H5F_ACTUAL_NAME(F) ((F)->actual_name) #define H5F_EXTPATH(F) ((F)->extpath) #define H5F_SHARED(F) ((F)->shared) -#define H5F_SAME_SHARED(F1, F2) ((F1)->shared == (F2)->shared)) +#define H5F_SAME_SHARED(F1, F2) ((F1)->shared == (F2)->shared) #define H5F_NOPEN_OBJS(F) ((F)->nopen_objs) #define H5F_INCR_NOPEN_OBJS(F) ((F)->nopen_objs++) #define H5F_DECR_NOPEN_OBJS(F) ((F)->nopen_objs--) @@ -303,6 +303,7 @@ #define H5F_SET_SOHM_NINDEXES(F, N) ((F)->shared->sohm_nindexes = (N)) #define H5F_FCPL(F) ((F)->shared->fcpl_id) #define H5F_GET_FC_DEGREE(F) ((F)->shared->fc_degree) +#define H5F_EVICT_ON_CLOSE(F) ((F)->shared->evict_on_close) #define H5F_RDCC_NSLOTS(F) ((F)->shared->rdcc_nslots) #define H5F_RDCC_NBYTES(F) ((F)->shared->rdcc_nbytes) #define H5F_RDCC_W0(F) ((F)->shared->rdcc_w0) @@ -348,6 +349,7 @@ #define H5F_SET_SOHM_NINDEXES(F, N) (H5F_set_sohm_nindexes((F), (N))) #define H5F_FCPL(F) (H5F_get_fcpl(F)) #define H5F_GET_FC_DEGREE(F) (H5F_get_fc_degree(F)) +#define H5F_EVICT_ON_CLOSE(F) (H5F_get_evict_on_close(F)) #define H5F_RDCC_NSLOTS(F) (H5F_rdcc_nslots(F)) #define H5F_RDCC_NBYTES(F) (H5F_rdcc_nbytes(F)) #define H5F_RDCC_W0(F) (H5F_rdcc_w0(F)) @@ -463,6 +465,7 @@ #define H5F_ACS_EFC_SIZE_NAME "efc_size" /* Size of external file cache */ #define H5F_ACS_FILE_IMAGE_INFO_NAME "file_image_info" /* struct containing initial file image and callback info */ #define H5F_ACS_CORE_WRITE_TRACKING_FLAG_NAME "core_write_tracking_flag" /* Whether or not core VFD backing store write tracking is enabled */ +#define H5F_ACS_EVICT_ON_CLOSE_FLAG_NAME "evict_on_close_flag" /* Whether or not the metadata cache will evict objects on close */ #define H5F_ACS_CORE_WRITE_TRACKING_PAGE_SIZE_NAME "core_write_tracking_page_size" /* The page size in kiB when core VFD write tracking is enabled */ #define H5F_ACS_COLL_MD_WRITE_FLAG_NAME "collective_metadata_write" /* property indicating whether metadata writes are done collectively or not */ @@ -660,6 +663,7 @@ H5_DLL unsigned H5F_get_sohm_nindexes(const H5F_t *f); H5_DLL herr_t H5F_set_sohm_nindexes(H5F_t *f, unsigned nindexes); H5_DLL hid_t H5F_get_fcpl(const H5F_t *f); H5_DLL H5F_close_degree_t H5F_get_fc_degree(const H5F_t *f); +H5_DLL hbool_t H5F_get_evict_on_close(const H5F_t *f); H5_DLL size_t H5F_rdcc_nbytes(const H5F_t *f); H5_DLL size_t H5F_rdcc_nslots(const H5F_t *f); H5_DLL double H5F_rdcc_w0(const H5F_t *f); diff --git a/src/H5Fquery.c b/src/H5Fquery.c index dd6e8e3..f59a9b7 100644 --- a/src/H5Fquery.c +++ b/src/H5Fquery.c @@ -835,6 +835,33 @@ H5F_get_fc_degree(const H5F_t *f) /*------------------------------------------------------------------------- + * Function: H5F_get_evict_on_close + * + * Purpose: Retrieve the 'file close degree' for the file. + * + * Return: Success: Flag indicating whether the evict-on-close + * property was set for the file. + * Failure: (can't happen) + * + * Programmer: Dana Robinson + * Spring 2016 + * + *------------------------------------------------------------------------- + */ +hbool_t +H5F_get_evict_on_close(const H5F_t *f) +{ + /* Use FUNC_ENTER_NOAPI_NOINIT_NOERR here to avoid performance issues */ + FUNC_ENTER_NOAPI_NOINIT_NOERR + + HDassert(f); + HDassert(f->shared); + + FUNC_LEAVE_NOAPI(f->shared->evict_on_close) +} /* end H5F_get_evict_on_close() */ + + +/*------------------------------------------------------------------------- * Function: H5F_store_msg_crt_idx * * Purpose: Retrieve the 'store message creation index' flag for the file. diff --git a/src/H5Pfapl.c b/src/H5Pfapl.c index a315f92..c3108c5 100644 --- a/src/H5Pfapl.c +++ b/src/H5Pfapl.c @@ -181,6 +181,11 @@ /* Definition for object flush callback */ #define H5F_ACS_OBJECT_FLUSH_CB_SIZE sizeof(H5F_object_flush_t) #define H5F_ACS_OBJECT_FLUSH_CB_DEF {NULL, NULL} +/* Definition for evict on close property */ +#define H5F_ACS_EVICT_ON_CLOSE_FLAG_SIZE sizeof(hbool_t) +#define H5F_ACS_EVICT_ON_CLOSE_FLAG_DEF TRUE +#define H5F_ACS_EVICT_ON_CLOSE_FLAG_ENC H5P__encode_hbool_t +#define H5F_ACS_EVICT_ON_CLOSE_FLAG_DEC H5P__decode_hbool_t #ifdef H5_HAVE_PARALLEL /* Definition of collective metadata read mode flag */ #define H5F_ACS_COLL_MD_READ_FLAG_SIZE sizeof(H5P_coll_md_read_flag_t) @@ -296,6 +301,7 @@ static const H5FD_file_image_info_t H5F_def_file_image_info_g = H5F_ACS_FILE_IMA static const hbool_t H5F_def_core_write_tracking_flag_g = H5F_ACS_CORE_WRITE_TRACKING_FLAG_DEF; /* Default setting for core VFD write tracking */ static const size_t H5F_def_core_write_tracking_page_size_g = H5F_ACS_CORE_WRITE_TRACKING_PAGE_SIZE_DEF; /* Default core VFD write tracking page size */ static const H5F_object_flush_t H5F_def_object_flush_cb_g = H5F_ACS_OBJECT_FLUSH_CB_DEF; /* Default setting for object flush callback */ +static const hbool_t H5F_def_evict_on_close_flag_g = H5F_ACS_EVICT_ON_CLOSE_FLAG_DEF; /* Default setting for evict on close property */ #ifdef H5_HAVE_PARALLEL static const H5P_coll_md_read_flag_t H5F_def_coll_md_read_flag_g = H5F_ACS_COLL_MD_READ_FLAG_DEF; /* Default setting for the collective metedata read flag */ static const hbool_t H5F_def_coll_md_write_flag_g = H5F_ACS_COLL_MD_WRITE_FLAG_DEF; /* Default setting for the collective metedata write flag */ @@ -462,6 +468,12 @@ H5P__facc_reg_prop(H5P_genclass_t *pclass) NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0) HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class") + /* Register the evict on close flag */ + if(H5P_register_real(pclass, H5F_ACS_EVICT_ON_CLOSE_FLAG_NAME, H5F_ACS_EVICT_ON_CLOSE_FLAG_SIZE, &H5F_def_evict_on_close_flag_g, + NULL, NULL, NULL, H5F_ACS_EVICT_ON_CLOSE_FLAG_ENC, H5F_ACS_EVICT_ON_CLOSE_FLAG_DEC, + NULL, NULL, NULL, NULL) < 0) + HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class") + #ifdef H5_HAVE_PARALLEL /* Register the metadata collective read flag */ if(H5P_register_real(pclass, H5_COLL_MD_READ_FLAG_NAME, H5F_ACS_COLL_MD_READ_FLAG_SIZE, &H5F_def_coll_md_read_flag_g, @@ -3605,6 +3617,81 @@ done: FUNC_LEAVE_API(ret_value) } /* H5Pget_obj_flush_cb() */ + +/*------------------------------------------------------------------------- + * Function: H5Pset_evict_on_close + * + * Purpose: + * + * Return: SUCCEED/FAIL + * + * Programmer: Dana Robinson + * Spring 2016 + * + *------------------------------------------------------------------------- + */ +herr_t +H5Pset_evict_on_close(hid_t fapl_id, hbool_t evict_on_close) +{ + H5P_genplist_t *plist; /* property list pointer */ + herr_t ret_value = SUCCEED; /* return value */ + + FUNC_ENTER_API(FAIL) + H5TRACE2("e", "ib", fapl_id, evict_on_close); + + /* Compare the property list's class against the other class */ + if(TRUE != H5P_isa_class(fapl_id, H5P_FILE_ACCESS)) + HGOTO_ERROR(H5E_PLIST, H5E_CANTREGISTER, FAIL, "property list is not a file access plist") + + /* Get the plist structure */ + if(NULL == (plist = (H5P_genplist_t *)H5I_object(fapl_id))) + HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID") + + /* Set values */ + if(H5P_set(plist, H5F_ACS_EVICT_ON_CLOSE_FLAG_NAME, &evict_on_close) < 0) + HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set evict on close property") + +done: + FUNC_LEAVE_API(ret_value) +} /* end H5Pset_evict_on_close() */ + + +/*------------------------------------------------------------------------- + * Function: H5Pget_evict_on_close + * + * Purpose: + * + * Return: SUCCEED/FAIL + * + * Programmer: Dana Robinson + * Spring 2016 + * + *------------------------------------------------------------------------- + */ +herr_t +H5Pget_evict_on_close(hid_t fapl_id, hbool_t *evict_on_close) +{ + H5P_genplist_t *plist; /* property list pointer */ + herr_t ret_value = SUCCEED; /* return value */ + + FUNC_ENTER_API(FAIL) + H5TRACE2("e", "i*b", fapl_id, evict_on_close); + + /* Compare the property list's class against the other class */ + if(TRUE != H5P_isa_class(fapl_id, H5P_FILE_ACCESS)) + HGOTO_ERROR(H5E_PLIST, H5E_CANTREGISTER, FAIL, "property list is not an access plist") + + /* Get the plist structure */ + if(NULL == (plist = (H5P_genplist_t *)H5I_object(fapl_id))) + HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID") + + if(H5P_get(plist, H5F_ACS_EVICT_ON_CLOSE_FLAG_NAME, evict_on_close) < 0) + HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get evict on close property") + +done: + FUNC_LEAVE_API(ret_value) +} /* end H5Pget_evict_on_close() */ + #ifdef H5_HAVE_PARALLEL /*------------------------------------------------------------------------- diff --git a/src/H5Ppublic.h b/src/H5Ppublic.h index 0318c8f..b807a37 100644 --- a/src/H5Ppublic.h +++ b/src/H5Ppublic.h @@ -353,6 +353,8 @@ H5_DLL herr_t H5Pset_core_write_tracking(hid_t fapl_id, hbool_t is_enabled, size H5_DLL herr_t H5Pget_core_write_tracking(hid_t fapl_id, hbool_t *is_enabled, size_t *page_size); H5_DLL herr_t H5Pset_object_flush_cb(hid_t plist_id, H5F_flush_cb_t func, void *udata); H5_DLL herr_t H5Pget_object_flush_cb(hid_t plist_id, H5F_flush_cb_t *func, void **udata); +H5_DLL herr_t H5Pset_evict_on_close(hid_t fapl_id, hbool_t evict_on_close); +H5_DLL herr_t H5Pget_evict_on_close(hid_t fapl_id, hbool_t *evict_on_close); #ifdef H5_HAVE_PARALLEL H5_DLL herr_t H5Pset_all_coll_metadata_ops(hid_t plist_id, hbool_t is_collective); H5_DLL herr_t H5Pget_all_coll_metadata_ops(hid_t plist_id, hbool_t *is_collective); diff --git a/test/CMakeTests.cmake b/test/CMakeTests.cmake index e42d8b1..dacf4ba 100644 --- a/test/CMakeTests.cmake +++ b/test/CMakeTests.cmake @@ -603,6 +603,7 @@ set (H5TEST_TESTS ohdr stab gheap + evict_on_close farray earray btree2 @@ -955,6 +956,7 @@ if (HDF5_TEST_VFD) ohdr stab gheap + evict_on_close pool # accum farray diff --git a/test/Makefile.am b/test/Makefile.am index 37bf539..a7c39f3 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -42,7 +42,7 @@ check_SCRIPTS = $(TEST_SCRIPT) # As an exception, long-running tests should occur earlier in the list. # This gives them more time to run when tests are executing in parallel. TEST_PROG= testhdf5 cache cache_api cache_tagging lheap ohdr stab gheap \ - farray earray btree2 fheap \ + evict_on_close farray earray btree2 fheap \ pool accum hyperslab istore bittests dt_arith \ dtypes dsets cmpd_dset filter_fail extend external efc objcopy links unlink \ big mtime fillval mount flush1 flush2 app_ref enum \ -- cgit v0.12 From f9312d49d52ba6e6af4549907dd73a4901db6f70 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Sat, 25 Jun 2016 08:30:11 -0500 Subject: [svn-r30105] Datatypes and Groups now support evict-on-close. --- src/H5G.c | 32 ++++++++++++++++++++++++++++++-- src/H5T.c | 31 +++++++++++++++++++++++++++++-- 2 files changed, 59 insertions(+), 4 deletions(-) diff --git a/src/H5G.c b/src/H5G.c index 9bbd43f..e4313fe 100644 --- a/src/H5G.c +++ b/src/H5G.c @@ -715,15 +715,29 @@ done: herr_t H5Gclose(hid_t group_id) { - herr_t ret_value = SUCCEED; /* Return value */ + H5G_t *grp = NULL; /* Group */ + H5F_t *file = NULL; /* File */ + hbool_t evict = FALSE; /* Evict metadata on close? */ + haddr_t tag = HADDR_UNDEF; /* Metadata tag for evictions */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_API(FAIL) H5TRACE1("e", "i", group_id); /* Check args */ - if(NULL == H5I_object_verify(group_id,H5I_GROUP)) + if(NULL == (grp = (H5G_t *)H5I_object_verify(group_id,H5I_GROUP))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a group") + /* Check if this is the last object reference and we'll be evicting + * on close. We need to cache this info since it will be gone after the + * decrement call frees the struct. + */ + file = grp->oloc.file; + if(1 == grp->shared->fo_count && H5F_EVICT_ON_CLOSE(file)) { + evict = TRUE; + tag = grp->oloc.addr; + } /* end if */ + /* * Decrement the counter on the group atom. It will be freed if the count * reaches zero. @@ -731,6 +745,20 @@ H5Gclose(hid_t group_id) if(H5I_dec_app_ref(group_id) < 0) HGOTO_ERROR(H5E_SYM, H5E_CANTRELEASE, FAIL, "unable to close group") + /* Clean up metadata in the metadata cache if evicting on close */ + if(evict && H5F_SHARED(file)) { +// printf("DUMPING CACHE - BEFORE FLUSH\n"); +// H5AC_dump_cache(file); + if(H5AC_flush_tagged_metadata(file, tag, H5AC_ind_read_dxpl_id) < 0) + HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush tagged metadata") +// printf("DUMPING CACHE - BETWEEN FLUSH AND EVICT\n"); +// H5AC_dump_cache(file); + if(H5AC_evict_tagged_metadata(file, tag, FALSE, H5AC_ind_read_dxpl_id) < 0) + HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to evict tagged metadata") +// printf("DUMPING CACHE - AFTER EVICT\n"); +// H5AC_dump_cache(file); + } /* end if */ + done: FUNC_LEAVE_API(ret_value) } /* end H5Gclose() */ diff --git a/src/H5T.c b/src/H5T.c index 775cfdb..2fbc193 100644 --- a/src/H5T.c +++ b/src/H5T.c @@ -1712,8 +1712,11 @@ done: herr_t H5Tclose(hid_t type_id) { - H5T_t *dt; /* Pointer to datatype to close */ - herr_t ret_value = SUCCEED; /* Return value */ + H5T_t *dt; /* Pointer to datatype to close */ + H5F_t *file = NULL; /* File */ + hbool_t evict = FALSE; /* Evict metadata on close? */ + haddr_t tag = HADDR_UNDEF; /* Metadata tag for evictions */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_API(FAIL) H5TRACE1("e", "i", type_id); @@ -1724,10 +1727,34 @@ H5Tclose(hid_t type_id) if(H5T_STATE_IMMUTABLE == dt->shared->state) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "immutable datatype") + /* Check if this is the last object reference and we'll be evicting + * on close. We need to cache this info since it will be gone after the + * decrement call frees the struct. + */ + file = dt->oloc.file; + if(file && 1 == dt->shared->fo_count && H5F_EVICT_ON_CLOSE(file)) { + evict = TRUE; + tag = dt->oloc.addr; + } /* end if */ + /* When the reference count reaches zero the resources are freed */ if(H5I_dec_app_ref(type_id) < 0) HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "problem freeing id") + /* Clean up metadata in the metadata cache if evicting on close */ + if(evict && H5F_SHARED(file)) { +// printf("DUMPING CACHE - BEFORE FLUSH\n"); +// H5AC_dump_cache(file); + if(H5AC_flush_tagged_metadata(file, tag, H5AC_ind_read_dxpl_id) < 0) + HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush tagged metadata") +// printf("DUMPING CACHE - BETWEEN FLUSH AND EVICT\n"); +// H5AC_dump_cache(file); + if(H5AC_evict_tagged_metadata(file, tag, FALSE, H5AC_ind_read_dxpl_id) < 0) + HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to evict tagged metadata") +// printf("DUMPING CACHE - AFTER EVICT\n"); +// H5AC_dump_cache(file); + } /* end if */ + done: FUNC_LEAVE_API(ret_value) } /* end H5Tclose() */ -- cgit v0.12 From b236c2160102a5ed6dd6bce7b0fea0613424981e Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Sat, 25 Jun 2016 09:54:33 -0500 Subject: [svn-r30106] Moved datatype close code to new internal function. H5Oclose() now supports evict-on-close for datatypes. --- src/H5O.c | 8 ++++++-- src/H5T.c | 49 ++++++++++++++++++++++++++++++++++++++----------- src/H5Tprivate.h | 1 + 3 files changed, 45 insertions(+), 13 deletions(-) diff --git a/src/H5O.c b/src/H5O.c index d1806a1..aa30e79 100644 --- a/src/H5O.c +++ b/src/H5O.c @@ -1069,14 +1069,18 @@ H5Oclose(hid_t object_id) /* Get the type of the object and close it in the correct way */ switch(H5I_get_type(object_id)) { case H5I_GROUP: - case H5I_DATATYPE: case H5I_DATASET: if(H5I_object(object_id) == NULL) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "not a valid object") if(H5I_dec_app_ref(object_id) < 0) HGOTO_ERROR(H5E_OHDR, H5E_CANTRELEASE, FAIL, "unable to close object") break; - + case H5I_DATATYPE: + if(H5I_object(object_id) == NULL) + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "not a valid object") + if(H5T_close_id(object_id) < 0) + HGOTO_ERROR(H5E_OHDR, H5E_CANTRELEASE, FAIL, "unable to close object") + break; case H5I_UNINIT: case H5I_BADID: case H5I_FILE: diff --git a/src/H5T.c b/src/H5T.c index 2fbc193..dca1a30 100644 --- a/src/H5T.c +++ b/src/H5T.c @@ -1696,30 +1696,57 @@ done: /*------------------------------------------------------------------------- - * Function: H5Tclose + * Function: H5Tclose * - * Purpose: Frees a datatype and all associated memory. + * Purpose: Frees a datatype and all associated memory. * - * Return: Non-negative on success/Negative on failure - * - * Programmer: Robb Matzke - * Tuesday, December 9, 1997 + * Return: Non-negative on success/Negative on failure * - * Modifications: + * Programmer: Robb Matzke + * Tuesday, December 9, 1997 * *------------------------------------------------------------------------- */ herr_t H5Tclose(hid_t type_id) { + herr_t ret_value = SUCCEED; /* Return value */ + + FUNC_ENTER_API(FAIL) + H5TRACE1("e", "i", type_id); + + /* Call internal function */ + if(H5T_close_id(type_id) < 0) + HGOTO_ERROR(H5E_OHDR, H5E_CANTRELEASE, FAIL, "unable to close object") + +done: + FUNC_LEAVE_API(ret_value) +} /* end H5Tclose() */ + + +/*------------------------------------------------------------------------- + * Function: H5T_close_id + * + * Purpose: Internal function to free a datatype and all associated + * memory. + * + * Return: SUCCEED/FAIL + * + * Programmer: Dana Robinson + * Summer 2016 + * + *------------------------------------------------------------------------- + */ +herr_t +H5T_close_id(hid_t type_id) +{ H5T_t *dt; /* Pointer to datatype to close */ H5F_t *file = NULL; /* File */ hbool_t evict = FALSE; /* Evict metadata on close? */ haddr_t tag = HADDR_UNDEF; /* Metadata tag for evictions */ herr_t ret_value = SUCCEED; /* Return value */ - FUNC_ENTER_API(FAIL) - H5TRACE1("e", "i", type_id); + FUNC_ENTER_NOAPI(FAIL) /* Check args */ if(NULL == (dt = (H5T_t *)H5I_object_verify(type_id, H5I_DATATYPE))) @@ -1756,8 +1783,8 @@ H5Tclose(hid_t type_id) } /* end if */ done: - FUNC_LEAVE_API(ret_value) -} /* end H5Tclose() */ + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5T_close_id() */ /*------------------------------------------------------------------------- diff --git a/src/H5Tprivate.h b/src/H5Tprivate.h index 17826ae..45d8d76 100644 --- a/src/H5Tprivate.h +++ b/src/H5Tprivate.h @@ -108,6 +108,7 @@ H5_DLL herr_t H5T_init(void); H5_DLL H5T_t *H5T_copy(H5T_t *old_dt, H5T_copy_t method); H5_DLL herr_t H5T_lock(H5T_t *dt, hbool_t immutable); H5_DLL herr_t H5T_close(H5T_t *dt); +H5_DLL herr_t H5T_close_id(hid_t type_id); H5_DLL H5T_t *H5T_get_super(const H5T_t *dt); H5_DLL H5T_class_t H5T_get_class(const H5T_t *dt, htri_t internal); H5_DLL htri_t H5T_detect_class(const H5T_t *dt, H5T_class_t cls, hbool_t from_api); -- cgit v0.12 From 35f8a064c505e46c438caae8aca01ab85974bca8 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Sat, 25 Jun 2016 11:15:52 -0500 Subject: [svn-r30107] Moved dataset flush and evict code to H5D_close from H5Dclose. --- src/H5D.c | 44 ++++++++------------------------------------ src/H5Dint.c | 44 ++++++++++++++++++++++++++++++-------------- 2 files changed, 38 insertions(+), 50 deletions(-) diff --git a/src/H5D.c b/src/H5D.c index e389930..44e4baa 100644 --- a/src/H5D.c +++ b/src/H5D.c @@ -308,45 +308,31 @@ done: /*------------------------------------------------------------------------- - * Function: H5Dclose + * Function: H5Dclose * - * Purpose: Closes access to a dataset (DATASET_ID) and releases - * resources used by it. It is illegal to subsequently use that - * same dataset ID in calls to other dataset functions. + * Purpose: Closes access to a dataset (DATASET_ID) and releases + * resources used by it. It is illegal to subsequently use that + * same dataset ID in calls to other dataset functions. * - * Return: Non-negative on success/Negative on failure + * Return: Non-negative on success/Negative on failure * - * Programmer: Robb Matzke - * Thursday, December 4, 1997 + * Programmer: Robb Matzke + * Thursday, December 4, 1997 * *------------------------------------------------------------------------- */ herr_t H5Dclose(hid_t dset_id) { - H5D_t *dset = NULL; /* Dataset */ - H5F_t *file = NULL; /* File */ - hbool_t evict = FALSE; /* Evict metadata on close? */ - haddr_t tag = HADDR_UNDEF; /* Metadata tag for evictions */ herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_API(FAIL) H5TRACE1("e", "i", dset_id); /* Check args */ - if(NULL == (dset = (H5D_t *)H5I_object_verify(dset_id, H5I_DATASET))) + if(NULL == H5I_object_verify(dset_id, H5I_DATASET)) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset") - /* Check if this is the last object reference and we'll be evicting - * on close. We need to cache this info since it will be gone after the - * decrement call frees the struct. - */ - file = dset->oloc.file; - if(1 == dset->shared->fo_count && H5F_EVICT_ON_CLOSE(file)) { - evict = TRUE; - tag = dset->oloc.addr; - } /* end if */ - /* * Decrement the counter on the dataset. It will be freed if the count * reaches zero. @@ -354,20 +340,6 @@ H5Dclose(hid_t dset_id) if(H5I_dec_app_ref_always_close(dset_id) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTDEC, FAIL, "can't decrement count on dataset ID") - /* Clean up metadata in the metadata cache if evicting on close */ - if(evict && H5F_SHARED(file)) { -// printf("DUMPING CACHE - BEFORE FLUSH\n"); -// H5AC_dump_cache(file); - if(H5AC_flush_tagged_metadata(file, tag, H5AC_ind_read_dxpl_id) < 0) - HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush tagged metadata") -// printf("DUMPING CACHE - BETWEEN FLUSH AND EVICT\n"); -// H5AC_dump_cache(file); - if(H5AC_evict_tagged_metadata(file, tag, FALSE, H5AC_ind_read_dxpl_id) < 0) - HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to evict tagged metadata") -// printf("DUMPING CACHE - AFTER EVICT\n"); -// H5AC_dump_cache(file); - } /* end if */ - done: FUNC_LEAVE_API(ret_value) } /* end H5Dclose() */ diff --git a/src/H5Dint.c b/src/H5Dint.c index 6f088af..b089c10 100644 --- a/src/H5Dint.c +++ b/src/H5Dint.c @@ -1775,9 +1775,9 @@ done: herr_t H5D_close(H5D_t *dataset) { - hbool_t free_failed = FALSE; - hbool_t corked; /* Whether the dataset is corked or not */ - herr_t ret_value = SUCCEED; /* Return value */ + hbool_t free_failed = FALSE; /* Set if freeing sub-components failed */ + hbool_t corked; /* Whether the dataset is corked or not */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_NOAPI(FAIL) @@ -1792,6 +1792,7 @@ H5D_close(H5D_t *dataset) dataset->shared->fo_count--; if(dataset->shared->fo_count == 0) { + /* Flush the dataset's information. Continue to close even if it fails. */ if(H5D__flush_real(dataset, H5AC_ind_read_dxpl_id) < 0) HDONE_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "unable to flush cached dataset info") @@ -1886,12 +1887,12 @@ H5D_close(H5D_t *dataset) (H5O_msg_reset(H5O_FILL_ID, &dataset->shared->dcpl_cache.fill) < 0) || (H5O_msg_reset(H5O_EFL_ID, &dataset->shared->dcpl_cache.efl) < 0); - /* Uncork cache entries with object address tag */ - if(H5AC_cork(dataset->oloc.file, dataset->oloc.addr, H5AC__GET_CORKED, &corked) < 0) - HDONE_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "unable to retrieve an object's cork status") - if(corked) - if(H5AC_cork(dataset->oloc.file, dataset->oloc.addr, H5AC__UNCORK, NULL) < 0) - HDONE_ERROR(H5E_DATASET, H5E_CANTUNCORK, FAIL, "unable to uncork an object") + /* Uncork cache entries with object address tag */ + if(H5AC_cork(dataset->oloc.file, dataset->oloc.addr, H5AC__GET_CORKED, &corked) < 0) + HDONE_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "unable to retrieve an object's cork status") + if(corked) + if(H5AC_cork(dataset->oloc.file, dataset->oloc.addr, H5AC__UNCORK, NULL) < 0) + HDONE_ERROR(H5E_DATASET, H5E_CANTUNCORK, FAIL, "unable to uncork an object") /* * Release datatype, dataspace and creation property list -- there isn't @@ -1912,6 +1913,21 @@ H5D_close(H5D_t *dataset) if(H5O_close(&(dataset->oloc)) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CLOSEERROR, FAIL, "unable to release object header") + /* Evict dataset metadata if evicting on close */ + if(H5F_SHARED(dataset->oloc.file) && H5F_EVICT_ON_CLOSE(dataset->oloc.file)) { +// printf("tag: 0x%3llx\n", dataset->oloc.addr); +// printf("DUMPING CACHE - BEFORE FLUSH\n"); +// H5AC_dump_cache(dataset->oloc.file); + if(H5AC_flush_tagged_metadata(dataset->oloc.file, dataset->oloc.addr, H5AC_ind_read_dxpl_id) < 0) + HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush tagged metadata") +// printf("DUMPING CACHE - BETWEEN FLUSH AND EVICT\n"); +// H5AC_dump_cache(dataset->oloc.file); + if(H5AC_evict_tagged_metadata(dataset->oloc.file, dataset->oloc.addr, FALSE, H5AC_ind_read_dxpl_id) < 0) + HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to evict tagged metadata") +// printf("DUMPING CACHE - AFTER EVICT\n"); +// H5AC_dump_cache(dataset->oloc.file); + } /* end if */ + /* * Free memory. Before freeing the memory set the file pointer to NULL. * We always check for a null file pointer in other H5D functions to be @@ -1919,8 +1935,8 @@ H5D_close(H5D_t *dataset) * above). */ dataset->oloc.file = NULL; - dataset->shared = H5FL_FREE(H5D_shared_t, dataset->shared); + } /* end if */ else { /* Decrement the ref. count for this object in the top file */ @@ -1938,16 +1954,16 @@ H5D_close(H5D_t *dataset) HGOTO_ERROR(H5E_DATASET, H5E_CANTRELEASE, FAIL, "problem attempting to free location") } /* end else */ - /* Release the dataset's path info */ - if(H5G_name_free(&(dataset->path)) < 0) - free_failed = TRUE; + /* Release the dataset's path info */ + if(H5G_name_free(&(dataset->path)) < 0) + free_failed = TRUE; /* Free the dataset's memory structure */ dataset = H5FL_FREE(H5D_t, dataset); /* Check if anything failed in the middle... */ if(free_failed) - HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "couldn't free a component of the dataset, but the dataset was freed anyway.") + HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "couldn't free a component of the dataset, but the dataset was freed anyway.") done: FUNC_LEAVE_NOAPI(ret_value) -- cgit v0.12 From 88c8c78763dcfc0e42906a1b07b117896f6f3dac Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Sat, 25 Jun 2016 22:41:48 -0500 Subject: [svn-r30108] Moved group flush and evict code to H5G_close from H5Gclose. --- src/H5Dint.c | 2 +- src/H5G.c | 30 +----------------------------- src/H5Gint.c | 19 ++++++++++++++++++- 3 files changed, 20 insertions(+), 31 deletions(-) diff --git a/src/H5Dint.c b/src/H5Dint.c index b089c10..bbe16cf 100644 --- a/src/H5Dint.c +++ b/src/H5Dint.c @@ -1915,7 +1915,7 @@ H5D_close(H5D_t *dataset) /* Evict dataset metadata if evicting on close */ if(H5F_SHARED(dataset->oloc.file) && H5F_EVICT_ON_CLOSE(dataset->oloc.file)) { -// printf("tag: 0x%3llx\n", dataset->oloc.addr); +// printf("EVICTING DATASET (TAG: 0x%3llx)\n", dataset->oloc.addr); // printf("DUMPING CACHE - BEFORE FLUSH\n"); // H5AC_dump_cache(dataset->oloc.file); if(H5AC_flush_tagged_metadata(dataset->oloc.file, dataset->oloc.addr, H5AC_ind_read_dxpl_id) < 0) diff --git a/src/H5G.c b/src/H5G.c index e4313fe..1955c33 100644 --- a/src/H5G.c +++ b/src/H5G.c @@ -715,29 +715,15 @@ done: herr_t H5Gclose(hid_t group_id) { - H5G_t *grp = NULL; /* Group */ - H5F_t *file = NULL; /* File */ - hbool_t evict = FALSE; /* Evict metadata on close? */ - haddr_t tag = HADDR_UNDEF; /* Metadata tag for evictions */ herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_API(FAIL) H5TRACE1("e", "i", group_id); /* Check args */ - if(NULL == (grp = (H5G_t *)H5I_object_verify(group_id,H5I_GROUP))) + if(NULL == H5I_object_verify(group_id,H5I_GROUP)) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a group") - /* Check if this is the last object reference and we'll be evicting - * on close. We need to cache this info since it will be gone after the - * decrement call frees the struct. - */ - file = grp->oloc.file; - if(1 == grp->shared->fo_count && H5F_EVICT_ON_CLOSE(file)) { - evict = TRUE; - tag = grp->oloc.addr; - } /* end if */ - /* * Decrement the counter on the group atom. It will be freed if the count * reaches zero. @@ -745,20 +731,6 @@ H5Gclose(hid_t group_id) if(H5I_dec_app_ref(group_id) < 0) HGOTO_ERROR(H5E_SYM, H5E_CANTRELEASE, FAIL, "unable to close group") - /* Clean up metadata in the metadata cache if evicting on close */ - if(evict && H5F_SHARED(file)) { -// printf("DUMPING CACHE - BEFORE FLUSH\n"); -// H5AC_dump_cache(file); - if(H5AC_flush_tagged_metadata(file, tag, H5AC_ind_read_dxpl_id) < 0) - HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush tagged metadata") -// printf("DUMPING CACHE - BETWEEN FLUSH AND EVICT\n"); -// H5AC_dump_cache(file); - if(H5AC_evict_tagged_metadata(file, tag, FALSE, H5AC_ind_read_dxpl_id) < 0) - HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to evict tagged metadata") -// printf("DUMPING CACHE - AFTER EVICT\n"); -// H5AC_dump_cache(file); - } /* end if */ - done: FUNC_LEAVE_API(ret_value) } /* end H5Gclose() */ diff --git a/src/H5Gint.c b/src/H5Gint.c index f5bccc3..ff92ecc 100644 --- a/src/H5Gint.c +++ b/src/H5Gint.c @@ -486,7 +486,7 @@ H5G_close(H5G_t *grp) if(0 == grp->shared->fo_count) { HDassert(grp != H5G_rootof(H5G_fileof(grp))); - /* Uncork cache entries with object address tag */ + /* Uncork cache entries with object address tag */ if(H5AC_cork(grp->oloc.file, grp->oloc.addr, H5AC__GET_CORKED, &corked) < 0) HGOTO_ERROR(H5E_SYM, H5E_CANTGET, FAIL, "unable to retrieve an object's cork status") if(corked) @@ -500,6 +500,23 @@ H5G_close(H5G_t *grp) HGOTO_ERROR(H5E_SYM, H5E_CANTRELEASE, FAIL, "can't remove group from list of open objects") if(H5O_close(&(grp->oloc)) < 0) HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to close") + + /* Evict group metadata if evicting on close */ + if(H5F_SHARED(grp->oloc.file) && H5F_EVICT_ON_CLOSE(grp->oloc.file)) { +// printf("EVICTING GROUP (TAG: 0x%3llx)\n", grp->oloc.addr); +// printf("DUMPING CACHE - BEFORE FLUSH\n"); +// H5AC_dump_cache(grp->oloc.file); + if(H5AC_flush_tagged_metadata(grp->oloc.file, grp->oloc.addr, H5AC_ind_read_dxpl_id) < 0) + HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush tagged metadata") +// printf("DUMPING CACHE - BETWEEN FLUSH AND EVICT\n"); +// H5AC_dump_cache(grp->oloc.file); + if(H5AC_evict_tagged_metadata(grp->oloc.file, grp->oloc.addr, FALSE, H5AC_ind_read_dxpl_id) < 0) + HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to evict tagged metadata") +// printf("DUMPING CACHE - AFTER EVICT\n"); +// H5AC_dump_cache(grp->oloc.file); + } /* end if */ + + /* Free memory */ grp->shared = H5FL_FREE(H5G_shared_t, grp->shared); } else { /* Decrement the ref. count for this object in the top file */ -- cgit v0.12 From 3d13b7c6eeedda3037d2db2ea5bd30a36ebde5c0 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Mon, 27 Jun 2016 16:04:52 -0500 Subject: [svn-r30110] Added missing evict_on_close.c file to test/. --- test/evict_on_close.c | 144 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 test/evict_on_close.c diff --git a/test/evict_on_close.c b/test/evict_on_close.c new file mode 100644 index 0000000..bcbd030 --- /dev/null +++ b/test/evict_on_close.c @@ -0,0 +1,144 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Dana Robinson + * Spring 2016 + * + * Purpose: Tests the basic operation of the evict-on-close cache + * behavior. Tests that ensure the tagging is handled correctly + * are located in cache.c. + */ + +#include "h5test.h" + +static herr_t check_evict_on_close_api(void); + + +/*------------------------------------------------------------------------- + * Function: check_evict_on_close_api() + * + * Purpose: Verify that the H5Pset/get_evict_on_close() calls behave + * correctly. + * + * Return: SUCCEED/FAIL + * + * Programmer: Dana Robinson + * Spring 2016 + * + *------------------------------------------------------------------------- + */ +static herr_t +check_evict_on_close_api(void) +{ + hid_t fapl_id = -1; + hid_t dapl_id = -1; + hbool_t evict_on_close; + herr_t status; + + TESTING("evict on close API"); + + /* Create a fapl */ + if((fapl_id = H5Pcreate(H5P_FILE_ACCESS)) < 0) + FAIL_STACK_ERROR; + + /* Check the default */ + evict_on_close = TRUE; + if(H5Pget_evict_on_close(fapl_id, &evict_on_close) < 0) + FAIL_STACK_ERROR; + if(evict_on_close != FALSE) + FAIL_PUTS_ERROR("Incorrect default evict on close value."); + + /* Set the evict on close property */ + evict_on_close = TRUE; + if(H5Pset_evict_on_close(fapl_id, evict_on_close) < 0) + FAIL_STACK_ERROR; + + /* Make sure we can get it back out */ + evict_on_close = FALSE; + if(H5Pget_evict_on_close(fapl_id, &evict_on_close) < 0) + FAIL_STACK_ERROR; + if(evict_on_close != TRUE) + FAIL_PUTS_ERROR("Incorrect evict on close value."); + + /* close fapl */ + if(H5Pclose(fapl_id) < 0) + FAIL_STACK_ERROR; + + /**********************************************/ + /* Trying passing in a non-fapl property list */ + /**********************************************/ + + if((dapl_id = H5Pcreate(H5P_DATASET_ACCESS)) < 0) + FAIL_STACK_ERROR; + + /* ensure using an incorrect access plist fails */ + H5E_BEGIN_TRY { + status = H5Pset_evict_on_close(dapl_id, evict_on_close); + } H5E_END_TRY; + if(status >= 0) + FAIL_PUTS_ERROR("H5Pset_evict_on_close() accepted invalid access plist."); + + /* ensure an invalid plist fails */ + H5E_BEGIN_TRY { + status = H5Pget_evict_on_close((hid_t)-1, &evict_on_close); + } H5E_END_TRY; + if(status >= 0) + FAIL_PUTS_ERROR("H5Pget_evict_on_close() accepted invalid hid_t."); + + /* close dapl */ + if(H5Pclose(dapl_id) < 0) + FAIL_STACK_ERROR; + + PASSED(); + return SUCCEED; + +error: + H5_FAILED(); + return FAIL; + +} /* check_evict_on_close_api() */ + + +/*------------------------------------------------------------------------- + * Function: main + * + * Return: EXIT_FAILURE/EXIT_SUCCESS + * + * Programmer: Dana Robinson + * Spring 2016 + * + *------------------------------------------------------------------------- + */ +int +main(void) +{ + unsigned nerrors = 0; + + printf("Testing evict-on-close cache behavior.\n"); + + nerrors += check_evict_on_close_api() < 0 ? 1 : 0; + + if(nerrors) { + printf("***** %u evict-on-close test%s FAILED! *****\n", + nerrors, nerrors > 1 ? "S" : ""); + return EXIT_FAILURE; + } + + printf("All evict-on-close tests passed.\n"); + + return EXIT_SUCCESS; +} + -- cgit v0.12 From c1c384878ba58193120c3da804d761542c47bd7d Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Wed, 14 Sep 2016 16:50:29 -0400 Subject: Added missing evict on close test file line to test/CMakeLists.txt. --- test/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 97471d1..19603ca 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -203,6 +203,7 @@ set (H5_TESTS ohdr stab gheap + evict_on_close farray earray btree2 -- cgit v0.12 From 12fbb4426aee6be3de235a3818ca43ecfec4b84b Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Mon, 19 Sep 2016 13:04:07 -0400 Subject: Updated manifest. Was missing BRANCH.txt. --- MANIFEST | 1 + 1 file changed, 1 insertion(+) diff --git a/MANIFEST b/MANIFEST index fb454c5..3ed99e7 100644 --- a/MANIFEST +++ b/MANIFEST @@ -25,6 +25,7 @@ ./.autom4te.cfg _DO_NOT_DISTRIBUTE_ ./.h5chkright.ini _DO_NOT_DISTRIBUTE_ ./ACKNOWLEDGMENTS +./BRANCH.txt ./COPYING ./MANIFEST ./Makefile.dist -- cgit v0.12 From 73bd8b7c2fe0d5c8763cb2d33fe1915e465947cb Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Mon, 19 Sep 2016 13:51:38 -0400 Subject: Fixed format_convert and fortran files (bad merge?). --- fortran/src/H5Eff.F90 | 2 +- fortran/src/H5Pff.F90 | 8 +-- tools/h5format_convert/testfiles/h5fc_ext1_f.ddl | 2 +- tools/h5format_convert/testfiles/h5fc_ext1_i.ddl | 2 +- tools/h5format_convert/testfiles/h5fc_ext1_s.ddl | 2 +- tools/h5format_convert/testfiles/h5fc_ext2_if.ddl | 2 +- tools/h5format_convert/testfiles/h5fc_ext2_is.ddl | 2 +- tools/h5format_convert/testfiles/h5fc_ext2_sf.ddl | 2 +- tools/h5format_convert/testfiles/h5fc_ext3_isf.ddl | 2 +- tools/h5format_convert/testfiles/h5fc_v_all.ddl | 2 +- tools/h5format_convert/testfiles/h5fc_v_bt1.ddl | 2 +- tools/h5format_convert/testfiles/h5fc_v_err.ddl | 2 +- tools/h5format_convert/testfiles/h5fc_v_n_1d.ddl | 2 +- tools/h5format_convert/testfiles/h5fc_v_n_all.ddl | 2 +- .../testfiles/h5fc_v_ndata_bt1.ddl | 2 +- .../testfiles/h5fc_v_non_chunked.ddl | 2 +- .../h5format_convert/testfiles/old_h5fc_ext1_f.ddl | 2 +- .../h5format_convert/testfiles/old_h5fc_ext1_i.ddl | 2 +- .../h5format_convert/testfiles/old_h5fc_ext1_s.ddl | 2 +- .../testfiles/old_h5fc_ext2_if.ddl | 2 +- .../testfiles/old_h5fc_ext2_is.ddl | 2 +- .../testfiles/old_h5fc_ext2_sf.ddl | 2 +- .../testfiles/old_h5fc_ext3_isf.ddl | 2 +- tools/h5format_convert/testh5fc.sh.in | 82 ++++++++++++---------- 24 files changed, 69 insertions(+), 65 deletions(-) diff --git a/fortran/src/H5Eff.F90 b/fortran/src/H5Eff.F90 index 7a0b15b..d96d448 100644 --- a/fortran/src/H5Eff.F90 +++ b/fortran/src/H5Eff.F90 @@ -141,8 +141,8 @@ CONTAINS INTEGER FUNCTION h5eprint_c2() BIND(C,NAME='h5eprint_c2') END FUNCTION h5eprint_c2 END INTERFACE - namelen = LEN(NAME) IF (PRESENT(name)) THEN + namelen = LEN(NAME) hdferr = h5eprint_c1(name, namelen) ELSE hdferr = h5eprint_c2() diff --git a/fortran/src/H5Pff.F90 b/fortran/src/H5Pff.F90 index e052ea0..532ecc6 100644 --- a/fortran/src/H5Pff.F90 +++ b/fortran/src/H5Pff.F90 @@ -6260,11 +6260,11 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of ! of fillvalue datatype ! (in memory) - CHARACTER, INTENT(IN), TARGET :: fillvalue ! Fillvalue + CHARACTER(LEN=1), INTENT(IN), TARGET :: fillvalue ! Fillvalue INTEGER, INTENT(OUT) :: hdferr ! Error code TYPE(C_PTR) :: f_ptr ! C address - f_ptr = C_LOC(fillvalue) + f_ptr = C_LOC(fillvalue(1:1)) hdferr = h5pset_fill_value_c(prp_id, type_id, f_ptr) END SUBROUTINE h5pset_fill_value_char @@ -6275,7 +6275,7 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of ! of fillvalue datatype ! (in memory) - CHARACTER, INTENT(OUT) :: fillvalue ! Fillvalue + CHARACTER(LEN=*), INTENT(OUT) :: fillvalue ! Fillvalue INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER :: i @@ -6286,7 +6286,7 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) ! To resolve Issue #1 outlined in the preamble of this file we ! need to pack the character string into an array. - chr_len = LEN(fillvalue) + chr_len = LEN(fillvalue(1:1)) ALLOCATE(chr(1:chr_len), STAT=hdferr) IF (hdferr .NE. 0) THEN hdferr = -1 diff --git a/tools/h5format_convert/testfiles/h5fc_ext1_f.ddl b/tools/h5format_convert/testfiles/h5fc_ext1_f.ddl index fb5192d..dae9284 100644 --- a/tools/h5format_convert/testfiles/h5fc_ext1_f.ddl +++ b/tools/h5format_convert/testfiles/h5fc_ext1_f.ddl @@ -1,4 +1,4 @@ -HDF5 "./testfiles/tmp.h5" { +HDF5 "./testfiles/dmptmp.h5" { SUPER_BLOCK { SUPERBLOCK_VERSION 2 FREELIST_VERSION 0 diff --git a/tools/h5format_convert/testfiles/h5fc_ext1_i.ddl b/tools/h5format_convert/testfiles/h5fc_ext1_i.ddl index 2fff4ac..8ec4656 100644 --- a/tools/h5format_convert/testfiles/h5fc_ext1_i.ddl +++ b/tools/h5format_convert/testfiles/h5fc_ext1_i.ddl @@ -1,4 +1,4 @@ -HDF5 "./testfiles/tmp.h5" { +HDF5 "./testfiles/dmptmp.h5" { SUPER_BLOCK { SUPERBLOCK_VERSION 2 FREELIST_VERSION 0 diff --git a/tools/h5format_convert/testfiles/h5fc_ext1_s.ddl b/tools/h5format_convert/testfiles/h5fc_ext1_s.ddl index fb5192d..dae9284 100644 --- a/tools/h5format_convert/testfiles/h5fc_ext1_s.ddl +++ b/tools/h5format_convert/testfiles/h5fc_ext1_s.ddl @@ -1,4 +1,4 @@ -HDF5 "./testfiles/tmp.h5" { +HDF5 "./testfiles/dmptmp.h5" { SUPER_BLOCK { SUPERBLOCK_VERSION 2 FREELIST_VERSION 0 diff --git a/tools/h5format_convert/testfiles/h5fc_ext2_if.ddl b/tools/h5format_convert/testfiles/h5fc_ext2_if.ddl index 2fff4ac..8ec4656 100644 --- a/tools/h5format_convert/testfiles/h5fc_ext2_if.ddl +++ b/tools/h5format_convert/testfiles/h5fc_ext2_if.ddl @@ -1,4 +1,4 @@ -HDF5 "./testfiles/tmp.h5" { +HDF5 "./testfiles/dmptmp.h5" { SUPER_BLOCK { SUPERBLOCK_VERSION 2 FREELIST_VERSION 0 diff --git a/tools/h5format_convert/testfiles/h5fc_ext2_is.ddl b/tools/h5format_convert/testfiles/h5fc_ext2_is.ddl index 2fff4ac..8ec4656 100644 --- a/tools/h5format_convert/testfiles/h5fc_ext2_is.ddl +++ b/tools/h5format_convert/testfiles/h5fc_ext2_is.ddl @@ -1,4 +1,4 @@ -HDF5 "./testfiles/tmp.h5" { +HDF5 "./testfiles/dmptmp.h5" { SUPER_BLOCK { SUPERBLOCK_VERSION 2 FREELIST_VERSION 0 diff --git a/tools/h5format_convert/testfiles/h5fc_ext2_sf.ddl b/tools/h5format_convert/testfiles/h5fc_ext2_sf.ddl index fb5192d..dae9284 100644 --- a/tools/h5format_convert/testfiles/h5fc_ext2_sf.ddl +++ b/tools/h5format_convert/testfiles/h5fc_ext2_sf.ddl @@ -1,4 +1,4 @@ -HDF5 "./testfiles/tmp.h5" { +HDF5 "./testfiles/dmptmp.h5" { SUPER_BLOCK { SUPERBLOCK_VERSION 2 FREELIST_VERSION 0 diff --git a/tools/h5format_convert/testfiles/h5fc_ext3_isf.ddl b/tools/h5format_convert/testfiles/h5fc_ext3_isf.ddl index 2fff4ac..8ec4656 100644 --- a/tools/h5format_convert/testfiles/h5fc_ext3_isf.ddl +++ b/tools/h5format_convert/testfiles/h5fc_ext3_isf.ddl @@ -1,4 +1,4 @@ -HDF5 "./testfiles/tmp.h5" { +HDF5 "./testfiles/dmptmp.h5" { SUPER_BLOCK { SUPERBLOCK_VERSION 2 FREELIST_VERSION 0 diff --git a/tools/h5format_convert/testfiles/h5fc_v_all.ddl b/tools/h5format_convert/testfiles/h5fc_v_all.ddl index 5e7365d..a1af831 100644 --- a/tools/h5format_convert/testfiles/h5fc_v_all.ddl +++ b/tools/h5format_convert/testfiles/h5fc_v_all.ddl @@ -1,5 +1,5 @@ Process command line options -Open the file tmp.h5 +Open the file outtmp.h5 Processing all datasets in the file... Going to process dataset:/DSET_CONTIGUOUS... Open the dataset diff --git a/tools/h5format_convert/testfiles/h5fc_v_bt1.ddl b/tools/h5format_convert/testfiles/h5fc_v_bt1.ddl index c501eb0..31de12a 100644 --- a/tools/h5format_convert/testfiles/h5fc_v_bt1.ddl +++ b/tools/h5format_convert/testfiles/h5fc_v_bt1.ddl @@ -1,5 +1,5 @@ Process command line options -Open the file tmp.h5 +Open the file outtmp.h5 Going to process dataset: /GROUP/DSET_BT2... Open the dataset Retrieve the dataset's layout diff --git a/tools/h5format_convert/testfiles/h5fc_v_err.ddl b/tools/h5format_convert/testfiles/h5fc_v_err.ddl index 4a728e8..b671db0 100644 --- a/tools/h5format_convert/testfiles/h5fc_v_err.ddl +++ b/tools/h5format_convert/testfiles/h5fc_v_err.ddl @@ -1,5 +1,5 @@ Process command line options -Open the file tmp.h5 +Open the file outtmp.h5 Processing all datasets in the file... Going to process dataset:/DSET_ERR... Open the dataset diff --git a/tools/h5format_convert/testfiles/h5fc_v_n_1d.ddl b/tools/h5format_convert/testfiles/h5fc_v_n_1d.ddl index ff5da4a..fcdadd8 100644 --- a/tools/h5format_convert/testfiles/h5fc_v_n_1d.ddl +++ b/tools/h5format_convert/testfiles/h5fc_v_n_1d.ddl @@ -1,6 +1,6 @@ Process command line options It is noop... -Open the file tmp.h5 +Open the file outtmp.h5 Going to process dataset: /DSET_EA... Open the dataset Retrieve the dataset's layout diff --git a/tools/h5format_convert/testfiles/h5fc_v_n_all.ddl b/tools/h5format_convert/testfiles/h5fc_v_n_all.ddl index d2ffbbf..074ce6f 100644 --- a/tools/h5format_convert/testfiles/h5fc_v_n_all.ddl +++ b/tools/h5format_convert/testfiles/h5fc_v_n_all.ddl @@ -1,6 +1,6 @@ Process command line options It is noop... -Open the file tmp.h5 +Open the file outtmp.h5 Processing all datasets in the file... Going to process dataset:/DSET_CONTIGUOUS... Open the dataset diff --git a/tools/h5format_convert/testfiles/h5fc_v_ndata_bt1.ddl b/tools/h5format_convert/testfiles/h5fc_v_ndata_bt1.ddl index ba794a7..c75699a 100644 --- a/tools/h5format_convert/testfiles/h5fc_v_ndata_bt1.ddl +++ b/tools/h5format_convert/testfiles/h5fc_v_ndata_bt1.ddl @@ -1,6 +1,6 @@ Process command line options It is noop... -Open the file tmp.h5 +Open the file outtmp.h5 Going to process dataset: /DSET_NDATA_BT2... Open the dataset Retrieve the dataset's layout diff --git a/tools/h5format_convert/testfiles/h5fc_v_non_chunked.ddl b/tools/h5format_convert/testfiles/h5fc_v_non_chunked.ddl index aba0740..5945389 100644 --- a/tools/h5format_convert/testfiles/h5fc_v_non_chunked.ddl +++ b/tools/h5format_convert/testfiles/h5fc_v_non_chunked.ddl @@ -1,5 +1,5 @@ Process command line options -Open the file tmp.h5 +Open the file outtmp.h5 Going to process dataset: /DSET_CONTIGUOUS... Open the dataset Retrieve the dataset's layout diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext1_f.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext1_f.ddl index fb5192d..dae9284 100644 --- a/tools/h5format_convert/testfiles/old_h5fc_ext1_f.ddl +++ b/tools/h5format_convert/testfiles/old_h5fc_ext1_f.ddl @@ -1,4 +1,4 @@ -HDF5 "./testfiles/tmp.h5" { +HDF5 "./testfiles/dmptmp.h5" { SUPER_BLOCK { SUPERBLOCK_VERSION 2 FREELIST_VERSION 0 diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext1_i.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext1_i.ddl index c906082..d1768c8 100644 --- a/tools/h5format_convert/testfiles/old_h5fc_ext1_i.ddl +++ b/tools/h5format_convert/testfiles/old_h5fc_ext1_i.ddl @@ -1,4 +1,4 @@ -HDF5 "./testfiles/tmp.h5" { +HDF5 "./testfiles/dmptmp.h5" { SUPER_BLOCK { SUPERBLOCK_VERSION 1 FREELIST_VERSION 0 diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext1_s.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext1_s.ddl index fb5192d..dae9284 100644 --- a/tools/h5format_convert/testfiles/old_h5fc_ext1_s.ddl +++ b/tools/h5format_convert/testfiles/old_h5fc_ext1_s.ddl @@ -1,4 +1,4 @@ -HDF5 "./testfiles/tmp.h5" { +HDF5 "./testfiles/dmptmp.h5" { SUPER_BLOCK { SUPERBLOCK_VERSION 2 FREELIST_VERSION 0 diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext2_if.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext2_if.ddl index 2fff4ac..8ec4656 100644 --- a/tools/h5format_convert/testfiles/old_h5fc_ext2_if.ddl +++ b/tools/h5format_convert/testfiles/old_h5fc_ext2_if.ddl @@ -1,4 +1,4 @@ -HDF5 "./testfiles/tmp.h5" { +HDF5 "./testfiles/dmptmp.h5" { SUPER_BLOCK { SUPERBLOCK_VERSION 2 FREELIST_VERSION 0 diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext2_is.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext2_is.ddl index 2fff4ac..8ec4656 100644 --- a/tools/h5format_convert/testfiles/old_h5fc_ext2_is.ddl +++ b/tools/h5format_convert/testfiles/old_h5fc_ext2_is.ddl @@ -1,4 +1,4 @@ -HDF5 "./testfiles/tmp.h5" { +HDF5 "./testfiles/dmptmp.h5" { SUPER_BLOCK { SUPERBLOCK_VERSION 2 FREELIST_VERSION 0 diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext2_sf.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext2_sf.ddl index fb5192d..dae9284 100644 --- a/tools/h5format_convert/testfiles/old_h5fc_ext2_sf.ddl +++ b/tools/h5format_convert/testfiles/old_h5fc_ext2_sf.ddl @@ -1,4 +1,4 @@ -HDF5 "./testfiles/tmp.h5" { +HDF5 "./testfiles/dmptmp.h5" { SUPER_BLOCK { SUPERBLOCK_VERSION 2 FREELIST_VERSION 0 diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext3_isf.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext3_isf.ddl index 2fff4ac..8ec4656 100644 --- a/tools/h5format_convert/testfiles/old_h5fc_ext3_isf.ddl +++ b/tools/h5format_convert/testfiles/old_h5fc_ext3_isf.ddl @@ -1,4 +1,4 @@ -HDF5 "./testfiles/tmp.h5" { +HDF5 "./testfiles/dmptmp.h5" { SUPER_BLOCK { SUPERBLOCK_VERSION 2 FREELIST_VERSION 0 diff --git a/tools/h5format_convert/testh5fc.sh.in b/tools/h5format_convert/testh5fc.sh.in index 000425b..0d74697 100644 --- a/tools/h5format_convert/testh5fc.sh.in +++ b/tools/h5format_convert/testh5fc.sh.in @@ -69,7 +69,10 @@ TESTDIR=./testfiles test -d $TESTDIR || mkdir $TESTDIR # Copy the testfile to a temporary file for testing as h5format_convert is changing the file in place +TMPOUTFILE=outtmp.h5 TMPFILE=tmp.h5 +TMPCHKFILE=chktmp.h5 +TMPDMPFILE=dmptmp.h5 ###################################################################### # test files @@ -170,7 +173,7 @@ CLEAN_TESTFILES_AND_TESTDIR() # skip rm if srcdir is same as destdir # this occurs when build/test performed in source dir and # make cp fail - SDIR=`$DIRNAME $tstfile` + SDIR=$SRC_H5FORMCONV_TESTFILES INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then @@ -213,11 +216,11 @@ TOOLTEST_OUT() { actual_err_sav=${actual_err}-sav # Prepare the test file - $RM $TESTDIR/$TMPFILE + $RM $TESTDIR/$TMPOUTFILE TFILE=$2 if [ ! -z "$2" ] && [ -e $TESTDIR/$2 ] ; then - $CP $TESTDIR/$2 $TESTDIR/$TMPFILE - TFILE=$TMPFILE + $CP $TESTDIR/$2 $TESTDIR/$TMPOUTFILE + TFILE=$TMPOUTFILE fi # Run test. @@ -245,14 +248,15 @@ TOOLTEST_OUT() { # $1 is the test file name # --fname exists # --fname is copied to a temporary file for testing -# $2 to at most $4--options to the tool such as: +# $2 is the temporary file name +# $3 to at most $5--options to the tool such as: # -d dname # -n TOOLTEST() { - TESTING $FORMCONV $2 $3 $4 $1 - $RM $TESTDIR/$TMPFILE - $CP $TESTDIR/$1 $TESTDIR/$TMPFILE - $RUNSERIAL $FORMCONV_BIN $2 $3 $4 $TESTDIR/$TMPFILE + TESTING $FORMCONV $3 $4 $5 $1 + $RM $TESTDIR/$2 + $CP $TESTDIR/$1 $TESTDIR/$2 + $RUNSERIAL $FORMCONV_BIN $3 $4 $5 $TESTDIR/$2 exitcode=$? if [ $exitcode -ne 0 ]; then echo "*FAILED*" @@ -272,7 +276,7 @@ CHECKING() { # $1 dataset name IDX_CHECK() { CHECKING $1 - $RUNSERIAL $CHK_IDX_BIN $TESTDIR/$TMPFILE $1 + $RUNSERIAL $CHK_IDX_BIN $TESTDIR/$TMPCHKFILE $1 ret=$? if [ $ret -eq 0 ]; then echo " PASSED" @@ -304,7 +308,7 @@ H5DUMP_CHECK() { expect="$TESTDIR/$2" actual="$TESTDIR/`basename $2 .ddl`.out" actual_err="$TESTDIR/`basename $2 .ddl`.err" - $RUNSERIAL $H5DUMP_BIN -BH $TESTDIR/$TMPFILE > $actual 2>$actual_err + $RUNSERIAL $H5DUMP_BIN -BH $TESTDIR/$TMPDMPFILE > $actual 2>$actual_err cat $actual_err >> $actual # Compare output @@ -387,28 +391,28 @@ TOOLTEST_OUT h5fc_v_err.ddl h5fc_err_level.h5 -v # h5format_convert -d /GROUP/DSET_FA h5fc_ext_none.h5 # h5format_convert -d /DSET_NONE h5fc_ext_none.h5 # h5format_convert -d /GROUP/DSET_NDATA_NONE h5fc_ext_none.h5 -TOOLTEST h5fc_ext_none.h5 -d /DSET_EA +TOOLTEST h5fc_ext_none.h5 $TMPCHKFILE -d /DSET_EA IDX_CHECK /DSET_EA # -TOOLTEST h5fc_ext_none.h5 -d /GROUP/DSET_NDATA_EA +TOOLTEST h5fc_ext_none.h5 $TMPCHKFILE -d /GROUP/DSET_NDATA_EA IDX_CHECK /GROUP/DSET_NDATA_EA # -TOOLTEST h5fc_ext_none.h5 -d /GROUP/DSET_BT2 +TOOLTEST h5fc_ext_none.h5 $TMPCHKFILE -d /GROUP/DSET_BT2 IDX_CHECK /GROUP/DSET_BT2 # -TOOLTEST h5fc_ext_none.h5 -d /DSET_NDATA_BT2 +TOOLTEST h5fc_ext_none.h5 $TMPCHKFILE -d /DSET_NDATA_BT2 IDX_CHECK /DSET_NDATA_BT2 # -TOOLTEST h5fc_ext_none.h5 -d /DSET_FA +TOOLTEST h5fc_ext_none.h5 $TMPCHKFILE -d /DSET_FA IDX_CHECK /DSET_FA # -TOOLTEST h5fc_ext_none.h5 -d /GROUP/DSET_NDATA_FA +TOOLTEST h5fc_ext_none.h5 $TMPCHKFILE -d /GROUP/DSET_NDATA_FA IDX_CHECK /GROUP/DSET_NDATA_FA # -TOOLTEST h5fc_ext_none.h5 -d /DSET_NONE +TOOLTEST h5fc_ext_none.h5 $TMPCHKFILE -d /DSET_NONE IDX_CHECK /DSET_NONE # -TOOLTEST h5fc_ext_none.h5 -d /GROUP/DSET_NDATA_NONE +TOOLTEST h5fc_ext_none.h5 $TMPCHKFILE -d /GROUP/DSET_NDATA_NONE IDX_CHECK /GROUP/DSET_NDATA_NONE # # @@ -416,16 +420,16 @@ IDX_CHECK /GROUP/DSET_NDATA_NONE # No output from tests: just check exit code # h5format_convert -d /DSET_NDATA_BT2 old_h5fc_ext_none.h5 (v1-btree dataset) # h5format_convert -d /DSET_CONTIGUOUS h5fc_non_v3.h5 (non-chunked dataset) -TOOLTEST old_h5fc_ext_none.h5 -d /DSET_NDATA_BT2 -TOOLTEST h5fc_non_v3.h5 -d /DSET_CONTIGUOUS +TOOLTEST old_h5fc_ext_none.h5 $TMPFILE -d /DSET_NDATA_BT2 +TOOLTEST h5fc_non_v3.h5 $TMPFILE -d /DSET_CONTIGUOUS # # # # No output from tests: just check exit code # h5format_convert -d /GROUP/DSET_BT2 -n h5fc_non_v3.h5 (noop, one dataset) # h5format_convert -n h5fc_non_v3.h5 (noop, all datasets) -TOOLTEST h5fc_non_v3.h5 -d /GROUP/DSET_BT2 -n -TOOLTEST h5fc_non_v3.h5 -n +TOOLTEST h5fc_non_v3.h5 $TMPFILE -d /GROUP/DSET_BT2 -n +TOOLTEST h5fc_non_v3.h5 $TMPFILE -n # # # @@ -433,7 +437,7 @@ TOOLTEST h5fc_non_v3.h5 -n # h5format_convert h5fc_non_v3.h5 # 1) convert all datasets # 2) verify indexing types -TOOLTEST h5fc_non_v3.h5 +TOOLTEST h5fc_non_v3.h5 $TMPCHKFILE IDX_CHECK /DSET_NDATA_EA IDX_CHECK /DSET_NDATA_BT2 IDX_CHECK /GROUP/DSET_BT2 @@ -445,47 +449,47 @@ IDX_CHECK /GROUP/DSET_EA # h5format_convert h5fc_edge_v3.h5 # 1) convert the chunked dataset (filter, no-filter-edge-chunk) # 2) verify the indexing type -TOOLTEST h5fc_edge_v3.h5 +TOOLTEST h5fc_edge_v3.h5 $TMPCHKFILE IDX_CHECK /DSET_EDGE # # # The following test files have messages in the superblock extension. # Verify h5dump output for correctness after conversion -TOOLTEST h5fc_ext1_i.h5 +TOOLTEST h5fc_ext1_i.h5 $TMPDMPFILE H5DUMP_CHECK h5fc_ext1_i.h5 h5fc_ext1_i.ddl -TOOLTEST h5fc_ext1_s.h5 +TOOLTEST h5fc_ext1_s.h5 $TMPDMPFILE H5DUMP_CHECK h5fc_ext1_s.h5 h5fc_ext1_s.ddl -TOOLTEST h5fc_ext1_f.h5 +TOOLTEST h5fc_ext1_f.h5 $TMPDMPFILE H5DUMP_CHECK h5fc_ext1_f.h5 h5fc_ext1_f.ddl # -TOOLTEST h5fc_ext2_if.h5 +TOOLTEST h5fc_ext2_if.h5 $TMPDMPFILE H5DUMP_CHECK h5fc_ext2_if.h5 h5fc_ext2_if.ddl -TOOLTEST h5fc_ext2_is.h5 +TOOLTEST h5fc_ext2_is.h5 $TMPDMPFILE H5DUMP_CHECK h5fc_ext2_is.h5 h5fc_ext2_is.ddl -TOOLTEST h5fc_ext2_sf.h5 +TOOLTEST h5fc_ext2_sf.h5 $TMPDMPFILE H5DUMP_CHECK h5fc_ext2_sf.h5 h5fc_ext2_sf.ddl # -TOOLTEST h5fc_ext3_isf.h5 +TOOLTEST h5fc_ext3_isf.h5 $TMPDMPFILE H5DUMP_CHECK h5fc_ext3_isf.h5 h5fc_ext3_isf.ddl # # # -TOOLTEST old_h5fc_ext1_i.h5 +TOOLTEST old_h5fc_ext1_i.h5 $TMPDMPFILE H5DUMP_CHECK old_h5fc_ext1_i.h5 old_h5fc_ext1_i.ddl -TOOLTEST old_h5fc_ext1_s.h5 +TOOLTEST old_h5fc_ext1_s.h5 $TMPDMPFILE H5DUMP_CHECK old_h5fc_ext1_s.h5 old_h5fc_ext1_s.ddl -TOOLTEST old_h5fc_ext1_f.h5 +TOOLTEST old_h5fc_ext1_f.h5 $TMPDMPFILE H5DUMP_CHECK old_h5fc_ext1_f.h5 old_h5fc_ext1_f.ddl # -TOOLTEST old_h5fc_ext2_if.h5 +TOOLTEST old_h5fc_ext2_if.h5 $TMPDMPFILE H5DUMP_CHECK old_h5fc_ext2_if.h5 old_h5fc_ext2_if.ddl -TOOLTEST old_h5fc_ext2_is.h5 +TOOLTEST old_h5fc_ext2_is.h5 $TMPDMPFILE H5DUMP_CHECK old_h5fc_ext2_is.h5 old_h5fc_ext2_is.ddl -TOOLTEST old_h5fc_ext2_sf.h5 +TOOLTEST old_h5fc_ext2_sf.h5 $TMPDMPFILE H5DUMP_CHECK old_h5fc_ext2_sf.h5 old_h5fc_ext2_sf.ddl # -TOOLTEST old_h5fc_ext3_isf.h5 +TOOLTEST old_h5fc_ext3_isf.h5 $TMPDMPFILE H5DUMP_CHECK old_h5fc_ext3_isf.h5 old_h5fc_ext3_isf.ddl # # Clean up temporary files/directories -- cgit v0.12 From 7f99d42583e4ba3d4e6c3e1bb09538db6b42e388 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Mon, 19 Sep 2016 14:52:45 -0400 Subject: Reverted H5T code since datatypes will not be supported at this time. --- src/H5T.c | 82 ++++++++++---------------------------------------------- src/H5Tprivate.h | 1 - 2 files changed, 14 insertions(+), 69 deletions(-) diff --git a/src/H5T.c b/src/H5T.c index cc0e782..b2575d5 100644 --- a/src/H5T.c +++ b/src/H5T.c @@ -1696,95 +1696,41 @@ done: /*------------------------------------------------------------------------- - * Function: H5Tclose + * Function: H5Tclose * - * Purpose: Frees a datatype and all associated memory. + * Purpose: Frees a datatype and all associated memory. * - * Return: Non-negative on success/Negative on failure + * Return: Non-negative on success/Negative on failure * - * Programmer: Robb Matzke - * Tuesday, December 9, 1997 + * Programmer: Robb Matzke + * Tuesday, December 9, 1997 + * + * Modifications: * *------------------------------------------------------------------------- */ herr_t H5Tclose(hid_t type_id) { - herr_t ret_value = SUCCEED; /* Return value */ + H5T_t *dt; /* Pointer to datatype to close */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_API(FAIL) H5TRACE1("e", "i", type_id); - /* Call internal function */ - if(H5T_close_id(type_id) < 0) - HGOTO_ERROR(H5E_OHDR, H5E_CANTRELEASE, FAIL, "unable to close object") - -done: - FUNC_LEAVE_API(ret_value) -} /* end H5Tclose() */ - - -/*------------------------------------------------------------------------- - * Function: H5T_close_id - * - * Purpose: Internal function to free a datatype and all associated - * memory. - * - * Return: SUCCEED/FAIL - * - * Programmer: Dana Robinson - * Summer 2016 - * - *------------------------------------------------------------------------- - */ -herr_t -H5T_close_id(hid_t type_id) -{ - H5T_t *dt; /* Pointer to datatype to close */ - H5F_t *file = NULL; /* File */ - hbool_t evict = FALSE; /* Evict metadata on close? */ - haddr_t tag = HADDR_UNDEF; /* Metadata tag for evictions */ - herr_t ret_value = SUCCEED; /* Return value */ - - FUNC_ENTER_NOAPI(FAIL) - /* Check args */ if(NULL == (dt = (H5T_t *)H5I_object_verify(type_id, H5I_DATATYPE))) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a datatype") + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a datatype") if(H5T_STATE_IMMUTABLE == dt->shared->state) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "immutable datatype") - - /* Check if this is the last object reference and we'll be evicting - * on close. We need to cache this info since it will be gone after the - * decrement call frees the struct. - */ - file = dt->oloc.file; - if(file && 1 == dt->shared->fo_count && H5F_EVICT_ON_CLOSE(file)) { - evict = TRUE; - tag = dt->oloc.addr; - } /* end if */ + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "immutable datatype") /* When the reference count reaches zero the resources are freed */ if(H5I_dec_app_ref(type_id) < 0) - HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "problem freeing id") - - /* Clean up metadata in the metadata cache if evicting on close */ - if(evict && H5F_SHARED(file)) { -// printf("DUMPING CACHE - BEFORE FLUSH\n"); -// H5AC_dump_cache(file); - if(H5AC_flush_tagged_metadata(file, tag, H5AC_ind_read_dxpl_id) < 0) - HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush tagged metadata") -// printf("DUMPING CACHE - BETWEEN FLUSH AND EVICT\n"); -// H5AC_dump_cache(file); - if(H5AC_evict_tagged_metadata(file, tag, FALSE, H5AC_ind_read_dxpl_id) < 0) - HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to evict tagged metadata") -// printf("DUMPING CACHE - AFTER EVICT\n"); -// H5AC_dump_cache(file); - } /* end if */ + HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "problem freeing id") done: - FUNC_LEAVE_NOAPI(ret_value) -} /* end H5T_close_id() */ + FUNC_LEAVE_API(ret_value) +} /* end H5Tclose() */ /*------------------------------------------------------------------------- diff --git a/src/H5Tprivate.h b/src/H5Tprivate.h index 5fd0cf3..7efcb41 100644 --- a/src/H5Tprivate.h +++ b/src/H5Tprivate.h @@ -108,7 +108,6 @@ H5_DLL herr_t H5T_init(void); H5_DLL H5T_t *H5T_copy(H5T_t *old_dt, H5T_copy_t method); H5_DLL herr_t H5T_lock(H5T_t *dt, hbool_t immutable); H5_DLL herr_t H5T_close(H5T_t *dt); -H5_DLL herr_t H5T_close_id(hid_t type_id); H5_DLL H5T_t *H5T_get_super(const H5T_t *dt); H5_DLL H5T_class_t H5T_get_class(const H5T_t *dt, htri_t internal); H5_DLL htri_t H5T_detect_class(const H5T_t *dt, H5T_class_t cls, hbool_t from_api); -- cgit v0.12 From 29b169abb3ab8fcb0c1e75693def8829433dd6a0 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Mon, 19 Sep 2016 15:31:07 -0400 Subject: Removed blank line in Fortran file (leftover from last commit) --- fortran/src/H5Eff.F90 | 1 - 1 file changed, 1 deletion(-) diff --git a/fortran/src/H5Eff.F90 b/fortran/src/H5Eff.F90 index d96d448..2fc77f4 100644 --- a/fortran/src/H5Eff.F90 +++ b/fortran/src/H5Eff.F90 @@ -136,7 +136,6 @@ CONTAINS CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: name END FUNCTION h5eprint_c1 END INTERFACE - INTERFACE INTEGER FUNCTION h5eprint_c2() BIND(C,NAME='h5eprint_c2') END FUNCTION h5eprint_c2 -- cgit v0.12 From 2646f917adb5b2e17404260e433dc3ed7c39a602 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Mon, 19 Sep 2016 16:18:30 -0400 Subject: Cleaned up feature for dissemination to LLNL: - Removed support for datatypes. - Commented out support for groups - General change clean-up - Added a list of improvements to BRANCH.txt --- BRANCH.txt | 14 ++++++++++++++ src/H5Ctag.c | 12 ++++++------ src/H5Gint.c | 18 +++++++++++------- src/H5O.c | 8 ++------ 4 files changed, 33 insertions(+), 19 deletions(-) diff --git a/BRANCH.txt b/BRANCH.txt index 9efaed8..6c4ee6c 100644 --- a/BRANCH.txt +++ b/BRANCH.txt @@ -6,3 +6,17 @@ on object close. Dana Robinson is in charge of the branch, which follows the trunk. It will be deleted when the feature is merged to the trunk. + +Key changes: + +* New H5Pset/get_evict_on_close() functions that enable and disable + the feature (default: disabled). + +* New property: H5F_ACS_EVICT_ON_CLOSE_FLAG + +* Added match_global flag to H5AC_evict_tagged_metadata() and + H5C_evict_tagged_entries() parameter lists. + +* H5D_close() updated to evict on close, when the property is set. + +* New evict_on_close test to exercise the function. diff --git a/src/H5Ctag.c b/src/H5Ctag.c index fc01ecb..e1b4df6 100644 --- a/src/H5Ctag.c +++ b/src/H5Ctag.c @@ -374,15 +374,15 @@ H5C_evict_tagged_entries(H5F_t * f, hid_t dxpl_id, haddr_t tag, hbool_t match_gl /* Start evicting entries */ do { - /* Reset pinned/evicted tracking flags */ - ctx.pinned_entries_need_evicted = FALSE; - ctx.evicted_entries_last_pass = FALSE; + /* Reset pinned/evicted tracking flags */ + ctx.pinned_entries_need_evicted = FALSE; + ctx.evicted_entries_last_pass = FALSE; - /* Iterate through entries in the cache */ + /* Iterate through entries in the cache */ if(H5C__iter_tagged_entries(cache, tag, match_global, H5C__evict_tagged_entries_cb, &ctx) < 0) - HGOTO_ERROR(H5E_CACHE, H5E_BADITER, match_global, "Iteration of tagged entries failed") + HGOTO_ERROR(H5E_CACHE, H5E_BADITER, FAIL, "Iteration of tagged entries failed") - /* Keep doing this until we have stopped evicted entries */ + /* Keep doing this until we have stopped evicted entries */ } while(TRUE == ctx.evicted_entries_last_pass); /* Fail if we have finished evicting entries and pinned entries still need evicted */ diff --git a/src/H5Gint.c b/src/H5Gint.c index ff92ecc..4b34015 100644 --- a/src/H5Gint.c +++ b/src/H5Gint.c @@ -501,20 +501,24 @@ H5G_close(H5G_t *grp) if(H5O_close(&(grp->oloc)) < 0) HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to close") +#ifdef DER + /* XXX - NOT IMPLEMENTED */ /* Evict group metadata if evicting on close */ if(H5F_SHARED(grp->oloc.file) && H5F_EVICT_ON_CLOSE(grp->oloc.file)) { -// printf("EVICTING GROUP (TAG: 0x%3llx)\n", grp->oloc.addr); -// printf("DUMPING CACHE - BEFORE FLUSH\n"); -// H5AC_dump_cache(grp->oloc.file); + /* I've left in the cache dump code for now - DER */ + printf("EVICTING GROUP (TAG: 0x%3llx)\n", grp->oloc.addr); + printf("DUMPING CACHE - BEFORE FLUSH\n"); + H5AC_dump_cache(grp->oloc.file); if(H5AC_flush_tagged_metadata(grp->oloc.file, grp->oloc.addr, H5AC_ind_read_dxpl_id) < 0) HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush tagged metadata") -// printf("DUMPING CACHE - BETWEEN FLUSH AND EVICT\n"); -// H5AC_dump_cache(grp->oloc.file); + printf("DUMPING CACHE - BETWEEN FLUSH AND EVICT\n"); + H5AC_dump_cache(grp->oloc.file); if(H5AC_evict_tagged_metadata(grp->oloc.file, grp->oloc.addr, FALSE, H5AC_ind_read_dxpl_id) < 0) HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to evict tagged metadata") -// printf("DUMPING CACHE - AFTER EVICT\n"); -// H5AC_dump_cache(grp->oloc.file); + printf("DUMPING CACHE - AFTER EVICT\n"); + H5AC_dump_cache(grp->oloc.file); } /* end if */ +#endif /* DER */ /* Free memory */ grp->shared = H5FL_FREE(H5G_shared_t, grp->shared); diff --git a/src/H5O.c b/src/H5O.c index aa30e79..d1806a1 100644 --- a/src/H5O.c +++ b/src/H5O.c @@ -1069,18 +1069,14 @@ H5Oclose(hid_t object_id) /* Get the type of the object and close it in the correct way */ switch(H5I_get_type(object_id)) { case H5I_GROUP: + case H5I_DATATYPE: case H5I_DATASET: if(H5I_object(object_id) == NULL) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "not a valid object") if(H5I_dec_app_ref(object_id) < 0) HGOTO_ERROR(H5E_OHDR, H5E_CANTRELEASE, FAIL, "unable to close object") break; - case H5I_DATATYPE: - if(H5I_object(object_id) == NULL) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "not a valid object") - if(H5T_close_id(object_id) < 0) - HGOTO_ERROR(H5E_OHDR, H5E_CANTRELEASE, FAIL, "unable to close object") - break; + case H5I_UNINIT: case H5I_BADID: case H5I_FILE: -- cgit v0.12 From 7ef33fa7b306338399ac2160a66f421a5a0feccf Mon Sep 17 00:00:00 2001 From: Binh-Minh Ribler Date: Wed, 21 Sep 2016 14:53:17 -0500 Subject: Purpose: Fix bug HDFFR-9920 cont. Description: Adding user's test revealed a flaw in the fix. Moved CommonFG's functions in Group to H5Location, so that they could be called by objects that can be used to specify a location Also, rearranged many "#include" header files to resolve conflicts. Platforms tested: Linux/32 2.6 (jam) Linux/64 (platypus) Darwin (osx1010test) --- c++/src/H5AbstractDs.cpp | 9 +- c++/src/H5ArrayType.cpp | 4 +- c++/src/H5AtomType.cpp | 4 +- c++/src/H5Attribute.cpp | 6 +- c++/src/H5CommonFG.cpp | 5 +- c++/src/H5CompType.cpp | 6 +- c++/src/H5Cpp.h | 12 +- c++/src/H5DataSet.cpp | 9 +- c++/src/H5DataType.cpp | 6 +- c++/src/H5DcreatProp.cpp | 2 +- c++/src/H5DcreatProp.h | 2 + c++/src/H5EnumType.cpp | 8 +- c++/src/H5File.cpp | 14 +- c++/src/H5FloatType.cpp | 6 +- c++/src/H5Group.cpp | 1282 +------------------------------------------- c++/src/H5Group.h | 120 ----- c++/src/H5IntType.cpp | 6 +- c++/src/H5Library.cpp | 4 +- c++/src/H5Location.cpp | 1337 ++++++++++++++++++++++++++++++++++++++++++++-- c++/src/H5Location.h | 134 ++++- c++/src/H5Object.cpp | 8 +- c++/src/H5Object.h | 2 + c++/src/H5OcreatProp.cpp | 2 +- c++/src/H5PredType.cpp | 2 + c++/src/H5StrType.cpp | 6 +- c++/src/H5VarLenType.cpp | 4 +- c++/test/Makefile.am | 2 +- c++/test/h5cpputil.cpp | 26 + c++/test/h5cpputil.h | 8 +- c++/test/testhdf5.cpp | 2 + c++/test/titerate.cpp | 541 +++++++++++++++++++ 31 files changed, 2090 insertions(+), 1489 deletions(-) create mode 100644 c++/test/titerate.cpp diff --git a/c++/src/H5AbstractDs.cpp b/c++/src/H5AbstractDs.cpp index f0579fc..ac10bf8 100644 --- a/c++/src/H5AbstractDs.cpp +++ b/c++/src/H5AbstractDs.cpp @@ -19,12 +19,15 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" +#include "H5FaccProp.h" +#include "H5FcreatProp.h" +#include "H5OcreatProp.h" +#include "H5DcreatProp.h" +#include "H5DxferProp.h" #include "H5Location.h" #include "H5Object.h" -#include "H5AbstractDs.h" #include "H5DataSpace.h" -#include "H5OcreatProp.h" -#include "H5DcreatProp.h" +#include "H5AbstractDs.h" #include "H5Alltypes.h" #ifndef H5_NO_NAMESPACE diff --git a/c++/src/H5ArrayType.cpp b/c++/src/H5ArrayType.cpp index d7d1a35..9646a6f 100644 --- a/c++/src/H5ArrayType.cpp +++ b/c++/src/H5ArrayType.cpp @@ -19,10 +19,10 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5DataType.h" #include "H5ArrayType.h" diff --git a/c++/src/H5AtomType.cpp b/c++/src/H5AtomType.cpp index 6308821..7871455 100644 --- a/c++/src/H5AtomType.cpp +++ b/c++/src/H5AtomType.cpp @@ -19,10 +19,10 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5DataType.h" #include "H5AtomType.h" diff --git a/c++/src/H5Attribute.cpp b/c++/src/H5Attribute.cpp index 5454583..0a8ec52 100644 --- a/c++/src/H5Attribute.cpp +++ b/c++/src/H5Attribute.cpp @@ -24,13 +24,13 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" -#include "H5AbstractDs.h" #include "H5FaccProp.h" #include "H5FcreatProp.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" +#include "H5Location.h" +#include "H5Object.h" +#include "H5AbstractDs.h" #include "H5DataType.h" #include "H5DataSpace.h" #include "H5Group.h" diff --git a/c++/src/H5CommonFG.cpp b/c++/src/H5CommonFG.cpp index 0c18293..f79a048 100644 --- a/c++/src/H5CommonFG.cpp +++ b/c++/src/H5CommonFG.cpp @@ -19,13 +19,13 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" #include "H5FaccProp.h" #include "H5FcreatProp.h" #include "H5OcreatProp.h" #include "H5DxferProp.h" #include "H5DcreatProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5CommonFG.h" #include "H5Group.h" #include "H5AbstractDs.h" @@ -73,4 +73,3 @@ CommonFG::~CommonFG() {} #ifndef H5_NO_NAMESPACE } #endif - diff --git a/c++/src/H5CompType.cpp b/c++/src/H5CompType.cpp index 6105273..b7c5687 100644 --- a/c++/src/H5CompType.cpp +++ b/c++/src/H5CompType.cpp @@ -19,13 +19,13 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" +#include "H5DxferProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5Alltypes.h" #include "H5AbstractDs.h" -#include "H5DxferProp.h" #include "H5DataSpace.h" #include "H5DataSet.h" #include "H5private.h" diff --git a/c++/src/H5Cpp.h b/c++/src/H5Cpp.h index 4e82ee3..56b2f7f 100644 --- a/c++/src/H5Cpp.h +++ b/c++/src/H5Cpp.h @@ -22,17 +22,17 @@ #include "H5IdComponent.h" #include "H5DataSpace.h" #include "H5PropList.h" +#include "H5FaccProp.h" +#include "H5FcreatProp.h" +#include "H5OcreatProp.h" +#include "H5DcreatProp.h" +#include "H5DxferProp.h" #include "H5Location.h" #include "H5Object.h" #include "H5AbstractDs.h" #include "H5Attribute.h" -#include "H5OcreatProp.h" -#include "H5DcreatProp.h" -#include "H5CommonFG.h" +//#include "H5CommonFG.h" #include "H5DataType.h" -#include "H5DxferProp.h" -#include "H5FaccProp.h" -#include "H5FcreatProp.h" #include "H5AtomType.h" #include "H5PredType.h" #include "H5EnumType.h" diff --git a/c++/src/H5DataSet.cpp b/c++/src/H5DataSet.cpp index 4b5d0b7..e4d6665 100644 --- a/c++/src/H5DataSet.cpp +++ b/c++/src/H5DataSet.cpp @@ -24,14 +24,13 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" -#include "H5PropList.h" +#include "H5FaccProp.h" +#include "H5FcreatProp.h" #include "H5OcreatProp.h" #include "H5DxferProp.h" #include "H5DcreatProp.h" -#include "H5FaccProp.h" -#include "H5FcreatProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5DataType.h" #include "H5DataSpace.h" #include "H5AbstractDs.h" diff --git a/c++/src/H5DataType.cpp b/c++/src/H5DataType.cpp index b784dd4..a36dc60 100644 --- a/c++/src/H5DataType.cpp +++ b/c++/src/H5DataType.cpp @@ -24,14 +24,14 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5DataSpace.h" -#include "H5Location.h" -#include "H5Object.h" #include "H5FaccProp.h" #include "H5FcreatProp.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" #include "H5DxferProp.h" +#include "H5DataSpace.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5DataType.h" #include "H5AtomType.h" #include "H5PredType.h" diff --git a/c++/src/H5DcreatProp.cpp b/c++/src/H5DcreatProp.cpp index 06b5024..d540c72 100644 --- a/c++/src/H5DcreatProp.cpp +++ b/c++/src/H5DcreatProp.cpp @@ -20,9 +20,9 @@ #include "H5IdComponent.h" #include "H5PropList.h" #include "H5OcreatProp.h" +#include "H5DcreatProp.h" #include "H5Location.h" #include "H5Object.h" -#include "H5DcreatProp.h" #include "H5DataType.h" #ifndef H5_NO_NAMESPACE diff --git a/c++/src/H5DcreatProp.h b/c++/src/H5DcreatProp.h index fed41b4..fa7b1c1 100644 --- a/c++/src/H5DcreatProp.h +++ b/c++/src/H5DcreatProp.h @@ -24,6 +24,8 @@ namespace H5 { #endif +class DataType; + /*! \class DSetCreatPropList \brief Class DSetCreatPropList represents the dataset creation property list. diff --git a/c++/src/H5EnumType.cpp b/c++/src/H5EnumType.cpp index f0a2138..32cb1ac 100644 --- a/c++/src/H5EnumType.cpp +++ b/c++/src/H5EnumType.cpp @@ -19,13 +19,13 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" +#include "H5OcreatProp.h" +#include "H5DcreatProp.h" +#include "H5DxferProp.h" +#include "H5DataSpace.h" #include "H5Location.h" #include "H5Object.h" #include "H5AbstractDs.h" -#include "H5DxferProp.h" -#include "H5DataSpace.h" -#include "H5OcreatProp.h" -#include "H5DcreatProp.h" #include "H5DataType.h" #include "H5DataSet.h" #include "H5AtomType.h" diff --git a/c++/src/H5File.cpp b/c++/src/H5File.cpp index a81efd8..246da9f 100644 --- a/c++/src/H5File.cpp +++ b/c++/src/H5File.cpp @@ -24,13 +24,13 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" #include "H5FaccProp.h" #include "H5FcreatProp.h" #include "H5OcreatProp.h" #include "H5DxferProp.h" #include "H5DcreatProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5Group.h" #include "H5AbstractDs.h" #include "H5DataSpace.h" @@ -563,6 +563,9 @@ void H5File::reopen() // This function is a redefinition of CommonFG::getLocId. It // is used by CommonFG member functions to get the file id. // Programmer Binh-Minh Ribler - 2000 +// Deprecated: +// After HDFFV-9920, the Group's methods can use getId() and getLocId() +// is kept for backward compatibility. Aug 18, 2016 -BMR //-------------------------------------------------------------------------- hid_t H5File::getLocId() const { @@ -623,11 +626,10 @@ void H5File::close() ///\param msg - Message describing the failure ///\exception H5::FileIException // Description -// This function is used in CommonFG implementation so that +// This function is also used in H5Location implementation so that // proper exception can be thrown for file or group. The -// argument func_name is a member of CommonFG and "H5File::" -// will be inserted to indicate the function called is an -// implementation of H5File. +// "H5File::" will be inserted to indicate the function called is +// an implementation of H5File. // Programmer Binh-Minh Ribler - 2000 //-------------------------------------------------------------------------- void H5File::throwException(const H5std_string& func_name, const H5std_string& msg) const diff --git a/c++/src/H5FloatType.cpp b/c++/src/H5FloatType.cpp index ed17aeb..c019ae4 100644 --- a/c++/src/H5FloatType.cpp +++ b/c++/src/H5FloatType.cpp @@ -19,13 +19,13 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" +#include "H5DxferProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5DataType.h" #include "H5AbstractDs.h" -#include "H5DxferProp.h" #include "H5DataSpace.h" #include "H5AtomType.h" #include "H5FloatType.h" diff --git a/c++/src/H5Group.cpp b/c++/src/H5Group.cpp index d93d3a1..0e19e6f 100644 --- a/c++/src/H5Group.cpp +++ b/c++/src/H5Group.cpp @@ -24,14 +24,14 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" -#include "H5AbstractDs.h" #include "H5FaccProp.h" #include "H5FcreatProp.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" #include "H5DxferProp.h" +#include "H5Location.h" +#include "H5Object.h" +#include "H5AbstractDs.h" #include "H5DataSpace.h" #include "H5DataSet.h" #include "H5Attribute.h" @@ -68,9 +68,11 @@ Group::Group(const Group& original) : H5Object(), id(original.id) //-------------------------------------------------------------------------- // Function: Group::getLocId -///\brief Returns the id of this group. -///\return Id of this group +// Purpose: Get the id of this group // Programmer Binh-Minh Ribler - 2000 +// Description +// This function is a redefinition of CommonFG::getLocId. It +// is used by CommonFG member functions to get the file id. // Deprecated: // After HDFFV-9920, the Group's methods can use getId() and getLocId() // is kept for backward compatibility. Aug 18, 2016 -BMR @@ -196,11 +198,10 @@ void Group::close() ///\param msg - Message describing the failure ///\exception H5::GroupIException // Description -// This function is used in CommonFG implementation so that +// This function is also used in H5Location's methods so that // proper exception can be thrown for file or group. The -// argument func_name is a member of CommonFG and "Group::" -// will be inserted to indicate the function called is an -// implementation of Group. +// "Group::" will be inserted to indicate the function called is +// an implementation of Group. // Programmer Binh-Minh Ribler - 2000 //-------------------------------------------------------------------------- void Group::throwException(const H5std_string& func_name, const H5std_string& msg) const @@ -230,1269 +231,6 @@ Group::~Group() } } - -// From H5CommonFG.cpp -// Notes with "***Updated" are new and for Group.cpp -// Original notes are from December 2000 -// -// There are a few comments that are common to most of the functions -// defined in this file so they are listed here. -// - getLocId is called by all functions, that call a C API, to get -// the location id, which can be either a file id or a group id. -// This function is pure virtual and it's up to H5File and Group -// to call the right getId() - although, as the structure of the -// library at this time, getId() is basically the IdComponent::getId() -// ***Updated: after the classes are rearranged (HDFFV-9920), functions -// in CommonFG are moved to Group, and they can call getId() -// instead of getLocId(). getLocId() is kept for backward -// compatibility on user applications. Aug 18, 2016 -BMR -// - when a failure returned by the C API, the functions will call -// throwException, which is a pure virtual function and is implemented -// by H5File to throw a FileIException and by Group to throw a -// GroupIException. -// ***Updated: after HDFFV-9920, methods in class Group use throwException -// to distinguish the FileIException and GroupIException. CommonFG is no -// longer used in the library. Aug 18, 2016 -BMR - -//-------------------------------------------------------------------------- -// Function: Group::createGroup -///\brief Creates a new group at this location which can be a file -/// or another group. -///\param name - IN: Name of the group to create -///\param size_hint - IN: Indicates the number of bytes to reserve for -/// the names that will appear in the group -///\return Group instance -///\exception H5::FileIException or H5::GroupIException -///\par Description -/// The optional \a size_hint specifies how much file space to -/// reserve for storing the names that will appear in this new -/// group. If a non-positive value is provided for the \a size_hint -/// then a default size is chosen. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -Group Group::createGroup( const char* name, size_t size_hint ) const -{ - // Group creation property list for size hint - hid_t gcpl_id = 0; - - // Set the local heap size hint - if (size_hint > 0) - { - // If the creation of the property list failed, throw an exception - if ((gcpl_id = H5Pcreate(H5P_GROUP_CREATE)) < 0) - throwException("createGroup", "H5Pcreate failed"); - - if (H5Pset_local_heap_size_hint(gcpl_id, size_hint) < 0) { - H5Pclose(gcpl_id); - throwException("createGroup", "H5Pset_local_heap_size_hint failed"); - } - } - - // Call C routine H5Gcreate2 to create the named group, giving the - // location id which can be a file id or a group id - hid_t group_id = H5Gcreate2(getId(), name, H5P_DEFAULT, gcpl_id, H5P_DEFAULT ); - - // Close the group creation property list, if necessary - if(gcpl_id > 0) - H5Pclose(gcpl_id); - - // If the creation of the group failed, throw an exception - if( group_id < 0 ) - throwException("createGroup", "H5Gcreate2 failed"); - - // No failure, create and return the Group object - Group group; - group.p_setId(group_id); - // CommonFG *ptr = &group; - // ptr->p_setId(group_id); - return( group ); -} - -//-------------------------------------------------------------------------- -// Function: Group::createGroup -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -Group Group::createGroup( const H5std_string& name, size_t size_hint ) const -{ - return( createGroup( name.c_str(), size_hint )); -} - -//-------------------------------------------------------------------------- -// Function: Group::openGroup -///\brief Opens an existing group in a location which can be a file -/// or another group. -///\param name - IN: Name of the group to open -///\return Group instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -Group Group::openGroup( const char* name ) const -{ - // Call C routine H5Gopen2 to open the named group, giving the - // location id which can be a file id or a group id - hid_t group_id = H5Gopen2(getId(), name, H5P_DEFAULT ); - - // If the opening of the group failed, throw an exception - if( group_id < 0 ) - throwException("openGroup", "H5Gopen2 failed"); - - // No failure, create and return the Group object - Group group; - group.p_setId(group_id); - // CommonFG *ptr = &group; - // ptr->p_setId(group_id); - return( group ); -} - -//-------------------------------------------------------------------------- -// Function: Group::openGroup -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -Group Group::openGroup( const H5std_string& name ) const -{ - return( openGroup( name.c_str() )); -} - -//-------------------------------------------------------------------------- -// Function: Group::createDataSet -///\brief Creates a new dataset at this location. -///\param name - IN: Name of the dataset to create -///\param data_type - IN: Datatype of the dataset -///\param data_space - IN: Dataspace for the dataset -///\param create_plist - IN: Creation properly list for the dataset -///\return DataSet instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -DataSet Group::createDataSet( const char* name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist ) const -{ - //cerr << "createDataSet( const char* name" << endl; - // Obtain identifiers for C API - hid_t type_id = data_type.getId(); - hid_t space_id = data_space.getId(); - hid_t create_plist_id = create_plist.getId(); - - // Call C routine H5Dcreate2 to create the named dataset - hid_t dataset_id = H5Dcreate2(getId(), name, type_id, space_id, H5P_DEFAULT, create_plist_id, H5P_DEFAULT ); - //cerr << " H5Dcreate2 returns dataset_id " << dataset_id << endl; - - // If the creation of the dataset failed, throw an exception - if( dataset_id < 0 ) - throwException("createDataSet", "H5Dcreate2 failed"); - - // No failure, create and return the DataSet object - DataSet dataset; - f_DataSet_setId(&dataset, dataset_id); - return( dataset ); -} - -//-------------------------------------------------------------------------- -// Function: Group::createDataSet -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -DataSet Group::createDataSet( const H5std_string& name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist ) const -{ - //cerr << "createDataSet( const H5std_string& name" << endl; - return( createDataSet( name.c_str(), data_type, data_space, create_plist )); -} - -//-------------------------------------------------------------------------- -// Function: Group::openDataSet -///\brief Opens an existing dataset at this location. -///\param name - IN: Name of the dataset to open -///\return DataSet instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -DataSet Group::openDataSet( const char* name ) const -{ - // Call C function H5Dopen2 to open the specified dataset, giving - // the location id and the dataset's name - hid_t dataset_id = H5Dopen2(getId(), name, H5P_DEFAULT ); - - // If the dataset's opening failed, throw an exception - if(dataset_id < 0) - throwException("openDataSet", "H5Dopen2 failed"); - - // No failure, create and return the DataSet object - DataSet dataset; - f_DataSet_setId(&dataset, dataset_id); - return( dataset ); -} - -//-------------------------------------------------------------------------- -// Function: Group::openDataSet -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -DataSet Group::openDataSet( const H5std_string& name ) const -{ - return( openDataSet( name.c_str() )); -} - -//-------------------------------------------------------------------------- -// Function: Group::link -///\brief Creates a link of the specified type from \a new_name to -/// \a curr_name. -///\param link_type - IN: Link type; possible values are -/// \li \c H5G_LINK_HARD -/// \li \c H5G_LINK_SOFT -///\param curr_name - IN: Name of the existing object if link is a hard -/// link; can be anything for the soft link -///\param new_name - IN: New name for the object -///\exception H5::FileIException or H5::GroupIException -///\par Description -/// Note that both names are interpreted relative to the -/// specified location. -/// For information on creating hard link and soft link, please -/// refer to the C layer Reference Manual at: -/// http://hdfgroup.org/HDF5/doc/RM/RM_H5L.html#Link-CreateHard and -/// http://hdfgroup.org/HDF5/doc/RM/RM_H5L.html#Link-CreateSoft -// Programmer Binh-Minh Ribler - 2000 -// Modification -// 2007: QAK modified to use H5L APIs - BMR -//-------------------------------------------------------------------------- -void Group::link( H5L_type_t link_type, const char* curr_name, const char* new_name ) const -{ - herr_t ret_value = -1; - - switch(link_type) { - case H5L_TYPE_HARD: - ret_value = H5Lcreate_hard(getId(), curr_name, H5L_SAME_LOC, new_name, H5P_DEFAULT, H5P_DEFAULT ); - break; - - case H5L_TYPE_SOFT: - ret_value = H5Lcreate_soft( curr_name,getId(), new_name, H5P_DEFAULT, H5P_DEFAULT ); - break; - - case H5L_TYPE_ERROR: - case H5L_TYPE_EXTERNAL: - case H5L_TYPE_MAX: - default: - throwException("link", "unknown link type"); - break; - } /* end switch */ - - if( ret_value < 0 ) - throwException("link", "creating link failed"); -} - -//-------------------------------------------------------------------------- -// Function: Group::link -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a curr_name and \a new_name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -void Group::link( H5L_type_t link_type, const H5std_string& curr_name, const H5std_string& new_name ) const -{ - link( link_type, curr_name.c_str(), new_name.c_str() ); -} - -//-------------------------------------------------------------------------- -// Function: Group::unlink -///\brief Removes the specified name at this location. -///\param name - IN: Name of the object to be removed -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -// Modification -// 2007: QAK modified to use H5L APIs - BMR -//-------------------------------------------------------------------------- -void Group::unlink( const char* name ) const -{ - herr_t ret_value = H5Ldelete(getId(), name, H5P_DEFAULT ); - if( ret_value < 0 ) - throwException("unlink", "H5Ldelete failed"); -} - -//-------------------------------------------------------------------------- -// Function: Group::unlink -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -void Group::unlink( const H5std_string& name ) const -{ - unlink( name.c_str() ); -} - -//-------------------------------------------------------------------------- -// Function: Group::move -///\brief Renames an object at this location. -///\param src - IN: Object's original name -///\param dst - IN: Object's new name -///\exception H5::FileIException or H5::GroupIException -///\note -/// Exercise care in moving groups as it is possible to render -/// data in a file inaccessible with Group::move. Please refer -/// to the Group Interface in the HDF5 User's Guide for details at: -/// https://www.hdfgroup.org/HDF5/doc/UG/HDF5_Users_Guide-Responsive%20HTML5/index.html#t=HDF5_Users_Guide%2FGroups%2FHDF5_Groups.htm -// Programmer Binh-Minh Ribler - 2000 -// Modification -// 2007: QAK modified to use H5L APIs - BMR -//-------------------------------------------------------------------------- -void Group::move( const char* src, const char* dst ) const -{ - herr_t ret_value = H5Lmove(getId(), src, H5L_SAME_LOC, dst, H5P_DEFAULT, H5P_DEFAULT ); - if( ret_value < 0 ) - throwException("move", "H5Lmove failed"); -} - -//-------------------------------------------------------------------------- -// Function: Group::move -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a src and \a dst. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -void Group::move( const H5std_string& src, const H5std_string& dst ) const -{ - move( src.c_str(), dst.c_str() ); -} - -#ifndef H5_NO_DEPRECATED_SYMBOLS -//-------------------------------------------------------------------------- -// Function: Group::getObjinfo -///\brief Returns information about an object. -///\param name - IN: Name of the object -///\param follow_link - IN: Link flag -///\param statbuf - OUT: Buffer to return information about the object -///\exception H5::FileIException or H5::GroupIException -///\par Description -/// For more information, please refer to the C layer Reference -/// Manual at: -/// http://www.hdfgroup.org/HDF5/doc/RM/RM_H5G.html#Group-GetObjinfo -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -void Group::getObjinfo( const char* name, hbool_t follow_link, H5G_stat_t& statbuf ) const -{ - herr_t ret_value = H5Gget_objinfo(getId(), name, follow_link, &statbuf ); - if( ret_value < 0 ) - throwException("getObjinfo", "H5Gget_objinfo failed"); -} - -//-------------------------------------------------------------------------- -// Function: Group::getObjinfo -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -void Group::getObjinfo( const H5std_string& name, hbool_t follow_link, H5G_stat_t& statbuf ) const -{ - getObjinfo( name.c_str(), follow_link, statbuf ); -} - -//-------------------------------------------------------------------------- -// Function: Group::getObjinfo -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above functions in that it doesn't have -/// the paramemter \a follow_link. -// Programmer Binh-Minh Ribler - Nov, 2005 -// Note: need to modify to use H5Oget_info and H5Lget_info - BMR -//-------------------------------------------------------------------------- -void Group::getObjinfo( const char* name, H5G_stat_t& statbuf ) const -{ - herr_t ret_value = H5Gget_objinfo(getId(), name, 0, &statbuf ); - if( ret_value < 0 ) - throwException("getObjinfo", "H5Gget_objinfo failed"); -} - -//-------------------------------------------------------------------------- -// Function: Group::getObjinfo -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - Nov, 2005 -//-------------------------------------------------------------------------- -void Group::getObjinfo( const H5std_string& name, H5G_stat_t& statbuf ) const -{ - getObjinfo( name.c_str(), statbuf ); -} -#endif /* H5_NO_DEPRECATED_SYMBOLS */ - -//-------------------------------------------------------------------------- -// Function: Group::getLinkval -///\brief Returns the name of the object that the symbolic link points to. -///\param name - IN: Symbolic link to the object -///\param size - IN: Maximum number of characters of value to be returned -///\return Name of the object -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -H5std_string Group::getLinkval( const char* name, size_t size ) const -{ - H5L_info_t linkinfo; - char *value_C; // value in C string - size_t val_size = size; - H5std_string value = ""; - herr_t ret_value; - - // if user doesn't provide buffer size, determine it - if (size == 0) - { - ret_value = H5Lget_info(getLocId(), name, &linkinfo, H5P_DEFAULT); - if( ret_value < 0 ) - throwException("getLinkval", "H5Lget_info to find buffer size failed"); - - val_size = linkinfo.u.val_size; - } - - // if link has value, retrieve the value, otherwise, return null string - if (val_size > 0) - { - value_C = new char[val_size+1]; // temporary C-string for C API - HDmemset(value_C, 0, val_size+1); // clear buffer - - ret_value = H5Lget_val(getLocId(), name, value_C, val_size, H5P_DEFAULT); - if( ret_value < 0 ) - { - delete []value_C; - throwException("getLinkval", "H5Lget_val failed"); - } - - value = H5std_string(value_C); - delete []value_C; - } - return(value); -} - -//-------------------------------------------------------------------------- -// Function: Group::getLinkval -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -H5std_string Group::getLinkval( const H5std_string& name, size_t size ) const -{ - return( getLinkval( name.c_str(), size )); -} - -//-------------------------------------------------------------------------- -// Function: Group::mount -///\brief Mounts the file \a child onto this group. -///\param name - IN: Name of the group -///\param child - IN: File to mount -///\param plist - IN: Property list to use -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2014 (original 2000) -//-------------------------------------------------------------------------- -void Group::mount(const char* name, const H5File& child, const PropList& plist ) const -{ - // Obtain identifiers for C API - hid_t plist_id = plist.getId(); - hid_t child_id = child.getId(); - - // Call C routine H5Fmount to do the mouting - herr_t ret_value = H5Fmount(getId(), name, child_id, plist_id ); - - // Raise exception if H5Fmount returns negative value - if( ret_value < 0 ) - throwException("mount", "H5Fmount failed"); -} - -//-------------------------------------------------------------------------- -// Function: Group::mount -// Purpose This is an overloaded member function, kept for backward -// compatibility. It differs from the above function in that it -// misses const's. This wrapper will be removed in future release. -// Param name - IN: Name of the group -// Param child - IN: File to mount -// Param plist - IN: Property list to use -// Exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -// Modification -// Modified to call its replacement. -BMR, 2014/04/16 -// Removed from documentation. -BMR, 2016/03/07 1.8.17 and 1.10.0 -// Removed from code. -BMR, 2016/08/11 1.8.18 and 1.10.1 -//-------------------------------------------------------------------------- -//void Group::mount(const char* name, H5File& child, PropList& plist) const -//{ -// mount(name, child, plist); -//} - -//-------------------------------------------------------------------------- -// Function: Group::mount -///\brief This is an overloaded member function, provided for convenience. -/// It takes an \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -void Group::mount(const H5std_string& name, const H5File& child, const PropList& plist) const -{ - mount(name.c_str(), child, plist); -} - -//-------------------------------------------------------------------------- -// Function: Group::mount -// Purpose This is an overloaded member function, kept for backward -// compatibility. It differs from the above function in that it -// misses const's. This wrapper will be removed in future release. -// Programmer Binh-Minh Ribler - 2014 -// Modification -// Modified to call its replacement. -BMR, 2014/04/16 -// Removed from documentation. -BMR, 2016/03/07 1.8.17 and 1.10.0 -// Removed from code. -BMR, 2016/08/11 1.8.18 and 1.10.1 -//-------------------------------------------------------------------------- -//void Group::mount(const H5std_string& name, H5File& child, PropList& plist) const -//{ -// mount(name.c_str(), child, plist); -//} - -//-------------------------------------------------------------------------- -// Function: Group::unmount -///\brief Unmounts the specified file. -///\param name - IN: Name of the file to unmount -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -void Group::unmount( const char* name ) const -{ - // Call C routine H5Fmount to do the mouting - herr_t ret_value = H5Funmount(getId(), name ); - - // Raise exception if H5Funmount returns negative value - if( ret_value < 0 ) - throwException("unmount", "H5Funmount failed"); -} - -//-------------------------------------------------------------------------- -// Function: Group::unmount -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -void Group::unmount( const H5std_string& name ) const -{ - unmount( name.c_str() ); -} - -//-------------------------------------------------------------------------- -// Function: Group::openDataType -///\brief Opens the named generic datatype at this location. -///\param name - IN: Name of the datatype to open -///\return DataType instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -DataType Group::openDataType( const char* name ) const -{ - // Call C function H5Topen2 to open the named datatype in this group, - // given either the file or group id - hid_t type_id = H5Topen2(getLocId(), name, H5P_DEFAULT); - - // If the datatype's opening failed, throw an exception - if( type_id < 0 ) - throwException("openDataType", "H5Topen2 failed"); - - // No failure, create and return the DataType object - DataType data_type; - f_DataType_setId(&data_type, type_id); - return(data_type); -} - -//-------------------------------------------------------------------------- -// Function: Group::openDataType -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -DataType Group::openDataType( const H5std_string& name ) const -{ - return( openDataType( name.c_str()) ); -} - -//-------------------------------------------------------------------------- -// Function: Group::openArrayType -///\brief Opens the named array datatype at this location. -///\param name - IN: Name of the array datatype to open -///\return ArrayType instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - Jul, 2005 -//-------------------------------------------------------------------------- -ArrayType Group::openArrayType( const char* name ) const -{ - // Call C function H5Topen2 to open the named datatype in this group, - // given either the file or group id - hid_t type_id = H5Topen2(getLocId(), name, H5P_DEFAULT); - - // If the datatype's opening failed, throw an exception - if( type_id < 0 ) - throwException("openArrayType", "H5Topen2 failed"); - - // No failure, create and return the ArrayType object - ArrayType array_type; - f_DataType_setId(&array_type, type_id); - return(array_type); -} - -//-------------------------------------------------------------------------- -// Function: Group::openArrayType -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - Jul, 2005 -//-------------------------------------------------------------------------- -ArrayType Group::openArrayType( const H5std_string& name ) const -{ - return( openArrayType( name.c_str()) ); -} - -//-------------------------------------------------------------------------- -// Function: Group::openCompType -///\brief Opens the named compound datatype at this location. -///\param name - IN: Name of the compound datatype to open -///\return CompType instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -CompType Group::openCompType( const char* name ) const -{ - // Call C function H5Topen2 to open the named datatype in this group, - // given either the file or group id - hid_t type_id = H5Topen2(getLocId(), name, H5P_DEFAULT); - - // If the datatype's opening failed, throw an exception - if( type_id < 0 ) - throwException("openCompType", "H5Topen2 failed"); - - // No failure, create and return the CompType object - CompType comp_type; - f_DataType_setId(&comp_type, type_id); - return(comp_type); -} - -//-------------------------------------------------------------------------- -// Function: Group::openCompType -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -CompType Group::openCompType( const H5std_string& name ) const -{ - return( openCompType( name.c_str()) ); -} - -//-------------------------------------------------------------------------- -// Function: Group::openEnumType -///\brief Opens the named enumeration datatype at this location. -///\param name - IN: Name of the enumeration datatype to open -///\return EnumType instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -EnumType Group::openEnumType( const char* name ) const -{ - // Call C function H5Topen2 to open the named datatype in this group, - // given either the file or group id - hid_t type_id = H5Topen2(getLocId(), name, H5P_DEFAULT); - - // If the datatype's opening failed, throw an exception - if( type_id < 0 ) - throwException("openEnumType", "H5Topen2 failed"); - - // No failure, create and return the EnumType object - EnumType enum_type; - f_DataType_setId(&enum_type, type_id); - return(enum_type); -} - -//-------------------------------------------------------------------------- -// Function: Group::openEnumType -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -EnumType Group::openEnumType( const H5std_string& name ) const -{ - return( openEnumType( name.c_str()) ); -} - -//-------------------------------------------------------------------------- -// Function: Group::openIntType -///\brief Opens the named integer datatype at this location. -///\param name - IN: Name of the integer datatype to open -///\return IntType instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -IntType Group::openIntType( const char* name ) const -{ - // Call C function H5Topen2 to open the named datatype in this group, - // given either the file or group id - hid_t type_id = H5Topen2(getLocId(), name, H5P_DEFAULT); - - // If the datatype's opening failed, throw an exception - if( type_id < 0 ) - throwException("openIntType", "H5Topen2 failed"); - - // No failure, create and return the IntType object - IntType int_type; - f_DataType_setId(&int_type, type_id); - return(int_type); -} - -//-------------------------------------------------------------------------- -// Function: Group::openIntType -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -IntType Group::openIntType( const H5std_string& name ) const -{ - return( openIntType( name.c_str()) ); -} - -//-------------------------------------------------------------------------- -// Function: Group::openFloatType -///\brief Opens the named floating-point datatype at this location. -///\param name - IN: Name of the floating-point datatype to open -///\return FloatType instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -FloatType Group::openFloatType( const char* name ) const -{ - // Call C function H5Topen2 to open the named datatype in this group, - // given either the file or group id - hid_t type_id = H5Topen2(getLocId(), name, H5P_DEFAULT); - - // If the datatype's opening failed, throw an exception - if( type_id < 0 ) - throwException("openFloatType", "H5Topen2 failed"); - - // No failure, create and return the FloatType object - FloatType float_type; - f_DataType_setId(&float_type, type_id); - return(float_type); -} - -//-------------------------------------------------------------------------- -// Function: Group::openFloatType -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -FloatType Group::openFloatType( const H5std_string& name ) const -{ - return( openFloatType( name.c_str()) ); -} - -//-------------------------------------------------------------------------- -// Function: Group::openStrType -///\brief Opens the named string datatype at this location. -///\param name - IN: Name of the string datatype to open -///\return StrType instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -StrType Group::openStrType( const char* name ) const -{ - // Call C function H5Topen2 to open the named datatype in this group, - // given either the file or group id - hid_t type_id = H5Topen2(getLocId(), name, H5P_DEFAULT); - - // If the datatype's opening failed, throw an exception - if( type_id < 0 ) - throwException("openStrType", "H5Topen2 failed"); - - // No failure, create and return the StrType object - StrType str_type; - f_DataType_setId(&str_type, type_id); - return(str_type); -} - -//-------------------------------------------------------------------------- -// Function: Group::openStrType -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -StrType Group::openStrType( const H5std_string& name ) const -{ - return( openStrType( name.c_str()) ); -} - -//-------------------------------------------------------------------------- -// Function: Group::openVarLenType -///\brief Opens the named variable length datatype at this location. -///\param name - IN: Name of the variable length datatype to open -///\return VarLenType instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - Jul, 2005 -//-------------------------------------------------------------------------- -VarLenType Group::openVarLenType( const char* name ) const -{ - // Call C function H5Topen2 to open the named datatype in this group, - // given either the file or group id - hid_t type_id = H5Topen2(getLocId(), name, H5P_DEFAULT); - - // If the datatype's opening failed, throw an exception - if( type_id < 0 ) - throwException("openVarLenType", "H5Topen2 failed"); - - // No failure, create and return the VarLenType object - VarLenType varlen_type; - f_DataType_setId(&varlen_type, type_id); - return(varlen_type); -} - -//-------------------------------------------------------------------------- -// Function: Group::openVarLenType -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - Jul, 2005 -//-------------------------------------------------------------------------- -VarLenType Group::openVarLenType( const H5std_string& name ) const -{ - return( openVarLenType( name.c_str()) ); -} - -#ifndef H5_NO_DEPRECATED_SYMBOLS -//-------------------------------------------------------------------------- -// Function: Group::iterateElems -///\brief Iterates a user's function over the entries of a group. -///\param name - IN : Name of group to iterate over -///\param idx - IN/OUT: Starting (IN) and ending (OUT) entry indices -///\param op - IN : User's function to operate on each entry -///\param op_data - IN/OUT: Data associated with the operation -///\return The return value of the first operator that returns non-zero, -/// or zero if all members were processed with no operator -/// returning non-zero. -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -int Group::iterateElems( const char* name, int *idx, H5G_iterate_t op , void* op_data ) -{ - int ret_value = H5Giterate(getId(), name, idx, op, op_data ); - if( ret_value < 0 ) - { - throwException("iterateElems", "H5Giterate failed"); - } - return( ret_value ); -} - -//-------------------------------------------------------------------------- -// Function: Group::iterateElems -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -int Group::iterateElems( const H5std_string& name, int *idx, H5G_iterate_t op , void* op_data ) -{ - return( iterateElems( name.c_str(), idx, op, op_data )); -} -#endif /* H5_NO_DEPRECATED_SYMBOLS */ - -//-------------------------------------------------------------------------- -// Function: Group::getNumObjs -///\brief Returns the number of objects in this group. -///\return Number of objects -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - January, 2003 -//-------------------------------------------------------------------------- -hsize_t Group::getNumObjs() const -{ - H5G_info_t ginfo; /* Group information */ - - herr_t ret_value = H5Gget_info(getLocId(), &ginfo); - if(ret_value < 0) - throwException("getNumObjs", "H5Gget_info failed"); - return (ginfo.nlinks); -} - -//-------------------------------------------------------------------------- -// Function: Group::getObjnameByIdx -///\brief Returns the name of an object in this group, given the -/// object's index. -///\param idx - IN: Transient index of the object -///\return Object name -///\exception H5::FileIException or H5::GroupIException -///\par Description -/// The value of idx can be any nonnegative number less than the -/// total number of objects in the group, which is returned by -/// the function \c Group::getNumObjs. Note that this is a -/// transient index; thus, an object may have a different index -/// each time the group is opened. -// Programmer Binh-Minh Ribler - Mar, 2005 -//-------------------------------------------------------------------------- -H5std_string Group::getObjnameByIdx(hsize_t idx) const -{ - // call H5Lget_name_by_idx with name as NULL to get its length - ssize_t name_len = H5Lget_name_by_idx(getLocId(), ".", H5_INDEX_NAME, H5_ITER_INC, idx, NULL, 0, H5P_DEFAULT); - if(name_len < 0) - throwException("getObjnameByIdx", "H5Lget_name_by_idx failed"); - - // now, allocate C buffer to get the name - char* name_C = new char[name_len+1]; - HDmemset(name_C, 0, name_len+1); // clear buffer - - name_len = H5Lget_name_by_idx(getLocId(), ".", H5_INDEX_NAME, H5_ITER_INC, idx, name_C, name_len+1, H5P_DEFAULT); - - if (name_len < 0) - { - delete []name_C; - throwException("getObjnameByIdx", "H5Lget_name_by_idx failed"); - } - - // clean up and return the string - H5std_string name = H5std_string(name_C); - delete []name_C; - return (name); -} - -//-------------------------------------------------------------------------- -// Function: Group::getObjnameByIdx -///\brief Retrieves the name of an object in this group, given the -/// object's index. -///\param idx - IN: Transient index of the object -///\param name - IN/OUT: Retrieved name of the object -///\param size - IN: Length to retrieve -///\return Actual size of the object name or 0, if object has no name -///\exception H5::FileIException or H5::GroupIException -///\par Description -/// The value of idx can be any nonnegative number less than the -/// total number of objects in the group, which is returned by -/// the function \c Group::getNumObjs. Note that this is a -/// transient index; thus, an object may have a different index -/// each time the group is opened. -// Programmer Binh-Minh Ribler - January, 2003 -//-------------------------------------------------------------------------- -ssize_t Group::getObjnameByIdx(hsize_t idx, char* name, size_t size) const -{ - ssize_t name_len = H5Lget_name_by_idx(getLocId(), ".", H5_INDEX_NAME, H5_ITER_INC, idx, name, size, H5P_DEFAULT); - if(name_len < 0) - throwException("getObjnameByIdx", "H5Lget_name_by_idx failed"); - - return (name_len); -} - -//-------------------------------------------------------------------------- -// Function: Group::getObjnameByIdx -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - January, 2003 -//-------------------------------------------------------------------------- -ssize_t Group::getObjnameByIdx(hsize_t idx, H5std_string& name, size_t size) const -{ - char* name_C = new char[size+1]; // temporary C-string for object name - HDmemset(name_C, 0, size+1); // clear buffer - - // call overloaded function to get the name - ssize_t name_len = getObjnameByIdx(idx, name_C, size+1); - if(name_len < 0) - { - delete []name_C; - throwException("getObjnameByIdx", "H5Lget_name_by_idx failed"); - } - - // clean up and return the string - name = H5std_string(name_C); - delete []name_C; - return (name_len); -} - -//-------------------------------------------------------------------------- -// Function: Group::childObjType -///\brief Returns the type of an object in this file/group, given the -/// object's name. -///\param objname - IN: Name of the object -///\return Object type, which can have the following values for group, -/// dataset, and named datatype -/// \li \c H5O_TYPE_GROUP -/// \li \c H5O_TYPE_DATASET -/// \li \c H5O_TYPE_NAMED_DATATYPE -/// Refer to the C API documentation for more details: -/// http://www.hdfgroup.org/HDF5/doc/RM/RM_H5O.html#Object-GetInfo -///\exception H5::FileIException or H5::GroupIException -/// Exception will be thrown when: -/// - an error returned by the C API -/// - object type is not one of the valid values above -// Programmer Binh-Minh Ribler - April, 2014 -//-------------------------------------------------------------------------- -H5O_type_t Group::childObjType(const char* objname) const -{ - H5O_info_t objinfo; - H5O_type_t objtype = H5O_TYPE_UNKNOWN; - - // Use C API to get information of the object - herr_t ret_value = H5Oget_info_by_name(getLocId(), objname, &objinfo, H5P_DEFAULT); - - // Throw exception if C API returns failure - if (ret_value < 0) - throwException("childObjType", "H5Oget_info_by_name failed"); - // Return a valid type or throw an exception for unknown type - else - switch (objinfo.type) - { - case H5O_TYPE_GROUP: - case H5O_TYPE_DATASET: - case H5O_TYPE_NAMED_DATATYPE: - objtype = objinfo.type; - break; - case H5O_TYPE_UNKNOWN: - case H5O_TYPE_NTYPES: - default: - throwException("childObjType", "Unknown type of object"); - } - return(objtype); -} - -//-------------------------------------------------------------------------- -// Function: Group::childObjType -///\brief This is an overloaded member function, provided for convenience. -/// It takes an \a H5std_string for the object's name. -///\brief Returns the type of an object in this group, given the -/// object's name. -///\param objname - IN: Name of the object (H5std_string&) -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - April, 2014 -//-------------------------------------------------------------------------- -H5O_type_t Group::childObjType(const H5std_string& objname) const -{ - // Use overloaded function - H5O_type_t objtype = childObjType(objname.c_str()); - return(objtype); -} - -//-------------------------------------------------------------------------- -// Function: Group::childObjType -///\brief Returns the type of an object in this file/group, given the -/// object's index and its type and order. -///\param index - IN: Position of the object -///\param index_type - IN: Type of the index, default to H5_INDEX_NAME -///\param order - IN: Traversing order, default to H5_ITER_INC -///\param objname - IN: Name of the object, default to "." -///\return Object type, which can have the following values for group, -/// dataset, and named datatype -/// \li \c H5O_TYPE_GROUP -/// \li \c H5O_TYPE_DATASET -/// \li \c H5O_TYPE_NAMED_DATATYPE -/// Refer to the C API documentation for more details: -/// http://www.hdfgroup.org/HDF5/doc/RM/RM_H5O.html#Object-GetInfo -///\exception H5::FileIException or H5::GroupIException -/// Exception will be thrown when: -/// - an error returned by the C API -/// - object type is not one of the valid values above -// Developer's Notes: -// - this overload uses H5Oget_info_by_idx instead of H5Oget_info_by_name -// like the previous childObjType() -// - index is the required argument so, first -// - objname is last because it's more likely the location is already -// fully specified -// - Leave property list out for now because C API is not using it, it -// can be added later when needed. -// Programmer Binh-Minh Ribler - April, 2014 -//-------------------------------------------------------------------------- -H5O_type_t Group::childObjType(hsize_t index, H5_index_t index_type, H5_iter_order_t order, const char* objname) const -{ - herr_t ret_value; - H5O_info_t objinfo; - H5O_type_t objtype = H5O_TYPE_UNKNOWN; - - // Use C API to get information of the object - ret_value = H5Oget_info_by_idx(getLocId(), objname, index_type, order, index, &objinfo, H5P_DEFAULT); - - // Throw exception if C API returns failure - if (ret_value < 0) - throwException("childObjType", "H5Oget_info_by_idx failed"); - // Return a valid type or throw an exception for unknown type - else - switch (objinfo.type) - { - case H5O_TYPE_GROUP: - case H5O_TYPE_DATASET: - case H5O_TYPE_NAMED_DATATYPE: - objtype = objinfo.type; - break; - case H5O_TYPE_UNKNOWN: - case H5O_TYPE_NTYPES: - default: - throwException("childObjType", "Unknown type of object"); - } - return(objtype); -} - -//-------------------------------------------------------------------------- -// Function: Group::childObjVersion -///\brief Returns the object header version of an object in this file/group, -/// given the object's name. -///\param objname - IN: Name of the object -///\return Object version, which can have the following values: -/// \li \c H5O_VERSION_1 -/// \li \c H5O_VERSION_2 -///\exception H5::FileIException or H5::GroupIException -/// Exception will be thrown when: -/// - an error returned by the C API -/// - version number is not one of the valid values above -// Programmer Binh-Minh Ribler - April, 2014 -//-------------------------------------------------------------------------- -unsigned Group::childObjVersion(const char* objname) const -{ - H5O_info_t objinfo; - unsigned version = 0; - - // Use C API to get information of the object - herr_t ret_value = H5Oget_info_by_name(getLocId(), objname, &objinfo, H5P_DEFAULT); - - // Throw exception if C API returns failure - if (ret_value < 0) - throwException("childObjVersion", "H5Oget_info_by_name failed"); - // Return a valid version or throw an exception for invalid value - else - { - version = objinfo.hdr.version; - if (version != H5O_VERSION_1 && version != H5O_VERSION_2) - throwException("childObjVersion", "Invalid version for object"); - } - return(version); -} - -//-------------------------------------------------------------------------- -// Function: Group::childObjVersion -///\brief This is an overloaded member function, provided for convenience. -/// It takes an \a H5std_string for the object's name. -///\brief Returns the type of an object in this group, given the -/// object's name. -///\param objname - IN: Name of the object (H5std_string&) -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - April, 2014 -//-------------------------------------------------------------------------- -unsigned Group::childObjVersion(const H5std_string& objname) const -{ - // Use overloaded function - unsigned version = childObjVersion(objname.c_str()); - return(version); -} - -#ifndef H5_NO_DEPRECATED_SYMBOLS -#ifndef DOXYGEN_SHOULD_SKIP_THIS -//-------------------------------------------------------------------------- -// Function: Group::getObjTypeByIdx -///\brief Returns the type of an object in this group, given the -/// object's index. -///\param idx - IN: Transient index of the object -///\return Object type -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - January, 2003 -//-------------------------------------------------------------------------- -H5G_obj_t Group::getObjTypeByIdx(hsize_t idx) const -{ - H5G_obj_t obj_type = H5Gget_objtype_by_idx(getLocId(), idx); - if (obj_type == H5G_UNKNOWN) - throwException("getObjTypeByIdx", "H5Gget_objtype_by_idx failed"); - - return (obj_type); -} - -//-------------------------------------------------------------------------- -// Function: Group::getObjTypeByIdx -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function because it also provides -/// the returned object type in text (char*) -///\param idx - IN: Transient index of the object -///\param type_name - OUT: Object type in text -///\return Object type -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - May, 2010 -// Modification -// Modified to use the other function. -BMR, 2016/03/07 -//-------------------------------------------------------------------------- -H5G_obj_t Group::getObjTypeByIdx(hsize_t idx, char* type_name) const -{ - H5std_string stype_name(type_name); - return(getObjTypeByIdx(idx, stype_name)); -} -//-------------------------------------------------------------------------- -// Function: Group::getObjTypeByIdx -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function because it also provides -/// the returned object type in text (H5std_string&) -///\param idx - IN: Transient index of the object -///\param type_name - OUT: Object type in text -///\return Object type -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - January, 2003 -//-------------------------------------------------------------------------- -H5G_obj_t Group::getObjTypeByIdx(hsize_t idx, H5std_string& type_name) const -{ - H5G_obj_t obj_type = H5Gget_objtype_by_idx(getLocId(), idx); - switch (obj_type) - { - case H5G_LINK: type_name = H5std_string("symbolic link"); break; - case H5G_GROUP: type_name = H5std_string("group"); break; - case H5G_DATASET: type_name = H5std_string("dataset"); break; - case H5G_TYPE: type_name = H5std_string("datatype"); break; - case H5G_UNKNOWN: - case H5G_UDLINK: - case H5G_RESERVED_5: - case H5G_RESERVED_6: - case H5G_RESERVED_7: - default: - throwException("getObjTypeByIdx", "H5Gget_objtype_by_idx failed"); - } - return (obj_type); -} - -#endif // DOXYGEN_SHOULD_SKIP_THIS -#endif /* H5_NO_DEPRECATED_SYMBOLS */ - -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -//-------------------------------------------------------------------------- -// Function: f_DataType_setId - friend -// Purpose: This function is friend to class H5::DataType so that it -// can set DataType::id in order to work around a problem -// described in the JIRA issue HDFFV-7947. -// Applications shouldn't need to use it. -// param dtype - IN/OUT: DataType object to be changed -// param new_id - IN: New id to set -// Programmer Binh-Minh Ribler - 2015 -//-------------------------------------------------------------------------- -void f_DataType_setId(DataType* dtype, hid_t new_id) -{ - dtype->p_setId(new_id); -} - -//-------------------------------------------------------------------------- -// Function: f_DataSet_setId - friend -// Purpose: This function is friend to class H5::DataSet so that it -// can set DataSet::id in order to work around a problem -// described in the JIRA issue HDFFV-7947. -// Applications shouldn't need to use it. -// param dset - IN/OUT: DataSet object to be changed -// param new_id - IN: New id to set -// Programmer Binh-Minh Ribler - 2015 -//-------------------------------------------------------------------------- -void f_DataSet_setId(DataSet* dset, hid_t new_id) -{ - dset->p_setId(new_id); -} - -#endif // DOXYGEN_SHOULD_SKIP_THIS - #ifndef H5_NO_NAMESPACE } // end namespace #endif diff --git a/c++/src/H5Group.h b/c++/src/H5Group.h index e8527d8..f1dfce1 100644 --- a/c++/src/H5Group.h +++ b/c++/src/H5Group.h @@ -47,126 +47,6 @@ class H5_DLLCPP Group : public H5Object { Group(const char* name); Group(const H5std_string& name); -// From CommonFG - // Creates a new group at this location which can be a file - // or another group. - Group createGroup(const char* name, size_t size_hint = 0) const; - Group createGroup(const H5std_string& name, size_t size_hint = 0) const; - - // Opens an existing group in a location which can be a file - // or another group. - Group openGroup(const char* name) const; - Group openGroup(const H5std_string& name) const; - - // Creates a new dataset in this group. - DataSet createDataSet(const char* name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist = DSetCreatPropList::DEFAULT) const; - DataSet createDataSet(const H5std_string& name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist = DSetCreatPropList::DEFAULT) const; - - // Opens an existing dataset at this location. - DataSet openDataSet(const char* name) const; - DataSet openDataSet(const H5std_string& name) const; - - // Returns the value of a symbolic link. - H5std_string getLinkval(const char* link_name, size_t size=0) const; - H5std_string getLinkval(const H5std_string& link_name, size_t size=0) const; - - // Returns the number of objects in this group. - hsize_t getNumObjs() const; - - // Retrieves the name of an object in this group, given the - // object's index. - H5std_string getObjnameByIdx(hsize_t idx) const; - ssize_t getObjnameByIdx(hsize_t idx, char* name, size_t size) const; - ssize_t getObjnameByIdx(hsize_t idx, H5std_string& name, size_t size) const; - - // Retrieves the type of an object in this file or group, given the - // object's name - H5O_type_t childObjType(const H5std_string& objname) const; - H5O_type_t childObjType(const char* objname) const; - H5O_type_t childObjType(hsize_t index, H5_index_t index_type=H5_INDEX_NAME, H5_iter_order_t order=H5_ITER_INC, const char* objname=".") const; - - // Returns the object header version of an object in this file or group, - // given the object's name. - unsigned childObjVersion(const char* objname) const; - unsigned childObjVersion(const H5std_string& objname) const; - -#ifndef H5_NO_DEPRECATED_SYMBOLS - // Returns the type of an object in this group, given the - // object's index. - H5G_obj_t getObjTypeByIdx(hsize_t idx) const; - H5G_obj_t getObjTypeByIdx(hsize_t idx, char* type_name) const; - H5G_obj_t getObjTypeByIdx(hsize_t idx, H5std_string& type_name) const; - - // Returns information about an HDF5 object, given by its name, - // at this location. - void getObjinfo(const char* name, hbool_t follow_link, H5G_stat_t& statbuf) const; - void getObjinfo(const H5std_string& name, hbool_t follow_link, H5G_stat_t& statbuf) const; - void getObjinfo(const char* name, H5G_stat_t& statbuf) const; - void getObjinfo(const H5std_string& name, H5G_stat_t& statbuf) const; - - // Iterates over the elements of this group - not implemented in - // C++ style yet. - int iterateElems(const char* name, int *idx, H5G_iterate_t op, void *op_data); - int iterateElems(const H5std_string& name, int *idx, H5G_iterate_t op, void *op_data); -#endif /* H5_NO_DEPRECATED_SYMBOLS */ - - // Creates a link of the specified type from new_name to current_name; - // both names are interpreted relative to the specified location id. - void link(H5L_type_t link_type, const char* curr_name, const char* new_name) const; - void link(H5L_type_t link_type, const H5std_string& curr_name, const H5std_string& new_name) const; - - // Removes the specified name at this location. - void unlink(const char* name) const; - void unlink(const H5std_string& name) const; - - // Mounts the file 'child' onto this location. - void mount(const char* name, const H5File& child, const PropList& plist) const; - //void mount(const char* name, H5File& child, PropList& plist) const; // removed from 1.8.18 and 1.10.1 - void mount(const H5std_string& name, const H5File& child, const PropList& plist) const; - //void mount(const H5std_string& name, H5File& child, PropList& plist) const; // removed from 1.8.18 and 1.10.1 - - // Unmounts the file named 'name' from this parent location. - void unmount(const char* name) const; - void unmount(const H5std_string& name) const; - - // Renames an object at this location. - void move(const char* src, const char* dst) const; - void move(const H5std_string& src, const H5std_string& dst) const; - - // Opens a generic named datatype in this location. - DataType openDataType(const char* name) const; - DataType openDataType(const H5std_string& name) const; - - // Opens a named array datatype in this location. - ArrayType openArrayType(const char* name) const; - ArrayType openArrayType(const H5std_string& name) const; - - // Opens a named compound datatype in this location. - CompType openCompType(const char* name) const; - CompType openCompType(const H5std_string& name) const; - - // Opens a named enumeration datatype in this location. - EnumType openEnumType(const char* name) const; - EnumType openEnumType(const H5std_string& name) const; - - // Opens a named integer datatype in this location. - IntType openIntType(const char* name) const; - IntType openIntType(const H5std_string& name) const; - - // Opens a named floating-point datatype in this location. - FloatType openFloatType(const char* name) const; - FloatType openFloatType(const H5std_string& name) const; - - // Opens a named string datatype in this location. - StrType openStrType(const char* name) const; - StrType openStrType(const H5std_string& name) const; - - // Opens a named variable length datatype in this location. - VarLenType openVarLenType(const char* name) const; - VarLenType openVarLenType(const H5std_string& name) const; - -// end from CommonFG - // Close this group. virtual void close(); diff --git a/c++/src/H5IntType.cpp b/c++/src/H5IntType.cpp index 780e44d..f934d26 100644 --- a/c++/src/H5IntType.cpp +++ b/c++/src/H5IntType.cpp @@ -19,13 +19,13 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" +#include "H5DxferProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5DataType.h" #include "H5AbstractDs.h" -#include "H5DxferProp.h" #include "H5DataSpace.h" #include "H5AtomType.h" #include "H5IntType.h" diff --git a/c++/src/H5Library.cpp b/c++/src/H5Library.cpp index 30f68e2..09e0f7e 100644 --- a/c++/src/H5Library.cpp +++ b/c++/src/H5Library.cpp @@ -25,10 +25,10 @@ #include "H5FcreatProp.h" #include "H5OcreatProp.h" #include "H5DxferProp.h" +#include "H5DcreatProp.h" #include "H5Location.h" #include "H5Object.h" #include "H5DataType.h" -#include "H5DcreatProp.h" #include "H5AtomType.h" #include "H5PredType.h" #include "H5DataSpace.h" @@ -82,7 +82,7 @@ void H5Library::close() //-------------------------------------------------------------------------- void H5Library::dontAtExit() { - herr_t ret_value = H5dont_atexit(); + (void)H5dont_atexit(); } //-------------------------------------------------------------------------- diff --git a/c++/src/H5Location.cpp b/c++/src/H5Location.cpp index 4048d94..334389e 100644 --- a/c++/src/H5Location.cpp +++ b/c++/src/H5Location.cpp @@ -19,20 +19,20 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" +#include "H5FaccProp.h" +#include "H5FcreatProp.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" #include "H5DxferProp.h" -#include "H5FaccProp.h" -#include "H5FcreatProp.h" -#include "H5DataType.h" -#include "H5DataSpace.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5AbstractDs.h" -#include "H5Group.h" -#include "H5File.h" +#include "H5DataSpace.h" #include "H5DataSet.h" #include "H5Attribute.h" +#include "H5Group.h" +#include "H5File.h" +#include "H5Alltypes.h" #include "H5private.h" // for HDmemset #ifndef H5_NO_NAMESPACE @@ -658,43 +658,1318 @@ DataSpace H5Location::getRegion(void *ref, H5R_type_t ref_type) const } +// From H5CommonFG.cpp +// Notes with "***Updated" are new and for Group.cpp +// Original notes are from December 2000 +// +// There are a few comments that are common to most of the functions +// defined in this file so they are listed here. +// - getLocId is called by all functions, that call a C API, to get +// the location id, which can be either a file id or a group id. +// This function is pure virtual and it's up to H5File and Group +// to call the right getId() - although, as the structure of the +// library at this time, getId() is basically the IdComponent::getId() +// ***Updated: after the classes are rearranged (HDFFV-9920), functions +// in CommonFG are moved to Group, and they can call getId() +// instead of getLocId(). getLocId() is kept for backward +// compatibility on user applications. Aug 18, 2016 -BMR +// ***Updated: Moving to Group was a mistake, now to H5Location +// Aug 24, 2016 -BMR +// - when a failure returned by the C API, the functions will call +// throwException, which is a pure virtual function and is implemented +// by H5File to throw a FileIException and by Group to throw a +// GroupIException. +// ***Updated: after HDFFV-9920, methods in classes H5Location and Group +// use throwException to distinguish the FileIException and GroupIException. +// CommonFG is no longer used in the library. Aug 18, 2016 -BMR +// ***Note: following the changes in HDFFV-9920, some of the methods could +// throw different exceptions, but for backward-compatibility, throwException +// is kept in those methods as well. Sep 17, 2016 -BMR + //-------------------------------------------------------------------------- -// Function: H5Location destructor -///\brief Noop destructor. +// Function: H5Location::createGroup +///\brief Creates a new group at this location which can be a file +/// or another group. +///\param name - IN: Name of the group to create +///\param size_hint - IN: Indicates the number of bytes to reserve for +/// the names that will appear in the group +///\return Group instance +///\exception H5::FileIException or H5::GroupIException +///\par Description +/// The optional \a size_hint specifies how much file space to +/// reserve for storing the names that will appear in this new +/// group. If a non-positive value is provided for the \a size_hint +/// then a default size is chosen. // Programmer Binh-Minh Ribler - 2000 //-------------------------------------------------------------------------- -H5Location::~H5Location() {} +Group H5Location::createGroup( const char* name, size_t size_hint ) const +{ + // Group creation property list for size hint + hid_t gcpl_id = 0; + + // Set the local heap size hint + if (size_hint > 0) + { + // If the creation of the property list failed, throw an exception + if ((gcpl_id = H5Pcreate(H5P_GROUP_CREATE)) < 0) + throwException("createGroup", "H5Pcreate failed"); + + if (H5Pset_local_heap_size_hint(gcpl_id, size_hint) < 0) { + H5Pclose(gcpl_id); + throwException("createGroup", "H5Pset_local_heap_size_hint failed"); + } + } + + // Call C routine H5Gcreate2 to create the named group, giving the + // location id which can be a file id or a group id + hid_t group_id = H5Gcreate2(getId(), name, H5P_DEFAULT, gcpl_id, H5P_DEFAULT ); + + // Close the group creation property list, if necessary + if(gcpl_id > 0) + H5Pclose(gcpl_id); + + // If the creation of the group failed, throw an exception + if( group_id < 0 ) + throwException("createGroup", "H5Gcreate2 failed"); + + // No failure, create and return the Group object + Group group; + //group.p_setId(group_id); + H5Location *ptr = &group; + ptr->p_setId(group_id); + return( group ); +} //-------------------------------------------------------------------------- -// Function: f_Attribute_setId - friend -// Purpose: This function is friend to class H5::Attribute so that it -// can set Attribute::id in order to work around a problem -// described in the JIRA issue HDFFV-7947. -// Applications shouldn't need to use it. -// param attr - IN/OUT: Attribute object to be changed -// param new_id - IN: New id to set -// Programmer Binh-Minh Ribler - 2015 +// Function: H5Location::createGroup +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 //-------------------------------------------------------------------------- -void f_Attribute_setId(Attribute* attr, hid_t new_id) +Group H5Location::createGroup( const H5std_string& name, size_t size_hint ) const { - attr->p_setId(new_id); + return( createGroup( name.c_str(), size_hint )); } //-------------------------------------------------------------------------- -// Function: f_DataSpace_setId - friend -// Purpose: This function is friend to class H5::DataSpace so that it can -// can set DataSpace::id in order to work around a problem -// described in the JIRA issue HDFFV-7947. -// Applications shouldn't need to use it. -// param dspace - IN/OUT: DataSpace object to be changed -// param new_id - IN: New id to set -// Programmer Binh-Minh Ribler - 2015 +// Function: H5Location::openGroup +///\brief Opens an existing group in a location which can be a file +/// or another group. +///\param name - IN: Name of the group to open +///\return Group instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 //-------------------------------------------------------------------------- -void f_DataSpace_setId(DataSpace* dspace, hid_t new_id) +Group H5Location::openGroup( const char* name ) const { - dspace->p_setId(new_id); + // Call C routine H5Gopen2 to open the named group, giving the + // location id which can be a file id or a group id + hid_t group_id = H5Gopen2(getId(), name, H5P_DEFAULT ); + + // If the opening of the group failed, throw an exception + if( group_id < 0 ) + throwException("openGroup", "H5Gopen2 failed"); + + // No failure, create and return the Group object + Group group; + //group.p_setId(group_id); + H5Location *ptr = &group; + ptr->p_setId(group_id); + return( group ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openGroup +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +Group H5Location::openGroup( const H5std_string& name ) const +{ + return( openGroup( name.c_str() )); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::createDataSet +///\brief Creates a new dataset at this location. +///\param name - IN: Name of the dataset to create +///\param data_type - IN: Datatype of the dataset +///\param data_space - IN: Dataspace for the dataset +///\param create_plist - IN: Creation properly list for the dataset +///\return DataSet instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +DataSet H5Location::createDataSet( const char* name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist ) const +{ + // Obtain identifiers for C API + hid_t type_id = data_type.getId(); + hid_t space_id = data_space.getId(); + hid_t create_plist_id = create_plist.getId(); + + // Call C routine H5Dcreate2 to create the named dataset + hid_t dataset_id = H5Dcreate2(getId(), name, type_id, space_id, H5P_DEFAULT, create_plist_id, H5P_DEFAULT ); + + // If the creation of the dataset failed, throw an exception + if( dataset_id < 0 ) + throwException("createDataSet", "H5Dcreate2 failed"); + + // No failure, create and return the DataSet object + DataSet dataset; + f_DataSet_setId(&dataset, dataset_id); + return( dataset ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::createDataSet +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +DataSet H5Location::createDataSet( const H5std_string& name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist ) const +{ + return( createDataSet( name.c_str(), data_type, data_space, create_plist )); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openDataSet +///\brief Opens an existing dataset at this location. +///\param name - IN: Name of the dataset to open +///\return DataSet instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +DataSet H5Location::openDataSet( const char* name ) const +{ + // Call C function H5Dopen2 to open the specified dataset, giving + // the location id and the dataset's name + hid_t dataset_id = H5Dopen2(getId(), name, H5P_DEFAULT ); + + // If the dataset's opening failed, throw an exception + if(dataset_id < 0) + throwException("openDataSet", "H5Dopen2 failed"); + + // No failure, create and return the DataSet object + DataSet dataset; + f_DataSet_setId(&dataset, dataset_id); + return( dataset ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openDataSet +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +DataSet H5Location::openDataSet( const H5std_string& name ) const +{ + return( openDataSet( name.c_str() )); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::link +///\brief Creates a link of the specified type from \a new_name to +/// \a curr_name. +///\param link_type - IN: Link type; possible values are +/// \li \c H5G_LINK_HARD +/// \li \c H5G_LINK_SOFT +///\param curr_name - IN: Name of the existing object if link is a hard +/// link; can be anything for the soft link +///\param new_name - IN: New name for the object +///\exception H5::FileIException or H5::GroupIException +///\par Description +/// Note that both names are interpreted relative to the +/// specified location. +/// For information on creating hard link and soft link, please +/// refer to the C layer Reference Manual at: +/// http://hdfgroup.org/HDF5/doc/RM/RM_H5L.html#Link-CreateHard and +/// http://hdfgroup.org/HDF5/doc/RM/RM_H5L.html#Link-CreateSoft +// Programmer Binh-Minh Ribler - 2000 +// Modification +// 2007: QAK modified to use H5L APIs - BMR +//-------------------------------------------------------------------------- +void H5Location::link( H5L_type_t link_type, const char* curr_name, const char* new_name ) const +{ + herr_t ret_value = -1; + + switch(link_type) { + case H5L_TYPE_HARD: + ret_value = H5Lcreate_hard(getId(), curr_name, H5L_SAME_LOC, new_name, H5P_DEFAULT, H5P_DEFAULT ); + break; + + case H5L_TYPE_SOFT: + ret_value = H5Lcreate_soft( curr_name,getId(), new_name, H5P_DEFAULT, H5P_DEFAULT ); + break; + + case H5L_TYPE_ERROR: + case H5L_TYPE_EXTERNAL: + case H5L_TYPE_MAX: + default: + throwException("link", "unknown link type"); + break; + } /* end switch */ + + if( ret_value < 0 ) + throwException("link", "creating link failed"); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::link +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a curr_name and \a new_name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +void H5Location::link( H5L_type_t link_type, const H5std_string& curr_name, const H5std_string& new_name ) const +{ + link( link_type, curr_name.c_str(), new_name.c_str() ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::unlink +///\brief Removes the specified name at this location. +///\param name - IN: Name of the object to be removed +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +// Modification +// 2007: QAK modified to use H5L APIs - BMR +//-------------------------------------------------------------------------- +void H5Location::unlink( const char* name ) const +{ + herr_t ret_value = H5Ldelete(getId(), name, H5P_DEFAULT ); + if( ret_value < 0 ) + throwException("unlink", "H5Ldelete failed"); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::unlink +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +void H5Location::unlink( const H5std_string& name ) const +{ + unlink( name.c_str() ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::move +///\brief Renames an object at this location. +///\param src - IN: Object's original name +///\param dst - IN: Object's new name +///\exception H5::FileIException or H5::GroupIException +///\note +/// Exercise care in moving groups as it is possible to render +/// data in a file inaccessible with H5Location::move. Please refer +/// to the Group Interface in the HDF5 User's Guide for details at: +/// https://www.hdfgroup.org/HDF5/doc/UG/HDF5_Users_Guide-Responsive%20HTML5/index.html#t=HDF5_Users_Guide%2FGroups%2FHDF5_Groups.htm +// Programmer Binh-Minh Ribler - 2000 +// Modification +// 2007: QAK modified to use H5L APIs - BMR +//-------------------------------------------------------------------------- +void H5Location::move( const char* src, const char* dst ) const +{ + herr_t ret_value = H5Lmove(getId(), src, H5L_SAME_LOC, dst, H5P_DEFAULT, H5P_DEFAULT ); + if( ret_value < 0 ) + throwException("move", "H5Lmove failed"); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::move +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a src and \a dst. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +void H5Location::move( const H5std_string& src, const H5std_string& dst ) const +{ + move( src.c_str(), dst.c_str() ); +} + +#ifndef H5_NO_DEPRECATED_SYMBOLS +//-------------------------------------------------------------------------- +// Function: H5Location::getObjinfo +///\brief Returns information about an object. +///\param name - IN: Name of the object +///\param follow_link - IN: Link flag +///\param statbuf - OUT: Buffer to return information about the object +///\exception H5::FileIException or H5::GroupIException +///\par Description +/// For more information, please refer to the C layer Reference +/// Manual at: +/// http://www.hdfgroup.org/HDF5/doc/RM/RM_H5G.html#Group-GetObjinfo +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +void H5Location::getObjinfo( const char* name, hbool_t follow_link, H5G_stat_t& statbuf ) const +{ + herr_t ret_value = H5Gget_objinfo(getId(), name, follow_link, &statbuf ); + if( ret_value < 0 ) + throwException("getObjinfo", "H5Gget_objinfo failed"); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::getObjinfo +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +void H5Location::getObjinfo( const H5std_string& name, hbool_t follow_link, H5G_stat_t& statbuf ) const +{ + getObjinfo( name.c_str(), follow_link, statbuf ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::getObjinfo +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above functions in that it doesn't have +/// the paramemter \a follow_link. +// Programmer Binh-Minh Ribler - Nov, 2005 +// Note: need to modify to use H5Oget_info and H5Lget_info - BMR +//-------------------------------------------------------------------------- +void H5Location::getObjinfo( const char* name, H5G_stat_t& statbuf ) const +{ + herr_t ret_value = H5Gget_objinfo(getId(), name, 0, &statbuf ); + if( ret_value < 0 ) + throwException("getObjinfo", "H5Gget_objinfo failed"); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::getObjinfo +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - Nov, 2005 +//-------------------------------------------------------------------------- +void H5Location::getObjinfo( const H5std_string& name, H5G_stat_t& statbuf ) const +{ + getObjinfo( name.c_str(), statbuf ); +} +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + +//-------------------------------------------------------------------------- +// Function: H5Location::getLinkval +///\brief Returns the name of the object that the symbolic link points to. +///\param name - IN: Symbolic link to the object +///\param size - IN: Maximum number of characters of value to be returned +///\return Name of the object +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +H5std_string H5Location::getLinkval( const char* name, size_t size ) const +{ + H5L_info_t linkinfo; + char *value_C; // value in C string + size_t val_size = size; + H5std_string value = ""; + herr_t ret_value; + + // if user doesn't provide buffer size, determine it + if (size == 0) + { + ret_value = H5Lget_info(getId(), name, &linkinfo, H5P_DEFAULT); + if( ret_value < 0 ) + throwException("getLinkval", "H5Lget_info to find buffer size failed"); + + val_size = linkinfo.u.val_size; + } + + // if link has value, retrieve the value, otherwise, return null string + if (val_size > 0) + { + value_C = new char[val_size+1]; // temporary C-string for C API + HDmemset(value_C, 0, val_size+1); // clear buffer + + ret_value = H5Lget_val(getId(), name, value_C, val_size, H5P_DEFAULT); + if( ret_value < 0 ) + { + delete []value_C; + throwException("getLinkval", "H5Lget_val failed"); + } + + value = H5std_string(value_C); + delete []value_C; + } + return(value); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::getLinkval +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +H5std_string H5Location::getLinkval( const H5std_string& name, size_t size ) const +{ + return( getLinkval( name.c_str(), size )); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::mount +///\brief Mounts the file \a child onto this group. +///\param name - IN: Name of the group +///\param child - IN: File to mount +///\param plist - IN: Property list to use +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2014 (original 2000) +//-------------------------------------------------------------------------- +void H5Location::mount(const char* name, const H5File& child, const PropList& plist ) const +{ + // Obtain identifiers for C API + hid_t plist_id = plist.getId(); + hid_t child_id = child.getId(); + + // Call C routine H5Fmount to do the mouting + herr_t ret_value = H5Fmount(getId(), name, child_id, plist_id ); + + // Raise exception if H5Fmount returns negative value + if( ret_value < 0 ) + throwException("mount", "H5Fmount failed"); } +//-------------------------------------------------------------------------- +// Function: H5Location::mount +// Purpose This is an overloaded member function, kept for backward +// compatibility. It differs from the above function in that it +// misses const's. This wrapper will be removed in future release. +// Param name - IN: Name of the group +// Param child - IN: File to mount +// Param plist - IN: Property list to use +// Exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +// Modification +// Modified to call its replacement. -BMR, 2014/04/16 +// Removed from documentation. -BMR, 2016/03/07 1.8.17 and 1.10.0 +// Removed from code. -BMR, 2016/08/11 1.8.18 and 1.10.1 +//-------------------------------------------------------------------------- +//void H5Location::mount(const char* name, H5File& child, PropList& plist) const +//{ +// mount(name, child, plist); +//} + +//-------------------------------------------------------------------------- +// Function: H5Location::mount +///\brief This is an overloaded member function, provided for convenience. +/// It takes an \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +void H5Location::mount(const H5std_string& name, const H5File& child, const PropList& plist) const +{ + mount(name.c_str(), child, plist); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::mount +// Purpose This is an overloaded member function, kept for backward +// compatibility. It differs from the above function in that it +// misses const's. This wrapper will be removed in future release. +// Programmer Binh-Minh Ribler - 2014 +// Modification +// Modified to call its replacement. -BMR, 2014/04/16 +// Removed from documentation. -BMR, 2016/03/07 1.8.17 and 1.10.0 +// Removed from code. -BMR, 2016/08/11 1.8.18 and 1.10.1 +//-------------------------------------------------------------------------- +//void H5Location::mount(const H5std_string& name, H5File& child, PropList& plist) const +//{ +// mount(name.c_str(), child, plist); +//} + +//-------------------------------------------------------------------------- +// Function: H5Location::unmount +///\brief Unmounts the specified file. +///\param name - IN: Name of the file to unmount +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +void H5Location::unmount( const char* name ) const +{ + // Call C routine H5Fmount to do the mouting + herr_t ret_value = H5Funmount(getId(), name ); + + // Raise exception if H5Funmount returns negative value + if( ret_value < 0 ) + throwException("unmount", "H5Funmount failed"); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::unmount +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +void H5Location::unmount( const H5std_string& name ) const +{ + unmount( name.c_str() ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openDataType +///\brief Opens the named generic datatype at this location. +///\param name - IN: Name of the datatype to open +///\return DataType instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +DataType H5Location::openDataType( const char* name ) const +{ + // Call C function H5Topen2 to open the named datatype in this group, + // given either the file or group id + hid_t type_id = H5Topen2(getId(), name, H5P_DEFAULT); + + // If the datatype's opening failed, throw an exception + if( type_id < 0 ) + throwException("openDataType", "H5Topen2 failed"); + + // No failure, create and return the DataType object + DataType data_type; + f_DataType_setId(&data_type, type_id); + return(data_type); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openDataType +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +DataType H5Location::openDataType( const H5std_string& name ) const +{ + return( openDataType( name.c_str()) ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openArrayType +///\brief Opens the named array datatype at this location. +///\param name - IN: Name of the array datatype to open +///\return ArrayType instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - Jul, 2005 +//-------------------------------------------------------------------------- +ArrayType H5Location::openArrayType( const char* name ) const +{ + // Call C function H5Topen2 to open the named datatype in this group, + // given either the file or group id + hid_t type_id = H5Topen2(getId(), name, H5P_DEFAULT); + + // If the datatype's opening failed, throw an exception + if( type_id < 0 ) + throwException("openArrayType", "H5Topen2 failed"); + + // No failure, create and return the ArrayType object + ArrayType array_type; + f_DataType_setId(&array_type, type_id); + return(array_type); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openArrayType +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - Jul, 2005 +//-------------------------------------------------------------------------- +ArrayType H5Location::openArrayType( const H5std_string& name ) const +{ + return( openArrayType( name.c_str()) ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openCompType +///\brief Opens the named compound datatype at this location. +///\param name - IN: Name of the compound datatype to open +///\return CompType instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +CompType H5Location::openCompType( const char* name ) const +{ + // Call C function H5Topen2 to open the named datatype in this group, + // given either the file or group id + hid_t type_id = H5Topen2(getId(), name, H5P_DEFAULT); + + // If the datatype's opening failed, throw an exception + if( type_id < 0 ) + throwException("openCompType", "H5Topen2 failed"); + + // No failure, create and return the CompType object + CompType comp_type; + f_DataType_setId(&comp_type, type_id); + return(comp_type); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openCompType +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +CompType H5Location::openCompType( const H5std_string& name ) const +{ + return( openCompType( name.c_str()) ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openEnumType +///\brief Opens the named enumeration datatype at this location. +///\param name - IN: Name of the enumeration datatype to open +///\return EnumType instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +EnumType H5Location::openEnumType( const char* name ) const +{ + // Call C function H5Topen2 to open the named datatype in this group, + // given either the file or group id + hid_t type_id = H5Topen2(getId(), name, H5P_DEFAULT); + + // If the datatype's opening failed, throw an exception + if( type_id < 0 ) + throwException("openEnumType", "H5Topen2 failed"); + + // No failure, create and return the EnumType object + EnumType enum_type; + f_DataType_setId(&enum_type, type_id); + return(enum_type); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openEnumType +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +EnumType H5Location::openEnumType( const H5std_string& name ) const +{ + return( openEnumType( name.c_str()) ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openIntType +///\brief Opens the named integer datatype at this location. +///\param name - IN: Name of the integer datatype to open +///\return IntType instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +IntType H5Location::openIntType( const char* name ) const +{ + // Call C function H5Topen2 to open the named datatype in this group, + // given either the file or group id + hid_t type_id = H5Topen2(getId(), name, H5P_DEFAULT); + + // If the datatype's opening failed, throw an exception + if( type_id < 0 ) + throwException("openIntType", "H5Topen2 failed"); + + // No failure, create and return the IntType object + IntType int_type; + f_DataType_setId(&int_type, type_id); + return(int_type); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openIntType +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +IntType H5Location::openIntType( const H5std_string& name ) const +{ + return( openIntType( name.c_str()) ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openFloatType +///\brief Opens the named floating-point datatype at this location. +///\param name - IN: Name of the floating-point datatype to open +///\return FloatType instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +FloatType H5Location::openFloatType( const char* name ) const +{ + // Call C function H5Topen2 to open the named datatype in this group, + // given either the file or group id + hid_t type_id = H5Topen2(getId(), name, H5P_DEFAULT); + + // If the datatype's opening failed, throw an exception + if( type_id < 0 ) + throwException("openFloatType", "H5Topen2 failed"); + + // No failure, create and return the FloatType object + FloatType float_type; + f_DataType_setId(&float_type, type_id); + return(float_type); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openFloatType +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +FloatType H5Location::openFloatType( const H5std_string& name ) const +{ + return( openFloatType( name.c_str()) ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openStrType +///\brief Opens the named string datatype at this location. +///\param name - IN: Name of the string datatype to open +///\return StrType instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +StrType H5Location::openStrType( const char* name ) const +{ + // Call C function H5Topen2 to open the named datatype in this group, + // given either the file or group id + hid_t type_id = H5Topen2(getId(), name, H5P_DEFAULT); + + // If the datatype's opening failed, throw an exception + if( type_id < 0 ) + throwException("openStrType", "H5Topen2 failed"); + + // No failure, create and return the StrType object + StrType str_type; + f_DataType_setId(&str_type, type_id); + return(str_type); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openStrType +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +StrType H5Location::openStrType( const H5std_string& name ) const +{ + return( openStrType( name.c_str()) ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openVarLenType +///\brief Opens the named variable length datatype at this location. +///\param name - IN: Name of the variable length datatype to open +///\return VarLenType instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - Jul, 2005 +//-------------------------------------------------------------------------- +VarLenType H5Location::openVarLenType( const char* name ) const +{ + // Call C function H5Topen2 to open the named datatype in this group, + // given either the file or group id + hid_t type_id = H5Topen2(getId(), name, H5P_DEFAULT); + + // If the datatype's opening failed, throw an exception + if( type_id < 0 ) + throwException("openVarLenType", "H5Topen2 failed"); + + // No failure, create and return the VarLenType object + VarLenType varlen_type; + f_DataType_setId(&varlen_type, type_id); + return(varlen_type); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openVarLenType +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - Jul, 2005 +//-------------------------------------------------------------------------- +VarLenType H5Location::openVarLenType( const H5std_string& name ) const +{ + return( openVarLenType( name.c_str()) ); +} + +#ifndef H5_NO_DEPRECATED_SYMBOLS +//-------------------------------------------------------------------------- +// Function: H5Location::iterateElems +///\brief Iterates a user's function over the entries of a group. +///\param name - IN : Name of group to iterate over +///\param idx - IN/OUT: Starting (IN) and ending (OUT) entry indices +///\param op - IN : User's function to operate on each entry +///\param op_data - IN/OUT: Data associated with the operation +///\return The return value of the first operator that returns non-zero, +/// or zero if all members were processed with no operator +/// returning non-zero. +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +int H5Location::iterateElems( const char* name, int *idx, H5G_iterate_t op , void* op_data ) +{ + int ret_value = H5Giterate(getId(), name, idx, op, op_data ); + if( ret_value < 0 ) + { + throwException("iterateElems", "H5Giterate failed"); + } + return( ret_value ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::iterateElems +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +int H5Location::iterateElems( const H5std_string& name, int *idx, H5G_iterate_t op , void* op_data ) +{ + return( iterateElems( name.c_str(), idx, op, op_data )); +} +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + +//-------------------------------------------------------------------------- +// Function: H5Location::getNumObjs +///\brief Returns the number of objects in this group. +///\return Number of objects +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - January, 2003 +//-------------------------------------------------------------------------- +hsize_t H5Location::getNumObjs() const +{ + H5G_info_t ginfo; /* Group information */ + + herr_t ret_value = H5Gget_info(getId(), &ginfo); + if(ret_value < 0) + throwException("getNumObjs", "H5Gget_info failed"); + return (ginfo.nlinks); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::getObjnameByIdx +///\brief Returns the name of an object in this group, given the +/// object's index. +///\param idx - IN: Transient index of the object +///\return Object name +///\exception H5::FileIException or H5::GroupIException +///\par Description +/// The value of idx can be any nonnegative number less than the +/// total number of objects in the group, which is returned by +/// the function \c H5Location::getNumObjs. Note that this is a +/// transient index; thus, an object may have a different index +/// each time the group is opened. +// Programmer Binh-Minh Ribler - Mar, 2005 +//-------------------------------------------------------------------------- +H5std_string H5Location::getObjnameByIdx(hsize_t idx) const +{ + // call H5Lget_name_by_idx with name as NULL to get its length + ssize_t name_len = H5Lget_name_by_idx(getId(), ".", H5_INDEX_NAME, H5_ITER_INC, idx, NULL, 0, H5P_DEFAULT); + if(name_len < 0) + throwException("getObjnameByIdx", "H5Lget_name_by_idx failed"); + + // now, allocate C buffer to get the name + char* name_C = new char[name_len+1]; + HDmemset(name_C, 0, name_len+1); // clear buffer + + name_len = H5Lget_name_by_idx(getId(), ".", H5_INDEX_NAME, H5_ITER_INC, idx, name_C, name_len+1, H5P_DEFAULT); + + if (name_len < 0) + { + delete []name_C; + throwException("getObjnameByIdx", "H5Lget_name_by_idx failed"); + } + + // clean up and return the string + H5std_string name = H5std_string(name_C); + delete []name_C; + return (name); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::getObjnameByIdx +///\brief Retrieves the name of an object in this group, given the +/// object's index. +///\param idx - IN: Transient index of the object +///\param name - IN/OUT: Retrieved name of the object +///\param size - IN: Length to retrieve +///\return Actual size of the object name or 0, if object has no name +///\exception H5::FileIException or H5::GroupIException +///\par Description +/// The value of idx can be any nonnegative number less than the +/// total number of objects in the group, which is returned by +/// the function \c H5Location::getNumObjs. Note that this is a +/// transient index; thus, an object may have a different index +/// each time the group is opened. +// Programmer Binh-Minh Ribler - January, 2003 +//-------------------------------------------------------------------------- +ssize_t H5Location::getObjnameByIdx(hsize_t idx, char* name, size_t size) const +{ + ssize_t name_len = H5Lget_name_by_idx(getId(), ".", H5_INDEX_NAME, H5_ITER_INC, idx, name, size, H5P_DEFAULT); + if(name_len < 0) + throwException("getObjnameByIdx", "H5Lget_name_by_idx failed"); + + return (name_len); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::getObjnameByIdx +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - January, 2003 +//-------------------------------------------------------------------------- +ssize_t H5Location::getObjnameByIdx(hsize_t idx, H5std_string& name, size_t size) const +{ + char* name_C = new char[size+1]; // temporary C-string for object name + HDmemset(name_C, 0, size+1); // clear buffer + + // call overloaded function to get the name + ssize_t name_len = getObjnameByIdx(idx, name_C, size+1); + if(name_len < 0) + { + delete []name_C; + throwException("getObjnameByIdx", "H5Lget_name_by_idx failed"); + } + + // clean up and return the string + name = H5std_string(name_C); + delete []name_C; + return (name_len); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::childObjType +///\brief Returns the type of an object in this file/group, given the +/// object's name. +///\param objname - IN: Name of the object +///\return Object type, which can have the following values for group, +/// dataset, and named datatype +/// \li \c H5O_TYPE_GROUP +/// \li \c H5O_TYPE_DATASET +/// \li \c H5O_TYPE_NAMED_DATATYPE +/// Refer to the C API documentation for more details: +/// http://www.hdfgroup.org/HDF5/doc/RM/RM_H5O.html#Object-GetInfo +///\exception H5::FileIException or H5::GroupIException +/// Exception will be thrown when: +/// - an error returned by the C API +/// - object type is not one of the valid values above +// Programmer Binh-Minh Ribler - April, 2014 +//-------------------------------------------------------------------------- +H5O_type_t H5Location::childObjType(const char* objname) const +{ + H5O_info_t objinfo; + H5O_type_t objtype = H5O_TYPE_UNKNOWN; + + // Use C API to get information of the object + herr_t ret_value = H5Oget_info_by_name(getId(), objname, &objinfo, H5P_DEFAULT); + + // Throw exception if C API returns failure + if (ret_value < 0) + throwException("childObjType", "H5Oget_info_by_name failed"); + // Return a valid type or throw an exception for unknown type + else + switch (objinfo.type) + { + case H5O_TYPE_GROUP: + case H5O_TYPE_DATASET: + case H5O_TYPE_NAMED_DATATYPE: + objtype = objinfo.type; + break; + case H5O_TYPE_UNKNOWN: + case H5O_TYPE_NTYPES: + default: + throwException("childObjType", "Unknown type of object"); + } + return(objtype); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::childObjType +///\brief This is an overloaded member function, provided for convenience. +/// It takes an \a H5std_string for the object's name. +///\brief Returns the type of an object in this group, given the +/// object's name. +///\param objname - IN: Name of the object (H5std_string&) +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - April, 2014 +//-------------------------------------------------------------------------- +H5O_type_t H5Location::childObjType(const H5std_string& objname) const +{ + // Use overloaded function + H5O_type_t objtype = childObjType(objname.c_str()); + return(objtype); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::childObjType +///\brief Returns the type of an object in this file/group, given the +/// object's index and its type and order. +///\param index - IN: Position of the object +///\param index_type - IN: Type of the index, default to H5_INDEX_NAME +///\param order - IN: Traversing order, default to H5_ITER_INC +///\param objname - IN: Name of the object, default to "." +///\return Object type, which can have the following values for group, +/// dataset, and named datatype +/// \li \c H5O_TYPE_GROUP +/// \li \c H5O_TYPE_DATASET +/// \li \c H5O_TYPE_NAMED_DATATYPE +/// Refer to the C API documentation for more details: +/// http://www.hdfgroup.org/HDF5/doc/RM/RM_H5O.html#Object-GetInfo +///\exception H5::FileIException or H5::GroupIException +/// Exception will be thrown when: +/// - an error returned by the C API +/// - object type is not one of the valid values above +// Developer's Notes: +// - this overload uses H5Oget_info_by_idx instead of H5Oget_info_by_name +// like the previous childObjType() +// - index is the required argument so, first +// - objname is last because it's more likely the location is already +// fully specified +// - Leave property list out for now because C API is not using it, it +// can be added later when needed. +// Programmer Binh-Minh Ribler - April, 2014 +//-------------------------------------------------------------------------- +H5O_type_t H5Location::childObjType(hsize_t index, H5_index_t index_type, H5_iter_order_t order, const char* objname) const +{ + herr_t ret_value; + H5O_info_t objinfo; + H5O_type_t objtype = H5O_TYPE_UNKNOWN; + + // Use C API to get information of the object + ret_value = H5Oget_info_by_idx(getId(), objname, index_type, order, index, &objinfo, H5P_DEFAULT); + + // Throw exception if C API returns failure + if (ret_value < 0) + throwException("childObjType", "H5Oget_info_by_idx failed"); + // Return a valid type or throw an exception for unknown type + else + switch (objinfo.type) + { + case H5O_TYPE_GROUP: + case H5O_TYPE_DATASET: + case H5O_TYPE_NAMED_DATATYPE: + objtype = objinfo.type; + break; + case H5O_TYPE_UNKNOWN: + case H5O_TYPE_NTYPES: + default: + throwException("childObjType", "Unknown type of object"); + } + return(objtype); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::childObjVersion +///\brief Returns the object header version of an object in this file/group, +/// given the object's name. +///\param objname - IN: Name of the object +///\return Object version, which can have the following values: +/// \li \c H5O_VERSION_1 +/// \li \c H5O_VERSION_2 +///\exception H5::FileIException or H5::GroupIException +/// Exception will be thrown when: +/// - an error returned by the C API +/// - version number is not one of the valid values above +// Programmer Binh-Minh Ribler - April, 2014 +//-------------------------------------------------------------------------- +unsigned H5Location::childObjVersion(const char* objname) const +{ + H5O_info_t objinfo; + unsigned version = 0; + + // Use C API to get information of the object + herr_t ret_value = H5Oget_info_by_name(getId(), objname, &objinfo, H5P_DEFAULT); + + // Throw exception if C API returns failure + if (ret_value < 0) + throwException("childObjVersion", "H5Oget_info_by_name failed"); + // Return a valid version or throw an exception for invalid value + else + { + version = objinfo.hdr.version; + if (version != H5O_VERSION_1 && version != H5O_VERSION_2) + throwException("childObjVersion", "Invalid version for object"); + } + return(version); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::childObjVersion +///\brief This is an overloaded member function, provided for convenience. +/// It takes an \a H5std_string for the object's name. +///\brief Returns the type of an object in this group, given the +/// object's name. +///\param objname - IN: Name of the object (H5std_string&) +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - April, 2014 +//-------------------------------------------------------------------------- +unsigned H5Location::childObjVersion(const H5std_string& objname) const +{ + // Use overloaded function + unsigned version = childObjVersion(objname.c_str()); + return(version); +} + +#ifndef H5_NO_DEPRECATED_SYMBOLS +#ifndef DOXYGEN_SHOULD_SKIP_THIS +//-------------------------------------------------------------------------- +// Function: H5Location::getObjTypeByIdx +///\brief Returns the type of an object in this group, given the +/// object's index. +///\param idx - IN: Transient index of the object +///\return Object type +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - January, 2003 +//-------------------------------------------------------------------------- +H5G_obj_t H5Location::getObjTypeByIdx(hsize_t idx) const +{ + H5G_obj_t obj_type = H5Gget_objtype_by_idx(getId(), idx); + if (obj_type == H5G_UNKNOWN) + throwException("getObjTypeByIdx", "H5Gget_objtype_by_idx failed"); + + return (obj_type); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::getObjTypeByIdx +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function because it also provides +/// the returned object type in text (char*) +///\param idx - IN: Transient index of the object +///\param type_name - OUT: Object type in text +///\return Object type +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - May, 2010 +// Modification +// Modified to use the other function. -BMR, 2016/03/07 +//-------------------------------------------------------------------------- +H5G_obj_t H5Location::getObjTypeByIdx(hsize_t idx, char* type_name) const +{ + H5std_string stype_name(type_name); + return(getObjTypeByIdx(idx, stype_name)); +} +//-------------------------------------------------------------------------- +// Function: H5Location::getObjTypeByIdx +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function because it also provides +/// the returned object type in text (H5std_string&) +///\param idx - IN: Transient index of the object +///\param type_name - OUT: Object type in text +///\return Object type +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - January, 2003 +//-------------------------------------------------------------------------- +H5G_obj_t H5Location::getObjTypeByIdx(hsize_t idx, H5std_string& type_name) const +{ + H5G_obj_t obj_type = H5Gget_objtype_by_idx(getId(), idx); + switch (obj_type) + { + case H5G_LINK: type_name = H5std_string("symbolic link"); break; + case H5G_GROUP: type_name = H5std_string("group"); break; + case H5G_DATASET: type_name = H5std_string("dataset"); break; + case H5G_TYPE: type_name = H5std_string("datatype"); break; + case H5G_UNKNOWN: + case H5G_UDLINK: + case H5G_RESERVED_5: + case H5G_RESERVED_6: + case H5G_RESERVED_7: + default: + throwException("getObjTypeByIdx", "H5Gget_objtype_by_idx failed"); + } + return (obj_type); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::throwException +///\brief Invokes subclass' throwException +///\param func_name - Name of the function where failure occurs +///\param msg - Message describing the failure +///\exception H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +void H5Location::throwException(const H5std_string& func_name, const H5std_string& msg) const +{ + throwException(func_name, msg); +} + +#endif // DOXYGEN_SHOULD_SKIP_THIS +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + +//-------------------------------------------------------------------------- +// Function: f_DataType_setId - friend +// Purpose: This function is friend to class H5::DataType so that it +// can set DataType::id in order to work around a problem +// described in the JIRA issue HDFFV-7947. +// Applications shouldn't need to use it. +// param dtype - IN/OUT: DataType object to be changed +// param new_id - IN: New id to set +// Programmer Binh-Minh Ribler - 2015 +//-------------------------------------------------------------------------- +void f_DataType_setId(DataType* dtype, hid_t new_id) +{ + dtype->p_setId(new_id); +} + +//-------------------------------------------------------------------------- +// Function: f_DataSet_setId - friend +// Purpose: This function is friend to class H5::DataSet so that it +// can set DataSet::id in order to work around a problem +// described in the JIRA issue HDFFV-7947. +// Applications shouldn't need to use it. +// param dset - IN/OUT: DataSet object to be changed +// param new_id - IN: New id to set +// Programmer Binh-Minh Ribler - 2015 +//-------------------------------------------------------------------------- +void f_DataSet_setId(DataSet* dset, hid_t new_id) +{ + dset->p_setId(new_id); +} + +// end of From H5CommonFG.cpp + +//-------------------------------------------------------------------------- +// Function: f_Attribute_setId - friend +// Purpose: This function is friend to class H5::Attribute so that it +// can set Attribute::id in order to work around a problem +// described in the JIRA issue HDFFV-7947. +// Applications shouldn't need to use it. +// param attr - IN/OUT: Attribute object to be changed +// param new_id - IN: New id to set +// Programmer Binh-Minh Ribler - 2015 +//-------------------------------------------------------------------------- +void f_Attribute_setId(Attribute* attr, hid_t new_id) +{ + attr->p_setId(new_id); +} + +//-------------------------------------------------------------------------- +// Function: f_DataSpace_setId - friend +// Purpose: This function is friend to class H5::DataSpace so that it can +// can set DataSpace::id in order to work around a problem +// described in the JIRA issue HDFFV-7947. +// Applications shouldn't need to use it. +// param dspace - IN/OUT: DataSpace object to be changed +// param new_id - IN: New id to set +// Programmer Binh-Minh Ribler - 2015 +//-------------------------------------------------------------------------- +void f_DataSpace_setId(DataSpace* dspace, hid_t new_id) +{ + dspace->p_setId(new_id); +} + +//-------------------------------------------------------------------------- +// Function: H5Location destructor +///\brief Noop destructor. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +H5Location::~H5Location() {} + #endif // DOXYGEN_SHOULD_SKIP_THIS #ifndef H5_NO_NAMESPACE diff --git a/c++/src/H5Location.h b/c++/src/H5Location.h index 9000c5c..4f7a717 100644 --- a/c++/src/H5Location.h +++ b/c++/src/H5Location.h @@ -39,6 +39,10 @@ namespace H5 { }; */ +// Class forwarding +class H5_DLLCPP ArrayType; +class H5_DLLCPP VarLenType; + /*! \class H5Location \brief H5Location is an abstract base class, added in version 1.8.12. @@ -100,15 +104,137 @@ class H5_DLLCPP H5Location : public IdComponent { // Retrieves a dataspace with the region pointed to selected. DataSpace getRegion(void *ref, H5R_type_t ref_type = H5R_DATASET_REGION) const; - ///\brief Returns an identifier. (pure virtual) - virtual hid_t getId() const = 0; +// From CommonFG + // Creates a new group at this location which can be a file + // or another group. + Group createGroup(const char* name, size_t size_hint = 0) const; + Group createGroup(const H5std_string& name, size_t size_hint = 0) const; + + // Opens an existing group in a location which can be a file + // or another group. + Group openGroup(const char* name) const; + Group openGroup(const H5std_string& name) const; + + // Creates a new dataset in this group. + DataSet createDataSet(const char* name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist = DSetCreatPropList::DEFAULT) const; + DataSet createDataSet(const H5std_string& name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist = DSetCreatPropList::DEFAULT) const; + + // Opens an existing dataset at this location. + DataSet openDataSet(const char* name) const; + DataSet openDataSet(const H5std_string& name) const; + + // Returns the value of a symbolic link. + H5std_string getLinkval(const char* link_name, size_t size=0) const; + H5std_string getLinkval(const H5std_string& link_name, size_t size=0) const; + + // Returns the number of objects in this group. + hsize_t getNumObjs() const; + + // Retrieves the name of an object in this group, given the + // object's index. + H5std_string getObjnameByIdx(hsize_t idx) const; + ssize_t getObjnameByIdx(hsize_t idx, char* name, size_t size) const; + ssize_t getObjnameByIdx(hsize_t idx, H5std_string& name, size_t size) const; + + // Retrieves the type of an object in this file or group, given the + // object's name + H5O_type_t childObjType(const H5std_string& objname) const; + H5O_type_t childObjType(const char* objname) const; + H5O_type_t childObjType(hsize_t index, H5_index_t index_type=H5_INDEX_NAME, H5_iter_order_t order=H5_ITER_INC, const char* objname=".") const; + + // Returns the object header version of an object in this file or group, + // given the object's name. + unsigned childObjVersion(const char* objname) const; + unsigned childObjVersion(const H5std_string& objname) const; + +#ifndef H5_NO_DEPRECATED_SYMBOLS + // Returns the type of an object in this group, given the + // object's index. + H5G_obj_t getObjTypeByIdx(hsize_t idx) const; + H5G_obj_t getObjTypeByIdx(hsize_t idx, char* type_name) const; + H5G_obj_t getObjTypeByIdx(hsize_t idx, H5std_string& type_name) const; + + // Returns information about an HDF5 object, given by its name, + // at this location. + void getObjinfo(const char* name, hbool_t follow_link, H5G_stat_t& statbuf) const; + void getObjinfo(const H5std_string& name, hbool_t follow_link, H5G_stat_t& statbuf) const; + void getObjinfo(const char* name, H5G_stat_t& statbuf) const; + void getObjinfo(const H5std_string& name, H5G_stat_t& statbuf) const; + + // Iterates over the elements of this group - not implemented in + // C++ style yet. + int iterateElems(const char* name, int *idx, H5G_iterate_t op, void *op_data); + int iterateElems(const H5std_string& name, int *idx, H5G_iterate_t op, void *op_data); +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + + // Creates a link of the specified type from new_name to current_name; + // both names are interpreted relative to the specified location id. + void link(H5L_type_t link_type, const char* curr_name, const char* new_name) const; + void link(H5L_type_t link_type, const H5std_string& curr_name, const H5std_string& new_name) const; + + // Removes the specified name at this location. + void unlink(const char* name) const; + void unlink(const H5std_string& name) const; + + // Mounts the file 'child' onto this location. + void mount(const char* name, const H5File& child, const PropList& plist) const; + //void mount(const char* name, H5File& child, PropList& plist) const; // removed from 1.8.18 and 1.10.1 + void mount(const H5std_string& name, const H5File& child, const PropList& plist) const; + //void mount(const H5std_string& name, H5File& child, PropList& plist) const; // removed from 1.8.18 and 1.10.1 + + // Unmounts the file named 'name' from this parent location. + void unmount(const char* name) const; + void unmount(const H5std_string& name) const; + + // Renames an object at this location. + void move(const char* src, const char* dst) const; + void move(const H5std_string& src, const H5std_string& dst) const; + + // Opens a generic named datatype in this location. + DataType openDataType(const char* name) const; + DataType openDataType(const H5std_string& name) const; + + // Opens a named array datatype in this location. + ArrayType openArrayType(const char* name) const; + ArrayType openArrayType(const H5std_string& name) const; + + // Opens a named compound datatype in this location. + CompType openCompType(const char* name) const; + CompType openCompType(const H5std_string& name) const; + + // Opens a named enumeration datatype in this location. + EnumType openEnumType(const char* name) const; + EnumType openEnumType(const H5std_string& name) const; + + // Opens a named integer datatype in this location. + IntType openIntType(const char* name) const; + IntType openIntType(const H5std_string& name) const; + + // Opens a named floating-point datatype in this location. + FloatType openFloatType(const char* name) const; + FloatType openFloatType(const H5std_string& name) const; + + // Opens a named string datatype in this location. + StrType openStrType(const char* name) const; + StrType openStrType(const H5std_string& name) const; + + // Opens a named variable length datatype in this location. + VarLenType openVarLenType(const char* name) const; + VarLenType openVarLenType(const H5std_string& name) const; + +// end From CommonFG + + ///\brief Returns an identifier. + //virtual hid_t getId() const; + + /// For subclasses, H5File and Group, to throw appropriate exception. + virtual void throwException(const H5std_string& func_name, const H5std_string& msg) const; - protected: // Default constructor H5Location(); + protected: #ifndef DOXYGEN_SHOULD_SKIP_THIS - // *** Deprecation warning *** // The following two constructors are no longer appropriate after the // data member "id" had been moved to the sub-classes. diff --git a/c++/src/H5Object.cpp b/c++/src/H5Object.cpp index 0cb392d..6b5edcf 100644 --- a/c++/src/H5Object.cpp +++ b/c++/src/H5Object.cpp @@ -19,13 +19,13 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" +#include "H5FaccProp.h" +#include "H5FcreatProp.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" #include "H5DxferProp.h" -#include "H5FaccProp.h" -#include "H5FcreatProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5DataType.h" #include "H5DataSpace.h" #include "H5AbstractDs.h" diff --git a/c++/src/H5Object.h b/c++/src/H5Object.h index c39de3a..372faed 100644 --- a/c++/src/H5Object.h +++ b/c++/src/H5Object.h @@ -38,7 +38,9 @@ namespace H5 { #endif +// Class forwarding class H5_DLLCPP H5Object; +class H5_DLLCPP Attribute; // Define the operator function pointer for H5Aiterate(). typedef void (*attr_operator_t)( H5Object& loc/*in*/, diff --git a/c++/src/H5OcreatProp.cpp b/c++/src/H5OcreatProp.cpp index 635ffe9..54ce2ff 100644 --- a/c++/src/H5OcreatProp.cpp +++ b/c++/src/H5OcreatProp.cpp @@ -19,8 +19,8 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5FaccProp.h" #include "H5OcreatProp.h" +#include "H5FaccProp.h" #ifndef H5_NO_NAMESPACE namespace H5 { diff --git a/c++/src/H5PredType.cpp b/c++/src/H5PredType.cpp index 3fe9a8a..211702d 100644 --- a/c++/src/H5PredType.cpp +++ b/c++/src/H5PredType.cpp @@ -19,6 +19,8 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" +#include "H5OcreatProp.h" +#include "H5DcreatProp.h" #include "H5Location.h" #include "H5Object.h" #include "H5DataType.h" diff --git a/c++/src/H5StrType.cpp b/c++/src/H5StrType.cpp index 8e1672b..db46596 100644 --- a/c++/src/H5StrType.cpp +++ b/c++/src/H5StrType.cpp @@ -19,14 +19,14 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" +#include "H5DxferProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5DataType.h" #include "H5AtomType.h" #include "H5AbstractDs.h" -#include "H5DxferProp.h" #include "H5DataSpace.h" #include "H5StrType.h" #include "H5DataSet.h" diff --git a/c++/src/H5VarLenType.cpp b/c++/src/H5VarLenType.cpp index 67334d3..c9f320a 100644 --- a/c++/src/H5VarLenType.cpp +++ b/c++/src/H5VarLenType.cpp @@ -19,10 +19,10 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5DataType.h" #include "H5VarLenType.h" diff --git a/c++/test/Makefile.am b/c++/test/Makefile.am index 07fe533..da0a864 100644 --- a/c++/test/Makefile.am +++ b/c++/test/Makefile.am @@ -34,7 +34,7 @@ LDADD=$(LIBH5TEST) $(LIBH5CPP) $(LIBHDF5) testhdf5_SOURCES=testhdf5.cpp dsets.cpp tattr.cpp tarray.cpp \ tcompound.cpp tdspl.cpp tfile.cpp tfilter.cpp th5s.cpp \ tlinks.cpp tobject.cpp trefer.cpp ttypes.cpp tvlstr.cpp \ - h5cpputil.cpp + titerate.cpp h5cpputil.cpp # Tell conclude.am that these are C++ tests. CXX_API=yes diff --git a/c++/test/h5cpputil.cpp b/c++/test/h5cpputil.cpp index 05a4d9a..3bc38b5 100644 --- a/c++/test/h5cpputil.cpp +++ b/c++/test/h5cpputil.cpp @@ -164,6 +164,32 @@ int check_values (hsize_t i, hsize_t j, int apoint, int acheck) } // check_values /*------------------------------------------------------------------------- + * Function: check_values + * + * Purpose: Checks a char string pointer for NULL. If it is NULL, + * the function will print out a message + * + * Return: Success: 0 + * + * Failure: -1 + * + * Programmer: Binh-Minh Ribler (using C code segment for checking values) + * Friday, September 16, 2016 + * + *------------------------------------------------------------------------- + */ +void check_values(const char *value, const char* msg, int line, const char* file_name) +{ + if (value == NULL) + { + cerr << endl; + cerr << "*** ERROR: " << msg << ", at line " << line << endl; + IncTestNumErrs(); + throw TestFailedException(file_name, msg); + } +} + +/*------------------------------------------------------------------------- * Function: verify_val (const char*, const char*,...) * * Purpose: Compares two character strings. If they are diff --git a/c++/test/h5cpputil.h b/c++/test/h5cpputil.h index 50cde99..0a3221d 100644 --- a/c++/test/h5cpputil.h +++ b/c++/test/h5cpputil.h @@ -39,6 +39,7 @@ using std::endl; #define SUBTEST(TEST) {printf(" Subtest: %-52s",TEST); fflush(stdout);} int check_values (hsize_t i, hsize_t j, int apoint, int acheck); +void check_values(const char *value, const char* msg, int line, const char* file_name); int test_report (int, const H5std_string&); void issue_fail_msg(const char* where, int line, const char* file_name, const char* message=""); @@ -60,6 +61,8 @@ class TestFailedException : public Exception { }; // Overloaded/Template functions to verify values and display proper info + +// Verifies void verify_val(const char* x, const char* value, const char* where, int line, const char* file_name); template @@ -153,6 +156,7 @@ void test_file(); void test_filters(); void test_links(); void test_h5s(); +void test_iterate(); void test_object(); void test_reference(); void test_types(); @@ -167,8 +171,9 @@ void cleanup_dsproplist(); void cleanup_dsets(); void cleanup_file(); void cleanup_filters(); -void cleanup_links(); void cleanup_h5s(); +void cleanup_iterate(); +void cleanup_links(); void cleanup_object(); void cleanup_reference(); void cleanup_types(); @@ -182,7 +187,6 @@ void cleanup_vlstrings(); void cleanup_select(void); void cleanup_time(void); void cleanup_vltypes(void); -void cleanup_iterate(void); void cleanup_array(void); void cleanup_genprop(void); void cleanup_misc(void); diff --git a/c++/test/testhdf5.cpp b/c++/test/testhdf5.cpp index b17d942..4fe4b58 100644 --- a/c++/test/testhdf5.cpp +++ b/c++/test/testhdf5.cpp @@ -100,7 +100,9 @@ main(int argc, char *argv[]) AddTest("select", test_select, cleanup_select, "Selections", NULL); AddTest("time", test_time, cleanup_time, "Time Datatypes", NULL); AddTest("vltypes", test_vltypes, cleanup_vltypes, "Variable-Length Datatypes", NULL); +*/ AddTest("iterate", test_iterate, cleanup_iterate, "Group & Attribute Iteration", NULL); +/* AddTest("genprop", test_genprop, cleanup_genprop, "Generic Properties", NULL); AddTest("id", test_ids, NULL, "User-Created Identifiers", NULL); diff --git a/c++/test/titerate.cpp b/c++/test/titerate.cpp new file mode 100644 index 0000000..e4aee97 --- /dev/null +++ b/c++/test/titerate.cpp @@ -0,0 +1,541 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/***************************************************************************** + FILE + titerate.cpp - HDF5 C++ testing iterate related functionality + + ***************************************************************************/ + +#ifdef OLD_HEADER_FILENAME +#include +#else +#include +#endif +#include + +#ifndef H5_NO_NAMESPACE +#ifndef H5_NO_STD + using std::cerr; + using std::endl; +#endif // H5_NO_STD +#endif + +#include "H5Cpp.h" // C++ API header file + +#ifndef H5_NO_NAMESPACE + using namespace H5; +#endif + +#include "h5cpputil.h" // C++ utilility header file + +/* Number of datasets for group iteration test */ +#define NDATASETS 50 + +/* Number of attributes for attribute iteration test */ +//#define NATTR 50 + +/* Number of groups for second group iteration test */ +//#define ITER_NGROUPS 150 + +/* General maximum length of names used */ +#define NAMELEN 80 + +/* 1-D dataset with fixed dimensions */ +//#define SPACE1_RANK 1 +//#define SPACE1_DIM1 4 + +const H5std_string FILE_ITERATE("titerate.h5"); +const H5std_string GROUP1("Top Group"); +const H5std_string GROUP1_PATH("/Top Group"); +const H5std_string GROUP1_1("Sub-Group 1.1"); +const H5std_string GROUP1_1_PATH("/Top Group/Sub-Group 1.1"); +const H5std_string GROUP1_2("Sub-Group 1.2"); +const H5std_string GROUP1_2_PATH("/Top Group/Sub-Group 1.2"); +const H5std_string DSET_DEFAULT_NAME("default"); +const H5std_string DSET_IN_FILE("Dataset in File"); +const H5std_string DSET_IN_FILE_PATH("/Dataset in File"); +const H5std_string DSET_IN_GRP1("Dataset in Group 1"); +const H5std_string DSET_IN_GRP1_PATH("/Top Group/Dataset in Group 1"); +const H5std_string DSET_IN_GRP1_2("Dataset in Group 1.2"); +const H5std_string DSET_IN_GRP1_2_PATH("/Top Group/Sub-Group 1.2/Dataset in Group 1.2"); + +typedef enum { + RET_ZERO, + RET_TWO, + RET_CHANGE, + RET_CHANGE2 +} iter_enum; + +/* Custom group iteration callback data */ +typedef struct { + char name[NAMELEN]; /* The name of the object */ + H5O_type_t type; /* The type of the object */ + iter_enum command; /* The type of return value */ +} iter_info; + +int iter_strcmp(const void *s1, const void *s2); + +/**************************************************************** +** +** iter_strcmp(): String comparison routine for qsort +** +****************************************************************/ +int iter_strcmp(const void *s1, const void *s2) +{ + return(HDstrcmp(*(const char * const *)s1,*(const char * const *)s2)); +} + +/**************************************************************** +** +** liter_cb(): Custom link iteration callback routine. +** +****************************************************************/ +static herr_t +liter_cb(hid_t H5_ATTR_UNUSED group, const char *name, const H5L_info_t H5_ATTR_UNUSED *link_info, + void *op_data) +{ + iter_info *info = (iter_info *)op_data; + static int count = 0; + static int count2 = 0; + + HDstrcpy(info->name, name); + + switch(info->command) { + case RET_ZERO: + return(0); + + case RET_TWO: + return(2); + + case RET_CHANGE: + count++; + return(count > 10 ? 1 : 0); + + case RET_CHANGE2: + count2++; + return(count2 > 10 ? 1 : 0); + + default: + printf("invalid iteration command"); + return(-1); + } /* end switch */ +} /* end liter_cb() */ + +/*------------------------------------------------------------------------- + * Function: test_iter_group + * + * Purpose: Tests group iteration + * + * Return: Success: 0 + * Failure: -1 + * + * Programmer: Binh-Minh Ribler + * Friday, September 9, 2016 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static void test_iter_group(FileAccPropList& fapl) +{ + int i; /* counting variable */ + hsize_t idx; /* Index in the group */ + char name[NAMELEN]; /* temporary name buffer */ + char *lnames[NDATASETS + 2];/* Names of the links created */ + iter_info info; /* Custom iteration information */ + herr_t ret; /* Generic return value */ + + /* Output message about test being performed */ + SUBTEST("Group Iteration"); + + /* Create the test file with the datasets */ + try { + // Create file + H5File file(FILE_ITERATE, H5F_ACC_TRUNC, FileCreatPropList::DEFAULT, fapl); + + /* Test iterating over empty group */ + info.command = RET_ZERO; + idx = 0; + ret = H5Literate(file.getId(), H5_INDEX_NAME, H5_ITER_INC, &idx, liter_cb, &info); + verify_val(ret, SUCCEED, "H5Literate", __LINE__, __FILE__); + + DataType datatype(PredType::NATIVE_INT); + + // Create a scalar file space + DataSpace filespace; + + for (i=0; i< NDATASETS; i++) + { + sprintf(name, "Dataset %d", i); + + // Create a dataset in the file + DataSet dataset = file.createDataSet(name, datatype, filespace); + + /* Keep a copy of the dataset names */ + lnames[i] = HDstrdup(name); + check_values(lnames[i], "HDstrdup returns NULL", __LINE__, __FILE__); + + } /* end for */ + + /* Create a group and named datatype under root group for testing */ + Group grp(file.createGroup(GROUP1, 0)); + lnames[NDATASETS] = HDstrdup("grp"); + check_values(lnames[NDATASETS], "HDstrdup returns NULL", __LINE__, __FILE__); + + datatype.commit(file, "dtype"); + lnames[NDATASETS + 1] = HDstrdup("dtype"); + check_values(lnames[NDATASETS], "HDstrdup returns NULL", __LINE__, __FILE__); + + /* Sort the dataset names */ + HDqsort(lnames, (size_t)(NDATASETS + 2), sizeof(char *), iter_strcmp); + + + /* Iterate through the datasets in the root group in various ways */ + + // Open data file to read + file.openFile(FILE_ITERATE, H5F_ACC_RDONLY, fapl); + + // Open the root group + Group root_group(file.openGroup("/")); + + // Get the number of object in the root group + hsize_t nobjs = root_group.getNumObjs(); + verify_val(nobjs, (hsize_t)(NDATASETS + 2), "H5Gget_info", __LINE__, __FILE__); + + H5std_string obj_name; + for (i = 0; i < nobjs; i++) + { + //H5O_info_t oinfo; /* Object info */ + + obj_name = root_group.getObjnameByIdx(i); + //ret = (herr_t)H5Lget_name_by_idx(root_group, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)i, dataset_name, (size_t)NAMELEN, H5P_DEFAULT); + + //oinfo = root_group.childObjType((hsize_t)i, H5_INDEX_NAME, H5_ITER_INC, "."); + //ret = H5Oget_info_by_idx(root_group, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)i, &oinfo, H5P_DEFAULT); + } /* end for */ + + // Attempted to iterate with invalid index, should fail + try { + obj_name = root_group.getObjnameByIdx(NDATASETS + 3); + + // Should FAIL but didn't, so throw an invalid action exception + throw InvalidActionException("Group::getObjnameByIdx", "Attempt to iterate with invalid index"); + } + catch (GroupIException& invalid_action) // invalid index + {} // do nothing, exception expected + + // Attempted to iterate with negative index, should fail + try { + info.command = RET_ZERO; + idx = (hsize_t)-1; + obj_name = root_group.getObjnameByIdx(idx); + + // Should FAIL but didn't, so throw an invalid action exception + throw InvalidActionException("Group::getObjnameByIdx", "Attempt to iterate with negative index"); + } + catch (FileIException& invalid_action) // invalid index + {} // do nothing, exception expected + catch (GroupIException& invalid_action) // invalid index + {} // do nothing, exception expected + + /* Test skipping exactly as many entries as in the group */ + try { + info.command = RET_ZERO; + idx = NDATASETS + 2; + obj_name = root_group.getObjnameByIdx(idx); + + // Should FAIL but didn't, so throw an invalid action exception + throw InvalidActionException("Group::getObjnameByIdx", "Attempt to iterate with negative index"); + } + catch (FileIException& invalid_action) // invalid index + {} // do nothing, exception expected + catch (GroupIException& invalid_action) // invalid index + {} // do nothing, exception expected + + /* Test skipping more entries than are in the group */ + try { + info.command = RET_ZERO; + idx = NDATASETS + 3; + obj_name = root_group.getObjnameByIdx(idx); + + // Should FAIL but didn't, so throw an invalid action exception + throw InvalidActionException("Group::getObjnameByIdx", "Attempt to iterate with negative index"); + } + catch (FileIException& invalid_action) // invalid index + {} // do nothing, exception expected + catch (GroupIException& invalid_action) // invalid index + {} // do nothing, exception expected + + /* Free the dataset names */ + for(i = 0; i< (NDATASETS + 2); i++) + HDfree(lnames[i]); + + // Everything will be closed as they go out of scope + + PASSED(); + } // try block + + // catch all other exceptions + catch (Exception& E) + { + issue_fail_msg("test_iter_group", __LINE__, __FILE__); + } + +#if 0 + /* Test all objects in group, when callback always returns 0 */ + info.command = RET_ZERO; + idx = 0; + if((ret = H5Literate(file, H5_INDEX_NAME, H5_ITER_INC, &idx, liter_cb, &info)) > 0) + TestErrPrintf("Group iteration function didn't return zero correctly!\n"); + + /* Test all objects in group, when callback always returns 1 */ + /* This also tests the "restarting" ability, because the index changes */ + info.command = RET_TWO; + i = 0; + idx = 0; + while((ret = H5Literate(file, H5_INDEX_NAME, H5_ITER_INC, &idx, liter_cb, &info)) > 0) { + /* Verify return value from iterator gets propagated correctly */ + verify_val(ret, 2, "H5Literate", __LINE__, __FILE__); + + /* Increment the number of times "2" is returned */ + i++; + + /* Verify that the index is the correct value */ + verify_val(idx, (hsize_t)i, "H5Literate", __LINE__, __FILE__); + if(idx > (NDATASETS + 2)) + TestErrPrintf("Group iteration function walked too far!\n"); + + /* Verify that the correct name is retrieved */ + if(HDstrcmp(info.name, lnames[(size_t)(idx - 1)]) != 0) + TestErrPrintf("Group iteration function didn't return name correctly for link - lnames[%u] = '%s'!\n", (unsigned)(idx - 1), lnames[(size_t)(idx - 1)]); + } /* end while */ + verify_val(ret, -1, "H5Literate", __LINE__, __FILE__); + + if(i != (NDATASETS + 2)) + TestErrPrintf("%u: Group iteration function didn't perform multiple iterations correctly!\n", __LINE__); + + /* Test all objects in group, when callback changes return value */ + /* This also tests the "restarting" ability, because the index changes */ + info.command = new_format ? RET_CHANGE2 : RET_CHANGE; + i = 0; + idx = 0; + while((ret = H5Literate(file, H5_INDEX_NAME, H5_ITER_INC, &idx, liter_cb, &info)) >= 0) { + /* Verify return value from iterator gets propagated correctly */ + verify_val(ret, 1, "H5Literate", __LINE__, __FILE__); + + /* Increment the number of times "1" is returned */ + i++; + + /* Verify that the index is the correct value */ + verify_val(idx, (hsize_t)(i + 10), "H5Literate", __LINE__, __FILE__); + if(idx > (NDATASETS + 2)) + TestErrPrintf("Group iteration function walked too far!\n"); + + /* Verify that the correct name is retrieved */ + if(HDstrcmp(info.name, lnames[(size_t)(idx - 1)]) != 0) + TestErrPrintf("Group iteration function didn't return name correctly for link - lnames[%u] = '%s'!\n", (unsigned)(idx - 1), lnames[(size_t)(idx - 1)]); + } /* end while */ + verify_val(ret, -1, "H5Literate", __LINE__, __FILE__); + + if(i != 42 || idx != 52) + TestErrPrintf("%u: Group iteration function didn't perform multiple iterations correctly!\n", __LINE__); + + ret = H5Fclose(file); + CHECK(ret, FAIL, "H5Fclose"); + +#endif +} /* test_iter_group() */ + + +/**************************************************************** +** +** printelems(): Open an attribute and verify that it has a +** the correct name +** +****************************************************************/ +const H5std_string FILE_NAME("titerate.h5"); +const H5std_string GRP_NAME("/Group_A"); +const H5std_string FDATASET_NAME( "file dset" ); +const H5std_string GDATASET_NAME( "group dset" ); +const H5std_string ATTR_NAME( "Units" ); +const H5std_string FATTR_NAME( "F attr" ); +const H5std_string GATTR_NAME( "G attr" ); +const int DIM1 = 2; +void printelems(const Group& group, const H5std_string& dsname, const H5std_string& atname) +{ + try + { + DataSet d1(group.openDataSet(dsname)); + DataSpace s1 = d1.getSpace(); + s1.close(); + d1.close(); + + unsigned idx = 0; + Attribute a1(group.openAttribute(idx)); + H5std_string aname = a1.getName(); + verify_val(aname, atname, "printelems", __LINE__, __FILE__); + + a1.close(); + } + // catch failure caused by the DataSpace operations + catch( DataSpaceIException error ) + { + error.printError(); + } + + // catch failure caused by the Group operations + catch( GroupIException error ) + { + error.printError(); + } + + // catch failure caused by the DataSet operations + catch( DataSetIException error ) + { + error.printError(); + } +} + +/*------------------------------------------------------------------------- + * Function: test_HDFFV_9920 + * + * Purpose: Tests the fix for HDFFV-9920 + * + * Programmer: Binh-Minh Ribler + * Friday, September 9, 2016 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static void test_HDFFV_9920() +{ + int attr_data[2] = { 100, 200}; + hsize_t dims[1] = { DIM1 }; + + try + { + // Create a new file and a group in it + H5File file( FILE_NAME, H5F_ACC_TRUNC ); + + Group gr1(file.createGroup(GRP_NAME)); + + // Create the data space for the attribute. + DataSpace dspace = DataSpace (1, dims ); + + DataSet fds = file.createDataSet(FDATASET_NAME, PredType::STD_I32BE, dspace); + DataSet gds = gr1.createDataSet(GDATASET_NAME, PredType::STD_I32BE, dspace); + + // Create a file attribute and a group attribute. + Attribute fa1 = file.createAttribute(FATTR_NAME, PredType::STD_I32BE, + dspace); + Attribute ga1 = gr1.createAttribute(GATTR_NAME, PredType::STD_I32BE, + dspace); + + // Write the attribute data. + fa1.write( PredType::NATIVE_INT, attr_data); + ga1.write( PredType::NATIVE_INT, attr_data); + + fa1.close(); + ga1.close(); + fds.close(); + gds.close(); + + // Verify the attributes have correct names. + printelems(file, FDATASET_NAME, FATTR_NAME); + printelems(gr1, GDATASET_NAME, GATTR_NAME); + + } // end of try block + + // catch failure caused by the H5File operations + catch( DataSpaceIException error ) + { + error.printError(); + } + + // catch failure caused by the H5File operations + catch( AttributeIException error ) + { + error.printError(); + } + + // catch failure caused by the H5File operations + catch( FileIException error ) + { + error.printError(); + } + + // catch failure caused by the DataSet operations + catch( DataSetIException error ) + { + error.printError(); + } +} + + +/*------------------------------------------------------------------------- + * Function: test_iterate + * + * Purpose: Tests iterate functionality + * + * Return: Success: 0 + * Failure: -1 + * + * Programmer: Binh-Minh Ribler + * Tuesday, September 6, 2016 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +#ifdef __cplusplus +extern "C" +#endif +void test_iterate() +{ + // Output message about test being performed + MESSAGE(5, ("Testing Iterate Feature\n")); + + // Create access property with latest library version. + FileAccPropList fapl; + fapl.setLibverBounds(H5F_LIBVER_LATEST, H5F_LIBVER_LATEST); + + test_iter_group(fapl); // Test iterating groups + test_HDFFV_9920(); // Test the fix of HDFFV-9920 + //test_iter_attr(fapl); // Test iterating attributes + +} // test_iterate + +/*------------------------------------------------------------------------- + * Function: cleanup_iterate + * + * Purpose: Cleanup temporary test files + * + * Return: none + * + * Programmer: (use C version) + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +#ifdef __cplusplus +extern "C" +#endif +void cleanup_iterate() +{ + HDremove(FILE_ITERATE.c_str()); +} // cleanup_iterate -- cgit v0.12 From 392b8ce3c98ac4e52d53f33e591ed6bf14155925 Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Thu, 22 Sep 2016 12:02:02 -0500 Subject: HDFFV-9973 Fortran library fails to compile and fails tests with NAG compiler Fixes issues with KIND = BYTE assumptions. --- fortran/src/H5Pff.F90 | 14 +-- fortran/src/H5_f.c | 236 +++++++++++++---------------------- fortran/src/H5_ff.F90 | 38 +++--- fortran/src/H5f90global.F90 | 43 ++++--- fortran/src/H5match_types.c | 40 ++++-- fortran/test/fortranlib_test_F03.F90 | 2 +- fortran/test/tH5T_F03.F90 | 42 +++---- 7 files changed, 181 insertions(+), 234 deletions(-) diff --git a/fortran/src/H5Pff.F90 b/fortran/src/H5Pff.F90 index 532ecc6..6ba5aeb 100644 --- a/fortran/src/H5Pff.F90 +++ b/fortran/src/H5Pff.F90 @@ -6397,18 +6397,18 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) !! SUBROUTINE h5pget_fill_value_f(prp_id, type_id, fillvalue, hdferr) !! INTEGER(HID_T), INTENT(IN) :: prp_id !! INTEGER(HID_T), INTENT(IN) :: type_id -!! TYPE(C_PTR) , INTENT(OUT) :: fillvalue +!! TYPE(C_PTR) :: fillvalue !! INTEGER , INTENT(OUT) :: hdferr !***** SUBROUTINE h5pget_fill_value_ptr(prp_id, type_id, fillvalue, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of - ! of fillvalue datatype - ! (in memory) - TYPE(C_PTR), INTENT(OUT) :: fillvalue ! Fillvalue - INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of + ! of fillvalue datatype + ! (in memory) + TYPE(C_PTR) :: fillvalue ! Fillvalue + INTEGER , INTENT(OUT) :: hdferr ! Error code hdferr = h5pget_fill_value_c(prp_id, type_id, fillvalue) diff --git a/fortran/src/H5_f.c b/fortran/src/H5_f.c index d7b952d..9d4c297 100644 --- a/fortran/src/H5_f.c +++ b/fortran/src/H5_f.c @@ -23,6 +23,10 @@ #include "H5f90.h" #include "H5fort_type_defines.h" + +int IntKinds_SizeOf[] = H5_FORTRAN_INTEGER_KINDS_SIZEOF; + + /****if* H5_f/h5init_types_c * NAME * h5init_types_c @@ -55,173 +59,136 @@ h5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertypes int ret_value = -1; hid_t c_type_id; size_t tmp_val; + int i; + + /* Fortran INTEGER may not be the same as C; do all checking to find + an appropriate size + */ + + /* + * FIND H5T_NATIVE_INTEGER_# + */ + for(i=0;i<4;i++) { + + if ( IntKinds_SizeOf[i] == sizeof(char)) { + if ((types[i] = (hid_t_f)H5Tcopy(H5T_NATIVE_CHAR)) < 0) return ret_value; + } /*end if */ + else if ( IntKinds_SizeOf[i] == sizeof(short)) { + if ((types[i] = (hid_t_f)H5Tcopy(H5T_NATIVE_SHORT)) < 0) return ret_value; + } /*end if */ + else if ( IntKinds_SizeOf[i] == sizeof(int)) { + if ((types[i] = (hid_t_f)H5Tcopy(H5T_NATIVE_INT)) < 0) return ret_value; + } /*end if */ + else if ( IntKinds_SizeOf[i] == sizeof(long long)) { + if ((types[i] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value; + } /*end if */ + else { + if ((types[i] = H5Tcopy (H5T_NATIVE_INT)) < 0) return ret_value; + if ( H5Tset_precision (types[i], 128) < 0) return ret_value; + } /*end else */ + + } + +#if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0 + /* + * FIND H5T_NATIVE_INTEGER_KIND(5), INTEGER*16 + */ + if (sizeof(int_16_f) == sizeof(char)) { + if ((types[4] = (hid_t_f)H5Tcopy(H5T_NATIVE_CHAR)) < 0) return ret_value; + } /*end if */ + else if (sizeof(int_16_f) == sizeof(short)) { + if ((types[4] = (hid_t_f)H5Tcopy(H5T_NATIVE_SHORT)) < 0) return ret_value; + } /*end if */ + else if (sizeof(int_16_f) == sizeof(int)) { + if ((types[4] = (hid_t_f)H5Tcopy(H5T_NATIVE_INT)) < 0) return ret_value; + } /*end if */ + else if (sizeof(int_16_f) == sizeof(long long)) { + if ((types[4] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value; + } /*end else */ + else { + if ((types[4] = H5Tcopy (H5T_NATIVE_INT)) < 0) return ret_value; + if ( H5Tset_precision (types[4], 128) < 0) return ret_value; + } /*end else */ +#else + if ((types[4] = H5Tcopy (H5T_NATIVE_INT)) < 0) return ret_value; + if ( H5Tset_precision (types[4], 128) < 0) return ret_value; +#endif -/* Fortran INTEGER may not be the same as C; do all checking to find - an appropriate size -*/ if (sizeof(int_f) == sizeof(int)) { - if ((types[0] = (hid_t_f)H5Tcopy(H5T_NATIVE_INT)) < 0) return ret_value; + if ((types[5] = (hid_t_f)H5Tcopy(H5T_NATIVE_INT)) < 0) return ret_value; } /*end if */ else if (sizeof(int_f) == sizeof(long)) { - if ((types[0] = (hid_t_f)H5Tcopy(H5T_NATIVE_LONG)) < 0) return ret_value; + if ((types[5] = (hid_t_f)H5Tcopy(H5T_NATIVE_LONG)) < 0) return ret_value; } /*end if */ else if (sizeof(int_f) == sizeof(long long)) { - if ((types[0] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value; + if ((types[5] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value; } /*end else */ /* Find appropriate size to store Fortran REAL */ if(sizeof(real_f)==sizeof(float)) { - if ((types[1] = (hid_t_f)H5Tcopy(H5T_NATIVE_FLOAT)) < 0) return ret_value; + if ((types[6] = (hid_t_f)H5Tcopy(H5T_NATIVE_FLOAT)) < 0) return ret_value; } /* end if */ else if(sizeof(real_f)==sizeof(double)){ - if ((types[1] = (hid_t_f)H5Tcopy(H5T_NATIVE_DOUBLE)) < 0) return ret_value; + if ((types[6] = (hid_t_f)H5Tcopy(H5T_NATIVE_DOUBLE)) < 0) return ret_value; } /* end if */ #if H5_SIZEOF_LONG_DOUBLE!=0 else if (sizeof(real_f) == sizeof(long double)) { - if ((types[1] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value; + if ((types[6] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value; } /* end else */ #endif /* Find appropriate size to store Fortran DOUBLE */ if(sizeof(double_f)==sizeof(double)) { - if ((types[2] = (hid_t_f)H5Tcopy(H5T_NATIVE_DOUBLE)) < 0) return ret_value; + if ((types[7] = (hid_t_f)H5Tcopy(H5T_NATIVE_DOUBLE)) < 0) return ret_value; }/*end if */ #if H5_SIZEOF_LONG_DOUBLE!=0 else if(sizeof(double_f)==sizeof(long double)) { - if ((types[2] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value; + if ((types[7] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value; }/*end else */ #endif #ifdef H5_HAVE_FLOAT128 else if(sizeof(double_f)==sizeof(__float128)) { - if ((types[2] = H5Tcopy (H5T_NATIVE_FLOAT)) < 0) return ret_value; - if ( H5Tset_precision (types[2], 128) < 0) return ret_value; + if ((types[7] = H5Tcopy (H5T_NATIVE_FLOAT)) < 0) return ret_value; + if ( H5Tset_precision (types[7], 128) < 0) return ret_value; }/*end else */ #endif -/* - if ((types[3] = H5Tcopy(H5T_NATIVE_UINT8)) < 0) return ret_value; -*/ if ((c_type_id = H5Tcopy(H5T_FORTRAN_S1)) < 0) return ret_value; tmp_val = 1; if(H5Tset_size(c_type_id, tmp_val) < 0) return ret_value; if(H5Tset_strpad(c_type_id, H5T_STR_SPACEPAD) < 0) return ret_value; - types[3] = (hid_t_f)c_type_id; - -/* - if ((types[3] = H5Tcopy(H5T_C_S1)) < 0) return ret_value; - if(H5Tset_strpad(types[3],H5T_STR_NULLTERM) < 0) return ret_value; - if(H5Tset_size(types[3],1) < 0) return ret_value; -*/ + types[8] = (hid_t_f)c_type_id; - -/* if ((types[3] = H5Tcopy(H5T_STD_I8BE)) < 0) return ret_value; -*/ - if ((types[4] = (hid_t_f)H5Tcopy(H5T_STD_REF_OBJ)) < 0) return ret_value; - if ((types[5] = (hid_t_f)H5Tcopy(H5T_STD_REF_DSETREG)) < 0) return ret_value; - /* - * FIND H5T_NATIVE_INTEGER_1 - */ - if (sizeof(int_1_f) == sizeof(char)) { - if ((types[6] = (hid_t_f)H5Tcopy(H5T_NATIVE_CHAR)) < 0) return ret_value; - } /*end if */ - else if (sizeof(int_1_f) == sizeof(short)) { - if ((types[6] = (hid_t_f)H5Tcopy(H5T_NATIVE_SHORT)) < 0) return ret_value; - } /*end if */ - else if (sizeof(int_1_f) == sizeof(int)) { - if ((types[6] = (hid_t_f)H5Tcopy(H5T_NATIVE_INT)) < 0) return ret_value; - } /*end if */ - else if (sizeof(int_1_f) == sizeof(long long)) { - if ((types[6] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value; - } /*end if */ - else { - if ((types[6] = H5Tcopy (H5T_NATIVE_INT)) < 0) return ret_value; - if ( H5Tset_precision (types[6], 128) < 0) return ret_value; - } /*end else */ - /* - * FIND H5T_NATIVE_INTEGER_2 - */ - if (sizeof(int_2_f) == sizeof(char)) { - if ((types[7] = (hid_t_f)H5Tcopy(H5T_NATIVE_CHAR)) < 0) return ret_value; - } /*end if */ - else if (sizeof(int_2_f) == sizeof(short)) { - if ((types[7] = (hid_t_f)H5Tcopy(H5T_NATIVE_SHORT)) < 0) return ret_value; - } /*end if */ - else if (sizeof(int_2_f) == sizeof(int)) { - if ((types[7] = (hid_t_f)H5Tcopy(H5T_NATIVE_INT)) < 0) return ret_value; - } /*end if */ - else if (sizeof(int_2_f) == sizeof(long long)) { - if ((types[7] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value; - } /*end else */ - else { - if ((types[7] = H5Tcopy (H5T_NATIVE_INT)) < 0) return ret_value; - if ( H5Tset_precision (types[7], 128) < 0) return ret_value; - } /*end else */ - /* - * FIND H5T_NATIVE_INTEGER_4 - */ - if (sizeof(int_4_f) == sizeof(char)) { - if ((types[8] = (hid_t_f)H5Tcopy(H5T_NATIVE_CHAR)) < 0) return ret_value; - } /*end if */ - else if (sizeof(int_4_f) == sizeof(short)) { - if ((types[8] = (hid_t_f)H5Tcopy(H5T_NATIVE_SHORT)) < 0) return ret_value; - } /*end if */ - else if (sizeof(int_4_f) == sizeof(int)) { - if ((types[8] = (hid_t_f)H5Tcopy(H5T_NATIVE_INT)) < 0) return ret_value; - } /*end if */ - else if (sizeof(int_4_f) == sizeof(long long)) { - if ((types[8] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value; - } /*end else */ - else { - if ((types[8] = H5Tcopy (H5T_NATIVE_INT)) < 0) return ret_value; - if ( H5Tset_precision (types[8], 128) < 0) return ret_value; - } /*end else */ - /* - * FIND H5T_NATIVE_INTEGER_8 - */ - if (sizeof(int_8_f) == sizeof(char)) { - if ((types[9] = (hid_t_f)H5Tcopy(H5T_NATIVE_CHAR)) < 0) return ret_value; - } /*end if */ - else if (sizeof(int_8_f) == sizeof(short)) { - if ((types[9] = (hid_t_f)H5Tcopy(H5T_NATIVE_SHORT)) < 0) return ret_value; - } /*end if */ - else if (sizeof(int_8_f) == sizeof(int)) { - if ((types[9] = (hid_t_f)H5Tcopy(H5T_NATIVE_INT)) < 0) return ret_value; - } /*end if */ - else if (sizeof(int_8_f) == sizeof(long long)) { - if ((types[9] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value; - } /*end else */ - else { - if ((types[9] = H5Tcopy (H5T_NATIVE_INT)) < 0) return ret_value; - if ( H5Tset_precision (types[9], 128) < 0) return ret_value; - } /*end else */ + if ((types[9] = (hid_t_f)H5Tcopy(H5T_STD_REF_OBJ)) < 0) return ret_value; + if ((types[10] = (hid_t_f)H5Tcopy(H5T_STD_REF_DSETREG)) < 0) return ret_value; /* * FIND H5T_NATIVE_REAL_C_FLOAT */ if (sizeof(real_C_FLOAT_f) == sizeof(float)) { - if ((types[10] = (hid_t_f)H5Tcopy(H5T_NATIVE_FLOAT)) < 0) return ret_value; + if ((types[11] = (hid_t_f)H5Tcopy(H5T_NATIVE_FLOAT)) < 0) return ret_value; } /*end if */ else if (sizeof(real_C_FLOAT_f) == sizeof(double)) { - if ((types[10] = (hid_t_f)H5Tcopy(H5T_NATIVE_DOUBLE)) < 0) return ret_value; + if ((types[11] = (hid_t_f)H5Tcopy(H5T_NATIVE_DOUBLE)) < 0) return ret_value; } /*end if */ #if H5_SIZEOF_LONG_DOUBLE!=0 else if (sizeof(real_C_FLOAT_f) == sizeof(long double)) { - if ((types[10] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value; + if ((types[11] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value; } /*end else */ #endif /* * FIND H5T_NATIVE_REAL_C_DOUBLE */ if (sizeof(real_C_DOUBLE_f) == sizeof(float)) { - if ((types[11] = (hid_t_f)H5Tcopy(H5T_NATIVE_FLOAT)) < 0) return ret_value; + if ((types[12] = (hid_t_f)H5Tcopy(H5T_NATIVE_FLOAT)) < 0) return ret_value; } /*end if */ else if (sizeof(real_C_DOUBLE_f) == sizeof(double)) { - if ((types[11] = (hid_t_f)H5Tcopy(H5T_NATIVE_DOUBLE)) < 0) return ret_value; + if ((types[12] = (hid_t_f)H5Tcopy(H5T_NATIVE_DOUBLE)) < 0) return ret_value; } /*end if */ #if H5_SIZEOF_LONG_DOUBLE!=0 else if (sizeof(real_C_DOUBLE_f) == sizeof(long double)) { - if ((types[11] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value; + if ((types[12] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value; } /*end else */ #endif /* @@ -229,60 +196,35 @@ h5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertypes */ #if H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE!=0 if (sizeof(real_C_LONG_DOUBLE_f) == sizeof(float)) { - if ((types[12] = (hid_t_f)H5Tcopy(H5T_NATIVE_FLOAT)) < 0) return ret_value; + if ((types[13] = (hid_t_f)H5Tcopy(H5T_NATIVE_FLOAT)) < 0) return ret_value; } /*end if */ else if (sizeof(real_C_LONG_DOUBLE_f) == sizeof(double)) { - if ((types[12] = (hid_t_f)H5Tcopy(H5T_NATIVE_DOUBLE)) < 0) return ret_value; + if ((types[13] = (hid_t_f)H5Tcopy(H5T_NATIVE_DOUBLE)) < 0) return ret_value; } /*end if */ # if H5_FORTRAN_HAVE_C_LONG_DOUBLE!=0 else if (sizeof(real_C_LONG_DOUBLE_f) == sizeof(long double)) { if ( H5_PAC_C_MAX_REAL_PRECISION >= H5_PAC_FC_MAX_REAL_PRECISION) { - if ((types[12] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value; + if ((types[13] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value; } else { - if ((types[12] = H5Tcopy (H5T_NATIVE_FLOAT)) < 0) return ret_value; - if ( H5Tset_precision (types[12], 128) < 0) return ret_value; + if ((types[13] = H5Tcopy (H5T_NATIVE_FLOAT)) < 0) return ret_value; + if ( H5Tset_precision (types[13], 128) < 0) return ret_value; } } # else - if ((types[12] = H5Tcopy (H5T_NATIVE_FLOAT)) < 0) return ret_value; - if ( H5Tset_precision (types[12], 64) < 0) return ret_value; + if ((types[13] = H5Tcopy (H5T_NATIVE_FLOAT)) < 0) return ret_value; + if ( H5Tset_precision (types[13], 64) < 0) return ret_value; # endif #else - if ((types[12] = H5Tcopy(H5T_NATIVE_DOUBLE)) < 0) return ret_value; + if ((types[13] = H5Tcopy(H5T_NATIVE_DOUBLE)) < 0) return ret_value; #endif /* * FIND H5T_NATIVE_B_8 */ - if ((types[13] = (hid_t_f)H5Tcopy(H5T_NATIVE_B8)) < 0) return ret_value; - if ((types[14] = (hid_t_f)H5Tcopy(H5T_NATIVE_B16)) < 0) return ret_value; - if ((types[15] = (hid_t_f)H5Tcopy(H5T_NATIVE_B32)) < 0) return ret_value; - if ((types[16] = (hid_t_f)H5Tcopy(H5T_NATIVE_B64)) < 0) return ret_value; - -#if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0 - /* - * FIND H5T_NATIVE_INTEGER_16 - */ - if (sizeof(int_16_f) == sizeof(char)) { - if ((types[17] = (hid_t_f)H5Tcopy(H5T_NATIVE_CHAR)) < 0) return ret_value; - } /*end if */ - else if (sizeof(int_16_f) == sizeof(short)) { - if ((types[17] = (hid_t_f)H5Tcopy(H5T_NATIVE_SHORT)) < 0) return ret_value; - } /*end if */ - else if (sizeof(int_16_f) == sizeof(int)) { - if ((types[17] = (hid_t_f)H5Tcopy(H5T_NATIVE_INT)) < 0) return ret_value; - } /*end if */ - else if (sizeof(int_16_f) == sizeof(long long)) { - if ((types[17] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value; - } /*end else */ - else { - if ((types[17] = H5Tcopy (H5T_NATIVE_INT)) < 0) return ret_value; - if ( H5Tset_precision (types[17], 128) < 0) return ret_value; - } /*end else */ -#else - if ((types[17] = H5Tcopy (H5T_NATIVE_INT)) < 0) return ret_value; - if ( H5Tset_precision (types[17], 128) < 0) return ret_value; -#endif + if ((types[14] = (hid_t_f)H5Tcopy(H5T_NATIVE_B8)) < 0) return ret_value; + if ((types[15] = (hid_t_f)H5Tcopy(H5T_NATIVE_B16)) < 0) return ret_value; + if ((types[16] = (hid_t_f)H5Tcopy(H5T_NATIVE_B32)) < 0) return ret_value; + if ((types[17] = (hid_t_f)H5Tcopy(H5T_NATIVE_B64)) < 0) return ret_value; /* * FIND H5T_NATIVE_FLOAT_128 diff --git a/fortran/src/H5_ff.F90 b/fortran/src/H5_ff.F90 index 169864f..9717d17 100644 --- a/fortran/src/H5_ff.F90 +++ b/fortran/src/H5_ff.F90 @@ -379,27 +379,24 @@ CONTAINS IMPLICIT NONE INTEGER, INTENT(IN) :: ikind INTEGER, INTENT(IN) :: flag -#if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0 - INTEGER :: Fortran_INTEGER_16 - Fortran_INTEGER_16=SELECTED_INT_KIND(36) !should map to INTEGER*16 on most modern processors -#endif - - + INTEGER :: i !***** + +!#if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0 +! ! (1) The array index assumes INTEGER*16 the last integer in the series, and +! ! (2) it should map to INTEGER*16 on most modern processors +! H5T_NATIVE_INTEGER_KIND(H5_FORTRAN_NUM_INTEGER_KINDS)=SELECTED_INT_KIND(36) +!#endif + + h5_type = -1 IF(flag.EQ.H5_INTEGER_KIND)THEN - IF(ikind.EQ.Fortran_INTEGER_1)THEN - h5_type = H5T_NATIVE_INTEGER_1 - ELSE IF(ikind.EQ.Fortran_INTEGER_2)THEN - h5_type = H5T_NATIVE_INTEGER_2 - ELSE IF(ikind.EQ.Fortran_INTEGER_4)THEN - h5_type = H5T_NATIVE_INTEGER_4 - ELSE IF(ikind.EQ.Fortran_INTEGER_8)THEN - h5_type = H5T_NATIVE_INTEGER_8 -#if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0 - ELSE IF(ikind.EQ.Fortran_INTEGER_16)THEN - h5_type = H5T_NATIVE_INTEGER_16 -#endif - ENDIF + do_kind: DO i = 1, H5_FORTRAN_NUM_INTEGER_KINDS + IF(ikind.EQ.Fortran_INTEGER_AVAIL_KINDS(i))THEN + !PRINT*,ikind, Fortran_INTEGER_AVAIL_KINDS(i),H5T_NATIVE_INTEGER_KIND(i) + h5_type = H5T_NATIVE_INTEGER_KIND(i) + EXIT do_kind + ENDIF + END DO do_kind ELSE IF(flag.EQ.H5_REAL_KIND)THEN IF(ikind.EQ.KIND(1.0_C_FLOAT))THEN h5_type = H5T_NATIVE_REAL_C_FLOAT @@ -414,9 +411,6 @@ CONTAINS ELSE h5_type = H5T_NATIVE_FLOAT_128 #endif -#else - ELSE - h5_type = -1 #endif ENDIF ENDIF diff --git a/fortran/src/H5f90global.F90 b/fortran/src/H5f90global.F90 index af0a000..aef3e4d 100644 --- a/fortran/src/H5f90global.F90 +++ b/fortran/src/H5f90global.F90 @@ -115,8 +115,11 @@ MODULE H5GLOBAL H5T_STD_U16BE, & H5T_STD_U16LE, & H5T_STD_U32BE - - INTEGER(HID_T) :: H5T_NATIVE_INTEGER_16 ! NEED IFDEF -MSB- + + INTEGER, PARAMETER :: NUM_NATIVE_INTEGER_KIND = 5 + ! INTEGER*1, INTEGER*2, INTEGER*4, INTEGER*8, INTEGER*16 + INTEGER(HID_T), DIMENSION(1:NUM_NATIVE_INTEGER_KIND) :: H5T_NATIVE_INTEGER_KIND + INTEGER(HID_T) :: H5T_NATIVE_FLOAT_128 ! NEED IFDEF -MSB- ! NOTE: Splitting the line since the Fortran 95 standard limits the number of @@ -144,24 +147,24 @@ MODULE H5GLOBAL INTEGER(HID_T), DIMENSION(PREDEF_TYPES_LEN) :: predef_types - EQUIVALENCE (predef_types(1), H5T_NATIVE_INTEGER) - EQUIVALENCE (predef_types(2), H5T_NATIVE_REAL) - EQUIVALENCE (predef_types(3), H5T_NATIVE_DOUBLE) - EQUIVALENCE (predef_types(4), H5T_NATIVE_CHARACTER) - EQUIVALENCE (predef_types(5), H5T_STD_REF_OBJ) - EQUIVALENCE (predef_types(6), H5T_STD_REF_DSETREG) - EQUIVALENCE (predef_types(7), H5T_NATIVE_INTEGER_1) - EQUIVALENCE (predef_types(8), H5T_NATIVE_INTEGER_2) - EQUIVALENCE (predef_types(9), H5T_NATIVE_INTEGER_4) - EQUIVALENCE (predef_types(10), H5T_NATIVE_INTEGER_8) - EQUIVALENCE (predef_types(11), H5T_NATIVE_REAL_C_FLOAT) - EQUIVALENCE (predef_types(12), H5T_NATIVE_REAL_C_DOUBLE) - EQUIVALENCE (predef_types(13), H5T_NATIVE_REAL_C_LONG_DOUBLE) - EQUIVALENCE (predef_types(14), H5T_NATIVE_B8 ) - EQUIVALENCE (predef_types(15), H5T_NATIVE_B16) - EQUIVALENCE (predef_types(16), H5T_NATIVE_B32) - EQUIVALENCE (predef_types(17), H5T_NATIVE_B64) - EQUIVALENCE (predef_types(18), H5T_NATIVE_INTEGER_16) ! ADDED NEW TYPE -MSB- + EQUIVALENCE (predef_types(1), H5T_NATIVE_INTEGER_KIND(1)) + EQUIVALENCE (predef_types(2), H5T_NATIVE_INTEGER_KIND(2)) + EQUIVALENCE (predef_types(3), H5T_NATIVE_INTEGER_KIND(3)) + EQUIVALENCE (predef_types(4), H5T_NATIVE_INTEGER_KIND(4)) + EQUIVALENCE (predef_types(5), H5T_NATIVE_INTEGER_KIND(5)) + EQUIVALENCE (predef_types(6), H5T_NATIVE_INTEGER) + EQUIVALENCE (predef_types(7), H5T_NATIVE_REAL) + EQUIVALENCE (predef_types(8), H5T_NATIVE_DOUBLE) + EQUIVALENCE (predef_types(9), H5T_NATIVE_CHARACTER) + EQUIVALENCE (predef_types(10), H5T_STD_REF_OBJ) + EQUIVALENCE (predef_types(11), H5T_STD_REF_DSETREG) + EQUIVALENCE (predef_types(12), H5T_NATIVE_REAL_C_FLOAT) + EQUIVALENCE (predef_types(13), H5T_NATIVE_REAL_C_DOUBLE) + EQUIVALENCE (predef_types(14), H5T_NATIVE_REAL_C_LONG_DOUBLE) + EQUIVALENCE (predef_types(15), H5T_NATIVE_B8 ) + EQUIVALENCE (predef_types(16), H5T_NATIVE_B16) + EQUIVALENCE (predef_types(17), H5T_NATIVE_B32) + EQUIVALENCE (predef_types(18), H5T_NATIVE_B64) EQUIVALENCE (predef_types(19), H5T_NATIVE_FLOAT_128) ! ADDED NEW TYPE -MSB- INTEGER(HID_T), DIMENSION(FLOATING_TYPES_LEN) :: floating_types diff --git a/fortran/src/H5match_types.c b/fortran/src/H5match_types.c index 98128db..6f5af49 100644 --- a/fortran/src/H5match_types.c +++ b/fortran/src/H5match_types.c @@ -100,7 +100,7 @@ initFfile(void) ! access to either file, you may request a copy from help@hdfgroup.org. *\n\ ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\ !\n!\n\ -! This file is automatically generated and contains HDF5 Fortran90 type definitions.\n!\n\ +! This file is automatically generated by H5match_types.c and contains HDF5 Fortran90 type definitions.\n!\n\ MODULE H5FORTRAN_TYPES\n\ USE ISO_C_BINDING\n\ !\n\ @@ -175,6 +175,11 @@ int main(void) H5_FORTRAN_NUM_INTEGER_KINDS = (int)(sizeof(IntKinds)/sizeof(IntKinds[0])); H5_FORTRAN_NUM_REAL_KINDS = (int)(sizeof(RealKinds)/sizeof(RealKinds[0])); + + + fprintf(fort_header," INTEGER, PARAMETER :: H5_FORTRAN_NUM_INTEGER_KINDS = %d\n", H5_FORTRAN_NUM_INTEGER_KINDS); + + for(i=0;i< H5_FORTRAN_NUM_INTEGER_KINDS;i++) { if(sizeof(long long) == IntKinds_SizeOf[i]) writeTypedef("int", "long long", IntKinds[i]); @@ -258,7 +263,7 @@ int main(void) /* haddr_t */ for(i=0;i< H5_FORTRAN_NUM_INTEGER_KINDS;i++) { if(IntKinds_SizeOf[i] == H5_SIZEOF_HADDR_T) { - writeToFiles("int","HADDR_T", "haddr_t_f", H5_SIZEOF_HADDR_T, IntKinds[i]); + writeToFiles("int","HADDR_T", "haddr_t_f", IntKinds[i], IntKinds[i]); break; } if(i == (H5_FORTRAN_NUM_INTEGER_KINDS-1) ) @@ -269,7 +274,7 @@ int main(void) /* hsize_t */ for(i=0;i< H5_FORTRAN_NUM_INTEGER_KINDS;i++) { if(IntKinds_SizeOf[i] == H5_SIZEOF_HSIZE_T) { - writeToFiles("hsize_t","HSIZE_T", "hsize_t_f", H5_SIZEOF_HSIZE_T, IntKinds[i]); + writeToFiles("hsize_t","HSIZE_T", "hsize_t_f", IntKinds[i], IntKinds[i]); break; } if(i == (H5_FORTRAN_NUM_INTEGER_KINDS-1) ) @@ -280,7 +285,7 @@ int main(void) /* hssize_t */ for(i=0;i< H5_FORTRAN_NUM_INTEGER_KINDS;i++) { if(IntKinds_SizeOf[i] == H5_SIZEOF_HSSIZE_T) { - writeToFiles("int","HSSIZE_T", "hssize_t_f", H5_SIZEOF_HSSIZE_T, IntKinds[i]); + writeToFiles("int","HSSIZE_T", "hssize_t_f", IntKinds[i], IntKinds[i]); break; } if(i == (H5_FORTRAN_NUM_INTEGER_KINDS-1) ) @@ -291,7 +296,7 @@ int main(void) /* off_t */ for(i=0;i< H5_FORTRAN_NUM_INTEGER_KINDS;i++) { if(IntKinds_SizeOf[i] == H5_SIZEOF_OFF_T) { - writeToFiles("int","OFF_T", "off_t_f", H5_SIZEOF_OFF_T, IntKinds[i]); + writeToFiles("int","OFF_T", "off_t_f", IntKinds[i], IntKinds[i]); break; } if(i == (H5_FORTRAN_NUM_INTEGER_KINDS-1) ) @@ -302,7 +307,7 @@ int main(void) /* size_t */ for(i=0;i< H5_FORTRAN_NUM_INTEGER_KINDS;i++) { if(IntKinds_SizeOf[i] == H5_SIZEOF_SIZE_T) { - writeToFiles("size_t","SIZE_T", "size_t_f", H5_SIZEOF_SIZE_T, IntKinds[i]); + writeToFiles("size_t","SIZE_T", "size_t_f", IntKinds[i], IntKinds[i]); break; } if(i == (H5_FORTRAN_NUM_INTEGER_KINDS-1) ) @@ -311,7 +316,7 @@ int main(void) } /* int */ - writeToFiles("int","Fortran_INTEGER", "int_f", H5_FORTRAN_NATIVE_INTEGER_SIZEOF, H5_FORTRAN_NATIVE_INTEGER_KIND); + writeToFiles("int","Fortran_INTEGER", "int_f", H5_FORTRAN_NATIVE_INTEGER_KIND, H5_FORTRAN_NATIVE_INTEGER_KIND); /* int_1, int_2, int_4, int_8 */ @@ -327,16 +332,29 @@ int main(void) FoundIntSize[3] = -1; FoundIntSize[4] = -1; + fprintf(fort_header," INTEGER, DIMENSION(1:%d), PARAMETER :: Fortran_INTEGER_AVAIL_KINDS = (/", H5_FORTRAN_NUM_INTEGER_KINDS); + for(i=0;i 0) /* Found the integer type */ { - sprintf(chrA, "Fortran_INTEGER_%d", FoundIntSize[i]); + sprintf(chrA, "Fortran_INTEGER_KINDS_%d", FoundIntSizeKind[i]); sprintf(chrB, "int_%d_f", FoundIntSize[i]); writeToFiles("int",chrA, chrB, FoundIntSize[i], FoundIntSizeKind[i]); } @@ -347,7 +365,7 @@ int main(void) { if( FoundIntSize[j] > 0) /* Found the next highest */ { - sprintf(chrA, "Fortran_INTEGER_%d", (-1)*FoundIntSize[i]); + sprintf(chrA, "Fortran_INTEGER_KINDS_%d", (-1)*FoundIntSizeKind[i]); sprintf(chrB, "int_%d_f", (-1)*FoundIntSize[i]); writeToFiles("int",chrA, chrB, FoundIntSize[j], FoundIntSizeKind[j]); flag = 1; @@ -360,7 +378,7 @@ int main(void) { if( FoundIntSize[j] > 0) /* Found the next lowest */ { - sprintf(chrA, "Fortran_INTEGER_%d", (-1)*FoundIntSize[i]); + sprintf(chrA, "Fortran_INTEGER_KINDS_%d", (-1)*FoundIntSizeKind[i]); sprintf(chrB, "int_%d_f", (-1)*FoundIntSize[i]); writeToFiles("int",chrA, chrB, FoundIntSize[j], FoundIntSizeKind[j]); flag = 1; @@ -391,7 +409,7 @@ int main(void) /* hid_t */ for(i=0;i< H5_FORTRAN_NUM_INTEGER_KINDS;i++) { if(IntKinds_SizeOf[i] == H5_SIZEOF_HID_T) { - writeToFiles("int","HID_T", "hid_t_f", H5_SIZEOF_HID_T, IntKinds[i]); + writeToFiles("int","HID_T", "hid_t_f", IntKinds[i], IntKinds[i]); break; } if(i == (H5_FORTRAN_NUM_INTEGER_KINDS-1) ) diff --git a/fortran/test/fortranlib_test_F03.F90 b/fortran/test/fortranlib_test_F03.F90 index 070cd73..5f5fd2d 100644 --- a/fortran/test/fortranlib_test_F03.F90 +++ b/fortran/test/fortranlib_test_F03.F90 @@ -131,7 +131,7 @@ PROGRAM fortranlibtest_F03 ret_total_error = 0 CALL test_array_bkg(ret_total_error) - CALL write_test_status(ret_total_error, ' Testing Partial I/O of Array Fields in Compound Datatype FunctionalityT', total_error) + CALL write_test_status(ret_total_error, ' Testing Partial I/O of Array Fields in Compound Datatype Functionality', total_error) ret_total_error = 0 CALL test_genprop_class_callback(ret_total_error) diff --git a/fortran/test/tH5T_F03.F90 b/fortran/test/tH5T_F03.F90 index 6ddded4..a9148a7 100644 --- a/fortran/test/tH5T_F03.F90 +++ b/fortran/test/tH5T_F03.F90 @@ -1144,33 +1144,33 @@ END SUBROUTINE test_array_compound_atomic ! ! Read data back into an integer size that is larger then the original size used for ! writing the data - f_ptr = C_LOC(data_out_i1) + f_ptr = C_LOC(data_out_i1(1)) CALL h5dread_f(dset_id1, h5kind_to_type(int_kind_1,H5_INTEGER_KIND), f_ptr, error) CALL check("h5dread_f",error, total_error) - f_ptr = C_LOC(data_out_i4) + f_ptr = C_LOC(data_out_i4(1)) CALL h5dread_f(dset_id4, h5kind_to_type(int_kind_4,H5_INTEGER_KIND), f_ptr, error) CALL check("h5dread_f",error, total_error) - f_ptr = C_LOC(data_out_i8) + f_ptr = C_LOC(data_out_i8(1)) CALL h5dread_f(dset_id8, h5kind_to_type(int_kind_8,H5_INTEGER_KIND), f_ptr, error) CALL check("h5dread_f",error, total_error) - f_ptr = C_LOC(data_out_i16) + f_ptr = C_LOC(data_out_i16(1)) CALL h5dread_f(dset_id16, h5kind_to_type(int_kind_16,H5_INTEGER_KIND), f_ptr, error) CALL check("h5dread_f",error, total_error) #if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0 - f_ptr = C_LOC(data_out_i32) + f_ptr = C_LOC(data_out_i32(1)) CALL h5dread_f(dset_id32, h5kind_to_type(int_kind_32,H5_INTEGER_KIND), f_ptr, error) CALL check("h5dread_f",error, total_error) #endif - f_ptr = C_LOC(data_out_r) + f_ptr = C_LOC(data_out_r(1)) CALL h5dread_f(dset_idr, H5T_NATIVE_REAL, f_ptr, error) CALL check("h5dread_f",error, total_error) - f_ptr = C_LOC(data_out_r7) + f_ptr = C_LOC(data_out_r7(1)) CALL h5dread_f(dset_idr4, h5kind_to_type(real_kind_7,H5_REAL_KIND), f_ptr, error) CALL check("h5dread_f",error, total_error) - f_ptr = C_LOC(data_out_r15) + f_ptr = C_LOC(data_out_r15(1)) CALL h5dread_f(dset_idr8, h5kind_to_type(real_kind_15,H5_REAL_KIND), f_ptr, error) CALL check("h5dread_f",error, total_error) - f_ptr = C_LOC(data_out_r31) + f_ptr = C_LOC(data_out_r31(1)) CALL h5dread_f(dset_idr16, h5kind_to_type(real_kind_31,H5_REAL_KIND), f_ptr, error) CALL check("h5dread_f",error, total_error) DO i = 1, 4 @@ -2000,7 +2000,7 @@ SUBROUTINE t_regref(total_error) CALL h5dcreate_f(file,dataset2, H5T_STD_I8LE, space, dset2, error) CALL check("h5dcreate_f",error, total_error) f_ptr = C_LOC(wdata2(1,1)) - CALL h5dwrite_f(dset2, H5T_NATIVE_INTEGER_1, f_ptr, error) + CALL h5dwrite_f(dset2, H5T_NATIVE_INTEGER_KIND(1), f_ptr, error) CALL check("h5dwrite_f",error, total_error) ! ! Create reference to a list of elements in dset2. @@ -2112,7 +2112,7 @@ SUBROUTINE t_regref(total_error) CALL check("h5screate_simple_f",error, total_error) f_ptr = C_LOC(rdata2(1)(1:1)) - CALL h5dread_f( dset2, H5T_NATIVE_INTEGER_1, f_ptr, error, memspace, space) + CALL h5dread_f( dset2, H5T_NATIVE_INTEGER_KIND(1), f_ptr, error, memspace, space) CALL check("H5Dread_f",error, total_error) CALL verify("h5dread_f",rdata2(1)(1:npoints),TRIM(chrref_correct(i)), total_error) @@ -2886,33 +2886,23 @@ SUBROUTINE setup_buffer(data_in, line_lengths, char_type) CHARACTER(len=10), DIMENSION(:) :: data_in INTEGER(size_t), DIMENSION(:) :: line_lengths - INTEGER, DIMENSION(1:3) :: letters - CHARACTER(LEN=3) :: lets + CHARACTER(LEN=3) :: lets = 'abc' CHARACTER(KIND=C_CHAR,LEN=*) :: char_type - CHARACTER(KIND=C_CHAR,LEN=1) :: char_tmp - INTEGER :: i, j, n, ff + INTEGER :: i, j, n - ! Convert the letters and special character to integers - lets = 'abc' - - READ(lets,'(3A1)') letters - READ(char_type,'(A1)') ff n = SIZE(data_in) j = 1 DO i=1,n-1 IF( j .EQ. 4 )THEN - WRITE(char_tmp,'(A1)') ff - data_in(i:i) = char_tmp + data_in(i:i) = char_type(1:1) ELSE - WRITE(char_tmp,'(A1)') letters(j) - data_in(i:i) = char_tmp + data_in(i:i) = lets(j:j) ENDIF line_lengths(i) = LEN_TRIM(data_in(i)) j = j + 1 IF( j .EQ. 5 ) j = 1 END DO - WRITE(char_tmp,'(A1)') ff - data_in(n:n) = char_tmp + data_in(n:n) = char_type(1:1) line_lengths(n) = 1 END SUBROUTINE setup_buffer -- cgit v0.12 From 362233bd452ea7997b5961a753ebd8be3876e64f Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Thu, 22 Sep 2016 15:22:11 -0500 Subject: Code clean-up. --- fortran/src/H5_ff.F90 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fortran/src/H5_ff.F90 b/fortran/src/H5_ff.F90 index 9717d17..228e148 100644 --- a/fortran/src/H5_ff.F90 +++ b/fortran/src/H5_ff.F90 @@ -392,7 +392,6 @@ CONTAINS IF(flag.EQ.H5_INTEGER_KIND)THEN do_kind: DO i = 1, H5_FORTRAN_NUM_INTEGER_KINDS IF(ikind.EQ.Fortran_INTEGER_AVAIL_KINDS(i))THEN - !PRINT*,ikind, Fortran_INTEGER_AVAIL_KINDS(i),H5T_NATIVE_INTEGER_KIND(i) h5_type = H5T_NATIVE_INTEGER_KIND(i) EXIT do_kind ENDIF @@ -406,7 +405,7 @@ CONTAINS ELSE IF(ikind.EQ.KIND(1.0_C_LONG_DOUBLE))THEN h5_type = H5T_NATIVE_REAL_C_LONG_DOUBLE #endif -#if H5_PAC_FC_MAX_REAL_PRECISION > 28 +#if H5_PAC_FC_MAX_REAL_PRECISION > 28 #if H5_HAVE_FLOAT128 == 1 ELSE h5_type = H5T_NATIVE_FLOAT_128 -- cgit v0.12 From 3c37126585bbb2f788d6a71449ffbb61efc5141f Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Thu, 22 Sep 2016 15:24:35 -0500 Subject: Removed the use of hard-coded integer KINDs. --- hl/fortran/test/tsttable.F90 | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/hl/fortran/test/tsttable.F90 b/hl/fortran/test/tsttable.F90 index 62d291f..bffbb03 100644 --- a/hl/fortran/test/tsttable.F90 +++ b/hl/fortran/test/tsttable.F90 @@ -185,7 +185,7 @@ SUBROUTINE test_table1() ! make table !------------------------------------------------------------------------- - test_txt = " Make table" + test_txt = "Make table" CALL test_begin(test_txt) CALL h5tbmake_table_f(dsetname1,& @@ -508,7 +508,6 @@ SUBROUTINE test_table1() WRITE(*,'(/,5X,"H5TBGET_FIELD_INFO_F: RETURN ERROR")') STOP ENDIF - ! "field4abc" was deleted and "field5" was added. field_names(4) = "field5" @@ -538,7 +537,6 @@ SUBROUTINE test_table1() ! CALL h5fclose_f(file_id, errcode) - ! ! end function. ! @@ -557,15 +555,15 @@ SUBROUTINE test_table2() IMPLICIT NONE - INTEGER, PARAMETER :: int_kind_8 = SELECTED_INT_KIND(9) !should map to INTEGER*4 on most modern processors - INTEGER, PARAMETER :: int_kind_16 = SELECTED_INT_KIND(9) ! (18) !should map to INTEGER*8 on most modern processors + INTEGER, PARAMETER :: i8 = SELECTED_INT_KIND(9) !should map to INTEGER*4 on most modern processors + INTEGER, PARAMETER :: i16 = SELECTED_INT_KIND(9) ! (18) !should map to INTEGER*8 on most modern processors INTEGER, PARAMETER :: sp = SELECTED_REAL_KIND(5) ! This should map to REAL*4 on most modern processors INTEGER, PARAMETER :: dp = SELECTED_REAL_KIND(10) ! This should map to REAL*8 on most modern processors TYPE particle_t CHARACTER(LEN=11) :: name - INTEGER(KIND=int_kind_8) :: lati - INTEGER(KIND=int_kind_16) :: long + INTEGER(KIND=i8) :: lati + INTEGER(KIND=i16) :: long REAL(KIND=sp) :: pressure REAL(KIND=dp) :: temperature END TYPE particle_t @@ -607,23 +605,23 @@ SUBROUTINE test_table2() test_txt = "Testing H5TBread_table_f and H5TBmake_table_f (F2003)" CALL test_begin(test_txt) + ! Define an array of Particles p_data(1:nrecords) = (/ & - particle_t("zero ",0_int_kind_8,0_int_kind_16,0.0_sp,0.0_dp), & - particle_t("one ",10_int_kind_8,10_int_kind_16,10.0_sp,10.0_dp), & - particle_t("two ",20_int_kind_8,20_int_kind_16,20.0_sp,20.0_dp), & - particle_t("three ",30_int_kind_8,30_int_kind_16,30.0_sp,30.0_dp),& - particle_t("four ",40_int_kind_8,40_int_kind_16,40.0_sp,40.0_dp), & - particle_t("five ",50_int_kind_8,50_int_kind_16,50.0_sp,50.0_dp), & - particle_t("six ",60_int_kind_8,60_int_kind_16,60.0_sp,60.0_dp), & - particle_t("seven ",70_int_kind_8,70_int_kind_16,70.0_sp,70.0_dp) & + particle_t("zero ",0_i8,0_i16,0.0_sp,0.0_dp), & + particle_t("one ",10_i8,10_i16,10.0_sp,10.0_dp), & + particle_t("two ",20_i8,20_i16,20.0_sp,20.0_dp), & + particle_t("three ",30_i8,30_i16,30.0_sp,30.0_dp),& + particle_t("four ",40_i8,40_i16,40.0_sp,40.0_dp), & + particle_t("five ",50_i8,50_i16,50.0_sp,50.0_dp), & + particle_t("six ",60_i8,60_i16,60.0_sp,60.0_dp), & + particle_t("seven ",70_i8,70_i16,70.0_sp,70.0_dp) & /) - fill_data(1:nrecords) = particle_t("no data",-1_int_kind_8, -2_int_kind_16, -99.0_sp, -100.0_dp) + fill_data(1:nrecords) = particle_t("no data",-1_i8, -2_i16, -99.0_sp, -100.0_dp) compress = 0 - dst_size = H5OFFSETOF(C_LOC(dst_buf(1)), C_LOC(dst_buf(2))) #ifdef H5_FORTRAN_HAVE_STORAGE_SIZE -- cgit v0.12 From 7cbf491e29cb9c2cfa3fbbd232f48a51cfaebff4 Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Thu, 22 Sep 2016 17:19:48 -0500 Subject: misc. format code-cleanup --- fortran/src/H5match_types.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/fortran/src/H5match_types.c b/fortran/src/H5match_types.c index 6f5af49..b19d7b1 100644 --- a/fortran/src/H5match_types.c +++ b/fortran/src/H5match_types.c @@ -175,8 +175,6 @@ int main(void) H5_FORTRAN_NUM_INTEGER_KINDS = (int)(sizeof(IntKinds)/sizeof(IntKinds[0])); H5_FORTRAN_NUM_REAL_KINDS = (int)(sizeof(RealKinds)/sizeof(RealKinds[0])); - - fprintf(fort_header," INTEGER, PARAMETER :: H5_FORTRAN_NUM_INTEGER_KINDS = %d\n", H5_FORTRAN_NUM_INTEGER_KINDS); @@ -347,10 +345,6 @@ int main(void) } - - - - for(i=0;i 0) /* Found the integer type */ { -- cgit v0.12 From 430ff33b5c6e5e020afae7f150b8442c223353ca Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Fri, 23 Sep 2016 01:18:11 -0400 Subject: Added "Purpose:" information to the API call comments for the new functions. --- src/H5Pfapl.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/H5Pfapl.c b/src/H5Pfapl.c index d96bd54..8801061 100644 --- a/src/H5Pfapl.c +++ b/src/H5Pfapl.c @@ -3621,7 +3621,13 @@ done: /*------------------------------------------------------------------------- * Function: H5Pset_evict_on_close * - * Purpose: + * Purpose: Sets the evict_on_close property value. + * + * When this property is set, closing an HDF5 object will + * cause the object's metadata cache entries to be flushed + * and evicted from the cache. + * + * Currently only implemented for datasets. * * Return: SUCCEED/FAIL * @@ -3659,7 +3665,13 @@ done: /*------------------------------------------------------------------------- * Function: H5Pget_evict_on_close * - * Purpose: + * Purpose: Gets the evict_on_close property value. + * + * When this property is set, closing an HDF5 object will + * cause the object's metadata cache entries to be flushed + * and evicted from the cache. + * + * Currently only implemented for datasets. * * Return: SUCCEED/FAIL * -- cgit v0.12 From 7b056aadff59de5760246d6dff3f5402d0b887bf Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Fri, 23 Sep 2016 11:31:43 -0500 Subject: Added SEQUENCE to derived types for NAG: Section 81 of the compiler manual, e.g. at http://www.nag.co.uk/nagware/np/r61_doc/np61_manual.pdf covers details about the compiler's internal representations, including " Fortran derived types are translated into C structs. If BIND(C) or SEQUENCE is used, the order of the items within the struct is the same as the order within the derived type definition. Otherwise, the order of items is permuted to put larger types at the front of the struct so as to improve alignment and reduce storage; the C output code can be inspected to determine the ordering used. " Removed INTENT(IN) to fix segfaults in C APIs for TYPE(C_PTR). Tested: NAG (gnu) --- hl/fortran/src/H5TBff.F90 | 3 ++- hl/fortran/test/tsttable.F90 | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/hl/fortran/src/H5TBff.F90 b/hl/fortran/src/H5TBff.F90 index a31c751..5d1ee35 100644 --- a/hl/fortran/src/H5TBff.F90 +++ b/hl/fortran/src/H5TBff.F90 @@ -376,7 +376,8 @@ CONTAINS INTEGER(size_t), INTENT(in) :: dst_size ! The size of the structure type INTEGER(size_t), DIMENSION(1:nfields), INTENT(in) :: dst_offset ! An array containing the offsets of the fields INTEGER(size_t), DIMENSION(1:nfields), INTENT(in) :: dst_sizes ! An array containing the sizes of the fields - TYPE(C_PTR), INTENT(OUT) :: dst_buf ! Buffer with data + TYPE(C_PTR) :: dst_buf ! Buffer with data !! do not use INTENT, causes NAG + ! to segfault in C APIs INTEGER :: errcode ! error code INTEGER(size_t) :: namelen ! name length diff --git a/hl/fortran/test/tsttable.F90 b/hl/fortran/test/tsttable.F90 index bffbb03..3cf8fed 100644 --- a/hl/fortran/test/tsttable.F90 +++ b/hl/fortran/test/tsttable.F90 @@ -561,6 +561,7 @@ SUBROUTINE test_table2() INTEGER, PARAMETER :: dp = SELECTED_REAL_KIND(10) ! This should map to REAL*8 on most modern processors TYPE particle_t + SEQUENCE CHARACTER(LEN=11) :: name INTEGER(KIND=i8) :: lati INTEGER(KIND=i16) :: long @@ -671,11 +672,10 @@ SUBROUTINE test_table2() f_ptr1 = C_NULL_PTR f_ptr2 = C_LOC(fill_data(1)%name(1:1)) - CALL h5tbmake_table_f("Table Title Fill", file_id, table_name_fill, nfields, nrecords, & dst_size, field_names, dst_offset, field_type, & chunk_size, f_ptr2, compress, f_ptr1, errcode ) - + f_ptr3 = C_LOC(r_data(1)%name(1:1)) CALL h5tbread_table_f(file_id, table_name_fill, nfields, dst_size, dst_offset, dst_sizes, f_ptr3, errcode) -- cgit v0.12 From 3a89114ce59796045079e0a1ed83237cf395c333 Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Fri, 23 Sep 2016 14:08:04 -0500 Subject: Misc. cleaning up of the program. --- fortran/src/H5_f.c | 49 ++++++++++---------------------------- fortran/src/H5match_types.c | 58 ++------------------------------------------- 2 files changed, 15 insertions(+), 92 deletions(-) diff --git a/fortran/src/H5_f.c b/fortran/src/H5_f.c index 9d4c297..db05f67 100644 --- a/fortran/src/H5_f.c +++ b/fortran/src/H5_f.c @@ -66,9 +66,9 @@ h5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertypes */ /* - * FIND H5T_NATIVE_INTEGER_# + * Find the HDF5 type of the Fortran Integer KIND. */ - for(i=0;i<4;i++) { + for(i=0;i<5;i++) { if ( IntKinds_SizeOf[i] == sizeof(char)) { if ((types[i] = (hid_t_f)H5Tcopy(H5T_NATIVE_CHAR)) < 0) return ret_value; @@ -89,52 +89,27 @@ h5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertypes } -#if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0 - /* - * FIND H5T_NATIVE_INTEGER_KIND(5), INTEGER*16 - */ - if (sizeof(int_16_f) == sizeof(char)) { - if ((types[4] = (hid_t_f)H5Tcopy(H5T_NATIVE_CHAR)) < 0) return ret_value; - } /*end if */ - else if (sizeof(int_16_f) == sizeof(short)) { - if ((types[4] = (hid_t_f)H5Tcopy(H5T_NATIVE_SHORT)) < 0) return ret_value; - } /*end if */ - else if (sizeof(int_16_f) == sizeof(int)) { - if ((types[4] = (hid_t_f)H5Tcopy(H5T_NATIVE_INT)) < 0) return ret_value; - } /*end if */ - else if (sizeof(int_16_f) == sizeof(long long)) { - if ((types[4] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value; - } /*end else */ - else { - if ((types[4] = H5Tcopy (H5T_NATIVE_INT)) < 0) return ret_value; - if ( H5Tset_precision (types[4], 128) < 0) return ret_value; - } /*end else */ -#else - if ((types[4] = H5Tcopy (H5T_NATIVE_INT)) < 0) return ret_value; - if ( H5Tset_precision (types[4], 128) < 0) return ret_value; -#endif - if (sizeof(int_f) == sizeof(int)) { - if ((types[5] = (hid_t_f)H5Tcopy(H5T_NATIVE_INT)) < 0) return ret_value; + if ((types[5] = (hid_t_f)H5Tcopy(H5T_NATIVE_INT)) < 0) return ret_value; } /*end if */ else if (sizeof(int_f) == sizeof(long)) { - if ((types[5] = (hid_t_f)H5Tcopy(H5T_NATIVE_LONG)) < 0) return ret_value; + if ((types[5] = (hid_t_f)H5Tcopy(H5T_NATIVE_LONG)) < 0) return ret_value; } /*end if */ else - if (sizeof(int_f) == sizeof(long long)) { - if ((types[5] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value; + if (sizeof(int_f) == sizeof(long long)) { + if ((types[5] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value; } /*end else */ - + /* Find appropriate size to store Fortran REAL */ if(sizeof(real_f)==sizeof(float)) { - if ((types[6] = (hid_t_f)H5Tcopy(H5T_NATIVE_FLOAT)) < 0) return ret_value; + if ((types[6] = (hid_t_f)H5Tcopy(H5T_NATIVE_FLOAT)) < 0) return ret_value; } /* end if */ else if(sizeof(real_f)==sizeof(double)){ - if ((types[6] = (hid_t_f)H5Tcopy(H5T_NATIVE_DOUBLE)) < 0) return ret_value; + if ((types[6] = (hid_t_f)H5Tcopy(H5T_NATIVE_DOUBLE)) < 0) return ret_value; } /* end if */ #if H5_SIZEOF_LONG_DOUBLE!=0 else if (sizeof(real_f) == sizeof(long double)) { - if ((types[6] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value; + if ((types[6] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value; } /* end else */ #endif @@ -226,12 +201,14 @@ h5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertypes if ((types[16] = (hid_t_f)H5Tcopy(H5T_NATIVE_B32)) < 0) return ret_value; if ((types[17] = (hid_t_f)H5Tcopy(H5T_NATIVE_B64)) < 0) return ret_value; - /* + /* * FIND H5T_NATIVE_FLOAT_128 */ if ((types[18] = H5Tcopy (H5T_NATIVE_FLOAT)) < 0) return ret_value; if ( H5Tset_precision (types[18], 128) < 0) return ret_value; + /*--------------------------------------------------------------------------------------*/ + if ((floatingtypes[0] = (hid_t_f)H5Tcopy(H5T_IEEE_F32BE)) < 0) return ret_value; if ((floatingtypes[1] = (hid_t_f)H5Tcopy(H5T_IEEE_F32LE)) < 0) return ret_value; if ((floatingtypes[2] = (hid_t_f)H5Tcopy(H5T_IEEE_F64BE)) < 0) return ret_value; diff --git a/fortran/src/H5match_types.c b/fortran/src/H5match_types.c index b19d7b1..7340b13 100644 --- a/fortran/src/H5match_types.c +++ b/fortran/src/H5match_types.c @@ -52,6 +52,7 @@ FILE * fort_header; void writeTypedef(const char* c_typedef, const char* c_type, int size); void writeTypedefDefault(const char* c_typedef, int size); void writeToFiles(const char* c_typedef, const char* fortran_type, const char* c_type, int size, int kind); +void writeToCFileOnly(const char* c_typedef, const char* fortran_type, const char* c_type, int size); void writeToFilesChr(const char* c_typedef, const char* fortran_type, const char* c_type, int size, const char* kind); static void @@ -147,8 +148,6 @@ void writeToFilesChr(const char* c_typedef, const char* fortran_type, const char } int main(void) { - int FoundIntSize[10]; - int FoundIntSizeKind[10]; int i, j,flag; char chrA[32],chrB[32]; @@ -318,24 +317,11 @@ int main(void) /* int_1, int_2, int_4, int_8 */ -/* Defined different KINDs of integers: */ -/* if the integer kind is not available then we assign */ -/* it a value of the next larger one, but if the next */ -/* higher one is not available we assigned it the next lowest */ +/* Defined different KINDs of integers */ - - FoundIntSize[0] = -1; - FoundIntSize[1] = -1; - FoundIntSize[2] = -1; - FoundIntSize[3] = -1; - FoundIntSize[4] = -1; - fprintf(fort_header," INTEGER, DIMENSION(1:%d), PARAMETER :: Fortran_INTEGER_AVAIL_KINDS = (/", H5_FORTRAN_NUM_INTEGER_KINDS); for(i=0;i 0) /* Found the integer type */ - { - sprintf(chrA, "Fortran_INTEGER_KINDS_%d", FoundIntSizeKind[i]); - sprintf(chrB, "int_%d_f", FoundIntSize[i]); - writeToFiles("int",chrA, chrB, FoundIntSize[i], FoundIntSizeKind[i]); - } - else /* Did not find the integer type */ - { - flag = 0; /* flag indicating if found the next highest */ - for(j=i+1;j<4;j++) /* search for next highest */ - { - if( FoundIntSize[j] > 0) /* Found the next highest */ - { - sprintf(chrA, "Fortran_INTEGER_KINDS_%d", (-1)*FoundIntSizeKind[i]); - sprintf(chrB, "int_%d_f", (-1)*FoundIntSize[i]); - writeToFiles("int",chrA, chrB, FoundIntSize[j], FoundIntSizeKind[j]); - flag = 1; - break; - } - } - if(flag == 0) /* No higher one found, so find next lowest */ - { - for(j=2;j>-1;j--) /* Search for next lowest */ - { - if( FoundIntSize[j] > 0) /* Found the next lowest */ - { - sprintf(chrA, "Fortran_INTEGER_KINDS_%d", (-1)*FoundIntSizeKind[i]); - sprintf(chrB, "int_%d_f", (-1)*FoundIntSize[i]); - writeToFiles("int",chrA, chrB, FoundIntSize[j], FoundIntSizeKind[j]); - flag = 1; - break; - } - } - } - if(flag == 0) /* No higher or lower one found, indicating an error */ - return -1; - } - } - /* real_4, real_8, real_16 */ /* Defined different KINDs of reals: */ -- cgit v0.12 From 36fd53f70f3a13d5437def00377fc002bc75c116 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Sat, 24 Sep 2016 02:54:00 -0400 Subject: Fixed typo --- test/h5test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/h5test.c b/test/h5test.c index aea5dc7..591266b 100644 --- a/test/h5test.c +++ b/test/h5test.c @@ -196,7 +196,7 @@ h5_clean_files(const char *base_name[], hid_t fapl) * * Purpose Clean up temporary test files. * - * When a test calls h5_fixname() get a VFD-dependent + * When a test calls h5_fixname() to get a VFD-dependent * test file name, this function can be used to clean it up. * * Return: void -- cgit v0.12 From 2638cbbbffcaf52bf8f97133257c680fa5b14bd8 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Sat, 24 Sep 2016 02:54:27 -0400 Subject: Added the beginnings of a file generator to the test. --- test/evict_on_close.c | 202 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 186 insertions(+), 16 deletions(-) diff --git a/test/evict_on_close.c b/test/evict_on_close.c index bcbd030..bc47cef 100644 --- a/test/evict_on_close.c +++ b/test/evict_on_close.c @@ -24,7 +24,128 @@ #include "h5test.h" +const char *FILENAMES[] = { + "evict-on-close", /* 0 */ + NULL +}; +#define FILENAME_BUF_SIZE 1024 + +//#define DSET_NAME_COMPACT "compact" +//#define DSET_NAME_CONTIGUOUS "contiguous" +#define DSET_NAME_V1_BTREE "v1_btree" +//#define DSET_NAME_V2_BTREE "v2_btree" +//#define DSET_NAME_EARRAY "earray" +//#define DSET_NAME_FARRAY "farray" +//#define DSET_NAME_SINGLE "single" + static herr_t check_evict_on_close_api(void); +static herr_t generate_eoc_test_file(hid_t fapl_id); + + +/*------------------------------------------------------------------------- + * Function: generate_eoc_test_file() + * + * Purpose: Generate the evict-on-close test file. + * + * Return: SUCCEED/FAIL + * + * Programmer: Dana Robinson + * Fall 2016 + * + *------------------------------------------------------------------------- + */ +static herr_t +generate_eoc_test_file(hid_t fapl_id) +{ + char filename[FILENAME_BUF_SIZE]; /* decorated file name */ + hid_t fid = -1; /* file ID */ + hid_t fapl_copy_id = -1; /* ID of copied fapl */ + hid_t sid = -1; /* dataspace ID */ + hid_t dcpl_id = -1; /* dataset creation plist */ + hid_t did = -1; /* dataset ID */ + int rank; /* # of array dimensions */ + hsize_t current_dims[2]; /* current dataset size */ + hsize_t maximum_dims[2]; /* maximum dataset size */ + hsize_t chunk_dims[2]; /* chunk dimensions */ + int *data = NULL; /* buffer for fake data */ + int n; /* # of data elements */ + + TESTING("generating evict-on-close test file"); + + /* Get a VFD-specific filename */ + h5_fixname(FILENAMES[0], fapl_id, filename, sizeof(filename)); + + /* Create file */ + if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id)) < 0) + TEST_ERROR; + + /***********************************************************/ + /* Generate datasets and ensure that the scheme is correct */ + /***********************************************************/ + + /* Create the data buffer */ + if(NULL == (data = (int *)HDcalloc(1024, sizeof(int)))) + TEST_ERROR; + + /********************/ + /* Version 1 B-tree */ + /********************/ + + /* Create dataspace */ + n = 100; + rank = 1; + current_dims[0] = (hsize_t)n; + maximum_dims[0] = H5S_UNLIMITED; + if((sid = H5Screate_simple(rank, current_dims, maximum_dims)) < 0) + TEST_ERROR; + + /* Create dcpl and set up chunking */ + if((dcpl_id = H5Pcreate(H5P_DATASET_CREATE)) < 0) + TEST_ERROR; + chunk_dims[0] = 1; + if(H5Pset_chunk(dcpl_id, rank, chunk_dims) < 0) + TEST_ERROR; + + /* Create dataset */ + if((did = H5Dcreate(fid, DSET_NAME_V1_BTREE, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) + TEST_ERROR; + + /* Write a bunch of fake data */ + if(H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data) < 0) + TEST_ERROR; + + /* Close IDs for this dataset */ + if(H5Dclose(did) < 0) + TEST_ERROR; + if(H5Sclose(sid) < 0) + TEST_ERROR; + if(H5Pclose(dcpl_id) < 0) + TEST_ERROR; + + + /* Close everything else */ + if(H5Fclose(fid) < 0) + TEST_ERROR; + HDfree(data); + + PASSED(); + return SUCCEED; + +error: + H5E_BEGIN_TRY { + H5Fclose(fid); + H5Dclose(did); + H5Sclose(sid); + H5Pclose(dcpl_id); + H5Pclose(fapl_copy_id); + } H5E_END_TRY; + + HDfree(data); + + H5_FAILED(); + return FAIL; + +} /* end generate_eoc_test_file() */ /*------------------------------------------------------------------------- @@ -52,37 +173,37 @@ check_evict_on_close_api(void) /* Create a fapl */ if((fapl_id = H5Pcreate(H5P_FILE_ACCESS)) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; /* Check the default */ evict_on_close = TRUE; if(H5Pget_evict_on_close(fapl_id, &evict_on_close) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; if(evict_on_close != FALSE) FAIL_PUTS_ERROR("Incorrect default evict on close value."); /* Set the evict on close property */ evict_on_close = TRUE; if(H5Pset_evict_on_close(fapl_id, evict_on_close) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; /* Make sure we can get it back out */ evict_on_close = FALSE; if(H5Pget_evict_on_close(fapl_id, &evict_on_close) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; if(evict_on_close != TRUE) FAIL_PUTS_ERROR("Incorrect evict on close value."); /* close fapl */ if(H5Pclose(fapl_id) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; /**********************************************/ /* Trying passing in a non-fapl property list */ /**********************************************/ if((dapl_id = H5Pcreate(H5P_DATASET_ACCESS)) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; /* ensure using an incorrect access plist fails */ H5E_BEGIN_TRY { @@ -100,7 +221,7 @@ check_evict_on_close_api(void) /* close dapl */ if(H5Pclose(dapl_id) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; PASSED(); return SUCCEED; @@ -125,20 +246,69 @@ error: int main(void) { - unsigned nerrors = 0; + hid_t fapl_id = -1; + unsigned nerrors = 0; + + HDprintf("Testing evict-on-close cache behavior.\n"); - printf("Testing evict-on-close cache behavior.\n"); + /* Initialize */ + h5_reset(); + /* Test H5P call to set up EoC (does not require VFD-specific fapl) */ nerrors += check_evict_on_close_api() < 0 ? 1 : 0; - if(nerrors) { - printf("***** %u evict-on-close test%s FAILED! *****\n", - nerrors, nerrors > 1 ? "S" : ""); - return EXIT_FAILURE; - } + /* Set up VFD-specific fapl */ + if((fapl_id = h5_fileaccess()) < 0) { + nerrors++; + PUTS_ERROR("Unable to get VFD-specific fapl\n"); + } /* end if */ + + /* Set evict-on-close property */ + if(H5Pset_evict_on_close(fapl_id, TRUE) < 0) { + nerrors++; + PUTS_ERROR("Unable to set evict-on-close property\n"); + } /* end if */ - printf("All evict-on-close tests passed.\n"); + /* Generate the test file */ + if(generate_eoc_test_file(fapl_id) < 0) { + nerrors++; + PUTS_ERROR("Unable to generate test file\n"); + } /* end if */ + + /*************************/ + /* Test EoC for datasets */ + /*************************/ + +#ifdef NOTYET + nerrors += check_v1_btree_chunk_index(fapl_id); +#endif + + /* Clean up files and close the VFD-specific fapl */ + //h5_delete_all_test_files(FILENAMES, fapl_id); + if(H5Pclose(fapl_id) < 0) { + nerrors++; + PUTS_ERROR("Unable to close VFD-specific fapl\n"); + } /* end if */ + + + if(nerrors) + goto error; + + HDprintf("All evict-on-close tests passed.\n"); return EXIT_SUCCESS; -} + +error: + + HDprintf("***** %u evict-on-close test%s FAILED! *****\n", + nerrors, nerrors > 1 ? "S" : ""); + + h5_delete_all_test_files(FILENAMES, fapl_id); + H5E_BEGIN_TRY { + H5Pclose(fapl_id); + } H5E_END_TRY; + + return EXIT_FAILURE; + +} /* end main() */ -- cgit v0.12 From 7e5fcd3a4a4f4949505b47d48d0292e944b3e670 Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Mon, 26 Sep 2016 11:49:06 -0500 Subject: Added rule to build buildiface program, without a rule, build would add repeated compile options when using the NAG compiler. --- fortran/src/Makefile.am | 3 +++ fortran/test/Makefile.am | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/fortran/src/Makefile.am b/fortran/src/Makefile.am index a271666..bbdae2f 100644 --- a/fortran/src/Makefile.am +++ b/fortran/src/Makefile.am @@ -138,6 +138,9 @@ H5_buildiface_SOURCES = H5_buildiface.F90 # Mark this directory as part of the Fortran API FORTRAN_API=yes +H5_buildiface$(EXEEXT): $(H5_buildiface_SOURCES) H5config_f.inc + $(FC) $(FCFLAGS) $< -o $@ -I. + # Hardcode the dependencies of these files. There isn't a known way of # determining this automagically (like we do with the C files). So, when # doing a parallel make, some modules could be made way before the diff --git a/fortran/test/Makefile.am b/fortran/test/Makefile.am index 60f9f53..67b39e2 100644 --- a/fortran/test/Makefile.am +++ b/fortran/test/Makefile.am @@ -92,10 +92,14 @@ tf_gen.F90: H5_test_buildiface$(EXEEXT) H5_test_buildiface_SOURCES = H5_test_buildiface.F90 -# The build of the H5_test_buildiface does depend on any libraries, so set it +# The build of the H5_test_buildiface does not depend on any libraries, so set it # to nothing. -H5_test_buildiface_LDADD = +H5_test_buildiface_LDADD = + + +H5_test_buildiface$(EXEEXT): $(H5_test_buildiface_SOURCES) + $(FC) $(FCFLAGS) $< -o $@ -I. # fflush2 depends on files created by fflush1 fflush2.chkexe_: fflush1.chkexe_ -- cgit v0.12 From 41b22417b7e194f48c612c69c9259e83ddc3a3ac Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Mon, 26 Sep 2016 12:08:18 -0500 Subject: Added path to source include files when building buidiface. --- fortran/src/Makefile.am | 2 +- fortran/test/Makefile.am | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fortran/src/Makefile.am b/fortran/src/Makefile.am index bbdae2f..4ec02b7 100644 --- a/fortran/src/Makefile.am +++ b/fortran/src/Makefile.am @@ -139,7 +139,7 @@ H5_buildiface_SOURCES = H5_buildiface.F90 FORTRAN_API=yes H5_buildiface$(EXEEXT): $(H5_buildiface_SOURCES) H5config_f.inc - $(FC) $(FCFLAGS) $< -o $@ -I. + $(FC) $(FCFLAGS) $< -o $@ -I$(top_builddir)/fortran/src # Hardcode the dependencies of these files. There isn't a known way of # determining this automagically (like we do with the C files). So, when diff --git a/fortran/test/Makefile.am b/fortran/test/Makefile.am index 67b39e2..36b9adc 100644 --- a/fortran/test/Makefile.am +++ b/fortran/test/Makefile.am @@ -99,7 +99,7 @@ H5_test_buildiface_LDADD = H5_test_buildiface$(EXEEXT): $(H5_test_buildiface_SOURCES) - $(FC) $(FCFLAGS) $< -o $@ -I. + $(FC) $(FCFLAGS) $< -o $@ -I$(top_builddir)/fortran/src # fflush2 depends on files created by fflush1 fflush2.chkexe_: fflush1.chkexe_ -- cgit v0.12 From 3befe647ee9783b763208a581675988fbaabd321 Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Mon, 26 Sep 2016 13:27:50 -0500 Subject: Added number of integer KINDs found to the header files. --- config/cmake/HDF5UseFortran.cmake | 3 +++ configure.ac | 1 + fortran/src/H5_f.c | 21 ++++++++++++-------- fortran/src/H5fort_type_defines.h.in | 1 + fortran/src/H5match_types.c | 38 ++++++++++++++++++------------------ m4/aclocal_fc.m4 | 5 ++++- 6 files changed, 41 insertions(+), 28 deletions(-) diff --git a/config/cmake/HDF5UseFortran.cmake b/config/cmake/HDF5UseFortran.cmake index 41efadc..2658ccf 100644 --- a/config/cmake/HDF5UseFortran.cmake +++ b/config/cmake/HDF5UseFortran.cmake @@ -159,9 +159,12 @@ set(PAC_FC_ALL_REAL_KINDS "\{${pac_validRealKinds}\}") list(GET PROG_OUTPUT 3 NUM_IKIND) list(GET PROG_OUTPUT 4 NUM_RKIND) +set(PAC_FORTRAN_NUM_INTEGER_KINDS "${NUM_IKIND}" + set(H5CONFIG_F_NUM_IKIND "INTEGER, PARAMETER :: num_ikinds = ${NUM_IKIND}") set(H5CONFIG_F_IKIND "INTEGER, DIMENSION(1:num_ikinds) :: ikind = (/${pac_validIntKinds}/)") +message (STATUS "....NUMBER OF INTEGER KINDS FOUND ${PAC_FORTRAN_NUM_INTEGER_KINDS}") message (STATUS "....REAL KINDS FOUND ${PAC_FC_ALL_REAL_KINDS}") message (STATUS "....INTEGER KINDS FOUND ${PAC_FC_ALL_REAL_KINDS}") message (STATUS "....MAX DECIMAL PRECISION ${H5_PAC_FC_MAX_REAL_PRECISION}") diff --git a/configure.ac b/configure.ac index 59d1bef..afbd474 100644 --- a/configure.ac +++ b/configure.ac @@ -551,6 +551,7 @@ if test "X$HDF_FORTRAN" = "Xyes"; then AC_SUBST([PAC_FC_ALL_REAL_KINDS]) AC_SUBST([PAC_FC_MAX_REAL_PRECISION]) + AC_SUBST([PAC_FORTRAN_NUM_INTEGER_KINDS]) AC_SUBST([PAC_FC_ALL_INTEGER_KINDS]) AC_SUBST([PAC_FC_ALL_REAL_KINDS_SIZEOF]) AC_SUBST([PAC_FC_ALL_INTEGER_KINDS_SIZEOF]) diff --git a/fortran/src/H5_f.c b/fortran/src/H5_f.c index db05f67..f9fe927 100644 --- a/fortran/src/H5_f.c +++ b/fortran/src/H5_f.c @@ -34,16 +34,16 @@ int IntKinds_SizeOf[] = H5_FORTRAN_INTEGER_KINDS_SIZEOF; * Initialize predefined datatypes in Fortran * INPUTS * types - array with the predefined Native Fortran - * type, its element and length must be the - * same as the types array defined in the + * type, its element and length must be the + * same as the types array defined in the * H5f90global.F90 * floatingtypes - array with the predefined Floating Fortran - * type, its element and length must be the - * same as the floatingtypes array defined in the - * H5f90global.F90 + * type, its element and length must be the + * same as the floatingtypes array defined in the + * H5f90global.F90 * integertypes - array with the predefined Integer Fortran - * type, its element and length must be the - * same as the integertypes array defined in the + * type, its element and length must be the + * same as the integertypes array defined in the * H5f90global.F90 * RETURNS * 0 on success, -1 on failure @@ -68,8 +68,13 @@ h5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertypes /* * Find the HDF5 type of the Fortran Integer KIND. */ + + /* Initialized INTEGER KIND types to default to native integer */ for(i=0;i<5;i++) { + if ((types[i] = (hid_t_f)H5Tcopy (H5T_NATIVE_INT)) < 0) return ret_value; + } + for(i=0;i Date: Mon, 26 Sep 2016 23:08:38 -0500 Subject: Purpose: Updated documentation Description: Revised class brief description and other comments for up-to-date info. Platforms tested: Linux/32 2.6 (jam) Linux/64 (platypus) Darwin (osx1010test) --- c++/src/H5ArrayType.h | 2 ++ c++/src/H5AtomType.h | 2 ++ c++/src/H5Attribute.h | 2 ++ c++/src/H5CompType.h | 2 ++ c++/src/H5DataSet.h | 2 ++ c++/src/H5DataSpace.h | 7 ++++++- c++/src/H5DataType.h | 2 ++ c++/src/H5DcreatProp.h | 6 ++++-- c++/src/H5DxferProp.h | 6 ++++-- c++/src/H5EnumType.h | 7 ++++++- c++/src/H5FaccProp.h | 7 ++++++- c++/src/H5FcreatProp.h | 7 ++++++- c++/src/H5File.h | 5 +++-- c++/src/H5FloatType.h | 7 ++++++- c++/src/H5Group.h | 9 +-------- c++/src/H5IdComponent.h | 2 -- c++/src/H5IntType.h | 7 ++++++- c++/src/H5Location.h | 30 +++++++----------------------- c++/src/H5Object.h | 49 ++++++++++++++++++++++--------------------------- c++/src/H5OcreatProp.h | 7 ++++++- c++/src/H5PredType.h | 2 ++ c++/src/H5PropList.h | 6 ++++++ c++/src/H5StrType.h | 7 ++++++- c++/src/H5VarLenType.h | 7 ++++++- 24 files changed, 115 insertions(+), 75 deletions(-) diff --git a/c++/src/H5ArrayType.h b/c++/src/H5ArrayType.h index fb6c711..aa7450c 100644 --- a/c++/src/H5ArrayType.h +++ b/c++/src/H5ArrayType.h @@ -24,6 +24,8 @@ namespace H5 { /*! \class ArrayType \brief Class ArrayType inherits from DataType and provides wrappers for the HDF5's Array Datatypes. + + Inheritance: DataType -> H5Object -> H5Location -> IdComponent */ class H5_DLLCPP ArrayType : public DataType { public: diff --git a/c++/src/H5AtomType.h b/c++/src/H5AtomType.h index 792312a..9798efc 100644 --- a/c++/src/H5AtomType.h +++ b/c++/src/H5AtomType.h @@ -27,6 +27,8 @@ namespace H5 { AtomType provides operations on HDF5 atomic datatypes. It also inherits from DataType. + + Inheritance: DataType -> H5Object -> H5Location -> IdComponent */ class H5_DLLCPP AtomType : public DataType { public: diff --git a/c++/src/H5Attribute.h b/c++/src/H5Attribute.h index 6590c23..5455f76 100644 --- a/c++/src/H5Attribute.h +++ b/c++/src/H5Attribute.h @@ -28,6 +28,8 @@ namespace H5 { Attribute and DataSet are derivatives of AbstractDs. Attribute also inherits from H5Location because an attribute can be used to specify a location. + + Inheritance: multiple H5Location/AbstractDs -> IdComponent */ class H5_DLLCPP Attribute : public AbstractDs, public H5Location { public: diff --git a/c++/src/H5CompType.h b/c++/src/H5CompType.h index bd6d76c..8ecc8bf 100644 --- a/c++/src/H5CompType.h +++ b/c++/src/H5CompType.h @@ -24,6 +24,8 @@ namespace H5 { /*! \class CompType \brief CompType is a derivative of a DataType and operates on HDF5 compound datatypes. + + Inheritance: DataType -> H5Object -> H5Location -> IdComponent */ class H5_DLLCPP CompType : public DataType { public: diff --git a/c++/src/H5DataSet.h b/c++/src/H5DataSet.h index c97e5b0..dd98d26 100644 --- a/c++/src/H5DataSet.h +++ b/c++/src/H5DataSet.h @@ -27,6 +27,8 @@ namespace H5 { An datasets has many characteristics similar to an attribute, thus both Attribute and DataSet are derivatives of AbstractDs. DataSet also inherits from H5Object because a dataset is an HDF5 object. + + Inheritance: multiple H5Object/AbstractDs -> H5Location -> IdComponent */ class H5_DLLCPP DataSet : public H5Object, public AbstractDs { public: diff --git a/c++/src/H5DataSpace.h b/c++/src/H5DataSpace.h index 384f1a3..38d8135 100644 --- a/c++/src/H5DataSpace.h +++ b/c++/src/H5DataSpace.h @@ -21,7 +21,12 @@ namespace H5 { #endif -//! Class DataSpace operates on HDF5 dataspaces. +/*! \class DataSpace + \brief Class DataSpace inherits from IdComponent and provides wrappers for + the HDF5's dataspaces. + + Inheritance: IdComponent +*/ class H5_DLLCPP DataSpace : public IdComponent { public: ///\brief Default DataSpace objects diff --git a/c++/src/H5DataType.h b/c++/src/H5DataType.h index 7584cff..e332cee 100644 --- a/c++/src/H5DataType.h +++ b/c++/src/H5DataType.h @@ -30,6 +30,8 @@ namespace H5 { DataType inherits from H5Object because a named datatype is an HDF5 object and is a base class of ArrayType, AtomType, CompType, EnumType, and VarLenType. + + Inheritance: DataType -> H5Object -> H5Location -> IdComponent */ class H5_DLLCPP DataType : public H5Object { public: diff --git a/c++/src/H5DcreatProp.h b/c++/src/H5DcreatProp.h index fa7b1c1..07c9077 100644 --- a/c++/src/H5DcreatProp.h +++ b/c++/src/H5DcreatProp.h @@ -27,8 +27,10 @@ namespace H5 { class DataType; /*! \class DSetCreatPropList - \brief Class DSetCreatPropList represents the dataset creation property - list. + \brief Class DSetCreatPropList inherits from ObjCreatPropList and provides + wrappers for the HDF5 dataset creation property functions. + + Inheritance: ObjCreatPropList -> PropList -> IdComponent */ class H5_DLLCPP DSetCreatPropList : public ObjCreatPropList { public: diff --git a/c++/src/H5DxferProp.h b/c++/src/H5DxferProp.h index 31fc372..a4af53c 100644 --- a/c++/src/H5DxferProp.h +++ b/c++/src/H5DxferProp.h @@ -25,8 +25,10 @@ namespace H5 { #endif /*! \class DSetMemXferPropList - \brief Class DSetMemXferPropList represents the dataset memory and - transfer property list. + \brief Class DSetCreatPropList inherits from PropList and provides + wrappers for the HDF5 dataset memory and transfer property list. + + Inheritance: ObjCreatPropList -> PropList -> IdComponent */ class H5_DLLCPP DSetMemXferPropList : public PropList { public: diff --git a/c++/src/H5EnumType.h b/c++/src/H5EnumType.h index fe36e8b..bc5b870 100644 --- a/c++/src/H5EnumType.h +++ b/c++/src/H5EnumType.h @@ -21,7 +21,12 @@ namespace H5 { #endif -//! Class EnumType operates on HDF5 enum datatypes. +/*! \class EnumType + \brief EnumType is a derivative of a DataType and operates on HDF5 + enum datatypes. + + Inheritance: DataType -> H5Object -> H5Location -> IdComponent +*/ class H5_DLLCPP EnumType : public DataType { public: diff --git a/c++/src/H5FaccProp.h b/c++/src/H5FaccProp.h index 831488c..e96d02f 100644 --- a/c++/src/H5FaccProp.h +++ b/c++/src/H5FaccProp.h @@ -24,7 +24,12 @@ namespace H5 { #endif -//! Class FileAccPropList represents the HDF5 file access property list. +/*! \class FileAccPropList + \brief Class FileAccPropList inherits from PropList and provides + wrappers for the HDF5 file access property list. + + Inheritance: PropList -> IdComponent +*/ class H5_DLLCPP FileAccPropList : public PropList { public: ///\brief Default file access property list. diff --git a/c++/src/H5FcreatProp.h b/c++/src/H5FcreatProp.h index 5d81078..b2a5c2b 100644 --- a/c++/src/H5FcreatProp.h +++ b/c++/src/H5FcreatProp.h @@ -21,7 +21,12 @@ namespace H5 { #endif -//! Class FileCreatPropList represents the HDF5 file create property list. +/*! \class FileCreatPropList + \brief Class FileCreatPropList inherits from PropList and provides + wrappers for the HDF5 file create property list. + + Inheritance: PropList -> IdComponent +*/ class H5_DLLCPP FileCreatPropList : public PropList { public: ///\brief Default file creation property list. diff --git a/c++/src/H5File.h b/c++/src/H5File.h index 7ec92fe..476c5b9 100644 --- a/c++/src/H5File.h +++ b/c++/src/H5File.h @@ -23,9 +23,10 @@ namespace H5 { #endif /*! \class H5File - \brief Class H5File represents an HDF5 file. + \brief Class H5File represents an HDF5 file and inherits from class Group + as file is a root group. - It inherits from H5Location and CommonFG. + Inheritance: Group -> H5Object -> H5Location -> IdComponent */ class H5_DLLCPP H5File : public Group { public: diff --git a/c++/src/H5FloatType.h b/c++/src/H5FloatType.h index e88093e..ce816a4 100644 --- a/c++/src/H5FloatType.h +++ b/c++/src/H5FloatType.h @@ -21,7 +21,12 @@ namespace H5 { #endif -//! Class FloatType operates on HDF5 floating point datatype. +/*! \class FloatType + \brief FloatType is a derivative of a DataType and operates on HDF5 + floating point datatype. + + Inheritance: AtomType -> DataType -> H5Object -> H5Location -> IdComponent +*/ class H5_DLLCPP FloatType : public AtomType { public: // Creates a floating-point type using a predefined type. diff --git a/c++/src/H5Group.h b/c++/src/H5Group.h index f1dfce1..b6ec425 100644 --- a/c++/src/H5Group.h +++ b/c++/src/H5Group.h @@ -24,19 +24,12 @@ namespace H5 { /*! \class Group \brief Class Group represents an HDF5 group. - It inherits many operations from H5Location and CommonFG. + Inheritance: H5Object -> H5Location -> IdComponent */ // Class forwarding -//class Group; -//class H5File; class ArrayType; class VarLenType; -/*! \class CommonFG - \brief \a CommonFG is an abstract base class of H5File and Group. - - It provides common operations of H5File and Group. -*/ class H5_DLLCPP Group : public H5Object { public: // Group constructor to create a group or file (aka root group). diff --git a/c++/src/H5IdComponent.h b/c++/src/H5IdComponent.h index 61c8bd6..92765f2 100644 --- a/c++/src/H5IdComponent.h +++ b/c++/src/H5IdComponent.h @@ -17,8 +17,6 @@ #ifndef __IdComponent_H #define __IdComponent_H -// IdComponent represents an HDF5 object that has an identifier. - #ifndef H5_NO_NAMESPACE namespace H5 { #endif diff --git a/c++/src/H5IntType.h b/c++/src/H5IntType.h index e28f5c2..362a7e3 100644 --- a/c++/src/H5IntType.h +++ b/c++/src/H5IntType.h @@ -21,7 +21,12 @@ namespace H5 { #endif -//! Class IntType operates on HDF5 integer datatype. +/*! \class IntType + \brief IntType is a derivative of a DataType and operates on HDF5 + integer datatype. + + Inheritance: AtomType -> DataType -> H5Object -> H5Location -> IdComponent +*/ class H5_DLLCPP IntType : public AtomType { public: // Creates an integer type using a predefined type diff --git a/c++/src/H5Location.h b/c++/src/H5Location.h index 4f7a717..9ab67d3 100644 --- a/c++/src/H5Location.h +++ b/c++/src/H5Location.h @@ -23,35 +23,19 @@ namespace H5 { #endif -//class H5_DLLCPP H5Location; // forward declaration for UserData4Aiterate - -// Define the operator function pointer for H5Aiterate(). -//typedef void (*attr_operator_t)( H5Location& loc/*in*/, - //const H5std_string attr_name/*in*/, - //void *operator_data/*in,out*/); - -//! User data for attribute iteration - /* class UserData4Aiterate { - public: - attr_operator_t op; - void* opData; - H5Location* location; -}; - */ - -// Class forwarding -class H5_DLLCPP ArrayType; -class H5_DLLCPP VarLenType; - /*! \class H5Location \brief H5Location is an abstract base class, added in version 1.8.12. It provides a collection of wrappers for the C functions that take a location identifier to specify the HDF5 object. The location identifier - can be either file, group, dataset, or named datatype. + can be either file, group, dataset, attribute, or named datatype. + Wrappers for H5A functions stay in H5Object. + + Inheritance: IdComponent */ -// Most of these methods were in H5Object but are now moved here because -// a location can be a file, group, dataset, or named datatype. -BMR, 2013-10-1 +// Class forwarding +class H5_DLLCPP ArrayType; +class H5_DLLCPP VarLenType; class H5_DLLCPP H5Location : public IdComponent { public: // Flushes all buffers associated with this location to disk. diff --git a/c++/src/H5Object.h b/c++/src/H5Object.h index 372faed..e570055 100644 --- a/c++/src/H5Object.h +++ b/c++/src/H5Object.h @@ -17,27 +17,32 @@ #ifndef __H5Object_H #define __H5Object_H -//#include "H5Location.h" -//#include "H5Classes.h" // constains forward class declarations - -// H5Object is a baseclass. It has these subclasses: -// Group, DataSet, and DataType. -// DataType, in turn, has several specific datatypes as subclasses. -// Modification: -// Sept 18, 2012: Added class H5Location in between IdComponent and -// H5Object. An H5File now inherits from H5Location. All HDF5 -// wrappers in H5Object are moved up to H5Location. H5Object -// is left mostly empty for future wrappers that are only for -// group, dataset, and named datatype. Note that the reason for -// adding H5Location instead of simply moving H5File to be under -// H5Object is H5File is not an HDF5 object, and renaming H5Object -// to H5Location will risk breaking user applications. -// -BMR -// Apr 2, 2014: Added wrapper getObjName for H5Iget_name #ifndef H5_NO_NAMESPACE namespace H5 { #endif +/*! \class H5Object + \brief Class H5Object is a bridge between H5Location and DataSet, DataType, + and Group. + + Modification: + Sept 18, 2012: Added class H5Location in between IdComponent and + H5Object. An H5File now inherits from H5Location. All HDF5 + wrappers in H5Object are moved up to H5Location. H5Object + is left mostly empty for future wrappers that are only for + group, dataset, and named datatype. Note that the reason for + adding H5Location instead of simply moving H5File to be under + H5Object is H5File is not an HDF5 object, and renaming H5Object + to H5Location will risk breaking user applications. + -BMR + Apr 2, 2014: Added wrapper getObjName for H5Iget_name + Sep 21, 2016: Rearranging classes (HDFFV-9920) moved H5A wrappers back + into H5Object. This way, C functions that takes attribute id + can be in H5Location and those that cannot take attribute id + can be in H5Object. + + Inheritance: H5Location -> IdComponent +*/ // Class forwarding class H5_DLLCPP H5Object; class H5_DLLCPP Attribute; @@ -55,18 +60,8 @@ class UserData4Aiterate { H5Object* location; }; -/*! \class H5Object - \brief Class H5Object is a bridge between H5Location and DataSet, DataType, - and Group. - - All the wrappers in H5Object were moved to H5Location. -*/ class H5_DLLCPP H5Object : public H5Location { public: -// Rearranging classes (HDFFV-9920) moved H5A wrappers back into H5Object. -// That way, C functions that takes attribute id can be in -// H5Location and those that cannot take attribute id can be in H5Object. - // Creates an attribute for the specified object // PropList is currently not used, so always be default. Attribute createAttribute( const char* name, const DataType& type, const DataSpace& space, const PropList& create_plist = PropList::DEFAULT ) const; diff --git a/c++/src/H5OcreatProp.h b/c++/src/H5OcreatProp.h index 0fda34d..0532b3c 100644 --- a/c++/src/H5OcreatProp.h +++ b/c++/src/H5OcreatProp.h @@ -21,7 +21,12 @@ namespace H5 { #endif -//! Class ObjCreatPropList represents the HDF5 object creation property list. +/*! \class ObjCreatPropList + \brief Class ObjCreatPropList inherits from PropList and provides + wrappers for the HDF5 file create property list. + + Inheritance: PropList -> IdComponent +*/ class H5_DLLCPP ObjCreatPropList : public PropList { public: ///\brief Default object creation property list. diff --git a/c++/src/H5PredType.h b/c++/src/H5PredType.h index f560765..1e789ef 100644 --- a/c++/src/H5PredType.h +++ b/c++/src/H5PredType.h @@ -27,6 +27,8 @@ namespace H5 { These types can only be made copy of, not created by H5Tcreate or closed by H5Tclose. They are treated as constants. + + Inheritance: AtomType -> DataType -> H5Object -> H5Location -> IdComponent */ class H5_DLLCPP PredType : public AtomType { public: diff --git a/c++/src/H5PropList.h b/c++/src/H5PropList.h index 7f6ee31..dbd1263 100644 --- a/c++/src/H5PropList.h +++ b/c++/src/H5PropList.h @@ -22,6 +22,12 @@ namespace H5 { #endif //! Class PropList provides operations for generic property lists. +/*! \class PropList + \brief Class PropList inherits from IdComponent and provides wrappers for + the HDF5 generic property list. + + Inheritance: IdComponent +*/ class H5_DLLCPP PropList : public IdComponent { public: ///\brief Default property list diff --git a/c++/src/H5StrType.h b/c++/src/H5StrType.h index 8b3a773..eac6693 100644 --- a/c++/src/H5StrType.h +++ b/c++/src/H5StrType.h @@ -21,7 +21,12 @@ namespace H5 { #endif -//! Class StrType operates on HDF5 string datatypes. +/*! \class StrType + \brief StrType is a derivative of a DataType and operates on HDF5 + string datatype. + + Inheritance: AtomType -> DataType -> H5Object -> H5Location -> IdComponent +*/ class H5_DLLCPP StrType : public AtomType { public: // Creates a string type using a predefined type diff --git a/c++/src/H5VarLenType.h b/c++/src/H5VarLenType.h index 672b3db..4898135 100644 --- a/c++/src/H5VarLenType.h +++ b/c++/src/H5VarLenType.h @@ -21,7 +21,12 @@ namespace H5 { #endif -//! VarLenType operates on the HDF5 C's Variable-length Datatypes. +/*! \class VarLenType + \brief VarLenType is a derivative of a DataType and operates on HDF5 + C's Variable-length Datatypes. + + Inheritance: DataType -> H5Object -> H5Location -> IdComponent +*/ class H5_DLLCPP VarLenType : public DataType { public: // Constructor that creates a variable-length datatype based -- cgit v0.12 From f76c3b56e1ccf81b16225fa6935adb45ac6d2f38 Mon Sep 17 00:00:00 2001 From: kmu Date: Tue, 27 Sep 2016 14:04:19 -0500 Subject: fix the issue of h5dump fails to print full precision --- tools/lib/h5tools_str.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/lib/h5tools_str.c b/tools/lib/h5tools_str.c index 6d9a041..3b75215 100644 --- a/tools/lib/h5tools_str.c +++ b/tools/lib/h5tools_str.c @@ -803,7 +803,7 @@ h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, hid_t contai long double templdouble; HDmemcpy(&templdouble, vp, sizeof(long double)); - h5tools_str_append(str, "%Lf", templdouble); + h5tools_str_append(str, OPT(info->fmt_double, "%Lf"), templdouble); #endif } break; -- cgit v0.12 From 064073307a45f51b358431aae9e6ae47ce91716e Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Thu, 29 Sep 2016 10:49:08 -0500 Subject: Removed duplicate FCFLAG. --- config/conclude_fc.am | 4 ++-- fortran/test/Makefile.am | 4 ---- hl/fortran/src/Makefile.am | 2 -- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/config/conclude_fc.am b/config/conclude_fc.am index d9e7b56..6402412 100644 --- a/config/conclude_fc.am +++ b/config/conclude_fc.am @@ -26,8 +26,8 @@ LTPPFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=co # Treat all .f90 and .F90 files as preprocessed Fortran. .f90.o: - $(PPFCCOMPILE) -c -o $@ $(FCFLAGS) $< + $(PPFCCOMPILE) -c -o $@ $< .F90.o: - $(PPFCCOMPILE) -c -o $@ $(FCFLAGS) $< + $(PPFCCOMPILE) -c -o $@ $< include $(top_srcdir)/config/conclude.am diff --git a/fortran/test/Makefile.am b/fortran/test/Makefile.am index 36b9adc..3def26e 100644 --- a/fortran/test/Makefile.am +++ b/fortran/test/Makefile.am @@ -97,10 +97,6 @@ H5_test_buildiface_SOURCES = H5_test_buildiface.F90 H5_test_buildiface_LDADD = - -H5_test_buildiface$(EXEEXT): $(H5_test_buildiface_SOURCES) - $(FC) $(FCFLAGS) $< -o $@ -I$(top_builddir)/fortran/src - # fflush2 depends on files created by fflush1 fflush2.chkexe_: fflush1.chkexe_ diff --git a/hl/fortran/src/Makefile.am b/hl/fortran/src/Makefile.am index 571ca45..7ac18cd 100644 --- a/hl/fortran/src/Makefile.am +++ b/hl/fortran/src/Makefile.am @@ -86,8 +86,6 @@ H5LTff_gen.F90: H5HL_buildiface$(EXEEXT) H5TBff_gen.F90: H5HL_buildiface$(EXEEXT) -#H5TBff_gen.F90: H5HL_buildiface$(EXEEXT) - # H5HL_buildiface.F90 is included in the distribution, and Automake knows # how to compile a fortran program given its sources. -- cgit v0.12 From c28c6873fedb6a4bec9dfa500d8648610c7ba88f Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Thu, 29 Sep 2016 10:50:12 -0500 Subject: Removed duplicate FCFLAG --- fortran/src/Makefile.am | 3 --- 1 file changed, 3 deletions(-) diff --git a/fortran/src/Makefile.am b/fortran/src/Makefile.am index 4ec02b7..a271666 100644 --- a/fortran/src/Makefile.am +++ b/fortran/src/Makefile.am @@ -138,9 +138,6 @@ H5_buildiface_SOURCES = H5_buildiface.F90 # Mark this directory as part of the Fortran API FORTRAN_API=yes -H5_buildiface$(EXEEXT): $(H5_buildiface_SOURCES) H5config_f.inc - $(FC) $(FCFLAGS) $< -o $@ -I$(top_builddir)/fortran/src - # Hardcode the dependencies of these files. There isn't a known way of # determining this automagically (like we do with the C files). So, when # doing a parallel make, some modules could be made way before the -- cgit v0.12 From 9fbebbe6d7c1b873006e24b8b21c88b3d7ba9ab8 Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Thu, 29 Sep 2016 11:52:12 -0500 Subject: Fixed: Fortran_DOUBLE was being set to C_LONG_DOUBLE when C_LONG_DOUBLE is not available. --- fortran/src/H5match_types.c | 25 +++++++++++++++---------- fortran/test/tH5T_F03.F90 | 4 +++- fortran/test/tf.F90 | 3 ++- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/fortran/src/H5match_types.c b/fortran/src/H5match_types.c index 4d62402..2ae78ee 100644 --- a/fortran/src/H5match_types.c +++ b/fortran/src/H5match_types.c @@ -342,7 +342,7 @@ int main(void) if (RealKinds[i] > 0) { sprintf(chrA, "Fortran_REAL_%s", Real_C_TYPES[i]); sprintf(chrB, "real_%s_f", Real_C_TYPES[i]); - writeToFiles("float",chrA, chrB, RealKinds[i], RealKinds_SizeOf[i]); + writeToFiles("float",chrA, chrB, RealKinds[i], RealKinds[i]); } } @@ -356,13 +356,15 @@ int main(void) /* Error: couldn't find a size for hid_t */ return -1; } - /* real_f */ - if(H5_FORTRAN_NATIVE_REAL_SIZEOF == sizeof(long double)) +#if H5_FORTRAN_HAVE_C_LONG_DOUBLE!=0 + if(H5_FORTRAN_NATIVE_REAL_SIZEOF == sizeof(long double)) { writeToFilesChr("float","Fortran_REAL", "real_f", H5_FORTRAN_NATIVE_REAL_KIND, "C_LONG_DOUBLE"); - else if(H5_FORTRAN_NATIVE_REAL_SIZEOF == sizeof(double)) + } else +#endif + if(H5_FORTRAN_NATIVE_REAL_SIZEOF == sizeof(double)) { writeToFilesChr("float","Fortran_REAL", "real_f", H5_FORTRAN_NATIVE_REAL_KIND, "C_DOUBLE"); - else if(H5_FORTRAN_NATIVE_REAL_SIZEOF == sizeof(float)) + } else if(H5_FORTRAN_NATIVE_REAL_SIZEOF == sizeof(float)) writeToFilesChr("float","Fortran_REAL", "real_f", H5_FORTRAN_NATIVE_REAL_KIND, "C_FLOAT"); else { /* No exact match, choose the next highest */ @@ -380,20 +382,23 @@ int main(void) } /* double_f */ - if(H5_FORTRAN_NATIVE_DOUBLE_SIZEOF == sizeof(long double)) +#if H5_FORTRAN_HAVE_C_LONG_DOUBLE!=0 + if(H5_FORTRAN_NATIVE_DOUBLE_SIZEOF == sizeof(long double)){ writeToFilesChr("float","Fortran_DOUBLE", "double_f", H5_FORTRAN_NATIVE_DOUBLE_KIND, "C_LONG_DOUBLE"); - else if(H5_FORTRAN_NATIVE_DOUBLE_SIZEOF == sizeof(double)) + } else +#endif + if(H5_FORTRAN_NATIVE_DOUBLE_SIZEOF == sizeof(double)) { writeToFilesChr("float","Fortran_DOUBLE", "double_f", H5_FORTRAN_NATIVE_DOUBLE_KIND, "C_DOUBLE"); - else if(H5_FORTRAN_NATIVE_DOUBLE_SIZEOF == sizeof(float)) + } else if(H5_FORTRAN_NATIVE_DOUBLE_SIZEOF == sizeof(float)) writeToFilesChr("float","Fortran_DOUBLE", "double_f", H5_FORTRAN_NATIVE_DOUBLE_KIND, "C_FLOAT"); #ifdef H5_HAVE_FLOAT128 /* Don't select a higher precision than Fortran can support */ else if(sizeof(__float128) == H5_FORTRAN_NATIVE_DOUBLE_SIZEOF && H5_PAC_FC_MAX_REAL_PRECISION > 28) { - writeToFilesChr("float","Fortran_DOUBLE", "double_f", H5_FORTRAN_NATIVE_DOUBLE_KIND, "C_FLOAT128"); + writeToFilesChr("float","Fortran_DOUBLE", "double_f", H5_FORTRAN_NATIVE_DOUBLE_KIND, "Fortran_REAL_C_FLOAT128"); } #else else if(sizeof(long double) == H5_FORTRAN_NATIVE_DOUBLE_SIZEOF && H5_PAC_FC_MAX_REAL_PRECISION > 28) { - writeToFilesChr("float","Fortran_DOUBLE", "double_f", H5_FORTRAN_NATIVE_DOUBLE_KIND, "C_FLOAT128"); + writeToFilesChr("float","Fortran_DOUBLE", "double_f", H5_FORTRAN_NATIVE_DOUBLE_KIND, "Fortran_REAL_C_FLOAT128"); } #endif else { diff --git a/fortran/test/tH5T_F03.F90 b/fortran/test/tH5T_F03.F90 index a9148a7..c8be606 100644 --- a/fortran/test/tH5T_F03.F90 +++ b/fortran/test/tH5T_F03.F90 @@ -66,6 +66,7 @@ SUBROUTINE test_array_compound_atomic(total_error) CHARACTER(LEN=10), PARAMETER :: FILENAME = "tarray1.h5" TYPE s1_t + SEQUENCE INTEGER :: i REAL :: f END TYPE s1_t @@ -298,7 +299,8 @@ END SUBROUTINE test_array_compound_atomic INTEGER, PARAMETER :: SPACE1_DIM1 = 4 CHARACTER(LEN=10), PARAMETER :: FILENAME = "tarray2.h5" - TYPE st_t_struct ! Typedef for compound datatype + TYPE st_t_struct ! Typedef for compound datatype + SEQUENCE INTEGER :: i REAL, DIMENSION(1:ARRAY2_DIM1) :: f CHARACTER(LEN=2), DIMENSION(1:ARRAY2_DIM1) :: c diff --git a/fortran/test/tf.F90 b/fortran/test/tf.F90 index 219254b..8797cc3 100644 --- a/fortran/test/tf.F90 +++ b/fortran/test/tf.F90 @@ -40,7 +40,8 @@ MODULE TH5_MISC INTEGER, PARAMETER :: dp = SELECTED_REAL_KIND(10) ! This should map to REAL*8 on most modern processors ! generic compound datatype - TYPE, BIND(C) :: comp_datatype + TYPE :: comp_datatype + SEQUENCE REAL :: a INTEGER :: x DOUBLE PRECISION :: y -- cgit v0.12 From ce11185fbb8489b94758ca810652760ce98180bc Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Thu, 29 Sep 2016 13:26:32 -0400 Subject: Fleshed out evict on close test that inspects cache. --- test/evict_on_close.c | 218 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 194 insertions(+), 24 deletions(-) diff --git a/test/evict_on_close.c b/test/evict_on_close.c index bc47cef..562c167 100644 --- a/test/evict_on_close.c +++ b/test/evict_on_close.c @@ -22,7 +22,23 @@ * are located in cache.c. */ +#define H5C_FRIEND /*suppress error about including H5Cpkg */ +#define H5D_FRIEND /*suppress error about including H5Dpkg */ +#define H5D_TESTING +#define H5F_FRIEND /*suppress error about including H5Fpkg */ +#define H5F_TESTING +#define H5I_FRIEND /*suppress error about including H5Ipkg */ +#define H5I_TESTING + + #include "h5test.h" +#include "H5Cpkg.h" +#include "H5Dpkg.h" +#include "H5Fpkg.h" +#include "H5Ipkg.h" + +/* Uncomment to manually inspect cache states */ +#define EOC_MANUAL_INSPECTION const char *FILENAMES[] = { "evict-on-close", /* 0 */ @@ -32,14 +48,60 @@ const char *FILENAMES[] = { //#define DSET_NAME_COMPACT "compact" //#define DSET_NAME_CONTIGUOUS "contiguous" -#define DSET_NAME_V1_BTREE "v1_btree" +#define DSET_NAME_V1_BTREE_NAME "v1_btree" //#define DSET_NAME_V2_BTREE "v2_btree" //#define DSET_NAME_EARRAY "earray" //#define DSET_NAME_FARRAY "farray" //#define DSET_NAME_SINGLE "single" + +#define DSET_NAME_V1_BTREE_NELEMENTS 1024 + +static hbool_t verify_tag_not_in_cache(H5F_t *f, haddr_t tag); static herr_t check_evict_on_close_api(void); -static herr_t generate_eoc_test_file(hid_t fapl_id); +static hid_t generate_eoc_test_file(hid_t fapl_id); +static herr_t check_v1_btree_chunk_index(hid_t fid); + + +/*------------------------------------------------------------------------- + * Function: verify_tag_not_in_cache() + * + * Purpose: Ensure that metadata cache entries with a given tag are not + * present in the cache. + * + * Return: TRUE/FALSE + * + * Programmer: Dana Robinson + * Fall 2016 + * + *------------------------------------------------------------------------- + */ +static hbool_t +verify_tag_not_in_cache(H5F_t *f, haddr_t tag) +{ + H5C_t *cache_ptr = NULL; /* cache pointer */ + int i = 0; /* iterator */ + H5C_cache_entry_t *entry_ptr = NULL; /* entry pointer */ + + cache_ptr = f->shared->cache; + + for(i = 0; i < H5C__HASH_TABLE_LEN; i++) { + + entry_ptr = cache_ptr->index[i]; + + while(entry_ptr != NULL) { + + if(tag == entry_ptr->tag) + return TRUE; + else + entry_ptr = entry_ptr->ht_next; + + } /* end while */ + } /* end for */ + + return FALSE; + +} /* end verify_tag_not_in_cache() */ /*------------------------------------------------------------------------- @@ -47,18 +109,19 @@ static herr_t generate_eoc_test_file(hid_t fapl_id); * * Purpose: Generate the evict-on-close test file. * - * Return: SUCCEED/FAIL + * Return: Success: The file ID of the created file + * Failure: -1 * * Programmer: Dana Robinson * Fall 2016 * *------------------------------------------------------------------------- */ -static herr_t +static hid_t generate_eoc_test_file(hid_t fapl_id) { char filename[FILENAME_BUF_SIZE]; /* decorated file name */ - hid_t fid = -1; /* file ID */ + hid_t fid = -1; /* file ID (returned) */ hid_t fapl_copy_id = -1; /* ID of copied fapl */ hid_t sid = -1; /* dataspace ID */ hid_t dcpl_id = -1; /* dataset creation plist */ @@ -84,7 +147,7 @@ generate_eoc_test_file(hid_t fapl_id) /***********************************************************/ /* Create the data buffer */ - if(NULL == (data = (int *)HDcalloc(1024, sizeof(int)))) + if(NULL == (data = (int *)HDcalloc(DSET_NAME_V1_BTREE_NELEMENTS, sizeof(int)))) TEST_ERROR; /********************/ @@ -92,7 +155,7 @@ generate_eoc_test_file(hid_t fapl_id) /********************/ /* Create dataspace */ - n = 100; + n = DSET_NAME_V1_BTREE_NELEMENTS; rank = 1; current_dims[0] = (hsize_t)n; maximum_dims[0] = H5S_UNLIMITED; @@ -107,7 +170,7 @@ generate_eoc_test_file(hid_t fapl_id) TEST_ERROR; /* Create dataset */ - if((did = H5Dcreate(fid, DSET_NAME_V1_BTREE, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) + if((did = H5Dcreate(fid, DSET_NAME_V1_BTREE_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) TEST_ERROR; /* Write a bunch of fake data */ @@ -123,13 +186,11 @@ generate_eoc_test_file(hid_t fapl_id) TEST_ERROR; - /* Close everything else */ - if(H5Fclose(fid) < 0) - TEST_ERROR; + /* Close/free everything else */ HDfree(data); PASSED(); - return SUCCEED; + return fid; error: H5E_BEGIN_TRY { @@ -143,12 +204,115 @@ error: HDfree(data); H5_FAILED(); - return FAIL; + return -1; } /* end generate_eoc_test_file() */ /*------------------------------------------------------------------------- + * Function: check_v1_btree_chunk_index() + * + * Purpose: Verify that datasets using version 1 B-trees are evicted + * correctly. + * + * Return: SUCCEED/FAIL + * + * Programmer: Dana Robinson + * Fall 2016 + * + *------------------------------------------------------------------------- + */ +static herr_t +check_v1_btree_chunk_index(hid_t fid) +{ + H5F_t *file_ptr = NULL; /* ptr to internal file struct */ + hid_t did = -1; /* dataset ID */ + H5D_t *dset_ptr = NULL; /* ptr to internal dset struct */ + haddr_t tag; /* MD cache tag for dataset */ + int *data = NULL; /* buffer for fake data */ + int32_t before, during, after; /* cache sizes */ + + TESTING("evict on close with version 1 B-trees"); + + /* Get a pointer to the file struct */ + if(NULL == (file_ptr = (H5F_t *)H5I_object_verify(fid, H5I_FILE))) + TEST_ERROR; + + /* Create the data buffer */ + if(NULL == (data = (int *)HDcalloc(DSET_NAME_V1_BTREE_NELEMENTS, sizeof(int)))) + TEST_ERROR; + + /* Record the number of cache entries */ + before = file_ptr->shared->cache->index_len; + +#ifdef EOC_MANUAL_INSPECTION + HDprintf("\nCACHE BEFORE DATASET OPEN:\n"); + if(H5AC_dump_cache(file_ptr) < 0) + TEST_ERROR; + HDprintf("NUMBER OF CACHE ENTRIES: %d\n", before); +#endif + + /* Open dataset and get the metadata tag */ + if((did = H5Dopen2(fid, DSET_NAME_V1_BTREE_NAME, H5P_DEFAULT)) < 0) + TEST_ERROR; + if(NULL == (dset_ptr = (H5D_t *)H5I_object_verify(did, H5I_DATASET))) + TEST_ERROR; + tag = dset_ptr->oloc.addr; + + /* Read data from the dataset so the cache gets populated with chunk indices */ + if(H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data) < 0) + TEST_ERROR; + + /* Record the number of cache entries */ + during = file_ptr->shared->cache->index_len; + +#ifdef EOC_MANUAL_INSPECTION + HDprintf("\nCACHE AFTER DATA READ (WHILE OPEN):\n"); + if(H5AC_dump_cache(file_ptr) < 0) + TEST_ERROR; + HDprintf("TAG: %#X\n", tag); + HDprintf("NUMBER OF CACHE ENTRIES: %d\n", during); +#endif + + /* Close the dataset */ + if(H5Dclose(did) < 0) + TEST_ERROR; + + /* Record the number of cache entries */ + after = file_ptr->shared->cache->index_len; + +#ifdef EOC_MANUAL_INSPECTION + HDprintf("\nCACHE AFTER DATASET CLOSE:\n"); + if(H5AC_dump_cache(file_ptr) < 0) + TEST_ERROR; + HDprintf("NUMBER OF CACHE ENTRIES: %d\n", after); +#endif + + /* Ensure that the cache does not contain data items with the tag */ + if(TRUE == verify_tag_not_in_cache(file_ptr, tag)) + TEST_ERROR; + + /* Compare the number of cache entries */ + if(before != after || before == during) + TEST_ERROR; + + HDfree(data); + + PASSED(); + return SUCCEED; + +error: + H5E_BEGIN_TRY { + H5Dclose(did); + } H5E_END_TRY; + + H5_FAILED(); + return FAIL; + +} /* check_v1_btree_chunk_index() */ + + +/*------------------------------------------------------------------------- * Function: check_evict_on_close_api() * * Purpose: Verify that the H5Pset/get_evict_on_close() calls behave @@ -246,8 +410,9 @@ error: int main(void) { - hid_t fapl_id = -1; - unsigned nerrors = 0; + hid_t fapl_id = -1; /* VFD-specific fapl */ + hid_t fid = -1; /* file ID */ + unsigned nerrors = 0; /* number of test errors */ HDprintf("Testing evict-on-close cache behavior.\n"); @@ -269,28 +434,32 @@ main(void) PUTS_ERROR("Unable to set evict-on-close property\n"); } /* end if */ + /*************************/ + /* Test EoC for datasets */ + /*************************/ + /* Generate the test file */ - if(generate_eoc_test_file(fapl_id) < 0) { + if((fid = generate_eoc_test_file(fapl_id)) < 0) { nerrors++; PUTS_ERROR("Unable to generate test file\n"); } /* end if */ - /*************************/ - /* Test EoC for datasets */ - /*************************/ + /* Run tests with a variety of dataset configurations */ + nerrors += check_v1_btree_chunk_index(fid) < 0 ? 1 : 0; -#ifdef NOTYET - nerrors += check_v1_btree_chunk_index(fapl_id); -#endif + /* Close the test file */ + if(H5Fclose(fid) < 0) { + nerrors++; + PUTS_ERROR("Unable to close the test file.\n"); + } /* end if */ /* Clean up files and close the VFD-specific fapl */ //h5_delete_all_test_files(FILENAMES, fapl_id); if(H5Pclose(fapl_id) < 0) { nerrors++; - PUTS_ERROR("Unable to close VFD-specific fapl\n"); + PUTS_ERROR("Unable to close VFD-specific fapl.\n"); } /* end if */ - if(nerrors) goto error; @@ -305,6 +474,7 @@ error: h5_delete_all_test_files(FILENAMES, fapl_id); H5E_BEGIN_TRY { + H5Fclose(fid); H5Pclose(fapl_id); } H5E_END_TRY; -- cgit v0.12 From 678d116eebe41a960d6a229aef8d5fa748ff29a3 Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Thu, 29 Sep 2016 12:56:07 -0500 Subject: Removed unused variables. --- fortran/src/H5match_types.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/fortran/src/H5match_types.c b/fortran/src/H5match_types.c index 2ae78ee..2337fb3 100644 --- a/fortran/src/H5match_types.c +++ b/fortran/src/H5match_types.c @@ -51,7 +51,7 @@ FILE * fort_header; /* Prototypes for the write routines */ void writeTypedef(const char* c_typedef, const char* c_type, int size); void writeTypedefDefault(const char* c_typedef, int size); -void writeToFiles(const char* c_typedef, const char* fortran_type, const char* c_type, int size, int kind); +void writeToFiles(const char* c_typedef, const char* fortran_type, const char* c_type, int kind); void writeToCFileOnly(const char* c_typedef, const char* fortran_type, const char* c_type, int size); void writeToFilesChr(const char* c_typedef, const char* fortran_type, const char* c_type, int size, const char* kind); @@ -136,10 +136,10 @@ void writeTypedefDefault(const char* c_typedef, int size) } /* Create matching Fortran and C types by writing to both files */ -void writeToFiles(const char* c_typedef, const char* fortran_type, const char* c_type, int size, int kind) +void writeToFiles(const char* c_typedef, const char* fortran_type, const char* c_type, int kind) { fprintf(fort_header, " INTEGER, PARAMETER :: %s = %u\n", fortran_type, kind); - fprintf(c_header, "typedef c_%s_%d %s;\n", c_typedef, size, c_type); + fprintf(c_header, "typedef c_%s_%d %s;\n", c_typedef, kind, c_type); } void writeToFilesChr(const char* c_typedef, const char* fortran_type, const char* c_type, int size, const char* kind) { @@ -148,7 +148,7 @@ void writeToFilesChr(const char* c_typedef, const char* fortran_type, const char } int main(void) { - int i, j,flag; + int i; char chrA[32],chrB[32]; int IntKinds[] = H5_FORTRAN_INTEGER_KINDS; @@ -260,7 +260,7 @@ int main(void) /* haddr_t */ for(i=0;i< FORTRAN_NUM_INTEGER_KINDS;i++) { if(IntKinds_SizeOf[i] == H5_SIZEOF_HADDR_T) { - writeToFiles("int","HADDR_T", "haddr_t_f", IntKinds[i], IntKinds[i]); + writeToFiles("int","HADDR_T", "haddr_t_f", IntKinds[i]); break; } if(i == (FORTRAN_NUM_INTEGER_KINDS-1) ) @@ -271,7 +271,7 @@ int main(void) /* hsize_t */ for(i=0;i< FORTRAN_NUM_INTEGER_KINDS;i++) { if(IntKinds_SizeOf[i] == H5_SIZEOF_HSIZE_T) { - writeToFiles("hsize_t","HSIZE_T", "hsize_t_f", IntKinds[i], IntKinds[i]); + writeToFiles("hsize_t","HSIZE_T", "hsize_t_f", IntKinds[i]); break; } if(i == (FORTRAN_NUM_INTEGER_KINDS-1) ) @@ -282,7 +282,7 @@ int main(void) /* hssize_t */ for(i=0;i< FORTRAN_NUM_INTEGER_KINDS;i++) { if(IntKinds_SizeOf[i] == H5_SIZEOF_HSSIZE_T) { - writeToFiles("int","HSSIZE_T", "hssize_t_f", IntKinds[i], IntKinds[i]); + writeToFiles("int","HSSIZE_T", "hssize_t_f", IntKinds[i]); break; } if(i == (FORTRAN_NUM_INTEGER_KINDS-1) ) @@ -293,7 +293,7 @@ int main(void) /* off_t */ for(i=0;i< FORTRAN_NUM_INTEGER_KINDS;i++) { if(IntKinds_SizeOf[i] == H5_SIZEOF_OFF_T) { - writeToFiles("int","OFF_T", "off_t_f", IntKinds[i], IntKinds[i]); + writeToFiles("int","OFF_T", "off_t_f", IntKinds[i]); break; } if(i == (FORTRAN_NUM_INTEGER_KINDS-1) ) @@ -304,7 +304,7 @@ int main(void) /* size_t */ for(i=0;i< FORTRAN_NUM_INTEGER_KINDS;i++) { if(IntKinds_SizeOf[i] == H5_SIZEOF_SIZE_T) { - writeToFiles("size_t","SIZE_T", "size_t_f", IntKinds[i], IntKinds[i]); + writeToFiles("size_t","SIZE_T", "size_t_f", IntKinds[i]); break; } if(i == (FORTRAN_NUM_INTEGER_KINDS-1) ) @@ -313,7 +313,7 @@ int main(void) } /* int */ - writeToFiles("int","Fortran_INTEGER", "int_f", H5_FORTRAN_NATIVE_INTEGER_KIND, H5_FORTRAN_NATIVE_INTEGER_KIND); + writeToFiles("int","Fortran_INTEGER", "int_f", H5_FORTRAN_NATIVE_INTEGER_KIND); /* int_1, int_2, int_4, int_8 */ @@ -342,14 +342,14 @@ int main(void) if (RealKinds[i] > 0) { sprintf(chrA, "Fortran_REAL_%s", Real_C_TYPES[i]); sprintf(chrB, "real_%s_f", Real_C_TYPES[i]); - writeToFiles("float",chrA, chrB, RealKinds[i], RealKinds[i]); + writeToFiles("float",chrA, chrB, RealKinds[i]); } } /* hid_t */ for(i=0;i< FORTRAN_NUM_INTEGER_KINDS;i++) { if(IntKinds_SizeOf[i] == H5_SIZEOF_HID_T) { - writeToFiles("int","HID_T", "hid_t_f", IntKinds[i], IntKinds[i]); + writeToFiles("int","HID_T", "hid_t_f", IntKinds[i]); break; } if(i == (FORTRAN_NUM_INTEGER_KINDS-1) ) -- cgit v0.12 From cd702dd0515814012093dccb31e9580476c58772 Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Thu, 29 Sep 2016 13:12:07 -0500 Subject: fixed missing closing bracket --- config/cmake/HDF5UseFortran.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/cmake/HDF5UseFortran.cmake b/config/cmake/HDF5UseFortran.cmake index 2658ccf..eba448c 100644 --- a/config/cmake/HDF5UseFortran.cmake +++ b/config/cmake/HDF5UseFortran.cmake @@ -159,7 +159,7 @@ set(PAC_FC_ALL_REAL_KINDS "\{${pac_validRealKinds}\}") list(GET PROG_OUTPUT 3 NUM_IKIND) list(GET PROG_OUTPUT 4 NUM_RKIND) -set(PAC_FORTRAN_NUM_INTEGER_KINDS "${NUM_IKIND}" +set(PAC_FORTRAN_NUM_INTEGER_KINDS "${NUM_IKIND}") set(H5CONFIG_F_NUM_IKIND "INTEGER, PARAMETER :: num_ikinds = ${NUM_IKIND}") set(H5CONFIG_F_IKIND "INTEGER, DIMENSION(1:num_ikinds) :: ikind = (/${pac_validIntKinds}/)") -- cgit v0.12 From e45ee9fa961b7c375c244757609f297d2cf46eea Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Thu, 29 Sep 2016 14:52:26 -0500 Subject: Fixed test to use storage_size instead of c_sizeof when available. --- fortran/test/tf.F90 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fortran/test/tf.F90 b/fortran/test/tf.F90 index 8797cc3..ee5a857 100644 --- a/fortran/test/tf.F90 +++ b/fortran/test/tf.F90 @@ -337,11 +337,11 @@ CONTAINS IMPLICIT NONE TYPE(comp_datatype), INTENT(in) :: a -#ifdef H5_FORTRAN_HAVE_C_SIZEOF - H5_SIZEOF_CMPD = C_SIZEOF(a) +#ifdef H5_FORTRAN_HAVE_STORAGE_SIZE + H5_SIZEOF_CMPD = storage_size(a, c_size_t)/storage_size(c_char_'a',c_size_t) #else -# ifdef H5_FORTRAN_HAVE_STORAGE_SIZE - H5_SIZEOF_CMPD = storage_size(a, c_size_t)/storage_size(c_char_'a',c_size_t) +# ifdef H5_FORTRAN_HAVE_C_SIZEOF + H5_SIZEOF_CMPD = C_SIZEOF(a) # else H5_SIZEOF_CMPD = SIZEOF(a) # endif -- cgit v0.12 From a2fe6f7db93bb1e83cc030df0e4181119900c9e5 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Fri, 30 Sep 2016 03:24:44 -0400 Subject: Added code to create the test file for all chunk index and layout types. --- src/H5Dpkg.h | 1 + src/H5Dtest.c | 41 +++++++ test/evict_on_close.c | 308 +++++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 335 insertions(+), 15 deletions(-) diff --git a/src/H5Dpkg.h b/src/H5Dpkg.h index 05f49d1..2190f8c 100644 --- a/src/H5Dpkg.h +++ b/src/H5Dpkg.h @@ -770,6 +770,7 @@ H5_DLL htri_t H5D__mpio_opt_possible(const H5D_io_info_t *io_info, H5_DLL herr_t H5D__layout_version_test(hid_t did, unsigned *version); H5_DLL herr_t H5D__layout_contig_size_test(hid_t did, hsize_t *size); H5_DLL herr_t H5D__layout_idx_type_test(hid_t did, H5D_chunk_index_t *idx_type); +H5_DLL herr_t H5D__layout_type_test(hid_t did, H5D_layout_t *layout_type); H5_DLL herr_t H5D__current_cache_size_test(hid_t did, size_t *nbytes_used, int *nused); #endif /* H5D_TESTING */ diff --git a/src/H5Dtest.c b/src/H5Dtest.c index c3b0b19..56f14f7 100644 --- a/src/H5Dtest.c +++ b/src/H5Dtest.c @@ -144,6 +144,47 @@ done: /*-------------------------------------------------------------------------- NAME + H5D__layout_type_test + PURPOSE + Determine the storage layout type for a dataset + USAGE + herr_t H5D__layout_type_test(did, layout_type) + hid_t did; IN: Dataset to query + H5D_layout_t *layout_type; OUT: Pointer to location to place layout info + RETURNS + Non-negative on success, negative on failure + DESCRIPTION + Checks the layout type for a dataset. + GLOBAL VARIABLES + COMMENTS, BUGS, ASSUMPTIONS + DO NOT USE THIS FUNCTION FOR ANYTHING EXCEPT TESTING + EXAMPLES + REVISION LOG +--------------------------------------------------------------------------*/ +herr_t +H5D__layout_type_test(hid_t did, H5D_layout_t *layout_type) +{ + H5D_t *dset; /* Pointer to dataset to query */ + herr_t ret_value = SUCCEED; /* return value */ + + FUNC_ENTER_PACKAGE + + HDassert(layout_type); + + /* Check args */ + if(NULL == (dset = (H5D_t *)H5I_object_verify(did, H5I_DATASET))) + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset") + + if(layout_type) + *layout_type = dset->shared->layout.type; + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* H5D__layout_type_test() */ + + +/*-------------------------------------------------------------------------- + NAME H5D__layout_idx_type_test PURPOSE Determine the storage layout index type for a dataset's layout information diff --git a/test/evict_on_close.c b/test/evict_on_close.c index 562c167..b09c1bf 100644 --- a/test/evict_on_close.c +++ b/test/evict_on_close.c @@ -46,16 +46,17 @@ const char *FILENAMES[] = { }; #define FILENAME_BUF_SIZE 1024 -//#define DSET_NAME_COMPACT "compact" -//#define DSET_NAME_CONTIGUOUS "contiguous" -#define DSET_NAME_V1_BTREE_NAME "v1_btree" -//#define DSET_NAME_V2_BTREE "v2_btree" -//#define DSET_NAME_EARRAY "earray" -//#define DSET_NAME_FARRAY "farray" -//#define DSET_NAME_SINGLE "single" - - -#define DSET_NAME_V1_BTREE_NELEMENTS 1024 +/* Dataset names */ +#define DSET_COMPACT_NAME "compact" +#define DSET_CONTIGUOUS_NAME "contiguous" +#define DSET_BTREE_NAME "v1_btree" +#define DSET_EARRAY_NAME "earray" +#define DSET_BT2_NAME "v2_btree" +#define DSET_FARRAY_NAME "farray" +#define DSET_SINGLE_NAME "single" + +/* All datasets store 1000 elements */ +#define NELEMENTS 1024 static hbool_t verify_tag_not_in_cache(H5F_t *f, haddr_t tag); static herr_t check_evict_on_close_api(void); @@ -130,6 +131,8 @@ generate_eoc_test_file(hid_t fapl_id) hsize_t current_dims[2]; /* current dataset size */ hsize_t maximum_dims[2]; /* maximum dataset size */ hsize_t chunk_dims[2]; /* chunk dimensions */ + H5D_chunk_index_t idx_type; /* dataset chunk index type */ + H5D_layout_t layout_type; /* dataset layout type */ int *data = NULL; /* buffer for fake data */ int n; /* # of data elements */ @@ -147,15 +150,78 @@ generate_eoc_test_file(hid_t fapl_id) /***********************************************************/ /* Create the data buffer */ - if(NULL == (data = (int *)HDcalloc(DSET_NAME_V1_BTREE_NELEMENTS, sizeof(int)))) + if(NULL == (data = (int *)HDcalloc(NELEMENTS, sizeof(int)))) TEST_ERROR; + /****************************************************/ + /* Old file format data structures (v1 B-tree only) */ + /****************************************************/ + /********************/ /* Version 1 B-tree */ /********************/ /* Create dataspace */ - n = DSET_NAME_V1_BTREE_NELEMENTS; + n = NELEMENTS; + rank = 1; + current_dims[0] = (hsize_t)n; + maximum_dims[0] = H5S_UNLIMITED; + if((sid = H5Screate_simple(rank, current_dims, maximum_dims)) < 0) + TEST_ERROR; + + /* Create dcpl and set up chunking */ + if((dcpl_id = H5Pcreate(H5P_DATASET_CREATE)) < 0) + TEST_ERROR; + chunk_dims[0] = 1; + if(H5Pset_chunk(dcpl_id, rank, chunk_dims) < 0) + TEST_ERROR; + + /* Create dataset */ + if((did = H5Dcreate(fid, DSET_BTREE_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) + TEST_ERROR; + + /* Ensure we're using the correct chunk indexing scheme */ + if(H5D__layout_idx_type_test(did, &idx_type) < 0) + TEST_ERROR; + if(idx_type != H5D_CHUNK_IDX_BTREE) + FAIL_PUTS_ERROR("should be using version 1 B-tree as the chunk index"); + + /* Write a bunch of fake data */ + if(H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data) < 0) + TEST_ERROR; + + /* Close IDs for this dataset */ + if(H5Dclose(did) < 0) + TEST_ERROR; + if(H5Sclose(sid) < 0) + TEST_ERROR; + if(H5Pclose(dcpl_id) < 0) + TEST_ERROR; + + /***********************************/ + /* New file format data structures */ + /***********************************/ + + /* Close the file */ + if(H5Fclose(fid) < 0) + TEST_ERROR; + + /* Copy the fapl and set the latest file format */ + if((fapl_copy_id = H5Pcopy(fapl_id)) < 0) + TEST_ERROR; + if(H5Pset_libver_bounds(fapl_copy_id, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0) + TEST_ERROR; + + /* Reopen the file */ + if((fid = H5Fopen(filename, H5F_ACC_RDWR, fapl_copy_id)) < 0) + TEST_ERROR; + + /********************/ + /* Extensible Array */ + /********************/ + + /* Create dataspace */ + n = NELEMENTS; rank = 1; current_dims[0] = (hsize_t)n; maximum_dims[0] = H5S_UNLIMITED; @@ -170,8 +236,214 @@ generate_eoc_test_file(hid_t fapl_id) TEST_ERROR; /* Create dataset */ - if((did = H5Dcreate(fid, DSET_NAME_V1_BTREE_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) + if((did = H5Dcreate(fid, DSET_EARRAY_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) + TEST_ERROR; + + /* Ensure we're using the correct chunk indexing scheme */ + if(H5D__layout_idx_type_test(did, &idx_type) < 0) + TEST_ERROR; + if(idx_type != H5D_CHUNK_IDX_EARRAY) + FAIL_PUTS_ERROR("should be using extensible array as the chunk index"); + + /* Write a bunch of fake data */ + if(H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data) < 0) + TEST_ERROR; + + /* Close IDs for this dataset */ + if(H5Dclose(did) < 0) + TEST_ERROR; + if(H5Sclose(sid) < 0) + TEST_ERROR; + if(H5Pclose(dcpl_id) < 0) + TEST_ERROR; + + /********************/ + /* Version 2 B-Tree */ + /********************/ + + /* Create dataspace */ + n = NELEMENTS; + rank = 2; + current_dims[0] = (hsize_t)2; + current_dims[1] = (hsize_t)(n/2); + maximum_dims[0] = H5S_UNLIMITED; + maximum_dims[1] = H5S_UNLIMITED; + if((sid = H5Screate_simple(rank, current_dims, maximum_dims)) < 0) + TEST_ERROR; + + /* Create dcpl and set up chunking */ + if((dcpl_id = H5Pcreate(H5P_DATASET_CREATE)) < 0) + TEST_ERROR; + chunk_dims[0] = 1; + chunk_dims[1] = 1; + if(H5Pset_chunk(dcpl_id, rank, chunk_dims) < 0) + TEST_ERROR; + + /* Create dataset */ + if((did = H5Dcreate(fid, DSET_BT2_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) + TEST_ERROR; + + /* Ensure we're using the correct chunk indexing scheme */ + if(H5D__layout_idx_type_test(did, &idx_type) < 0) + TEST_ERROR; + if(idx_type != H5D_CHUNK_IDX_BT2) + FAIL_PUTS_ERROR("should be using version 2 B-tree as the chunk index"); + + /* Write a bunch of fake data */ + if(H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data) < 0) + TEST_ERROR; + + /* Close IDs for this dataset */ + if(H5Dclose(did) < 0) + TEST_ERROR; + if(H5Sclose(sid) < 0) + TEST_ERROR; + if(H5Pclose(dcpl_id) < 0) + TEST_ERROR; + + /***************/ + /* Fixed Array */ + /***************/ + + /* Create dataspace */ + n = NELEMENTS; + rank = 1; + current_dims[0] = (hsize_t)n; + maximum_dims[0] = (hsize_t)n; + if((sid = H5Screate_simple(rank, current_dims, maximum_dims)) < 0) + TEST_ERROR; + + /* Create dcpl and set up chunking */ + if((dcpl_id = H5Pcreate(H5P_DATASET_CREATE)) < 0) + TEST_ERROR; + chunk_dims[0] = 1; + chunk_dims[1] = 1; + if(H5Pset_chunk(dcpl_id, rank, chunk_dims) < 0) + TEST_ERROR; + + /* Create dataset */ + if((did = H5Dcreate(fid, DSET_FARRAY_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) + TEST_ERROR; + + /* Ensure we're using the correct chunk indexing scheme */ + if(H5D__layout_idx_type_test(did, &idx_type) < 0) + TEST_ERROR; + if(idx_type != H5D_CHUNK_IDX_FARRAY) + FAIL_PUTS_ERROR("should be using fixed array as the chunk index"); + + /* Write a bunch of fake data */ + if(H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data) < 0) + TEST_ERROR; + + /* Close IDs for this dataset */ + if(H5Dclose(did) < 0) + TEST_ERROR; + if(H5Sclose(sid) < 0) + TEST_ERROR; + if(H5Pclose(dcpl_id) < 0) + TEST_ERROR; + + /****************/ + /* Single Chunk */ + /****************/ + + /* Create dataspace */ + n = NELEMENTS; + rank = 1; + current_dims[0] = (hsize_t)n; + maximum_dims[0] = (hsize_t)n; + if((sid = H5Screate_simple(rank, current_dims, maximum_dims)) < 0) + TEST_ERROR; + + /* Create dcpl and set up chunking */ + if((dcpl_id = H5Pcreate(H5P_DATASET_CREATE)) < 0) + TEST_ERROR; + chunk_dims[0] = (hsize_t)n; + chunk_dims[1] = (hsize_t)n; + if(H5Pset_chunk(dcpl_id, rank, chunk_dims) < 0) + TEST_ERROR; + + /* Create dataset */ + if((did = H5Dcreate(fid, DSET_SINGLE_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) + TEST_ERROR; + + /* Ensure we're using the correct chunk indexing scheme */ + if(H5D__layout_idx_type_test(did, &idx_type) < 0) + TEST_ERROR; + if(idx_type != H5D_CHUNK_IDX_SINGLE) + FAIL_PUTS_ERROR("should be using single chunk as the chunk index"); + + /* Write a bunch of fake data */ + if(H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data) < 0) + TEST_ERROR; + + /* Close IDs for this dataset */ + if(H5Dclose(did) < 0) + TEST_ERROR; + if(H5Sclose(sid) < 0) + TEST_ERROR; + if(H5Pclose(dcpl_id) < 0) + TEST_ERROR; + + /**************/ + /* Contiguous */ + /**************/ + + /* Create dataspace */ + n = NELEMENTS; + rank = 1; + current_dims[0] = (hsize_t)n; + maximum_dims[0] = (hsize_t)n; + if((sid = H5Screate_simple(rank, current_dims, maximum_dims)) < 0) + TEST_ERROR; + + /* Create dataset */ + if((did = H5Dcreate(fid, DSET_CONTIGUOUS_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) + TEST_ERROR; + + /* Ensure we're using the correct layout scheme */ + if(H5D__layout_type_test(did, &layout_type) < 0) + TEST_ERROR; + if(layout_type != H5D_CONTIGUOUS) + FAIL_PUTS_ERROR("should be using contiguous layout"); + + /* Write a bunch of fake data */ + if(H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data) < 0) + TEST_ERROR; + + /* Close IDs for this dataset */ + if(H5Dclose(did) < 0) + TEST_ERROR; + if(H5Sclose(sid) < 0) + TEST_ERROR; + + /***********/ + /* Compact */ + /***********/ + + /* Create dataspace */ + n = 1; + rank = 1; + current_dims[0] = (hsize_t)n; + maximum_dims[0] = (hsize_t)n; + if((sid = H5Screate_simple(rank, current_dims, maximum_dims)) < 0) + TEST_ERROR; + + /* Create dcpl and set up compact layout */ + if((dcpl_id = H5Pcreate(H5P_DATASET_CREATE)) < 0) + TEST_ERROR; + if(H5Pset_layout(dcpl_id, H5D_COMPACT) < 0) + TEST_ERROR; + + /* Create dataset */ + if((did = H5Dcreate(fid, DSET_COMPACT_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) + TEST_ERROR; + + /* Ensure we're using the correct layout scheme */ + if(H5D__layout_type_test(did, &layout_type) < 0) TEST_ERROR; + if(layout_type != H5D_COMPACT) + FAIL_PUTS_ERROR("should be using compact layout"); /* Write a bunch of fake data */ if(H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data) < 0) @@ -185,8 +457,14 @@ generate_eoc_test_file(hid_t fapl_id) if(H5Pclose(dcpl_id) < 0) TEST_ERROR; + /********/ + /* DONE */ + /********/ /* Close/free everything else */ + if(H5Pclose(fapl_copy_id) < 0) + TEST_ERROR; + HDfree(data); PASSED(); @@ -239,7 +517,7 @@ check_v1_btree_chunk_index(hid_t fid) TEST_ERROR; /* Create the data buffer */ - if(NULL == (data = (int *)HDcalloc(DSET_NAME_V1_BTREE_NELEMENTS, sizeof(int)))) + if(NULL == (data = (int *)HDcalloc(NELEMENTS, sizeof(int)))) TEST_ERROR; /* Record the number of cache entries */ @@ -253,7 +531,7 @@ check_v1_btree_chunk_index(hid_t fid) #endif /* Open dataset and get the metadata tag */ - if((did = H5Dopen2(fid, DSET_NAME_V1_BTREE_NAME, H5P_DEFAULT)) < 0) + if((did = H5Dopen2(fid, DSET_BTREE_NAME, H5P_DEFAULT)) < 0) TEST_ERROR; if(NULL == (dset_ptr = (H5D_t *)H5I_object_verify(did, H5I_DATASET))) TEST_ERROR; -- cgit v0.12 From 31b033e214762dc2beced02af37d47b668126105 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Fri, 30 Sep 2016 04:26:39 -0400 Subject: Added full implementation of EoC cache test. --- test/evict_on_close.c | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/test/evict_on_close.c b/test/evict_on_close.c index b09c1bf..0657b1b 100644 --- a/test/evict_on_close.c +++ b/test/evict_on_close.c @@ -38,7 +38,7 @@ #include "H5Ipkg.h" /* Uncomment to manually inspect cache states */ -#define EOC_MANUAL_INSPECTION +/* #define EOC_MANUAL_INSPECTION */ const char *FILENAMES[] = { "evict-on-close", /* 0 */ @@ -61,7 +61,7 @@ const char *FILENAMES[] = { static hbool_t verify_tag_not_in_cache(H5F_t *f, haddr_t tag); static herr_t check_evict_on_close_api(void); static hid_t generate_eoc_test_file(hid_t fapl_id); -static herr_t check_v1_btree_chunk_index(hid_t fid); +static herr_t check_configuration(hid_t fid, const char *dset_name); /*------------------------------------------------------------------------- @@ -488,10 +488,10 @@ error: /*------------------------------------------------------------------------- - * Function: check_v1_btree_chunk_index() + * Function: check_configuration() * - * Purpose: Verify that datasets using version 1 B-trees are evicted - * correctly. + * Purpose: Verify that the evict-on-close feature works for a given + * dataset layout and/or chunk index. * * Return: SUCCEED/FAIL * @@ -501,7 +501,7 @@ error: *------------------------------------------------------------------------- */ static herr_t -check_v1_btree_chunk_index(hid_t fid) +check_configuration(hid_t fid, const char *dset_name) { H5F_t *file_ptr = NULL; /* ptr to internal file struct */ hid_t did = -1; /* dataset ID */ @@ -510,7 +510,7 @@ check_v1_btree_chunk_index(hid_t fid) int *data = NULL; /* buffer for fake data */ int32_t before, during, after; /* cache sizes */ - TESTING("evict on close with version 1 B-trees"); + /* NOTE: The TESTING() macro is called in main() */ /* Get a pointer to the file struct */ if(NULL == (file_ptr = (H5F_t *)H5I_object_verify(fid, H5I_FILE))) @@ -531,13 +531,15 @@ check_v1_btree_chunk_index(hid_t fid) #endif /* Open dataset and get the metadata tag */ - if((did = H5Dopen2(fid, DSET_BTREE_NAME, H5P_DEFAULT)) < 0) + if((did = H5Dopen2(fid, dset_name, H5P_DEFAULT)) < 0) TEST_ERROR; if(NULL == (dset_ptr = (H5D_t *)H5I_object_verify(did, H5I_DATASET))) TEST_ERROR; tag = dset_ptr->oloc.addr; - /* Read data from the dataset so the cache gets populated with chunk indices */ + /* Read data from the dataset so the cache gets populated with chunk + * and the like. + */ if(H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data) < 0) TEST_ERROR; @@ -587,7 +589,7 @@ error: H5_FAILED(); return FAIL; -} /* check_v1_btree_chunk_index() */ +} /* check_configuration() */ /*------------------------------------------------------------------------- @@ -722,8 +724,23 @@ main(void) PUTS_ERROR("Unable to generate test file\n"); } /* end if */ - /* Run tests with a variety of dataset configurations */ - nerrors += check_v1_btree_chunk_index(fid) < 0 ? 1 : 0; + /* Run tests with a variety of dataset configurations + * PASSED() and H5_FAILED() are handled in check_configuration() + */ + TESTING("evict on close with version 1 B-tree chunk index"); + nerrors += check_configuration(fid, DSET_BTREE_NAME) < 0 ? 1 : 0; + TESTING("evict on close with extensible array chunk index"); + nerrors += check_configuration(fid, DSET_EARRAY_NAME) < 0 ? 1 : 0; + TESTING("evict on close with version 2 B-tree chunk index"); + nerrors += check_configuration(fid, DSET_BT2_NAME) < 0 ? 1 : 0; + TESTING("evict on close with fixed array chunk index"); + nerrors += check_configuration(fid, DSET_FARRAY_NAME) < 0 ? 1 : 0; + TESTING("evict on close with \'single chunk\' chunk index"); + nerrors += check_configuration(fid, DSET_SINGLE_NAME) < 0 ? 1 : 0; + TESTING("evict on close with contiguous layout"); + nerrors += check_configuration(fid, DSET_CONTIGUOUS_NAME) < 0 ? 1 : 0; + TESTING("evict on close with compact layout"); + nerrors += check_configuration(fid, DSET_COMPACT_NAME) < 0 ? 1 : 0; /* Close the test file */ if(H5Fclose(fid) < 0) { @@ -732,7 +749,7 @@ main(void) } /* end if */ /* Clean up files and close the VFD-specific fapl */ - //h5_delete_all_test_files(FILENAMES, fapl_id); + h5_delete_all_test_files(FILENAMES, fapl_id); if(H5Pclose(fapl_id) < 0) { nerrors++; PUTS_ERROR("Unable to close VFD-specific fapl.\n"); -- cgit v0.12 From 5088217e4256aa2ba5b7590b7de91aeae415a1ce Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Fri, 30 Sep 2016 05:04:11 -0400 Subject: - Removed non-implemented code from H5Gint.c - Removed commented-out debug code from H5Dint.c - Added blank lines to eliminate delta in a fortran file. --- fortran/src/H5Eff.F90 | 2 ++ src/H5Dint.c | 8 -------- src/H5Gint.c | 19 ------------------- 3 files changed, 2 insertions(+), 27 deletions(-) diff --git a/fortran/src/H5Eff.F90 b/fortran/src/H5Eff.F90 index 2fc77f4..4198321 100644 --- a/fortran/src/H5Eff.F90 +++ b/fortran/src/H5Eff.F90 @@ -136,10 +136,12 @@ CONTAINS CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: name END FUNCTION h5eprint_c1 END INTERFACE + INTERFACE INTEGER FUNCTION h5eprint_c2() BIND(C,NAME='h5eprint_c2') END FUNCTION h5eprint_c2 END INTERFACE + IF (PRESENT(name)) THEN namelen = LEN(NAME) hdferr = h5eprint_c1(name, namelen) diff --git a/src/H5Dint.c b/src/H5Dint.c index 5ae3bd3..7f90f16 100644 --- a/src/H5Dint.c +++ b/src/H5Dint.c @@ -1920,17 +1920,10 @@ H5D_close(H5D_t *dataset) /* Evict dataset metadata if evicting on close */ if(H5F_SHARED(dataset->oloc.file) && H5F_EVICT_ON_CLOSE(dataset->oloc.file)) { -// printf("EVICTING DATASET (TAG: 0x%3llx)\n", dataset->oloc.addr); -// printf("DUMPING CACHE - BEFORE FLUSH\n"); -// H5AC_dump_cache(dataset->oloc.file); if(H5AC_flush_tagged_metadata(dataset->oloc.file, dataset->oloc.addr, H5AC_ind_read_dxpl_id) < 0) HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush tagged metadata") -// printf("DUMPING CACHE - BETWEEN FLUSH AND EVICT\n"); -// H5AC_dump_cache(dataset->oloc.file); if(H5AC_evict_tagged_metadata(dataset->oloc.file, dataset->oloc.addr, FALSE, H5AC_ind_read_dxpl_id) < 0) HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to evict tagged metadata") -// printf("DUMPING CACHE - AFTER EVICT\n"); -// H5AC_dump_cache(dataset->oloc.file); } /* end if */ /* @@ -2672,7 +2665,6 @@ H5D__vlen_get_buf_size(void H5_ATTR_UNUSED *elem, hid_t type_id, unsigned H5_ATT /* Read in the point (with the custom VL memory allocator) */ if(H5D__read(vlen_bufsize->dset, type_id, vlen_bufsize->mspace, vlen_bufsize->fspace, vlen_bufsize->xfer_pid, vlen_bufsize->fl_tbuf) < 0) - HGOTO_ERROR(H5E_DATASET, H5E_READERROR, FAIL, "can't read point") done: FUNC_LEAVE_NOAPI(ret_value) diff --git a/src/H5Gint.c b/src/H5Gint.c index 4b34015..a0e06f3 100644 --- a/src/H5Gint.c +++ b/src/H5Gint.c @@ -501,25 +501,6 @@ H5G_close(H5G_t *grp) if(H5O_close(&(grp->oloc)) < 0) HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to close") -#ifdef DER - /* XXX - NOT IMPLEMENTED */ - /* Evict group metadata if evicting on close */ - if(H5F_SHARED(grp->oloc.file) && H5F_EVICT_ON_CLOSE(grp->oloc.file)) { - /* I've left in the cache dump code for now - DER */ - printf("EVICTING GROUP (TAG: 0x%3llx)\n", grp->oloc.addr); - printf("DUMPING CACHE - BEFORE FLUSH\n"); - H5AC_dump_cache(grp->oloc.file); - if(H5AC_flush_tagged_metadata(grp->oloc.file, grp->oloc.addr, H5AC_ind_read_dxpl_id) < 0) - HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush tagged metadata") - printf("DUMPING CACHE - BETWEEN FLUSH AND EVICT\n"); - H5AC_dump_cache(grp->oloc.file); - if(H5AC_evict_tagged_metadata(grp->oloc.file, grp->oloc.addr, FALSE, H5AC_ind_read_dxpl_id) < 0) - HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to evict tagged metadata") - printf("DUMPING CACHE - AFTER EVICT\n"); - H5AC_dump_cache(grp->oloc.file); - } /* end if */ -#endif /* DER */ - /* Free memory */ grp->shared = H5FL_FREE(H5G_shared_t, grp->shared); } else { -- cgit v0.12 From fe71ac8d0ee13e3ed4656cd84720bd644729b74d Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Fri, 30 Sep 2016 09:35:09 -0500 Subject: Fix error reporting --- config/cmake/HDF518_Examples.cmake.in | 15 ++++++++++++--- config/cmake/HDF5_Examples.cmake.in | 15 ++++++++++++--- config/cmake/scripts/CTestScript.cmake | 12 +++++++++--- 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/config/cmake/HDF518_Examples.cmake.in b/config/cmake/HDF518_Examples.cmake.in index efabbe6..309c1d6 100644 --- a/config/cmake/HDF518_Examples.cmake.in +++ b/config/cmake/HDF518_Examples.cmake.in @@ -171,19 +171,28 @@ ctest_read_custom_files ("${CTEST_BINARY_DIRECTORY}") ## NORMAL process ## -------------------------- ctest_start (Experimental) -ctest_configure (BUILD "${CTEST_BINARY_DIRECTORY}") +ctest_configure (BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res) +if(${res} LESS 0 OR ${res} GREATER 0) + file(APPEND ${CTEST_SCRIPT_DIRECTORY}/FailedCTest.txt "Failed Configure: ${res}\n") +endif() if(LOCAL_SUBMIT) ctest_submit (PARTS Configure Notes) endif() -ctest_build (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND) +ctest_build (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND APPEND RETURN_VALUE res NUMBER_ERRORS errval) +if(${res} LESS 0 OR ${res} GREATER 0 OR ${errval} GREATER 0) + file(APPEND ${CTEST_SCRIPT_DIRECTORY}/FailedCTest.txt "Failed ${errval} Build: ${res}\n") +endif() if(LOCAL_SUBMIT) ctest_submit (PARTS Build) endif() ctest_test (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND ${ctest_test_args} RETURN_VALUE res) +if(${res} LESS 0 OR ${res} GREATER 0) + file(APPEND ${CTEST_SCRIPT_DIRECTORY}/FailedCTest.txt "Failed Tests: ${res}\n") +endif() if(LOCAL_SUBMIT) ctest_submit (PARTS Test) endif() -if(res GREATER 0) +if(${res} LESS 0 OR ${res} GREATER 0) message (FATAL_ERROR "tests FAILED") endif() #----------------------------------------------------------------------------- diff --git a/config/cmake/HDF5_Examples.cmake.in b/config/cmake/HDF5_Examples.cmake.in index 8ea6d18..058dd7a 100644 --- a/config/cmake/HDF5_Examples.cmake.in +++ b/config/cmake/HDF5_Examples.cmake.in @@ -182,19 +182,28 @@ ctest_read_custom_files ("${CTEST_BINARY_DIRECTORY}") ## NORMAL process ## -------------------------- ctest_start (Experimental) -ctest_configure (BUILD "${CTEST_BINARY_DIRECTORY}") +ctest_configure (BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res) +if(${res} LESS 0 OR ${res} GREATER 0) + file(APPEND ${CTEST_SCRIPT_DIRECTORY}/FailedCTest.txt "Failed Configure: ${res}\n") +endif() if(LOCAL_SUBMIT) ctest_submit (PARTS Configure Notes) endif() -ctest_build (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND) +ctest_build (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND APPEND RETURN_VALUE res NUMBER_ERRORS errval) +if(${res} LESS 0 OR ${res} GREATER 0 OR ${errval} GREATER 0) + file(APPEND ${CTEST_SCRIPT_DIRECTORY}/FailedCTest.txt "Failed ${errval} Build: ${res}\n") +endif() if(LOCAL_SUBMIT) ctest_submit (PARTS Build) endif() ctest_test (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND ${ctest_test_args} RETURN_VALUE res) +if(${res} LESS 0 OR ${res} GREATER 0) + file(APPEND ${CTEST_SCRIPT_DIRECTORY}/FailedCTest.txt "Failed Tests: ${res}\n") +endif() if(LOCAL_SUBMIT) ctest_submit (PARTS Test) endif() -if(res GREATER 0) +if(${res} LESS 0 OR ${res} GREATER 0) message (FATAL_ERROR "tests FAILED") endif() #----------------------------------------------------------------------------- diff --git a/config/cmake/scripts/CTestScript.cmake b/config/cmake/scripts/CTestScript.cmake index 8a08caa..322f0e5 100755 --- a/config/cmake/scripts/CTestScript.cmake +++ b/config/cmake/scripts/CTestScript.cmake @@ -257,12 +257,18 @@ message(STATUS "Dashboard script configuration:\n${vars}\n") endif() configure_file(${CTEST_SOURCE_DIRECTORY}/config/cmake/CTestCustom.cmake ${CTEST_BINARY_DIRECTORY}/CTestCustom.cmake) ctest_read_custom_files ("${CTEST_BINARY_DIRECTORY}") - ctest_configure (BUILD "${CTEST_BINARY_DIRECTORY}") + ctest_configure (BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res) + if(${res} LESS 0 OR ${res} GREATER 0) + message(FATAL_ERROR "Failed configure: ${res}\n") + endif() if(LOCAL_SUBMIT) ctest_submit (PARTS Update Configure Notes) endif() - ctest_build (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND) + ctest_build (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND RETURN_VALUE res NUMBER_ERRORS errval) + if(${res} LESS 0 OR ${res} GREATER 0 OR ${errval} GREATER 0) + message(FATAL_ERROR "Failed build: ${res} with Errors=${errval}\n") + endif() if(LOCAL_SUBMIT) ctest_submit (PARTS Build) endif() @@ -273,7 +279,7 @@ message(STATUS "Dashboard script configuration:\n${vars}\n") if(LOCAL_SUBMIT) ctest_submit (PARTS Test) endif() - if(res GREATER 0) + if(${res} LESS 0 OR ${res} GREATER 0) message(FATAL_ERROR "Failed tests: ${res}\n") endif() else() -- cgit v0.12 From 2299ff06c3dd9d5dee5320999a282f1526c27be7 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Fri, 30 Sep 2016 09:41:18 -0500 Subject: Correct variable name --- config/cmake/HDF518_Examples.cmake.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/cmake/HDF518_Examples.cmake.in b/config/cmake/HDF518_Examples.cmake.in index 309c1d6..e1cb781 100644 --- a/config/cmake/HDF518_Examples.cmake.in +++ b/config/cmake/HDF518_Examples.cmake.in @@ -85,9 +85,9 @@ else(WIN32) set(CTEST_BINARY_DIRECTORY "${CTEST_DASHBOARD_ROOT}/${CTEST_BINARY_NAME}") endif(WIN32) if(${FORTRANLIBRARIES}) - set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF_BUILD_FORTRAN:BOOL=ON") + set(BUILD_OPTIONS "${BUILD_OPTIONS} -DHDF_BUILD_FORTRAN:BOOL=ON") else() - set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF_BUILD_FORTRAN:BOOL=OFF") + set(BUILD_OPTIONS "${BUILD_OPTIONS} -DHDF_BUILD_FORTRAN:BOOL=OFF") endif() if(${CDASH_LOCAL}) set(BUILD_OPTIONS "${BUILD_OPTIONS} -DCDASH_LOCAL:BOOL=ON") -- cgit v0.12 From cbc260e636e258cc55d9fb8fdafd3bff0877ac23 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Fri, 30 Sep 2016 13:06:12 -0400 Subject: - Removed BRANCH.txt and MANIFEST entry - Fixed a missing line in H5Dint.c --- BRANCH.txt | 22 ---------------------- MANIFEST | 1 - src/H5Dint.c | 1 + 3 files changed, 1 insertion(+), 23 deletions(-) delete mode 100644 BRANCH.txt diff --git a/BRANCH.txt b/BRANCH.txt deleted file mode 100644 index 6c4ee6c..0000000 --- a/BRANCH.txt +++ /dev/null @@ -1,22 +0,0 @@ -evict_on_close - -This branch is for the development of the "evict on close" feature -which will cause the library to evict all cached information -on object close. - -Dana Robinson is in charge of the branch, which follows the trunk. -It will be deleted when the feature is merged to the trunk. - -Key changes: - -* New H5Pset/get_evict_on_close() functions that enable and disable - the feature (default: disabled). - -* New property: H5F_ACS_EVICT_ON_CLOSE_FLAG - -* Added match_global flag to H5AC_evict_tagged_metadata() and - H5C_evict_tagged_entries() parameter lists. - -* H5D_close() updated to evict on close, when the property is set. - -* New evict_on_close test to exercise the function. diff --git a/MANIFEST b/MANIFEST index 3ed99e7..fb454c5 100644 --- a/MANIFEST +++ b/MANIFEST @@ -25,7 +25,6 @@ ./.autom4te.cfg _DO_NOT_DISTRIBUTE_ ./.h5chkright.ini _DO_NOT_DISTRIBUTE_ ./ACKNOWLEDGMENTS -./BRANCH.txt ./COPYING ./MANIFEST ./Makefile.dist diff --git a/src/H5Dint.c b/src/H5Dint.c index 7f90f16..59fe3e9 100644 --- a/src/H5Dint.c +++ b/src/H5Dint.c @@ -2665,6 +2665,7 @@ H5D__vlen_get_buf_size(void H5_ATTR_UNUSED *elem, hid_t type_id, unsigned H5_ATT /* Read in the point (with the custom VL memory allocator) */ if(H5D__read(vlen_bufsize->dset, type_id, vlen_bufsize->mspace, vlen_bufsize->fspace, vlen_bufsize->xfer_pid, vlen_bufsize->fl_tbuf) < 0) + HGOTO_ERROR(H5E_DATASET, H5E_READERROR, FAIL, "can't read point") done: FUNC_LEAVE_NOAPI(ret_value) -- cgit v0.12 From dd47e42313fd4d76da95b7e48013bcd0d8879434 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Sat, 1 Oct 2016 07:23:57 -0400 Subject: Changed H5Dcreate to H5Dcreate2 in test/evict_on_close.c --- test/evict_on_close.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test/evict_on_close.c b/test/evict_on_close.c index 0657b1b..1f515b2 100644 --- a/test/evict_on_close.c +++ b/test/evict_on_close.c @@ -177,7 +177,7 @@ generate_eoc_test_file(hid_t fapl_id) TEST_ERROR; /* Create dataset */ - if((did = H5Dcreate(fid, DSET_BTREE_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) + if((did = H5Dcreate2(fid, DSET_BTREE_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) TEST_ERROR; /* Ensure we're using the correct chunk indexing scheme */ @@ -236,7 +236,7 @@ generate_eoc_test_file(hid_t fapl_id) TEST_ERROR; /* Create dataset */ - if((did = H5Dcreate(fid, DSET_EARRAY_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) + if((did = H5Dcreate2(fid, DSET_EARRAY_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) TEST_ERROR; /* Ensure we're using the correct chunk indexing scheme */ @@ -280,7 +280,7 @@ generate_eoc_test_file(hid_t fapl_id) TEST_ERROR; /* Create dataset */ - if((did = H5Dcreate(fid, DSET_BT2_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) + if((did = H5Dcreate2(fid, DSET_BT2_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) TEST_ERROR; /* Ensure we're using the correct chunk indexing scheme */ @@ -322,7 +322,7 @@ generate_eoc_test_file(hid_t fapl_id) TEST_ERROR; /* Create dataset */ - if((did = H5Dcreate(fid, DSET_FARRAY_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) + if((did = H5Dcreate2(fid, DSET_FARRAY_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) TEST_ERROR; /* Ensure we're using the correct chunk indexing scheme */ @@ -364,7 +364,7 @@ generate_eoc_test_file(hid_t fapl_id) TEST_ERROR; /* Create dataset */ - if((did = H5Dcreate(fid, DSET_SINGLE_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) + if((did = H5Dcreate2(fid, DSET_SINGLE_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) TEST_ERROR; /* Ensure we're using the correct chunk indexing scheme */ @@ -398,7 +398,7 @@ generate_eoc_test_file(hid_t fapl_id) TEST_ERROR; /* Create dataset */ - if((did = H5Dcreate(fid, DSET_CONTIGUOUS_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) + if((did = H5Dcreate2(fid, DSET_CONTIGUOUS_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR; /* Ensure we're using the correct layout scheme */ @@ -436,7 +436,7 @@ generate_eoc_test_file(hid_t fapl_id) TEST_ERROR; /* Create dataset */ - if((did = H5Dcreate(fid, DSET_COMPACT_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) + if((did = H5Dcreate2(fid, DSET_COMPACT_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) TEST_ERROR; /* Ensure we're using the correct layout scheme */ -- cgit v0.12 From 6cb0d90338ca9e16f793b3ae38aac4b77c499d42 Mon Sep 17 00:00:00 2001 From: lrknox Date: Sat, 1 Oct 2016 09:41:26 -0500 Subject: Snapshot release: increment version. --- README.txt | 2 +- bin/release | 2 +- c++/src/cpp_doc_config | 2 +- configure.ac | 2 +- release_docs/RELEASE.txt | 2 +- src/H5public.h | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.txt b/README.txt index 6dfd021..151e92c 100644 --- a/README.txt +++ b/README.txt @@ -1,4 +1,4 @@ -HDF5 version 1.9.234 currently under development +HDF5 version 1.9.235 currently under development Please refer to the release_docs/INSTALL file for installation instructions. ------------------------------------------------------------------------------ diff --git a/bin/release b/bin/release index 703916b..d8dcd5c 100755 --- a/bin/release +++ b/bin/release @@ -152,7 +152,7 @@ tar2zip() # This command must be run at the top level of the hdf5 source directory. # Verify this requirement. -if [ ! \( -f configure -a -f bin/release \) ]; then +if [ ! \( -f configure.ac-a -f bin/release \) ]; then echo "$0 must be run at the top level of the hdf5 source directory" exit 1 fi diff --git a/c++/src/cpp_doc_config b/c++/src/cpp_doc_config index 623f9c7..c024c45 100644 --- a/c++/src/cpp_doc_config +++ b/c++/src/cpp_doc_config @@ -38,7 +38,7 @@ PROJECT_NAME = "HDF5 C++ API" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = "1.9.234 currently under development" +PROJECT_NUMBER = "1.9.235 currently under development" # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/configure.ac b/configure.ac index 59d1bef..028bd5f 100644 --- a/configure.ac +++ b/configure.ac @@ -26,7 +26,7 @@ AC_PREREQ([2.69]) ## NOTE: Do not forget to change the version number here when we do a ## release!!! ## -AC_INIT([HDF5], [1.9.234], [help@hdfgroup.org]) +AC_INIT([HDF5], [1.9.235], [help@hdfgroup.org]) AC_CONFIG_SRCDIR([src/H5.c]) AC_CONFIG_HEADERS([src/H5config.h]) diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index 4d9b832..87eb732 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -1,4 +1,4 @@ -HDF5 version 1.9.234 currently under development +HDF5 version 1.9.235 currently under development ================================================================================ diff --git a/src/H5public.h b/src/H5public.h index 2f21648..84c98fa 100644 --- a/src/H5public.h +++ b/src/H5public.h @@ -94,10 +94,10 @@ extern "C" { /* Version numbers */ #define H5_VERS_MAJOR 1 /* For major interface/format changes */ #define H5_VERS_MINOR 9 /* For minor interface/format changes */ -#define H5_VERS_RELEASE 234 /* For tweaks, bug-fixes, or development */ +#define H5_VERS_RELEASE 235 /* For tweaks, bug-fixes, or development */ #define H5_VERS_SUBRELEASE "" /* For pre-releases like snap0 */ /* Empty string for real releases. */ -#define H5_VERS_INFO "HDF5 library version: 1.9.234" /* Full version string */ +#define H5_VERS_INFO "HDF5 library version: 1.9.235" /* Full version string */ #define H5check() H5check_version(H5_VERS_MAJOR,H5_VERS_MINOR, \ H5_VERS_RELEASE) -- cgit v0.12 From 4a2669d51f8f839a63c1257c184318cd8c0ce1ae Mon Sep 17 00:00:00 2001 From: lrknox Date: Sat, 1 Oct 2016 09:47:31 -0500 Subject: Correct typo: add ' ' --- bin/release | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/release b/bin/release index d8dcd5c..1d3c9c5 100755 --- a/bin/release +++ b/bin/release @@ -152,7 +152,7 @@ tar2zip() # This command must be run at the top level of the hdf5 source directory. # Verify this requirement. -if [ ! \( -f configure.ac-a -f bin/release \) ]; then +if [ ! \( -f configure.ac -a -f bin/release \) ]; then echo "$0 must be run at the top level of the hdf5 source directory" exit 1 fi -- cgit v0.12 From f9364c0080405bb36d704eb3f9505029d3da41f4 Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Mon, 3 Oct 2016 13:26:39 -0500 Subject: removed the use of C_SIZEOF for non BIND(C) derived type --- fortran/test/tf.F90 | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/fortran/test/tf.F90 b/fortran/test/tf.F90 index ee5a857..26b3e99 100644 --- a/fortran/test/tf.F90 +++ b/fortran/test/tf.F90 @@ -340,11 +340,7 @@ CONTAINS #ifdef H5_FORTRAN_HAVE_STORAGE_SIZE H5_SIZEOF_CMPD = storage_size(a, c_size_t)/storage_size(c_char_'a',c_size_t) #else -# ifdef H5_FORTRAN_HAVE_C_SIZEOF - H5_SIZEOF_CMPD = C_SIZEOF(a) -# else - H5_SIZEOF_CMPD = SIZEOF(a) -# endif + H5_SIZEOF_CMPD = SIZEOF(a) #endif END FUNCTION H5_SIZEOF_CMPD -- cgit v0.12 From 869ef118e914f127e9f1a2f949b760f1585dba0f Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Mon, 3 Oct 2016 14:50:41 -0500 Subject: Move clear-objects inside runTest --- config/cmake_ext_mod/runTest.cmake | 8 ++++++++ tools/h5ls/CMakeTests.cmake | 10 +++++----- tools/h5ls/CMakeTestsVDS.cmake | 10 +++++----- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/config/cmake_ext_mod/runTest.cmake b/config/cmake_ext_mod/runTest.cmake index 21a65e6..8b47693 100644 --- a/config/cmake_ext_mod/runTest.cmake +++ b/config/cmake_ext_mod/runTest.cmake @@ -25,6 +25,14 @@ if (NOT TEST_SKIP_COMPARE AND NOT TEST_REFERENCE) message (FATAL_ERROR "Require TEST_REFERENCE to be defined") endif (NOT TEST_SKIP_COMPARE AND NOT TEST_REFERENCE) +if (EXISTS ${TEST_FOLDER}/${TEST_OUTPUT}) + file (REMOVE ${TEST_FOLDER}/${TEST_OUTPUT}) +endif (EXISTS ${TEST_FOLDER}/${TEST_OUTPUT}) + +if (EXISTS ${TEST_FOLDER}/${TEST_OUTPUT}.err) + file (REMOVE ${TEST_FOLDER}/${TEST_OUTPUT}.err) +endif (EXISTS ${TEST_FOLDER}/${TEST_OUTPUT}.err) + # if there is not an error reference file add the error output to the stdout file if (NOT TEST_ERRREF) set (ERROR_APPEND 1) diff --git a/tools/h5ls/CMakeTests.cmake b/tools/h5ls/CMakeTests.cmake index 2367df8..4e6a08f 100644 --- a/tools/h5ls/CMakeTests.cmake +++ b/tools/h5ls/CMakeTests.cmake @@ -119,11 +119,11 @@ set_tests_properties (H5LS-${resultfile} PROPERTIES DEPENDS ${last_test}) endif () else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5LS-${resultfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ./testfiles/${resultfile}.out ./testfiles/${resultfile}.out.err - ) +# add_test ( +# NAME H5LS-${resultfile}-clear-objects +# COMMAND ${CMAKE_COMMAND} +# -E remove ./testfiles/${resultfile}.out ./testfiles/${resultfile}.out.err +# ) add_test ( NAME H5LS-${resultfile} COMMAND "${CMAKE_COMMAND}" diff --git a/tools/h5ls/CMakeTestsVDS.cmake b/tools/h5ls/CMakeTestsVDS.cmake index e6c216d..240eed0 100644 --- a/tools/h5ls/CMakeTestsVDS.cmake +++ b/tools/h5ls/CMakeTestsVDS.cmake @@ -70,11 +70,11 @@ set_tests_properties (H5LS-${resultfile} PROPERTIES DEPENDS ${last_test}) endif () else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5LS-${resultfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ./testfiles/vds/${resultfile}.out ./testfiles/vds/${resultfile}.out.err - ) +# add_test ( +# NAME H5LS-${resultfile}-clear-objects +# COMMAND ${CMAKE_COMMAND} +# -E remove ./testfiles/vds/${resultfile}.out ./testfiles/vds/${resultfile}.out.err +# ) add_test ( NAME H5LS-${resultfile} COMMAND "${CMAKE_COMMAND}" -- cgit v0.12 From dd9caf37d2e1191ed9abce4c34564ab22a8d53a8 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Mon, 3 Oct 2016 15:34:11 -0500 Subject: Merge test output file clearing into runTest.cmake --- hl/tools/gif2h5/CMakeTests.cmake | 5 ++++ java/examples/datasets/CMakeLists.txt | 4 --- java/examples/datatypes/CMakeLists.txt | 2 -- java/examples/groups/CMakeLists.txt | 11 --------- java/examples/intro/CMakeLists.txt | 2 -- tools/h5copy/CMakeTests.cmake | 2 -- tools/h5diff/CMakeTests.cmake | 43 --------------------------------- tools/h5dump/CMakeTests.cmake | 38 ++++------------------------- tools/h5dump/CMakeTestsPBITS.cmake | 7 ------ tools/h5dump/CMakeTestsVDS.cmake | 13 ---------- tools/h5dump/CMakeTestsXML.cmake | 7 ------ tools/h5format_convert/CMakeTests.cmake | 8 +++--- tools/h5import/CMakeTests.cmake | 20 +-------------- tools/h5jam/CMakeTests.cmake | 35 ++------------------------- tools/h5ls/CMakeTests.cmake | 6 ----- tools/h5ls/CMakeTestsVDS.cmake | 6 ----- tools/h5repack/CMakeTests.cmake | 10 -------- tools/h5stat/CMakeTests.cmake | 6 ----- tools/misc/CMakeTests.cmake | 4 --- 19 files changed, 17 insertions(+), 212 deletions(-) diff --git a/hl/tools/gif2h5/CMakeTests.cmake b/hl/tools/gif2h5/CMakeTests.cmake index 1cffe55..1dda0f5 100644 --- a/hl/tools/gif2h5/CMakeTests.cmake +++ b/hl/tools/gif2h5/CMakeTests.cmake @@ -26,16 +26,21 @@ add_test ( image.gif image24.gif ) +set_tests_properties (HL_TOOLS-clear-objects PROPERTIES DEPENDS HL_TOOLS-clear-objects) add_test (NAME HL_TOOLS_gif2h5 COMMAND $ testfiles/image1.gif image1.h5) +set_tests_properties (HL_TOOLS-clear-objects PROPERTIES DEPENDS HL_TOOLS-clear-objects) add_test (NAME HL_TOOLS_h52gif COMMAND $ testfiles/h52giftst.h5 image1.gif -i image) +set_tests_properties (HL_TOOLS-clear-objects PROPERTIES DEPENDS HL_TOOLS-clear-objects) add_test (NAME HL_TOOLS_h52gif_none COMMAND $ testfiles/h52giftst.h5 image.gif -i nosuch_image) set_tests_properties (HL_TOOLS_h52gif_none PROPERTIES WILL_FAIL "true") +set_tests_properties (HL_TOOLS-clear-objects PROPERTIES DEPENDS HL_TOOLS-clear-objects) #add_test (NAME HL_TOOLS_h52gifpal COMMAND $ testfiles/h52giftst.h5 image.gif -i palette) #set_tests_properties (HL_TOOLS_h52gifpal PROPERTIES WILL_FAIL "true") add_test (NAME HL_TOOLS_h52gif24bits COMMAND $ testfiles/ex_image2.h5 image24.gif -i image24bitpixel) set_tests_properties (HL_TOOLS_h52gif24bits PROPERTIES WILL_FAIL "true") +set_tests_properties (HL_TOOLS_h52gif24bits PROPERTIES DEPENDS HL_TOOLS-clear-objects) diff --git a/java/examples/datasets/CMakeLists.txt b/java/examples/datasets/CMakeLists.txt index 0ba2331..3a69359 100644 --- a/java/examples/datasets/CMakeLists.txt +++ b/java/examples/datasets/CMakeLists.txt @@ -108,8 +108,6 @@ if (BUILD_TESTING) -E remove ${HDFJAVA_EXAMPLES_BINARY_DIR}/${example}.h5 ${HDFJAVA_EXAMPLES_BINARY_DIR}/${example}.data - ${example}.out - ${example}.out.err ) else (${example} STREQUAL "H5Ex_D_External") add_test ( @@ -117,8 +115,6 @@ if (BUILD_TESTING) COMMAND ${CMAKE_COMMAND} -E remove ${HDFJAVA_EXAMPLES_BINARY_DIR}/${example}.h5 - ${example}.out - ${example}.out.err ) endif (${example} STREQUAL "H5Ex_D_External") if (NOT "${last_test}" STREQUAL "") diff --git a/java/examples/datatypes/CMakeLists.txt b/java/examples/datatypes/CMakeLists.txt index 5ab513c..3eae115 100644 --- a/java/examples/datatypes/CMakeLists.txt +++ b/java/examples/datatypes/CMakeLists.txt @@ -96,8 +96,6 @@ if (BUILD_TESTING) COMMAND ${CMAKE_COMMAND} -E remove ${HDFJAVA_EXAMPLES_BINARY_DIR}/${example}.h5 - ${example}.out - ${example}.out.err ) if (NOT "${last_test}" STREQUAL "") set_tests_properties (JAVA_datatypes-${example}-clear-objects PROPERTIES DEPENDS ${last_test}) diff --git a/java/examples/groups/CMakeLists.txt b/java/examples/groups/CMakeLists.txt index c23b7d3..2cab211 100644 --- a/java/examples/groups/CMakeLists.txt +++ b/java/examples/groups/CMakeLists.txt @@ -90,17 +90,6 @@ ENDMACRO (ADD_H5_TEST file) if (BUILD_TESTING) foreach (example ${HDF_JAVA_EXAMPLES}) - add_test ( - NAME JAVA_groups-${example}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove - ${example}.out - ${example}.out.err - ) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (JAVA_groups-${example}-clear-objects PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - set (last_test "JAVA_groups-${example}-clear-objects") if (NOT ${example} STREQUAL "H5Ex_G_Iterate" AND NOT ${example} STREQUAL "H5Ex_G_Visit") if (${example} STREQUAL "H5Ex_G_Compact") add_test ( diff --git a/java/examples/intro/CMakeLists.txt b/java/examples/intro/CMakeLists.txt index 6b77382..2d0c218 100644 --- a/java/examples/intro/CMakeLists.txt +++ b/java/examples/intro/CMakeLists.txt @@ -98,8 +98,6 @@ if (BUILD_TESTING) COMMAND ${CMAKE_COMMAND} -E remove ${HDFJAVA_EXAMPLES_BINARY_DIR}/${example}.h5 - ${example}.out - ${example}.out.err ) if (NOT "${last_test}" STREQUAL "") set_tests_properties (JAVA_intro-${example}-clear-objects PROPERTIES DEPENDS ${last_test}) diff --git a/tools/h5copy/CMakeTests.cmake b/tools/h5copy/CMakeTests.cmake index 96dc92b..a32c766 100644 --- a/tools/h5copy/CMakeTests.cmake +++ b/tools/h5copy/CMakeTests.cmake @@ -211,8 +211,6 @@ COMMAND ${CMAKE_COMMAND} -E remove ./testfiles/${testname}.out.h5 - ./testfiles/${testname}.out.out - ./testfiles/${testname}.out.out.err ) add_test ( NAME H5COPY-CMP-${testname} diff --git a/tools/h5diff/CMakeTests.cmake b/tools/h5diff/CMakeTests.cmake index a649b78..5d3d433 100644 --- a/tools/h5diff/CMakeTests.cmake +++ b/tools/h5diff/CMakeTests.cmake @@ -310,11 +310,6 @@ endif () else (HDF5_ENABLE_USING_MEMCHECKER) add_test ( - NAME H5DIFF-${resultfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ./testfiles/${resultfile}.out ./testfiles/${resultfile}.out.err - ) - add_test ( NAME H5DIFF-${resultfile} COMMAND "${CMAKE_COMMAND}" -D "TEST_PROGRAM=$" @@ -326,7 +321,6 @@ -D "TEST_APPEND=EXIT CODE:" -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" ) - set_tests_properties (H5DIFF-${resultfile} PROPERTIES DEPENDS "H5DIFF-${resultfile}-clear-objects") endif (HDF5_ENABLE_USING_MEMCHECKER) if (H5_HAVE_PARALLEL) ADD_PH5_TEST (${resultfile} ${resultcode} ${ARGN}) @@ -346,11 +340,6 @@ endif () else (HDF5_ENABLE_USING_MEMCHECKER) add_test ( - NAME PH5DIFF-${resultfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ./testfiles/${resultfile}_p.out ./testfiles/${resultfile}_p.out.err - ) - add_test ( NAME PH5DIFF-${resultfile} COMMAND "${CMAKE_COMMAND}" -D "TEST_PROGRAM=${MPIEXEC};${MPIEXEC_PREFLAGS};${MPIEXEC_NUMPROC_FLAG};${MPIEXEC_MAX_NUMPROCS};${MPIEXEC_POSTFLAGS};$" @@ -364,41 +353,9 @@ -D "TEST_SKIP_COMPARE=TRUE" -P "${HDF_RESOURCES_EXT_DIR}/prunTest.cmake" ) - set_tests_properties (PH5DIFF-${resultfile} PROPERTIES DEPENDS "PH5DIFF-${resultfile}-clear-objects") endif (HDF5_ENABLE_USING_MEMCHECKER) ENDMACRO (ADD_PH5_TEST file) - # ADD_H5_NO_OUTPUT_TEST - # Purpose to verify only exitcode without output comparison - # Don't use this if possible; this may be removed. - MACRO (ADD_H5_NO_OUTPUT_TEST testname resultcode) - # If using memchecker add tests without using scripts - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5DIFF-${testname}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ./testfiles/${testname}.out ./testfiles/${testname}.out.err - ) - # if there was a previous test - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5DIFF-${testname}-clear-objects PROPERTIES DEPENDS ${last_test}) - endif () - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - - add_test (NAME H5DIFF-${testname} COMMAND $ ${ARGN}) - if (NOT ${resultcode} STREQUAL "0") - set_tests_properties (H5DIFF-${testname} PROPERTIES WILL_FAIL "true") - endif () - - if (HDF5_ENABLE_USING_MEMCHECKER) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5DIFF-${testname} PROPERTIES DEPENDS ${last_test}) - endif () - else (HDF5_ENABLE_USING_MEMCHECKER) - set_tests_properties (H5DIFF-${testname} PROPERTIES DEPENDS H5DIFF-${testname}-clear-objects) - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_NO_OUTPUT_TEST) - ############################################################################## ############################################################################## ### T H E T E S T S ### diff --git a/tools/h5dump/CMakeTests.cmake b/tools/h5dump/CMakeTests.cmake index e376b50..895855c 100644 --- a/tools/h5dump/CMakeTests.cmake +++ b/tools/h5dump/CMakeTests.cmake @@ -381,12 +381,6 @@ set (last_test "H5DUMP-${testname}") else (HDF5_ENABLE_USING_MEMCHECKER) add_test ( - NAME H5DUMP-h5dump-${testname}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove h5dump-${testname}.out h5dump-${testname}.out.err - ) - set_tests_properties (H5DUMP-h5dump-${testname}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - add_test ( NAME H5DUMP-h5dump-${testname} COMMAND "${CMAKE_COMMAND}" -D "TEST_PROGRAM=$" @@ -397,7 +391,6 @@ -D "TEST_REFERENCE=h5dump-${testname}.txt" -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" ) - set_tests_properties (H5DUMP-h5dump-${testname} PROPERTIES DEPENDS "H5DUMP-h5dump-${testname}-clear-objects") endif (HDF5_ENABLE_USING_MEMCHECKER) ENDMACRO (ADD_HELP_TEST) @@ -429,7 +422,7 @@ add_test ( NAME H5DUMP-${resultfile}-clear-objects COMMAND ${CMAKE_COMMAND} - -E remove ${resultfile}.bin ${resultfile}.out ${resultfile}.out.err + -E remove ${resultfile}.bin ) set_tests_properties (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") add_test ( @@ -462,7 +455,7 @@ add_test ( NAME H5DUMP-N-${resultfile}-clear-objects COMMAND ${CMAKE_COMMAND} - -E remove ${resultfile}-N.bin ${resultfile}-N.out ${resultfile}-N.out.err + -E remove ${resultfile}-N.bin ) set_tests_properties (H5DUMP-N-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") add_test ( @@ -495,7 +488,7 @@ add_test ( NAME H5DUMP-${resultfile}-clear-objects COMMAND ${CMAKE_COMMAND} - -E remove ${resultfile}.txt ${resultfile}.out ${resultfile}.out.err + -E remove ${resultfile}.txt ) set_tests_properties (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") add_test ( @@ -535,7 +528,7 @@ add_test ( NAME H5DUMP-${resultfile}-clear-objects COMMAND ${CMAKE_COMMAND} - -E remove ${ddlfile}.txt ${resultfile}.txt ${resultfile}.out ${resultfile}.out.err + -E remove ${ddlfile}.txt ${resultfile}.txt ) set_tests_properties (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") add_test ( @@ -594,12 +587,6 @@ MACRO (ADD_H5_MASK_TEST resultfile resultcode) if (NOT HDF5_ENABLE_USING_MEMCHECKER) add_test ( - NAME H5DUMP-${resultfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ${resultfile}.out ${resultfile}.out.err - ) - set_tests_properties (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - add_test ( NAME H5DUMP-${resultfile} COMMAND "${CMAKE_COMMAND}" -D "TEST_PROGRAM=$" @@ -611,19 +598,12 @@ -D "TEST_MASK_ERROR=true" -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" ) - set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects") endif (NOT HDF5_ENABLE_USING_MEMCHECKER) ENDMACRO (ADD_H5_MASK_TEST file) MACRO (ADD_H5ERR_MASK_TEST resultfile resultcode) if (NOT HDF5_ENABLE_USING_MEMCHECKER) add_test ( - NAME H5DUMP-${resultfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ${resultfile}.out ${resultfile}.out.err - ) - set_tests_properties (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - add_test ( NAME H5DUMP-${resultfile} COMMAND "${CMAKE_COMMAND}" -D "TEST_PROGRAM=$" @@ -636,19 +616,12 @@ -D "TEST_MASK_ERROR=true" -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" ) - set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects") endif (NOT HDF5_ENABLE_USING_MEMCHECKER) ENDMACRO (ADD_H5ERR_MASK_TEST file) MACRO (ADD_H5ERR_MASK_ENV_TEST resultfile resultcode envvar envval) if (NOT HDF5_ENABLE_USING_MEMCHECKER) add_test ( - NAME H5DUMP-${resultfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ${resultfile}.out ${resultfile}.out.err - ) - set_tests_properties (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - add_test ( NAME H5DUMP-${resultfile} COMMAND "${CMAKE_COMMAND}" -D "TEST_PROGRAM=$" @@ -663,7 +636,6 @@ -D "TEST_ENV_VALUE:STRING=${envval}" -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" ) - set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects") endif (NOT HDF5_ENABLE_USING_MEMCHECKER) ENDMACRO (ADD_H5ERR_MASK_ENV_TEST) @@ -673,7 +645,7 @@ add_test ( NAME H5DUMP-IMPORT-${resultfile}-clear-objects COMMAND ${CMAKE_COMMAND} - -E remove ${conffile}.out ${conffile}.out.err ${resultfile}.bin ${resultfile}.h5 + -E remove ${resultfile}.bin ${resultfile}.h5 ) set_tests_properties (H5DUMP-IMPORT-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") add_test ( diff --git a/tools/h5dump/CMakeTestsPBITS.cmake b/tools/h5dump/CMakeTestsPBITS.cmake index 28514fb..681479a 100644 --- a/tools/h5dump/CMakeTestsPBITS.cmake +++ b/tools/h5dump/CMakeTestsPBITS.cmake @@ -121,12 +121,6 @@ endif () else (HDF5_ENABLE_USING_MEMCHECKER) add_test ( - NAME H5DUMP-${resultfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ${resultfile}.out ${resultfile}.out.err - ) - set_tests_properties (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/pbits") - add_test ( NAME H5DUMP-${resultfile} COMMAND "${CMAKE_COMMAND}" -D "TEST_PROGRAM=$" @@ -137,7 +131,6 @@ -D "TEST_REFERENCE=${resultfile}.ddl" -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" ) - set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects") endif (HDF5_ENABLE_USING_MEMCHECKER) ENDMACRO (ADD_H5_PBITS_TEST file) diff --git a/tools/h5dump/CMakeTestsVDS.cmake b/tools/h5dump/CMakeTestsVDS.cmake index 68a62e8..32056db 100644 --- a/tools/h5dump/CMakeTestsVDS.cmake +++ b/tools/h5dump/CMakeTestsVDS.cmake @@ -100,12 +100,6 @@ endif () else (HDF5_ENABLE_USING_MEMCHECKER) add_test ( - NAME H5DUMP-${resultfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ${resultfile}.out ${resultfile}.out.err - ) - set_tests_properties (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/vds") - add_test ( NAME H5DUMP-${resultfile} COMMAND "${CMAKE_COMMAND}" -D "TEST_PROGRAM=$" @@ -116,7 +110,6 @@ -D "TEST_REFERENCE=${resultfile}.ddl" -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" ) - set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects") endif (HDF5_ENABLE_USING_MEMCHECKER) ENDMACRO (ADD_H5_VDS_TEST file) @@ -133,12 +126,6 @@ endif () else (HDF5_ENABLE_USING_MEMCHECKER) add_test ( - NAME H5DUMP-${resultfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ${resultfile}.out ${resultfile}.out.err - ) - set_tests_properties (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/vds") - add_test ( NAME H5DUMP-${resultfile} COMMAND "${CMAKE_COMMAND}" -D "TEST_PROGRAM=$" diff --git a/tools/h5dump/CMakeTestsXML.cmake b/tools/h5dump/CMakeTestsXML.cmake index 6e8dd15..79d3ff8 100644 --- a/tools/h5dump/CMakeTestsXML.cmake +++ b/tools/h5dump/CMakeTestsXML.cmake @@ -169,12 +169,6 @@ endif () else (HDF5_ENABLE_USING_MEMCHECKER) add_test ( - NAME H5DUMP-XML-${resultfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ${resultfile}.out ${resultfile}.out.err - ) - set_tests_properties (H5DUMP-XML-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/xml") - add_test ( NAME H5DUMP-XML-${resultfile} COMMAND "${CMAKE_COMMAND}" -D "TEST_PROGRAM=$" @@ -185,7 +179,6 @@ -D "TEST_REFERENCE=${resultfile}.xml" -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" ) - set_tests_properties (H5DUMP-XML-${resultfile} PROPERTIES DEPENDS "H5DUMP-XML-${resultfile}-clear-objects") endif (HDF5_ENABLE_USING_MEMCHECKER) ENDMACRO (ADD_XML_H5_TEST file) diff --git a/tools/h5format_convert/CMakeTests.cmake b/tools/h5format_convert/CMakeTests.cmake index 37ee824..929230a 100644 --- a/tools/h5format_convert/CMakeTests.cmake +++ b/tools/h5format_convert/CMakeTests.cmake @@ -83,7 +83,7 @@ add_test ( NAME H5FC-${testname}-clear-objects COMMAND ${CMAKE_COMMAND} - -E remove ./testfiles/${testname}.out ./testfiles/${testname}.out.err ./testfiles/outtmp.h5 + -E remove ./testfiles/outtmp.h5 ) if (NOT "${last_test}" STREQUAL "") set_tests_properties (H5FC-${testname}-clear-objects PROPERTIES DEPENDS ${last_test}) @@ -132,7 +132,7 @@ add_test ( NAME H5FC-${testname}-clear-objects COMMAND ${CMAKE_COMMAND} - -E remove ./testfiles/${testname}.out ./testfiles/${testname}.out.err ./testfiles/tmp.h5 + -E remove ./testfiles/tmp.h5 ) if (NOT "${last_test}" STREQUAL "") set_tests_properties (H5FC-${testname}-clear-objects PROPERTIES DEPENDS ${last_test}) @@ -176,7 +176,7 @@ add_test ( NAME H5FC-${testname}-clear-objects COMMAND ${CMAKE_COMMAND} - -E remove ./testfiles/${testname}.out ./testfiles/${testname}.out.err ./testfiles/chktmp.h5 + -E remove ./testfiles/chktmp.h5 ) if (NOT "${last_test}" STREQUAL "") set_tests_properties (H5FC-${testname}-clear-objects PROPERTIES DEPENDS ${last_test}) @@ -214,7 +214,7 @@ add_test ( NAME H5FC-${testname}-clear-objects COMMAND ${CMAKE_COMMAND} - -E remove ./testfiles/${testname}.out ./testfiles/${testname}.out.err ./testfiles/dmptmp.h5 + -E remove ./testfiles/dmptmp.h5 ) if (NOT "${last_test}" STREQUAL "") set_tests_properties (H5FC-${testname}-clear-objects PROPERTIES DEPENDS ${last_test}) diff --git a/tools/h5import/CMakeTests.cmake b/tools/h5import/CMakeTests.cmake index ef029e9..54e7abe 100644 --- a/tools/h5import/CMakeTests.cmake +++ b/tools/h5import/CMakeTests.cmake @@ -88,20 +88,8 @@ set_tests_properties (H5IMPORT-${testname} PROPERTIES DEPENDS H5IMPORT-h5importtest) endif () else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5IMPORT-${testname}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove - ${testfile} - ${testfile}.new - ${testfile}.new.err - ${testfile}.out - ${testfile}.out.err - ) - set_tests_properties (H5IMPORT-${testname}-clear-objects PROPERTIES DEPENDS H5IMPORT-h5importtest) - add_test (NAME H5IMPORT-${testname} COMMAND $ ${importfile} -c ${conffile} -o ${testfile}) - set_tests_properties (H5IMPORT-${testname} PROPERTIES DEPENDS H5IMPORT-${testname}-clear-objects) + set_tests_properties (H5IMPORT-${testname} PROPERTIES DEPENDS H5IMPORT-h5importtest) add_test ( NAME H5IMPORT-${testname}-H5DMP @@ -141,12 +129,6 @@ -E remove d${testfile} d${testfile}.bin - d${testfile}.imp - d${testfile}.imp.err - d${testfile}.dmp - d${testfile}.dmp.err - d${testfile}.dff - d${testfile}.dff.err ) set_tests_properties (H5IMPORT-DUMP-${testname}-clear-objects PROPERTIES DEPENDS H5IMPORT-h5importtest) diff --git a/tools/h5jam/CMakeTests.cmake b/tools/h5jam/CMakeTests.cmake index 6752c9a..96061b0 100644 --- a/tools/h5jam/CMakeTests.cmake +++ b/tools/h5jam/CMakeTests.cmake @@ -49,13 +49,6 @@ endif (NOT "${resultcode}" STREQUAL "0") else (HDF5_ENABLE_USING_MEMCHECKER) add_test ( - NAME H5JAM-${expectfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove - ${expectfile}.out - ${expectfile}.out.err - ) - add_test ( NAME H5JAM-${expectfile} COMMAND "${CMAKE_COMMAND}" -D "TEST_PROGRAM=$" @@ -66,7 +59,6 @@ -D "TEST_REFERENCE=testfiles/${expectfile}.txt" -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" ) - set_tests_properties (H5JAM-${expectfile} PROPERTIES DEPENDS H5JAM-${expectfile}-clear-objects) endif (HDF5_ENABLE_USING_MEMCHECKER) ENDMACRO (TEST_H5JAM_OUTPUT) @@ -83,13 +75,6 @@ endif (NOT "${resultcode}" STREQUAL "0") else (HDF5_ENABLE_USING_MEMCHECKER) add_test ( - NAME H5JAM-UNJAM-${expectfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove - ${expectfile}.out - ${expectfile}.out.err - ) - add_test ( NAME H5JAM-UNJAM-${expectfile} COMMAND "${CMAKE_COMMAND}" -D "TEST_PROGRAM=$" @@ -100,7 +85,6 @@ -D "TEST_REFERENCE=testfiles/${expectfile}.txt" -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" ) - set_tests_properties (H5JAM-UNJAM-${expectfile} PROPERTIES DEPENDS H5JAM-UNJAM-${expectfile}-clear-objects) endif (HDF5_ENABLE_USING_MEMCHECKER) ENDMACRO (TEST_H5UNJAM_OUTPUT) @@ -108,16 +92,6 @@ # If using memchecker add tests without using scripts if (NOT HDF5_ENABLE_USING_MEMCHECKER) add_test ( - NAME H5JAM-${testname}-CHECKFILE-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove - ${actual}.new - ${actual}.new.err - ${actual}.out - ${actual}.out.err - ) - set_tests_properties (H5JAM-${testname}-CHECKFILE-clear-objects PROPERTIES DEPENDS ${testdepends}) - add_test ( NAME H5JAM-${testname}-CHECKFILE-H5DMP COMMAND "${CMAKE_COMMAND}" -D "TEST_PROGRAM=$" @@ -129,7 +103,7 @@ -D "TEST_SKIP_COMPARE=TRUE" -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" ) - set_tests_properties (H5JAM-${testname}-CHECKFILE-H5DMP PROPERTIES DEPENDS H5JAM-${testname}-CHECKFILE-clear-objects) + set_tests_properties (H5JAM-${testname}-CHECKFILE-H5DMP PROPERTIES DEPENDS ${testdepends}) add_test ( NAME H5JAM-${testname}-CHECKFILE-H5DMP_CMP COMMAND "${CMAKE_COMMAND}" @@ -174,11 +148,6 @@ else (NOT "${ufile}" STREQUAL "NONE") if (NOT "${ARGN}" STREQUAL "--delete") add_test ( - NAME H5JAM-${testname}-UNJAM_D-clear-objects - COMMAND ${CMAKE_COMMAND} -E remove ${outfile}.ufile.txt ${outfile}.ufile.txt.err - ) - set_tests_properties (H5JAM-${testname}-UNJAM_D-clear-objects PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-clear-objects) - add_test ( NAME H5JAM-${testname}-UNJAM COMMAND "${CMAKE_COMMAND}" -D "TEST_PROGRAM=$" @@ -189,7 +158,7 @@ -D "TEST_SKIP_COMPARE=TRUE" -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" ) - set_tests_properties (H5JAM-${testname}-UNJAM PROPERTIES DEPENDS H5JAM-${testname}-UNJAM_D-clear-objects) + set_tests_properties (H5JAM-${testname}-UNJAM PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-clear-objects) set (compare_test "${outfile}.ufile.txt") else (NOT "${ARGN}" STREQUAL "--delete") add_test (NAME H5JAM-${testname}-UNJAM COMMAND $ -i ${infile} -o ${outfile}) diff --git a/tools/h5ls/CMakeTests.cmake b/tools/h5ls/CMakeTests.cmake index 4e6a08f..816907c 100644 --- a/tools/h5ls/CMakeTests.cmake +++ b/tools/h5ls/CMakeTests.cmake @@ -119,11 +119,6 @@ set_tests_properties (H5LS-${resultfile} PROPERTIES DEPENDS ${last_test}) endif () else (HDF5_ENABLE_USING_MEMCHECKER) -# add_test ( -# NAME H5LS-${resultfile}-clear-objects -# COMMAND ${CMAKE_COMMAND} -# -E remove ./testfiles/${resultfile}.out ./testfiles/${resultfile}.out.err -# ) add_test ( NAME H5LS-${resultfile} COMMAND "${CMAKE_COMMAND}" @@ -135,7 +130,6 @@ -D "TEST_REFERENCE=${resultfile}.ls" -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" ) - set_tests_properties (H5LS-${resultfile} PROPERTIES DEPENDS "H5LS-${resultfile}-clear-objects") endif (HDF5_ENABLE_USING_MEMCHECKER) ENDMACRO (ADD_H5_TEST file) diff --git a/tools/h5ls/CMakeTestsVDS.cmake b/tools/h5ls/CMakeTestsVDS.cmake index 240eed0..0c825cb 100644 --- a/tools/h5ls/CMakeTestsVDS.cmake +++ b/tools/h5ls/CMakeTestsVDS.cmake @@ -70,11 +70,6 @@ set_tests_properties (H5LS-${resultfile} PROPERTIES DEPENDS ${last_test}) endif () else (HDF5_ENABLE_USING_MEMCHECKER) -# add_test ( -# NAME H5LS-${resultfile}-clear-objects -# COMMAND ${CMAKE_COMMAND} -# -E remove ./testfiles/vds/${resultfile}.out ./testfiles/vds/${resultfile}.out.err -# ) add_test ( NAME H5LS-${resultfile} COMMAND "${CMAKE_COMMAND}" @@ -86,7 +81,6 @@ -D "TEST_REFERENCE=${resultfile}.ls" -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" ) - set_tests_properties (H5LS-${resultfile} PROPERTIES DEPENDS "H5LS_VDS-${resultfile}-clear-objects") endif (HDF5_ENABLE_USING_MEMCHECKER) ENDMACRO (ADD_H5_VDS_TEST file) diff --git a/tools/h5repack/CMakeTests.cmake b/tools/h5repack/CMakeTests.cmake index d0aa6c8..561072d 100644 --- a/tools/h5repack/CMakeTests.cmake +++ b/tools/h5repack/CMakeTests.cmake @@ -146,11 +146,6 @@ endif () set (last_test "H5REPACK-${testname}") else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5REPACK-h5repack-${testname}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove h5repack-${testname}.out h5repack-${testname}.out.err - ) set_tests_properties (H5REPACK-h5repack-${testname}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") add_test ( NAME H5REPACK-h5repack-${testname} @@ -163,7 +158,6 @@ -D "TEST_REFERENCE=h5repack-${testname}.txt" -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" ) - set_tests_properties (H5REPACK-h5repack-${testname} PROPERTIES DEPENDS "H5REPACK-h5repack-${testname}-clear-objects") endif (HDF5_ENABLE_USING_MEMCHECKER) ENDMACRO (ADD_HELP_TEST) @@ -442,10 +436,6 @@ COMMAND ${CMAKE_COMMAND} -E remove testfiles/out-${testname}.${resultfile} - testfiles/${testname}.${resultfile}.out - testfiles/${testname}.${resultfile}.out.err - testfiles/${resultfile}-${testname}.out - testfiles/${resultfile}-${testname}.out.err ) add_test ( NAME H5REPACK_UD-${testname} diff --git a/tools/h5stat/CMakeTests.cmake b/tools/h5stat/CMakeTests.cmake index a371b81..fea358a 100644 --- a/tools/h5stat/CMakeTests.cmake +++ b/tools/h5stat/CMakeTests.cmake @@ -75,11 +75,6 @@ endif (NOT "${last_test}" STREQUAL "") else (HDF5_ENABLE_USING_MEMCHECKER) add_test ( - NAME H5STAT-${resultfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ${resultfile}.out ${resultfile}.out.err - ) - add_test ( NAME H5STAT-${resultfile} COMMAND "${CMAKE_COMMAND}" -D "TEST_PROGRAM=$" @@ -90,7 +85,6 @@ -D "TEST_REFERENCE=${resultfile}.ddl" -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" ) - set_tests_properties (H5STAT-${resultfile} PROPERTIES DEPENDS "H5STAT-${resultfile}-clear-objects") endif (HDF5_ENABLE_USING_MEMCHECKER) ENDMACRO (ADD_H5_TEST file) diff --git a/tools/misc/CMakeTests.cmake b/tools/misc/CMakeTests.cmake index 6822be5..bc2760b 100644 --- a/tools/misc/CMakeTests.cmake +++ b/tools/misc/CMakeTests.cmake @@ -76,8 +76,6 @@ COMMAND ${CMAKE_COMMAND} -E remove ${resultfile}.h5 - ${resultfile}.out - ${resultfile}.out.err ) set_tests_properties (H5MKGRP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") endif (NOT HDF5_ENABLE_USING_MEMCHECKER) @@ -118,8 +116,6 @@ COMMAND ${CMAKE_COMMAND} -E remove ${resultfile}.h5 - ${resultfile}.out - ${resultfile}.out.err ) set_tests_properties (H5MKGRP_CMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") add_test ( -- cgit v0.12 From 031633c4791ce31b94f655148912e987df078025 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Mon, 3 Oct 2016 15:42:31 -0500 Subject: Revert clear objects for testfile removal --- tools/h5import/CMakeTests.cmake | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tools/h5import/CMakeTests.cmake b/tools/h5import/CMakeTests.cmake index 54e7abe..0fdf9dd 100644 --- a/tools/h5import/CMakeTests.cmake +++ b/tools/h5import/CMakeTests.cmake @@ -88,8 +88,16 @@ set_tests_properties (H5IMPORT-${testname} PROPERTIES DEPENDS H5IMPORT-h5importtest) endif () else (HDF5_ENABLE_USING_MEMCHECKER) + add_test ( + NAME H5IMPORT-${testname}-clear-objects + COMMAND ${CMAKE_COMMAND} + -E remove + ${testfile} + ) + set_tests_properties (H5IMPORT-${testname}-clear-objects PROPERTIES DEPENDS H5IMPORT-h5importtest) + add_test (NAME H5IMPORT-${testname} COMMAND $ ${importfile} -c ${conffile} -o ${testfile}) - set_tests_properties (H5IMPORT-${testname} PROPERTIES DEPENDS H5IMPORT-h5importtest) + set_tests_properties (H5IMPORT-${testname} PROPERTIES DEPENDS H5IMPORT-${testname}-clear-objects) add_test ( NAME H5IMPORT-${testname}-H5DMP -- cgit v0.12 From 9fd74f83e656be95ef456d4fa275a598153a6e61 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Mon, 3 Oct 2016 15:45:31 -0500 Subject: Remove hanging property set --- tools/h5repack/CMakeTests.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/h5repack/CMakeTests.cmake b/tools/h5repack/CMakeTests.cmake index 561072d..666f28e 100644 --- a/tools/h5repack/CMakeTests.cmake +++ b/tools/h5repack/CMakeTests.cmake @@ -146,7 +146,6 @@ endif () set (last_test "H5REPACK-${testname}") else (HDF5_ENABLE_USING_MEMCHECKER) - set_tests_properties (H5REPACK-h5repack-${testname}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") add_test ( NAME H5REPACK-h5repack-${testname} COMMAND "${CMAKE_COMMAND}" -- cgit v0.12 From ec991ed4b813adb3300bc82ed64c550eb505e3d0 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Mon, 3 Oct 2016 17:07:21 -0500 Subject: Fix missing defines for standalone perf --- tools/perform/sio_standalone.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tools/perform/sio_standalone.h b/tools/perform/sio_standalone.h index 258eafb..63dc7b0 100644 --- a/tools/perform/sio_standalone.h +++ b/tools/perform/sio_standalone.h @@ -56,6 +56,14 @@ # define H5_INC_ENUM(TYPE,VAR) (VAR)=((TYPE)((VAR)+1)) #endif +#define H5_FLT_ABS_EQUAL(X,Y) (HDfabsf((X)-(Y)) < FLT_EPSILON) +#define H5_DBL_ABS_EQUAL(X,Y) (HDfabs ((X)-(Y)) < DBL_EPSILON) +#define H5_LDBL_ABS_EQUAL(X,Y) (HDfabsl((X)-(Y)) < LDBL_EPSILON) + +#define H5_FLT_REL_EQUAL(X,Y,M) (HDfabsf(((Y)-(X)) / (X)) < (M)) +#define H5_DBL_REL_EQUAL(X,Y,M) (HDfabs (((Y)-(X)) / (X)) < (M)) +#define H5_LDBL_REL_EQUAL(X,Y,M) (HDfabsl(((Y)-(X)) / (X)) < (M)) + /* * Redefine all the POSIX functions. We should never see a POSIX * function (or any other non-HDF5 function) in the source! @@ -183,20 +191,32 @@ H5_DLL int HDfprintf (FILE *stream, const char *fmt, ...); #define HDstat(S,B) _stati64(S,B) typedef struct _stati64 h5_stat_t; typedef __int64 h5_stat_size_t; + #define HDoff_t __int64 #elif H5_SIZEOF_OFF_T!=8 && H5_SIZEOF_OFF64_T==8 && defined(H5_HAVE_STAT64) #define HDfstat(F,B) fstat64(F,B) #define HDlstat(S,B) lstat64(S,B) #define HDstat(S,B) stat64(S,B) typedef struct stat64 h5_stat_t; typedef off64_t h5_stat_size_t; + #define HDoff_t off64_t #else #define HDfstat(F,B) fstat(F,B) #define HDlstat(S,B) lstat(S,B) #define HDstat(S,B) stat(S,B) typedef struct stat h5_stat_t; typedef off_t h5_stat_size_t; + #define HDoff_t off_t #endif +#ifndef H5_HAVE_WIN32_API +/* These definitions differ in Windows and are defined in + * H5win32defs for that platform. + */ +typedef struct stat h5_stat_t; +typedef off_t h5_stat_size_t; +#define HDoff_t off_t +#endif /* H5_HAVE_WIN32_API */ + #define HDftell(F) ftell(F) #define HDftruncate(F,L) ftruncate(F,L) #define HDfwrite(M,Z,N,F) fwrite(M,Z,N,F) @@ -402,6 +422,11 @@ H5_DLL void HDsrand(unsigned int seed); #define HDstrtol(S,R,N) strtol(S,R,N) H5_DLL int64_t HDstrtoll (const char *s, const char **rest, int base); #define HDstrtoul(S,R,N) strtoul(S,R,N) +#ifdef H5_HAVE_WIN32_API +#define HDstrtoull(S,R,N) _strtoui64(S,R,N) +#else +#define HDstrtoull(S,R,N) strtoull(S,R,N) +#endif #define HDstrxfrm(X,Y,Z) strxfrm(X,Y,Z) #define HDsysconf(N) sysconf(N) #define HDsystem(S) system(S) -- cgit v0.12 From 8c49b6e05a7d40218b8129b29bd74bbd2b39758d Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Tue, 4 Oct 2016 09:36:01 -0500 Subject: HDFFV-9991: Remove uneeded file --- CMakeInstallation.cmake | 15 -------- MANIFEST | 1 - config/cmake/FindHDF5.cmake.in | 86 ------------------------------------------ 3 files changed, 102 deletions(-) delete mode 100644 config/cmake/FindHDF5.cmake.in diff --git a/CMakeInstallation.cmake b/CMakeInstallation.cmake index 8dcaf85..6817d5c 100644 --- a/CMakeInstallation.cmake +++ b/CMakeInstallation.cmake @@ -75,21 +75,6 @@ configure_package_config_file ( ) #----------------------------------------------------------------------------- -# Configure the FindHDF5.cmake file for the install directory -#----------------------------------------------------------------------------- -if (NOT HDF5_EXTERNALLY_CONFIGURED) - configure_file ( - ${HDF_RESOURCES_DIR}/FindHDF5.cmake.in - ${HDF5_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindHDF5${HDF_PACKAGE_EXT}.cmake @ONLY - ) - install ( - FILES ${HDF5_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindHDF5${HDF_PACKAGE_EXT}.cmake - DESTINATION ${HDF5_INSTALL_CMAKE_DIR} - COMPONENT configinstall - ) -endif (NOT HDF5_EXTERNALLY_CONFIGURED) - -#----------------------------------------------------------------------------- # Configure the hdf5-config.cmake file for the install directory #----------------------------------------------------------------------------- set (INCLUDE_INSTALL_DIR ${HDF5_INSTALL_INCLUDE_DIR}) diff --git a/MANIFEST b/MANIFEST index fb454c5..98ecdb5 100644 --- a/MANIFEST +++ b/MANIFEST @@ -2840,7 +2840,6 @@ ./config/cmake/ConfigureChecks.cmake ./config/cmake/CPack.Info.plist.in ./config/cmake/CTestCustom.cmake -./config/cmake/FindHDF5.cmake.in ./config/cmake/FindHDFJAVA.cmake.in ./config/cmake/FindJNI.cmake ./config/cmake/H5cxx_config.h.in diff --git a/config/cmake/FindHDF5.cmake.in b/config/cmake/FindHDF5.cmake.in deleted file mode 100644 index fbc49f1..0000000 --- a/config/cmake/FindHDF5.cmake.in +++ /dev/null @@ -1,86 +0,0 @@ -# -# To be used by projects that make use of Cmakeified hdf5-@HDF5_PACKAGE_VERSION@ -# - -# -# Find the HDF5 includes and get all installed hdf5 library settings from -# HDF5-config.cmake file : Requires a CMake compatible hdf5-1.8.5 or later -# for this feature to work. The following vars are set if hdf5 is found. -# -# HDF5_FOUND - True if found, otherwise all other vars are undefined -# HDF5_INCLUDE_DIR - The include dir for main *.h files -# HDF5_FORTRAN_INCLUDE_DIR - The include dir for fortran modules and headers -# HDF5_VERSION_STRING - full version (e.g. @HDF5_PACKAGE_VERSION@) -# HDF5_VERSION_MAJOR - major part of version (e.g. @HDF5_PACKAGE_VERSION_MAJOR@) -# HDF5_VERSION_MINOR - minor part (e.g. @HDF5_PACKAGE_VERSION_MINOR@) -# -# The following boolean vars will be defined -# HDF5_ENABLE_PARALLEL - 1 if HDF5 parallel supported -# HDF5_BUILD_FORTRAN - 1 if HDF5 was compiled with fortran on -# HDF5_BUILD_CPP_LIB - 1 if HDF5 was compiled with cpp on -# HDF5_BUILD_TOOLS - 1 if HDF5 was compiled with tools on -# HDF5_BUILD_HL_LIB - 1 if HDF5 was compiled with high level on -# HDF5_BUILD_HL_CPP_LIB - 1 if HDF5 was compiled with high level and cpp on -# -# Target names that are valid (depending on enabled options) -# will be the following -# -# hdf5 : HDF5 C library -# hdf5_tools : the tools library -# hdf5_f90cstub : used by Fortran to C interface -# hdf5_fortran : Fortran HDF5 library -# hdf5_cpp : HDF5 cpp interface library -# hdf5_hl : High Level library -# hdf5_hl_f90cstub : used by Fortran to C interface to High Level library -# hdf5_hl_fortran : Fortran High Level library -# hdf5_hl_cpp : High Level cpp interface library -# -# To aid in finding HDF5 as part of a subproject set -# HDF5_ROOT_DIR_HINT to the location where @HDF5_PACKAGE@@HDF_PACKAGE_EXT@-config.cmake lies - -include (SelectLibraryConfigurations) -include (FindPackageHandleStandardArgs) - -# The HINTS option should only be used for values computed from the system. -set (_HDF5_HINTS - $ENV{HOME}/.local - $ENV{HDF5_ROOT} - $ENV{HDF5_ROOT_DIR_HINT} -) -# Hard-coded guesses should still go in PATHS. This ensures that the user -# environment can always override hard guesses. -set (_HDF5_PATHS - $ENV{HOME}/.local - $ENV{HDF5_ROOT} - $ENV{HDF5_ROOT_DIR_HINT} - /usr/lib/@HDF5_PACKAGE@ - /usr/share/@HDF5_PACKAGE@ - /usr/local/@HDF5_PACKAGE@ - /usr/local/@HDF5_PACKAGE@/share -) - -FIND_PATH (HDF5_ROOT_DIR "@HDF5_PACKAGE@@HDF_PACKAGE_EXT@-config.cmake" - HINTS ${_HDF5_HINTS} - PATHS ${_HDF5_PATHS} - PATH_SUFFIXES - cmake/@HDF5_PACKAGE@ - lib/cmake/@HDF5_PACKAGE@ - share/cmake/@HDF5_PACKAGE@ -) - -FIND_PATH (HDF5_INCLUDE_DIRS "H5public.h" - HINTS ${_HDF5_HINTS} - PATHS ${_HDF5_PATHS} - PATH_SUFFIXES - include - Include -) - -# For backwards compatibility we set HDF5_INCLUDE_DIR to the value of -# HDF5_INCLUDE_DIRS -set ( HDF5_INCLUDE_DIR "${HDF5_INCLUDE_DIRS}" ) - -if (HDF5_INCLUDE_DIR) - set (HDF5_FOUND "YES") - include (${HDF5_ROOT_DIR}/@HDF5_PACKAGE@@HDF_PACKAGE_EXT@-config.cmake) -endif (HDF5_INCLUDE_DIR) -- cgit v0.12 From 0d0c711e88a4032237554fc681a44255e8f78bd8 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Tue, 4 Oct 2016 14:53:21 -0500 Subject: Update copyright to latest from kitware --- config/cmake/FindJNI.cmake | 18 ++++-------------- config/cmake/UseJava.cmake | 20 ++++---------------- config/cmake/UseJavaClassFilelist.cmake | 16 +++------------- config/cmake/UseJavaSymlinks.cmake | 16 +++------------- 4 files changed, 14 insertions(+), 56 deletions(-) diff --git a/config/cmake/FindJNI.cmake b/config/cmake/FindJNI.cmake index 9105f3d..468b1304 100644 --- a/config/cmake/FindJNI.cmake +++ b/config/cmake/FindJNI.cmake @@ -1,3 +1,6 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + #.rst: # FindJNI # ------- @@ -22,19 +25,6 @@ # JAVA_INCLUDE_PATH2 = the include path to jni_md.h # JAVA_AWT_INCLUDE_PATH = the include path to jawt.h -#============================================================================= -# Copyright 2001-2009 Kitware, Inc. -# -# Distributed under the OSI-approved BSD License (the "License"); -# see accompanying file Copyright.txt for details. -# -# This software is distributed WITHOUT ANY WARRANTY; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the License for more information. -#============================================================================= -# (To distribute this file outside of CMake, substitute the full -# License text for the above reference.) - # Expand {libarch} occurences to java_libarch subdirectory(-ies) and set ${_var} macro(java_append_library_directories _var) # Determine java arch-specific library subdir @@ -53,7 +43,7 @@ macro(java_append_library_directories _var) set(_java_libarch "alpha") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm") # Subdir is "arm" for both big-endian (arm) and little-endian (armel). - set(_java_libarch "arm") + set(_java_libarch "arm" "aarch32") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^mips") # mips* machines are bi-endian mostly so processor does not tell # endianess of the underlying system. diff --git a/config/cmake/UseJava.cmake b/config/cmake/UseJava.cmake index 4f8e4c8..3ec2ddb 100644 --- a/config/cmake/UseJava.cmake +++ b/config/cmake/UseJava.cmake @@ -1,3 +1,6 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + #.rst: # UseJava # ------- @@ -400,22 +403,7 @@ # Sets the directory where the header files will be generated. Same behavior as option # '-d' of javah tool. If not specified, ${CMAKE_CURRENT_BINARY_DIR} is used as output directory. -#============================================================================= -# Copyright 2013 OpenGamma Ltd. -# Copyright 2010-2011 Andreas schneider -# Copyright 2010-2013 Kitware, Inc. -# -# Distributed under the OSI-approved BSD License (the "License"); -# see accompanying file Copyright.txt for details. -# -# This software is distributed WITHOUT ANY WARRANTY; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the License for more information. -#============================================================================= -# (To distribute this file outside of CMake, substitute the full -# License text for the above reference.) - -include(CMakeParseArguments) +include(${CMAKE_CURRENT_LIST_DIR}/CMakeParseArguments.cmake) function (__java_copy_file src dest comment) add_custom_command( diff --git a/config/cmake/UseJavaClassFilelist.cmake b/config/cmake/UseJavaClassFilelist.cmake index e8e6f01..c2f9afa 100644 --- a/config/cmake/UseJavaClassFilelist.cmake +++ b/config/cmake/UseJavaClassFilelist.cmake @@ -1,3 +1,6 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + #.rst: # UseJavaClassFilelist # -------------------- @@ -10,19 +13,6 @@ # a jar file. This avoids including cmake files which get created in # the binary directory. -#============================================================================= -# Copyright 2010-2011 Andreas schneider -# -# Distributed under the OSI-approved BSD License (the "License"); -# see accompanying file Copyright.txt for details. -# -# This software is distributed WITHOUT ANY WARRANTY; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the License for more information. -#============================================================================= -# (To distribute this file outside of CMake, substitute the full -# License text for the above reference.) - if (CMAKE_JAVA_CLASS_OUTPUT_PATH) if (EXISTS "${CMAKE_JAVA_CLASS_OUTPUT_PATH}") diff --git a/config/cmake/UseJavaSymlinks.cmake b/config/cmake/UseJavaSymlinks.cmake index 90ffdd5..358b9ef 100644 --- a/config/cmake/UseJavaSymlinks.cmake +++ b/config/cmake/UseJavaSymlinks.cmake @@ -1,3 +1,6 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + #.rst: # UseJavaSymlinks # --------------- @@ -8,19 +11,6 @@ # # Helper script for UseJava.cmake -#============================================================================= -# Copyright 2010-2011 Andreas schneider -# -# Distributed under the OSI-approved BSD License (the "License"); -# see accompanying file Copyright.txt for details. -# -# This software is distributed WITHOUT ANY WARRANTY; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the License for more information. -#============================================================================= -# (To distribute this file outside of CMake, substitute the full -# License text for the above reference.) - if (UNIX AND _JAVA_TARGET_OUTPUT_LINK) if (_JAVA_TARGET_OUTPUT_NAME) find_program(LN_EXECUTABLE -- cgit v0.12 From c6bc6dbbfb8147cba40f8b4d1fcc9795c2ac1abc Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Tue, 4 Oct 2016 16:46:13 -0500 Subject: HDFFV-9961: Add GIT option to ext lib macros --- CMakeFilters.cmake | 2 ++ config/cmake_ext_mod/HDFLibMacros.cmake | 17 +++++++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/CMakeFilters.cmake b/CMakeFilters.cmake index bb0d238..b7aa77d 100644 --- a/CMakeFilters.cmake +++ b/CMakeFilters.cmake @@ -8,7 +8,9 @@ if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MAT option (SZIP_USE_EXTERNAL "Use External Library Building for SZIP" 1) if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT") set (ZLIB_URL ${ZLIB_GIT_URL} CACHE STRING "Path to zlib git repository") + set (ZLIB_BRANCH ${ZLIB_GIT_BRANCH}) set (SZIP_URL ${SZIP_GIT_URL} CACHE STRING "Path to szip git repository") + set (SZIP_BRANCH ${SZIP_GIT_BRANCH}) elseif (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN") set (ZLIB_URL ${ZLIB_SVN_URL} CACHE STRING "Path to zlib Subversion repository") set (SZIP_URL ${SZIP_SVN_URL} CACHE STRING "Path to szip Subversion repository") diff --git a/config/cmake_ext_mod/HDFLibMacros.cmake b/config/cmake_ext_mod/HDFLibMacros.cmake index 3f91405..2145a3d 100644 --- a/config/cmake_ext_mod/HDFLibMacros.cmake +++ b/config/cmake_ext_mod/HDFLibMacros.cmake @@ -22,6 +22,7 @@ macro (EXTERNAL_JPEG_LIBRARY compress_type jpeg_pic) elseif (${compress_type} MATCHES "GIT") EXTERNALPROJECT_ADD (JPEG GIT_REPOSITORY ${JPEG_URL} + GIT_TAG ${JPEG_BRANCH} INSTALL_COMMAND "" CMAKE_ARGS -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS} @@ -82,9 +83,9 @@ macro (PACKAGE_JPEG_LIBRARY compress_type) COMMENT "Copying ${JPEG_INCLUDE_DIR_GEN}/jconfig.h to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/" ) set (EXTERNAL_HEADER_LIST ${EXTERNAL_HEADER_LIST} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/jconfig.h) - if (${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ") + if (${compress_type} MATCHES "GIT" OR ${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ") add_dependencies (JPEG-GenHeader-Copy JPEG) - endif (${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ") + endif (${compress_type} MATCHES "GIT" OR ${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ") endmacro (PACKAGE_JPEG_LIBRARY) #------------------------------------------------------------------------------- @@ -109,7 +110,7 @@ macro (EXTERNAL_SZIP_LIBRARY compress_type encoding) elseif (${compress_type} MATCHES "GIT") EXTERNALPROJECT_ADD (SZIP GIT_REPOSITORY ${SZIP_URL} - # [SVN_REVISION rev] + GIT_TAG ${SZIP_BRANCH} INSTALL_COMMAND "" CMAKE_ARGS -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS} @@ -172,9 +173,9 @@ macro (PACKAGE_SZIP_LIBRARY compress_type) COMMENT "Copying ${SZIP_INCLUDE_DIR_GEN}/SZconfig.h to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/" ) set (EXTERNAL_HEADER_LIST ${EXTERNAL_HEADER_LIST} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/SZconfig.h) - if (${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ") + if (${compress_type} MATCHES "GIT" OR ${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ") add_dependencies (SZIP-GenHeader-Copy SZIP) - endif (${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ") + endif (${compress_type} MATCHES "GIT" OR ${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ") endmacro (PACKAGE_SZIP_LIBRARY) #------------------------------------------------------------------------------- @@ -198,7 +199,7 @@ macro (EXTERNAL_ZLIB_LIBRARY compress_type) elseif (${compress_type} MATCHES "GIT") EXTERNALPROJECT_ADD (ZLIB GIT_REPOSITORY ${ZLIB_URL} - # [SVN_REVISION rev] + GIT_TAG ${ZLIB_BRANCH} INSTALL_COMMAND "" CMAKE_ARGS -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS} @@ -264,7 +265,7 @@ macro (PACKAGE_ZLIB_LIBRARY compress_type) COMMENT "Copying ${ZLIB_INCLUDE_DIR_GEN}/zconf.h to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/" ) set (EXTERNAL_HEADER_LIST ${EXTERNAL_HEADER_LIST} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/zconf.h) - if (${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ") + if (${compress_type} MATCHES "GIT" OR ${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ") add_dependencies (ZLIB-GenHeader-Copy ZLIB) - endif (${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ") + endif (${compress_type} MATCHES "GIT" OR ${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ") endmacro (PACKAGE_ZLIB_LIBRARY) -- cgit v0.12 From d93cb9ca25b5a5e987c6b9023f6868d47dd93a9a Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Tue, 4 Oct 2016 17:50:54 -0400 Subject: Added C++ wrappers (get/setCoreWriteTracking()) for new H5Pset/get_core_write_tracking() API calls. --- c++/src/H5FaccProp.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ c++/src/H5FaccProp.h | 6 ++++++ c++/test/tfile.cpp | 2 +- 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/c++/src/H5FaccProp.cpp b/c++/src/H5FaccProp.cpp index 972f915..653b6cc 100644 --- a/c++/src/H5FaccProp.cpp +++ b/c++/src/H5FaccProp.cpp @@ -241,6 +241,47 @@ void FileAccPropList::getCore (size_t& increment, hbool_t& backing_store) const } //-------------------------------------------------------------------------- +// Function: FileAccPropList::setCoreWriteTracking +///\brief Modifies core driver write tracking properties on this file +/// access property list. +///\param is_enabled - IN: Whether the write tracking feature should +/// be enabled or not. +///\param page_size - IN: Sets the page size used with the write tracking +/// feature. When set to a value greater than 1, this allows +/// page-sized aggregation of tracked writes. +///\exception H5::PropListIException +///\par Description +/// For more details on the use of the write tracking feature, refer to +/// http://www.hdfgroup.org/HDF5/doc/RM/RM_H5P.html#Property-SetCoreWriteTracking +// Programmer: Dana Robinson - Fall 2016 +//-------------------------------------------------------------------------- +void FileAccPropList::setCoreWriteTracking (hbool_t is_enabled, size_t page_size) const +{ + herr_t ret_value = H5Pset_core_write_tracking (id, is_enabled, page_size); + if (ret_value < 0) + { + throw PropListIException ("FileAccPropList::setCoreWriteTracking", "H5Pset_core_write_tracking failed"); + } +} + +//-------------------------------------------------------------------------- +// Function: FileAccPropList::getCoreWriteTracking +///\brief Queries core file driver write tracking properties. +///\param is_enabled - OUT: Whether or not the write tracking feature is +/// enabled. +///\param page_size - OUT: The page size used when aggregating tracked writes. +///\exception H5::PropListIException +// Programmer: Dana Robinson - Fall 2016 +//-------------------------------------------------------------------------- +void FileAccPropList::getCoreWriteTracking (hbool_t& is_enabled, size_t& page_size) const +{ + herr_t ret_value = H5Pget_core_write_tracking(id, &is_enabled, &page_size); + if( ret_value < 0 ) + { + throw PropListIException("FileAccPropList::getCoreWriteTracking", "H5Pget_core_write_tracking failed"); + } +} +//-------------------------------------------------------------------------- // Function: FileAccPropList::setFamily ///\brief Sets this file access property list to use the family driver. ///\param memb_size - IN: Size in bytes of each file member diff --git a/c++/src/H5FaccProp.h b/c++/src/H5FaccProp.h index 831488c..1020c46 100644 --- a/c++/src/H5FaccProp.h +++ b/c++/src/H5FaccProp.h @@ -58,6 +58,12 @@ class H5_DLLCPP FileAccPropList : public PropList { // Queries H5FD_CORE driver properties. void getCore (size_t& increment, hbool_t& backing_store) const; + // Sets write tracking for the core driver. + void setCoreWriteTracking (hbool_t is_enabled, size_t page_size) const; + + // Queries the core driver write tracking property. + void getCoreWriteTracking (hbool_t& is_enabled, size_t& page_size) const; + // Sets this file access properties list to the family driver. void setFamily( hsize_t memb_size, const FileAccPropList& memb_plist ) const; diff --git a/c++/test/tfile.cpp b/c++/test/tfile.cpp index 0eabfb9..f322ff7 100644 --- a/c++/test/tfile.cpp +++ b/c++/test/tfile.cpp @@ -565,7 +565,7 @@ static void test_file_attribute() dattr.write(PredType::NATIVE_INT, dattr_data); // Test flushing out the data from the attribute object - dattr.flush(H5F_SCOPE_GLOBAL); + dattr.flush(H5F_SCOPE_GLOBAL); // Get and verify the number of all objects in the file // Current: 1 file, 2 file attr, 1 ds, and 1 ds attr. -- cgit v0.12 From aee8233f162529abac7302649e7146c587605392 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Wed, 5 Oct 2016 15:49:26 -0500 Subject: Correct how include is used when located inside project --- config/cmake/UseJava.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/cmake/UseJava.cmake b/config/cmake/UseJava.cmake index 3ec2ddb..379dc7e 100644 --- a/config/cmake/UseJava.cmake +++ b/config/cmake/UseJava.cmake @@ -403,7 +403,7 @@ # Sets the directory where the header files will be generated. Same behavior as option # '-d' of javah tool. If not specified, ${CMAKE_CURRENT_BINARY_DIR} is used as output directory. -include(${CMAKE_CURRENT_LIST_DIR}/CMakeParseArguments.cmake) +include(CMakeParseArguments) function (__java_copy_file src dest comment) add_custom_command( -- cgit v0.12 From 7d6bea96abcc33e69b3735abfebeee4dec9c4093 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Wed, 5 Oct 2016 16:17:39 -0500 Subject: Fix cyclic depends due to typo --- hl/tools/gif2h5/CMakeTests.cmake | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/hl/tools/gif2h5/CMakeTests.cmake b/hl/tools/gif2h5/CMakeTests.cmake index 1dda0f5..8a52f50 100644 --- a/hl/tools/gif2h5/CMakeTests.cmake +++ b/hl/tools/gif2h5/CMakeTests.cmake @@ -26,17 +26,16 @@ add_test ( image.gif image24.gif ) -set_tests_properties (HL_TOOLS-clear-objects PROPERTIES DEPENDS HL_TOOLS-clear-objects) add_test (NAME HL_TOOLS_gif2h5 COMMAND $ testfiles/image1.gif image1.h5) -set_tests_properties (HL_TOOLS-clear-objects PROPERTIES DEPENDS HL_TOOLS-clear-objects) +set_tests_properties (HL_TOOLS_gif2h5 PROPERTIES DEPENDS HL_TOOLS-clear-objects) add_test (NAME HL_TOOLS_h52gif COMMAND $ testfiles/h52giftst.h5 image1.gif -i image) -set_tests_properties (HL_TOOLS-clear-objects PROPERTIES DEPENDS HL_TOOLS-clear-objects) +set_tests_properties (HL_TOOLS_h52gif PROPERTIES DEPENDS HL_TOOLS-clear-objects) add_test (NAME HL_TOOLS_h52gif_none COMMAND $ testfiles/h52giftst.h5 image.gif -i nosuch_image) set_tests_properties (HL_TOOLS_h52gif_none PROPERTIES WILL_FAIL "true") -set_tests_properties (HL_TOOLS-clear-objects PROPERTIES DEPENDS HL_TOOLS-clear-objects) +set_tests_properties (HL_TOOLS_h52gif_none PROPERTIES DEPENDS HL_TOOLS-clear-objects) #add_test (NAME HL_TOOLS_h52gifpal COMMAND $ testfiles/h52giftst.h5 image.gif -i palette) #set_tests_properties (HL_TOOLS_h52gifpal PROPERTIES WILL_FAIL "true") -- cgit v0.12 From d817b63020310b6f275a569529075551dd2b756e Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Thu, 6 Oct 2016 13:52:55 -0500 Subject: Fix copyright to point to cmake --- config/cmake/FindJNI.cmake | 3 +-- config/cmake/UseJava.cmake | 3 +-- config/cmake/UseJavaClassFilelist.cmake | 3 +-- config/cmake/UseJavaSymlinks.cmake | 3 +-- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/config/cmake/FindJNI.cmake b/config/cmake/FindJNI.cmake index 468b1304..9d755fc 100644 --- a/config/cmake/FindJNI.cmake +++ b/config/cmake/FindJNI.cmake @@ -1,5 +1,4 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. +# Distributed under the OSI-approved BSD 3-Clause License. See https://cmake.org/licensing for details. #.rst: # FindJNI diff --git a/config/cmake/UseJava.cmake b/config/cmake/UseJava.cmake index 379dc7e..6391c63 100644 --- a/config/cmake/UseJava.cmake +++ b/config/cmake/UseJava.cmake @@ -1,5 +1,4 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. +# Distributed under the OSI-approved BSD 3-Clause License. See https://cmake.org/licensing for details. #.rst: # UseJava diff --git a/config/cmake/UseJavaClassFilelist.cmake b/config/cmake/UseJavaClassFilelist.cmake index c2f9afa..4420550 100644 --- a/config/cmake/UseJavaClassFilelist.cmake +++ b/config/cmake/UseJavaClassFilelist.cmake @@ -1,5 +1,4 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. +# Distributed under the OSI-approved BSD 3-Clause License. See https://cmake.org/licensing for details. #.rst: # UseJavaClassFilelist diff --git a/config/cmake/UseJavaSymlinks.cmake b/config/cmake/UseJavaSymlinks.cmake index 358b9ef..cd73348 100644 --- a/config/cmake/UseJavaSymlinks.cmake +++ b/config/cmake/UseJavaSymlinks.cmake @@ -1,5 +1,4 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. +# Distributed under the OSI-approved BSD 3-Clause License. See https://cmake.org/licensing for details. #.rst: # UseJavaSymlinks -- cgit v0.12 From c7fc321a6d4448c59cb621c46968a5245b080fa1 Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Fri, 7 Oct 2016 09:58:40 -0500 Subject: Removed unused H5T_NATIVE_INTEGER_# variables due to NAG fixes. HDFFV-9973 Fortran library fails to compile and fails tests with NAG compiler --- fortran/src/H5f90global.F90 | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/fortran/src/H5f90global.F90 b/fortran/src/H5f90global.F90 index aef3e4d..b84f6c2 100644 --- a/fortran/src/H5f90global.F90 +++ b/fortran/src/H5f90global.F90 @@ -85,11 +85,7 @@ MODULE H5GLOBAL ! integer data types are added INTEGER, PARAMETER :: INTEGER_TYPES_LEN = 27 - INTEGER(HID_T) :: H5T_NATIVE_INTEGER_1, & - H5T_NATIVE_INTEGER_2, & - H5T_NATIVE_INTEGER_4, & - H5T_NATIVE_INTEGER_8, & - H5T_NATIVE_REAL_C_FLOAT, & + INTEGER(HID_T) :: H5T_NATIVE_REAL_C_FLOAT, & H5T_NATIVE_REAL_C_DOUBLE, & H5T_NATIVE_REAL_C_LONG_DOUBLE, & H5T_NATIVE_INTEGER, & -- cgit v0.12 From 4cb4a781794ff9f3b014297ce5b269e7825c19b4 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Fri, 7 Oct 2016 10:22:02 -0500 Subject: Merge from master cmake_conf project --- config/cmake_ext_mod/FindMPI.cmake | 17 +---- config/cmake_ext_mod/runTest.cmake | 142 ++++++++++++++++++++----------------- 2 files changed, 80 insertions(+), 79 deletions(-) diff --git a/config/cmake_ext_mod/FindMPI.cmake b/config/cmake_ext_mod/FindMPI.cmake index 80d8511..1a02f82 100644 --- a/config/cmake_ext_mod/FindMPI.cmake +++ b/config/cmake_ext_mod/FindMPI.cmake @@ -1,3 +1,5 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See https://cmake.org/licensing for details. + #.rst: # FindMPI # ------- @@ -88,21 +90,6 @@ # # In new projects, please use the ``MPI__XXX`` equivalents. -#============================================================================= -# Copyright 2001-2011 Kitware, Inc. -# Copyright 2010-2011 Todd Gamblin tgamblin@llnl.gov -# Copyright 2001-2009 Dave Partyka -# -# Distributed under the OSI-approved BSD License (the "License"); -# see accompanying file Copyright.txt for details. -# -# This software is distributed WITHOUT ANY WARRANTY; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the License for more information. -#============================================================================= -# (To distribute this file outside of CMake, substitute the full -# License text for the above reference.) - # include this to handle the QUIETLY and REQUIRED arguments include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake) include(GetPrerequisites) diff --git a/config/cmake_ext_mod/runTest.cmake b/config/cmake_ext_mod/runTest.cmake index 8b47693..48e9d03 100644 --- a/config/cmake_ext_mod/runTest.cmake +++ b/config/cmake_ext_mod/runTest.cmake @@ -5,22 +5,22 @@ cmake_policy(SET CMP0007 NEW) # arguments checking if (NOT TEST_PROGRAM) message (FATAL_ERROR "Require TEST_PROGRAM to be defined") -endif (NOT TEST_PROGRAM) +endif () #if (NOT TEST_ARGS) # message (STATUS "Require TEST_ARGS to be defined") -#endif (NOT TEST_ARGS) +#endif () if (NOT TEST_FOLDER) message ( FATAL_ERROR "Require TEST_FOLDER to be defined") -endif (NOT TEST_FOLDER) +endif () if (NOT TEST_OUTPUT) message (FATAL_ERROR "Require TEST_OUTPUT to be defined") -endif (NOT TEST_OUTPUT) +endif () if (NOT TEST_EXPECT) message (STATUS "Require TEST_EXPECT to be defined") -endif (NOT TEST_EXPECT) +endif () #if (NOT TEST_FILTER) # message (STATUS "Require TEST_FILTER to be defined") -#endif (NOT TEST_FILTER) +#endif () if (NOT TEST_SKIP_COMPARE AND NOT TEST_REFERENCE) message (FATAL_ERROR "Require TEST_REFERENCE to be defined") endif (NOT TEST_SKIP_COMPARE AND NOT TEST_REFERENCE) @@ -36,13 +36,13 @@ endif (EXISTS ${TEST_FOLDER}/${TEST_OUTPUT}.err) # if there is not an error reference file add the error output to the stdout file if (NOT TEST_ERRREF) set (ERROR_APPEND 1) -endif (NOT TEST_ERRREF) +endif () message (STATUS "COMMAND: ${TEST_PROGRAM} ${TEST_ARGS}") if (TEST_ENV_VAR) set (ENV{${TEST_ENV_VAR}} "${TEST_ENV_VALUE}") -endif (TEST_ENV_VAR) +endif () if (NOT TEST_INPUT) # run the test program, capture the stdout/stderr and the result var @@ -55,7 +55,7 @@ if (NOT TEST_INPUT) OUTPUT_VARIABLE TEST_OUT ERROR_VARIABLE TEST_ERROR ) -else (NOT TEST_INPUT) +else () # run the test program with stdin, capture the stdout/stderr and the result var execute_process ( COMMAND ${TEST_PROGRAM} ${TEST_ARGS} @@ -67,7 +67,7 @@ else (NOT TEST_INPUT) OUTPUT_VARIABLE TEST_OUT ERROR_VARIABLE TEST_ERROR ) -endif (NOT TEST_INPUT) +endif () message (STATUS "COMMAND Result: ${TEST_RESULT}") @@ -75,33 +75,33 @@ message (STATUS "COMMAND Result: ${TEST_RESULT}") if (ERROR_APPEND AND EXISTS ${TEST_FOLDER}/${TEST_OUTPUT}.err) file (READ ${TEST_FOLDER}/${TEST_OUTPUT}.err TEST_STREAM) file (APPEND ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}") -endif (ERROR_APPEND AND EXISTS ${TEST_FOLDER}/${TEST_OUTPUT}.err) +endif () # append the test result status with a predefined text if (TEST_APPEND) file (APPEND ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_APPEND} ${TEST_RESULT}\n") -endif (TEST_APPEND) +endif () # if the return value is !=${TEST_EXPECT} bail out if (NOT ${TEST_RESULT} STREQUAL ${TEST_EXPECT}) message ( FATAL_ERROR "Failed: Test program ${TEST_PROGRAM} exited != ${TEST_EXPECT}.\n${TEST_ERROR}") -endif (NOT ${TEST_RESULT} STREQUAL ${TEST_EXPECT}) +endif () message (STATUS "COMMAND Error: ${TEST_ERROR}") # if the output file needs Storage text removed if (TEST_MASK) file (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM) - string (REGEX REPLACE "Storage:[^\n]+\n" "Storage:
\n" TEST_STREAM "${TEST_STREAM}") + string (REGEX REPLACE "Storage:[^\n]+\n" "Storage:
\n" TEST_STREAM "${TEST_STREAM}") file (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}") -endif (TEST_MASK) +endif () # if the output file needs Modified text removed if (TEST_MASK_MOD) file (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM) string (REGEX REPLACE "Modified:[^\n]+\n" "Modified: XXXX-XX-XX XX:XX:XX XXX\n" TEST_STREAM "${TEST_STREAM}") file (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}") -endif (TEST_MASK_MOD) +endif () # if the output file or the .err file needs to mask out error stack info if (TEST_MASK_ERROR) @@ -132,14 +132,14 @@ if (TEST_FILTER) file (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM) string (REGEX REPLACE "${TEST_FILTER}" "" TEST_STREAM "${TEST_STREAM}") file (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}") -endif (TEST_FILTER) +endif () # compare output files to references unless this must be skipped if (NOT TEST_SKIP_COMPARE) if (WIN32 AND NOT MINGW) file (READ ${TEST_FOLDER}/${TEST_REFERENCE} TEST_STREAM) file (WRITE ${TEST_FOLDER}/${TEST_REFERENCE} "${TEST_STREAM}") - endif (WIN32 AND NOT MINGW) + endif () # now compare the output with the reference execute_process ( @@ -147,27 +147,34 @@ if (NOT TEST_SKIP_COMPARE) RESULT_VARIABLE TEST_RESULT ) if (NOT ${TEST_RESULT} STREQUAL 0) - set (TEST_RESULT 0) - file (STRINGS ${TEST_FOLDER}/${TEST_OUTPUT} test_act) - list (LENGTH test_act len_act) - file (STRINGS ${TEST_FOLDER}/${TEST_REFERENCE} test_ref) - list (LENGTH test_ref len_ref) - if (NOT ${len_act} STREQUAL "0") - math (EXPR _FP_LEN "${len_ref} - 1") - foreach (line RANGE 0 ${_FP_LEN}) - list (GET test_act ${line} str_act) - list (GET test_ref ${line} str_ref) - if (NOT "${str_act}" STREQUAL "${str_ref}") - if (NOT "${str_act}" STREQUAL "") - set (TEST_RESULT 1) - message ("line = ${line}\n***ACTUAL: ${str_act}\n****REFER: ${str_ref}\n") - endif (NOT "${str_act}" STREQUAL "") - endif (NOT "${str_act}" STREQUAL "${str_ref}") - endforeach (line RANGE 0 ${_FP_LEN}) - endif (NOT ${len_act} STREQUAL "0") - if (NOT ${len_act} STREQUAL ${len_ref}) - set (TEST_RESULT 1) - endif (NOT ${len_act} STREQUAL ${len_ref}) + set (TEST_RESULT 0) + file (STRINGS ${TEST_FOLDER}/${TEST_OUTPUT} test_act) + list (LENGTH test_act len_act) + file (STRINGS ${TEST_FOLDER}/${TEST_REFERENCE} test_ref) + list (LENGTH test_ref len_ref) + if (NOT ${len_act} STREQUAL "0" AND NOT ${len_ref} STREQUAL "0") + math (EXPR _FP_LEN "${len_ref} - 1") + foreach (line RANGE 0 ${_FP_LEN}) + list (GET test_act ${line} str_act) + list (GET test_ref ${line} str_ref) + if (NOT "${str_act}" STREQUAL "${str_ref}") + if (NOT "${str_act}" STREQUAL "") + set (TEST_RESULT 1) + message ("line = ${line}\n***ACTUAL: ${str_act}\n****REFER: ${str_ref}\n") + endif () + endif () + endforeach () + else () + if (${len_act} STREQUAL "0") + message (STATUS "COMPARE Failed: ${TEST_FOLDER}/${TEST_OUTPUT} is empty") + endif () + if (${len_ref} STREQUAL "0") + message (STATUS "COMPARE Failed: ${TEST_FOLDER}/${TEST_REFERENCE} is empty") + endif () + endif () + if (NOT ${len_act} STREQUAL ${len_ref}) + set (TEST_RESULT 1) + endif () endif (NOT ${TEST_RESULT} STREQUAL 0) message (STATUS "COMPARE Result: ${TEST_RESULT}") @@ -175,14 +182,14 @@ if (NOT TEST_SKIP_COMPARE) # again, if return value is !=0 scream and shout if (NOT ${TEST_RESULT} STREQUAL 0) message (FATAL_ERROR "Failed: The output of ${TEST_OUTPUT} did not match ${TEST_REFERENCE}") - endif (NOT ${TEST_RESULT} STREQUAL 0) + endif () # now compare the .err file with the error reference, if supplied if (TEST_ERRREF) if (WIN32 AND NOT MINGW) file (READ ${TEST_FOLDER}/${TEST_ERRREF} TEST_STREAM) file (WRITE ${TEST_FOLDER}/${TEST_ERRREF} "${TEST_STREAM}") - endif (WIN32 AND NOT MINGW) + endif () # now compare the error output with the error reference execute_process ( @@ -190,36 +197,43 @@ if (NOT TEST_SKIP_COMPARE) RESULT_VARIABLE TEST_RESULT ) if (NOT ${TEST_RESULT} STREQUAL 0) - set (TEST_RESULT 0) - file (STRINGS ${TEST_FOLDER}/${TEST_OUTPUT}.err test_act) - list (LENGTH test_act len_act) - file (STRINGS ${TEST_FOLDER}/${TEST_ERRREF} test_ref) - list (LENGTH test_ref len_ref) - math (EXPR _FP_LEN "${len_ref} - 1") - if (NOT ${len_act} STREQUAL "0") + set (TEST_RESULT 0) + file (STRINGS ${TEST_FOLDER}/${TEST_OUTPUT}.err test_act) + list (LENGTH test_act len_act) + file (STRINGS ${TEST_FOLDER}/${TEST_ERRREF} test_ref) + list (LENGTH test_ref len_ref) math (EXPR _FP_LEN "${len_ref} - 1") - foreach (line RANGE 0 ${_FP_LEN}) - list (GET test_act ${line} str_act) - list (GET test_ref ${line} str_ref) - if (NOT "${str_act}" STREQUAL "${str_ref}") - if (NOT "${str_act}" STREQUAL "") - set (TEST_RESULT 1) - message ("line = ${line}\n***ACTUAL: ${str_act}\n****REFER: ${str_ref}\n") - endif (NOT "${str_act}" STREQUAL "") - endif (NOT "${str_act}" STREQUAL "${str_ref}") - endforeach (line RANGE 0 ${_FP_LEN}) - endif (NOT ${len_act} STREQUAL "0") - if (NOT ${len_act} STREQUAL ${len_ref}) - set (TEST_RESULT 1) - endif (NOT ${len_act} STREQUAL ${len_ref}) - endif (NOT ${TEST_RESULT} STREQUAL 0) + if (NOT ${len_act} STREQUAL "0" AND NOT ${len_ref} STREQUAL "0") + math (EXPR _FP_LEN "${len_ref} - 1") + foreach (line RANGE 0 ${_FP_LEN}) + list (GET test_act ${line} str_act) + list (GET test_ref ${line} str_ref) + if (NOT "${str_act}" STREQUAL "${str_ref}") + if (NOT "${str_act}" STREQUAL "") + set (TEST_RESULT 1) + message ("line = ${line}\n***ACTUAL: ${str_act}\n****REFER: ${str_ref}\n") + endif () + endif () + endforeach (line RANGE 0 ${_FP_LEN}) + else () + if (${len_act} STREQUAL "0") + message (STATUS "COMPARE Failed: ${TEST_FOLDER}/${TEST_OUTPUT}.err is empty") + endif () + if (${len_ref} STREQUAL "0") + message (STATUS "COMPARE Failed: ${TEST_FOLDER}/${TEST_ERRREF} is empty") + endif () + endif() + if (NOT ${len_act} STREQUAL ${len_ref}) + set (TEST_RESULT 1) + endif () + endif () message (STATUS "COMPARE Result: ${TEST_RESULT}") # again, if return value is !=0 scream and shout if (NOT ${TEST_RESULT} STREQUAL 0) message (FATAL_ERROR "Failed: The error output of ${TEST_OUTPUT}.err did not match ${TEST_ERRREF}") - endif (NOT ${TEST_RESULT} STREQUAL 0) + endif () endif (TEST_ERRREF) endif (NOT TEST_SKIP_COMPARE) -- cgit v0.12 From 517bccdbfb8875b960182995d6993bfc156379e8 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Fri, 7 Oct 2016 12:32:48 -0500 Subject: Add STGZ to mac cpack list --- CMakeInstallation.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeInstallation.cmake b/CMakeInstallation.cmake index 6817d5c..045f875 100644 --- a/CMakeInstallation.cmake +++ b/CMakeInstallation.cmake @@ -368,6 +368,7 @@ if (NOT HDF5_EXTERNALLY_CONFIGURED AND NOT HDF5_NO_PACKAGES) set(CPACK_WIX_PATCH_FILE "${HDF_RESOURCES_DIR}/patch.xml") endif (BUILD_SHARED_LIBS) elseif (APPLE) + list (APPEND CPACK_GENERATOR "STGZ") list (APPEND CPACK_GENERATOR "DragNDrop") set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") -- cgit v0.12 From de07b2d22435741fa7dc68faa80df3c0207c89fa Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Mon, 10 Oct 2016 10:25:09 -0500 Subject: Fix:HDFFV-9987 With HDF5-1.10 you cannot specify default dataspace for Fortran (H5S_ALL_F) Resolution: Made H5S_ALL_F INTEGER(HID_T) to match C. --- fortran/src/H5_f.c | 45 +++++++++++++++++++++++++------------------- fortran/src/H5_ff.F90 | 5 ++++- fortran/src/H5f90global.F90 | 46 +++++++++++++++++++++++++-------------------- fortran/src/H5f90proto.h | 14 ++++++++------ fortran/test/tH5T.F90 | 2 +- fortran/test/tH5T_F03.F90 | 2 +- 6 files changed, 66 insertions(+), 48 deletions(-) diff --git a/fortran/src/H5_f.c b/fortran/src/H5_f.c index f9fe927..860f9cb 100644 --- a/fortran/src/H5_f.c +++ b/fortran/src/H5_f.c @@ -334,6 +334,7 @@ h5close_types_c( hid_t_f * types, int_f *lentypes, * h5p_flags_int - H5P interface flags of type integer * h5r_flags - H5R interface flags * h5s_flags - H5S interface flags + * h5s_hid_flags - H5S interface flags of type hid_t * h5s_hsize_flags - H5S interface flags of type hsize_t * h5t_flags - H5T interface flags * h5z_flags - H5Z interface flags @@ -356,6 +357,8 @@ h5close_types_c( hid_t_f * types, int_f *lentypes, * MSB, July 9, 2009 * Added type h5d_flags of type size_t * MSB, Feb. 28, 2014 + * Added type h5s_hid_flags of type hid_t + * MSB, Oct. 10, 2016 * SOURCE */ int_f @@ -363,8 +366,9 @@ h5init_flags_c( int_f *h5d_flags, size_t_f *h5d_size_flags, int_f *h5e_flags, hid_t_f *h5e_hid_flags, int_f *h5f_flags, int_f *h5fd_flags, hid_t_f *h5fd_hid_flags, int_f *h5g_flags, int_f *h5i_flags, int_f *h5l_flags, int_f *h5o_flags, - hid_t_f *h5p_flags, int_f *h5p_flags_int, int_f *h5r_flags, int_f *h5s_flags, - hsize_t_f *h5s_hsize_flags, int_f *h5t_flags, int_f *h5z_flags, int_f *h5_generic_flags, + hid_t_f *h5p_flags, int_f *h5p_flags_int, int_f *h5r_flags, + int_f *h5s_flags, hid_t_f *h5s_hid_flags, hsize_t_f *h5s_hsize_flags, + int_f *h5t_flags, int_f *h5z_flags, int_f *h5_generic_flags, haddr_t_f *h5_haddr_generic_flags) /******/ { @@ -593,29 +597,32 @@ h5init_flags_c( int_f *h5d_flags, size_t_f *h5d_size_flags, /* * H5S flags */ + + h5s_hid_flags[0] = (hid_t_f)H5S_ALL; + + h5s_hsize_flags[0] = (hsize_t_f)H5S_UNLIMITED; + h5s_flags[0] = (int_f)H5S_SCALAR; h5s_flags[1] = (int_f)H5S_SIMPLE; h5s_flags[2] = (int_f)H5S_NULL; h5s_flags[3] = (int_f)H5S_SELECT_SET; h5s_flags[4] = (int_f)H5S_SELECT_OR; - h5s_flags[5] = (int_f)H5S_ALL; - - h5s_flags[6] = (int_f)H5S_SELECT_NOOP; - h5s_flags[7] = (int_f)H5S_SELECT_AND; - h5s_flags[8] = (int_f)H5S_SELECT_XOR; - h5s_flags[9] = (int_f)H5S_SELECT_NOTB; - h5s_flags[10] = (int_f)H5S_SELECT_NOTA; - h5s_flags[11] = (int_f)H5S_SELECT_APPEND; - h5s_flags[12] = (int_f)H5S_SELECT_PREPEND; - h5s_flags[13] = (int_f)H5S_SELECT_INVALID; - - h5s_flags[14] = (int_f)H5S_SEL_ERROR; - h5s_flags[15] = (int_f)H5S_SEL_NONE; - h5s_flags[16] = (int_f)H5S_SEL_POINTS; - h5s_flags[17] = (int_f)H5S_SEL_HYPERSLABS; - h5s_flags[18] = (int_f)H5S_SEL_ALL; - h5s_hsize_flags[0] = (hsize_t_f)H5S_UNLIMITED; + h5s_flags[5] = (int_f)H5S_SELECT_NOOP; + h5s_flags[6] = (int_f)H5S_SELECT_AND; + h5s_flags[7] = (int_f)H5S_SELECT_XOR; + h5s_flags[8] = (int_f)H5S_SELECT_NOTB; + h5s_flags[9] = (int_f)H5S_SELECT_NOTA; + + h5s_flags[10] = (int_f)H5S_SELECT_APPEND; + h5s_flags[11] = (int_f)H5S_SELECT_PREPEND; + h5s_flags[12] = (int_f)H5S_SELECT_INVALID; + h5s_flags[13] = (int_f)H5S_SEL_ERROR; + h5s_flags[14] = (int_f)H5S_SEL_NONE; + + h5s_flags[15] = (int_f)H5S_SEL_POINTS; + h5s_flags[16] = (int_f)H5S_SEL_HYPERSLABS; + h5s_flags[17] = (int_f)H5S_SEL_ALL; /* * H5T flags diff --git a/fortran/src/H5_ff.F90 b/fortran/src/H5_ff.F90 index 228e148..f2036ee 100644 --- a/fortran/src/H5_ff.F90 +++ b/fortran/src/H5_ff.F90 @@ -102,6 +102,7 @@ CONTAINS i_H5P_flags_int, & i_H5R_flags, & i_H5S_flags, & + i_H5S_hid_flags, & i_H5S_hsize_flags, & i_H5T_flags, & i_H5Z_flags, & @@ -114,7 +115,7 @@ CONTAINS H5F_FLAGS_LEN, H5G_FLAGS_LEN, H5FD_FLAGS_LEN, & H5FD_HID_FLAGS_LEN, H5I_FLAGS_LEN, H5L_FLAGS_LEN, & H5O_FLAGS_LEN, H5P_FLAGS_LEN, H5P_FLAGS_INT_LEN, & - H5R_FLAGS_LEN, H5S_FLAGS_LEN, H5S_HSIZE_FLAGS_LEN, & + H5R_FLAGS_LEN, H5S_FLAGS_LEN, H5S_HID_FLAGS_LEN, H5S_HSIZE_FLAGS_LEN, & H5T_FLAGS_LEN, H5Z_FLAGS_LEN, H5generic_FLAGS_LEN, H5generic_haddr_FLAGS_LEN IMPLICIT NONE INTEGER i_H5D_flags(H5D_FLAGS_LEN) @@ -132,6 +133,7 @@ CONTAINS INTEGER i_H5P_flags_int(H5P_FLAGS_INT_LEN) INTEGER i_H5R_flags(H5R_FLAGS_LEN) INTEGER i_H5S_flags(H5S_FLAGS_LEN) + INTEGER(HID_T) i_H5S_hid_flags(H5S_HID_FLAGS_LEN) INTEGER(HSIZE_T) i_H5S_hsize_flags(H5S_HSIZE_FLAGS_LEN) INTEGER i_H5T_flags(H5T_FLAGS_LEN) INTEGER i_H5Z_flags(H5Z_FLAGS_LEN) @@ -163,6 +165,7 @@ CONTAINS H5P_flags_int, & H5R_flags, & H5S_flags, & + H5S_hid_flags, & H5S_hsize_flags, & H5T_flags, & H5Z_flags, & diff --git a/fortran/src/H5f90global.F90 b/fortran/src/H5f90global.F90 index b84f6c2..a85ee50 100644 --- a/fortran/src/H5f90global.F90 +++ b/fortran/src/H5f90global.F90 @@ -747,25 +747,29 @@ MODULE H5GLOBAL ! ! H5S flags declaration ! - INTEGER, PARAMETER :: H5S_FLAGS_LEN = 19 + INTEGER, PARAMETER :: H5S_FLAGS_LEN = 18 INTEGER :: H5S_flags(H5S_FLAGS_LEN) INTEGER, PARAMETER :: H5S_HSIZE_FLAGS_LEN = 1 INTEGER(HSIZE_T) H5S_hsize_flags(H5S_HSIZE_FLAGS_LEN) + INTEGER, PARAMETER :: H5S_HID_FLAGS_LEN = 1 + INTEGER(HSIZE_T) H5S_hid_flags(H5S_HID_FLAGS_LEN) !DEC$if defined(BUILD_HDF5_DLL) !DEC$ATTRIBUTES DLLEXPORT :: /H5S_FLAGS/ + !DEC$ATTRIBUTES DLLEXPORT :: /H5S_HID_FLAGS/ !DEC$ATTRIBUTES DLLEXPORT :: /H5S_HSIZE_FLAGS/ !DEC$endif COMMON /H5S_FLAGS/ H5S_flags + COMMON /H5S_HID_FLAGS/ H5S_hid_flags COMMON /H5S_HSIZE_FLAGS/ H5S_hsize_flags INTEGER(HSIZE_T) :: H5S_UNLIMITED_F + INTEGER(HID_T) :: H5S_ALL_F + INTEGER :: H5S_SCALAR_F INTEGER :: H5S_SIMPLE_F INTEGER :: H5S_NULL_F - INTEGER :: H5S_ALL_F - INTEGER :: H5S_SELECT_NOOP_F INTEGER :: H5S_SELECT_SET_F INTEGER :: H5S_SELECT_OR_F @@ -783,29 +787,31 @@ MODULE H5GLOBAL INTEGER :: H5S_SEL_HYPERSLABS_F INTEGER :: H5S_SEL_ALL_F + EQUIVALENCE(H5S_hid_flags(1), H5S_ALL_F) + EQUIVALENCE(H5S_hsize_flags(1), H5S_UNLIMITED_F) + EQUIVALENCE(H5S_flags(1), H5S_SCALAR_F) EQUIVALENCE(H5S_flags(2), H5S_SIMPLE_F) EQUIVALENCE(H5S_flags(3), H5S_NULL_F) EQUIVALENCE(H5S_flags(4), H5S_SELECT_SET_F) EQUIVALENCE(H5S_flags(5), H5S_SELECT_OR_F) - EQUIVALENCE(H5S_flags(6), H5S_ALL_F) - - EQUIVALENCE(H5S_flags(7), H5S_SELECT_NOOP_F) - EQUIVALENCE(H5S_flags(8), H5S_SELECT_AND_F) - EQUIVALENCE(H5S_flags(9), H5S_SELECT_XOR_F) - EQUIVALENCE(H5S_flags(10), H5S_SELECT_NOTB_F) - EQUIVALENCE(H5S_flags(11), H5S_SELECT_NOTA_F) - EQUIVALENCE(H5S_flags(12), H5S_SELECT_APPEND_F) - EQUIVALENCE(H5S_flags(13), H5S_SELECT_PREPEND_F) - EQUIVALENCE(H5S_flags(14), H5S_SELECT_INVALID_F) - - - EQUIVALENCE(H5S_flags(15), H5S_SEL_ERROR_F) - EQUIVALENCE(H5S_flags(16), H5S_SEL_NONE_F) - EQUIVALENCE(H5S_flags(17), H5S_SEL_POINTS_F) - EQUIVALENCE(H5S_flags(18), H5S_SEL_HYPERSLABS_F) - EQUIVALENCE(H5S_flags(19), H5S_SEL_ALL_F) + + EQUIVALENCE(H5S_flags(6), H5S_SELECT_NOOP_F) + EQUIVALENCE(H5S_flags(7), H5S_SELECT_AND_F) + EQUIVALENCE(H5S_flags(8), H5S_SELECT_XOR_F) + EQUIVALENCE(H5S_flags(9), H5S_SELECT_NOTB_F) + EQUIVALENCE(H5S_flags(10), H5S_SELECT_NOTA_F) + + EQUIVALENCE(H5S_flags(11), H5S_SELECT_APPEND_F) + EQUIVALENCE(H5S_flags(12), H5S_SELECT_PREPEND_F) + EQUIVALENCE(H5S_flags(13), H5S_SELECT_INVALID_F) + EQUIVALENCE(H5S_flags(14), H5S_SEL_ERROR_F) + EQUIVALENCE(H5S_flags(15), H5S_SEL_NONE_F) + + EQUIVALENCE(H5S_flags(16), H5S_SEL_POINTS_F) + EQUIVALENCE(H5S_flags(17), H5S_SEL_HYPERSLABS_F) + EQUIVALENCE(H5S_flags(18), H5S_SEL_ALL_F) ! ! H5T flags declaration diff --git a/fortran/src/H5f90proto.h b/fortran/src/H5f90proto.h index f8b4564..67f28db 100644 --- a/fortran/src/H5f90proto.h +++ b/fortran/src/H5f90proto.h @@ -525,12 +525,14 @@ H5_FCDLL int_f h5open_c(void); H5_FCDLL int_f h5close_c(void); H5_FCDLL int_f h5init_types_c(hid_t_f *types, hid_t_f *floatingtypes, hid_t_f *integertypes); H5_FCDLL int_f h5close_types_c(hid_t_f *types, int_f *lentypes, hid_t_f *floatingtypes, int_f *floatinglen, hid_t_f *integertypes, int_f *integerlen); -H5_FCDLL int_f h5init_flags_c(int_f *h5d_flags, size_t_f *h5d_size_flags, int_f *h5e_flags, hid_t_f *h5e_hid_flags, int_f *h5f_flags, - int_f *h5fd_flags, hid_t_f *h5fd_hid_flags, - int_f *h5g_flags, int_f *h5i_flags, int_f *h5l_flags, int_f *h5o_flags, - hid_t_f *h5p_flags, int_f *h5p_flags_int, int_f *h5r_flags, int_f *h5s_flags, - hsize_t_f *h5s_hsize_flags, int_f *h5t_flags, int_f *h5z_flags, int_f *h5_generic_flags, - haddr_t_f *h5_haddr_generic_flags); +H5_FCDLL int_f h5init_flags_c( int_f *h5d_flags, size_t_f *h5d_size_flags, + int_f *h5e_flags, hid_t_f *h5e_hid_flags, int_f *h5f_flags, + int_f *h5fd_flags, hid_t_f *h5fd_hid_flags, + int_f *h5g_flags, int_f *h5i_flags, int_f *h5l_flags, int_f *h5o_flags, + hid_t_f *h5p_flags, int_f *h5p_flags_int, int_f *h5r_flags, + int_f *h5s_flags, hid_t_f *h5s_hid_flags, hsize_t_f *h5s_hsize_flags, + int_f *h5t_flags, int_f *h5z_flags, int_f *h5_generic_flags, + haddr_t_f *h5_haddr_generic_flags); H5_FCDLL int_f h5init1_flags_c(int_f *h5lib_flags); H5_FCDLL int_f h5get_libversion_c(int_f *majnum, int_f *minnum, int_f *relnum); H5_FCDLL int_f h5check_version_c(int_f *majnum, int_f *minnum, int_f *relnum); diff --git a/fortran/test/tH5T.F90 b/fortran/test/tH5T.F90 index efbceea..1a3a382 100644 --- a/fortran/test/tH5T.F90 +++ b/fortran/test/tH5T.F90 @@ -490,7 +490,7 @@ CONTAINS ! ! Read part of the dataset ! - CALL h5dread_f(dset_id, dt1_id, char_member_out, data_dims, error) + CALL h5dread_f(dset_id, dt1_id, char_member_out, data_dims, error, H5S_ALL_F, H5S_ALL_F, H5P_DEFAULT_F) CALL check("h5dread_f", error, total_error) do i = 1, dimsize if (char_member_out(i) .ne. char_member(i)) then diff --git a/fortran/test/tH5T_F03.F90 b/fortran/test/tH5T_F03.F90 index c8be606..c596d31 100644 --- a/fortran/test/tH5T_F03.F90 +++ b/fortran/test/tH5T_F03.F90 @@ -249,7 +249,7 @@ SUBROUTINE test_array_compound_atomic(total_error) ! Read dataset from disk f_ptr = C_LOC(rdata(1,1)) - CALL H5Dread_f(dataset, tid1, f_ptr, error) + CALL H5Dread_f(dataset, tid1, f_ptr, error, H5S_ALL_F, H5S_ALL_F, H5P_DEFAULT_F) CALL check("H5Dread_f", error, total_error) ! Compare data read in -- cgit v0.12 From 052ca6a74199005efe7f324f2a3ac508b18cdc27 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Mon, 10 Oct 2016 12:32:06 -0500 Subject: Correct name and usage of cmake variable --- fortran/src/CMakeLists.txt | 4 ++-- fortran/test/CMakeLists.txt | 4 ++-- hl/fortran/src/CMakeLists.txt | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt index d4ca791..c3af6ea 100644 --- a/fortran/src/CMakeLists.txt +++ b/fortran/src/CMakeLists.txt @@ -67,13 +67,13 @@ set_target_properties (H5_buildiface PROPERTIES if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED) file (MAKE_DIRECTORY "${HDF5_F90_BINARY_DIR}/shared") if (WIN32) - set (MODSH_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/shared/\${BUILD_TYPE}) + set (MODSH_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/shared/${CMAKE_BUILD_TYPE}) else (WIN32) set (MODSH_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/shared) endif (WIN32) endif (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED) if (WIN32) - set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static/\${BUILD_TYPE}) + set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static/$CMAKE_BUILD_TYPE}) else (WIN32) set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static) endif (WIN32) diff --git a/fortran/test/CMakeLists.txt b/fortran/test/CMakeLists.txt index 219f937..5b11a0a 100644 --- a/fortran/test/CMakeLists.txt +++ b/fortran/test/CMakeLists.txt @@ -35,13 +35,13 @@ set_target_properties (H5_test_buildiface PROPERTIES if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED) file (MAKE_DIRECTORY "${HDF5_F90_BINARY_DIR}/shared") if (WIN32) - set (MODSH_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/shared/\${BUILD_TYPE}) + set (MODSH_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/shared/${CMAKE_BUILD_TYPE}) else (WIN32) set (MODSH_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/shared) endif (WIN32) endif (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED) if (WIN32) - set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static/\${BUILD_TYPE}) + set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static/${CMAKE_BUILD_TYPE}) else (WIN32) set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static) endif (WIN32) diff --git a/hl/fortran/src/CMakeLists.txt b/hl/fortran/src/CMakeLists.txt index 774aa7c..0b6327a 100644 --- a/hl/fortran/src/CMakeLists.txt +++ b/hl/fortran/src/CMakeLists.txt @@ -39,13 +39,13 @@ set_target_properties (H5HL_buildiface PROPERTIES if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED) file (MAKE_DIRECTORY "${HDF5_HL_F90_SRC_BINARY_DIR}/shared") if (WIN32) - set (MODSH_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/shared/\${BUILD_TYPE}) + set (MODSH_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/shared/${CMAKE_BUILD_TYPE}) else (WIN32) set (MODSH_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/shared) endif (WIN32) endif (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED) if (WIN32) - set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static/\${BUILD_TYPE}) + set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static/${CMAKE_BUILD_TYPE}) else (WIN32) set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static) endif (WIN32) -- cgit v0.12 From 3c0afffb9d959dc2deab593600e013d959856a7f Mon Sep 17 00:00:00 2001 From: Binh-Minh Ribler Date: Tue, 11 Oct 2016 00:14:25 -0500 Subject: Purpose: Fix bug HDFFR-9920 cont. Description: Added new test file titerate.cpp. --- c++/test/CMakeLists.txt | 1 + c++/test/CMakeTests.cmake | 2 ++ 2 files changed, 3 insertions(+) diff --git a/c++/test/CMakeLists.txt b/c++/test/CMakeLists.txt index 9d98d11..75ea500 100644 --- a/c++/test/CMakeLists.txt +++ b/c++/test/CMakeLists.txt @@ -20,6 +20,7 @@ set (CPP_TEST_SOURCES ${HDF5_CPP_TEST_SOURCE_DIR}/tfile.cpp ${HDF5_CPP_TEST_SOURCE_DIR}/tfilter.cpp ${HDF5_CPP_TEST_SOURCE_DIR}/th5s.cpp + ${HDF5_CPP_TEST_SOURCE_DIR}/titerate.cpp ${HDF5_CPP_TEST_SOURCE_DIR}/tlinks.cpp ${HDF5_CPP_TEST_SOURCE_DIR}/tobject.cpp ${HDF5_CPP_TEST_SOURCE_DIR}/trefer.cpp diff --git a/c++/test/CMakeTests.cmake b/c++/test/CMakeTests.cmake index 91c36b0..9bcc706 100644 --- a/c++/test/CMakeTests.cmake +++ b/c++/test/CMakeTests.cmake @@ -17,6 +17,7 @@ add_test ( tattr_multi.h5 tattr_scalar.h5 tfattrs.h5 + titerate.h5 ) add_test (NAME CPP_testhdf5 COMMAND $) @@ -50,6 +51,7 @@ if (HDF5_TEST_VFD) tattr_multi.h5 tattr_scalar.h5 tfattrs.h5 + titerate.h5 ) add_test ( NAME CPP_VFD-${vfdname}-cpp_testhdf5 -- cgit v0.12 From c38f4af65bf9f8e3811eeb1fcf2ff2f44457bf3d Mon Sep 17 00:00:00 2001 From: Binh-Minh Ribler Date: Tue, 11 Oct 2016 09:42:00 -0500 Subject: Description: Removed commented out lines. Platform tested Jam (only comments) --- c++/src/H5Classes.h | 1 - c++/src/H5Cpp.h | 1 - 2 files changed, 2 deletions(-) diff --git a/c++/src/H5Classes.h b/c++/src/H5Classes.h index de7cf4a..acc0b98 100644 --- a/c++/src/H5Classes.h +++ b/c++/src/H5Classes.h @@ -39,7 +39,6 @@ namespace H5 { class FloatType; class StrType; class CompType; - //class RefType; class AbstractDs; class DataSet; class Group; diff --git a/c++/src/H5Cpp.h b/c++/src/H5Cpp.h index 56b2f7f..800eb90 100644 --- a/c++/src/H5Cpp.h +++ b/c++/src/H5Cpp.h @@ -31,7 +31,6 @@ #include "H5Object.h" #include "H5AbstractDs.h" #include "H5Attribute.h" -//#include "H5CommonFG.h" #include "H5DataType.h" #include "H5AtomType.h" #include "H5PredType.h" -- cgit v0.12 From fdb1202f5072bc4fe77a5b46d4976ab4e620571c Mon Sep 17 00:00:00 2001 From: Binh-Minh Ribler Date: Wed, 12 Oct 2016 08:06:59 -0500 Subject: Description: Added test file titerate.cpp. Platform tested: Verified with bin/chkmanifest --- MANIFEST | 1 + 1 file changed, 1 insertion(+) diff --git a/MANIFEST b/MANIFEST index 60f9bb6..4737346 100644 --- a/MANIFEST +++ b/MANIFEST @@ -415,6 +415,7 @@ ./c++/test/tfilter.cpp ./c++/test/th5s.cpp ./c++/test/th5s.h5 +./c++/test/titerate.cpp ./c++/test/tlinks.cpp ./c++/test/tobject.cpp ./c++/test/ttypes.cpp -- cgit v0.12 From 78e597427c6ffc32ed7cf515234c4cf18d05004f Mon Sep 17 00:00:00 2001 From: Binh-Minh Ribler Date: Wed, 12 Oct 2016 14:21:57 -0500 Subject: Description: Fixed typo that caused daily test failed when --enable-deprecated-symbols is used. Also, removed a commented-out function. Platforms tested: Linux/32 2.6 (jam) Linux/64 (platypus) with --enable-deprecated-symbols --- c++/src/H5Location.cpp | 6 +++--- c++/src/H5Location.h | 3 --- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/c++/src/H5Location.cpp b/c++/src/H5Location.cpp index 334389e..6b5c63a 100644 --- a/c++/src/H5Location.cpp +++ b/c++/src/H5Location.cpp @@ -1885,6 +1885,9 @@ H5G_obj_t H5Location::getObjTypeByIdx(hsize_t idx, H5std_string& type_name) cons return (obj_type); } +#endif // DOXYGEN_SHOULD_SKIP_THIS +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + //-------------------------------------------------------------------------- // Function: H5Location::throwException ///\brief Invokes subclass' throwException @@ -1898,9 +1901,6 @@ void H5Location::throwException(const H5std_string& func_name, const H5std_strin throwException(func_name, msg); } -#endif // DOXYGEN_SHOULD_SKIP_THIS -#endif /* H5_NO_DEPRECATED_SYMBOLS */ - //-------------------------------------------------------------------------- // Function: f_DataType_setId - friend // Purpose: This function is friend to class H5::DataType so that it diff --git a/c++/src/H5Location.h b/c++/src/H5Location.h index 9ab67d3..bd8075c 100644 --- a/c++/src/H5Location.h +++ b/c++/src/H5Location.h @@ -208,9 +208,6 @@ class H5_DLLCPP H5Location : public IdComponent { // end From CommonFG - ///\brief Returns an identifier. - //virtual hid_t getId() const; - /// For subclasses, H5File and Group, to throw appropriate exception. virtual void throwException(const H5std_string& func_name, const H5std_string& msg) const; -- cgit v0.12 From 3ee36553b9aedb4e4d9cb31339e9c8a9f5ef3a92 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Fri, 14 Oct 2016 11:22:22 -0500 Subject: Add support for namespace and add tools to binaries config --- CMakeInstallation.cmake | 4 +++- CMakeLists.txt | 2 ++ c++/src/CMakeLists.txt | 1 + config/cmake/hdf5-config.cmake.in | 4 ++-- fortran/src/CMakeLists.txt | 1 + hl/c++/src/CMakeLists.txt | 5 +++-- hl/fortran/src/CMakeLists.txt | 1 + hl/src/CMakeLists.txt | 1 + hl/tools/gif2h5/CMakeLists.txt | 2 ++ java/src/jni/CMakeLists.txt | 1 + release_docs/RELEASE.txt | 2 ++ release_docs/USING_HDF5_CMake.txt | 10 +++++++--- src/CMakeLists.txt | 1 + tools/h5copy/CMakeLists.txt | 1 + tools/h5diff/CMakeLists.txt | 6 ++++-- tools/h5dump/CMakeLists.txt | 3 ++- tools/h5format_convert/CMakeLists.txt | 1 + tools/h5import/CMakeLists.txt | 1 + tools/h5jam/CMakeLists.txt | 6 +++++- tools/h5ls/CMakeLists.txt | 1 + tools/h5repack/CMakeLists.txt | 1 + tools/h5stat/CMakeLists.txt | 3 ++- tools/lib/CMakeLists.txt | 1 + tools/misc/CMakeLists.txt | 3 +++ 24 files changed, 49 insertions(+), 13 deletions(-) diff --git a/CMakeInstallation.cmake b/CMakeInstallation.cmake index 045f875..65d2222 100644 --- a/CMakeInstallation.cmake +++ b/CMakeInstallation.cmake @@ -31,6 +31,7 @@ if (NOT HDF5_EXTERNALLY_CONFIGURED) EXPORT ${HDF5_EXPORTED_TARGETS} DESTINATION ${HDF5_INSTALL_CMAKE_DIR} FILE ${HDF5_PACKAGE}${HDF_PACKAGE_EXT}-targets.cmake + NAMESPACE ${HDF5_PACKAGE}:: COMPONENT configinstall ) endif (NOT HDF5_EXTERNALLY_CONFIGURED) @@ -40,8 +41,9 @@ endif (NOT HDF5_EXTERNALLY_CONFIGURED) #----------------------------------------------------------------------------- if (NOT HDF5_EXTERNALLY_CONFIGURED) export ( - TARGETS ${HDF5_LIBRARIES_TO_EXPORT} ${HDF5_LIB_DEPENDENCIES} + TARGETS ${HDF5_LIBRARIES_TO_EXPORT} ${HDF5_LIB_DEPENDENCIES} ${HDF5_UTILS_TO_EXPORT} FILE ${HDF5_PACKAGE}${HDF_PACKAGE_EXT}-targets.cmake + NAMESPACE ${HDF5_PACKAGE}:: ) endif (NOT HDF5_EXTERNALLY_CONFIGURED) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9359084..ea09493 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -452,6 +452,8 @@ endif (NOT HDF5_EXPORTED_TARGETS) # which include hdf5 as a sub-project within their build tree #----------------------------------------------------------------------------- set_global_variable (HDF5_LIBRARIES_TO_EXPORT "") +set_global_variable (HDF5_UTILS_TO_EXPORT "") + set (EXTERNAL_HEADER_LIST "") set (EXTERNAL_LIBRARY_LIST "") set (EXTERNAL_LIBRARYDLL_LIST "") diff --git a/c++/src/CMakeLists.txt b/c++/src/CMakeLists.txt index 526b223..2db0a9f 100644 --- a/c++/src/CMakeLists.txt +++ b/c++/src/CMakeLists.txt @@ -133,5 +133,6 @@ if (HDF5_EXPORTED_TARGETS) ARCHIVE DESTINATION ${HDF5_INSTALL_LIB_DIR} COMPONENT cpplibraries RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT cpplibraries FRAMEWORK DESTINATION ${HDF5_INSTALL_FWRK_DIR} COMPONENT cpplibraries + INCLUDES DESTINATION include ) endif (HDF5_EXPORTED_TARGETS) diff --git a/config/cmake/hdf5-config.cmake.in b/config/cmake/hdf5-config.cmake.in index 3f95d76..41fc726 100644 --- a/config/cmake/hdf5-config.cmake.in +++ b/config/cmake/hdf5-config.cmake.in @@ -157,12 +157,12 @@ foreach (libtype IN LISTS ${HDF5_PACKAGE_NAME}_LIB_TYPE) else () set (${HDF5_PACKAGE_NAME}_${libtype}_${comp}_FOUND 1) string(TOUPPER ${HDF5_PACKAGE_NAME}_${comp}_${libtype}_LIBRARY COMP_LIBRARY) - set (${COMP_LIBRARY} ${${COMP_LIBRARY}} ${hdf5_comp2}-${libtype} ${hdf5_comp}-${libtype}) + set (${COMP_LIBRARY} ${${COMP_LIBRARY}} @HDF5_PACKAGE@::${hdf5_comp2}-${libtype} @HDF5_PACKAGE@::${hdf5_comp}-${libtype}) endif () else () set (${HDF5_PACKAGE_NAME}_${libtype}_${comp}_FOUND 1) string(TOUPPER ${HDF5_PACKAGE_NAME}_${comp}_${libtype}_LIBRARY COMP_LIBRARY) - set (${COMP_LIBRARY} ${${COMP_LIBRARY}} ${hdf5_comp}-${libtype}) + set (${COMP_LIBRARY} ${${COMP_LIBRARY}} @HDF5_PACKAGE@::${hdf5_comp}-${libtype}) endif () endif () endforeach () diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt index c3af6ea..00d0429 100644 --- a/fortran/src/CMakeLists.txt +++ b/fortran/src/CMakeLists.txt @@ -387,5 +387,6 @@ if (HDF5_EXPORTED_TARGETS) ARCHIVE DESTINATION ${HDF5_INSTALL_LIB_DIR} COMPONENT fortlibraries RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT fortlibraries FRAMEWORK DESTINATION ${HDF5_INSTALL_FWRK_DIR} COMPONENT fortlibraries + INCLUDES DESTINATION include ) endif (HDF5_EXPORTED_TARGETS) diff --git a/hl/c++/src/CMakeLists.txt b/hl/c++/src/CMakeLists.txt index cec9406..f30e684 100644 --- a/hl/c++/src/CMakeLists.txt +++ b/hl/c++/src/CMakeLists.txt @@ -45,7 +45,7 @@ if (BUILD_SHARED_LIBS) endif (BUILD_SHARED_LIBS) #----------------------------------------------------------------------------- -# Add file(s) to CMake Install +# Add file(s) to CMake Install #----------------------------------------------------------------------------- install ( FILES @@ -63,7 +63,7 @@ if (HDF5_EXPORTED_TARGETS) if (BUILD_SHARED_LIBS) INSTALL_TARGET_PDB (${HDF5_HL_CPP_LIBSH_TARGET} ${HDF5_INSTALL_BIN_DIR} hlcpplibraries) endif (BUILD_SHARED_LIBS) - + install ( TARGETS ${install_targets} @@ -73,5 +73,6 @@ if (HDF5_EXPORTED_TARGETS) ARCHIVE DESTINATION ${HDF5_INSTALL_LIB_DIR} COMPONENT hlcpplibraries RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT hlcpplibraries FRAMEWORK DESTINATION ${HDF5_INSTALL_FWRK_DIR} COMPONENT hlcpplibraries + INCLUDES DESTINATION include ) endif (HDF5_EXPORTED_TARGETS) diff --git a/hl/fortran/src/CMakeLists.txt b/hl/fortran/src/CMakeLists.txt index 0b6327a..2eaac31 100644 --- a/hl/fortran/src/CMakeLists.txt +++ b/hl/fortran/src/CMakeLists.txt @@ -273,5 +273,6 @@ if (HDF5_EXPORTED_TARGETS) ARCHIVE DESTINATION ${HDF5_INSTALL_LIB_DIR} COMPONENT hlfortlibraries RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT hlfortlibraries FRAMEWORK DESTINATION ${HDF5_INSTALL_FWRK_DIR} COMPONENT hlfortlibraries + INCLUDES DESTINATION include ) endif (HDF5_EXPORTED_TARGETS) diff --git a/hl/src/CMakeLists.txt b/hl/src/CMakeLists.txt index a55a16b..0c71583 100644 --- a/hl/src/CMakeLists.txt +++ b/hl/src/CMakeLists.txt @@ -84,5 +84,6 @@ if (HDF5_EXPORTED_TARGETS) ARCHIVE DESTINATION ${HDF5_INSTALL_LIB_DIR} COMPONENT hllibraries RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT hllibraries FRAMEWORK DESTINATION ${HDF5_INSTALL_FWRK_DIR} COMPONENT hllibraries + INCLUDES DESTINATION include ) endif (HDF5_EXPORTED_TARGETS) diff --git a/hl/tools/gif2h5/CMakeLists.txt b/hl/tools/gif2h5/CMakeLists.txt index 3a55501..57daadb 100644 --- a/hl/tools/gif2h5/CMakeLists.txt +++ b/hl/tools/gif2h5/CMakeLists.txt @@ -22,6 +22,7 @@ TARGET_NAMING (gif2h5 STATIC) TARGET_C_PROPERTIES (gif2h5 STATIC " " " ") target_link_libraries (gif2h5 ${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) set_target_properties (gif2h5 PROPERTIES FOLDER tools/hl) +set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};gif2h5") #-- Add h52gif program set (hdf2gif_SOURCES @@ -33,6 +34,7 @@ TARGET_NAMING (h52gif STATIC) TARGET_C_PROPERTIES (h52gif STATIC " " " ") target_link_libraries (h52gif ${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) set_target_properties (h52gif PROPERTIES FOLDER tools/hl) +set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h52gif") if (BUILD_TESTING) # -------------------------------------------------------------------- diff --git a/java/src/jni/CMakeLists.txt b/java/src/jni/CMakeLists.txt index 2e4a821..9da31ee 100644 --- a/java/src/jni/CMakeLists.txt +++ b/java/src/jni/CMakeLists.txt @@ -84,5 +84,6 @@ if (HDF5_EXPORTED_TARGETS) ARCHIVE DESTINATION ${HDF5_INSTALL_LIB_DIR} COMPONENT libraries RUNTIME DESTINATION ${HDF5_INSTALL_LIB_DIR} COMPONENT libraries FRAMEWORK DESTINATION ${HDF5_INSTALL_FWRK_DIR} COMPONENT libraries + INCLUDES DESTINATION include ) endif (HDF5_EXPORTED_TARGETS) diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index 87eb732..179a5c7 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -41,6 +41,8 @@ New Features Configuration: ------------- + - CMake + Added NAMESPACE hdf5:: to package configuration files - CMake: change CTEST_BUILD_CONFIGURATION to CTEST_CONFIGURATION_TYPE, which is recommended by CMake documentation. HDFFV-9971 (ADB 2016/8/22) diff --git a/release_docs/USING_HDF5_CMake.txt b/release_docs/USING_HDF5_CMake.txt index e89f1eb..313af83 100644 --- a/release_docs/USING_HDF5_CMake.txt +++ b/release_docs/USING_HDF5_CMake.txt @@ -183,15 +183,19 @@ source root. Include the following text in the file: cmake_minimum_required (VERSION 3.1.0) project (HDF5MyApp C CXX) -find_package (HDF5 NAMES hdf5 COMPONENTS C static) +set (LIB_TYPE STATIC) # or SHARED +string(TOLOWER ${LIB_TYPE} SEARCH_TYPE) + +find_package (HDF5 NAMES hdf5 COMPONENTS C ${SEARCH_TYPE}) # find_package (HDF5) # Find non-cmake built HDF5 INCLUDE_DIRECTORIES (${HDF5_INCLUDE_DIR}) -set (LINK_LIBS ${LINK_LIBS} ${HDF5_C_STATIC_LIBRARY}) +set (LINK_LIBS ${LINK_LIBS} ${HDF5_C_${LIB_TYPE}_LIBRARY}) set (example hdf_example) add_executable (${example} ${PROJECT_SOURCE_DIR}/${example}.c) -TARGET_C_PROPERTIES (${example} " " " ") +TARGET_NAMING (${example} ${LIB_TYPE}) +TARGET_C_PROPERTIES (${example} ${LIB_TYPE} " " " ") target_link_libraries (${example} ${LINK_LIBS}) enable_testing () diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c0f934e..94b2d11 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -959,5 +959,6 @@ if (HDF5_EXPORTED_TARGETS) ARCHIVE DESTINATION ${HDF5_INSTALL_LIB_DIR} COMPONENT libraries RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT libraries FRAMEWORK DESTINATION ${HDF5_INSTALL_FWRK_DIR} COMPONENT libraries + INCLUDES DESTINATION include ) endif (HDF5_EXPORTED_TARGETS) diff --git a/tools/h5copy/CMakeLists.txt b/tools/h5copy/CMakeLists.txt index 219106f..0a5d01a 100644 --- a/tools/h5copy/CMakeLists.txt +++ b/tools/h5copy/CMakeLists.txt @@ -14,6 +14,7 @@ TARGET_NAMING (h5copy STATIC) TARGET_C_PROPERTIES (h5copy STATIC " " " ") target_link_libraries (h5copy ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) set_target_properties (h5copy PROPERTIES FOLDER tools) +set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5copy") set (H5_DEP_EXECUTABLES h5copy) diff --git a/tools/h5diff/CMakeLists.txt b/tools/h5diff/CMakeLists.txt index 3902bd4..5da7bf5 100644 --- a/tools/h5diff/CMakeLists.txt +++ b/tools/h5diff/CMakeLists.txt @@ -17,6 +17,7 @@ TARGET_NAMING (h5diff STATIC) TARGET_C_PROPERTIES (h5diff STATIC " " " ") target_link_libraries (h5diff ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) set_target_properties (h5diff PROPERTIES FOLDER tools) +set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5diff") set (H5_DEP_EXECUTABLES h5diff) @@ -29,6 +30,7 @@ if (H5_HAVE_PARALLEL) TARGET_C_PROPERTIES (ph5diff STATIC " " " ") target_link_libraries (ph5diff ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) set_target_properties (ph5diff PROPERTIES FOLDER tools) + set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};ph5diff") endif (H5_HAVE_PARALLEL) if (BUILD_TESTING) @@ -41,12 +43,12 @@ if (BUILD_TESTING) TARGET_C_PROPERTIES (h5diffgentest STATIC " " " ") target_link_libraries (h5diffgentest ${HDF5_LIB_TARGET}) set_target_properties (h5diffgentest PROPERTIES FOLDER generator/tools) - + #add_test (NAME h5diffgentest COMMAND $) endif (HDF5_BUILD_GENERATORS) include (CMakeTests.cmake) - + endif (BUILD_TESTING) ############################################################################## diff --git a/tools/h5dump/CMakeLists.txt b/tools/h5dump/CMakeLists.txt index 7b32e8b..49de08c 100644 --- a/tools/h5dump/CMakeLists.txt +++ b/tools/h5dump/CMakeLists.txt @@ -18,6 +18,7 @@ TARGET_NAMING (h5dump STATIC) TARGET_C_PROPERTIES (h5dump STATIC " " " ") target_link_libraries (h5dump ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) set_target_properties (h5dump PROPERTIES FOLDER tools) +set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5dump") set (H5_DEP_EXECUTABLES h5dump) @@ -31,7 +32,7 @@ if (BUILD_TESTING) TARGET_C_PROPERTIES (h5dumpgentest STATIC " " " ") target_link_libraries (h5dumpgentest ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) set_target_properties (h5dumpgentest PROPERTIES FOLDER generator/tools) - + #add_test (NAME h5dumpgentest COMMAND $) endif (HDF5_BUILD_GENERATORS) diff --git a/tools/h5format_convert/CMakeLists.txt b/tools/h5format_convert/CMakeLists.txt index 4f6fdea..e5faf7c 100644 --- a/tools/h5format_convert/CMakeLists.txt +++ b/tools/h5format_convert/CMakeLists.txt @@ -14,6 +14,7 @@ TARGET_NAMING (h5format_convert STATIC) TARGET_C_PROPERTIES (h5format_convert STATIC " " " ") target_link_libraries (h5format_convert ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) set_target_properties (h5format_convert PROPERTIES FOLDER tools) +set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5format_convert") set (H5_DEP_EXECUTABLES h5format_convert) diff --git a/tools/h5import/CMakeLists.txt b/tools/h5import/CMakeLists.txt index 7278bbe..c9c7db5 100644 --- a/tools/h5import/CMakeLists.txt +++ b/tools/h5import/CMakeLists.txt @@ -15,6 +15,7 @@ TARGET_C_PROPERTIES (h5import STATIC " " " ") target_link_libraries (h5import ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) #set_target_properties (h5import PROPERTIES COMPILE_DEFINITIONS H5DEBUGIMPORT) set_target_properties (h5import PROPERTIES FOLDER tools) +set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5import") set (H5_DEP_EXECUTABLES h5import) diff --git a/tools/h5jam/CMakeLists.txt b/tools/h5jam/CMakeLists.txt index 0a9aa6c..395ef0e 100644 --- a/tools/h5jam/CMakeLists.txt +++ b/tools/h5jam/CMakeLists.txt @@ -14,24 +14,28 @@ TARGET_NAMING (h5jam STATIC) TARGET_C_PROPERTIES (h5jam STATIC " " " ") target_link_libraries (h5jam ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) set_target_properties (h5jam PROPERTIES FOLDER tools) +set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5jam") add_executable (getub ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/getub.c) TARGET_NAMING (getub STATIC) TARGET_C_PROPERTIES (getub STATIC " " " ") target_link_libraries (getub ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) set_target_properties (getub PROPERTIES FOLDER tools) +set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5getub") add_executable (tellub ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/tellub.c) TARGET_NAMING (tellub STATIC) TARGET_C_PROPERTIES (tellub STATIC " " " ") target_link_libraries (tellub ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) set_target_properties (tellub PROPERTIES FOLDER tools) +set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5tellub") add_executable (h5unjam ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/h5unjam.c) TARGET_NAMING (h5unjam STATIC) TARGET_C_PROPERTIES (h5unjam STATIC " " " ") target_link_libraries (h5unjam ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) set_target_properties (h5unjam PROPERTIES FOLDER tools) +set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5unjam") set (H5_DEP_EXECUTABLES h5jam @@ -50,7 +54,7 @@ if (BUILD_TESTING) TARGET_C_PROPERTIES (testhdf5 STATIC " " " ") target_link_libraries (h5jamgentest ${HDF5_LIB_TARGET}) set_target_properties (h5jamgentest PROPERTIES FOLDER generator/tools) - + #add_test (NAME h5jamgentest COMMAND $) endif (HDF5_BUILD_GENERATORS) diff --git a/tools/h5ls/CMakeLists.txt b/tools/h5ls/CMakeLists.txt index b6c0141..41ba23c 100644 --- a/tools/h5ls/CMakeLists.txt +++ b/tools/h5ls/CMakeLists.txt @@ -14,6 +14,7 @@ TARGET_NAMING (h5ls STATIC) TARGET_C_PROPERTIES (h5ls STATIC " " " ") target_link_libraries (h5ls ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) set_target_properties (h5ls PROPERTIES FOLDER tools) +set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5lsy") set (H5_DEP_EXECUTABLES h5ls diff --git a/tools/h5repack/CMakeLists.txt b/tools/h5repack/CMakeLists.txt index dfe9271..85cd37c 100644 --- a/tools/h5repack/CMakeLists.txt +++ b/tools/h5repack/CMakeLists.txt @@ -25,6 +25,7 @@ TARGET_NAMING (h5repack STATIC) TARGET_C_PROPERTIES (h5repack STATIC " " " ") target_link_libraries (h5repack ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) set_target_properties (h5repack PROPERTIES FOLDER tools) +set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5repack") set (H5_DEP_EXECUTABLES h5repack) diff --git a/tools/h5stat/CMakeLists.txt b/tools/h5stat/CMakeLists.txt index f537ce6..467fac2 100644 --- a/tools/h5stat/CMakeLists.txt +++ b/tools/h5stat/CMakeLists.txt @@ -14,6 +14,7 @@ TARGET_NAMING (h5stat STATIC) TARGET_C_PROPERTIES (h5stat STATIC " " " ") target_link_libraries (h5stat ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) set_target_properties (h5stat PROPERTIES FOLDER tools) +set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5stat") set (H5_DEP_EXECUTABLES h5stat) @@ -27,7 +28,7 @@ if (BUILD_TESTING) TARGET_C_PROPERTIES (h5stat_gentest STATIC " " " ") target_link_libraries (h5stat_gentest ${HDF5_LIB_TARGET}) set_target_properties (h5stat_gentest PROPERTIES FOLDER generator/tools) - + #add_test (NAME h5stat_gentest COMMAND $) endif (HDF5_BUILD_GENERATORS) diff --git a/tools/lib/CMakeLists.txt b/tools/lib/CMakeLists.txt index 33c6b02..bfd1af2 100644 --- a/tools/lib/CMakeLists.txt +++ b/tools/lib/CMakeLists.txt @@ -100,5 +100,6 @@ if (HDF5_EXPORTED_TARGETS) ARCHIVE DESTINATION ${HDF5_INSTALL_LIB_DIR} COMPONENT toolslibraries RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolslibraries FRAMEWORK DESTINATION ${HDF5_INSTALL_FWRK_DIR} COMPONENT toolslibraries + INCLUDES DESTINATION include ) endif (HDF5_EXPORTED_TARGETS) diff --git a/tools/misc/CMakeLists.txt b/tools/misc/CMakeLists.txt index 2e38fa3..daa8dda 100644 --- a/tools/misc/CMakeLists.txt +++ b/tools/misc/CMakeLists.txt @@ -15,18 +15,21 @@ TARGET_NAMING (h5debug STATIC) TARGET_C_PROPERTIES (h5debug STATIC " " " ") target_link_libraries (h5debug ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) set_target_properties (h5debug PROPERTIES FOLDER tools) +set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5debug") add_executable (h5repart ${HDF5_TOOLS_MISC_SOURCE_DIR}/h5repart.c) TARGET_NAMING (h5repart STATIC) TARGET_C_PROPERTIES (h5repart STATIC " " " ") target_link_libraries (h5repart ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) set_target_properties (h5repart PROPERTIES FOLDER tools) +set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5repart") add_executable (h5mkgrp ${HDF5_TOOLS_MISC_SOURCE_DIR}/h5mkgrp.c) TARGET_NAMING (h5mkgrp STATIC) TARGET_C_PROPERTIES (h5mkgrp STATIC " " " ") target_link_libraries (h5mkgrp ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) set_target_properties (h5mkgrp PROPERTIES FOLDER tools) +set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5mkgrp") set (H5_DEP_EXECUTABLES h5debug -- cgit v0.12 From 4fc6f27a5ebb209753b5df9f15993f45e907daff Mon Sep 17 00:00:00 2001 From: Binh-Minh Ribler Date: Wed, 21 Sep 2016 14:53:17 -0500 Subject: Purpose: Fix bug HDFFR-9920 cont. Description: Adding user's test revealed a flaw in the fix. Moved CommonFG's functions in Group to H5Location, so that they could be called by objects that can be used to specify a location Also, rearranged many "#include" header files to resolve conflicts. Platforms tested: Linux/32 2.6 (jam) Linux/64 (platypus) Darwin (osx1010test) --- c++/src/H5AbstractDs.cpp | 9 +- c++/src/H5ArrayType.cpp | 4 +- c++/src/H5AtomType.cpp | 4 +- c++/src/H5Attribute.cpp | 6 +- c++/src/H5CommonFG.cpp | 5 +- c++/src/H5CompType.cpp | 6 +- c++/src/H5Cpp.h | 12 +- c++/src/H5DataSet.cpp | 9 +- c++/src/H5DataType.cpp | 6 +- c++/src/H5DcreatProp.cpp | 2 +- c++/src/H5DcreatProp.h | 2 + c++/src/H5EnumType.cpp | 8 +- c++/src/H5File.cpp | 14 +- c++/src/H5FloatType.cpp | 6 +- c++/src/H5Group.cpp | 1282 +------------------------------------------- c++/src/H5Group.h | 120 ----- c++/src/H5IntType.cpp | 6 +- c++/src/H5Library.cpp | 4 +- c++/src/H5Location.cpp | 1337 ++++++++++++++++++++++++++++++++++++++++++++-- c++/src/H5Location.h | 134 ++++- c++/src/H5Object.cpp | 8 +- c++/src/H5Object.h | 2 + c++/src/H5OcreatProp.cpp | 2 +- c++/src/H5PredType.cpp | 2 + c++/src/H5StrType.cpp | 6 +- c++/src/H5VarLenType.cpp | 4 +- c++/test/Makefile.am | 2 +- c++/test/h5cpputil.cpp | 26 + c++/test/h5cpputil.h | 8 +- c++/test/testhdf5.cpp | 2 + c++/test/titerate.cpp | 541 +++++++++++++++++++ 31 files changed, 2090 insertions(+), 1489 deletions(-) create mode 100644 c++/test/titerate.cpp diff --git a/c++/src/H5AbstractDs.cpp b/c++/src/H5AbstractDs.cpp index f0579fc..ac10bf8 100644 --- a/c++/src/H5AbstractDs.cpp +++ b/c++/src/H5AbstractDs.cpp @@ -19,12 +19,15 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" +#include "H5FaccProp.h" +#include "H5FcreatProp.h" +#include "H5OcreatProp.h" +#include "H5DcreatProp.h" +#include "H5DxferProp.h" #include "H5Location.h" #include "H5Object.h" -#include "H5AbstractDs.h" #include "H5DataSpace.h" -#include "H5OcreatProp.h" -#include "H5DcreatProp.h" +#include "H5AbstractDs.h" #include "H5Alltypes.h" #ifndef H5_NO_NAMESPACE diff --git a/c++/src/H5ArrayType.cpp b/c++/src/H5ArrayType.cpp index d7d1a35..9646a6f 100644 --- a/c++/src/H5ArrayType.cpp +++ b/c++/src/H5ArrayType.cpp @@ -19,10 +19,10 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5DataType.h" #include "H5ArrayType.h" diff --git a/c++/src/H5AtomType.cpp b/c++/src/H5AtomType.cpp index 6308821..7871455 100644 --- a/c++/src/H5AtomType.cpp +++ b/c++/src/H5AtomType.cpp @@ -19,10 +19,10 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5DataType.h" #include "H5AtomType.h" diff --git a/c++/src/H5Attribute.cpp b/c++/src/H5Attribute.cpp index 5454583..0a8ec52 100644 --- a/c++/src/H5Attribute.cpp +++ b/c++/src/H5Attribute.cpp @@ -24,13 +24,13 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" -#include "H5AbstractDs.h" #include "H5FaccProp.h" #include "H5FcreatProp.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" +#include "H5Location.h" +#include "H5Object.h" +#include "H5AbstractDs.h" #include "H5DataType.h" #include "H5DataSpace.h" #include "H5Group.h" diff --git a/c++/src/H5CommonFG.cpp b/c++/src/H5CommonFG.cpp index 0c18293..f79a048 100644 --- a/c++/src/H5CommonFG.cpp +++ b/c++/src/H5CommonFG.cpp @@ -19,13 +19,13 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" #include "H5FaccProp.h" #include "H5FcreatProp.h" #include "H5OcreatProp.h" #include "H5DxferProp.h" #include "H5DcreatProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5CommonFG.h" #include "H5Group.h" #include "H5AbstractDs.h" @@ -73,4 +73,3 @@ CommonFG::~CommonFG() {} #ifndef H5_NO_NAMESPACE } #endif - diff --git a/c++/src/H5CompType.cpp b/c++/src/H5CompType.cpp index 6105273..b7c5687 100644 --- a/c++/src/H5CompType.cpp +++ b/c++/src/H5CompType.cpp @@ -19,13 +19,13 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" +#include "H5DxferProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5Alltypes.h" #include "H5AbstractDs.h" -#include "H5DxferProp.h" #include "H5DataSpace.h" #include "H5DataSet.h" #include "H5private.h" diff --git a/c++/src/H5Cpp.h b/c++/src/H5Cpp.h index 4e82ee3..56b2f7f 100644 --- a/c++/src/H5Cpp.h +++ b/c++/src/H5Cpp.h @@ -22,17 +22,17 @@ #include "H5IdComponent.h" #include "H5DataSpace.h" #include "H5PropList.h" +#include "H5FaccProp.h" +#include "H5FcreatProp.h" +#include "H5OcreatProp.h" +#include "H5DcreatProp.h" +#include "H5DxferProp.h" #include "H5Location.h" #include "H5Object.h" #include "H5AbstractDs.h" #include "H5Attribute.h" -#include "H5OcreatProp.h" -#include "H5DcreatProp.h" -#include "H5CommonFG.h" +//#include "H5CommonFG.h" #include "H5DataType.h" -#include "H5DxferProp.h" -#include "H5FaccProp.h" -#include "H5FcreatProp.h" #include "H5AtomType.h" #include "H5PredType.h" #include "H5EnumType.h" diff --git a/c++/src/H5DataSet.cpp b/c++/src/H5DataSet.cpp index 4b5d0b7..e4d6665 100644 --- a/c++/src/H5DataSet.cpp +++ b/c++/src/H5DataSet.cpp @@ -24,14 +24,13 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" -#include "H5PropList.h" +#include "H5FaccProp.h" +#include "H5FcreatProp.h" #include "H5OcreatProp.h" #include "H5DxferProp.h" #include "H5DcreatProp.h" -#include "H5FaccProp.h" -#include "H5FcreatProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5DataType.h" #include "H5DataSpace.h" #include "H5AbstractDs.h" diff --git a/c++/src/H5DataType.cpp b/c++/src/H5DataType.cpp index b784dd4..a36dc60 100644 --- a/c++/src/H5DataType.cpp +++ b/c++/src/H5DataType.cpp @@ -24,14 +24,14 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5DataSpace.h" -#include "H5Location.h" -#include "H5Object.h" #include "H5FaccProp.h" #include "H5FcreatProp.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" #include "H5DxferProp.h" +#include "H5DataSpace.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5DataType.h" #include "H5AtomType.h" #include "H5PredType.h" diff --git a/c++/src/H5DcreatProp.cpp b/c++/src/H5DcreatProp.cpp index 06b5024..d540c72 100644 --- a/c++/src/H5DcreatProp.cpp +++ b/c++/src/H5DcreatProp.cpp @@ -20,9 +20,9 @@ #include "H5IdComponent.h" #include "H5PropList.h" #include "H5OcreatProp.h" +#include "H5DcreatProp.h" #include "H5Location.h" #include "H5Object.h" -#include "H5DcreatProp.h" #include "H5DataType.h" #ifndef H5_NO_NAMESPACE diff --git a/c++/src/H5DcreatProp.h b/c++/src/H5DcreatProp.h index fed41b4..fa7b1c1 100644 --- a/c++/src/H5DcreatProp.h +++ b/c++/src/H5DcreatProp.h @@ -24,6 +24,8 @@ namespace H5 { #endif +class DataType; + /*! \class DSetCreatPropList \brief Class DSetCreatPropList represents the dataset creation property list. diff --git a/c++/src/H5EnumType.cpp b/c++/src/H5EnumType.cpp index f0a2138..32cb1ac 100644 --- a/c++/src/H5EnumType.cpp +++ b/c++/src/H5EnumType.cpp @@ -19,13 +19,13 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" +#include "H5OcreatProp.h" +#include "H5DcreatProp.h" +#include "H5DxferProp.h" +#include "H5DataSpace.h" #include "H5Location.h" #include "H5Object.h" #include "H5AbstractDs.h" -#include "H5DxferProp.h" -#include "H5DataSpace.h" -#include "H5OcreatProp.h" -#include "H5DcreatProp.h" #include "H5DataType.h" #include "H5DataSet.h" #include "H5AtomType.h" diff --git a/c++/src/H5File.cpp b/c++/src/H5File.cpp index a81efd8..246da9f 100644 --- a/c++/src/H5File.cpp +++ b/c++/src/H5File.cpp @@ -24,13 +24,13 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" #include "H5FaccProp.h" #include "H5FcreatProp.h" #include "H5OcreatProp.h" #include "H5DxferProp.h" #include "H5DcreatProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5Group.h" #include "H5AbstractDs.h" #include "H5DataSpace.h" @@ -563,6 +563,9 @@ void H5File::reopen() // This function is a redefinition of CommonFG::getLocId. It // is used by CommonFG member functions to get the file id. // Programmer Binh-Minh Ribler - 2000 +// Deprecated: +// After HDFFV-9920, the Group's methods can use getId() and getLocId() +// is kept for backward compatibility. Aug 18, 2016 -BMR //-------------------------------------------------------------------------- hid_t H5File::getLocId() const { @@ -623,11 +626,10 @@ void H5File::close() ///\param msg - Message describing the failure ///\exception H5::FileIException // Description -// This function is used in CommonFG implementation so that +// This function is also used in H5Location implementation so that // proper exception can be thrown for file or group. The -// argument func_name is a member of CommonFG and "H5File::" -// will be inserted to indicate the function called is an -// implementation of H5File. +// "H5File::" will be inserted to indicate the function called is +// an implementation of H5File. // Programmer Binh-Minh Ribler - 2000 //-------------------------------------------------------------------------- void H5File::throwException(const H5std_string& func_name, const H5std_string& msg) const diff --git a/c++/src/H5FloatType.cpp b/c++/src/H5FloatType.cpp index ed17aeb..c019ae4 100644 --- a/c++/src/H5FloatType.cpp +++ b/c++/src/H5FloatType.cpp @@ -19,13 +19,13 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" +#include "H5DxferProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5DataType.h" #include "H5AbstractDs.h" -#include "H5DxferProp.h" #include "H5DataSpace.h" #include "H5AtomType.h" #include "H5FloatType.h" diff --git a/c++/src/H5Group.cpp b/c++/src/H5Group.cpp index d93d3a1..0e19e6f 100644 --- a/c++/src/H5Group.cpp +++ b/c++/src/H5Group.cpp @@ -24,14 +24,14 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" -#include "H5AbstractDs.h" #include "H5FaccProp.h" #include "H5FcreatProp.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" #include "H5DxferProp.h" +#include "H5Location.h" +#include "H5Object.h" +#include "H5AbstractDs.h" #include "H5DataSpace.h" #include "H5DataSet.h" #include "H5Attribute.h" @@ -68,9 +68,11 @@ Group::Group(const Group& original) : H5Object(), id(original.id) //-------------------------------------------------------------------------- // Function: Group::getLocId -///\brief Returns the id of this group. -///\return Id of this group +// Purpose: Get the id of this group // Programmer Binh-Minh Ribler - 2000 +// Description +// This function is a redefinition of CommonFG::getLocId. It +// is used by CommonFG member functions to get the file id. // Deprecated: // After HDFFV-9920, the Group's methods can use getId() and getLocId() // is kept for backward compatibility. Aug 18, 2016 -BMR @@ -196,11 +198,10 @@ void Group::close() ///\param msg - Message describing the failure ///\exception H5::GroupIException // Description -// This function is used in CommonFG implementation so that +// This function is also used in H5Location's methods so that // proper exception can be thrown for file or group. The -// argument func_name is a member of CommonFG and "Group::" -// will be inserted to indicate the function called is an -// implementation of Group. +// "Group::" will be inserted to indicate the function called is +// an implementation of Group. // Programmer Binh-Minh Ribler - 2000 //-------------------------------------------------------------------------- void Group::throwException(const H5std_string& func_name, const H5std_string& msg) const @@ -230,1269 +231,6 @@ Group::~Group() } } - -// From H5CommonFG.cpp -// Notes with "***Updated" are new and for Group.cpp -// Original notes are from December 2000 -// -// There are a few comments that are common to most of the functions -// defined in this file so they are listed here. -// - getLocId is called by all functions, that call a C API, to get -// the location id, which can be either a file id or a group id. -// This function is pure virtual and it's up to H5File and Group -// to call the right getId() - although, as the structure of the -// library at this time, getId() is basically the IdComponent::getId() -// ***Updated: after the classes are rearranged (HDFFV-9920), functions -// in CommonFG are moved to Group, and they can call getId() -// instead of getLocId(). getLocId() is kept for backward -// compatibility on user applications. Aug 18, 2016 -BMR -// - when a failure returned by the C API, the functions will call -// throwException, which is a pure virtual function and is implemented -// by H5File to throw a FileIException and by Group to throw a -// GroupIException. -// ***Updated: after HDFFV-9920, methods in class Group use throwException -// to distinguish the FileIException and GroupIException. CommonFG is no -// longer used in the library. Aug 18, 2016 -BMR - -//-------------------------------------------------------------------------- -// Function: Group::createGroup -///\brief Creates a new group at this location which can be a file -/// or another group. -///\param name - IN: Name of the group to create -///\param size_hint - IN: Indicates the number of bytes to reserve for -/// the names that will appear in the group -///\return Group instance -///\exception H5::FileIException or H5::GroupIException -///\par Description -/// The optional \a size_hint specifies how much file space to -/// reserve for storing the names that will appear in this new -/// group. If a non-positive value is provided for the \a size_hint -/// then a default size is chosen. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -Group Group::createGroup( const char* name, size_t size_hint ) const -{ - // Group creation property list for size hint - hid_t gcpl_id = 0; - - // Set the local heap size hint - if (size_hint > 0) - { - // If the creation of the property list failed, throw an exception - if ((gcpl_id = H5Pcreate(H5P_GROUP_CREATE)) < 0) - throwException("createGroup", "H5Pcreate failed"); - - if (H5Pset_local_heap_size_hint(gcpl_id, size_hint) < 0) { - H5Pclose(gcpl_id); - throwException("createGroup", "H5Pset_local_heap_size_hint failed"); - } - } - - // Call C routine H5Gcreate2 to create the named group, giving the - // location id which can be a file id or a group id - hid_t group_id = H5Gcreate2(getId(), name, H5P_DEFAULT, gcpl_id, H5P_DEFAULT ); - - // Close the group creation property list, if necessary - if(gcpl_id > 0) - H5Pclose(gcpl_id); - - // If the creation of the group failed, throw an exception - if( group_id < 0 ) - throwException("createGroup", "H5Gcreate2 failed"); - - // No failure, create and return the Group object - Group group; - group.p_setId(group_id); - // CommonFG *ptr = &group; - // ptr->p_setId(group_id); - return( group ); -} - -//-------------------------------------------------------------------------- -// Function: Group::createGroup -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -Group Group::createGroup( const H5std_string& name, size_t size_hint ) const -{ - return( createGroup( name.c_str(), size_hint )); -} - -//-------------------------------------------------------------------------- -// Function: Group::openGroup -///\brief Opens an existing group in a location which can be a file -/// or another group. -///\param name - IN: Name of the group to open -///\return Group instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -Group Group::openGroup( const char* name ) const -{ - // Call C routine H5Gopen2 to open the named group, giving the - // location id which can be a file id or a group id - hid_t group_id = H5Gopen2(getId(), name, H5P_DEFAULT ); - - // If the opening of the group failed, throw an exception - if( group_id < 0 ) - throwException("openGroup", "H5Gopen2 failed"); - - // No failure, create and return the Group object - Group group; - group.p_setId(group_id); - // CommonFG *ptr = &group; - // ptr->p_setId(group_id); - return( group ); -} - -//-------------------------------------------------------------------------- -// Function: Group::openGroup -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -Group Group::openGroup( const H5std_string& name ) const -{ - return( openGroup( name.c_str() )); -} - -//-------------------------------------------------------------------------- -// Function: Group::createDataSet -///\brief Creates a new dataset at this location. -///\param name - IN: Name of the dataset to create -///\param data_type - IN: Datatype of the dataset -///\param data_space - IN: Dataspace for the dataset -///\param create_plist - IN: Creation properly list for the dataset -///\return DataSet instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -DataSet Group::createDataSet( const char* name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist ) const -{ - //cerr << "createDataSet( const char* name" << endl; - // Obtain identifiers for C API - hid_t type_id = data_type.getId(); - hid_t space_id = data_space.getId(); - hid_t create_plist_id = create_plist.getId(); - - // Call C routine H5Dcreate2 to create the named dataset - hid_t dataset_id = H5Dcreate2(getId(), name, type_id, space_id, H5P_DEFAULT, create_plist_id, H5P_DEFAULT ); - //cerr << " H5Dcreate2 returns dataset_id " << dataset_id << endl; - - // If the creation of the dataset failed, throw an exception - if( dataset_id < 0 ) - throwException("createDataSet", "H5Dcreate2 failed"); - - // No failure, create and return the DataSet object - DataSet dataset; - f_DataSet_setId(&dataset, dataset_id); - return( dataset ); -} - -//-------------------------------------------------------------------------- -// Function: Group::createDataSet -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -DataSet Group::createDataSet( const H5std_string& name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist ) const -{ - //cerr << "createDataSet( const H5std_string& name" << endl; - return( createDataSet( name.c_str(), data_type, data_space, create_plist )); -} - -//-------------------------------------------------------------------------- -// Function: Group::openDataSet -///\brief Opens an existing dataset at this location. -///\param name - IN: Name of the dataset to open -///\return DataSet instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -DataSet Group::openDataSet( const char* name ) const -{ - // Call C function H5Dopen2 to open the specified dataset, giving - // the location id and the dataset's name - hid_t dataset_id = H5Dopen2(getId(), name, H5P_DEFAULT ); - - // If the dataset's opening failed, throw an exception - if(dataset_id < 0) - throwException("openDataSet", "H5Dopen2 failed"); - - // No failure, create and return the DataSet object - DataSet dataset; - f_DataSet_setId(&dataset, dataset_id); - return( dataset ); -} - -//-------------------------------------------------------------------------- -// Function: Group::openDataSet -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -DataSet Group::openDataSet( const H5std_string& name ) const -{ - return( openDataSet( name.c_str() )); -} - -//-------------------------------------------------------------------------- -// Function: Group::link -///\brief Creates a link of the specified type from \a new_name to -/// \a curr_name. -///\param link_type - IN: Link type; possible values are -/// \li \c H5G_LINK_HARD -/// \li \c H5G_LINK_SOFT -///\param curr_name - IN: Name of the existing object if link is a hard -/// link; can be anything for the soft link -///\param new_name - IN: New name for the object -///\exception H5::FileIException or H5::GroupIException -///\par Description -/// Note that both names are interpreted relative to the -/// specified location. -/// For information on creating hard link and soft link, please -/// refer to the C layer Reference Manual at: -/// http://hdfgroup.org/HDF5/doc/RM/RM_H5L.html#Link-CreateHard and -/// http://hdfgroup.org/HDF5/doc/RM/RM_H5L.html#Link-CreateSoft -// Programmer Binh-Minh Ribler - 2000 -// Modification -// 2007: QAK modified to use H5L APIs - BMR -//-------------------------------------------------------------------------- -void Group::link( H5L_type_t link_type, const char* curr_name, const char* new_name ) const -{ - herr_t ret_value = -1; - - switch(link_type) { - case H5L_TYPE_HARD: - ret_value = H5Lcreate_hard(getId(), curr_name, H5L_SAME_LOC, new_name, H5P_DEFAULT, H5P_DEFAULT ); - break; - - case H5L_TYPE_SOFT: - ret_value = H5Lcreate_soft( curr_name,getId(), new_name, H5P_DEFAULT, H5P_DEFAULT ); - break; - - case H5L_TYPE_ERROR: - case H5L_TYPE_EXTERNAL: - case H5L_TYPE_MAX: - default: - throwException("link", "unknown link type"); - break; - } /* end switch */ - - if( ret_value < 0 ) - throwException("link", "creating link failed"); -} - -//-------------------------------------------------------------------------- -// Function: Group::link -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a curr_name and \a new_name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -void Group::link( H5L_type_t link_type, const H5std_string& curr_name, const H5std_string& new_name ) const -{ - link( link_type, curr_name.c_str(), new_name.c_str() ); -} - -//-------------------------------------------------------------------------- -// Function: Group::unlink -///\brief Removes the specified name at this location. -///\param name - IN: Name of the object to be removed -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -// Modification -// 2007: QAK modified to use H5L APIs - BMR -//-------------------------------------------------------------------------- -void Group::unlink( const char* name ) const -{ - herr_t ret_value = H5Ldelete(getId(), name, H5P_DEFAULT ); - if( ret_value < 0 ) - throwException("unlink", "H5Ldelete failed"); -} - -//-------------------------------------------------------------------------- -// Function: Group::unlink -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -void Group::unlink( const H5std_string& name ) const -{ - unlink( name.c_str() ); -} - -//-------------------------------------------------------------------------- -// Function: Group::move -///\brief Renames an object at this location. -///\param src - IN: Object's original name -///\param dst - IN: Object's new name -///\exception H5::FileIException or H5::GroupIException -///\note -/// Exercise care in moving groups as it is possible to render -/// data in a file inaccessible with Group::move. Please refer -/// to the Group Interface in the HDF5 User's Guide for details at: -/// https://www.hdfgroup.org/HDF5/doc/UG/HDF5_Users_Guide-Responsive%20HTML5/index.html#t=HDF5_Users_Guide%2FGroups%2FHDF5_Groups.htm -// Programmer Binh-Minh Ribler - 2000 -// Modification -// 2007: QAK modified to use H5L APIs - BMR -//-------------------------------------------------------------------------- -void Group::move( const char* src, const char* dst ) const -{ - herr_t ret_value = H5Lmove(getId(), src, H5L_SAME_LOC, dst, H5P_DEFAULT, H5P_DEFAULT ); - if( ret_value < 0 ) - throwException("move", "H5Lmove failed"); -} - -//-------------------------------------------------------------------------- -// Function: Group::move -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a src and \a dst. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -void Group::move( const H5std_string& src, const H5std_string& dst ) const -{ - move( src.c_str(), dst.c_str() ); -} - -#ifndef H5_NO_DEPRECATED_SYMBOLS -//-------------------------------------------------------------------------- -// Function: Group::getObjinfo -///\brief Returns information about an object. -///\param name - IN: Name of the object -///\param follow_link - IN: Link flag -///\param statbuf - OUT: Buffer to return information about the object -///\exception H5::FileIException or H5::GroupIException -///\par Description -/// For more information, please refer to the C layer Reference -/// Manual at: -/// http://www.hdfgroup.org/HDF5/doc/RM/RM_H5G.html#Group-GetObjinfo -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -void Group::getObjinfo( const char* name, hbool_t follow_link, H5G_stat_t& statbuf ) const -{ - herr_t ret_value = H5Gget_objinfo(getId(), name, follow_link, &statbuf ); - if( ret_value < 0 ) - throwException("getObjinfo", "H5Gget_objinfo failed"); -} - -//-------------------------------------------------------------------------- -// Function: Group::getObjinfo -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -void Group::getObjinfo( const H5std_string& name, hbool_t follow_link, H5G_stat_t& statbuf ) const -{ - getObjinfo( name.c_str(), follow_link, statbuf ); -} - -//-------------------------------------------------------------------------- -// Function: Group::getObjinfo -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above functions in that it doesn't have -/// the paramemter \a follow_link. -// Programmer Binh-Minh Ribler - Nov, 2005 -// Note: need to modify to use H5Oget_info and H5Lget_info - BMR -//-------------------------------------------------------------------------- -void Group::getObjinfo( const char* name, H5G_stat_t& statbuf ) const -{ - herr_t ret_value = H5Gget_objinfo(getId(), name, 0, &statbuf ); - if( ret_value < 0 ) - throwException("getObjinfo", "H5Gget_objinfo failed"); -} - -//-------------------------------------------------------------------------- -// Function: Group::getObjinfo -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - Nov, 2005 -//-------------------------------------------------------------------------- -void Group::getObjinfo( const H5std_string& name, H5G_stat_t& statbuf ) const -{ - getObjinfo( name.c_str(), statbuf ); -} -#endif /* H5_NO_DEPRECATED_SYMBOLS */ - -//-------------------------------------------------------------------------- -// Function: Group::getLinkval -///\brief Returns the name of the object that the symbolic link points to. -///\param name - IN: Symbolic link to the object -///\param size - IN: Maximum number of characters of value to be returned -///\return Name of the object -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -H5std_string Group::getLinkval( const char* name, size_t size ) const -{ - H5L_info_t linkinfo; - char *value_C; // value in C string - size_t val_size = size; - H5std_string value = ""; - herr_t ret_value; - - // if user doesn't provide buffer size, determine it - if (size == 0) - { - ret_value = H5Lget_info(getLocId(), name, &linkinfo, H5P_DEFAULT); - if( ret_value < 0 ) - throwException("getLinkval", "H5Lget_info to find buffer size failed"); - - val_size = linkinfo.u.val_size; - } - - // if link has value, retrieve the value, otherwise, return null string - if (val_size > 0) - { - value_C = new char[val_size+1]; // temporary C-string for C API - HDmemset(value_C, 0, val_size+1); // clear buffer - - ret_value = H5Lget_val(getLocId(), name, value_C, val_size, H5P_DEFAULT); - if( ret_value < 0 ) - { - delete []value_C; - throwException("getLinkval", "H5Lget_val failed"); - } - - value = H5std_string(value_C); - delete []value_C; - } - return(value); -} - -//-------------------------------------------------------------------------- -// Function: Group::getLinkval -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -H5std_string Group::getLinkval( const H5std_string& name, size_t size ) const -{ - return( getLinkval( name.c_str(), size )); -} - -//-------------------------------------------------------------------------- -// Function: Group::mount -///\brief Mounts the file \a child onto this group. -///\param name - IN: Name of the group -///\param child - IN: File to mount -///\param plist - IN: Property list to use -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2014 (original 2000) -//-------------------------------------------------------------------------- -void Group::mount(const char* name, const H5File& child, const PropList& plist ) const -{ - // Obtain identifiers for C API - hid_t plist_id = plist.getId(); - hid_t child_id = child.getId(); - - // Call C routine H5Fmount to do the mouting - herr_t ret_value = H5Fmount(getId(), name, child_id, plist_id ); - - // Raise exception if H5Fmount returns negative value - if( ret_value < 0 ) - throwException("mount", "H5Fmount failed"); -} - -//-------------------------------------------------------------------------- -// Function: Group::mount -// Purpose This is an overloaded member function, kept for backward -// compatibility. It differs from the above function in that it -// misses const's. This wrapper will be removed in future release. -// Param name - IN: Name of the group -// Param child - IN: File to mount -// Param plist - IN: Property list to use -// Exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -// Modification -// Modified to call its replacement. -BMR, 2014/04/16 -// Removed from documentation. -BMR, 2016/03/07 1.8.17 and 1.10.0 -// Removed from code. -BMR, 2016/08/11 1.8.18 and 1.10.1 -//-------------------------------------------------------------------------- -//void Group::mount(const char* name, H5File& child, PropList& plist) const -//{ -// mount(name, child, plist); -//} - -//-------------------------------------------------------------------------- -// Function: Group::mount -///\brief This is an overloaded member function, provided for convenience. -/// It takes an \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -void Group::mount(const H5std_string& name, const H5File& child, const PropList& plist) const -{ - mount(name.c_str(), child, plist); -} - -//-------------------------------------------------------------------------- -// Function: Group::mount -// Purpose This is an overloaded member function, kept for backward -// compatibility. It differs from the above function in that it -// misses const's. This wrapper will be removed in future release. -// Programmer Binh-Minh Ribler - 2014 -// Modification -// Modified to call its replacement. -BMR, 2014/04/16 -// Removed from documentation. -BMR, 2016/03/07 1.8.17 and 1.10.0 -// Removed from code. -BMR, 2016/08/11 1.8.18 and 1.10.1 -//-------------------------------------------------------------------------- -//void Group::mount(const H5std_string& name, H5File& child, PropList& plist) const -//{ -// mount(name.c_str(), child, plist); -//} - -//-------------------------------------------------------------------------- -// Function: Group::unmount -///\brief Unmounts the specified file. -///\param name - IN: Name of the file to unmount -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -void Group::unmount( const char* name ) const -{ - // Call C routine H5Fmount to do the mouting - herr_t ret_value = H5Funmount(getId(), name ); - - // Raise exception if H5Funmount returns negative value - if( ret_value < 0 ) - throwException("unmount", "H5Funmount failed"); -} - -//-------------------------------------------------------------------------- -// Function: Group::unmount -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -void Group::unmount( const H5std_string& name ) const -{ - unmount( name.c_str() ); -} - -//-------------------------------------------------------------------------- -// Function: Group::openDataType -///\brief Opens the named generic datatype at this location. -///\param name - IN: Name of the datatype to open -///\return DataType instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -DataType Group::openDataType( const char* name ) const -{ - // Call C function H5Topen2 to open the named datatype in this group, - // given either the file or group id - hid_t type_id = H5Topen2(getLocId(), name, H5P_DEFAULT); - - // If the datatype's opening failed, throw an exception - if( type_id < 0 ) - throwException("openDataType", "H5Topen2 failed"); - - // No failure, create and return the DataType object - DataType data_type; - f_DataType_setId(&data_type, type_id); - return(data_type); -} - -//-------------------------------------------------------------------------- -// Function: Group::openDataType -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -DataType Group::openDataType( const H5std_string& name ) const -{ - return( openDataType( name.c_str()) ); -} - -//-------------------------------------------------------------------------- -// Function: Group::openArrayType -///\brief Opens the named array datatype at this location. -///\param name - IN: Name of the array datatype to open -///\return ArrayType instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - Jul, 2005 -//-------------------------------------------------------------------------- -ArrayType Group::openArrayType( const char* name ) const -{ - // Call C function H5Topen2 to open the named datatype in this group, - // given either the file or group id - hid_t type_id = H5Topen2(getLocId(), name, H5P_DEFAULT); - - // If the datatype's opening failed, throw an exception - if( type_id < 0 ) - throwException("openArrayType", "H5Topen2 failed"); - - // No failure, create and return the ArrayType object - ArrayType array_type; - f_DataType_setId(&array_type, type_id); - return(array_type); -} - -//-------------------------------------------------------------------------- -// Function: Group::openArrayType -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - Jul, 2005 -//-------------------------------------------------------------------------- -ArrayType Group::openArrayType( const H5std_string& name ) const -{ - return( openArrayType( name.c_str()) ); -} - -//-------------------------------------------------------------------------- -// Function: Group::openCompType -///\brief Opens the named compound datatype at this location. -///\param name - IN: Name of the compound datatype to open -///\return CompType instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -CompType Group::openCompType( const char* name ) const -{ - // Call C function H5Topen2 to open the named datatype in this group, - // given either the file or group id - hid_t type_id = H5Topen2(getLocId(), name, H5P_DEFAULT); - - // If the datatype's opening failed, throw an exception - if( type_id < 0 ) - throwException("openCompType", "H5Topen2 failed"); - - // No failure, create and return the CompType object - CompType comp_type; - f_DataType_setId(&comp_type, type_id); - return(comp_type); -} - -//-------------------------------------------------------------------------- -// Function: Group::openCompType -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -CompType Group::openCompType( const H5std_string& name ) const -{ - return( openCompType( name.c_str()) ); -} - -//-------------------------------------------------------------------------- -// Function: Group::openEnumType -///\brief Opens the named enumeration datatype at this location. -///\param name - IN: Name of the enumeration datatype to open -///\return EnumType instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -EnumType Group::openEnumType( const char* name ) const -{ - // Call C function H5Topen2 to open the named datatype in this group, - // given either the file or group id - hid_t type_id = H5Topen2(getLocId(), name, H5P_DEFAULT); - - // If the datatype's opening failed, throw an exception - if( type_id < 0 ) - throwException("openEnumType", "H5Topen2 failed"); - - // No failure, create and return the EnumType object - EnumType enum_type; - f_DataType_setId(&enum_type, type_id); - return(enum_type); -} - -//-------------------------------------------------------------------------- -// Function: Group::openEnumType -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -EnumType Group::openEnumType( const H5std_string& name ) const -{ - return( openEnumType( name.c_str()) ); -} - -//-------------------------------------------------------------------------- -// Function: Group::openIntType -///\brief Opens the named integer datatype at this location. -///\param name - IN: Name of the integer datatype to open -///\return IntType instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -IntType Group::openIntType( const char* name ) const -{ - // Call C function H5Topen2 to open the named datatype in this group, - // given either the file or group id - hid_t type_id = H5Topen2(getLocId(), name, H5P_DEFAULT); - - // If the datatype's opening failed, throw an exception - if( type_id < 0 ) - throwException("openIntType", "H5Topen2 failed"); - - // No failure, create and return the IntType object - IntType int_type; - f_DataType_setId(&int_type, type_id); - return(int_type); -} - -//-------------------------------------------------------------------------- -// Function: Group::openIntType -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -IntType Group::openIntType( const H5std_string& name ) const -{ - return( openIntType( name.c_str()) ); -} - -//-------------------------------------------------------------------------- -// Function: Group::openFloatType -///\brief Opens the named floating-point datatype at this location. -///\param name - IN: Name of the floating-point datatype to open -///\return FloatType instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -FloatType Group::openFloatType( const char* name ) const -{ - // Call C function H5Topen2 to open the named datatype in this group, - // given either the file or group id - hid_t type_id = H5Topen2(getLocId(), name, H5P_DEFAULT); - - // If the datatype's opening failed, throw an exception - if( type_id < 0 ) - throwException("openFloatType", "H5Topen2 failed"); - - // No failure, create and return the FloatType object - FloatType float_type; - f_DataType_setId(&float_type, type_id); - return(float_type); -} - -//-------------------------------------------------------------------------- -// Function: Group::openFloatType -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -FloatType Group::openFloatType( const H5std_string& name ) const -{ - return( openFloatType( name.c_str()) ); -} - -//-------------------------------------------------------------------------- -// Function: Group::openStrType -///\brief Opens the named string datatype at this location. -///\param name - IN: Name of the string datatype to open -///\return StrType instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -StrType Group::openStrType( const char* name ) const -{ - // Call C function H5Topen2 to open the named datatype in this group, - // given either the file or group id - hid_t type_id = H5Topen2(getLocId(), name, H5P_DEFAULT); - - // If the datatype's opening failed, throw an exception - if( type_id < 0 ) - throwException("openStrType", "H5Topen2 failed"); - - // No failure, create and return the StrType object - StrType str_type; - f_DataType_setId(&str_type, type_id); - return(str_type); -} - -//-------------------------------------------------------------------------- -// Function: Group::openStrType -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -StrType Group::openStrType( const H5std_string& name ) const -{ - return( openStrType( name.c_str()) ); -} - -//-------------------------------------------------------------------------- -// Function: Group::openVarLenType -///\brief Opens the named variable length datatype at this location. -///\param name - IN: Name of the variable length datatype to open -///\return VarLenType instance -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - Jul, 2005 -//-------------------------------------------------------------------------- -VarLenType Group::openVarLenType( const char* name ) const -{ - // Call C function H5Topen2 to open the named datatype in this group, - // given either the file or group id - hid_t type_id = H5Topen2(getLocId(), name, H5P_DEFAULT); - - // If the datatype's opening failed, throw an exception - if( type_id < 0 ) - throwException("openVarLenType", "H5Topen2 failed"); - - // No failure, create and return the VarLenType object - VarLenType varlen_type; - f_DataType_setId(&varlen_type, type_id); - return(varlen_type); -} - -//-------------------------------------------------------------------------- -// Function: Group::openVarLenType -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - Jul, 2005 -//-------------------------------------------------------------------------- -VarLenType Group::openVarLenType( const H5std_string& name ) const -{ - return( openVarLenType( name.c_str()) ); -} - -#ifndef H5_NO_DEPRECATED_SYMBOLS -//-------------------------------------------------------------------------- -// Function: Group::iterateElems -///\brief Iterates a user's function over the entries of a group. -///\param name - IN : Name of group to iterate over -///\param idx - IN/OUT: Starting (IN) and ending (OUT) entry indices -///\param op - IN : User's function to operate on each entry -///\param op_data - IN/OUT: Data associated with the operation -///\return The return value of the first operator that returns non-zero, -/// or zero if all members were processed with no operator -/// returning non-zero. -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -int Group::iterateElems( const char* name, int *idx, H5G_iterate_t op , void* op_data ) -{ - int ret_value = H5Giterate(getId(), name, idx, op, op_data ); - if( ret_value < 0 ) - { - throwException("iterateElems", "H5Giterate failed"); - } - return( ret_value ); -} - -//-------------------------------------------------------------------------- -// Function: Group::iterateElems -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - 2000 -//-------------------------------------------------------------------------- -int Group::iterateElems( const H5std_string& name, int *idx, H5G_iterate_t op , void* op_data ) -{ - return( iterateElems( name.c_str(), idx, op, op_data )); -} -#endif /* H5_NO_DEPRECATED_SYMBOLS */ - -//-------------------------------------------------------------------------- -// Function: Group::getNumObjs -///\brief Returns the number of objects in this group. -///\return Number of objects -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - January, 2003 -//-------------------------------------------------------------------------- -hsize_t Group::getNumObjs() const -{ - H5G_info_t ginfo; /* Group information */ - - herr_t ret_value = H5Gget_info(getLocId(), &ginfo); - if(ret_value < 0) - throwException("getNumObjs", "H5Gget_info failed"); - return (ginfo.nlinks); -} - -//-------------------------------------------------------------------------- -// Function: Group::getObjnameByIdx -///\brief Returns the name of an object in this group, given the -/// object's index. -///\param idx - IN: Transient index of the object -///\return Object name -///\exception H5::FileIException or H5::GroupIException -///\par Description -/// The value of idx can be any nonnegative number less than the -/// total number of objects in the group, which is returned by -/// the function \c Group::getNumObjs. Note that this is a -/// transient index; thus, an object may have a different index -/// each time the group is opened. -// Programmer Binh-Minh Ribler - Mar, 2005 -//-------------------------------------------------------------------------- -H5std_string Group::getObjnameByIdx(hsize_t idx) const -{ - // call H5Lget_name_by_idx with name as NULL to get its length - ssize_t name_len = H5Lget_name_by_idx(getLocId(), ".", H5_INDEX_NAME, H5_ITER_INC, idx, NULL, 0, H5P_DEFAULT); - if(name_len < 0) - throwException("getObjnameByIdx", "H5Lget_name_by_idx failed"); - - // now, allocate C buffer to get the name - char* name_C = new char[name_len+1]; - HDmemset(name_C, 0, name_len+1); // clear buffer - - name_len = H5Lget_name_by_idx(getLocId(), ".", H5_INDEX_NAME, H5_ITER_INC, idx, name_C, name_len+1, H5P_DEFAULT); - - if (name_len < 0) - { - delete []name_C; - throwException("getObjnameByIdx", "H5Lget_name_by_idx failed"); - } - - // clean up and return the string - H5std_string name = H5std_string(name_C); - delete []name_C; - return (name); -} - -//-------------------------------------------------------------------------- -// Function: Group::getObjnameByIdx -///\brief Retrieves the name of an object in this group, given the -/// object's index. -///\param idx - IN: Transient index of the object -///\param name - IN/OUT: Retrieved name of the object -///\param size - IN: Length to retrieve -///\return Actual size of the object name or 0, if object has no name -///\exception H5::FileIException or H5::GroupIException -///\par Description -/// The value of idx can be any nonnegative number less than the -/// total number of objects in the group, which is returned by -/// the function \c Group::getNumObjs. Note that this is a -/// transient index; thus, an object may have a different index -/// each time the group is opened. -// Programmer Binh-Minh Ribler - January, 2003 -//-------------------------------------------------------------------------- -ssize_t Group::getObjnameByIdx(hsize_t idx, char* name, size_t size) const -{ - ssize_t name_len = H5Lget_name_by_idx(getLocId(), ".", H5_INDEX_NAME, H5_ITER_INC, idx, name, size, H5P_DEFAULT); - if(name_len < 0) - throwException("getObjnameByIdx", "H5Lget_name_by_idx failed"); - - return (name_len); -} - -//-------------------------------------------------------------------------- -// Function: Group::getObjnameByIdx -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function in that it takes an -/// \c H5std_string for \a name. -// Programmer Binh-Minh Ribler - January, 2003 -//-------------------------------------------------------------------------- -ssize_t Group::getObjnameByIdx(hsize_t idx, H5std_string& name, size_t size) const -{ - char* name_C = new char[size+1]; // temporary C-string for object name - HDmemset(name_C, 0, size+1); // clear buffer - - // call overloaded function to get the name - ssize_t name_len = getObjnameByIdx(idx, name_C, size+1); - if(name_len < 0) - { - delete []name_C; - throwException("getObjnameByIdx", "H5Lget_name_by_idx failed"); - } - - // clean up and return the string - name = H5std_string(name_C); - delete []name_C; - return (name_len); -} - -//-------------------------------------------------------------------------- -// Function: Group::childObjType -///\brief Returns the type of an object in this file/group, given the -/// object's name. -///\param objname - IN: Name of the object -///\return Object type, which can have the following values for group, -/// dataset, and named datatype -/// \li \c H5O_TYPE_GROUP -/// \li \c H5O_TYPE_DATASET -/// \li \c H5O_TYPE_NAMED_DATATYPE -/// Refer to the C API documentation for more details: -/// http://www.hdfgroup.org/HDF5/doc/RM/RM_H5O.html#Object-GetInfo -///\exception H5::FileIException or H5::GroupIException -/// Exception will be thrown when: -/// - an error returned by the C API -/// - object type is not one of the valid values above -// Programmer Binh-Minh Ribler - April, 2014 -//-------------------------------------------------------------------------- -H5O_type_t Group::childObjType(const char* objname) const -{ - H5O_info_t objinfo; - H5O_type_t objtype = H5O_TYPE_UNKNOWN; - - // Use C API to get information of the object - herr_t ret_value = H5Oget_info_by_name(getLocId(), objname, &objinfo, H5P_DEFAULT); - - // Throw exception if C API returns failure - if (ret_value < 0) - throwException("childObjType", "H5Oget_info_by_name failed"); - // Return a valid type or throw an exception for unknown type - else - switch (objinfo.type) - { - case H5O_TYPE_GROUP: - case H5O_TYPE_DATASET: - case H5O_TYPE_NAMED_DATATYPE: - objtype = objinfo.type; - break; - case H5O_TYPE_UNKNOWN: - case H5O_TYPE_NTYPES: - default: - throwException("childObjType", "Unknown type of object"); - } - return(objtype); -} - -//-------------------------------------------------------------------------- -// Function: Group::childObjType -///\brief This is an overloaded member function, provided for convenience. -/// It takes an \a H5std_string for the object's name. -///\brief Returns the type of an object in this group, given the -/// object's name. -///\param objname - IN: Name of the object (H5std_string&) -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - April, 2014 -//-------------------------------------------------------------------------- -H5O_type_t Group::childObjType(const H5std_string& objname) const -{ - // Use overloaded function - H5O_type_t objtype = childObjType(objname.c_str()); - return(objtype); -} - -//-------------------------------------------------------------------------- -// Function: Group::childObjType -///\brief Returns the type of an object in this file/group, given the -/// object's index and its type and order. -///\param index - IN: Position of the object -///\param index_type - IN: Type of the index, default to H5_INDEX_NAME -///\param order - IN: Traversing order, default to H5_ITER_INC -///\param objname - IN: Name of the object, default to "." -///\return Object type, which can have the following values for group, -/// dataset, and named datatype -/// \li \c H5O_TYPE_GROUP -/// \li \c H5O_TYPE_DATASET -/// \li \c H5O_TYPE_NAMED_DATATYPE -/// Refer to the C API documentation for more details: -/// http://www.hdfgroup.org/HDF5/doc/RM/RM_H5O.html#Object-GetInfo -///\exception H5::FileIException or H5::GroupIException -/// Exception will be thrown when: -/// - an error returned by the C API -/// - object type is not one of the valid values above -// Developer's Notes: -// - this overload uses H5Oget_info_by_idx instead of H5Oget_info_by_name -// like the previous childObjType() -// - index is the required argument so, first -// - objname is last because it's more likely the location is already -// fully specified -// - Leave property list out for now because C API is not using it, it -// can be added later when needed. -// Programmer Binh-Minh Ribler - April, 2014 -//-------------------------------------------------------------------------- -H5O_type_t Group::childObjType(hsize_t index, H5_index_t index_type, H5_iter_order_t order, const char* objname) const -{ - herr_t ret_value; - H5O_info_t objinfo; - H5O_type_t objtype = H5O_TYPE_UNKNOWN; - - // Use C API to get information of the object - ret_value = H5Oget_info_by_idx(getLocId(), objname, index_type, order, index, &objinfo, H5P_DEFAULT); - - // Throw exception if C API returns failure - if (ret_value < 0) - throwException("childObjType", "H5Oget_info_by_idx failed"); - // Return a valid type or throw an exception for unknown type - else - switch (objinfo.type) - { - case H5O_TYPE_GROUP: - case H5O_TYPE_DATASET: - case H5O_TYPE_NAMED_DATATYPE: - objtype = objinfo.type; - break; - case H5O_TYPE_UNKNOWN: - case H5O_TYPE_NTYPES: - default: - throwException("childObjType", "Unknown type of object"); - } - return(objtype); -} - -//-------------------------------------------------------------------------- -// Function: Group::childObjVersion -///\brief Returns the object header version of an object in this file/group, -/// given the object's name. -///\param objname - IN: Name of the object -///\return Object version, which can have the following values: -/// \li \c H5O_VERSION_1 -/// \li \c H5O_VERSION_2 -///\exception H5::FileIException or H5::GroupIException -/// Exception will be thrown when: -/// - an error returned by the C API -/// - version number is not one of the valid values above -// Programmer Binh-Minh Ribler - April, 2014 -//-------------------------------------------------------------------------- -unsigned Group::childObjVersion(const char* objname) const -{ - H5O_info_t objinfo; - unsigned version = 0; - - // Use C API to get information of the object - herr_t ret_value = H5Oget_info_by_name(getLocId(), objname, &objinfo, H5P_DEFAULT); - - // Throw exception if C API returns failure - if (ret_value < 0) - throwException("childObjVersion", "H5Oget_info_by_name failed"); - // Return a valid version or throw an exception for invalid value - else - { - version = objinfo.hdr.version; - if (version != H5O_VERSION_1 && version != H5O_VERSION_2) - throwException("childObjVersion", "Invalid version for object"); - } - return(version); -} - -//-------------------------------------------------------------------------- -// Function: Group::childObjVersion -///\brief This is an overloaded member function, provided for convenience. -/// It takes an \a H5std_string for the object's name. -///\brief Returns the type of an object in this group, given the -/// object's name. -///\param objname - IN: Name of the object (H5std_string&) -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - April, 2014 -//-------------------------------------------------------------------------- -unsigned Group::childObjVersion(const H5std_string& objname) const -{ - // Use overloaded function - unsigned version = childObjVersion(objname.c_str()); - return(version); -} - -#ifndef H5_NO_DEPRECATED_SYMBOLS -#ifndef DOXYGEN_SHOULD_SKIP_THIS -//-------------------------------------------------------------------------- -// Function: Group::getObjTypeByIdx -///\brief Returns the type of an object in this group, given the -/// object's index. -///\param idx - IN: Transient index of the object -///\return Object type -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - January, 2003 -//-------------------------------------------------------------------------- -H5G_obj_t Group::getObjTypeByIdx(hsize_t idx) const -{ - H5G_obj_t obj_type = H5Gget_objtype_by_idx(getLocId(), idx); - if (obj_type == H5G_UNKNOWN) - throwException("getObjTypeByIdx", "H5Gget_objtype_by_idx failed"); - - return (obj_type); -} - -//-------------------------------------------------------------------------- -// Function: Group::getObjTypeByIdx -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function because it also provides -/// the returned object type in text (char*) -///\param idx - IN: Transient index of the object -///\param type_name - OUT: Object type in text -///\return Object type -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - May, 2010 -// Modification -// Modified to use the other function. -BMR, 2016/03/07 -//-------------------------------------------------------------------------- -H5G_obj_t Group::getObjTypeByIdx(hsize_t idx, char* type_name) const -{ - H5std_string stype_name(type_name); - return(getObjTypeByIdx(idx, stype_name)); -} -//-------------------------------------------------------------------------- -// Function: Group::getObjTypeByIdx -///\brief This is an overloaded member function, provided for convenience. -/// It differs from the above function because it also provides -/// the returned object type in text (H5std_string&) -///\param idx - IN: Transient index of the object -///\param type_name - OUT: Object type in text -///\return Object type -///\exception H5::FileIException or H5::GroupIException -// Programmer Binh-Minh Ribler - January, 2003 -//-------------------------------------------------------------------------- -H5G_obj_t Group::getObjTypeByIdx(hsize_t idx, H5std_string& type_name) const -{ - H5G_obj_t obj_type = H5Gget_objtype_by_idx(getLocId(), idx); - switch (obj_type) - { - case H5G_LINK: type_name = H5std_string("symbolic link"); break; - case H5G_GROUP: type_name = H5std_string("group"); break; - case H5G_DATASET: type_name = H5std_string("dataset"); break; - case H5G_TYPE: type_name = H5std_string("datatype"); break; - case H5G_UNKNOWN: - case H5G_UDLINK: - case H5G_RESERVED_5: - case H5G_RESERVED_6: - case H5G_RESERVED_7: - default: - throwException("getObjTypeByIdx", "H5Gget_objtype_by_idx failed"); - } - return (obj_type); -} - -#endif // DOXYGEN_SHOULD_SKIP_THIS -#endif /* H5_NO_DEPRECATED_SYMBOLS */ - -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -//-------------------------------------------------------------------------- -// Function: f_DataType_setId - friend -// Purpose: This function is friend to class H5::DataType so that it -// can set DataType::id in order to work around a problem -// described in the JIRA issue HDFFV-7947. -// Applications shouldn't need to use it. -// param dtype - IN/OUT: DataType object to be changed -// param new_id - IN: New id to set -// Programmer Binh-Minh Ribler - 2015 -//-------------------------------------------------------------------------- -void f_DataType_setId(DataType* dtype, hid_t new_id) -{ - dtype->p_setId(new_id); -} - -//-------------------------------------------------------------------------- -// Function: f_DataSet_setId - friend -// Purpose: This function is friend to class H5::DataSet so that it -// can set DataSet::id in order to work around a problem -// described in the JIRA issue HDFFV-7947. -// Applications shouldn't need to use it. -// param dset - IN/OUT: DataSet object to be changed -// param new_id - IN: New id to set -// Programmer Binh-Minh Ribler - 2015 -//-------------------------------------------------------------------------- -void f_DataSet_setId(DataSet* dset, hid_t new_id) -{ - dset->p_setId(new_id); -} - -#endif // DOXYGEN_SHOULD_SKIP_THIS - #ifndef H5_NO_NAMESPACE } // end namespace #endif diff --git a/c++/src/H5Group.h b/c++/src/H5Group.h index e8527d8..f1dfce1 100644 --- a/c++/src/H5Group.h +++ b/c++/src/H5Group.h @@ -47,126 +47,6 @@ class H5_DLLCPP Group : public H5Object { Group(const char* name); Group(const H5std_string& name); -// From CommonFG - // Creates a new group at this location which can be a file - // or another group. - Group createGroup(const char* name, size_t size_hint = 0) const; - Group createGroup(const H5std_string& name, size_t size_hint = 0) const; - - // Opens an existing group in a location which can be a file - // or another group. - Group openGroup(const char* name) const; - Group openGroup(const H5std_string& name) const; - - // Creates a new dataset in this group. - DataSet createDataSet(const char* name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist = DSetCreatPropList::DEFAULT) const; - DataSet createDataSet(const H5std_string& name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist = DSetCreatPropList::DEFAULT) const; - - // Opens an existing dataset at this location. - DataSet openDataSet(const char* name) const; - DataSet openDataSet(const H5std_string& name) const; - - // Returns the value of a symbolic link. - H5std_string getLinkval(const char* link_name, size_t size=0) const; - H5std_string getLinkval(const H5std_string& link_name, size_t size=0) const; - - // Returns the number of objects in this group. - hsize_t getNumObjs() const; - - // Retrieves the name of an object in this group, given the - // object's index. - H5std_string getObjnameByIdx(hsize_t idx) const; - ssize_t getObjnameByIdx(hsize_t idx, char* name, size_t size) const; - ssize_t getObjnameByIdx(hsize_t idx, H5std_string& name, size_t size) const; - - // Retrieves the type of an object in this file or group, given the - // object's name - H5O_type_t childObjType(const H5std_string& objname) const; - H5O_type_t childObjType(const char* objname) const; - H5O_type_t childObjType(hsize_t index, H5_index_t index_type=H5_INDEX_NAME, H5_iter_order_t order=H5_ITER_INC, const char* objname=".") const; - - // Returns the object header version of an object in this file or group, - // given the object's name. - unsigned childObjVersion(const char* objname) const; - unsigned childObjVersion(const H5std_string& objname) const; - -#ifndef H5_NO_DEPRECATED_SYMBOLS - // Returns the type of an object in this group, given the - // object's index. - H5G_obj_t getObjTypeByIdx(hsize_t idx) const; - H5G_obj_t getObjTypeByIdx(hsize_t idx, char* type_name) const; - H5G_obj_t getObjTypeByIdx(hsize_t idx, H5std_string& type_name) const; - - // Returns information about an HDF5 object, given by its name, - // at this location. - void getObjinfo(const char* name, hbool_t follow_link, H5G_stat_t& statbuf) const; - void getObjinfo(const H5std_string& name, hbool_t follow_link, H5G_stat_t& statbuf) const; - void getObjinfo(const char* name, H5G_stat_t& statbuf) const; - void getObjinfo(const H5std_string& name, H5G_stat_t& statbuf) const; - - // Iterates over the elements of this group - not implemented in - // C++ style yet. - int iterateElems(const char* name, int *idx, H5G_iterate_t op, void *op_data); - int iterateElems(const H5std_string& name, int *idx, H5G_iterate_t op, void *op_data); -#endif /* H5_NO_DEPRECATED_SYMBOLS */ - - // Creates a link of the specified type from new_name to current_name; - // both names are interpreted relative to the specified location id. - void link(H5L_type_t link_type, const char* curr_name, const char* new_name) const; - void link(H5L_type_t link_type, const H5std_string& curr_name, const H5std_string& new_name) const; - - // Removes the specified name at this location. - void unlink(const char* name) const; - void unlink(const H5std_string& name) const; - - // Mounts the file 'child' onto this location. - void mount(const char* name, const H5File& child, const PropList& plist) const; - //void mount(const char* name, H5File& child, PropList& plist) const; // removed from 1.8.18 and 1.10.1 - void mount(const H5std_string& name, const H5File& child, const PropList& plist) const; - //void mount(const H5std_string& name, H5File& child, PropList& plist) const; // removed from 1.8.18 and 1.10.1 - - // Unmounts the file named 'name' from this parent location. - void unmount(const char* name) const; - void unmount(const H5std_string& name) const; - - // Renames an object at this location. - void move(const char* src, const char* dst) const; - void move(const H5std_string& src, const H5std_string& dst) const; - - // Opens a generic named datatype in this location. - DataType openDataType(const char* name) const; - DataType openDataType(const H5std_string& name) const; - - // Opens a named array datatype in this location. - ArrayType openArrayType(const char* name) const; - ArrayType openArrayType(const H5std_string& name) const; - - // Opens a named compound datatype in this location. - CompType openCompType(const char* name) const; - CompType openCompType(const H5std_string& name) const; - - // Opens a named enumeration datatype in this location. - EnumType openEnumType(const char* name) const; - EnumType openEnumType(const H5std_string& name) const; - - // Opens a named integer datatype in this location. - IntType openIntType(const char* name) const; - IntType openIntType(const H5std_string& name) const; - - // Opens a named floating-point datatype in this location. - FloatType openFloatType(const char* name) const; - FloatType openFloatType(const H5std_string& name) const; - - // Opens a named string datatype in this location. - StrType openStrType(const char* name) const; - StrType openStrType(const H5std_string& name) const; - - // Opens a named variable length datatype in this location. - VarLenType openVarLenType(const char* name) const; - VarLenType openVarLenType(const H5std_string& name) const; - -// end from CommonFG - // Close this group. virtual void close(); diff --git a/c++/src/H5IntType.cpp b/c++/src/H5IntType.cpp index 780e44d..f934d26 100644 --- a/c++/src/H5IntType.cpp +++ b/c++/src/H5IntType.cpp @@ -19,13 +19,13 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" +#include "H5DxferProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5DataType.h" #include "H5AbstractDs.h" -#include "H5DxferProp.h" #include "H5DataSpace.h" #include "H5AtomType.h" #include "H5IntType.h" diff --git a/c++/src/H5Library.cpp b/c++/src/H5Library.cpp index 30f68e2..09e0f7e 100644 --- a/c++/src/H5Library.cpp +++ b/c++/src/H5Library.cpp @@ -25,10 +25,10 @@ #include "H5FcreatProp.h" #include "H5OcreatProp.h" #include "H5DxferProp.h" +#include "H5DcreatProp.h" #include "H5Location.h" #include "H5Object.h" #include "H5DataType.h" -#include "H5DcreatProp.h" #include "H5AtomType.h" #include "H5PredType.h" #include "H5DataSpace.h" @@ -82,7 +82,7 @@ void H5Library::close() //-------------------------------------------------------------------------- void H5Library::dontAtExit() { - herr_t ret_value = H5dont_atexit(); + (void)H5dont_atexit(); } //-------------------------------------------------------------------------- diff --git a/c++/src/H5Location.cpp b/c++/src/H5Location.cpp index 4048d94..334389e 100644 --- a/c++/src/H5Location.cpp +++ b/c++/src/H5Location.cpp @@ -19,20 +19,20 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" +#include "H5FaccProp.h" +#include "H5FcreatProp.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" #include "H5DxferProp.h" -#include "H5FaccProp.h" -#include "H5FcreatProp.h" -#include "H5DataType.h" -#include "H5DataSpace.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5AbstractDs.h" -#include "H5Group.h" -#include "H5File.h" +#include "H5DataSpace.h" #include "H5DataSet.h" #include "H5Attribute.h" +#include "H5Group.h" +#include "H5File.h" +#include "H5Alltypes.h" #include "H5private.h" // for HDmemset #ifndef H5_NO_NAMESPACE @@ -658,43 +658,1318 @@ DataSpace H5Location::getRegion(void *ref, H5R_type_t ref_type) const } +// From H5CommonFG.cpp +// Notes with "***Updated" are new and for Group.cpp +// Original notes are from December 2000 +// +// There are a few comments that are common to most of the functions +// defined in this file so they are listed here. +// - getLocId is called by all functions, that call a C API, to get +// the location id, which can be either a file id or a group id. +// This function is pure virtual and it's up to H5File and Group +// to call the right getId() - although, as the structure of the +// library at this time, getId() is basically the IdComponent::getId() +// ***Updated: after the classes are rearranged (HDFFV-9920), functions +// in CommonFG are moved to Group, and they can call getId() +// instead of getLocId(). getLocId() is kept for backward +// compatibility on user applications. Aug 18, 2016 -BMR +// ***Updated: Moving to Group was a mistake, now to H5Location +// Aug 24, 2016 -BMR +// - when a failure returned by the C API, the functions will call +// throwException, which is a pure virtual function and is implemented +// by H5File to throw a FileIException and by Group to throw a +// GroupIException. +// ***Updated: after HDFFV-9920, methods in classes H5Location and Group +// use throwException to distinguish the FileIException and GroupIException. +// CommonFG is no longer used in the library. Aug 18, 2016 -BMR +// ***Note: following the changes in HDFFV-9920, some of the methods could +// throw different exceptions, but for backward-compatibility, throwException +// is kept in those methods as well. Sep 17, 2016 -BMR + //-------------------------------------------------------------------------- -// Function: H5Location destructor -///\brief Noop destructor. +// Function: H5Location::createGroup +///\brief Creates a new group at this location which can be a file +/// or another group. +///\param name - IN: Name of the group to create +///\param size_hint - IN: Indicates the number of bytes to reserve for +/// the names that will appear in the group +///\return Group instance +///\exception H5::FileIException or H5::GroupIException +///\par Description +/// The optional \a size_hint specifies how much file space to +/// reserve for storing the names that will appear in this new +/// group. If a non-positive value is provided for the \a size_hint +/// then a default size is chosen. // Programmer Binh-Minh Ribler - 2000 //-------------------------------------------------------------------------- -H5Location::~H5Location() {} +Group H5Location::createGroup( const char* name, size_t size_hint ) const +{ + // Group creation property list for size hint + hid_t gcpl_id = 0; + + // Set the local heap size hint + if (size_hint > 0) + { + // If the creation of the property list failed, throw an exception + if ((gcpl_id = H5Pcreate(H5P_GROUP_CREATE)) < 0) + throwException("createGroup", "H5Pcreate failed"); + + if (H5Pset_local_heap_size_hint(gcpl_id, size_hint) < 0) { + H5Pclose(gcpl_id); + throwException("createGroup", "H5Pset_local_heap_size_hint failed"); + } + } + + // Call C routine H5Gcreate2 to create the named group, giving the + // location id which can be a file id or a group id + hid_t group_id = H5Gcreate2(getId(), name, H5P_DEFAULT, gcpl_id, H5P_DEFAULT ); + + // Close the group creation property list, if necessary + if(gcpl_id > 0) + H5Pclose(gcpl_id); + + // If the creation of the group failed, throw an exception + if( group_id < 0 ) + throwException("createGroup", "H5Gcreate2 failed"); + + // No failure, create and return the Group object + Group group; + //group.p_setId(group_id); + H5Location *ptr = &group; + ptr->p_setId(group_id); + return( group ); +} //-------------------------------------------------------------------------- -// Function: f_Attribute_setId - friend -// Purpose: This function is friend to class H5::Attribute so that it -// can set Attribute::id in order to work around a problem -// described in the JIRA issue HDFFV-7947. -// Applications shouldn't need to use it. -// param attr - IN/OUT: Attribute object to be changed -// param new_id - IN: New id to set -// Programmer Binh-Minh Ribler - 2015 +// Function: H5Location::createGroup +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 //-------------------------------------------------------------------------- -void f_Attribute_setId(Attribute* attr, hid_t new_id) +Group H5Location::createGroup( const H5std_string& name, size_t size_hint ) const { - attr->p_setId(new_id); + return( createGroup( name.c_str(), size_hint )); } //-------------------------------------------------------------------------- -// Function: f_DataSpace_setId - friend -// Purpose: This function is friend to class H5::DataSpace so that it can -// can set DataSpace::id in order to work around a problem -// described in the JIRA issue HDFFV-7947. -// Applications shouldn't need to use it. -// param dspace - IN/OUT: DataSpace object to be changed -// param new_id - IN: New id to set -// Programmer Binh-Minh Ribler - 2015 +// Function: H5Location::openGroup +///\brief Opens an existing group in a location which can be a file +/// or another group. +///\param name - IN: Name of the group to open +///\return Group instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 //-------------------------------------------------------------------------- -void f_DataSpace_setId(DataSpace* dspace, hid_t new_id) +Group H5Location::openGroup( const char* name ) const { - dspace->p_setId(new_id); + // Call C routine H5Gopen2 to open the named group, giving the + // location id which can be a file id or a group id + hid_t group_id = H5Gopen2(getId(), name, H5P_DEFAULT ); + + // If the opening of the group failed, throw an exception + if( group_id < 0 ) + throwException("openGroup", "H5Gopen2 failed"); + + // No failure, create and return the Group object + Group group; + //group.p_setId(group_id); + H5Location *ptr = &group; + ptr->p_setId(group_id); + return( group ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openGroup +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +Group H5Location::openGroup( const H5std_string& name ) const +{ + return( openGroup( name.c_str() )); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::createDataSet +///\brief Creates a new dataset at this location. +///\param name - IN: Name of the dataset to create +///\param data_type - IN: Datatype of the dataset +///\param data_space - IN: Dataspace for the dataset +///\param create_plist - IN: Creation properly list for the dataset +///\return DataSet instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +DataSet H5Location::createDataSet( const char* name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist ) const +{ + // Obtain identifiers for C API + hid_t type_id = data_type.getId(); + hid_t space_id = data_space.getId(); + hid_t create_plist_id = create_plist.getId(); + + // Call C routine H5Dcreate2 to create the named dataset + hid_t dataset_id = H5Dcreate2(getId(), name, type_id, space_id, H5P_DEFAULT, create_plist_id, H5P_DEFAULT ); + + // If the creation of the dataset failed, throw an exception + if( dataset_id < 0 ) + throwException("createDataSet", "H5Dcreate2 failed"); + + // No failure, create and return the DataSet object + DataSet dataset; + f_DataSet_setId(&dataset, dataset_id); + return( dataset ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::createDataSet +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +DataSet H5Location::createDataSet( const H5std_string& name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist ) const +{ + return( createDataSet( name.c_str(), data_type, data_space, create_plist )); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openDataSet +///\brief Opens an existing dataset at this location. +///\param name - IN: Name of the dataset to open +///\return DataSet instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +DataSet H5Location::openDataSet( const char* name ) const +{ + // Call C function H5Dopen2 to open the specified dataset, giving + // the location id and the dataset's name + hid_t dataset_id = H5Dopen2(getId(), name, H5P_DEFAULT ); + + // If the dataset's opening failed, throw an exception + if(dataset_id < 0) + throwException("openDataSet", "H5Dopen2 failed"); + + // No failure, create and return the DataSet object + DataSet dataset; + f_DataSet_setId(&dataset, dataset_id); + return( dataset ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openDataSet +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +DataSet H5Location::openDataSet( const H5std_string& name ) const +{ + return( openDataSet( name.c_str() )); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::link +///\brief Creates a link of the specified type from \a new_name to +/// \a curr_name. +///\param link_type - IN: Link type; possible values are +/// \li \c H5G_LINK_HARD +/// \li \c H5G_LINK_SOFT +///\param curr_name - IN: Name of the existing object if link is a hard +/// link; can be anything for the soft link +///\param new_name - IN: New name for the object +///\exception H5::FileIException or H5::GroupIException +///\par Description +/// Note that both names are interpreted relative to the +/// specified location. +/// For information on creating hard link and soft link, please +/// refer to the C layer Reference Manual at: +/// http://hdfgroup.org/HDF5/doc/RM/RM_H5L.html#Link-CreateHard and +/// http://hdfgroup.org/HDF5/doc/RM/RM_H5L.html#Link-CreateSoft +// Programmer Binh-Minh Ribler - 2000 +// Modification +// 2007: QAK modified to use H5L APIs - BMR +//-------------------------------------------------------------------------- +void H5Location::link( H5L_type_t link_type, const char* curr_name, const char* new_name ) const +{ + herr_t ret_value = -1; + + switch(link_type) { + case H5L_TYPE_HARD: + ret_value = H5Lcreate_hard(getId(), curr_name, H5L_SAME_LOC, new_name, H5P_DEFAULT, H5P_DEFAULT ); + break; + + case H5L_TYPE_SOFT: + ret_value = H5Lcreate_soft( curr_name,getId(), new_name, H5P_DEFAULT, H5P_DEFAULT ); + break; + + case H5L_TYPE_ERROR: + case H5L_TYPE_EXTERNAL: + case H5L_TYPE_MAX: + default: + throwException("link", "unknown link type"); + break; + } /* end switch */ + + if( ret_value < 0 ) + throwException("link", "creating link failed"); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::link +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a curr_name and \a new_name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +void H5Location::link( H5L_type_t link_type, const H5std_string& curr_name, const H5std_string& new_name ) const +{ + link( link_type, curr_name.c_str(), new_name.c_str() ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::unlink +///\brief Removes the specified name at this location. +///\param name - IN: Name of the object to be removed +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +// Modification +// 2007: QAK modified to use H5L APIs - BMR +//-------------------------------------------------------------------------- +void H5Location::unlink( const char* name ) const +{ + herr_t ret_value = H5Ldelete(getId(), name, H5P_DEFAULT ); + if( ret_value < 0 ) + throwException("unlink", "H5Ldelete failed"); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::unlink +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +void H5Location::unlink( const H5std_string& name ) const +{ + unlink( name.c_str() ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::move +///\brief Renames an object at this location. +///\param src - IN: Object's original name +///\param dst - IN: Object's new name +///\exception H5::FileIException or H5::GroupIException +///\note +/// Exercise care in moving groups as it is possible to render +/// data in a file inaccessible with H5Location::move. Please refer +/// to the Group Interface in the HDF5 User's Guide for details at: +/// https://www.hdfgroup.org/HDF5/doc/UG/HDF5_Users_Guide-Responsive%20HTML5/index.html#t=HDF5_Users_Guide%2FGroups%2FHDF5_Groups.htm +// Programmer Binh-Minh Ribler - 2000 +// Modification +// 2007: QAK modified to use H5L APIs - BMR +//-------------------------------------------------------------------------- +void H5Location::move( const char* src, const char* dst ) const +{ + herr_t ret_value = H5Lmove(getId(), src, H5L_SAME_LOC, dst, H5P_DEFAULT, H5P_DEFAULT ); + if( ret_value < 0 ) + throwException("move", "H5Lmove failed"); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::move +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a src and \a dst. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +void H5Location::move( const H5std_string& src, const H5std_string& dst ) const +{ + move( src.c_str(), dst.c_str() ); +} + +#ifndef H5_NO_DEPRECATED_SYMBOLS +//-------------------------------------------------------------------------- +// Function: H5Location::getObjinfo +///\brief Returns information about an object. +///\param name - IN: Name of the object +///\param follow_link - IN: Link flag +///\param statbuf - OUT: Buffer to return information about the object +///\exception H5::FileIException or H5::GroupIException +///\par Description +/// For more information, please refer to the C layer Reference +/// Manual at: +/// http://www.hdfgroup.org/HDF5/doc/RM/RM_H5G.html#Group-GetObjinfo +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +void H5Location::getObjinfo( const char* name, hbool_t follow_link, H5G_stat_t& statbuf ) const +{ + herr_t ret_value = H5Gget_objinfo(getId(), name, follow_link, &statbuf ); + if( ret_value < 0 ) + throwException("getObjinfo", "H5Gget_objinfo failed"); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::getObjinfo +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +void H5Location::getObjinfo( const H5std_string& name, hbool_t follow_link, H5G_stat_t& statbuf ) const +{ + getObjinfo( name.c_str(), follow_link, statbuf ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::getObjinfo +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above functions in that it doesn't have +/// the paramemter \a follow_link. +// Programmer Binh-Minh Ribler - Nov, 2005 +// Note: need to modify to use H5Oget_info and H5Lget_info - BMR +//-------------------------------------------------------------------------- +void H5Location::getObjinfo( const char* name, H5G_stat_t& statbuf ) const +{ + herr_t ret_value = H5Gget_objinfo(getId(), name, 0, &statbuf ); + if( ret_value < 0 ) + throwException("getObjinfo", "H5Gget_objinfo failed"); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::getObjinfo +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - Nov, 2005 +//-------------------------------------------------------------------------- +void H5Location::getObjinfo( const H5std_string& name, H5G_stat_t& statbuf ) const +{ + getObjinfo( name.c_str(), statbuf ); +} +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + +//-------------------------------------------------------------------------- +// Function: H5Location::getLinkval +///\brief Returns the name of the object that the symbolic link points to. +///\param name - IN: Symbolic link to the object +///\param size - IN: Maximum number of characters of value to be returned +///\return Name of the object +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +H5std_string H5Location::getLinkval( const char* name, size_t size ) const +{ + H5L_info_t linkinfo; + char *value_C; // value in C string + size_t val_size = size; + H5std_string value = ""; + herr_t ret_value; + + // if user doesn't provide buffer size, determine it + if (size == 0) + { + ret_value = H5Lget_info(getId(), name, &linkinfo, H5P_DEFAULT); + if( ret_value < 0 ) + throwException("getLinkval", "H5Lget_info to find buffer size failed"); + + val_size = linkinfo.u.val_size; + } + + // if link has value, retrieve the value, otherwise, return null string + if (val_size > 0) + { + value_C = new char[val_size+1]; // temporary C-string for C API + HDmemset(value_C, 0, val_size+1); // clear buffer + + ret_value = H5Lget_val(getId(), name, value_C, val_size, H5P_DEFAULT); + if( ret_value < 0 ) + { + delete []value_C; + throwException("getLinkval", "H5Lget_val failed"); + } + + value = H5std_string(value_C); + delete []value_C; + } + return(value); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::getLinkval +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +H5std_string H5Location::getLinkval( const H5std_string& name, size_t size ) const +{ + return( getLinkval( name.c_str(), size )); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::mount +///\brief Mounts the file \a child onto this group. +///\param name - IN: Name of the group +///\param child - IN: File to mount +///\param plist - IN: Property list to use +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2014 (original 2000) +//-------------------------------------------------------------------------- +void H5Location::mount(const char* name, const H5File& child, const PropList& plist ) const +{ + // Obtain identifiers for C API + hid_t plist_id = plist.getId(); + hid_t child_id = child.getId(); + + // Call C routine H5Fmount to do the mouting + herr_t ret_value = H5Fmount(getId(), name, child_id, plist_id ); + + // Raise exception if H5Fmount returns negative value + if( ret_value < 0 ) + throwException("mount", "H5Fmount failed"); } +//-------------------------------------------------------------------------- +// Function: H5Location::mount +// Purpose This is an overloaded member function, kept for backward +// compatibility. It differs from the above function in that it +// misses const's. This wrapper will be removed in future release. +// Param name - IN: Name of the group +// Param child - IN: File to mount +// Param plist - IN: Property list to use +// Exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +// Modification +// Modified to call its replacement. -BMR, 2014/04/16 +// Removed from documentation. -BMR, 2016/03/07 1.8.17 and 1.10.0 +// Removed from code. -BMR, 2016/08/11 1.8.18 and 1.10.1 +//-------------------------------------------------------------------------- +//void H5Location::mount(const char* name, H5File& child, PropList& plist) const +//{ +// mount(name, child, plist); +//} + +//-------------------------------------------------------------------------- +// Function: H5Location::mount +///\brief This is an overloaded member function, provided for convenience. +/// It takes an \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +void H5Location::mount(const H5std_string& name, const H5File& child, const PropList& plist) const +{ + mount(name.c_str(), child, plist); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::mount +// Purpose This is an overloaded member function, kept for backward +// compatibility. It differs from the above function in that it +// misses const's. This wrapper will be removed in future release. +// Programmer Binh-Minh Ribler - 2014 +// Modification +// Modified to call its replacement. -BMR, 2014/04/16 +// Removed from documentation. -BMR, 2016/03/07 1.8.17 and 1.10.0 +// Removed from code. -BMR, 2016/08/11 1.8.18 and 1.10.1 +//-------------------------------------------------------------------------- +//void H5Location::mount(const H5std_string& name, H5File& child, PropList& plist) const +//{ +// mount(name.c_str(), child, plist); +//} + +//-------------------------------------------------------------------------- +// Function: H5Location::unmount +///\brief Unmounts the specified file. +///\param name - IN: Name of the file to unmount +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +void H5Location::unmount( const char* name ) const +{ + // Call C routine H5Fmount to do the mouting + herr_t ret_value = H5Funmount(getId(), name ); + + // Raise exception if H5Funmount returns negative value + if( ret_value < 0 ) + throwException("unmount", "H5Funmount failed"); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::unmount +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +void H5Location::unmount( const H5std_string& name ) const +{ + unmount( name.c_str() ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openDataType +///\brief Opens the named generic datatype at this location. +///\param name - IN: Name of the datatype to open +///\return DataType instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +DataType H5Location::openDataType( const char* name ) const +{ + // Call C function H5Topen2 to open the named datatype in this group, + // given either the file or group id + hid_t type_id = H5Topen2(getId(), name, H5P_DEFAULT); + + // If the datatype's opening failed, throw an exception + if( type_id < 0 ) + throwException("openDataType", "H5Topen2 failed"); + + // No failure, create and return the DataType object + DataType data_type; + f_DataType_setId(&data_type, type_id); + return(data_type); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openDataType +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +DataType H5Location::openDataType( const H5std_string& name ) const +{ + return( openDataType( name.c_str()) ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openArrayType +///\brief Opens the named array datatype at this location. +///\param name - IN: Name of the array datatype to open +///\return ArrayType instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - Jul, 2005 +//-------------------------------------------------------------------------- +ArrayType H5Location::openArrayType( const char* name ) const +{ + // Call C function H5Topen2 to open the named datatype in this group, + // given either the file or group id + hid_t type_id = H5Topen2(getId(), name, H5P_DEFAULT); + + // If the datatype's opening failed, throw an exception + if( type_id < 0 ) + throwException("openArrayType", "H5Topen2 failed"); + + // No failure, create and return the ArrayType object + ArrayType array_type; + f_DataType_setId(&array_type, type_id); + return(array_type); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openArrayType +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - Jul, 2005 +//-------------------------------------------------------------------------- +ArrayType H5Location::openArrayType( const H5std_string& name ) const +{ + return( openArrayType( name.c_str()) ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openCompType +///\brief Opens the named compound datatype at this location. +///\param name - IN: Name of the compound datatype to open +///\return CompType instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +CompType H5Location::openCompType( const char* name ) const +{ + // Call C function H5Topen2 to open the named datatype in this group, + // given either the file or group id + hid_t type_id = H5Topen2(getId(), name, H5P_DEFAULT); + + // If the datatype's opening failed, throw an exception + if( type_id < 0 ) + throwException("openCompType", "H5Topen2 failed"); + + // No failure, create and return the CompType object + CompType comp_type; + f_DataType_setId(&comp_type, type_id); + return(comp_type); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openCompType +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +CompType H5Location::openCompType( const H5std_string& name ) const +{ + return( openCompType( name.c_str()) ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openEnumType +///\brief Opens the named enumeration datatype at this location. +///\param name - IN: Name of the enumeration datatype to open +///\return EnumType instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +EnumType H5Location::openEnumType( const char* name ) const +{ + // Call C function H5Topen2 to open the named datatype in this group, + // given either the file or group id + hid_t type_id = H5Topen2(getId(), name, H5P_DEFAULT); + + // If the datatype's opening failed, throw an exception + if( type_id < 0 ) + throwException("openEnumType", "H5Topen2 failed"); + + // No failure, create and return the EnumType object + EnumType enum_type; + f_DataType_setId(&enum_type, type_id); + return(enum_type); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openEnumType +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +EnumType H5Location::openEnumType( const H5std_string& name ) const +{ + return( openEnumType( name.c_str()) ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openIntType +///\brief Opens the named integer datatype at this location. +///\param name - IN: Name of the integer datatype to open +///\return IntType instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +IntType H5Location::openIntType( const char* name ) const +{ + // Call C function H5Topen2 to open the named datatype in this group, + // given either the file or group id + hid_t type_id = H5Topen2(getId(), name, H5P_DEFAULT); + + // If the datatype's opening failed, throw an exception + if( type_id < 0 ) + throwException("openIntType", "H5Topen2 failed"); + + // No failure, create and return the IntType object + IntType int_type; + f_DataType_setId(&int_type, type_id); + return(int_type); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openIntType +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +IntType H5Location::openIntType( const H5std_string& name ) const +{ + return( openIntType( name.c_str()) ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openFloatType +///\brief Opens the named floating-point datatype at this location. +///\param name - IN: Name of the floating-point datatype to open +///\return FloatType instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +FloatType H5Location::openFloatType( const char* name ) const +{ + // Call C function H5Topen2 to open the named datatype in this group, + // given either the file or group id + hid_t type_id = H5Topen2(getId(), name, H5P_DEFAULT); + + // If the datatype's opening failed, throw an exception + if( type_id < 0 ) + throwException("openFloatType", "H5Topen2 failed"); + + // No failure, create and return the FloatType object + FloatType float_type; + f_DataType_setId(&float_type, type_id); + return(float_type); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openFloatType +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +FloatType H5Location::openFloatType( const H5std_string& name ) const +{ + return( openFloatType( name.c_str()) ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openStrType +///\brief Opens the named string datatype at this location. +///\param name - IN: Name of the string datatype to open +///\return StrType instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +StrType H5Location::openStrType( const char* name ) const +{ + // Call C function H5Topen2 to open the named datatype in this group, + // given either the file or group id + hid_t type_id = H5Topen2(getId(), name, H5P_DEFAULT); + + // If the datatype's opening failed, throw an exception + if( type_id < 0 ) + throwException("openStrType", "H5Topen2 failed"); + + // No failure, create and return the StrType object + StrType str_type; + f_DataType_setId(&str_type, type_id); + return(str_type); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openStrType +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +StrType H5Location::openStrType( const H5std_string& name ) const +{ + return( openStrType( name.c_str()) ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openVarLenType +///\brief Opens the named variable length datatype at this location. +///\param name - IN: Name of the variable length datatype to open +///\return VarLenType instance +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - Jul, 2005 +//-------------------------------------------------------------------------- +VarLenType H5Location::openVarLenType( const char* name ) const +{ + // Call C function H5Topen2 to open the named datatype in this group, + // given either the file or group id + hid_t type_id = H5Topen2(getId(), name, H5P_DEFAULT); + + // If the datatype's opening failed, throw an exception + if( type_id < 0 ) + throwException("openVarLenType", "H5Topen2 failed"); + + // No failure, create and return the VarLenType object + VarLenType varlen_type; + f_DataType_setId(&varlen_type, type_id); + return(varlen_type); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::openVarLenType +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - Jul, 2005 +//-------------------------------------------------------------------------- +VarLenType H5Location::openVarLenType( const H5std_string& name ) const +{ + return( openVarLenType( name.c_str()) ); +} + +#ifndef H5_NO_DEPRECATED_SYMBOLS +//-------------------------------------------------------------------------- +// Function: H5Location::iterateElems +///\brief Iterates a user's function over the entries of a group. +///\param name - IN : Name of group to iterate over +///\param idx - IN/OUT: Starting (IN) and ending (OUT) entry indices +///\param op - IN : User's function to operate on each entry +///\param op_data - IN/OUT: Data associated with the operation +///\return The return value of the first operator that returns non-zero, +/// or zero if all members were processed with no operator +/// returning non-zero. +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +int H5Location::iterateElems( const char* name, int *idx, H5G_iterate_t op , void* op_data ) +{ + int ret_value = H5Giterate(getId(), name, idx, op, op_data ); + if( ret_value < 0 ) + { + throwException("iterateElems", "H5Giterate failed"); + } + return( ret_value ); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::iterateElems +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +int H5Location::iterateElems( const H5std_string& name, int *idx, H5G_iterate_t op , void* op_data ) +{ + return( iterateElems( name.c_str(), idx, op, op_data )); +} +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + +//-------------------------------------------------------------------------- +// Function: H5Location::getNumObjs +///\brief Returns the number of objects in this group. +///\return Number of objects +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - January, 2003 +//-------------------------------------------------------------------------- +hsize_t H5Location::getNumObjs() const +{ + H5G_info_t ginfo; /* Group information */ + + herr_t ret_value = H5Gget_info(getId(), &ginfo); + if(ret_value < 0) + throwException("getNumObjs", "H5Gget_info failed"); + return (ginfo.nlinks); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::getObjnameByIdx +///\brief Returns the name of an object in this group, given the +/// object's index. +///\param idx - IN: Transient index of the object +///\return Object name +///\exception H5::FileIException or H5::GroupIException +///\par Description +/// The value of idx can be any nonnegative number less than the +/// total number of objects in the group, which is returned by +/// the function \c H5Location::getNumObjs. Note that this is a +/// transient index; thus, an object may have a different index +/// each time the group is opened. +// Programmer Binh-Minh Ribler - Mar, 2005 +//-------------------------------------------------------------------------- +H5std_string H5Location::getObjnameByIdx(hsize_t idx) const +{ + // call H5Lget_name_by_idx with name as NULL to get its length + ssize_t name_len = H5Lget_name_by_idx(getId(), ".", H5_INDEX_NAME, H5_ITER_INC, idx, NULL, 0, H5P_DEFAULT); + if(name_len < 0) + throwException("getObjnameByIdx", "H5Lget_name_by_idx failed"); + + // now, allocate C buffer to get the name + char* name_C = new char[name_len+1]; + HDmemset(name_C, 0, name_len+1); // clear buffer + + name_len = H5Lget_name_by_idx(getId(), ".", H5_INDEX_NAME, H5_ITER_INC, idx, name_C, name_len+1, H5P_DEFAULT); + + if (name_len < 0) + { + delete []name_C; + throwException("getObjnameByIdx", "H5Lget_name_by_idx failed"); + } + + // clean up and return the string + H5std_string name = H5std_string(name_C); + delete []name_C; + return (name); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::getObjnameByIdx +///\brief Retrieves the name of an object in this group, given the +/// object's index. +///\param idx - IN: Transient index of the object +///\param name - IN/OUT: Retrieved name of the object +///\param size - IN: Length to retrieve +///\return Actual size of the object name or 0, if object has no name +///\exception H5::FileIException or H5::GroupIException +///\par Description +/// The value of idx can be any nonnegative number less than the +/// total number of objects in the group, which is returned by +/// the function \c H5Location::getNumObjs. Note that this is a +/// transient index; thus, an object may have a different index +/// each time the group is opened. +// Programmer Binh-Minh Ribler - January, 2003 +//-------------------------------------------------------------------------- +ssize_t H5Location::getObjnameByIdx(hsize_t idx, char* name, size_t size) const +{ + ssize_t name_len = H5Lget_name_by_idx(getId(), ".", H5_INDEX_NAME, H5_ITER_INC, idx, name, size, H5P_DEFAULT); + if(name_len < 0) + throwException("getObjnameByIdx", "H5Lget_name_by_idx failed"); + + return (name_len); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::getObjnameByIdx +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function in that it takes an +/// \c H5std_string for \a name. +// Programmer Binh-Minh Ribler - January, 2003 +//-------------------------------------------------------------------------- +ssize_t H5Location::getObjnameByIdx(hsize_t idx, H5std_string& name, size_t size) const +{ + char* name_C = new char[size+1]; // temporary C-string for object name + HDmemset(name_C, 0, size+1); // clear buffer + + // call overloaded function to get the name + ssize_t name_len = getObjnameByIdx(idx, name_C, size+1); + if(name_len < 0) + { + delete []name_C; + throwException("getObjnameByIdx", "H5Lget_name_by_idx failed"); + } + + // clean up and return the string + name = H5std_string(name_C); + delete []name_C; + return (name_len); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::childObjType +///\brief Returns the type of an object in this file/group, given the +/// object's name. +///\param objname - IN: Name of the object +///\return Object type, which can have the following values for group, +/// dataset, and named datatype +/// \li \c H5O_TYPE_GROUP +/// \li \c H5O_TYPE_DATASET +/// \li \c H5O_TYPE_NAMED_DATATYPE +/// Refer to the C API documentation for more details: +/// http://www.hdfgroup.org/HDF5/doc/RM/RM_H5O.html#Object-GetInfo +///\exception H5::FileIException or H5::GroupIException +/// Exception will be thrown when: +/// - an error returned by the C API +/// - object type is not one of the valid values above +// Programmer Binh-Minh Ribler - April, 2014 +//-------------------------------------------------------------------------- +H5O_type_t H5Location::childObjType(const char* objname) const +{ + H5O_info_t objinfo; + H5O_type_t objtype = H5O_TYPE_UNKNOWN; + + // Use C API to get information of the object + herr_t ret_value = H5Oget_info_by_name(getId(), objname, &objinfo, H5P_DEFAULT); + + // Throw exception if C API returns failure + if (ret_value < 0) + throwException("childObjType", "H5Oget_info_by_name failed"); + // Return a valid type or throw an exception for unknown type + else + switch (objinfo.type) + { + case H5O_TYPE_GROUP: + case H5O_TYPE_DATASET: + case H5O_TYPE_NAMED_DATATYPE: + objtype = objinfo.type; + break; + case H5O_TYPE_UNKNOWN: + case H5O_TYPE_NTYPES: + default: + throwException("childObjType", "Unknown type of object"); + } + return(objtype); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::childObjType +///\brief This is an overloaded member function, provided for convenience. +/// It takes an \a H5std_string for the object's name. +///\brief Returns the type of an object in this group, given the +/// object's name. +///\param objname - IN: Name of the object (H5std_string&) +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - April, 2014 +//-------------------------------------------------------------------------- +H5O_type_t H5Location::childObjType(const H5std_string& objname) const +{ + // Use overloaded function + H5O_type_t objtype = childObjType(objname.c_str()); + return(objtype); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::childObjType +///\brief Returns the type of an object in this file/group, given the +/// object's index and its type and order. +///\param index - IN: Position of the object +///\param index_type - IN: Type of the index, default to H5_INDEX_NAME +///\param order - IN: Traversing order, default to H5_ITER_INC +///\param objname - IN: Name of the object, default to "." +///\return Object type, which can have the following values for group, +/// dataset, and named datatype +/// \li \c H5O_TYPE_GROUP +/// \li \c H5O_TYPE_DATASET +/// \li \c H5O_TYPE_NAMED_DATATYPE +/// Refer to the C API documentation for more details: +/// http://www.hdfgroup.org/HDF5/doc/RM/RM_H5O.html#Object-GetInfo +///\exception H5::FileIException or H5::GroupIException +/// Exception will be thrown when: +/// - an error returned by the C API +/// - object type is not one of the valid values above +// Developer's Notes: +// - this overload uses H5Oget_info_by_idx instead of H5Oget_info_by_name +// like the previous childObjType() +// - index is the required argument so, first +// - objname is last because it's more likely the location is already +// fully specified +// - Leave property list out for now because C API is not using it, it +// can be added later when needed. +// Programmer Binh-Minh Ribler - April, 2014 +//-------------------------------------------------------------------------- +H5O_type_t H5Location::childObjType(hsize_t index, H5_index_t index_type, H5_iter_order_t order, const char* objname) const +{ + herr_t ret_value; + H5O_info_t objinfo; + H5O_type_t objtype = H5O_TYPE_UNKNOWN; + + // Use C API to get information of the object + ret_value = H5Oget_info_by_idx(getId(), objname, index_type, order, index, &objinfo, H5P_DEFAULT); + + // Throw exception if C API returns failure + if (ret_value < 0) + throwException("childObjType", "H5Oget_info_by_idx failed"); + // Return a valid type or throw an exception for unknown type + else + switch (objinfo.type) + { + case H5O_TYPE_GROUP: + case H5O_TYPE_DATASET: + case H5O_TYPE_NAMED_DATATYPE: + objtype = objinfo.type; + break; + case H5O_TYPE_UNKNOWN: + case H5O_TYPE_NTYPES: + default: + throwException("childObjType", "Unknown type of object"); + } + return(objtype); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::childObjVersion +///\brief Returns the object header version of an object in this file/group, +/// given the object's name. +///\param objname - IN: Name of the object +///\return Object version, which can have the following values: +/// \li \c H5O_VERSION_1 +/// \li \c H5O_VERSION_2 +///\exception H5::FileIException or H5::GroupIException +/// Exception will be thrown when: +/// - an error returned by the C API +/// - version number is not one of the valid values above +// Programmer Binh-Minh Ribler - April, 2014 +//-------------------------------------------------------------------------- +unsigned H5Location::childObjVersion(const char* objname) const +{ + H5O_info_t objinfo; + unsigned version = 0; + + // Use C API to get information of the object + herr_t ret_value = H5Oget_info_by_name(getId(), objname, &objinfo, H5P_DEFAULT); + + // Throw exception if C API returns failure + if (ret_value < 0) + throwException("childObjVersion", "H5Oget_info_by_name failed"); + // Return a valid version or throw an exception for invalid value + else + { + version = objinfo.hdr.version; + if (version != H5O_VERSION_1 && version != H5O_VERSION_2) + throwException("childObjVersion", "Invalid version for object"); + } + return(version); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::childObjVersion +///\brief This is an overloaded member function, provided for convenience. +/// It takes an \a H5std_string for the object's name. +///\brief Returns the type of an object in this group, given the +/// object's name. +///\param objname - IN: Name of the object (H5std_string&) +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - April, 2014 +//-------------------------------------------------------------------------- +unsigned H5Location::childObjVersion(const H5std_string& objname) const +{ + // Use overloaded function + unsigned version = childObjVersion(objname.c_str()); + return(version); +} + +#ifndef H5_NO_DEPRECATED_SYMBOLS +#ifndef DOXYGEN_SHOULD_SKIP_THIS +//-------------------------------------------------------------------------- +// Function: H5Location::getObjTypeByIdx +///\brief Returns the type of an object in this group, given the +/// object's index. +///\param idx - IN: Transient index of the object +///\return Object type +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - January, 2003 +//-------------------------------------------------------------------------- +H5G_obj_t H5Location::getObjTypeByIdx(hsize_t idx) const +{ + H5G_obj_t obj_type = H5Gget_objtype_by_idx(getId(), idx); + if (obj_type == H5G_UNKNOWN) + throwException("getObjTypeByIdx", "H5Gget_objtype_by_idx failed"); + + return (obj_type); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::getObjTypeByIdx +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function because it also provides +/// the returned object type in text (char*) +///\param idx - IN: Transient index of the object +///\param type_name - OUT: Object type in text +///\return Object type +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - May, 2010 +// Modification +// Modified to use the other function. -BMR, 2016/03/07 +//-------------------------------------------------------------------------- +H5G_obj_t H5Location::getObjTypeByIdx(hsize_t idx, char* type_name) const +{ + H5std_string stype_name(type_name); + return(getObjTypeByIdx(idx, stype_name)); +} +//-------------------------------------------------------------------------- +// Function: H5Location::getObjTypeByIdx +///\brief This is an overloaded member function, provided for convenience. +/// It differs from the above function because it also provides +/// the returned object type in text (H5std_string&) +///\param idx - IN: Transient index of the object +///\param type_name - OUT: Object type in text +///\return Object type +///\exception H5::FileIException or H5::GroupIException +// Programmer Binh-Minh Ribler - January, 2003 +//-------------------------------------------------------------------------- +H5G_obj_t H5Location::getObjTypeByIdx(hsize_t idx, H5std_string& type_name) const +{ + H5G_obj_t obj_type = H5Gget_objtype_by_idx(getId(), idx); + switch (obj_type) + { + case H5G_LINK: type_name = H5std_string("symbolic link"); break; + case H5G_GROUP: type_name = H5std_string("group"); break; + case H5G_DATASET: type_name = H5std_string("dataset"); break; + case H5G_TYPE: type_name = H5std_string("datatype"); break; + case H5G_UNKNOWN: + case H5G_UDLINK: + case H5G_RESERVED_5: + case H5G_RESERVED_6: + case H5G_RESERVED_7: + default: + throwException("getObjTypeByIdx", "H5Gget_objtype_by_idx failed"); + } + return (obj_type); +} + +//-------------------------------------------------------------------------- +// Function: H5Location::throwException +///\brief Invokes subclass' throwException +///\param func_name - Name of the function where failure occurs +///\param msg - Message describing the failure +///\exception H5::GroupIException +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +void H5Location::throwException(const H5std_string& func_name, const H5std_string& msg) const +{ + throwException(func_name, msg); +} + +#endif // DOXYGEN_SHOULD_SKIP_THIS +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + +//-------------------------------------------------------------------------- +// Function: f_DataType_setId - friend +// Purpose: This function is friend to class H5::DataType so that it +// can set DataType::id in order to work around a problem +// described in the JIRA issue HDFFV-7947. +// Applications shouldn't need to use it. +// param dtype - IN/OUT: DataType object to be changed +// param new_id - IN: New id to set +// Programmer Binh-Minh Ribler - 2015 +//-------------------------------------------------------------------------- +void f_DataType_setId(DataType* dtype, hid_t new_id) +{ + dtype->p_setId(new_id); +} + +//-------------------------------------------------------------------------- +// Function: f_DataSet_setId - friend +// Purpose: This function is friend to class H5::DataSet so that it +// can set DataSet::id in order to work around a problem +// described in the JIRA issue HDFFV-7947. +// Applications shouldn't need to use it. +// param dset - IN/OUT: DataSet object to be changed +// param new_id - IN: New id to set +// Programmer Binh-Minh Ribler - 2015 +//-------------------------------------------------------------------------- +void f_DataSet_setId(DataSet* dset, hid_t new_id) +{ + dset->p_setId(new_id); +} + +// end of From H5CommonFG.cpp + +//-------------------------------------------------------------------------- +// Function: f_Attribute_setId - friend +// Purpose: This function is friend to class H5::Attribute so that it +// can set Attribute::id in order to work around a problem +// described in the JIRA issue HDFFV-7947. +// Applications shouldn't need to use it. +// param attr - IN/OUT: Attribute object to be changed +// param new_id - IN: New id to set +// Programmer Binh-Minh Ribler - 2015 +//-------------------------------------------------------------------------- +void f_Attribute_setId(Attribute* attr, hid_t new_id) +{ + attr->p_setId(new_id); +} + +//-------------------------------------------------------------------------- +// Function: f_DataSpace_setId - friend +// Purpose: This function is friend to class H5::DataSpace so that it can +// can set DataSpace::id in order to work around a problem +// described in the JIRA issue HDFFV-7947. +// Applications shouldn't need to use it. +// param dspace - IN/OUT: DataSpace object to be changed +// param new_id - IN: New id to set +// Programmer Binh-Minh Ribler - 2015 +//-------------------------------------------------------------------------- +void f_DataSpace_setId(DataSpace* dspace, hid_t new_id) +{ + dspace->p_setId(new_id); +} + +//-------------------------------------------------------------------------- +// Function: H5Location destructor +///\brief Noop destructor. +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- +H5Location::~H5Location() {} + #endif // DOXYGEN_SHOULD_SKIP_THIS #ifndef H5_NO_NAMESPACE diff --git a/c++/src/H5Location.h b/c++/src/H5Location.h index 9000c5c..4f7a717 100644 --- a/c++/src/H5Location.h +++ b/c++/src/H5Location.h @@ -39,6 +39,10 @@ namespace H5 { }; */ +// Class forwarding +class H5_DLLCPP ArrayType; +class H5_DLLCPP VarLenType; + /*! \class H5Location \brief H5Location is an abstract base class, added in version 1.8.12. @@ -100,15 +104,137 @@ class H5_DLLCPP H5Location : public IdComponent { // Retrieves a dataspace with the region pointed to selected. DataSpace getRegion(void *ref, H5R_type_t ref_type = H5R_DATASET_REGION) const; - ///\brief Returns an identifier. (pure virtual) - virtual hid_t getId() const = 0; +// From CommonFG + // Creates a new group at this location which can be a file + // or another group. + Group createGroup(const char* name, size_t size_hint = 0) const; + Group createGroup(const H5std_string& name, size_t size_hint = 0) const; + + // Opens an existing group in a location which can be a file + // or another group. + Group openGroup(const char* name) const; + Group openGroup(const H5std_string& name) const; + + // Creates a new dataset in this group. + DataSet createDataSet(const char* name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist = DSetCreatPropList::DEFAULT) const; + DataSet createDataSet(const H5std_string& name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist = DSetCreatPropList::DEFAULT) const; + + // Opens an existing dataset at this location. + DataSet openDataSet(const char* name) const; + DataSet openDataSet(const H5std_string& name) const; + + // Returns the value of a symbolic link. + H5std_string getLinkval(const char* link_name, size_t size=0) const; + H5std_string getLinkval(const H5std_string& link_name, size_t size=0) const; + + // Returns the number of objects in this group. + hsize_t getNumObjs() const; + + // Retrieves the name of an object in this group, given the + // object's index. + H5std_string getObjnameByIdx(hsize_t idx) const; + ssize_t getObjnameByIdx(hsize_t idx, char* name, size_t size) const; + ssize_t getObjnameByIdx(hsize_t idx, H5std_string& name, size_t size) const; + + // Retrieves the type of an object in this file or group, given the + // object's name + H5O_type_t childObjType(const H5std_string& objname) const; + H5O_type_t childObjType(const char* objname) const; + H5O_type_t childObjType(hsize_t index, H5_index_t index_type=H5_INDEX_NAME, H5_iter_order_t order=H5_ITER_INC, const char* objname=".") const; + + // Returns the object header version of an object in this file or group, + // given the object's name. + unsigned childObjVersion(const char* objname) const; + unsigned childObjVersion(const H5std_string& objname) const; + +#ifndef H5_NO_DEPRECATED_SYMBOLS + // Returns the type of an object in this group, given the + // object's index. + H5G_obj_t getObjTypeByIdx(hsize_t idx) const; + H5G_obj_t getObjTypeByIdx(hsize_t idx, char* type_name) const; + H5G_obj_t getObjTypeByIdx(hsize_t idx, H5std_string& type_name) const; + + // Returns information about an HDF5 object, given by its name, + // at this location. + void getObjinfo(const char* name, hbool_t follow_link, H5G_stat_t& statbuf) const; + void getObjinfo(const H5std_string& name, hbool_t follow_link, H5G_stat_t& statbuf) const; + void getObjinfo(const char* name, H5G_stat_t& statbuf) const; + void getObjinfo(const H5std_string& name, H5G_stat_t& statbuf) const; + + // Iterates over the elements of this group - not implemented in + // C++ style yet. + int iterateElems(const char* name, int *idx, H5G_iterate_t op, void *op_data); + int iterateElems(const H5std_string& name, int *idx, H5G_iterate_t op, void *op_data); +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + + // Creates a link of the specified type from new_name to current_name; + // both names are interpreted relative to the specified location id. + void link(H5L_type_t link_type, const char* curr_name, const char* new_name) const; + void link(H5L_type_t link_type, const H5std_string& curr_name, const H5std_string& new_name) const; + + // Removes the specified name at this location. + void unlink(const char* name) const; + void unlink(const H5std_string& name) const; + + // Mounts the file 'child' onto this location. + void mount(const char* name, const H5File& child, const PropList& plist) const; + //void mount(const char* name, H5File& child, PropList& plist) const; // removed from 1.8.18 and 1.10.1 + void mount(const H5std_string& name, const H5File& child, const PropList& plist) const; + //void mount(const H5std_string& name, H5File& child, PropList& plist) const; // removed from 1.8.18 and 1.10.1 + + // Unmounts the file named 'name' from this parent location. + void unmount(const char* name) const; + void unmount(const H5std_string& name) const; + + // Renames an object at this location. + void move(const char* src, const char* dst) const; + void move(const H5std_string& src, const H5std_string& dst) const; + + // Opens a generic named datatype in this location. + DataType openDataType(const char* name) const; + DataType openDataType(const H5std_string& name) const; + + // Opens a named array datatype in this location. + ArrayType openArrayType(const char* name) const; + ArrayType openArrayType(const H5std_string& name) const; + + // Opens a named compound datatype in this location. + CompType openCompType(const char* name) const; + CompType openCompType(const H5std_string& name) const; + + // Opens a named enumeration datatype in this location. + EnumType openEnumType(const char* name) const; + EnumType openEnumType(const H5std_string& name) const; + + // Opens a named integer datatype in this location. + IntType openIntType(const char* name) const; + IntType openIntType(const H5std_string& name) const; + + // Opens a named floating-point datatype in this location. + FloatType openFloatType(const char* name) const; + FloatType openFloatType(const H5std_string& name) const; + + // Opens a named string datatype in this location. + StrType openStrType(const char* name) const; + StrType openStrType(const H5std_string& name) const; + + // Opens a named variable length datatype in this location. + VarLenType openVarLenType(const char* name) const; + VarLenType openVarLenType(const H5std_string& name) const; + +// end From CommonFG + + ///\brief Returns an identifier. + //virtual hid_t getId() const; + + /// For subclasses, H5File and Group, to throw appropriate exception. + virtual void throwException(const H5std_string& func_name, const H5std_string& msg) const; - protected: // Default constructor H5Location(); + protected: #ifndef DOXYGEN_SHOULD_SKIP_THIS - // *** Deprecation warning *** // The following two constructors are no longer appropriate after the // data member "id" had been moved to the sub-classes. diff --git a/c++/src/H5Object.cpp b/c++/src/H5Object.cpp index 0cb392d..6b5edcf 100644 --- a/c++/src/H5Object.cpp +++ b/c++/src/H5Object.cpp @@ -19,13 +19,13 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" +#include "H5FaccProp.h" +#include "H5FcreatProp.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" #include "H5DxferProp.h" -#include "H5FaccProp.h" -#include "H5FcreatProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5DataType.h" #include "H5DataSpace.h" #include "H5AbstractDs.h" diff --git a/c++/src/H5Object.h b/c++/src/H5Object.h index c39de3a..372faed 100644 --- a/c++/src/H5Object.h +++ b/c++/src/H5Object.h @@ -38,7 +38,9 @@ namespace H5 { #endif +// Class forwarding class H5_DLLCPP H5Object; +class H5_DLLCPP Attribute; // Define the operator function pointer for H5Aiterate(). typedef void (*attr_operator_t)( H5Object& loc/*in*/, diff --git a/c++/src/H5OcreatProp.cpp b/c++/src/H5OcreatProp.cpp index 635ffe9..54ce2ff 100644 --- a/c++/src/H5OcreatProp.cpp +++ b/c++/src/H5OcreatProp.cpp @@ -19,8 +19,8 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5FaccProp.h" #include "H5OcreatProp.h" +#include "H5FaccProp.h" #ifndef H5_NO_NAMESPACE namespace H5 { diff --git a/c++/src/H5PredType.cpp b/c++/src/H5PredType.cpp index 3fe9a8a..211702d 100644 --- a/c++/src/H5PredType.cpp +++ b/c++/src/H5PredType.cpp @@ -19,6 +19,8 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" +#include "H5OcreatProp.h" +#include "H5DcreatProp.h" #include "H5Location.h" #include "H5Object.h" #include "H5DataType.h" diff --git a/c++/src/H5StrType.cpp b/c++/src/H5StrType.cpp index 8e1672b..db46596 100644 --- a/c++/src/H5StrType.cpp +++ b/c++/src/H5StrType.cpp @@ -19,14 +19,14 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" +#include "H5DxferProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5DataType.h" #include "H5AtomType.h" #include "H5AbstractDs.h" -#include "H5DxferProp.h" #include "H5DataSpace.h" #include "H5StrType.h" #include "H5DataSet.h" diff --git a/c++/src/H5VarLenType.cpp b/c++/src/H5VarLenType.cpp index 67334d3..c9f320a 100644 --- a/c++/src/H5VarLenType.cpp +++ b/c++/src/H5VarLenType.cpp @@ -19,10 +19,10 @@ #include "H5Exception.h" #include "H5IdComponent.h" #include "H5PropList.h" -#include "H5Location.h" -#include "H5Object.h" #include "H5OcreatProp.h" #include "H5DcreatProp.h" +#include "H5Location.h" +#include "H5Object.h" #include "H5DataType.h" #include "H5VarLenType.h" diff --git a/c++/test/Makefile.am b/c++/test/Makefile.am index 07fe533..da0a864 100644 --- a/c++/test/Makefile.am +++ b/c++/test/Makefile.am @@ -34,7 +34,7 @@ LDADD=$(LIBH5TEST) $(LIBH5CPP) $(LIBHDF5) testhdf5_SOURCES=testhdf5.cpp dsets.cpp tattr.cpp tarray.cpp \ tcompound.cpp tdspl.cpp tfile.cpp tfilter.cpp th5s.cpp \ tlinks.cpp tobject.cpp trefer.cpp ttypes.cpp tvlstr.cpp \ - h5cpputil.cpp + titerate.cpp h5cpputil.cpp # Tell conclude.am that these are C++ tests. CXX_API=yes diff --git a/c++/test/h5cpputil.cpp b/c++/test/h5cpputil.cpp index 05a4d9a..3bc38b5 100644 --- a/c++/test/h5cpputil.cpp +++ b/c++/test/h5cpputil.cpp @@ -164,6 +164,32 @@ int check_values (hsize_t i, hsize_t j, int apoint, int acheck) } // check_values /*------------------------------------------------------------------------- + * Function: check_values + * + * Purpose: Checks a char string pointer for NULL. If it is NULL, + * the function will print out a message + * + * Return: Success: 0 + * + * Failure: -1 + * + * Programmer: Binh-Minh Ribler (using C code segment for checking values) + * Friday, September 16, 2016 + * + *------------------------------------------------------------------------- + */ +void check_values(const char *value, const char* msg, int line, const char* file_name) +{ + if (value == NULL) + { + cerr << endl; + cerr << "*** ERROR: " << msg << ", at line " << line << endl; + IncTestNumErrs(); + throw TestFailedException(file_name, msg); + } +} + +/*------------------------------------------------------------------------- * Function: verify_val (const char*, const char*,...) * * Purpose: Compares two character strings. If they are diff --git a/c++/test/h5cpputil.h b/c++/test/h5cpputil.h index 50cde99..0a3221d 100644 --- a/c++/test/h5cpputil.h +++ b/c++/test/h5cpputil.h @@ -39,6 +39,7 @@ using std::endl; #define SUBTEST(TEST) {printf(" Subtest: %-52s",TEST); fflush(stdout);} int check_values (hsize_t i, hsize_t j, int apoint, int acheck); +void check_values(const char *value, const char* msg, int line, const char* file_name); int test_report (int, const H5std_string&); void issue_fail_msg(const char* where, int line, const char* file_name, const char* message=""); @@ -60,6 +61,8 @@ class TestFailedException : public Exception { }; // Overloaded/Template functions to verify values and display proper info + +// Verifies void verify_val(const char* x, const char* value, const char* where, int line, const char* file_name); template @@ -153,6 +156,7 @@ void test_file(); void test_filters(); void test_links(); void test_h5s(); +void test_iterate(); void test_object(); void test_reference(); void test_types(); @@ -167,8 +171,9 @@ void cleanup_dsproplist(); void cleanup_dsets(); void cleanup_file(); void cleanup_filters(); -void cleanup_links(); void cleanup_h5s(); +void cleanup_iterate(); +void cleanup_links(); void cleanup_object(); void cleanup_reference(); void cleanup_types(); @@ -182,7 +187,6 @@ void cleanup_vlstrings(); void cleanup_select(void); void cleanup_time(void); void cleanup_vltypes(void); -void cleanup_iterate(void); void cleanup_array(void); void cleanup_genprop(void); void cleanup_misc(void); diff --git a/c++/test/testhdf5.cpp b/c++/test/testhdf5.cpp index b17d942..4fe4b58 100644 --- a/c++/test/testhdf5.cpp +++ b/c++/test/testhdf5.cpp @@ -100,7 +100,9 @@ main(int argc, char *argv[]) AddTest("select", test_select, cleanup_select, "Selections", NULL); AddTest("time", test_time, cleanup_time, "Time Datatypes", NULL); AddTest("vltypes", test_vltypes, cleanup_vltypes, "Variable-Length Datatypes", NULL); +*/ AddTest("iterate", test_iterate, cleanup_iterate, "Group & Attribute Iteration", NULL); +/* AddTest("genprop", test_genprop, cleanup_genprop, "Generic Properties", NULL); AddTest("id", test_ids, NULL, "User-Created Identifiers", NULL); diff --git a/c++/test/titerate.cpp b/c++/test/titerate.cpp new file mode 100644 index 0000000..e4aee97 --- /dev/null +++ b/c++/test/titerate.cpp @@ -0,0 +1,541 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/***************************************************************************** + FILE + titerate.cpp - HDF5 C++ testing iterate related functionality + + ***************************************************************************/ + +#ifdef OLD_HEADER_FILENAME +#include +#else +#include +#endif +#include + +#ifndef H5_NO_NAMESPACE +#ifndef H5_NO_STD + using std::cerr; + using std::endl; +#endif // H5_NO_STD +#endif + +#include "H5Cpp.h" // C++ API header file + +#ifndef H5_NO_NAMESPACE + using namespace H5; +#endif + +#include "h5cpputil.h" // C++ utilility header file + +/* Number of datasets for group iteration test */ +#define NDATASETS 50 + +/* Number of attributes for attribute iteration test */ +//#define NATTR 50 + +/* Number of groups for second group iteration test */ +//#define ITER_NGROUPS 150 + +/* General maximum length of names used */ +#define NAMELEN 80 + +/* 1-D dataset with fixed dimensions */ +//#define SPACE1_RANK 1 +//#define SPACE1_DIM1 4 + +const H5std_string FILE_ITERATE("titerate.h5"); +const H5std_string GROUP1("Top Group"); +const H5std_string GROUP1_PATH("/Top Group"); +const H5std_string GROUP1_1("Sub-Group 1.1"); +const H5std_string GROUP1_1_PATH("/Top Group/Sub-Group 1.1"); +const H5std_string GROUP1_2("Sub-Group 1.2"); +const H5std_string GROUP1_2_PATH("/Top Group/Sub-Group 1.2"); +const H5std_string DSET_DEFAULT_NAME("default"); +const H5std_string DSET_IN_FILE("Dataset in File"); +const H5std_string DSET_IN_FILE_PATH("/Dataset in File"); +const H5std_string DSET_IN_GRP1("Dataset in Group 1"); +const H5std_string DSET_IN_GRP1_PATH("/Top Group/Dataset in Group 1"); +const H5std_string DSET_IN_GRP1_2("Dataset in Group 1.2"); +const H5std_string DSET_IN_GRP1_2_PATH("/Top Group/Sub-Group 1.2/Dataset in Group 1.2"); + +typedef enum { + RET_ZERO, + RET_TWO, + RET_CHANGE, + RET_CHANGE2 +} iter_enum; + +/* Custom group iteration callback data */ +typedef struct { + char name[NAMELEN]; /* The name of the object */ + H5O_type_t type; /* The type of the object */ + iter_enum command; /* The type of return value */ +} iter_info; + +int iter_strcmp(const void *s1, const void *s2); + +/**************************************************************** +** +** iter_strcmp(): String comparison routine for qsort +** +****************************************************************/ +int iter_strcmp(const void *s1, const void *s2) +{ + return(HDstrcmp(*(const char * const *)s1,*(const char * const *)s2)); +} + +/**************************************************************** +** +** liter_cb(): Custom link iteration callback routine. +** +****************************************************************/ +static herr_t +liter_cb(hid_t H5_ATTR_UNUSED group, const char *name, const H5L_info_t H5_ATTR_UNUSED *link_info, + void *op_data) +{ + iter_info *info = (iter_info *)op_data; + static int count = 0; + static int count2 = 0; + + HDstrcpy(info->name, name); + + switch(info->command) { + case RET_ZERO: + return(0); + + case RET_TWO: + return(2); + + case RET_CHANGE: + count++; + return(count > 10 ? 1 : 0); + + case RET_CHANGE2: + count2++; + return(count2 > 10 ? 1 : 0); + + default: + printf("invalid iteration command"); + return(-1); + } /* end switch */ +} /* end liter_cb() */ + +/*------------------------------------------------------------------------- + * Function: test_iter_group + * + * Purpose: Tests group iteration + * + * Return: Success: 0 + * Failure: -1 + * + * Programmer: Binh-Minh Ribler + * Friday, September 9, 2016 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static void test_iter_group(FileAccPropList& fapl) +{ + int i; /* counting variable */ + hsize_t idx; /* Index in the group */ + char name[NAMELEN]; /* temporary name buffer */ + char *lnames[NDATASETS + 2];/* Names of the links created */ + iter_info info; /* Custom iteration information */ + herr_t ret; /* Generic return value */ + + /* Output message about test being performed */ + SUBTEST("Group Iteration"); + + /* Create the test file with the datasets */ + try { + // Create file + H5File file(FILE_ITERATE, H5F_ACC_TRUNC, FileCreatPropList::DEFAULT, fapl); + + /* Test iterating over empty group */ + info.command = RET_ZERO; + idx = 0; + ret = H5Literate(file.getId(), H5_INDEX_NAME, H5_ITER_INC, &idx, liter_cb, &info); + verify_val(ret, SUCCEED, "H5Literate", __LINE__, __FILE__); + + DataType datatype(PredType::NATIVE_INT); + + // Create a scalar file space + DataSpace filespace; + + for (i=0; i< NDATASETS; i++) + { + sprintf(name, "Dataset %d", i); + + // Create a dataset in the file + DataSet dataset = file.createDataSet(name, datatype, filespace); + + /* Keep a copy of the dataset names */ + lnames[i] = HDstrdup(name); + check_values(lnames[i], "HDstrdup returns NULL", __LINE__, __FILE__); + + } /* end for */ + + /* Create a group and named datatype under root group for testing */ + Group grp(file.createGroup(GROUP1, 0)); + lnames[NDATASETS] = HDstrdup("grp"); + check_values(lnames[NDATASETS], "HDstrdup returns NULL", __LINE__, __FILE__); + + datatype.commit(file, "dtype"); + lnames[NDATASETS + 1] = HDstrdup("dtype"); + check_values(lnames[NDATASETS], "HDstrdup returns NULL", __LINE__, __FILE__); + + /* Sort the dataset names */ + HDqsort(lnames, (size_t)(NDATASETS + 2), sizeof(char *), iter_strcmp); + + + /* Iterate through the datasets in the root group in various ways */ + + // Open data file to read + file.openFile(FILE_ITERATE, H5F_ACC_RDONLY, fapl); + + // Open the root group + Group root_group(file.openGroup("/")); + + // Get the number of object in the root group + hsize_t nobjs = root_group.getNumObjs(); + verify_val(nobjs, (hsize_t)(NDATASETS + 2), "H5Gget_info", __LINE__, __FILE__); + + H5std_string obj_name; + for (i = 0; i < nobjs; i++) + { + //H5O_info_t oinfo; /* Object info */ + + obj_name = root_group.getObjnameByIdx(i); + //ret = (herr_t)H5Lget_name_by_idx(root_group, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)i, dataset_name, (size_t)NAMELEN, H5P_DEFAULT); + + //oinfo = root_group.childObjType((hsize_t)i, H5_INDEX_NAME, H5_ITER_INC, "."); + //ret = H5Oget_info_by_idx(root_group, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)i, &oinfo, H5P_DEFAULT); + } /* end for */ + + // Attempted to iterate with invalid index, should fail + try { + obj_name = root_group.getObjnameByIdx(NDATASETS + 3); + + // Should FAIL but didn't, so throw an invalid action exception + throw InvalidActionException("Group::getObjnameByIdx", "Attempt to iterate with invalid index"); + } + catch (GroupIException& invalid_action) // invalid index + {} // do nothing, exception expected + + // Attempted to iterate with negative index, should fail + try { + info.command = RET_ZERO; + idx = (hsize_t)-1; + obj_name = root_group.getObjnameByIdx(idx); + + // Should FAIL but didn't, so throw an invalid action exception + throw InvalidActionException("Group::getObjnameByIdx", "Attempt to iterate with negative index"); + } + catch (FileIException& invalid_action) // invalid index + {} // do nothing, exception expected + catch (GroupIException& invalid_action) // invalid index + {} // do nothing, exception expected + + /* Test skipping exactly as many entries as in the group */ + try { + info.command = RET_ZERO; + idx = NDATASETS + 2; + obj_name = root_group.getObjnameByIdx(idx); + + // Should FAIL but didn't, so throw an invalid action exception + throw InvalidActionException("Group::getObjnameByIdx", "Attempt to iterate with negative index"); + } + catch (FileIException& invalid_action) // invalid index + {} // do nothing, exception expected + catch (GroupIException& invalid_action) // invalid index + {} // do nothing, exception expected + + /* Test skipping more entries than are in the group */ + try { + info.command = RET_ZERO; + idx = NDATASETS + 3; + obj_name = root_group.getObjnameByIdx(idx); + + // Should FAIL but didn't, so throw an invalid action exception + throw InvalidActionException("Group::getObjnameByIdx", "Attempt to iterate with negative index"); + } + catch (FileIException& invalid_action) // invalid index + {} // do nothing, exception expected + catch (GroupIException& invalid_action) // invalid index + {} // do nothing, exception expected + + /* Free the dataset names */ + for(i = 0; i< (NDATASETS + 2); i++) + HDfree(lnames[i]); + + // Everything will be closed as they go out of scope + + PASSED(); + } // try block + + // catch all other exceptions + catch (Exception& E) + { + issue_fail_msg("test_iter_group", __LINE__, __FILE__); + } + +#if 0 + /* Test all objects in group, when callback always returns 0 */ + info.command = RET_ZERO; + idx = 0; + if((ret = H5Literate(file, H5_INDEX_NAME, H5_ITER_INC, &idx, liter_cb, &info)) > 0) + TestErrPrintf("Group iteration function didn't return zero correctly!\n"); + + /* Test all objects in group, when callback always returns 1 */ + /* This also tests the "restarting" ability, because the index changes */ + info.command = RET_TWO; + i = 0; + idx = 0; + while((ret = H5Literate(file, H5_INDEX_NAME, H5_ITER_INC, &idx, liter_cb, &info)) > 0) { + /* Verify return value from iterator gets propagated correctly */ + verify_val(ret, 2, "H5Literate", __LINE__, __FILE__); + + /* Increment the number of times "2" is returned */ + i++; + + /* Verify that the index is the correct value */ + verify_val(idx, (hsize_t)i, "H5Literate", __LINE__, __FILE__); + if(idx > (NDATASETS + 2)) + TestErrPrintf("Group iteration function walked too far!\n"); + + /* Verify that the correct name is retrieved */ + if(HDstrcmp(info.name, lnames[(size_t)(idx - 1)]) != 0) + TestErrPrintf("Group iteration function didn't return name correctly for link - lnames[%u] = '%s'!\n", (unsigned)(idx - 1), lnames[(size_t)(idx - 1)]); + } /* end while */ + verify_val(ret, -1, "H5Literate", __LINE__, __FILE__); + + if(i != (NDATASETS + 2)) + TestErrPrintf("%u: Group iteration function didn't perform multiple iterations correctly!\n", __LINE__); + + /* Test all objects in group, when callback changes return value */ + /* This also tests the "restarting" ability, because the index changes */ + info.command = new_format ? RET_CHANGE2 : RET_CHANGE; + i = 0; + idx = 0; + while((ret = H5Literate(file, H5_INDEX_NAME, H5_ITER_INC, &idx, liter_cb, &info)) >= 0) { + /* Verify return value from iterator gets propagated correctly */ + verify_val(ret, 1, "H5Literate", __LINE__, __FILE__); + + /* Increment the number of times "1" is returned */ + i++; + + /* Verify that the index is the correct value */ + verify_val(idx, (hsize_t)(i + 10), "H5Literate", __LINE__, __FILE__); + if(idx > (NDATASETS + 2)) + TestErrPrintf("Group iteration function walked too far!\n"); + + /* Verify that the correct name is retrieved */ + if(HDstrcmp(info.name, lnames[(size_t)(idx - 1)]) != 0) + TestErrPrintf("Group iteration function didn't return name correctly for link - lnames[%u] = '%s'!\n", (unsigned)(idx - 1), lnames[(size_t)(idx - 1)]); + } /* end while */ + verify_val(ret, -1, "H5Literate", __LINE__, __FILE__); + + if(i != 42 || idx != 52) + TestErrPrintf("%u: Group iteration function didn't perform multiple iterations correctly!\n", __LINE__); + + ret = H5Fclose(file); + CHECK(ret, FAIL, "H5Fclose"); + +#endif +} /* test_iter_group() */ + + +/**************************************************************** +** +** printelems(): Open an attribute and verify that it has a +** the correct name +** +****************************************************************/ +const H5std_string FILE_NAME("titerate.h5"); +const H5std_string GRP_NAME("/Group_A"); +const H5std_string FDATASET_NAME( "file dset" ); +const H5std_string GDATASET_NAME( "group dset" ); +const H5std_string ATTR_NAME( "Units" ); +const H5std_string FATTR_NAME( "F attr" ); +const H5std_string GATTR_NAME( "G attr" ); +const int DIM1 = 2; +void printelems(const Group& group, const H5std_string& dsname, const H5std_string& atname) +{ + try + { + DataSet d1(group.openDataSet(dsname)); + DataSpace s1 = d1.getSpace(); + s1.close(); + d1.close(); + + unsigned idx = 0; + Attribute a1(group.openAttribute(idx)); + H5std_string aname = a1.getName(); + verify_val(aname, atname, "printelems", __LINE__, __FILE__); + + a1.close(); + } + // catch failure caused by the DataSpace operations + catch( DataSpaceIException error ) + { + error.printError(); + } + + // catch failure caused by the Group operations + catch( GroupIException error ) + { + error.printError(); + } + + // catch failure caused by the DataSet operations + catch( DataSetIException error ) + { + error.printError(); + } +} + +/*------------------------------------------------------------------------- + * Function: test_HDFFV_9920 + * + * Purpose: Tests the fix for HDFFV-9920 + * + * Programmer: Binh-Minh Ribler + * Friday, September 9, 2016 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static void test_HDFFV_9920() +{ + int attr_data[2] = { 100, 200}; + hsize_t dims[1] = { DIM1 }; + + try + { + // Create a new file and a group in it + H5File file( FILE_NAME, H5F_ACC_TRUNC ); + + Group gr1(file.createGroup(GRP_NAME)); + + // Create the data space for the attribute. + DataSpace dspace = DataSpace (1, dims ); + + DataSet fds = file.createDataSet(FDATASET_NAME, PredType::STD_I32BE, dspace); + DataSet gds = gr1.createDataSet(GDATASET_NAME, PredType::STD_I32BE, dspace); + + // Create a file attribute and a group attribute. + Attribute fa1 = file.createAttribute(FATTR_NAME, PredType::STD_I32BE, + dspace); + Attribute ga1 = gr1.createAttribute(GATTR_NAME, PredType::STD_I32BE, + dspace); + + // Write the attribute data. + fa1.write( PredType::NATIVE_INT, attr_data); + ga1.write( PredType::NATIVE_INT, attr_data); + + fa1.close(); + ga1.close(); + fds.close(); + gds.close(); + + // Verify the attributes have correct names. + printelems(file, FDATASET_NAME, FATTR_NAME); + printelems(gr1, GDATASET_NAME, GATTR_NAME); + + } // end of try block + + // catch failure caused by the H5File operations + catch( DataSpaceIException error ) + { + error.printError(); + } + + // catch failure caused by the H5File operations + catch( AttributeIException error ) + { + error.printError(); + } + + // catch failure caused by the H5File operations + catch( FileIException error ) + { + error.printError(); + } + + // catch failure caused by the DataSet operations + catch( DataSetIException error ) + { + error.printError(); + } +} + + +/*------------------------------------------------------------------------- + * Function: test_iterate + * + * Purpose: Tests iterate functionality + * + * Return: Success: 0 + * Failure: -1 + * + * Programmer: Binh-Minh Ribler + * Tuesday, September 6, 2016 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +#ifdef __cplusplus +extern "C" +#endif +void test_iterate() +{ + // Output message about test being performed + MESSAGE(5, ("Testing Iterate Feature\n")); + + // Create access property with latest library version. + FileAccPropList fapl; + fapl.setLibverBounds(H5F_LIBVER_LATEST, H5F_LIBVER_LATEST); + + test_iter_group(fapl); // Test iterating groups + test_HDFFV_9920(); // Test the fix of HDFFV-9920 + //test_iter_attr(fapl); // Test iterating attributes + +} // test_iterate + +/*------------------------------------------------------------------------- + * Function: cleanup_iterate + * + * Purpose: Cleanup temporary test files + * + * Return: none + * + * Programmer: (use C version) + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +#ifdef __cplusplus +extern "C" +#endif +void cleanup_iterate() +{ + HDremove(FILE_ITERATE.c_str()); +} // cleanup_iterate -- cgit v0.12 From 43dd56f0a01b7c242c9d02e45098450edd965f24 Mon Sep 17 00:00:00 2001 From: Binh-Minh Ribler Date: Mon, 26 Sep 2016 23:08:38 -0500 Subject: Purpose: Updated documentation Description: Revised class brief description and other comments for up-to-date info. Platforms tested: Linux/32 2.6 (jam) Linux/64 (platypus) Darwin (osx1010test) --- c++/src/H5ArrayType.h | 2 ++ c++/src/H5AtomType.h | 2 ++ c++/src/H5Attribute.h | 2 ++ c++/src/H5CompType.h | 2 ++ c++/src/H5DataSet.h | 2 ++ c++/src/H5DataSpace.h | 7 ++++++- c++/src/H5DataType.h | 2 ++ c++/src/H5DcreatProp.h | 6 ++++-- c++/src/H5DxferProp.h | 6 ++++-- c++/src/H5EnumType.h | 7 ++++++- c++/src/H5FaccProp.h | 7 ++++++- c++/src/H5FcreatProp.h | 7 ++++++- c++/src/H5File.h | 5 +++-- c++/src/H5FloatType.h | 7 ++++++- c++/src/H5Group.h | 9 +-------- c++/src/H5IdComponent.h | 2 -- c++/src/H5IntType.h | 7 ++++++- c++/src/H5Location.h | 30 +++++++----------------------- c++/src/H5Object.h | 49 ++++++++++++++++++++++--------------------------- c++/src/H5OcreatProp.h | 7 ++++++- c++/src/H5PredType.h | 2 ++ c++/src/H5PropList.h | 6 ++++++ c++/src/H5StrType.h | 7 ++++++- c++/src/H5VarLenType.h | 7 ++++++- 24 files changed, 115 insertions(+), 75 deletions(-) diff --git a/c++/src/H5ArrayType.h b/c++/src/H5ArrayType.h index fb6c711..aa7450c 100644 --- a/c++/src/H5ArrayType.h +++ b/c++/src/H5ArrayType.h @@ -24,6 +24,8 @@ namespace H5 { /*! \class ArrayType \brief Class ArrayType inherits from DataType and provides wrappers for the HDF5's Array Datatypes. + + Inheritance: DataType -> H5Object -> H5Location -> IdComponent */ class H5_DLLCPP ArrayType : public DataType { public: diff --git a/c++/src/H5AtomType.h b/c++/src/H5AtomType.h index 792312a..9798efc 100644 --- a/c++/src/H5AtomType.h +++ b/c++/src/H5AtomType.h @@ -27,6 +27,8 @@ namespace H5 { AtomType provides operations on HDF5 atomic datatypes. It also inherits from DataType. + + Inheritance: DataType -> H5Object -> H5Location -> IdComponent */ class H5_DLLCPP AtomType : public DataType { public: diff --git a/c++/src/H5Attribute.h b/c++/src/H5Attribute.h index 6590c23..5455f76 100644 --- a/c++/src/H5Attribute.h +++ b/c++/src/H5Attribute.h @@ -28,6 +28,8 @@ namespace H5 { Attribute and DataSet are derivatives of AbstractDs. Attribute also inherits from H5Location because an attribute can be used to specify a location. + + Inheritance: multiple H5Location/AbstractDs -> IdComponent */ class H5_DLLCPP Attribute : public AbstractDs, public H5Location { public: diff --git a/c++/src/H5CompType.h b/c++/src/H5CompType.h index bd6d76c..8ecc8bf 100644 --- a/c++/src/H5CompType.h +++ b/c++/src/H5CompType.h @@ -24,6 +24,8 @@ namespace H5 { /*! \class CompType \brief CompType is a derivative of a DataType and operates on HDF5 compound datatypes. + + Inheritance: DataType -> H5Object -> H5Location -> IdComponent */ class H5_DLLCPP CompType : public DataType { public: diff --git a/c++/src/H5DataSet.h b/c++/src/H5DataSet.h index c97e5b0..dd98d26 100644 --- a/c++/src/H5DataSet.h +++ b/c++/src/H5DataSet.h @@ -27,6 +27,8 @@ namespace H5 { An datasets has many characteristics similar to an attribute, thus both Attribute and DataSet are derivatives of AbstractDs. DataSet also inherits from H5Object because a dataset is an HDF5 object. + + Inheritance: multiple H5Object/AbstractDs -> H5Location -> IdComponent */ class H5_DLLCPP DataSet : public H5Object, public AbstractDs { public: diff --git a/c++/src/H5DataSpace.h b/c++/src/H5DataSpace.h index 384f1a3..38d8135 100644 --- a/c++/src/H5DataSpace.h +++ b/c++/src/H5DataSpace.h @@ -21,7 +21,12 @@ namespace H5 { #endif -//! Class DataSpace operates on HDF5 dataspaces. +/*! \class DataSpace + \brief Class DataSpace inherits from IdComponent and provides wrappers for + the HDF5's dataspaces. + + Inheritance: IdComponent +*/ class H5_DLLCPP DataSpace : public IdComponent { public: ///\brief Default DataSpace objects diff --git a/c++/src/H5DataType.h b/c++/src/H5DataType.h index 7584cff..e332cee 100644 --- a/c++/src/H5DataType.h +++ b/c++/src/H5DataType.h @@ -30,6 +30,8 @@ namespace H5 { DataType inherits from H5Object because a named datatype is an HDF5 object and is a base class of ArrayType, AtomType, CompType, EnumType, and VarLenType. + + Inheritance: DataType -> H5Object -> H5Location -> IdComponent */ class H5_DLLCPP DataType : public H5Object { public: diff --git a/c++/src/H5DcreatProp.h b/c++/src/H5DcreatProp.h index fa7b1c1..07c9077 100644 --- a/c++/src/H5DcreatProp.h +++ b/c++/src/H5DcreatProp.h @@ -27,8 +27,10 @@ namespace H5 { class DataType; /*! \class DSetCreatPropList - \brief Class DSetCreatPropList represents the dataset creation property - list. + \brief Class DSetCreatPropList inherits from ObjCreatPropList and provides + wrappers for the HDF5 dataset creation property functions. + + Inheritance: ObjCreatPropList -> PropList -> IdComponent */ class H5_DLLCPP DSetCreatPropList : public ObjCreatPropList { public: diff --git a/c++/src/H5DxferProp.h b/c++/src/H5DxferProp.h index 31fc372..a4af53c 100644 --- a/c++/src/H5DxferProp.h +++ b/c++/src/H5DxferProp.h @@ -25,8 +25,10 @@ namespace H5 { #endif /*! \class DSetMemXferPropList - \brief Class DSetMemXferPropList represents the dataset memory and - transfer property list. + \brief Class DSetCreatPropList inherits from PropList and provides + wrappers for the HDF5 dataset memory and transfer property list. + + Inheritance: ObjCreatPropList -> PropList -> IdComponent */ class H5_DLLCPP DSetMemXferPropList : public PropList { public: diff --git a/c++/src/H5EnumType.h b/c++/src/H5EnumType.h index fe36e8b..bc5b870 100644 --- a/c++/src/H5EnumType.h +++ b/c++/src/H5EnumType.h @@ -21,7 +21,12 @@ namespace H5 { #endif -//! Class EnumType operates on HDF5 enum datatypes. +/*! \class EnumType + \brief EnumType is a derivative of a DataType and operates on HDF5 + enum datatypes. + + Inheritance: DataType -> H5Object -> H5Location -> IdComponent +*/ class H5_DLLCPP EnumType : public DataType { public: diff --git a/c++/src/H5FaccProp.h b/c++/src/H5FaccProp.h index 831488c..e96d02f 100644 --- a/c++/src/H5FaccProp.h +++ b/c++/src/H5FaccProp.h @@ -24,7 +24,12 @@ namespace H5 { #endif -//! Class FileAccPropList represents the HDF5 file access property list. +/*! \class FileAccPropList + \brief Class FileAccPropList inherits from PropList and provides + wrappers for the HDF5 file access property list. + + Inheritance: PropList -> IdComponent +*/ class H5_DLLCPP FileAccPropList : public PropList { public: ///\brief Default file access property list. diff --git a/c++/src/H5FcreatProp.h b/c++/src/H5FcreatProp.h index 5d81078..b2a5c2b 100644 --- a/c++/src/H5FcreatProp.h +++ b/c++/src/H5FcreatProp.h @@ -21,7 +21,12 @@ namespace H5 { #endif -//! Class FileCreatPropList represents the HDF5 file create property list. +/*! \class FileCreatPropList + \brief Class FileCreatPropList inherits from PropList and provides + wrappers for the HDF5 file create property list. + + Inheritance: PropList -> IdComponent +*/ class H5_DLLCPP FileCreatPropList : public PropList { public: ///\brief Default file creation property list. diff --git a/c++/src/H5File.h b/c++/src/H5File.h index 7ec92fe..476c5b9 100644 --- a/c++/src/H5File.h +++ b/c++/src/H5File.h @@ -23,9 +23,10 @@ namespace H5 { #endif /*! \class H5File - \brief Class H5File represents an HDF5 file. + \brief Class H5File represents an HDF5 file and inherits from class Group + as file is a root group. - It inherits from H5Location and CommonFG. + Inheritance: Group -> H5Object -> H5Location -> IdComponent */ class H5_DLLCPP H5File : public Group { public: diff --git a/c++/src/H5FloatType.h b/c++/src/H5FloatType.h index e88093e..ce816a4 100644 --- a/c++/src/H5FloatType.h +++ b/c++/src/H5FloatType.h @@ -21,7 +21,12 @@ namespace H5 { #endif -//! Class FloatType operates on HDF5 floating point datatype. +/*! \class FloatType + \brief FloatType is a derivative of a DataType and operates on HDF5 + floating point datatype. + + Inheritance: AtomType -> DataType -> H5Object -> H5Location -> IdComponent +*/ class H5_DLLCPP FloatType : public AtomType { public: // Creates a floating-point type using a predefined type. diff --git a/c++/src/H5Group.h b/c++/src/H5Group.h index f1dfce1..b6ec425 100644 --- a/c++/src/H5Group.h +++ b/c++/src/H5Group.h @@ -24,19 +24,12 @@ namespace H5 { /*! \class Group \brief Class Group represents an HDF5 group. - It inherits many operations from H5Location and CommonFG. + Inheritance: H5Object -> H5Location -> IdComponent */ // Class forwarding -//class Group; -//class H5File; class ArrayType; class VarLenType; -/*! \class CommonFG - \brief \a CommonFG is an abstract base class of H5File and Group. - - It provides common operations of H5File and Group. -*/ class H5_DLLCPP Group : public H5Object { public: // Group constructor to create a group or file (aka root group). diff --git a/c++/src/H5IdComponent.h b/c++/src/H5IdComponent.h index 61c8bd6..92765f2 100644 --- a/c++/src/H5IdComponent.h +++ b/c++/src/H5IdComponent.h @@ -17,8 +17,6 @@ #ifndef __IdComponent_H #define __IdComponent_H -// IdComponent represents an HDF5 object that has an identifier. - #ifndef H5_NO_NAMESPACE namespace H5 { #endif diff --git a/c++/src/H5IntType.h b/c++/src/H5IntType.h index e28f5c2..362a7e3 100644 --- a/c++/src/H5IntType.h +++ b/c++/src/H5IntType.h @@ -21,7 +21,12 @@ namespace H5 { #endif -//! Class IntType operates on HDF5 integer datatype. +/*! \class IntType + \brief IntType is a derivative of a DataType and operates on HDF5 + integer datatype. + + Inheritance: AtomType -> DataType -> H5Object -> H5Location -> IdComponent +*/ class H5_DLLCPP IntType : public AtomType { public: // Creates an integer type using a predefined type diff --git a/c++/src/H5Location.h b/c++/src/H5Location.h index 4f7a717..9ab67d3 100644 --- a/c++/src/H5Location.h +++ b/c++/src/H5Location.h @@ -23,35 +23,19 @@ namespace H5 { #endif -//class H5_DLLCPP H5Location; // forward declaration for UserData4Aiterate - -// Define the operator function pointer for H5Aiterate(). -//typedef void (*attr_operator_t)( H5Location& loc/*in*/, - //const H5std_string attr_name/*in*/, - //void *operator_data/*in,out*/); - -//! User data for attribute iteration - /* class UserData4Aiterate { - public: - attr_operator_t op; - void* opData; - H5Location* location; -}; - */ - -// Class forwarding -class H5_DLLCPP ArrayType; -class H5_DLLCPP VarLenType; - /*! \class H5Location \brief H5Location is an abstract base class, added in version 1.8.12. It provides a collection of wrappers for the C functions that take a location identifier to specify the HDF5 object. The location identifier - can be either file, group, dataset, or named datatype. + can be either file, group, dataset, attribute, or named datatype. + Wrappers for H5A functions stay in H5Object. + + Inheritance: IdComponent */ -// Most of these methods were in H5Object but are now moved here because -// a location can be a file, group, dataset, or named datatype. -BMR, 2013-10-1 +// Class forwarding +class H5_DLLCPP ArrayType; +class H5_DLLCPP VarLenType; class H5_DLLCPP H5Location : public IdComponent { public: // Flushes all buffers associated with this location to disk. diff --git a/c++/src/H5Object.h b/c++/src/H5Object.h index 372faed..e570055 100644 --- a/c++/src/H5Object.h +++ b/c++/src/H5Object.h @@ -17,27 +17,32 @@ #ifndef __H5Object_H #define __H5Object_H -//#include "H5Location.h" -//#include "H5Classes.h" // constains forward class declarations - -// H5Object is a baseclass. It has these subclasses: -// Group, DataSet, and DataType. -// DataType, in turn, has several specific datatypes as subclasses. -// Modification: -// Sept 18, 2012: Added class H5Location in between IdComponent and -// H5Object. An H5File now inherits from H5Location. All HDF5 -// wrappers in H5Object are moved up to H5Location. H5Object -// is left mostly empty for future wrappers that are only for -// group, dataset, and named datatype. Note that the reason for -// adding H5Location instead of simply moving H5File to be under -// H5Object is H5File is not an HDF5 object, and renaming H5Object -// to H5Location will risk breaking user applications. -// -BMR -// Apr 2, 2014: Added wrapper getObjName for H5Iget_name #ifndef H5_NO_NAMESPACE namespace H5 { #endif +/*! \class H5Object + \brief Class H5Object is a bridge between H5Location and DataSet, DataType, + and Group. + + Modification: + Sept 18, 2012: Added class H5Location in between IdComponent and + H5Object. An H5File now inherits from H5Location. All HDF5 + wrappers in H5Object are moved up to H5Location. H5Object + is left mostly empty for future wrappers that are only for + group, dataset, and named datatype. Note that the reason for + adding H5Location instead of simply moving H5File to be under + H5Object is H5File is not an HDF5 object, and renaming H5Object + to H5Location will risk breaking user applications. + -BMR + Apr 2, 2014: Added wrapper getObjName for H5Iget_name + Sep 21, 2016: Rearranging classes (HDFFV-9920) moved H5A wrappers back + into H5Object. This way, C functions that takes attribute id + can be in H5Location and those that cannot take attribute id + can be in H5Object. + + Inheritance: H5Location -> IdComponent +*/ // Class forwarding class H5_DLLCPP H5Object; class H5_DLLCPP Attribute; @@ -55,18 +60,8 @@ class UserData4Aiterate { H5Object* location; }; -/*! \class H5Object - \brief Class H5Object is a bridge between H5Location and DataSet, DataType, - and Group. - - All the wrappers in H5Object were moved to H5Location. -*/ class H5_DLLCPP H5Object : public H5Location { public: -// Rearranging classes (HDFFV-9920) moved H5A wrappers back into H5Object. -// That way, C functions that takes attribute id can be in -// H5Location and those that cannot take attribute id can be in H5Object. - // Creates an attribute for the specified object // PropList is currently not used, so always be default. Attribute createAttribute( const char* name, const DataType& type, const DataSpace& space, const PropList& create_plist = PropList::DEFAULT ) const; diff --git a/c++/src/H5OcreatProp.h b/c++/src/H5OcreatProp.h index 0fda34d..0532b3c 100644 --- a/c++/src/H5OcreatProp.h +++ b/c++/src/H5OcreatProp.h @@ -21,7 +21,12 @@ namespace H5 { #endif -//! Class ObjCreatPropList represents the HDF5 object creation property list. +/*! \class ObjCreatPropList + \brief Class ObjCreatPropList inherits from PropList and provides + wrappers for the HDF5 file create property list. + + Inheritance: PropList -> IdComponent +*/ class H5_DLLCPP ObjCreatPropList : public PropList { public: ///\brief Default object creation property list. diff --git a/c++/src/H5PredType.h b/c++/src/H5PredType.h index f560765..1e789ef 100644 --- a/c++/src/H5PredType.h +++ b/c++/src/H5PredType.h @@ -27,6 +27,8 @@ namespace H5 { These types can only be made copy of, not created by H5Tcreate or closed by H5Tclose. They are treated as constants. + + Inheritance: AtomType -> DataType -> H5Object -> H5Location -> IdComponent */ class H5_DLLCPP PredType : public AtomType { public: diff --git a/c++/src/H5PropList.h b/c++/src/H5PropList.h index 7f6ee31..dbd1263 100644 --- a/c++/src/H5PropList.h +++ b/c++/src/H5PropList.h @@ -22,6 +22,12 @@ namespace H5 { #endif //! Class PropList provides operations for generic property lists. +/*! \class PropList + \brief Class PropList inherits from IdComponent and provides wrappers for + the HDF5 generic property list. + + Inheritance: IdComponent +*/ class H5_DLLCPP PropList : public IdComponent { public: ///\brief Default property list diff --git a/c++/src/H5StrType.h b/c++/src/H5StrType.h index 8b3a773..eac6693 100644 --- a/c++/src/H5StrType.h +++ b/c++/src/H5StrType.h @@ -21,7 +21,12 @@ namespace H5 { #endif -//! Class StrType operates on HDF5 string datatypes. +/*! \class StrType + \brief StrType is a derivative of a DataType and operates on HDF5 + string datatype. + + Inheritance: AtomType -> DataType -> H5Object -> H5Location -> IdComponent +*/ class H5_DLLCPP StrType : public AtomType { public: // Creates a string type using a predefined type diff --git a/c++/src/H5VarLenType.h b/c++/src/H5VarLenType.h index 672b3db..4898135 100644 --- a/c++/src/H5VarLenType.h +++ b/c++/src/H5VarLenType.h @@ -21,7 +21,12 @@ namespace H5 { #endif -//! VarLenType operates on the HDF5 C's Variable-length Datatypes. +/*! \class VarLenType + \brief VarLenType is a derivative of a DataType and operates on HDF5 + C's Variable-length Datatypes. + + Inheritance: DataType -> H5Object -> H5Location -> IdComponent +*/ class H5_DLLCPP VarLenType : public DataType { public: // Constructor that creates a variable-length datatype based -- cgit v0.12 From fe5c359ce94012dde56938a125a71393a3f8e852 Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Fri, 7 Oct 2016 09:58:40 -0500 Subject: Removed unused H5T_NATIVE_INTEGER_# variables due to NAG fixes. HDFFV-9973 Fortran library fails to compile and fails tests with NAG compiler --- fortran/src/H5f90global.F90 | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/fortran/src/H5f90global.F90 b/fortran/src/H5f90global.F90 index aef3e4d..b84f6c2 100644 --- a/fortran/src/H5f90global.F90 +++ b/fortran/src/H5f90global.F90 @@ -85,11 +85,7 @@ MODULE H5GLOBAL ! integer data types are added INTEGER, PARAMETER :: INTEGER_TYPES_LEN = 27 - INTEGER(HID_T) :: H5T_NATIVE_INTEGER_1, & - H5T_NATIVE_INTEGER_2, & - H5T_NATIVE_INTEGER_4, & - H5T_NATIVE_INTEGER_8, & - H5T_NATIVE_REAL_C_FLOAT, & + INTEGER(HID_T) :: H5T_NATIVE_REAL_C_FLOAT, & H5T_NATIVE_REAL_C_DOUBLE, & H5T_NATIVE_REAL_C_LONG_DOUBLE, & H5T_NATIVE_INTEGER, & -- cgit v0.12 From 21b5e3132ebb544797130c57224fca2cb2654b15 Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Mon, 10 Oct 2016 10:25:09 -0500 Subject: Fix:HDFFV-9987 With HDF5-1.10 you cannot specify default dataspace for Fortran (H5S_ALL_F) Resolution: Made H5S_ALL_F INTEGER(HID_T) to match C. --- fortran/src/H5_f.c | 45 +++++++++++++++++++++++++------------------- fortran/src/H5_ff.F90 | 5 ++++- fortran/src/H5f90global.F90 | 46 +++++++++++++++++++++++++-------------------- fortran/src/H5f90proto.h | 14 ++++++++------ fortran/test/tH5T.F90 | 2 +- fortran/test/tH5T_F03.F90 | 2 +- 6 files changed, 66 insertions(+), 48 deletions(-) diff --git a/fortran/src/H5_f.c b/fortran/src/H5_f.c index f9fe927..860f9cb 100644 --- a/fortran/src/H5_f.c +++ b/fortran/src/H5_f.c @@ -334,6 +334,7 @@ h5close_types_c( hid_t_f * types, int_f *lentypes, * h5p_flags_int - H5P interface flags of type integer * h5r_flags - H5R interface flags * h5s_flags - H5S interface flags + * h5s_hid_flags - H5S interface flags of type hid_t * h5s_hsize_flags - H5S interface flags of type hsize_t * h5t_flags - H5T interface flags * h5z_flags - H5Z interface flags @@ -356,6 +357,8 @@ h5close_types_c( hid_t_f * types, int_f *lentypes, * MSB, July 9, 2009 * Added type h5d_flags of type size_t * MSB, Feb. 28, 2014 + * Added type h5s_hid_flags of type hid_t + * MSB, Oct. 10, 2016 * SOURCE */ int_f @@ -363,8 +366,9 @@ h5init_flags_c( int_f *h5d_flags, size_t_f *h5d_size_flags, int_f *h5e_flags, hid_t_f *h5e_hid_flags, int_f *h5f_flags, int_f *h5fd_flags, hid_t_f *h5fd_hid_flags, int_f *h5g_flags, int_f *h5i_flags, int_f *h5l_flags, int_f *h5o_flags, - hid_t_f *h5p_flags, int_f *h5p_flags_int, int_f *h5r_flags, int_f *h5s_flags, - hsize_t_f *h5s_hsize_flags, int_f *h5t_flags, int_f *h5z_flags, int_f *h5_generic_flags, + hid_t_f *h5p_flags, int_f *h5p_flags_int, int_f *h5r_flags, + int_f *h5s_flags, hid_t_f *h5s_hid_flags, hsize_t_f *h5s_hsize_flags, + int_f *h5t_flags, int_f *h5z_flags, int_f *h5_generic_flags, haddr_t_f *h5_haddr_generic_flags) /******/ { @@ -593,29 +597,32 @@ h5init_flags_c( int_f *h5d_flags, size_t_f *h5d_size_flags, /* * H5S flags */ + + h5s_hid_flags[0] = (hid_t_f)H5S_ALL; + + h5s_hsize_flags[0] = (hsize_t_f)H5S_UNLIMITED; + h5s_flags[0] = (int_f)H5S_SCALAR; h5s_flags[1] = (int_f)H5S_SIMPLE; h5s_flags[2] = (int_f)H5S_NULL; h5s_flags[3] = (int_f)H5S_SELECT_SET; h5s_flags[4] = (int_f)H5S_SELECT_OR; - h5s_flags[5] = (int_f)H5S_ALL; - - h5s_flags[6] = (int_f)H5S_SELECT_NOOP; - h5s_flags[7] = (int_f)H5S_SELECT_AND; - h5s_flags[8] = (int_f)H5S_SELECT_XOR; - h5s_flags[9] = (int_f)H5S_SELECT_NOTB; - h5s_flags[10] = (int_f)H5S_SELECT_NOTA; - h5s_flags[11] = (int_f)H5S_SELECT_APPEND; - h5s_flags[12] = (int_f)H5S_SELECT_PREPEND; - h5s_flags[13] = (int_f)H5S_SELECT_INVALID; - - h5s_flags[14] = (int_f)H5S_SEL_ERROR; - h5s_flags[15] = (int_f)H5S_SEL_NONE; - h5s_flags[16] = (int_f)H5S_SEL_POINTS; - h5s_flags[17] = (int_f)H5S_SEL_HYPERSLABS; - h5s_flags[18] = (int_f)H5S_SEL_ALL; - h5s_hsize_flags[0] = (hsize_t_f)H5S_UNLIMITED; + h5s_flags[5] = (int_f)H5S_SELECT_NOOP; + h5s_flags[6] = (int_f)H5S_SELECT_AND; + h5s_flags[7] = (int_f)H5S_SELECT_XOR; + h5s_flags[8] = (int_f)H5S_SELECT_NOTB; + h5s_flags[9] = (int_f)H5S_SELECT_NOTA; + + h5s_flags[10] = (int_f)H5S_SELECT_APPEND; + h5s_flags[11] = (int_f)H5S_SELECT_PREPEND; + h5s_flags[12] = (int_f)H5S_SELECT_INVALID; + h5s_flags[13] = (int_f)H5S_SEL_ERROR; + h5s_flags[14] = (int_f)H5S_SEL_NONE; + + h5s_flags[15] = (int_f)H5S_SEL_POINTS; + h5s_flags[16] = (int_f)H5S_SEL_HYPERSLABS; + h5s_flags[17] = (int_f)H5S_SEL_ALL; /* * H5T flags diff --git a/fortran/src/H5_ff.F90 b/fortran/src/H5_ff.F90 index 228e148..f2036ee 100644 --- a/fortran/src/H5_ff.F90 +++ b/fortran/src/H5_ff.F90 @@ -102,6 +102,7 @@ CONTAINS i_H5P_flags_int, & i_H5R_flags, & i_H5S_flags, & + i_H5S_hid_flags, & i_H5S_hsize_flags, & i_H5T_flags, & i_H5Z_flags, & @@ -114,7 +115,7 @@ CONTAINS H5F_FLAGS_LEN, H5G_FLAGS_LEN, H5FD_FLAGS_LEN, & H5FD_HID_FLAGS_LEN, H5I_FLAGS_LEN, H5L_FLAGS_LEN, & H5O_FLAGS_LEN, H5P_FLAGS_LEN, H5P_FLAGS_INT_LEN, & - H5R_FLAGS_LEN, H5S_FLAGS_LEN, H5S_HSIZE_FLAGS_LEN, & + H5R_FLAGS_LEN, H5S_FLAGS_LEN, H5S_HID_FLAGS_LEN, H5S_HSIZE_FLAGS_LEN, & H5T_FLAGS_LEN, H5Z_FLAGS_LEN, H5generic_FLAGS_LEN, H5generic_haddr_FLAGS_LEN IMPLICIT NONE INTEGER i_H5D_flags(H5D_FLAGS_LEN) @@ -132,6 +133,7 @@ CONTAINS INTEGER i_H5P_flags_int(H5P_FLAGS_INT_LEN) INTEGER i_H5R_flags(H5R_FLAGS_LEN) INTEGER i_H5S_flags(H5S_FLAGS_LEN) + INTEGER(HID_T) i_H5S_hid_flags(H5S_HID_FLAGS_LEN) INTEGER(HSIZE_T) i_H5S_hsize_flags(H5S_HSIZE_FLAGS_LEN) INTEGER i_H5T_flags(H5T_FLAGS_LEN) INTEGER i_H5Z_flags(H5Z_FLAGS_LEN) @@ -163,6 +165,7 @@ CONTAINS H5P_flags_int, & H5R_flags, & H5S_flags, & + H5S_hid_flags, & H5S_hsize_flags, & H5T_flags, & H5Z_flags, & diff --git a/fortran/src/H5f90global.F90 b/fortran/src/H5f90global.F90 index b84f6c2..a85ee50 100644 --- a/fortran/src/H5f90global.F90 +++ b/fortran/src/H5f90global.F90 @@ -747,25 +747,29 @@ MODULE H5GLOBAL ! ! H5S flags declaration ! - INTEGER, PARAMETER :: H5S_FLAGS_LEN = 19 + INTEGER, PARAMETER :: H5S_FLAGS_LEN = 18 INTEGER :: H5S_flags(H5S_FLAGS_LEN) INTEGER, PARAMETER :: H5S_HSIZE_FLAGS_LEN = 1 INTEGER(HSIZE_T) H5S_hsize_flags(H5S_HSIZE_FLAGS_LEN) + INTEGER, PARAMETER :: H5S_HID_FLAGS_LEN = 1 + INTEGER(HSIZE_T) H5S_hid_flags(H5S_HID_FLAGS_LEN) !DEC$if defined(BUILD_HDF5_DLL) !DEC$ATTRIBUTES DLLEXPORT :: /H5S_FLAGS/ + !DEC$ATTRIBUTES DLLEXPORT :: /H5S_HID_FLAGS/ !DEC$ATTRIBUTES DLLEXPORT :: /H5S_HSIZE_FLAGS/ !DEC$endif COMMON /H5S_FLAGS/ H5S_flags + COMMON /H5S_HID_FLAGS/ H5S_hid_flags COMMON /H5S_HSIZE_FLAGS/ H5S_hsize_flags INTEGER(HSIZE_T) :: H5S_UNLIMITED_F + INTEGER(HID_T) :: H5S_ALL_F + INTEGER :: H5S_SCALAR_F INTEGER :: H5S_SIMPLE_F INTEGER :: H5S_NULL_F - INTEGER :: H5S_ALL_F - INTEGER :: H5S_SELECT_NOOP_F INTEGER :: H5S_SELECT_SET_F INTEGER :: H5S_SELECT_OR_F @@ -783,29 +787,31 @@ MODULE H5GLOBAL INTEGER :: H5S_SEL_HYPERSLABS_F INTEGER :: H5S_SEL_ALL_F + EQUIVALENCE(H5S_hid_flags(1), H5S_ALL_F) + EQUIVALENCE(H5S_hsize_flags(1), H5S_UNLIMITED_F) + EQUIVALENCE(H5S_flags(1), H5S_SCALAR_F) EQUIVALENCE(H5S_flags(2), H5S_SIMPLE_F) EQUIVALENCE(H5S_flags(3), H5S_NULL_F) EQUIVALENCE(H5S_flags(4), H5S_SELECT_SET_F) EQUIVALENCE(H5S_flags(5), H5S_SELECT_OR_F) - EQUIVALENCE(H5S_flags(6), H5S_ALL_F) - - EQUIVALENCE(H5S_flags(7), H5S_SELECT_NOOP_F) - EQUIVALENCE(H5S_flags(8), H5S_SELECT_AND_F) - EQUIVALENCE(H5S_flags(9), H5S_SELECT_XOR_F) - EQUIVALENCE(H5S_flags(10), H5S_SELECT_NOTB_F) - EQUIVALENCE(H5S_flags(11), H5S_SELECT_NOTA_F) - EQUIVALENCE(H5S_flags(12), H5S_SELECT_APPEND_F) - EQUIVALENCE(H5S_flags(13), H5S_SELECT_PREPEND_F) - EQUIVALENCE(H5S_flags(14), H5S_SELECT_INVALID_F) - - - EQUIVALENCE(H5S_flags(15), H5S_SEL_ERROR_F) - EQUIVALENCE(H5S_flags(16), H5S_SEL_NONE_F) - EQUIVALENCE(H5S_flags(17), H5S_SEL_POINTS_F) - EQUIVALENCE(H5S_flags(18), H5S_SEL_HYPERSLABS_F) - EQUIVALENCE(H5S_flags(19), H5S_SEL_ALL_F) + + EQUIVALENCE(H5S_flags(6), H5S_SELECT_NOOP_F) + EQUIVALENCE(H5S_flags(7), H5S_SELECT_AND_F) + EQUIVALENCE(H5S_flags(8), H5S_SELECT_XOR_F) + EQUIVALENCE(H5S_flags(9), H5S_SELECT_NOTB_F) + EQUIVALENCE(H5S_flags(10), H5S_SELECT_NOTA_F) + + EQUIVALENCE(H5S_flags(11), H5S_SELECT_APPEND_F) + EQUIVALENCE(H5S_flags(12), H5S_SELECT_PREPEND_F) + EQUIVALENCE(H5S_flags(13), H5S_SELECT_INVALID_F) + EQUIVALENCE(H5S_flags(14), H5S_SEL_ERROR_F) + EQUIVALENCE(H5S_flags(15), H5S_SEL_NONE_F) + + EQUIVALENCE(H5S_flags(16), H5S_SEL_POINTS_F) + EQUIVALENCE(H5S_flags(17), H5S_SEL_HYPERSLABS_F) + EQUIVALENCE(H5S_flags(18), H5S_SEL_ALL_F) ! ! H5T flags declaration diff --git a/fortran/src/H5f90proto.h b/fortran/src/H5f90proto.h index f8b4564..67f28db 100644 --- a/fortran/src/H5f90proto.h +++ b/fortran/src/H5f90proto.h @@ -525,12 +525,14 @@ H5_FCDLL int_f h5open_c(void); H5_FCDLL int_f h5close_c(void); H5_FCDLL int_f h5init_types_c(hid_t_f *types, hid_t_f *floatingtypes, hid_t_f *integertypes); H5_FCDLL int_f h5close_types_c(hid_t_f *types, int_f *lentypes, hid_t_f *floatingtypes, int_f *floatinglen, hid_t_f *integertypes, int_f *integerlen); -H5_FCDLL int_f h5init_flags_c(int_f *h5d_flags, size_t_f *h5d_size_flags, int_f *h5e_flags, hid_t_f *h5e_hid_flags, int_f *h5f_flags, - int_f *h5fd_flags, hid_t_f *h5fd_hid_flags, - int_f *h5g_flags, int_f *h5i_flags, int_f *h5l_flags, int_f *h5o_flags, - hid_t_f *h5p_flags, int_f *h5p_flags_int, int_f *h5r_flags, int_f *h5s_flags, - hsize_t_f *h5s_hsize_flags, int_f *h5t_flags, int_f *h5z_flags, int_f *h5_generic_flags, - haddr_t_f *h5_haddr_generic_flags); +H5_FCDLL int_f h5init_flags_c( int_f *h5d_flags, size_t_f *h5d_size_flags, + int_f *h5e_flags, hid_t_f *h5e_hid_flags, int_f *h5f_flags, + int_f *h5fd_flags, hid_t_f *h5fd_hid_flags, + int_f *h5g_flags, int_f *h5i_flags, int_f *h5l_flags, int_f *h5o_flags, + hid_t_f *h5p_flags, int_f *h5p_flags_int, int_f *h5r_flags, + int_f *h5s_flags, hid_t_f *h5s_hid_flags, hsize_t_f *h5s_hsize_flags, + int_f *h5t_flags, int_f *h5z_flags, int_f *h5_generic_flags, + haddr_t_f *h5_haddr_generic_flags); H5_FCDLL int_f h5init1_flags_c(int_f *h5lib_flags); H5_FCDLL int_f h5get_libversion_c(int_f *majnum, int_f *minnum, int_f *relnum); H5_FCDLL int_f h5check_version_c(int_f *majnum, int_f *minnum, int_f *relnum); diff --git a/fortran/test/tH5T.F90 b/fortran/test/tH5T.F90 index efbceea..1a3a382 100644 --- a/fortran/test/tH5T.F90 +++ b/fortran/test/tH5T.F90 @@ -490,7 +490,7 @@ CONTAINS ! ! Read part of the dataset ! - CALL h5dread_f(dset_id, dt1_id, char_member_out, data_dims, error) + CALL h5dread_f(dset_id, dt1_id, char_member_out, data_dims, error, H5S_ALL_F, H5S_ALL_F, H5P_DEFAULT_F) CALL check("h5dread_f", error, total_error) do i = 1, dimsize if (char_member_out(i) .ne. char_member(i)) then diff --git a/fortran/test/tH5T_F03.F90 b/fortran/test/tH5T_F03.F90 index c8be606..c596d31 100644 --- a/fortran/test/tH5T_F03.F90 +++ b/fortran/test/tH5T_F03.F90 @@ -249,7 +249,7 @@ SUBROUTINE test_array_compound_atomic(total_error) ! Read dataset from disk f_ptr = C_LOC(rdata(1,1)) - CALL H5Dread_f(dataset, tid1, f_ptr, error) + CALL H5Dread_f(dataset, tid1, f_ptr, error, H5S_ALL_F, H5S_ALL_F, H5P_DEFAULT_F) CALL check("H5Dread_f", error, total_error) ! Compare data read in -- cgit v0.12 From d26c3bef4d2c0c9dcf89ef203176e3dd636e2cfe Mon Sep 17 00:00:00 2001 From: Binh-Minh Ribler Date: Tue, 11 Oct 2016 00:14:25 -0500 Subject: Purpose: Fix bug HDFFR-9920 cont. Description: Added new test file titerate.cpp. --- c++/test/CMakeLists.txt | 1 + c++/test/CMakeTests.cmake | 2 ++ 2 files changed, 3 insertions(+) diff --git a/c++/test/CMakeLists.txt b/c++/test/CMakeLists.txt index 9d98d11..75ea500 100644 --- a/c++/test/CMakeLists.txt +++ b/c++/test/CMakeLists.txt @@ -20,6 +20,7 @@ set (CPP_TEST_SOURCES ${HDF5_CPP_TEST_SOURCE_DIR}/tfile.cpp ${HDF5_CPP_TEST_SOURCE_DIR}/tfilter.cpp ${HDF5_CPP_TEST_SOURCE_DIR}/th5s.cpp + ${HDF5_CPP_TEST_SOURCE_DIR}/titerate.cpp ${HDF5_CPP_TEST_SOURCE_DIR}/tlinks.cpp ${HDF5_CPP_TEST_SOURCE_DIR}/tobject.cpp ${HDF5_CPP_TEST_SOURCE_DIR}/trefer.cpp diff --git a/c++/test/CMakeTests.cmake b/c++/test/CMakeTests.cmake index 91c36b0..9bcc706 100644 --- a/c++/test/CMakeTests.cmake +++ b/c++/test/CMakeTests.cmake @@ -17,6 +17,7 @@ add_test ( tattr_multi.h5 tattr_scalar.h5 tfattrs.h5 + titerate.h5 ) add_test (NAME CPP_testhdf5 COMMAND $) @@ -50,6 +51,7 @@ if (HDF5_TEST_VFD) tattr_multi.h5 tattr_scalar.h5 tfattrs.h5 + titerate.h5 ) add_test ( NAME CPP_VFD-${vfdname}-cpp_testhdf5 -- cgit v0.12 From ef52b96a9abb1717e6685b58fb97fd78a672c8f9 Mon Sep 17 00:00:00 2001 From: Binh-Minh Ribler Date: Tue, 11 Oct 2016 09:42:00 -0500 Subject: Description: Removed commented out lines. Platform tested Jam (only comments) --- c++/src/H5Classes.h | 1 - c++/src/H5Cpp.h | 1 - 2 files changed, 2 deletions(-) diff --git a/c++/src/H5Classes.h b/c++/src/H5Classes.h index de7cf4a..acc0b98 100644 --- a/c++/src/H5Classes.h +++ b/c++/src/H5Classes.h @@ -39,7 +39,6 @@ namespace H5 { class FloatType; class StrType; class CompType; - //class RefType; class AbstractDs; class DataSet; class Group; diff --git a/c++/src/H5Cpp.h b/c++/src/H5Cpp.h index 56b2f7f..800eb90 100644 --- a/c++/src/H5Cpp.h +++ b/c++/src/H5Cpp.h @@ -31,7 +31,6 @@ #include "H5Object.h" #include "H5AbstractDs.h" #include "H5Attribute.h" -//#include "H5CommonFG.h" #include "H5DataType.h" #include "H5AtomType.h" #include "H5PredType.h" -- cgit v0.12 From 202cb53058177cd4daa51f333a6da4a7e83cf320 Mon Sep 17 00:00:00 2001 From: Binh-Minh Ribler Date: Wed, 12 Oct 2016 08:06:59 -0500 Subject: Description: Added test file titerate.cpp. Platform tested: Verified with bin/chkmanifest --- MANIFEST | 1 + 1 file changed, 1 insertion(+) diff --git a/MANIFEST b/MANIFEST index 98ecdb5..da3530b 100644 --- a/MANIFEST +++ b/MANIFEST @@ -415,6 +415,7 @@ ./c++/test/tfilter.cpp ./c++/test/th5s.cpp ./c++/test/th5s.h5 +./c++/test/titerate.cpp ./c++/test/tlinks.cpp ./c++/test/tobject.cpp ./c++/test/ttypes.cpp -- cgit v0.12 From 14b1e13e80c72a65770dd9b462cb6d0eb9ed4c7e Mon Sep 17 00:00:00 2001 From: Binh-Minh Ribler Date: Wed, 12 Oct 2016 14:21:57 -0500 Subject: Description: Fixed typo that caused daily test failed when --enable-deprecated-symbols is used. Also, removed a commented-out function. Platforms tested: Linux/32 2.6 (jam) Linux/64 (platypus) with --enable-deprecated-symbols --- c++/src/H5Location.cpp | 6 +++--- c++/src/H5Location.h | 3 --- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/c++/src/H5Location.cpp b/c++/src/H5Location.cpp index 334389e..6b5c63a 100644 --- a/c++/src/H5Location.cpp +++ b/c++/src/H5Location.cpp @@ -1885,6 +1885,9 @@ H5G_obj_t H5Location::getObjTypeByIdx(hsize_t idx, H5std_string& type_name) cons return (obj_type); } +#endif // DOXYGEN_SHOULD_SKIP_THIS +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + //-------------------------------------------------------------------------- // Function: H5Location::throwException ///\brief Invokes subclass' throwException @@ -1898,9 +1901,6 @@ void H5Location::throwException(const H5std_string& func_name, const H5std_strin throwException(func_name, msg); } -#endif // DOXYGEN_SHOULD_SKIP_THIS -#endif /* H5_NO_DEPRECATED_SYMBOLS */ - //-------------------------------------------------------------------------- // Function: f_DataType_setId - friend // Purpose: This function is friend to class H5::DataType so that it diff --git a/c++/src/H5Location.h b/c++/src/H5Location.h index 9ab67d3..bd8075c 100644 --- a/c++/src/H5Location.h +++ b/c++/src/H5Location.h @@ -208,9 +208,6 @@ class H5_DLLCPP H5Location : public IdComponent { // end From CommonFG - ///\brief Returns an identifier. - //virtual hid_t getId() const; - /// For subclasses, H5File and Group, to throw appropriate exception. virtual void throwException(const H5std_string& func_name, const H5std_string& msg) const; -- cgit v0.12 From f0a356a90324e9542b2272df7e695a5a365dbb13 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Fri, 14 Oct 2016 12:44:28 -0500 Subject: Correct typo of variable format --- fortran/src/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt index c3af6ea..f1acf46 100644 --- a/fortran/src/CMakeLists.txt +++ b/fortran/src/CMakeLists.txt @@ -73,7 +73,7 @@ if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED) endif (WIN32) endif (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED) if (WIN32) - set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static/$CMAKE_BUILD_TYPE}) + set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static/${CMAKE_BUILD_TYPE}) else (WIN32) set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static) endif (WIN32) -- cgit v0.12 From 789c1d081aea0afdb6d893736992e140200856ab Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Fri, 14 Oct 2016 12:46:38 -0500 Subject: Correct typo in variable format --- fortran/src/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt index 00d0429..a74459f 100644 --- a/fortran/src/CMakeLists.txt +++ b/fortran/src/CMakeLists.txt @@ -73,7 +73,7 @@ if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED) endif (WIN32) endif (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED) if (WIN32) - set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static/$CMAKE_BUILD_TYPE}) + set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static/${CMAKE_BUILD_TYPE}) else (WIN32) set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static) endif (WIN32) -- cgit v0.12 From fabfa3c1f44ee43598f88edbe5b0bf7409f1ec6f Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Fri, 14 Oct 2016 13:10:18 -0500 Subject: Fix typo --- tools/h5ls/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/h5ls/CMakeLists.txt b/tools/h5ls/CMakeLists.txt index 41ba23c..baa63b1 100644 --- a/tools/h5ls/CMakeLists.txt +++ b/tools/h5ls/CMakeLists.txt @@ -14,7 +14,7 @@ TARGET_NAMING (h5ls STATIC) TARGET_C_PROPERTIES (h5ls STATIC " " " ") target_link_libraries (h5ls ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) set_target_properties (h5ls PROPERTIES FOLDER tools) -set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5lsy") +set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5ls") set (H5_DEP_EXECUTABLES h5ls -- cgit v0.12 From 321db89a65909c02d7279fed7e8b7a3585cde8da Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Fri, 14 Oct 2016 13:13:25 -0500 Subject: Remove test only tools from exports --- tools/h5jam/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/tools/h5jam/CMakeLists.txt b/tools/h5jam/CMakeLists.txt index 395ef0e..edf121f 100644 --- a/tools/h5jam/CMakeLists.txt +++ b/tools/h5jam/CMakeLists.txt @@ -21,14 +21,12 @@ TARGET_NAMING (getub STATIC) TARGET_C_PROPERTIES (getub STATIC " " " ") target_link_libraries (getub ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) set_target_properties (getub PROPERTIES FOLDER tools) -set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5getub") add_executable (tellub ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/tellub.c) TARGET_NAMING (tellub STATIC) TARGET_C_PROPERTIES (tellub STATIC " " " ") target_link_libraries (tellub ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) set_target_properties (tellub PROPERTIES FOLDER tools) -set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5tellub") add_executable (h5unjam ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/h5unjam.c) TARGET_NAMING (h5unjam STATIC) -- cgit v0.12 From 9ccadb2e6dd5be248b379c7df73a5069300f3334 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Fri, 14 Oct 2016 13:57:47 -0500 Subject: Correct text - missing GIT option --- config/cmake/cacheinit.cmake | 2 +- config/cmake/mccacheinit.cmake | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/cmake/cacheinit.cmake b/config/cmake/cacheinit.cmake index 176547b..24ae95c 100644 --- a/config/cmake/cacheinit.cmake +++ b/config/cmake/cacheinit.cmake @@ -57,7 +57,7 @@ set (HDF5_PACKAGE_EXTLIBS OFF CACHE BOOL "(WINDOWS)CPACK - include external libr set (HDF5_NO_PACKAGES OFF CACHE BOOL "CPACK - Disable packaging" FORCE) set (HDF5_ALLOW_EXTERNAL_SUPPORT "NO" CACHE STRING "Allow External Library Building (NO GIT SVN TGZ)" FORCE) -set_property (CACHE HDF5_ALLOW_EXTERNAL_SUPPORT PROPERTY STRINGS NO SVN TGZ) +set_property (CACHE HDF5_ALLOW_EXTERNAL_SUPPORT PROPERTY STRINGS NO GIT SVN TGZ) set (ZLIB_TGZ_NAME "ZLib.tar.gz" CACHE STRING "Use ZLib from compressed file" FORCE) diff --git a/config/cmake/mccacheinit.cmake b/config/cmake/mccacheinit.cmake index b605f58..7dee5b5 100644 --- a/config/cmake/mccacheinit.cmake +++ b/config/cmake/mccacheinit.cmake @@ -66,8 +66,8 @@ set (HDF5_PACKAGE_EXTLIBS OFF CACHE BOOL "(WINDOWS)CPACK - include external libr set (HDF5_NO_PACKAGES ON CACHE BOOL "CPACK - Disable packaging" FORCE) -set (HDF5_ALLOW_EXTERNAL_SUPPORT "NO" CACHE STRING "Allow External Library Building (NO SVN TGZ)" FORCE) -set_property (CACHE HDF5_ALLOW_EXTERNAL_SUPPORT PROPERTY STRINGS NO SVN TGZ) +set (HDF5_ALLOW_EXTERNAL_SUPPORT "NO" CACHE STRING "Allow External Library Building (NO GIT SVN TGZ)" FORCE) +set_property (CACHE HDF5_ALLOW_EXTERNAL_SUPPORT PROPERTY STRINGS NO GIT SVN TGZ) set (ZLIB_TGZ_NAME "ZLib.tar.gz" CACHE STRING "Use ZLib from compressed file" FORCE) -- cgit v0.12 -- cgit v0.12 From f1dcda5c8e23d4897b5fe49049b8d939313b39c6 Mon Sep 17 00:00:00 2001 From: derobins Date: Fri, 14 Oct 2016 15:32:27 -0400 Subject: Fixed Windows test failures. Replaced a static keyword that was deleted during a warnings overhaul. Tested on 64-bit Visual Studio 2015 --- test/dsets.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/dsets.c b/test/dsets.c index 8aa073f..16c233f 100644 --- a/test/dsets.c +++ b/test/dsets.c @@ -7949,7 +7949,7 @@ test_big_chunks_bypass_cache(hid_t fapl) /* Buffers for reading and writing data (1-D) */ int *wdata = NULL, *rdata1 = NULL, *rdata2 = NULL; /* Buffer for reading and writing data (2-D) */ - int t_wdata[BYPASS_CHUNK_DIM/2][BYPASS_CHUNK_DIM/2], t_rdata1[BYPASS_DIM][BYPASS_DIM], + static int t_wdata[BYPASS_CHUNK_DIM/2][BYPASS_CHUNK_DIM/2], t_rdata1[BYPASS_DIM][BYPASS_DIM], t_rdata2[BYPASS_CHUNK_DIM/2][BYPASS_CHUNK_DIM/2]; int i, j; /* Local index variables */ H5F_libver_t low; /* File format low bound */ -- cgit v0.12 From 9d4cbecb2f648447f05b02be32ee5e3398b19d0c Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Fri, 14 Oct 2016 15:42:55 -0400 Subject: Revert "Fixed Windows test failures." This reverts commit f1dcda5c8e23d4897b5fe49049b8d939313b39c6. --- test/dsets.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/dsets.c b/test/dsets.c index 16c233f..8aa073f 100644 --- a/test/dsets.c +++ b/test/dsets.c @@ -7949,7 +7949,7 @@ test_big_chunks_bypass_cache(hid_t fapl) /* Buffers for reading and writing data (1-D) */ int *wdata = NULL, *rdata1 = NULL, *rdata2 = NULL; /* Buffer for reading and writing data (2-D) */ - static int t_wdata[BYPASS_CHUNK_DIM/2][BYPASS_CHUNK_DIM/2], t_rdata1[BYPASS_DIM][BYPASS_DIM], + int t_wdata[BYPASS_CHUNK_DIM/2][BYPASS_CHUNK_DIM/2], t_rdata1[BYPASS_DIM][BYPASS_DIM], t_rdata2[BYPASS_CHUNK_DIM/2][BYPASS_CHUNK_DIM/2]; int i, j; /* Local index variables */ H5F_libver_t low; /* File format low bound */ -- cgit v0.12 From bad28040b0eac564322304c0275786f09d0e44e4 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Fri, 14 Oct 2016 15:43:25 -0400 Subject: Revert "Added C++ wrappers (get/setCoreWriteTracking()) for new" This reverts commit d93cb9ca25b5a5e987c6b9023f6868d47dd93a9a. --- c++/src/H5FaccProp.cpp | 41 ----------------------------------------- c++/src/H5FaccProp.h | 6 ------ c++/test/tfile.cpp | 2 +- 3 files changed, 1 insertion(+), 48 deletions(-) diff --git a/c++/src/H5FaccProp.cpp b/c++/src/H5FaccProp.cpp index 653b6cc..972f915 100644 --- a/c++/src/H5FaccProp.cpp +++ b/c++/src/H5FaccProp.cpp @@ -241,47 +241,6 @@ void FileAccPropList::getCore (size_t& increment, hbool_t& backing_store) const } //-------------------------------------------------------------------------- -// Function: FileAccPropList::setCoreWriteTracking -///\brief Modifies core driver write tracking properties on this file -/// access property list. -///\param is_enabled - IN: Whether the write tracking feature should -/// be enabled or not. -///\param page_size - IN: Sets the page size used with the write tracking -/// feature. When set to a value greater than 1, this allows -/// page-sized aggregation of tracked writes. -///\exception H5::PropListIException -///\par Description -/// For more details on the use of the write tracking feature, refer to -/// http://www.hdfgroup.org/HDF5/doc/RM/RM_H5P.html#Property-SetCoreWriteTracking -// Programmer: Dana Robinson - Fall 2016 -//-------------------------------------------------------------------------- -void FileAccPropList::setCoreWriteTracking (hbool_t is_enabled, size_t page_size) const -{ - herr_t ret_value = H5Pset_core_write_tracking (id, is_enabled, page_size); - if (ret_value < 0) - { - throw PropListIException ("FileAccPropList::setCoreWriteTracking", "H5Pset_core_write_tracking failed"); - } -} - -//-------------------------------------------------------------------------- -// Function: FileAccPropList::getCoreWriteTracking -///\brief Queries core file driver write tracking properties. -///\param is_enabled - OUT: Whether or not the write tracking feature is -/// enabled. -///\param page_size - OUT: The page size used when aggregating tracked writes. -///\exception H5::PropListIException -// Programmer: Dana Robinson - Fall 2016 -//-------------------------------------------------------------------------- -void FileAccPropList::getCoreWriteTracking (hbool_t& is_enabled, size_t& page_size) const -{ - herr_t ret_value = H5Pget_core_write_tracking(id, &is_enabled, &page_size); - if( ret_value < 0 ) - { - throw PropListIException("FileAccPropList::getCoreWriteTracking", "H5Pget_core_write_tracking failed"); - } -} -//-------------------------------------------------------------------------- // Function: FileAccPropList::setFamily ///\brief Sets this file access property list to use the family driver. ///\param memb_size - IN: Size in bytes of each file member diff --git a/c++/src/H5FaccProp.h b/c++/src/H5FaccProp.h index 1020c46..831488c 100644 --- a/c++/src/H5FaccProp.h +++ b/c++/src/H5FaccProp.h @@ -58,12 +58,6 @@ class H5_DLLCPP FileAccPropList : public PropList { // Queries H5FD_CORE driver properties. void getCore (size_t& increment, hbool_t& backing_store) const; - // Sets write tracking for the core driver. - void setCoreWriteTracking (hbool_t is_enabled, size_t page_size) const; - - // Queries the core driver write tracking property. - void getCoreWriteTracking (hbool_t& is_enabled, size_t& page_size) const; - // Sets this file access properties list to the family driver. void setFamily( hsize_t memb_size, const FileAccPropList& memb_plist ) const; diff --git a/c++/test/tfile.cpp b/c++/test/tfile.cpp index f322ff7..0eabfb9 100644 --- a/c++/test/tfile.cpp +++ b/c++/test/tfile.cpp @@ -565,7 +565,7 @@ static void test_file_attribute() dattr.write(PredType::NATIVE_INT, dattr_data); // Test flushing out the data from the attribute object - dattr.flush(H5F_SCOPE_GLOBAL); + dattr.flush(H5F_SCOPE_GLOBAL); // Get and verify the number of all objects in the file // Current: 1 file, 2 file attr, 1 ds, and 1 ds attr. -- cgit v0.12 From 53099719497a5a5561cabdac96a710f91d0fa21b Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Fri, 14 Oct 2016 15:45:38 -0400 Subject: Fixed Windows dsets.c test failure. A 'static' keyword was removed from an array that needs it on Windows during a warning removal overhaul. Replacing it fixes the error. Tested on: 64-bit Windows 7 w/ VS 2015 --- test/dsets.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/dsets.c b/test/dsets.c index 8aa073f..16c233f 100644 --- a/test/dsets.c +++ b/test/dsets.c @@ -7949,7 +7949,7 @@ test_big_chunks_bypass_cache(hid_t fapl) /* Buffers for reading and writing data (1-D) */ int *wdata = NULL, *rdata1 = NULL, *rdata2 = NULL; /* Buffer for reading and writing data (2-D) */ - int t_wdata[BYPASS_CHUNK_DIM/2][BYPASS_CHUNK_DIM/2], t_rdata1[BYPASS_DIM][BYPASS_DIM], + static int t_wdata[BYPASS_CHUNK_DIM/2][BYPASS_CHUNK_DIM/2], t_rdata1[BYPASS_DIM][BYPASS_DIM], t_rdata2[BYPASS_CHUNK_DIM/2][BYPASS_CHUNK_DIM/2]; int i, j; /* Local index variables */ H5F_libver_t low; /* File format low bound */ -- cgit v0.12 From c3cea7f96e0800a941874d565afbf909be20074d Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Mon, 17 Oct 2016 09:52:00 -0500 Subject: Add missing EXPORT tag in INSTALL command --- hl/tools/gif2h5/CMakeLists.txt | 2 ++ tools/h5copy/CMakeLists.txt | 2 ++ tools/h5diff/CMakeLists.txt | 4 ++++ tools/h5dump/CMakeLists.txt | 2 ++ tools/h5format_convert/CMakeLists.txt | 2 ++ tools/h5import/CMakeLists.txt | 2 ++ tools/h5jam/CMakeLists.txt | 2 ++ tools/h5ls/CMakeLists.txt | 2 ++ tools/h5repack/CMakeLists.txt | 2 ++ tools/h5stat/CMakeLists.txt | 2 ++ tools/misc/CMakeLists.txt | 2 ++ 11 files changed, 24 insertions(+) diff --git a/hl/tools/gif2h5/CMakeLists.txt b/hl/tools/gif2h5/CMakeLists.txt index 57daadb..9e6e828 100644 --- a/hl/tools/gif2h5/CMakeLists.txt +++ b/hl/tools/gif2h5/CMakeLists.txt @@ -62,5 +62,7 @@ install ( TARGETS gif2h5 h52gif + EXPORT + ${HDF5_EXPORTED_TARGETS} RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT hltoolsapplications ) diff --git a/tools/h5copy/CMakeLists.txt b/tools/h5copy/CMakeLists.txt index 0a5d01a..4fcd19b 100644 --- a/tools/h5copy/CMakeLists.txt +++ b/tools/h5copy/CMakeLists.txt @@ -47,5 +47,7 @@ endif (BUILD_TESTING) install ( TARGETS h5copy + EXPORT + ${HDF5_EXPORTED_TARGETS} RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications ) diff --git a/tools/h5diff/CMakeLists.txt b/tools/h5diff/CMakeLists.txt index 5da7bf5..4d386ad 100644 --- a/tools/h5diff/CMakeLists.txt +++ b/tools/h5diff/CMakeLists.txt @@ -66,6 +66,8 @@ endif (BUILD_TESTING) install ( TARGETS h5diff + EXPORT + ${HDF5_EXPORTED_TARGETS} RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications ) @@ -76,6 +78,8 @@ if (H5_HAVE_PARALLEL) install ( TARGETS ph5diff + EXPORT + ${HDF5_EXPORTED_TARGETS} RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications ) endif (H5_HAVE_PARALLEL) diff --git a/tools/h5dump/CMakeLists.txt b/tools/h5dump/CMakeLists.txt index 49de08c..91c9650 100644 --- a/tools/h5dump/CMakeLists.txt +++ b/tools/h5dump/CMakeLists.txt @@ -60,5 +60,7 @@ endif (BUILD_TESTING) install ( TARGETS h5dump + EXPORT + ${HDF5_EXPORTED_TARGETS} RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications ) diff --git a/tools/h5format_convert/CMakeLists.txt b/tools/h5format_convert/CMakeLists.txt index e5faf7c..7027566 100644 --- a/tools/h5format_convert/CMakeLists.txt +++ b/tools/h5format_convert/CMakeLists.txt @@ -56,5 +56,7 @@ endif (BUILD_TESTING) install ( TARGETS h5format_convert + EXPORT + ${HDF5_EXPORTED_TARGETS} RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications ) diff --git a/tools/h5import/CMakeLists.txt b/tools/h5import/CMakeLists.txt index c9c7db5..15c8d94 100644 --- a/tools/h5import/CMakeLists.txt +++ b/tools/h5import/CMakeLists.txt @@ -48,5 +48,7 @@ endif (BUILD_TESTING) install ( TARGETS h5import + EXPORT + ${HDF5_EXPORTED_TARGETS} RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications ) diff --git a/tools/h5jam/CMakeLists.txt b/tools/h5jam/CMakeLists.txt index edf121f..d2600ca 100644 --- a/tools/h5jam/CMakeLists.txt +++ b/tools/h5jam/CMakeLists.txt @@ -75,5 +75,7 @@ endif (BUILD_TESTING) install ( TARGETS h5jam h5unjam + EXPORT + ${HDF5_EXPORTED_TARGETS} RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications ) diff --git a/tools/h5ls/CMakeLists.txt b/tools/h5ls/CMakeLists.txt index baa63b1..cb430ec 100644 --- a/tools/h5ls/CMakeLists.txt +++ b/tools/h5ls/CMakeLists.txt @@ -43,5 +43,7 @@ endif (BUILD_TESTING) install ( TARGETS h5ls + EXPORT + ${HDF5_EXPORTED_TARGETS} RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications ) diff --git a/tools/h5repack/CMakeLists.txt b/tools/h5repack/CMakeLists.txt index 85cd37c..2f2e3e2 100644 --- a/tools/h5repack/CMakeLists.txt +++ b/tools/h5repack/CMakeLists.txt @@ -92,5 +92,7 @@ endif (BUILD_TESTING) install ( TARGETS h5repack + EXPORT + ${HDF5_EXPORTED_TARGETS} RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications ) diff --git a/tools/h5stat/CMakeLists.txt b/tools/h5stat/CMakeLists.txt index 467fac2..02721d4 100644 --- a/tools/h5stat/CMakeLists.txt +++ b/tools/h5stat/CMakeLists.txt @@ -50,5 +50,7 @@ endif (BUILD_TESTING) install ( TARGETS h5stat + EXPORT + ${HDF5_EXPORTED_TARGETS} RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications ) diff --git a/tools/misc/CMakeLists.txt b/tools/misc/CMakeLists.txt index daa8dda..f7ca039 100644 --- a/tools/misc/CMakeLists.txt +++ b/tools/misc/CMakeLists.txt @@ -86,5 +86,7 @@ endif (BUILD_TESTING) install ( TARGETS h5debug h5repart h5mkgrp + EXPORT + ${HDF5_EXPORTED_TARGETS} RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications ) -- cgit v0.12 From 7ea09c9292e74a195a0c5909f9e3790f48e5a3a5 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Tue, 18 Oct 2016 12:14:25 -0500 Subject: HDFFV-9996: Test file to verify that that multiple params are parsed --- MANIFEST | 3 + tools/h5repack/CMakeLists.txt | 16 +++ tools/h5repack/CMakeTests.cmake | 3 + tools/h5repack/Makefile.am | 2 + tools/h5repack/dynlib_vrpk.c | 115 +++++++++++++++ tools/h5repack/h5repack_plugin.sh.in | 49 ++++--- .../h5repack_layout.h5-plugin_version_test.ddl | 158 +++++++++++++++++++++ .../plugin_version_test.h5repack_layout.h5.tst | 14 ++ 8 files changed, 338 insertions(+), 22 deletions(-) create mode 100644 tools/h5repack/dynlib_vrpk.c create mode 100644 tools/h5repack/testfiles/h5repack_layout.h5-plugin_version_test.ddl create mode 100644 tools/h5repack/testfiles/plugin_version_test.h5repack_layout.h5.tst diff --git a/MANIFEST b/MANIFEST index da3530b..709da80 100644 --- a/MANIFEST +++ b/MANIFEST @@ -1309,6 +1309,7 @@ # h5repack sources ./tools/h5repack/Makefile.am ./tools/h5repack/dynlib_rpk.c +./tools/h5repack/dynlib_vrpk.c ./tools/h5repack/h5repack.sh.in ./tools/h5repack/h5repack_plugin.sh.in ./tools/h5repack/h5repack.c @@ -2308,12 +2309,14 @@ ./tools/h5repack/testfiles/deflate_limit.h5repack_layout.h5.ddl ./tools/h5repack/testfiles/plugin_none.h5repack_layout.UD.h5.tst ./tools/h5repack/testfiles/plugin_test.h5repack_layout.h5.tst +./tools/h5repack/testfiles/plugin_version_test.h5repack_layout.h5.tst ./tools/h5repack/testfiles/h5repack-help.txt ./tools/h5repack/testfiles/h5repack_filters.h5-gzip_verbose_filters.tst ./tools/h5repack/testfiles/h5repack_layout.h5-dset2_chunk_20x10-errstk.tst ./tools/h5repack/testfiles/h5repack_layout.h5.ddl ./tools/h5repack/testfiles/h5repack_layout.UD.h5-plugin_none.ddl ./tools/h5repack/testfiles/h5repack_layout.h5-plugin_test.ddl +./tools/h5repack/testfiles/h5repack_layout.h5-plugin_version_test.ddl ./tools/h5repack/testfiles/h5repack_layout.h5-plugin_zero.tst ./tools/h5repack/testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.ddl ./tools/h5repack/testfiles/2_vds.h5-vds_chunk3x6x9-v.ddl diff --git a/tools/h5repack/CMakeLists.txt b/tools/h5repack/CMakeLists.txt index 2f2e3e2..4a21605 100644 --- a/tools/h5repack/CMakeLists.txt +++ b/tools/h5repack/CMakeLists.txt @@ -51,6 +51,9 @@ if (BUILD_TESTING) set (HDF5_TOOL_PLUGIN_LIB_CORENAME "dynlibadd") set (HDF5_TOOL_PLUGIN_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_TOOL_PLUGIN_LIB_CORENAME}") set (HDF5_TOOL_PLUGIN_LIB_TARGET ${HDF5_TOOL_PLUGIN_LIB_CORENAME}) + set (HDF5_TOOL_PLUGIN_LIB_VCORENAME "dynlibvers") + set (HDF5_TOOL_PLUGIN_LIB_VNAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_TOOL_PLUGIN_LIB_VCORENAME}") + set (HDF5_TOOL_PLUGIN_LIB_VTARGET ${HDF5_TOOL_PLUGIN_LIB_VCORENAME}) add_definitions (${HDF_EXTRA_C_FLAGS}) INCLUDE_DIRECTORIES (${HDF5_SRC_DIR}) @@ -59,6 +62,11 @@ if (BUILD_TESTING) target_link_libraries (${HDF5_TOOL_PLUGIN_LIB_TARGET} ${HDF5_TEST_LIB_TARGET}) H5_SET_LIB_OPTIONS (${HDF5_TOOL_PLUGIN_LIB_TARGET} ${HDF5_TOOL_PLUGIN_LIB_NAME} SHARED ${HDF5_PACKAGE_SOVERSION}) + add_library (${HDF5_TOOL_PLUGIN_LIB_VTARGET} SHARED dynlib_vrpk.c) + TARGET_C_PROPERTIES (${HDF5_TOOL_PLUGIN_LIB_VTARGET} SHARED " " " ") + target_link_libraries (${HDF5_TOOL_PLUGIN_LIB_VTARGET} ${HDF5_TEST_LIB_TARGET}) + H5_SET_LIB_OPTIONS (${HDF5_TOOL_PLUGIN_LIB_VTARGET} ${HDF5_TOOL_PLUGIN_LIB_VNAME} SHARED ${HDF5_PACKAGE_SOVERSION}) + # make plugins dir file (MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/plugins") #----------------------------------------------------------------------------- @@ -72,6 +80,14 @@ if (BUILD_TESTING) "$" "${CMAKE_BINARY_DIR}/plugins/$" ) + add_custom_command ( + TARGET ${HDF5_TOOL_PLUGIN_LIB_VTARGET} + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + "$" + "${CMAKE_BINARY_DIR}/plugins/$" + ) include (CMakeTests.cmake) diff --git a/tools/h5repack/CMakeTests.cmake b/tools/h5repack/CMakeTests.cmake index 666f28e..e8ee00f 100644 --- a/tools/h5repack/CMakeTests.cmake +++ b/tools/h5repack/CMakeTests.cmake @@ -116,6 +116,8 @@ ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/plugin_test.h5repack_layout.h5.tst ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.UD.h5-plugin_none.ddl ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/plugin_none.h5repack_layout.UD.h5.tst + ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5-plugin_version_test.ddl + ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/plugin_version_test.h5repack_layout.h5.tst ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.ddl ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/2_vds.h5-vds_chunk3x6x9-v.ddl ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/3_1_vds.h5-vds_chunk2x5x8-v.ddl @@ -1133,6 +1135,7 @@ ############################################################################## ### P L U G I N T E S T S ############################################################################## + ADD_H5_UD_TEST (plugin_version_test 0 h5repack_layout.h5 -v -f UD=260,4,9,1,9,235) ADD_H5_UD_TEST (plugin_test 0 h5repack_layout.h5 -v -f UD=257,1,9) ADD_H5_UD_TEST (plugin_none 0 h5repack_layout.UD.h5 -v -f NONE) # check for no parameters diff --git a/tools/h5repack/Makefile.am b/tools/h5repack/Makefile.am index 21ac362..eddc989 100644 --- a/tools/h5repack/Makefile.am +++ b/tools/h5repack/Makefile.am @@ -65,6 +65,8 @@ if HAVE_SHARED_CONDITIONAL # Build it as shared library if configure is enabled for shared library. lib_LTLIBRARIES=libdynlibadd.la libdynlibadd_la_SOURCES=dynlib_rpk.c + lib_LTLIBRARIES=libdynlibvers.la + libdynlibvers_la_SOURCES=dynlib_vrpk.c install-exec-hook: $(RM) $(DESTDIR)$(libdir)/*dynlib* diff --git a/tools/h5repack/dynlib_vrpk.c b/tools/h5repack/dynlib_vrpk.c new file mode 100644 index 0000000..63ceaec --- /dev/null +++ b/tools/h5repack/dynlib_vrpk.c @@ -0,0 +1,115 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic document set and is * + * linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have access * + * to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/* + * Purpose: Tests the plugin module (H5PL) + */ + +#include +#include +#include "H5PLextern.h" + +#define H5Z_FILTER_DYNLIB4 260 + +/* gcc attribute support from H5private.h */ +#ifdef __cplusplus +# define H5_ATTR_CONST /*void*/ +#else /* __cplusplus */ +#if defined(H5_HAVE_ATTRIBUTE) && !defined(__SUNPRO_C) +# define H5_ATTR_CONST __attribute__((const)) +#else +# define H5_ATTR_CONST /*void*/ +#endif +#endif /* __cplusplus */ + +#define PUSH_ERR(func, minor, str) H5Epush2(H5E_DEFAULT, __FILE__, func, __LINE__, H5E_ERR_CLS, H5E_PLUGIN, minor, str) + +static size_t H5Z_filter_dynlib4(unsigned int flags, size_t cd_nelmts, + const unsigned int *cd_values, size_t nbytes, size_t *buf_size, void **buf); + +/* This message derives from H5Z */ +const H5Z_class2_t H5Z_DYNLIB4[1] = {{ + H5Z_CLASS_T_VERS, /* H5Z_class_t version */ + H5Z_FILTER_DYNLIB4, /* Filter id number */ + 1, 1, /* Encoding and decoding enabled */ + "dynlib4", /* Filter name for debugging */ + NULL, /* The "can apply" callback */ + NULL, /* The "set local" callback */ + (H5Z_func_t)H5Z_filter_dynlib4, /* The actual filter function */ +}}; + +H5_ATTR_CONST H5PL_type_t H5PLget_plugin_type(void) {return H5PL_TYPE_FILTER;} +H5_ATTR_CONST const void *H5PLget_plugin_info(void) {return H5Z_DYNLIB4;} + +/*------------------------------------------------------------------------- + * Function: H5Z_filter_dynlib4 + * + * Purpose: A dynlib4 filter method that adds on and subtract from + * the original value with another value. It will be built + * as a shared library. plugin.c test will load and use + * this filter library. Designed to call a HDF function. + * + * Return: Success: Data chunk size + * + * Failure: 0 + * + *------------------------------------------------------------------------- + */ +static size_t +H5Z_filter_dynlib4(unsigned int flags, size_t cd_nelmts, + const unsigned int *cd_values, size_t nbytes, + size_t *buf_size, void **buf) +{ + int *int_ptr = (int *)*buf; /* Pointer to the data values */ + size_t buf_left = *buf_size; /* Amount of data buffer left to process */ + int add_on = 0; + unsigned ver_info[3]; + + /* Check for the library version */ + if(H5get_libversion(&ver_info[0], &ver_info[1], &ver_info[2]) < 0) { + PUSH_ERR("dynlib4", H5E_CALLBACK, "H5get_libversion"); + return(0); + } + /* Check for the correct number of parameters */ + if(cd_nelmts == 0) + return(0); + + /* Check that permanent parameters are set correctly */ + if(cd_values[0] > 9) + return(0); + + if(ver_info[0] != cd_values[1] || ver_info[1] != cd_values[2]) { + PUSH_ERR("dynlib4", H5E_CALLBACK, "H5get_libversion does not match"); + return(0); + } + + add_on = (int)cd_values[0]; + + if(flags & H5Z_FLAG_REVERSE) { /*read*/ + /* Substract the "add on" value to all the data values */ + while(buf_left > 0) { + *int_ptr++ -= add_on; + buf_left -= sizeof(int); + } /* end while */ + } /* end if */ + else { /*write*/ + /* Add the "add on" value to all the data values */ + while(buf_left > 0) { + *int_ptr++ += add_on; + buf_left -= sizeof(int); + } /* end while */ + } /* end else */ + + return nbytes; +} /* end H5Z_filter_dynlib4() */ + diff --git a/tools/h5repack/h5repack_plugin.sh.in b/tools/h5repack/h5repack_plugin.sh.in index a064db6..9d340ad 100644 --- a/tools/h5repack/h5repack_plugin.sh.in +++ b/tools/h5repack/h5repack_plugin.sh.in @@ -1,16 +1,16 @@ #! /bin/sh # -# Copyright by The HDF Group. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic document set and is -# linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have access -# to either file, you may request a copy from help@hdfgroup.org. +# Copyright by The HDF Group. +# All rights reserved. +# +# This file is part of HDF5. The full HDF5 copyright notice, including +# terms governing use, modification, and redistribution, is contained in +# the files COPYING and Copyright.html. COPYING can be found at the root +# of the source code distribution tree; Copyright.html can be found at the +# root level of an installed copy of the electronic document set and is +# linked from the top-level documents page. It can also be found at +# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have access +# to either file, you may request a copy from help@hdfgroup.org. # srcdir=@srcdir@ TOP_BUILDDIR=@top_builddir@ @@ -65,6 +65,8 @@ LIST_HDF5_TEST_FILES=" $SRC_H5REPACK_TESTFILES/h5repack_layout.h5 $SRC_H5REPACK_TESTFILES/h5repack_layout.h5-plugin_test.ddl $SRC_H5REPACK_TESTFILES/plugin_test.h5repack_layout.h5.tst +$SRC_H5REPACK_TESTFILES/h5repack_layout.h5-plugin_version_test.ddl +$SRC_H5REPACK_TESTFILES/plugin_version_test.h5repack_layout.h5.tst " #$SRC_H5REPACK_TESTFILES/h5repack_layout.UD.h5 #$SRC_H5REPACK_TESTFILES/h5repack_layout.UD.h5-plugin_none.ddl @@ -113,7 +115,7 @@ COPY_TESTFILES_TO_TESTDIR() $CP -f $tstfile $TESTDIR if [ $? -ne 0 ]; then echo "Error: FAILED to copy $tstfile ." - + # Comment out this to CREATE expected file exit $EXIT_FAILURE fi @@ -168,11 +170,11 @@ STDOUT_FILTER() { # cleanup rm -f $tmp_file } - + # This runs h5repack comparing output with h5dump output # from -pH option # -TOOLTEST_DUMP() +TOOLTEST_DUMP() { echo $@ infile=$2 @@ -186,7 +188,7 @@ TOOLTEST_DUMP() shift shift - + # Run test. TESTING $H5REPACK $@ ( @@ -209,10 +211,10 @@ TOOLTEST_DUMP() nerrors="`expr $nerrors + 1`" test yes = "$verbose" && diff -c $expect1 $actual1 |sed 's/^/ /' fi - VERIFY h5dump output -pH $outfile + VERIFY h5dump output -pH $outfile ( cd $TESTDIR - $ENVCMD $H5DUMP_BIN -pH $outfile + $ENVCMD $H5DUMP_BIN -pH $outfile ) >$actual2 2>$actual2_err RET=$? cat $actual2_err >> $actual2 @@ -225,26 +227,29 @@ TOOLTEST_DUMP() nerrors="`expr $nerrors + 1`" test yes = "$verbose" && diff -c $expect2 $actual2 |sed 's/^/ /' fi - + fi - + rm -f $actual1 $actual1_err $actual2 $actual2_err rm -f $outfile } ############################################################################## -### T H E T E S T S +### T H E T E S T S ############################################################################## # prepare for test COPY_TESTFILES_TO_TESTDIR # Run the test +arg="h5repack_layout.h5 -v -f UD=260,4,9,1,9,235" +TOOLTEST_DUMP plugin_version_test $arg + arg="h5repack_layout.h5 -v -f UD=257,1,9" -TOOLTEST_DUMP plugin_test $arg +TOOLTEST_DUMP plugin_test $arg #arg="h5repack_layout.UD.h5 -v -f NONE" -#TOOLTEST_DUMP plugin_none $arg +#TOOLTEST_DUMP plugin_none $arg # print results if test $nerrors -ne 0 ; then diff --git a/tools/h5repack/testfiles/h5repack_layout.h5-plugin_version_test.ddl b/tools/h5repack/testfiles/h5repack_layout.h5-plugin_version_test.ddl new file mode 100644 index 0000000..3d09e14 --- /dev/null +++ b/tools/h5repack/testfiles/h5repack_layout.h5-plugin_version_test.ddl @@ -0,0 +1,158 @@ +HDF5 "out-plugin_version_test.h5repack_layout.h5" { +GROUP "/" { + DATASET "dset1" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } + STORAGE_LAYOUT { + CHUNKED ( 40, 20 ) + SIZE 3200 (1.000:1 COMPRESSION) + } + FILTERS { + USER_DEFINED_FILTER { + FILTER_ID 260 + COMMENT dynlib4 + PARAMS { 9 1 9 235 } + } + } + FILLVALUE { + FILL_TIME H5D_FILL_TIME_IFSET + VALUE H5D_FILL_VALUE_DEFAULT + } + ALLOCATION_TIME { + H5D_ALLOC_TIME_INCR + } + } + DATASET "dset2" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } + STORAGE_LAYOUT { + CHUNKED ( 40, 20 ) + SIZE 3200 (1.000:1 COMPRESSION) + } + FILTERS { + USER_DEFINED_FILTER { + FILTER_ID 260 + COMMENT dynlib4 + PARAMS { 9 1 9 235 } + } + } + FILLVALUE { + FILL_TIME H5D_FILL_TIME_IFSET + VALUE H5D_FILL_VALUE_DEFAULT + } + ALLOCATION_TIME { + H5D_ALLOC_TIME_INCR + } + } + DATASET "dset3" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } + STORAGE_LAYOUT { + CHUNKED ( 40, 20 ) + SIZE 3200 (1.000:1 COMPRESSION) + } + FILTERS { + USER_DEFINED_FILTER { + FILTER_ID 260 + COMMENT dynlib4 + PARAMS { 9 1 9 235 } + } + } + FILLVALUE { + FILL_TIME H5D_FILL_TIME_IFSET + VALUE H5D_FILL_VALUE_DEFAULT + } + ALLOCATION_TIME { + H5D_ALLOC_TIME_INCR + } + } + DATASET "dset4" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } + STORAGE_LAYOUT { + CHUNKED ( 40, 20 ) + SIZE 3200 (1.000:1 COMPRESSION) + } + FILTERS { + USER_DEFINED_FILTER { + FILTER_ID 260 + COMMENT dynlib4 + PARAMS { 9 1 9 235 } + } + } + FILLVALUE { + FILL_TIME H5D_FILL_TIME_IFSET + VALUE H5D_FILL_VALUE_DEFAULT + } + ALLOCATION_TIME { + H5D_ALLOC_TIME_INCR + } + } + DATASET "dset_chunk" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } + STORAGE_LAYOUT { + CHUNKED ( 20, 10 ) + SIZE 3200 (1.000:1 COMPRESSION) + } + FILTERS { + USER_DEFINED_FILTER { + FILTER_ID 260 + COMMENT dynlib4 + PARAMS { 9 1 9 235 } + } + } + FILLVALUE { + FILL_TIME H5D_FILL_TIME_IFSET + VALUE H5D_FILL_VALUE_DEFAULT + } + ALLOCATION_TIME { + H5D_ALLOC_TIME_INCR + } + } + DATASET "dset_compact" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } + STORAGE_LAYOUT { + CHUNKED ( 40, 20 ) + SIZE 3200 (1.000:1 COMPRESSION) + } + FILTERS { + USER_DEFINED_FILTER { + FILTER_ID 260 + COMMENT dynlib4 + PARAMS { 9 1 9 235 } + } + } + FILLVALUE { + FILL_TIME H5D_FILL_TIME_IFSET + VALUE H5D_FILL_VALUE_DEFAULT + } + ALLOCATION_TIME { + H5D_ALLOC_TIME_INCR + } + } + DATASET "dset_contiguous" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } + STORAGE_LAYOUT { + CHUNKED ( 40, 20 ) + SIZE 3200 (1.000:1 COMPRESSION) + } + FILTERS { + USER_DEFINED_FILTER { + FILTER_ID 260 + COMMENT dynlib4 + PARAMS { 9 1 9 235 } + } + } + FILLVALUE { + FILL_TIME H5D_FILL_TIME_IFSET + VALUE H5D_FILL_VALUE_DEFAULT + } + ALLOCATION_TIME { + H5D_ALLOC_TIME_INCR + } + } +} +} diff --git a/tools/h5repack/testfiles/plugin_version_test.h5repack_layout.h5.tst b/tools/h5repack/testfiles/plugin_version_test.h5repack_layout.h5.tst new file mode 100644 index 0000000..1a496c6 --- /dev/null +++ b/tools/h5repack/testfiles/plugin_version_test.h5repack_layout.h5.tst @@ -0,0 +1,14 @@ +Objects to modify layout are... +Objects to apply filter are... + User Defined 260 +----------------------------------------- + Type Filter (Compression) Name +----------------------------------------- + group / + dset UD (1.000:1) /dset1 + dset UD (1.000:1) /dset2 + dset UD (1.000:1) /dset3 + dset UD (1.000:1) /dset4 + dset UD (1.000:1) /dset_chunk + dset UD (1.000:1) /dset_compact + dset UD (1.000:1) /dset_contiguous -- cgit v0.12 From a8883cf07b2dea4d3cbcc41734fbc7cc10c730fb Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Tue, 18 Oct 2016 12:52:32 -0500 Subject: Correct multiple lib setting --- tools/h5repack/Makefile.am | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/h5repack/Makefile.am b/tools/h5repack/Makefile.am index eddc989..5f32d73 100644 --- a/tools/h5repack/Makefile.am +++ b/tools/h5repack/Makefile.am @@ -63,9 +63,8 @@ h5repack.sh.chkexe_: h5repacktst.chkexe_ if HAVE_SHARED_CONDITIONAL # Build it as shared library if configure is enabled for shared library. - lib_LTLIBRARIES=libdynlibadd.la + lib_LTLIBRARIES=libdynlibadd.la libdynlibvers.la libdynlibadd_la_SOURCES=dynlib_rpk.c - lib_LTLIBRARIES=libdynlibvers.la libdynlibvers_la_SOURCES=dynlib_vrpk.c install-exec-hook: -- cgit v0.12 From 8e0674691a820dd0df80d5408ceb017adefa86da Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Wed, 19 Oct 2016 12:10:45 -0500 Subject: Add new testlib to copy --- tools/h5repack/h5repack_plugin.sh.in | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/h5repack/h5repack_plugin.sh.in b/tools/h5repack/h5repack_plugin.sh.in index 9d340ad..c8d5bf7 100644 --- a/tools/h5repack/h5repack_plugin.sh.in +++ b/tools/h5repack/h5repack_plugin.sh.in @@ -34,6 +34,7 @@ exit_code=$EXIT_SUCCESS TEST_NAME=ud_plugin FROM_DIR=`pwd`/.libs PLUGIN_LIB="$FROM_DIR/libdynlibadd.*" +PLUGIN_LIB2="$FROM_DIR/libdynlibvers.*" PLUGIN_LIBDIR=testdir3 RM='rm -rf' @@ -92,6 +93,11 @@ if [ $? != 0 ]; then echo "Failed to copy plugin library ($PLUGIN_LIB) for test." exit $EXIT_FAILURE fi +$CP $PLUGIN_LIB2 $PLUGIN_LIBDIR +if [ $? != 0 ]; then + echo "Failed to copy plugin library ($PLUGIN_LIB2) for test." + exit $EXIT_FAILURE +fi # setup plugin path ENVCMD="env HDF5_PLUGIN_PATH=../${PLUGIN_LIBDIR}" -- cgit v0.12 From a903cbafa863f22d360e7ef59f787b4fe0c0d2c3 Mon Sep 17 00:00:00 2001 From: Binh-Minh Ribler Date: Wed, 19 Oct 2016 15:50:17 -0500 Subject: Description: Removed obsolet macros from C++ API: H5_NO_NAMESPACE, H5_NO_STD, __cplusplus Leave OLD_HEADER_FILENAME because iostream.h might still be in use, until further checking is done. Platforms tested: Linux/32 2.6 (jam) Linux/64 (platypus) Darwin (osx1010test) Jelly --- c++/src/H5AbstractDs.cpp | 4 ---- c++/src/H5AbstractDs.h | 4 ---- c++/src/H5ArrayType.cpp | 4 ---- c++/src/H5ArrayType.h | 4 ---- c++/src/H5AtomType.cpp | 4 ---- c++/src/H5AtomType.h | 4 ---- c++/src/H5Attribute.cpp | 10 ++-------- c++/src/H5Attribute.h | 4 ---- c++/src/H5Classes.h | 4 ---- c++/src/H5CommonFG.cpp | 5 ----- c++/src/H5CommonFG.h | 5 ----- c++/src/H5CompType.cpp | 4 ---- c++/src/H5CompType.h | 4 ---- c++/src/H5DataSet.cpp | 10 ++-------- c++/src/H5DataSet.h | 4 ---- c++/src/H5DataSpace.cpp | 10 ++-------- c++/src/H5DataSpace.h | 4 ---- c++/src/H5DataType.cpp | 12 +++--------- c++/src/H5DataType.h | 4 ---- c++/src/H5DcreatProp.cpp | 4 ---- c++/src/H5DcreatProp.h | 4 ---- c++/src/H5DxferProp.cpp | 4 ---- c++/src/H5DxferProp.h | 4 ---- c++/src/H5EnumType.cpp | 4 ---- c++/src/H5EnumType.h | 4 ---- c++/src/H5Exception.cpp | 5 +---- c++/src/H5Exception.h | 4 ---- c++/src/H5FaccProp.cpp | 4 ---- c++/src/H5FaccProp.h | 4 ---- c++/src/H5FcreatProp.cpp | 4 ---- c++/src/H5FcreatProp.h | 4 ---- c++/src/H5File.cpp | 6 ------ c++/src/H5File.h | 4 ---- c++/src/H5FloatType.cpp | 4 ---- c++/src/H5FloatType.h | 4 ---- c++/src/H5Group.cpp | 6 ------ c++/src/H5Group.h | 4 ---- c++/src/H5IdComponent.cpp | 4 ---- c++/src/H5IdComponent.h | 4 ---- c++/src/H5IntType.cpp | 5 ----- c++/src/H5IntType.h | 4 ---- c++/src/H5Library.cpp | 16 ++++++++++------ c++/src/H5Library.h | 4 ---- c++/src/H5Location.cpp | 4 ---- c++/src/H5Location.h | 4 ---- c++/src/H5Object.cpp | 4 ---- c++/src/H5Object.h | 4 ---- c++/src/H5OcreatProp.cpp | 4 ---- c++/src/H5OcreatProp.h | 4 ---- c++/src/H5PredType.cpp | 4 ---- c++/src/H5PredType.h | 4 ---- c++/src/H5PropList.cpp | 6 ------ c++/src/H5PropList.h | 4 ---- c++/src/H5StrType.cpp | 4 ---- c++/src/H5StrType.h | 4 ---- c++/src/H5VarLenType.cpp | 5 ----- c++/src/H5VarLenType.h | 4 ---- c++/test/dsets.cpp | 21 +++++---------------- c++/test/h5cpputil.cpp | 21 ++++++--------------- c++/test/h5cpputil.h | 5 ----- c++/test/tarray.cpp | 22 +++++----------------- c++/test/tattr.cpp | 26 +++++++------------------- c++/test/tcompound.cpp | 22 +++++----------------- c++/test/tdspl.cpp | 23 +++++------------------ c++/test/testhdf5.cpp | 21 ++++++--------------- c++/test/tfile.cpp | 24 +++++++----------------- c++/test/tfilter.cpp | 22 +++++----------------- c++/test/th5s.cpp | 26 +++++++------------------- c++/test/titerate.cpp | 22 +++++----------------- c++/test/tlinks.cpp | 24 ++++++------------------ c++/test/tobject.cpp | 22 +++++----------------- c++/test/trefer.cpp | 15 +++++---------- c++/test/ttypes.cpp | 22 +++++----------------- c++/test/tvlstr.cpp | 22 +++++----------------- 74 files changed, 109 insertions(+), 528 deletions(-) diff --git a/c++/src/H5AbstractDs.cpp b/c++/src/H5AbstractDs.cpp index ac10bf8..49de4bb 100644 --- a/c++/src/H5AbstractDs.cpp +++ b/c++/src/H5AbstractDs.cpp @@ -30,9 +30,7 @@ #include "H5AbstractDs.h" #include "H5Alltypes.h" -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif //-------------------------------------------------------------------------- // Function: AbstractDs default constructor @@ -327,6 +325,4 @@ VarLenType AbstractDs::getVarLenType() const //-------------------------------------------------------------------------- AbstractDs::~AbstractDs() {} -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5AbstractDs.h b/c++/src/H5AbstractDs.h index 6975d6f..1b4775c 100644 --- a/c++/src/H5AbstractDs.h +++ b/c++/src/H5AbstractDs.h @@ -17,9 +17,7 @@ #ifndef __AbstractDs_H #define __AbstractDs_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif class ArrayType; class CompType; @@ -94,7 +92,5 @@ class H5_DLLCPP AbstractDs { // This member function is implemented by DataSet and Attribute - pure virtual. virtual hid_t p_get_type() const = 0; }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __AbstractDs_H diff --git a/c++/src/H5ArrayType.cpp b/c++/src/H5ArrayType.cpp index 9646a6f..0bdd09c 100644 --- a/c++/src/H5ArrayType.cpp +++ b/c++/src/H5ArrayType.cpp @@ -26,9 +26,7 @@ #include "H5DataType.h" #include "H5ArrayType.h" -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif //-------------------------------------------------------------------------- // Function: ArrayType default constructor @@ -154,6 +152,4 @@ int ArrayType::getArrayDims(hsize_t* dims) const //-------------------------------------------------------------------------- ArrayType::~ArrayType() {} -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5ArrayType.h b/c++/src/H5ArrayType.h index aa7450c..0e9ef46 100644 --- a/c++/src/H5ArrayType.h +++ b/c++/src/H5ArrayType.h @@ -17,9 +17,7 @@ #ifndef __H5ArrayType_H #define __H5ArrayType_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class ArrayType \brief Class ArrayType inherits from DataType and provides wrappers for @@ -59,7 +57,5 @@ class H5_DLLCPP ArrayType : public DataType { // Default constructor ArrayType(); }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5ArrayType_H diff --git a/c++/src/H5AtomType.cpp b/c++/src/H5AtomType.cpp index 7871455..fa47e0c 100644 --- a/c++/src/H5AtomType.cpp +++ b/c++/src/H5AtomType.cpp @@ -26,9 +26,7 @@ #include "H5DataType.h" #include "H5AtomType.h" -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif #ifndef DOXYGEN_SHOULD_SKIP_THIS //-------------------------------------------------------------------------- @@ -295,6 +293,4 @@ void AtomType::setPad( H5T_pad_t lsb, H5T_pad_t msb ) const AtomType::~AtomType() {} #endif // DOXYGEN_SHOULD_SKIP_THIS -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5AtomType.h b/c++/src/H5AtomType.h index 9798efc..d84b53f 100644 --- a/c++/src/H5AtomType.h +++ b/c++/src/H5AtomType.h @@ -17,9 +17,7 @@ #ifndef __H5AtomType_H #define __H5AtomType_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class AtomType \brief AtomType is a base class, inherited by IntType, FloatType, @@ -81,7 +79,5 @@ class H5_DLLCPP AtomType : public DataType { AtomType( const hid_t existing_id ); #endif // DOXYGEN_SHOULD_SKIP_THIS }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5AtomType_H diff --git a/c++/src/H5Attribute.cpp b/c++/src/H5Attribute.cpp index 0a8ec52..4daf174 100644 --- a/c++/src/H5Attribute.cpp +++ b/c++/src/H5Attribute.cpp @@ -38,13 +38,9 @@ #include "H5Attribute.h" #include "H5private.h" // for HDfree -#ifndef H5_NO_NAMESPACE namespace H5 { -#ifndef H5_NO_STD - using std::cerr; - using std::endl; -#endif // H5_NO_STD -#endif +using std::cerr; +using std::endl; class H5_DLLCPP H5Object; // forward declaration for UserData4Aiterate @@ -644,6 +640,4 @@ Attribute::~Attribute() } } -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5Attribute.h b/c++/src/H5Attribute.h index 5455f76..c27bbdf 100644 --- a/c++/src/H5Attribute.h +++ b/c++/src/H5Attribute.h @@ -17,9 +17,7 @@ #ifndef __H5Attribute_H #define __H5Attribute_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class Attribute \brief Class Attribute operates on HDF5 attributes. @@ -104,7 +102,5 @@ class H5_DLLCPP Attribute : public AbstractDs, public H5Location { friend void f_Attribute_setId(Attribute* attr, hid_t new_id); }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5Attribute_H diff --git a/c++/src/H5Classes.h b/c++/src/H5Classes.h index acc0b98..bed0cae 100644 --- a/c++/src/H5Classes.h +++ b/c++/src/H5Classes.h @@ -17,9 +17,7 @@ #ifndef __H5Classes_H #define __H5Classes_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif class Exception; class IdComponent; class H5Location; @@ -45,7 +43,5 @@ namespace H5 { class H5File; class Attribute; class H5Library; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5Classes_H diff --git a/c++/src/H5CommonFG.cpp b/c++/src/H5CommonFG.cpp index f79a048..a1e0c3f 100644 --- a/c++/src/H5CommonFG.cpp +++ b/c++/src/H5CommonFG.cpp @@ -48,10 +48,7 @@ // GroupIException. // December 2000 -#ifndef H5_NO_NAMESPACE namespace H5 { -using namespace std; -#endif #ifndef DOXYGEN_SHOULD_SKIP_THIS //-------------------------------------------------------------------------- @@ -70,6 +67,4 @@ CommonFG::~CommonFG() {} #endif // DOXYGEN_SHOULD_SKIP_THIS -#ifndef H5_NO_NAMESPACE } -#endif diff --git a/c++/src/H5CommonFG.h b/c++/src/H5CommonFG.h index 956be21..a68d586 100644 --- a/c++/src/H5CommonFG.h +++ b/c++/src/H5CommonFG.h @@ -17,9 +17,7 @@ #ifndef __CommonFG_H #define __CommonFG_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class CommonFG \brief \a CommonFG was an abstract base class of H5File and H5Group. @@ -43,9 +41,6 @@ class H5_DLLCPP CommonFG { #endif // DOXYGEN_SHOULD_SKIP_THIS }; // end of CommonFG declaration - -#ifndef H5_NO_NAMESPACE } -#endif #endif // __CommonFG_H diff --git a/c++/src/H5CompType.cpp b/c++/src/H5CompType.cpp index b7c5687..784d171 100644 --- a/c++/src/H5CompType.cpp +++ b/c++/src/H5CompType.cpp @@ -30,9 +30,7 @@ #include "H5DataSet.h" #include "H5private.h" -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif //-------------------------------------------------------------------------- // Function: CompType default constructor @@ -485,6 +483,4 @@ void CompType::setSize(size_t size) const //-------------------------------------------------------------------------- CompType::~CompType() {} -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5CompType.h b/c++/src/H5CompType.h index 8ecc8bf..6552f9e 100644 --- a/c++/src/H5CompType.h +++ b/c++/src/H5CompType.h @@ -17,9 +17,7 @@ #ifndef __H5CompType_H #define __H5CompType_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class CompType \brief CompType is a derivative of a DataType and operates on HDF5 @@ -114,7 +112,5 @@ class H5_DLLCPP CompType : public DataType { // getMemberXxxType hid_t p_get_member_type(unsigned member_num) const; }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5CompType_H diff --git a/c++/src/H5DataSet.cpp b/c++/src/H5DataSet.cpp index e4d6665..749a933 100644 --- a/c++/src/H5DataSet.cpp +++ b/c++/src/H5DataSet.cpp @@ -40,13 +40,9 @@ #include "H5DataSet.h" #include "H5private.h" // for HDfree -#ifndef H5_NO_NAMESPACE namespace H5 { -#ifndef H5_NO_STD - using std::cerr; - using std::endl; -#endif // H5_NO_STD -#endif +using std::cerr; +using std::endl; //-------------------------------------------------------------------------- // Function: DataSet default constructor @@ -850,6 +846,4 @@ DataSet::~DataSet() } } -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5DataSet.h b/c++/src/H5DataSet.h index dd98d26..ee9ef28 100644 --- a/c++/src/H5DataSet.h +++ b/c++/src/H5DataSet.h @@ -17,9 +17,7 @@ #ifndef __H5DataSet_H #define __H5DataSet_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class DataSet \brief Class DataSet operates on HDF5 datasets. @@ -133,7 +131,5 @@ class H5_DLLCPP DataSet : public H5Object, public AbstractDs { friend void f_DataSet_setId(DataSet* dset, hid_t new_id); }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5DataSet_H diff --git a/c++/src/H5DataSpace.cpp b/c++/src/H5DataSpace.cpp index b24e94f..cb479e1 100644 --- a/c++/src/H5DataSpace.cpp +++ b/c++/src/H5DataSpace.cpp @@ -25,13 +25,9 @@ #include "H5IdComponent.h" #include "H5DataSpace.h" -#ifndef H5_NO_NAMESPACE namespace H5 { -#ifndef H5_NO_STD - using std::cerr; - using std::endl; -#endif // H5_NO_STD -#endif +using std::cerr; +using std::endl; #ifndef DOXYGEN_SHOULD_SKIP_THIS // This DOXYGEN_SHOULD_SKIP_THIS block is a work-around approach to control @@ -706,6 +702,4 @@ DataSpace::~DataSpace() } } -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5DataSpace.h b/c++/src/H5DataSpace.h index 38d8135..e76bc72 100644 --- a/c++/src/H5DataSpace.h +++ b/c++/src/H5DataSpace.h @@ -17,9 +17,7 @@ #ifndef __H5DataSpace_H #define __H5DataSpace_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class DataSpace \brief Class DataSpace inherits from IdComponent and provides wrappers for @@ -152,7 +150,5 @@ class H5_DLLCPP DataSpace : public IdComponent { #endif // DOXYGEN_SHOULD_SKIP_THIS }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5DataSpace_H diff --git a/c++/src/H5DataType.cpp b/c++/src/H5DataType.cpp index a36dc60..7dcd343 100644 --- a/c++/src/H5DataType.cpp +++ b/c++/src/H5DataType.cpp @@ -42,13 +42,9 @@ #include "H5File.h" #include "H5Attribute.h" -#ifndef H5_NO_NAMESPACE namespace H5 { -#ifndef H5_NO_STD - using std::cerr; - using std::endl; -#endif // H5_NO_STD -#endif +using std::cerr; +using std::endl; //-------------------------------------------------------------------------- // Function: DataType default constructor @@ -133,7 +129,7 @@ DataType::DataType(const Attribute& attr, const void* ref, H5R_type_t ref_type, //-------------------------------------------------------------------------- // Function: DataType copy constructor -///\brief Copy constructor: makes a copy of the original DataType object. +///\brief Copy constructor: makes a copy of the original DataType object // Programmer Binh-Minh Ribler - 2000 //-------------------------------------------------------------------------- DataType::DataType(const DataType& original) : H5Object(), id(original.id) @@ -783,6 +779,4 @@ DataType::~DataType() cerr << inMemFunc("~DataType - ") << close_error.getDetailMsg() << endl; } } -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5DataType.h b/c++/src/H5DataType.h index e332cee..9ac6ecf 100644 --- a/c++/src/H5DataType.h +++ b/c++/src/H5DataType.h @@ -20,9 +20,7 @@ #ifndef __H5DataType_H #define __H5DataType_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class DataType \brief Class DataType provides generic operations on HDF5 datatypes. @@ -146,7 +144,5 @@ class H5_DLLCPP DataType : public H5Object { void p_commit(hid_t loc_id, const char* name); }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5DataType_H diff --git a/c++/src/H5DcreatProp.cpp b/c++/src/H5DcreatProp.cpp index d540c72..b307bde 100644 --- a/c++/src/H5DcreatProp.cpp +++ b/c++/src/H5DcreatProp.cpp @@ -25,9 +25,7 @@ #include "H5Object.h" #include "H5DataType.h" -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif #ifndef DOXYGEN_SHOULD_SKIP_THIS // This DOXYGEN_SHOULD_SKIP_THIS block is a work-around approach to control @@ -747,6 +745,4 @@ void DSetCreatPropList::getExternal( unsigned idx, size_t name_size, char* name, //-------------------------------------------------------------------------- DSetCreatPropList::~DSetCreatPropList () {} -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5DcreatProp.h b/c++/src/H5DcreatProp.h index 07c9077..787d3ec 100644 --- a/c++/src/H5DcreatProp.h +++ b/c++/src/H5DcreatProp.h @@ -20,9 +20,7 @@ #ifndef __H5DSCreatPropList_H #define __H5DSCreatPropList_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif class DataType; @@ -147,7 +145,5 @@ class H5_DLLCPP DSetCreatPropList : public ObjCreatPropList { #endif // DOXYGEN_SHOULD_SKIP_THIS }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5DSCreatPropList_H diff --git a/c++/src/H5DxferProp.cpp b/c++/src/H5DxferProp.cpp index c228b44..7d9b943 100644 --- a/c++/src/H5DxferProp.cpp +++ b/c++/src/H5DxferProp.cpp @@ -22,9 +22,7 @@ #include "H5DxferProp.h" #include "H5private.h" // for HDmemset -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif #ifndef DOXYGEN_SHOULD_SKIP_THIS // This DOXYGEN_SHOULD_SKIP_THIS block is a work-around approach to control @@ -565,7 +563,5 @@ H5Z_EDC_t DSetMemXferPropList::getEDCCheck() const //-------------------------------------------------------------------------- DSetMemXferPropList::~DSetMemXferPropList() {} -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5DxferProp.h b/c++/src/H5DxferProp.h index a4af53c..81361cf 100644 --- a/c++/src/H5DxferProp.h +++ b/c++/src/H5DxferProp.h @@ -20,9 +20,7 @@ #ifndef __H5DSetMemXferPropList_H #define __H5DSetMemXferPropList_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class DSetMemXferPropList \brief Class DSetCreatPropList inherits from PropList and provides @@ -133,7 +131,5 @@ class H5_DLLCPP DSetMemXferPropList : public PropList { #endif // DOXYGEN_SHOULD_SKIP_THIS }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5DSetMemXferPropList_H diff --git a/c++/src/H5EnumType.cpp b/c++/src/H5EnumType.cpp index 32cb1ac..2b614a9 100644 --- a/c++/src/H5EnumType.cpp +++ b/c++/src/H5EnumType.cpp @@ -33,9 +33,7 @@ #include "H5EnumType.h" #include "H5private.h" // for HDmemset -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif //-------------------------------------------------------------------------- // Function: EnumType default constructor @@ -277,6 +275,4 @@ void EnumType::getMemberValue( unsigned memb_no, void *value ) const //-------------------------------------------------------------------------- EnumType::~EnumType() {} -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5EnumType.h b/c++/src/H5EnumType.h index bc5b870..1f96552 100644 --- a/c++/src/H5EnumType.h +++ b/c++/src/H5EnumType.h @@ -17,9 +17,7 @@ #ifndef __H5EnumType_H #define __H5EnumType_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class EnumType \brief EnumType is a derivative of a DataType and operates on HDF5 @@ -77,7 +75,5 @@ class H5_DLLCPP EnumType : public DataType { virtual ~EnumType(); }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5EnumType_H diff --git a/c++/src/H5Exception.cpp b/c++/src/H5Exception.cpp index 7b81066..2e23587 100644 --- a/c++/src/H5Exception.cpp +++ b/c++/src/H5Exception.cpp @@ -18,9 +18,7 @@ #include "H5Include.h" #include "H5Exception.h" -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif const char Exception::DEFAULT_MSG[] = "No detailed information provided"; @@ -586,6 +584,5 @@ IdComponentException::IdComponentException(const H5std_string& func, const H5std ///\brief Noop destructor. //-------------------------------------------------------------------------- IdComponentException::~IdComponentException() throw() {} -#ifndef H5_NO_NAMESPACE + } // end namespace -#endif diff --git a/c++/src/H5Exception.h b/c++/src/H5Exception.h index d49c19a..da9066a 100644 --- a/c++/src/H5Exception.h +++ b/c++/src/H5Exception.h @@ -19,14 +19,12 @@ #include -#ifndef H5_NO_NAMESPACE namespace H5 { #ifdef H5_NO_STD #define H5std_string ::string #else #define H5std_string std::string #endif -#endif /*! \class Exception \brief Exception provides wrappers of HDF5 error handling functions. @@ -171,8 +169,6 @@ class H5_DLLCPP IdComponentException : public Exception { virtual ~IdComponentException() throw(); }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5Exception_H diff --git a/c++/src/H5FaccProp.cpp b/c++/src/H5FaccProp.cpp index 972f915..c3919da 100644 --- a/c++/src/H5FaccProp.cpp +++ b/c++/src/H5FaccProp.cpp @@ -21,9 +21,7 @@ #include "H5PropList.h" #include "H5FaccProp.h" -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif #ifndef DOXYGEN_SHOULD_SKIP_THIS // This DOXYGEN_SHOULD_SKIP_THIS block is a work-around approach to control @@ -748,6 +746,4 @@ void FileAccPropList::getLibverBounds(H5F_libver_t& libver_low, H5F_libver_t& li //-------------------------------------------------------------------------- FileAccPropList::~FileAccPropList() {} -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5FaccProp.h b/c++/src/H5FaccProp.h index e96d02f..a0605e0 100644 --- a/c++/src/H5FaccProp.h +++ b/c++/src/H5FaccProp.h @@ -20,9 +20,7 @@ #ifndef __H5FileAccPropList_H #define __H5FileAccPropList_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class FileAccPropList \brief Class FileAccPropList inherits from PropList and provides @@ -162,7 +160,5 @@ class H5_DLLCPP FileAccPropList : public PropList { #endif // DOXYGEN_SHOULD_SKIP_THIS }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5FileAccPropList_H diff --git a/c++/src/H5FcreatProp.cpp b/c++/src/H5FcreatProp.cpp index af51677..5a99dba 100644 --- a/c++/src/H5FcreatProp.cpp +++ b/c++/src/H5FcreatProp.cpp @@ -21,9 +21,7 @@ #include "H5PropList.h" #include "H5FcreatProp.h" -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif #ifndef DOXYGEN_SHOULD_SKIP_THIS // This DOXYGEN_SHOULD_SKIP_THIS block is a work-around approach to control @@ -303,6 +301,4 @@ unsigned FileCreatPropList::getIstorek() const //-------------------------------------------------------------------------- FileCreatPropList::~FileCreatPropList() {} -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5FcreatProp.h b/c++/src/H5FcreatProp.h index b2a5c2b..1ac925e 100644 --- a/c++/src/H5FcreatProp.h +++ b/c++/src/H5FcreatProp.h @@ -17,9 +17,7 @@ #ifndef __H5FileCreatPropList_H #define __H5FileCreatPropList_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class FileCreatPropList \brief Class FileCreatPropList inherits from PropList and provides @@ -94,7 +92,5 @@ class H5_DLLCPP FileCreatPropList : public PropList { #endif // DOXYGEN_SHOULD_SKIP_THIS }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5FileCreatPropList_H diff --git a/c++/src/H5File.cpp b/c++/src/H5File.cpp index 246da9f..ff897d7 100644 --- a/c++/src/H5File.cpp +++ b/c++/src/H5File.cpp @@ -38,13 +38,9 @@ #include "H5File.h" #include "H5Alltypes.h" -#ifndef H5_NO_NAMESPACE namespace H5 { -#ifndef H5_NO_STD using std::cerr; using std::endl; -#endif // H5_NO_STD -#endif //-------------------------------------------------------------------------- // Function H5File default constructor @@ -658,6 +654,4 @@ H5File::~H5File() } } -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5File.h b/c++/src/H5File.h index 476c5b9..dca6c67 100644 --- a/c++/src/H5File.h +++ b/c++/src/H5File.h @@ -18,9 +18,7 @@ #define __H5File_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class H5File \brief Class H5File represents an HDF5 file and inherits from class Group @@ -123,8 +121,6 @@ class H5_DLLCPP H5File : public Group { void p_get_file( const char* name, unsigned int flags, const FileCreatPropList& create_plist, const FileAccPropList& access_plist ); }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5File_H diff --git a/c++/src/H5FloatType.cpp b/c++/src/H5FloatType.cpp index c019ae4..9ce06f7 100644 --- a/c++/src/H5FloatType.cpp +++ b/c++/src/H5FloatType.cpp @@ -32,9 +32,7 @@ #include "H5DataSet.h" #include "H5PredType.h" -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif //-------------------------------------------------------------------------- // Function: FloatType default constructor @@ -285,6 +283,4 @@ void FloatType::setInpad( H5T_pad_t inpad ) const //-------------------------------------------------------------------------- FloatType::~FloatType() {} -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5FloatType.h b/c++/src/H5FloatType.h index ce816a4..c0119eb 100644 --- a/c++/src/H5FloatType.h +++ b/c++/src/H5FloatType.h @@ -17,9 +17,7 @@ #ifndef __H5FloatType_H #define __H5FloatType_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class FloatType \brief FloatType is a derivative of a DataType and operates on HDF5 @@ -74,7 +72,5 @@ class H5_DLLCPP FloatType : public AtomType { // Noop destructor. virtual ~FloatType(); }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5FloatType_H diff --git a/c++/src/H5Group.cpp b/c++/src/H5Group.cpp index 0e19e6f..20f14a3 100644 --- a/c++/src/H5Group.cpp +++ b/c++/src/H5Group.cpp @@ -40,13 +40,9 @@ #include "H5Alltypes.h" #include "H5private.h" // for HDstrcpy -#ifndef H5_NO_NAMESPACE namespace H5 { -#ifndef H5_NO_STD using std::cerr; using std::endl; -#endif // H5_NO_STD -#endif //-------------------------------------------------------------------------- // Function: Group default constructor @@ -231,6 +227,4 @@ Group::~Group() } } -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5Group.h b/c++/src/H5Group.h index b6ec425..5f4b0f3 100644 --- a/c++/src/H5Group.h +++ b/c++/src/H5Group.h @@ -17,9 +17,7 @@ #ifndef __Group_H #define __Group_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class Group \brief Class Group represents an HDF5 group. @@ -81,7 +79,5 @@ class H5_DLLCPP Group : public H5Object { hid_t id; // HDF5 group id }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __Group_H diff --git a/c++/src/H5IdComponent.cpp b/c++/src/H5IdComponent.cpp index 6d0c39f..d869b07 100644 --- a/c++/src/H5IdComponent.cpp +++ b/c++/src/H5IdComponent.cpp @@ -22,9 +22,7 @@ #include "H5DataSpace.h" #include "H5private.h" // for HDmemset -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif // This flag indicates whether H5Library::initH5cpp has been called to register // the terminating functions with atexit() @@ -352,6 +350,4 @@ bool IdComponent::p_valid_id(const hid_t obj_id) #endif // DOXYGEN_SHOULD_SKIP_THIS -#ifndef H5_NO_NAMESPACE } -#endif diff --git a/c++/src/H5IdComponent.h b/c++/src/H5IdComponent.h index 92765f2..d3d9b9f 100644 --- a/c++/src/H5IdComponent.h +++ b/c++/src/H5IdComponent.h @@ -17,9 +17,7 @@ #ifndef __IdComponent_H #define __IdComponent_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif class DataSpace; /*! \class IdComponent @@ -118,7 +116,5 @@ class H5_DLLCPP IdComponent { }; // end class IdComponent -#ifndef H5_NO_NAMESPACE } -#endif #endif // __IdComponent_H diff --git a/c++/src/H5IntType.cpp b/c++/src/H5IntType.cpp index f934d26..69fbedb 100644 --- a/c++/src/H5IntType.cpp +++ b/c++/src/H5IntType.cpp @@ -32,10 +32,7 @@ #include "H5DataSet.h" #include "H5PredType.h" -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif - //-------------------------------------------------------------------------- // Function: IntType default constructor @@ -136,6 +133,4 @@ void IntType::setSign( H5T_sign_t sign ) const //-------------------------------------------------------------------------- IntType::~IntType() {} -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5IntType.h b/c++/src/H5IntType.h index 362a7e3..54c0d57 100644 --- a/c++/src/H5IntType.h +++ b/c++/src/H5IntType.h @@ -17,9 +17,7 @@ #ifndef __H5IntType_H #define __H5IntType_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class IntType \brief IntType is a derivative of a DataType and operates on HDF5 @@ -56,7 +54,5 @@ class H5_DLLCPP IntType : public AtomType { // Noop destructor. virtual ~IntType(); }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5IntType_H diff --git a/c++/src/H5Library.cpp b/c++/src/H5Library.cpp index 09e0f7e..4d1f279 100644 --- a/c++/src/H5Library.cpp +++ b/c++/src/H5Library.cpp @@ -34,9 +34,7 @@ #include "H5DataSpace.h" #include "H5Library.h" -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif //-------------------------------------------------------------------------- // Function: H5Library::open (static) @@ -255,12 +253,18 @@ void H5Library::setFreeListLimits(int reg_global_lim, int reg_list_lim, } } -// Default constructor - private +//-------------------------------------------------------------------------- +// Function: H5Library default constructor - private +///\brief Default constructor: Creates a stub H5Library object +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- H5Library::H5Library(){} -// Destructor - private +//-------------------------------------------------------------------------- +// Function: H5Library destructor +///\brief Noop destructor +// Programmer Binh-Minh Ribler - 2000 +//-------------------------------------------------------------------------- H5Library::~H5Library(){} -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5Library.h b/c++/src/H5Library.h index 308881b..694b052 100644 --- a/c++/src/H5Library.h +++ b/c++/src/H5Library.h @@ -17,9 +17,7 @@ #ifndef __H5Library_H #define __H5Library_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class H5Library \brief Class H5Library operates the HDF5 library globably. @@ -72,7 +70,5 @@ class H5_DLLCPP H5Library { #endif // DOXYGEN_SHOULD_SKIP_THIS }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5Library_H diff --git a/c++/src/H5Location.cpp b/c++/src/H5Location.cpp index 6b5c63a..c31db02 100644 --- a/c++/src/H5Location.cpp +++ b/c++/src/H5Location.cpp @@ -35,9 +35,7 @@ #include "H5Alltypes.h" #include "H5private.h" // for HDmemset -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif #ifndef DOXYGEN_SHOULD_SKIP_THIS @@ -1972,6 +1970,4 @@ H5Location::~H5Location() {} #endif // DOXYGEN_SHOULD_SKIP_THIS -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5Location.h b/c++/src/H5Location.h index bd8075c..647904b 100644 --- a/c++/src/H5Location.h +++ b/c++/src/H5Location.h @@ -19,9 +19,7 @@ #include "H5Classes.h" // constains forward class declarations -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class H5Location \brief H5Location is an abstract base class, added in version 1.8.12. @@ -251,7 +249,5 @@ class H5_DLLCPP H5Location : public IdComponent { }; /* end class H5Location */ -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5Location_H diff --git a/c++/src/H5Object.cpp b/c++/src/H5Object.cpp index 6b5edcf..4bce9b1 100644 --- a/c++/src/H5Object.cpp +++ b/c++/src/H5Object.cpp @@ -35,9 +35,7 @@ #include "H5Attribute.h" #include "H5private.h" // for HDmemset -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif #ifndef DOXYGEN_SHOULD_SKIP_THIS // userAttrOpWrpr simply interfaces between the user's function and the @@ -465,6 +463,4 @@ ssize_t H5Object::getObjName(H5std_string& obj_name, size_t len) const H5Object::~H5Object() {} #endif // DOXYGEN_SHOULD_SKIP_THIS -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5Object.h b/c++/src/H5Object.h index e570055..72a9f50 100644 --- a/c++/src/H5Object.h +++ b/c++/src/H5Object.h @@ -17,9 +17,7 @@ #ifndef __H5Object_H #define __H5Object_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class H5Object \brief Class H5Object is a bridge between H5Location and DataSet, DataType, @@ -132,7 +130,5 @@ class H5_DLLCPP H5Object : public H5Location { }; /* end class H5Object */ -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5Object_H diff --git a/c++/src/H5OcreatProp.cpp b/c++/src/H5OcreatProp.cpp index 54ce2ff..3cda945 100644 --- a/c++/src/H5OcreatProp.cpp +++ b/c++/src/H5OcreatProp.cpp @@ -22,9 +22,7 @@ #include "H5OcreatProp.h" #include "H5FaccProp.h" -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif #ifndef DOXYGEN_SHOULD_SKIP_THIS // This DOXYGEN_SHOULD_SKIP_THIS block is a work-around approach to control @@ -217,6 +215,4 @@ unsigned ObjCreatPropList::getAttrCrtOrder() const //-------------------------------------------------------------------------- ObjCreatPropList::~ObjCreatPropList() {} -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5OcreatProp.h b/c++/src/H5OcreatProp.h index 0532b3c..bfba1c4 100644 --- a/c++/src/H5OcreatProp.h +++ b/c++/src/H5OcreatProp.h @@ -17,9 +17,7 @@ #ifndef __H5ObjCreatPropList_H #define __H5ObjCreatPropList_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class ObjCreatPropList \brief Class ObjCreatPropList inherits from PropList and provides @@ -75,7 +73,5 @@ class H5_DLLCPP ObjCreatPropList : public PropList { #endif // DOXYGEN_SHOULD_SKIP_THIS }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5ObjCreatPropList_H diff --git a/c++/src/H5PredType.cpp b/c++/src/H5PredType.cpp index 211702d..0711020 100644 --- a/c++/src/H5PredType.cpp +++ b/c++/src/H5PredType.cpp @@ -27,9 +27,7 @@ #include "H5AtomType.h" #include "H5PredType.h" -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif #ifndef DOXYGEN_SHOULD_SKIP_THIS //-------------------------------------------------------------------------- @@ -889,9 +887,7 @@ const PredType& PredType::NATIVE_UINT_FAST64 = *NATIVE_UINT_FAST64_; #endif // DOXYGEN_SHOULD_SKIP_THIS -#ifndef H5_NO_NAMESPACE } // end namespace -#endif /*************************************************************************** Design Note diff --git a/c++/src/H5PredType.h b/c++/src/H5PredType.h index 1e789ef..750902e 100644 --- a/c++/src/H5PredType.h +++ b/c++/src/H5PredType.h @@ -17,9 +17,7 @@ #ifndef __H5PredType_H #define __H5PredType_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class PredType \brief Class PredType holds the definition of all the HDF5 predefined @@ -441,7 +439,5 @@ class H5_DLLCPP PredType : public AtomType { #endif // DOXYGEN_SHOULD_SKIP_THIS }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5PredType_H diff --git a/c++/src/H5PropList.cpp b/c++/src/H5PropList.cpp index 6655900..b6f7c15 100644 --- a/c++/src/H5PropList.cpp +++ b/c++/src/H5PropList.cpp @@ -28,13 +28,9 @@ #include "H5private.h" // for HDfree -#ifndef H5_NO_NAMESPACE namespace H5 { -#ifndef H5_NO_STD using std::cerr; using std::endl; -#endif // H5_NO_STD -#endif #ifndef DOXYGEN_SHOULD_SKIP_THIS // This DOXYGEN_SHOULD_SKIP_THIS block is a work-around approach to control @@ -752,6 +748,4 @@ PropList::~PropList() } } -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5PropList.h b/c++/src/H5PropList.h index dbd1263..faaf68d 100644 --- a/c++/src/H5PropList.h +++ b/c++/src/H5PropList.h @@ -17,9 +17,7 @@ #ifndef __H5PropList_H #define __H5PropList_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif //! Class PropList provides operations for generic property lists. /*! \class PropList @@ -139,7 +137,5 @@ class H5_DLLCPP PropList : public IdComponent { #endif // DOXYGEN_SHOULD_SKIP_THIS }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5PropList_H diff --git a/c++/src/H5StrType.cpp b/c++/src/H5StrType.cpp index db46596..962a5dc 100644 --- a/c++/src/H5StrType.cpp +++ b/c++/src/H5StrType.cpp @@ -32,9 +32,7 @@ #include "H5DataSet.h" #include "H5PredType.h" -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif //-------------------------------------------------------------------------- // Function: StrType default constructor @@ -247,6 +245,4 @@ void StrType::setStrpad( H5T_str_t strpad ) const //-------------------------------------------------------------------------- StrType::~StrType() {} -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5StrType.h b/c++/src/H5StrType.h index eac6693..5d223b3 100644 --- a/c++/src/H5StrType.h +++ b/c++/src/H5StrType.h @@ -17,9 +17,7 @@ #ifndef __H5StrType_H #define __H5StrType_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class StrType \brief StrType is a derivative of a DataType and operates on HDF5 @@ -68,7 +66,5 @@ class H5_DLLCPP StrType : public AtomType { // Noop destructor. virtual ~StrType(); }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5StrType_H diff --git a/c++/src/H5VarLenType.cpp b/c++/src/H5VarLenType.cpp index c9f320a..fa3a18f 100644 --- a/c++/src/H5VarLenType.cpp +++ b/c++/src/H5VarLenType.cpp @@ -26,10 +26,7 @@ #include "H5DataType.h" #include "H5VarLenType.h" -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif - //-------------------------------------------------------------------------- // Function: VarLenType default constructor @@ -81,6 +78,4 @@ VarLenType::VarLenType(const DataType* base_type) : DataType() //-------------------------------------------------------------------------- VarLenType::~VarLenType() {} -#ifndef H5_NO_NAMESPACE } // end namespace -#endif diff --git a/c++/src/H5VarLenType.h b/c++/src/H5VarLenType.h index 4898135..d7141b0 100644 --- a/c++/src/H5VarLenType.h +++ b/c++/src/H5VarLenType.h @@ -17,9 +17,7 @@ #ifndef __H5VarLenType_H #define __H5VarLenType_H -#ifndef H5_NO_NAMESPACE namespace H5 { -#endif /*! \class VarLenType \brief VarLenType is a derivative of a DataType and operates on HDF5 @@ -48,7 +46,5 @@ class H5_DLLCPP VarLenType : public DataType { // Default constructor VarLenType(); }; -#ifndef H5_NO_NAMESPACE } -#endif #endif // __H5VarLenType_H diff --git a/c++/test/dsets.cpp b/c++/test/dsets.cpp index 5d0c8a1..8752744 100644 --- a/c++/test/dsets.cpp +++ b/c++/test/dsets.cpp @@ -30,21 +30,14 @@ #else #include #endif -#include - -#ifndef H5_NO_NAMESPACE -#ifndef H5_NO_STD - using std::cerr; - using std::endl; -#endif // H5_NO_STD -#endif +using std::cerr; +using std::endl; +#include #include "H5Cpp.h" // C++ API header file +using namespace H5; -#ifndef H5_NO_NAMESPACE - using namespace H5; -#endif - +#include "h5test.h" #include "h5cpputil.h" // C++ utilility header file const H5std_string FILE1("dataset.h5"); @@ -1175,9 +1168,7 @@ test_types(H5File& file) * *------------------------------------------------------------------------- */ -#ifdef __cplusplus extern "C" -#endif void test_dset() { hid_t fapl_id; @@ -1235,9 +1226,7 @@ void test_dset() * *------------------------------------------------------------------------- */ -#ifdef __cplusplus extern "C" -#endif void cleanup_dsets() { HDremove(FILE1.c_str()); diff --git a/c++/test/h5cpputil.cpp b/c++/test/h5cpputil.cpp index 3bc38b5..95d29a8 100644 --- a/c++/test/h5cpputil.cpp +++ b/c++/test/h5cpputil.cpp @@ -26,25 +26,16 @@ #else #include #endif -#include +using std::cerr; +using std::endl; -#ifndef H5_NO_NAMESPACE -#ifndef H5_NO_STD - using std::cerr; - using std::endl; -#endif // H5_NO_STD -#endif +#include +#include "H5Cpp.h" // C++ API header file +using namespace H5; #include "h5test.h" -#include "H5Cpp.h" - -#ifndef H5_NO_NAMESPACE - using namespace H5; -#endif - -#include "h5cpputil.h" +#include "h5cpputil.h" // C++ utilility header file - /*------------------------------------------------------------------------- * Function: test_report * diff --git a/c++/test/h5cpputil.h b/c++/test/h5cpputil.h index 0a3221d..f8aaec7 100644 --- a/c++/test/h5cpputil.h +++ b/c++/test/h5cpputil.h @@ -26,14 +26,9 @@ #include "h5test.h" -#ifndef H5_NO_NAMESPACE using namespace H5; -#endif - -#ifndef H5_NO_STD using std::cerr; using std::endl; -#endif #define MESSAGE(V,A) {if (HDGetTestVerbosity()>(V)) print_func A;} #define SUBTEST(TEST) {printf(" Subtest: %-52s",TEST); fflush(stdout);} diff --git a/c++/test/tarray.cpp b/c++/test/tarray.cpp index 441ef81..7fe2e6b 100644 --- a/c++/test/tarray.cpp +++ b/c++/test/tarray.cpp @@ -18,27 +18,19 @@ tarray.cpp - HDF5 C++ testing the array datatype functionality ***************************************************************************/ - #ifdef OLD_HEADER_FILENAME #include #else #include #endif -#include - -#ifndef H5_NO_NAMESPACE -#ifndef H5_NO_STD - using std::cerr; - using std::endl; -#endif // H5_NO_STD -#endif +using std::cerr; +using std::endl; +#include #include "H5Cpp.h" // C++ API header file +using namespace H5; -#ifndef H5_NO_NAMESPACE - using namespace H5; -#endif - +#include "h5test.h" #include "h5cpputil.h" // C++ utilility header file const H5std_string FILENAME("tarray.h5"); @@ -478,9 +470,7 @@ static void test_array_info() ** test_array(): Main datatypes testing routine. ** ****************************************************************/ -#ifdef __cplusplus extern "C" -#endif void test_array() { // Output message about test being performed @@ -512,9 +502,7 @@ void test_array() * *------------------------------------------------------------------------- */ -#ifdef __cplusplus extern "C" -#endif void cleanup_array() { HDremove(FILENAME.c_str()); diff --git a/c++/test/tattr.cpp b/c++/test/tattr.cpp index 2dfa562..bc46d0f 100644 --- a/c++/test/tattr.cpp +++ b/c++/test/tattr.cpp @@ -19,28 +19,20 @@ C attribute interface (H5A) ***************************************************************************/ - #ifdef OLD_HEADER_FILENAME #include #else #include #endif -#include - -#ifndef H5_NO_NAMESPACE -#ifndef H5_NO_STD - using std::cerr; - using std::endl; -#endif // H5_NO_STD -#endif - -#include "H5Cpp.h" // C++ API header file +using std::cerr; +using std::endl; -#ifndef H5_NO_NAMESPACE - using namespace H5; -#endif +#include +#include "H5Cpp.h" // C++ API header file +using namespace H5; -#include "h5cpputil.h" // C++ utilility header file +#include "h5test.h" +#include "h5cpputil.h" // C++ utilility header file const H5std_string FILE_BASIC("tattr_basic.h5"); const H5std_string FILE_COMPOUND("tattr_compound.h5"); @@ -1786,9 +1778,7 @@ static void test_attr_corder_create_basic(FileCreatPropList& fcpl, ** test_attr(): Main attribute testing routine. ** ****************************************************************/ -#ifdef __cplusplus extern "C" -#endif void test_attr() { // Output message about test being performed @@ -1885,9 +1875,7 @@ void test_attr() * *------------------------------------------------------------------------- */ -#ifdef __cplusplus extern "C" -#endif void cleanup_attr() { HDremove(FILE_BASIC.c_str()); diff --git a/c++/test/tcompound.cpp b/c++/test/tcompound.cpp index e08c81d..f49ebb2 100644 --- a/c++/test/tcompound.cpp +++ b/c++/test/tcompound.cpp @@ -18,27 +18,19 @@ tcompound.cpp - HDF5 C++ testing the compound data type functionality ***************************************************************************/ - #ifdef OLD_HEADER_FILENAME #include #else #include #endif -#include - -#ifndef H5_NO_NAMESPACE -#ifndef H5_NO_STD - using std::cerr; - using std::endl; -#endif // H5_NO_STD -#endif +using std::cerr; +using std::endl; +#include #include "H5Cpp.h" // C++ API header file +using namespace H5; -#ifndef H5_NO_NAMESPACE - using namespace H5; -#endif - +#include "h5test.h" #include "h5cpputil.h" // C++ utilility header file /* Number of elements in each test */ @@ -832,9 +824,7 @@ static void test_compound_set_size() * *------------------------------------------------------------------------- */ -#ifdef __cplusplus extern "C" -#endif void test_compound() { // Output message about test being performed @@ -862,9 +852,7 @@ void test_compound() * *------------------------------------------------------------------------- */ -#ifdef __cplusplus extern "C" -#endif void cleanup_compound() { HDremove(COMPFILE.c_str()); diff --git a/c++/test/tdspl.cpp b/c++/test/tdspl.cpp index ab93c26..d733ffe 100644 --- a/c++/test/tdspl.cpp +++ b/c++/test/tdspl.cpp @@ -19,27 +19,19 @@ list functionality ***************************************************************************/ - #ifdef OLD_HEADER_FILENAME #include #else #include #endif -#include - -#ifndef H5_NO_NAMESPACE -#ifndef H5_NO_STD - using std::cerr; - using std::endl; -#endif // H5_NO_STD -#endif +using std::cerr; +using std::endl; +#include #include "H5Cpp.h" // C++ API header file +using namespace H5; -#ifndef H5_NO_NAMESPACE - using namespace H5; -#endif - +#include "h5test.h" #include "h5cpputil.h" // C++ utilility header file const H5std_string FILENAME("tdatatransform.h5"); @@ -126,9 +118,7 @@ static void test_transfplist() ** test_dsproplist(): Main dataset property list testing routine. ** ****************************************************************/ -#ifdef __cplusplus extern "C" -#endif void test_dsproplist() { // Output message about test being performed @@ -138,10 +128,7 @@ void test_dsproplist() } // test_dsproplist() - -#ifdef __cplusplus extern "C" -#endif void cleanup_dsproplist() { HDremove(FILENAME.c_str()); diff --git a/c++/test/testhdf5.cpp b/c++/test/testhdf5.cpp index 4fe4b58..28ede6b 100644 --- a/c++/test/testhdf5.cpp +++ b/c++/test/testhdf5.cpp @@ -40,28 +40,19 @@ GetTestNumErrs() -- Retrieve the number of testing errors ***************************************************************************/ - #ifdef OLD_HEADER_FILENAME #include #else #include #endif -#include - -#ifndef H5_NO_NAMESPACE -#ifndef H5_NO_STD - using std::cerr; - using std::endl; -#endif // H5_NO_STD -#endif - -#include "h5test.h" // C test header file -#include "H5Cpp.h" // C++ API header file +using std::cerr; +using std::endl; -#ifndef H5_NO_NAMESPACE - using namespace H5; -#endif /* !H5_NO_NAMESPACE */ +#include +#include "H5Cpp.h" // C++ API header file +using namespace H5; +#include "h5test.h" #include "h5cpputil.h" // C++ utilility header file int diff --git a/c++/test/tfile.cpp b/c++/test/tfile.cpp index 0eabfb9..dba0980 100644 --- a/c++/test/tfile.cpp +++ b/c++/test/tfile.cpp @@ -22,28 +22,20 @@ h5_fileaccess() -- in h5test.c, returns a file access template ***************************************************************************/ - #ifdef OLD_HEADER_FILENAME #include #else #include #endif -#include - -#ifndef H5_NO_NAMESPACE -#ifndef H5_NO_STD - using std::cerr; - using std::endl; -#endif // H5_NO_STD -#endif - -#include "H5Cpp.h" // C++ API header file +using std::cerr; +using std::endl; -#ifndef H5_NO_NAMESPACE - using namespace H5; -#endif +#include +#include "H5Cpp.h" // C++ API header file +using namespace H5; -#include "h5cpputil.h" // C++ utilility header file +#include "h5test.h" +#include "h5cpputil.h" // C++ utilility header file const hsize_t F1_USERBLOCK_SIZE = (hsize_t)0; const size_t F1_OFFSET_SIZE = sizeof(haddr_t); @@ -817,9 +809,7 @@ static void test_commonfg() * *------------------------------------------------------------------------- */ -#ifdef __cplusplus extern "C" -#endif void test_file() { // Output message about test being performed diff --git a/c++/test/tfilter.cpp b/c++/test/tfilter.cpp index 19549b3..ee78fe1 100644 --- a/c++/test/tfilter.cpp +++ b/c++/test/tfilter.cpp @@ -18,27 +18,19 @@ tfilter.cpp - HDF5 C++ testing various filters and their combination. ***************************************************************************/ - #ifdef OLD_HEADER_FILENAME #include #else #include #endif -#include - -#ifndef H5_NO_NAMESPACE -#ifndef H5_NO_STD - using std::cerr; - using std::endl; -#endif // H5_NO_STD -#endif +using std::cerr; +using std::endl; +#include #include "H5Cpp.h" // C++ API header file +using namespace H5; -#ifndef H5_NO_NAMESPACE - using namespace H5; -#endif - +#include "h5test.h" #include "h5cpputil.h" // C++ utilility header file #define DSET_DIM1 100 @@ -258,9 +250,7 @@ static void test_szip_filter(H5File& file1) ** ****************************************************************/ const H5std_string FILE1("tfilters.h5"); -#ifdef __cplusplus extern "C" -#endif void test_filters() { // Output message about test being performed @@ -300,9 +290,7 @@ void test_filters() * *------------------------------------------------------------------------- */ -#ifdef __cplusplus extern "C" -#endif void cleanup_filters() { HDremove(FILE1.c_str()); diff --git a/c++/test/th5s.cpp b/c++/test/th5s.cpp index 7ef048b..c795c08 100644 --- a/c++/test/th5s.cpp +++ b/c++/test/th5s.cpp @@ -21,28 +21,20 @@ EXTERNAL ROUTINES/VARIABLES: ***************************************************************************/ - #ifdef OLD_HEADER_FILENAME #include #else #include #endif -#include - -#ifndef H5_NO_NAMESPACE -#ifndef H5_NO_STD - using std::cerr; - using std::endl; -#endif // H5_NO_STD -#endif - -#include "H5Cpp.h" // C++ API header file +using std::cerr; +using std::endl; -#ifndef H5_NO_NAMESPACE - using namespace H5; -#endif +#include +#include "H5Cpp.h" // C++ API header file +using namespace H5; -#include "h5cpputil.h" // C++ utilility header file +#include "h5test.h" +#include "h5cpputil.h" // C++ utilility header file #include "H5srcdir.h" // srcdir querying header file const H5std_string TESTFILE("th5s.h5"); @@ -566,9 +558,7 @@ static void test_h5s_compound_scalar_read() * Modifications: *------------------------------------------------------------------------- */ -#ifdef __cplusplus extern "C" -#endif void test_h5s() { // Output message about test being performed @@ -597,9 +587,7 @@ void test_h5s() * *------------------------------------------------------------------------- */ -#ifdef __cplusplus extern "C" -#endif void cleanup_h5s() { HDremove(DATAFILE.c_str()); diff --git a/c++/test/titerate.cpp b/c++/test/titerate.cpp index e4aee97..7ee2b53 100644 --- a/c++/test/titerate.cpp +++ b/c++/test/titerate.cpp @@ -18,27 +18,19 @@ titerate.cpp - HDF5 C++ testing iterate related functionality ***************************************************************************/ - #ifdef OLD_HEADER_FILENAME #include #else #include #endif -#include - -#ifndef H5_NO_NAMESPACE -#ifndef H5_NO_STD - using std::cerr; - using std::endl; -#endif // H5_NO_STD -#endif +using std::cerr; +using std::endl; +#include #include "H5Cpp.h" // C++ API header file +using namespace H5; -#ifndef H5_NO_NAMESPACE - using namespace H5; -#endif - +#include "h5test.h" #include "h5cpputil.h" // C++ utilility header file /* Number of datasets for group iteration test */ @@ -501,9 +493,7 @@ static void test_HDFFV_9920() * *------------------------------------------------------------------------- */ -#ifdef __cplusplus extern "C" -#endif void test_iterate() { // Output message about test being performed @@ -532,9 +522,7 @@ void test_iterate() * *------------------------------------------------------------------------- */ -#ifdef __cplusplus extern "C" -#endif void cleanup_iterate() { HDremove(FILE_ITERATE.c_str()); diff --git a/c++/test/tlinks.cpp b/c++/test/tlinks.cpp index a3eb690..1f7d14e 100644 --- a/c++/test/tlinks.cpp +++ b/c++/test/tlinks.cpp @@ -18,28 +18,20 @@ C link interface (H5L) ***************************************************************************/ - #ifdef OLD_HEADER_FILENAME #include #else #include #endif -#include - -#ifndef H5_NO_NAMESPACE -#ifndef H5_NO_STD - using std::cerr; - using std::endl; -#endif // H5_NO_STD -#endif +using std::cerr; +using std::endl; +#include #include "H5Cpp.h" // C++ API header file +using namespace H5; -#ifndef H5_NO_NAMESPACE - using namespace H5; -#endif - -#include "h5cpputil.h" // C++ test utilility header file +#include "h5test.h" +#include "h5cpputil.h" // C++ utilility header file // A lot of the definition inherited from C test links.c is left here until // the H5L API is implemented and tests are completed - BMR 10/19/2009 @@ -460,9 +452,7 @@ static void test_basic_links(hid_t fapl_id, hbool_t new_format) * *------------------------------------------------------------------------- */ -#ifdef __cplusplus extern "C" -#endif void test_links() { hid_t fapl_id, fapl2_id; /* File access property lists */ @@ -651,9 +641,7 @@ void test_links() * *------------------------------------------------------------------------- */ -#ifdef __cplusplus extern "C" -#endif void cleanup_links() { HDremove(FILENAME[0]); diff --git a/c++/test/tobject.cpp b/c++/test/tobject.cpp index 046e67a..b8654c3 100644 --- a/c++/test/tobject.cpp +++ b/c++/test/tobject.cpp @@ -18,27 +18,19 @@ tobject.cpp - HDF5 C++ testing object related functionality ***************************************************************************/ - #ifdef OLD_HEADER_FILENAME #include #else #include #endif -#include - -#ifndef H5_NO_NAMESPACE -#ifndef H5_NO_STD - using std::cerr; - using std::endl; -#endif // H5_NO_STD -#endif +using std::cerr; +using std::endl; +#include #include "H5Cpp.h" // C++ API header file +using namespace H5; -#ifndef H5_NO_NAMESPACE - using namespace H5; -#endif - +#include "h5test.h" #include "h5cpputil.h" // C++ utilility header file const H5std_string FILE_OBJECTS("tobjects.h5"); @@ -319,9 +311,7 @@ static void test_get_objtype() * *------------------------------------------------------------------------- */ -#ifdef __cplusplus extern "C" -#endif void test_object() { // Output message about test being performed @@ -346,9 +336,7 @@ void test_object() * *------------------------------------------------------------------------- */ -#ifdef __cplusplus extern "C" -#endif void cleanup_object() { HDremove(FILE_OBJECTS.c_str()); diff --git a/c++/test/trefer.cpp b/c++/test/trefer.cpp index 1974541..9bc2eb0 100644 --- a/c++/test/trefer.cpp +++ b/c++/test/trefer.cpp @@ -19,20 +19,19 @@ Reference interface (H5R) ***************************************************************************/ - #ifdef OLD_HEADER_FILENAME #include #else #include #endif -#include +using std::cerr; +using std::endl; +#include #include "H5Cpp.h" // C++ API header file +using namespace H5; -#ifndef H5_NO_NAMESPACE - using namespace H5; -#endif - +#include "h5test.h" #include "h5cpputil.h" // C++ utilility header file const H5std_string FILE1("trefer1.h5"); @@ -808,9 +807,7 @@ static void test_reference_compat(void) ** test_reference(): Main reference testing routine. ** ****************************************************************/ -#ifdef __cplusplus extern "C" -#endif void test_reference(void) { // Output message about test being performed @@ -830,9 +827,7 @@ void test_reference(void) ** Purpose: Cleanup temporary test files ** Return: none ****************************************************************/ -#ifdef __cplusplus extern "C" -#endif void cleanup_reference(void) { HDremove(FILE1.c_str()); diff --git a/c++/test/ttypes.cpp b/c++/test/ttypes.cpp index c65d6a5..1ef7bdd 100644 --- a/c++/test/ttypes.cpp +++ b/c++/test/ttypes.cpp @@ -18,27 +18,19 @@ ttypes.cpp - HDF5 C++ testing the general datatype functionality ***************************************************************************/ - #ifdef OLD_HEADER_FILENAME #include #else #include #endif -#include - -#ifndef H5_NO_NAMESPACE -#ifndef H5_NO_STD - using std::cerr; - using std::endl; -#endif // H5_NO_STD -#endif +using std::cerr; +using std::endl; +#include #include "H5Cpp.h" // C++ API header file +using namespace H5; -#ifndef H5_NO_NAMESPACE - using namespace H5; -#endif - +#include "h5test.h" #include "h5cpputil.h" // C++ utilility header file /* @@ -549,9 +541,7 @@ static void test_named () ** test_types(): Main datatypes testing routine. ** ****************************************************************/ -#ifdef __cplusplus extern "C" -#endif void test_types() { // Output message about test being performed @@ -581,9 +571,7 @@ void test_types() * *------------------------------------------------------------------------- */ -#ifdef __cplusplus extern "C" -#endif void cleanup_types() { for (int i = 0; i < 3; i++) diff --git a/c++/test/tvlstr.cpp b/c++/test/tvlstr.cpp index 6ec7f25..d39d092 100644 --- a/c++/test/tvlstr.cpp +++ b/c++/test/tvlstr.cpp @@ -20,27 +20,19 @@ EXTERNAL ROUTINES/VARIABLES: ***************************************************************************/ - #ifdef OLD_HEADER_FILENAME #include #else #include #endif -#include - -#ifndef H5_NO_NAMESPACE -#ifndef H5_NO_STD - using std::cerr; - using std::endl; -#endif // H5_NO_STD -#endif +using std::cerr; +using std::endl; +#include #include "H5Cpp.h" // C++ API header file +using namespace H5; -#ifndef H5_NO_NAMESPACE - using namespace H5; -#endif - +#include "h5test.h" #include "h5cpputil.h" // C++ utilility header file // Data file used in most test functions @@ -958,9 +950,7 @@ static void test_vl_rewrite() * *------------------------------------------------------------------------- */ -#ifdef __cplusplus extern "C" -#endif void test_vlstrings() { // Output message about test being performed @@ -1000,9 +990,7 @@ void test_vlstrings() * *------------------------------------------------------------------------- */ -#ifdef __cplusplus extern "C" -#endif void cleanup_vlstrings() { HDremove(FILENAME.c_str()); -- cgit v0.12 From 8fd2eb8287adb11d70ff04483ecdd741e487133b Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Wed, 19 Oct 2016 17:02:30 -0500 Subject: Merge includes from sio file --- tools/perform/pio_engine.c | 1 - tools/perform/pio_perf.c | 11 +- tools/perform/pio_perf.h | 3 +- tools/perform/pio_standalone.c | 1 - tools/perform/pio_standalone.h | 440 +++++++++++++++++++++++++++++++++++++---- 5 files changed, 410 insertions(+), 46 deletions(-) diff --git a/tools/perform/pio_engine.c b/tools/perform/pio_engine.c index eaedcb8..ab11efd 100644 --- a/tools/perform/pio_engine.c +++ b/tools/perform/pio_engine.c @@ -1,6 +1,5 @@ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * * * * This file is part of HDF5. The full HDF5 copyright notice, including * diff --git a/tools/perform/pio_perf.c b/tools/perform/pio_perf.c index 1402ec3..c1bfadb 100644 --- a/tools/perform/pio_perf.c +++ b/tools/perform/pio_perf.c @@ -1,6 +1,5 @@ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * * * * This file is part of HDF5. The full HDF5 copyright notice, including * @@ -378,7 +377,7 @@ main(int argc, char **argv) } if (opts->output_file) { - if ((output = fopen(opts->output_file, "w")) == NULL) { + if ((output = HDfopen(opts->output_file, "w")) == NULL) { fprintf(stderr, "%s: cannot open output file\n", progname); perror(opts->output_file); goto finish; @@ -1228,7 +1227,7 @@ report_parameters(struct options *opts) HDfprintf(output, "Contiguous\n"); { - char *prefix = getenv("HDF5_PARAPREFIX"); + char *prefix = HDgetenv("HDF5_PARAPREFIX"); HDfprintf(output, "rank %d: Env HDF5_PARAPREFIX=%s\n", rank, (prefix ? prefix : "not set")); @@ -1293,7 +1292,7 @@ parse_command_line(int argc, char *argv[]) char buf[10]; int i; - memset(buf, '\0', sizeof(buf)); + HDmemset(buf, '\0', sizeof(buf)); for (i = 0; *end != '\0' && *end != ','; ++end) if (isalnum(*end) && i < 10) @@ -1345,7 +1344,7 @@ parse_command_line(int argc, char *argv[]) char buf[10]; int i; - memset(buf, '\0', sizeof(buf)); + HDmemset(buf, '\0', sizeof(buf)); for (i = 0; *end != '\0' && *end != ','; ++end) if (isalnum(*end) && i < 10) @@ -1509,7 +1508,7 @@ parse_size_directive(const char *size) off_t s; char *endptr; - s = strtol(size, &endptr, 10); + s = HDstrtol(size, &endptr, 10); if (endptr && *endptr) { while (*endptr != '\0' && (*endptr == ' ' || *endptr == '\t')) diff --git a/tools/perform/pio_perf.h b/tools/perform/pio_perf.h index 0fff7a3..89cf3a8 100644 --- a/tools/perform/pio_perf.h +++ b/tools/perform/pio_perf.h @@ -1,6 +1,5 @@ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * * * * This file is part of HDF5. The full HDF5 copyright notice, including * @@ -16,6 +15,7 @@ #ifndef PIO_PERF_H__ #define PIO_PERF_H__ +#include "io_timer.h" #ifndef STANDALONE #include "H5private.h" #include "h5test.h" @@ -24,7 +24,6 @@ #else #include "pio_standalone.h" #endif -#include "io_timer.h" /* setup the dataset no fill option if this is v1.5 or more */ #if H5_VERS_MAJOR > 1 || H5_VERS_MINOR > 4 diff --git a/tools/perform/pio_standalone.c b/tools/perform/pio_standalone.c index e404274..475c678 100644 --- a/tools/perform/pio_standalone.c +++ b/tools/perform/pio_standalone.c @@ -1,6 +1,5 @@ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * * * * This file is part of HDF5. The full HDF5 copyright notice, including * diff --git a/tools/perform/pio_standalone.h b/tools/perform/pio_standalone.h index 762a564..df3bf54 100644 --- a/tools/perform/pio_standalone.h +++ b/tools/perform/pio_standalone.h @@ -1,6 +1,5 @@ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * * * * This file is part of HDF5. The full HDF5 copyright notice, including * @@ -44,62 +43,432 @@ #endif /* - * And now for a couple non-Posix functions... Watch out for systems that - * define these in terms of macros. + * Redefine all the POSIX functions. We should never see a POSIX + * function (or any other non-HDF5 function) in the source! */ +#define HDabort() abort() +#define HDabs(X) abs(X) #ifdef H5_HAVE_WIN32_API -#define HDstrdup(S) _strdup(S) +#define HDaccess(F,M) _access(F, M) +#define R_OK 4 /* Test for read permission. */ +#define W_OK 2 /* Test for write permission. */ +#define X_OK 1 /* Test for execute permission. */ +#define F_OK 0 /* Test for existence. */ #else /* H5_HAVE_WIN32_API */ - -#if !defined strdup && !defined H5_HAVE_STRDUP -extern char *strdup(const char *s); +#define HDaccess(F,M) access(F, M) +#endif /* H5_HAVE_WIN32_API */ +#define HDacos(X) acos(X) +#ifdef H5_HAVE_ALARM +#define HDalarm(N) alarm(N) +#else /* H5_HAVE_ALARM */ +#define HDalarm(N) (0) +#endif /* H5_HAVE_ALARM */ +#define HDasctime(T) asctime(T) +#define HDasin(X) asin(X) +#define HDasprintf asprintf /*varargs*/ +#define HDassert(X) assert(X) +#define HDatan(X) atan(X) +#define HDatan2(X,Y) atan2(X,Y) +#define HDatexit(F) atexit(F) +#define HDatof(S) atof(S) +#define HDatoi(S) atoi(S) +#define HDatol(S) atol(S) +#define HDbsearch(K,B,N,Z,F) bsearch(K,B,N,Z,F) +#define HDcalloc(N,Z) calloc(N,Z) +#define HDceil(X) ceil(X) +#define HDcfgetispeed(T) cfgetispeed(T) +#define HDcfgetospeed(T) cfgetospeed(T) +#define HDcfsetispeed(T,S) cfsetispeed(T,S) +#define HDcfsetospeed(T,S) cfsetospeed(T,S) +#define HDchdir(S) chdir(S) +#define HDchmod(S,M) chmod(S,M) +#define HDchown(S,O,G) chown(S,O,G) +#define HDclearerr(F) clearerr(F) +#define HDclock() clock() +#define HDclose(F) close(F) +#define HDclosedir(D) closedir(D) +#define HDcos(X) cos(X) +#define HDcosh(X) cosh(X) +#define HDcreat(S,M) creat(S,M) +#define HDctermid(S) ctermid(S) +#define HDctime(T) ctime(T) +#define HDcuserid(S) cuserid(S) +#ifdef H5_HAVE_DIFFTIME +#define HDdifftime(X,Y) difftime(X,Y) +#else +#define HDdifftime(X,Y) ((double)(X)-(double)(Y)) #endif - -#define HDstrdup(S) strdup(S) - +#define HDdiv(X,Y) div(X,Y) +#define HDdup(F) dup(F) +#define HDdup2(F,I) dup2(F,I) +/* execl() variable arguments */ +/* execle() variable arguments */ +/* execlp() variable arguments */ +#define HDexecv(S,AV) execv(S,AV) +#define HDexecve(S,AV,E) execve(S,AV,E) +#define HDexecvp(S,AV) execvp(S,AV) +#define HDexit(N) exit(N) +#define HD_exit(N) _exit(N) +#define HDexp(X) exp(X) +#define HDfabs(X) fabs(X) +/* use ABS() because fabsf() fabsl() are not common yet. */ +#define HDfabsf(X) ABS(X) +#define HDfabsl(X) ABS(X) +#define HDfclose(F) fclose(F) +/* fcntl() variable arguments */ +#define HDfdopen(N,S) fdopen(N,S) +#define HDfeof(F) feof(F) +#define HDferror(F) ferror(F) +#define HDfflush(F) fflush(F) +#define HDfgetc(F) fgetc(F) +#define HDfgetpos(F,P) fgetpos(F,P) +#define HDfgets(S,N,F) fgets(S,N,F) +#ifdef H5_HAVE_WIN32_API +#define HDfileno(F) _fileno(F) +#else /* H5_HAVE_WIN32_API */ +#define HDfileno(F) fileno(F) #endif /* H5_HAVE_WIN32_API */ - +#define HDfloor(X) floor(X) +#define HDfmod(X,Y) fmod(X,Y) +#define HDfopen(S,M) fopen(S,M) +#define HDfork() fork() +#define HDfpathconf(F,N) fpathconf(F,N) H5_DLL int HDfprintf (FILE *stream, const char *fmt, ...); -#define HDstrcmp(S,T) strcmp(S,T) -#define HDstrlen(S) strlen(S) -#define HDstrncmp(S,T,L) strncmp(S,T,L) -#define HDstrncpy(X,Y,Z) strncpy(X,Y,Z) -#define HDstrchr(S,C) strchr(S,C) -#define HDfree(M) free(M) +#define HDfputc(C,F) fputc(C,F) +#define HDfputs(S,F) fputs(S,F) +#define HDfread(M,Z,N,F) fread(M,Z,N,F) +#define HDfree(M) free(M) +#define HDfreopen(S,M,F) freopen(S,M,F) +#define HDfrexp(X,N) frexp(X,N) +/* Check for Cray-specific 'frexpf()' and 'frexpl()' routines */ +#ifdef H5_HAVE_FREXPF +#define HDfrexpf(X,N) frexpf(X,N) +#else /* H5_HAVE_FREXPF */ +#define HDfrexpf(X,N) frexp(X,N) +#endif /* H5_HAVE_FREXPF */ +#ifdef H5_HAVE_FREXPL +#define HDfrexpl(X,N) frexpl(X,N) +#else /* H5_HAVE_FREXPL */ +#define HDfrexpl(X,N) frexp(X,N) +#endif /* H5_HAVE_FREXPL */ +/* fscanf() variable arguments */ +#ifdef H5_HAVE_FSEEKO + #define HDfseek(F,O,W) fseeko(F,O,W) +#else + #define HDfseek(F,O,W) fseek(F,O,W) +#endif +#define HDfsetpos(F,P) fsetpos(F,P) +/* definitions related to the file stat utilities. + * Windows have its own function names. + * For Unix, if off_t is not 64bit big, try use the pseudo-standard + * xxx64 versions if available. + */ +#ifdef H5_HAVE_WIN32_API + #define HDfstat(F,B) _fstati64(F,B) + #define HDlstat(S,B) _lstati64(S,B) + #define HDstat(S,B) _stati64(S,B) + typedef struct _stati64 h5_stat_t; + typedef __int64 h5_stat_size_t; + #define HDoff_t __int64 +#elif H5_SIZEOF_OFF_T!=8 && H5_SIZEOF_OFF64_T==8 && defined(H5_HAVE_STAT64) + #define HDfstat(F,B) fstat64(F,B) + #define HDlstat(S,B) lstat64(S,B) + #define HDstat(S,B) stat64(S,B) + typedef struct stat64 h5_stat_t; + typedef off64_t h5_stat_size_t; + #define HDoff_t off64_t +#else + #define HDfstat(F,B) fstat(F,B) + #define HDlstat(S,B) lstat(S,B) + #define HDstat(S,B) stat(S,B) + typedef struct stat h5_stat_t; + typedef off_t h5_stat_size_t; + #define HDoff_t off_t +#endif +#ifndef H5_HAVE_WIN32_API +/* These definitions differ in Windows and are defined in + * H5win32defs for that platform. + */ +typedef struct stat h5_stat_t; +typedef off_t h5_stat_size_t; +#define HDoff_t off_t +#endif /* H5_HAVE_WIN32_API */ +#define HDftell(F) ftell(F) +#define HDftruncate(F,L) ftruncate(F,L) +#define HDfwrite(M,Z,N,F) fwrite(M,Z,N,F) +#define HDgetc(F) getc(F) +#define HDgetchar() getchar() +#define HDgetcwd(S,Z) getcwd(S,Z) +#define HDgetegid() getegid() +#define HDgetenv(S) getenv(S) +#define HDgeteuid() geteuid() +#define HDgetgid() getgid() +#define HDgetgrgid(G) getgrgid(G) +#define HDgetgrnam(S) getgrnam(S) +#define HDgetgroups(Z,G) getgroups(Z,G) +#ifdef H5_HAVE_WIN32_API +#define HDgetlogin() Wgetlogin() +#else /* H5_HAVE_WIN32_API */ +#define HDgetlogin() getlogin() +#endif /* H5_HAVE_WIN32_API */ +#define HDgetpgrp() getpgrp() +#define HDgetpid() getpid() +#define HDgetppid() getppid() +#define HDgetpwnam(S) getpwnam(S) +#define HDgetpwuid(U) getpwuid(U) +#define HDgetrusage(X,S) getrusage(X,S) +#define HDgets(S) gets(S) +#ifdef H5_HAVE_WIN32_API + H5_DLL int Wgettimeofday(struct timeval *tv, struct timezone *tz); +#define HDgettimeofday(V,Z) Wgettimeofday(V,Z) +#else /* H5_HAVE_WIN32_API */ +#define HDgettimeofday(S,P) gettimeofday(S,P) +#endif /* H5_HAVE_WIN32_API */ +#define HDgetuid() getuid() +#define HDgmtime(T) gmtime(T) +#define HDisalnum(C) isalnum((int)(C)) /*cast for solaris warning*/ +#define HDisalpha(C) isalpha((int)(C)) /*cast for solaris warning*/ +#define HDisatty(F) isatty(F) +#define HDiscntrl(C) iscntrl((int)(C)) /*cast for solaris warning*/ +#define HDisdigit(C) isdigit((int)(C)) /*cast for solaris warning*/ +#define HDisgraph(C) isgraph((int)(C)) /*cast for solaris warning*/ +#define HDislower(C) islower((int)(C)) /*cast for solaris warning*/ +#define HDisprint(C) isprint((int)(C)) /*cast for solaris warning*/ +#define HDispunct(C) ispunct((int)(C)) /*cast for solaris warning*/ +#define HDisspace(C) isspace((int)(C)) /*cast for solaris warning*/ +#define HDisupper(C) isupper((int)(C)) /*cast for solaris warning*/ +#define HDisxdigit(C) isxdigit((int)(C)) /*cast for solaris warning*/ +#define HDkill(P,S) kill(P,S) +#define HDlabs(X) labs(X) +#define HDldexp(X,N) ldexp(X,N) +#define HDldiv(X,Y) ldiv(X,Y) +#define HDlink(OLD,NEW) link(OLD,NEW) +#define HDlocaleconv() localeconv() +#define HDlocaltime(T) localtime(T) +#define HDlog(X) log(X) +#define HDlog10(X) log10(X) +#define HDlongjmp(J,N) longjmp(J,N) +#ifdef H5_HAVE_WIN32_API + #define HDlseek(F,O,W) _lseeki64(F,O,W) +#else + #ifdef H5_HAVE_LSEEK64 + #define HDlseek(F,O,W) lseek64(F,O,W) + #else + #define HDlseek(F,O,W) lseek(F,O,W) + #endif +#endif +#define HDmalloc(Z) malloc(Z) +#define HDposix_memalign(P,A,Z) posix_memalign(P,A,Z) +#define HDmblen(S,N) mblen(S,N) +#define HDmbstowcs(P,S,Z) mbstowcs(P,S,Z) +#define HDmbtowc(P,S,Z) mbtowc(P,S,Z) +#define HDmemchr(S,C,Z) memchr(S,C,Z) +#define HDmemcmp(X,Y,Z) memcmp(X,Y,Z) +/* + * The (char*) casts are required for the DEC when optimizations are turned + * on and the source and/or destination are not aligned. + */ +#define HDmemcpy(X,Y,Z) memcpy((char*)(X),(const char*)(Y),Z) +#define HDmemmove(X,Y,Z) memmove((char*)(X),(const char*)(Y),Z) +/* + * The (void*) cast just avoids a compiler warning in H5_HAVE_VISUAL_STUDIO + */ +#ifdef H5_HAVE_VISUAL_STUDIO +#define HDmemset(X,C,Z) memset((void*)(X),C,Z) +#else /* H5_HAVE_VISUAL_STUDIO */ +#define HDmemset(X,C,Z) memset(X,C,Z) +#endif /* H5_HAVE_VISUAL_STUDIO */ +#ifdef H5_HAVE_WIN32_API +#define HDmkdir(S,M) _mkdir(S) +#else /* H5_HAVE_WIN32_API */ +#define HDmkdir(S,M) mkdir(S,M) +#endif /* H5_HAVE_WIN32_API */ +#define HDmkfifo(S,M) mkfifo(S,M) +#define HDmktime(T) mktime(T) +#define HDmodf(X,Y) modf(X,Y) #ifdef _O_BINARY -#define HDopen(S,F,M) open(S,F|_O_BINARY,M) +#define HDopen(S,F,M) open(S,F|_O_BINARY,M) +#else +#define HDopen(S,F,M) open(S,F,M) +#endif +#define HDopendir(S) opendir(S) +#define HDpathconf(S,N) pathconf(S,N) +#define HDpause() pause() +#define HDperror(S) perror(S) +#define HDpipe(F) pipe(F) +#define HDpow(X,Y) pow(X,Y) +/* printf() variable arguments */ +#define HDputc(C,F) putc(C,F) +#define HDputchar(C) putchar(C) +#define HDputs(S) puts(S) +#define HDqsort(M,N,Z,F) qsort(M,N,Z,F) +#define HDraise(N) raise(N) + +#ifdef H5_HAVE_RAND_R +#define HDrandom() HDrand() +H5_DLL int HDrand(void); +#elif H5_HAVE_RANDOM +#define HDrand() random() +#define HDrandom() random() #else -#define HDopen(S,F,M) open(S,F,M) +#define HDrand() rand() +#define HDrandom() rand() #endif -#define HDclose(F) close(F) +#define HDread(F,M,Z) read(F,M,Z) +#define HDreaddir(D) readdir(D) +#define HDrealloc(M,Z) realloc(M,Z) +#define HDremove(S) remove(S) +#define HDrename(OLD,NEW) rename(OLD,NEW) +#define HDrewind(F) rewind(F) +#define HDrewinddir(D) rewinddir(D) +#define HDrmdir(S) rmdir(S) +/* scanf() variable arguments */ +#define HDsetbuf(F,S) setbuf(F,S) +#define HDsetgid(G) setgid(G) +#define HDsetjmp(J) setjmp(J) +#define HDsetlocale(N,S) setlocale(N,S) +#define HDsetpgid(P,PG) setpgid(P,PG) +#define HDsetsid() setsid() +#define HDsetuid(U) setuid(U) +/* Windows does not permit setting the buffer size to values + less than 2. */ +#ifndef H5_HAVE_WIN32_API +#define HDsetvbuf(F,S,M,Z) setvbuf(F,S,M,Z) +#else +#define HDsetvbuf(F,S,M,Z) setvbuf(F,S,M,(Z>1?Z:2)) +#endif +#define HDsigaddset(S,N) sigaddset(S,N) +#define HDsigdelset(S,N) sigdelset(S,N) +#define HDsigemptyset(S) sigemptyset(S) +#define HDsigfillset(S) sigfillset(S) +#define HDsigismember(S,N) sigismember(S,N) +#define HDsiglongjmp(J,N) siglongjmp(J,N) +#define HDsignal(N,F) signal(N,F) +#define HDsigpending(S) sigpending(S) +#define HDsigprocmask(H,S,O) sigprocmask(H,S,O) +#define HDsigsetjmp(J,N) sigsetjmp(J,N) +#define HDsigsuspend(S) sigsuspend(S) +#define HDsin(X) sin(X) +#define HDsinh(X) sinh(X) +#define HDsleep(N) sleep(N) #ifdef H5_HAVE_WIN32_API -#define HDlseek(F,O,W) _lseeki64(F,O,W) +H5_DLL int c99_snprintf(char* str, size_t size, const char* format, ...); +#define HDsnprintf c99_snprintf /*varargs*/ #else -#define HDlseek(F,O,W) lseek(F,O,W) +#define HDsnprintf snprintf /*varargs*/ #endif - -#define HDwrite(F,M,Z) write(F,M,Z) - -#define HDread(F,M,Z) read(F,M,Z) +/* sprintf() variable arguments */ +#define HDsqrt(X) sqrt(X) +#ifdef H5_HAVE_RAND_R +H5_DLL void HDsrand(unsigned int seed); +#define HDsrandom(S) HDsrand(S) +#elif H5_HAVE_RANDOM +#define HDsrand(S) srandom(S) +#define HDsrandom(S) srandom(S) +#else +#define HDsrand(S) srand(S) +#define HDsrandom(S) srand(S) +#endif +/* sscanf() variable arguments */ #ifdef H5_HAVE_WIN32_API - #define HDstat(S,B) _stati64(S,B) +#define HDstrcasecmp(A,B) _stricmp(A,B) #else -#define HDstat(S,B) stat(S,B) +#define HDstrcasecmp(X,Y) strcasecmp(X,Y) #endif - +#define HDstrcat(X,Y) strcat(X,Y) +#define HDstrchr(S,C) strchr(S,C) +#define HDstrcmp(X,Y) strcmp(X,Y) +#define HDstrcoll(X,Y) strcoll(X,Y) +#define HDstrcpy(X,Y) strcpy(X,Y) +#define HDstrcspn(X,Y) strcspn(X,Y) +#define HDstrerror(N) strerror(N) +#define HDstrftime(S,Z,F,T) strftime(S,Z,F,T) +#define HDstrlen(S) strlen(S) +#define HDstrncat(X,Y,Z) strncat(X,Y,Z) +#define HDstrncmp(X,Y,Z) strncmp(X,Y,Z) +#define HDstrncpy(X,Y,Z) strncpy(X,Y,Z) +#define HDstrpbrk(X,Y) strpbrk(X,Y) +#define HDstrrchr(S,C) strrchr(S,C) +#define HDstrspn(X,Y) strspn(X,Y) +#define HDstrstr(X,Y) strstr(X,Y) +#define HDstrtod(S,R) strtod(S,R) +#define HDstrtok(X,Y) strtok(X,Y) +#define HDstrtol(S,R,N) strtol(S,R,N) +H5_DLL int64_t HDstrtoll (const char *s, const char **rest, int base); +#define HDstrtoul(S,R,N) strtoul(S,R,N) +#ifdef H5_HAVE_WIN32_API +#define HDstrtoull(S,R,N) _strtoui64(S,R,N) +#else +#define HDstrtoull(S,R,N) strtoull(S,R,N) +#endif +#define HDstrxfrm(X,Y,Z) strxfrm(X,Y,Z) +#define HDsysconf(N) sysconf(N) +#define HDsystem(S) system(S) +#define HDtan(X) tan(X) +#define HDtanh(X) tanh(X) +#define HDtcdrain(F) tcdrain(F) +#define HDtcflow(F,A) tcflow(F,A) +#define HDtcflush(F,N) tcflush(F,N) +#define HDtcgetattr(F,T) tcgetattr(F,T) +#define HDtcgetpgrp(F) tcgetpgrp(F) +#define HDtcsendbreak(F,N) tcsendbreak(F,N) +#define HDtcsetattr(F,O,T) tcsetattr(F,O,T) +#define HDtcsetpgrp(F,N) tcsetpgrp(F,N) +#define HDtime(T) time(T) +#define HDtimes(T) times(T) +#define HDtmpfile() tmpfile() +#define HDtmpnam(S) tmpnam(S) +#define HDtolower(C) tolower(C) +#define HDtoupper(C) toupper(C) +#define HDttyname(F) ttyname(F) +#define HDtzset() tzset() +#define HDumask(N) umask(N) +#define HDuname(S) uname(S) +#define HDungetc(C,F) ungetc(C,F) #ifdef H5_HAVE_WIN32_API -#define HDfstat(F,B) _fstati64(F,B) -typedef struct _stati64 h5_stat_t; -typedef __int64 h5_stat_size_t; +#define HDunlink(S) _unlink(S) #else -#define HDfstat(F,B) fstat(F,B) -typedef struct stat h5_stat_t; -typedef off_t h5_stat_size_t; +#define HDunlink(S) unlink(S) #endif +#define HDutime(S,T) utime(S,T) +#define HDva_arg(A,T) va_arg(A,T) +#define HDva_end(A) va_end(A) +#define HDva_start(A,P) va_start(A,P) +#define HDvasprintf(RET,FMT,A) vasprintf(RET,FMT,A) +#define HDvfprintf(F,FMT,A) vfprintf(F,FMT,A) +#define HDvprintf(FMT,A) vprintf(FMT,A) +#define HDvsprintf(S,FMT,A) vsprintf(S,FMT,A) +#ifdef H5_HAVE_WIN32_API +H5_DLL int c99_vsnprintf(char* str, size_t size, const char* format, va_list ap); +#define HDvsnprintf c99_vsnprintf +#else +# define HDvsnprintf(S,N,FMT,A) vsnprintf(S,N,FMT,A) +#endif +#define HDwait(W) wait(W) +#define HDwaitpid(P,W,O) waitpid(P,W,O) +#define HDwcstombs(S,P,Z) wcstombs(S,P,Z) +#define HDwctomb(S,C) wctomb(S,C) +#define HDwrite(F,M,Z) write(F,M,Z) + +/* + * And now for a couple non-Posix functions... Watch out for systems that + * define these in terms of macros. + */ +#ifdef H5_HAVE_WIN32_API +#define HDstrdup(S) _strdup(S) +#else /* H5_HAVE_WIN32_API */ + +#if !defined strdup && !defined H5_HAVE_STRDUP +extern char *strdup(const char *s); +#endif + +#define HDstrdup(S) strdup(S) + +#endif /* H5_HAVE_WIN32_API */ /* * HDF Boolean type. @@ -111,7 +480,6 @@ typedef off_t h5_stat_size_t; # define TRUE true #endif - /** From h5test.h **/ #ifdef H5_HAVE_PARALLEL -- cgit v0.12 From 14e308b2e6eada778818abf53949ceef0e7b2a34 Mon Sep 17 00:00:00 2001 From: Binh-Minh Ribler Date: Thu, 20 Oct 2016 14:07:45 -0500 Subject: Description: - Removed calls to H5Tget_native_type in the PT code. The application would need to do that if desired. - Added Abhi's program to tests to verify the fix. - This fix might have fixed HDFFV-9927, HDFFV-9042, and the issue reported by Barbara Jones from Ametek as well. Platforms tested: Linux/32 2.6 (jam) Linux/64 (jelly) Darwin (osx1010test) --- hl/c++/test/ptableTest.cpp | 169 +++++++++++++++++++++++++++++---------------- hl/c++/test/ptableTest.h | 4 ++ hl/src/H5PT.c | 14 ++-- hl/test/test_packet.c | 48 ++++++++----- hl/test/test_packet_vlen.c | 67 +++++++----------- 5 files changed, 179 insertions(+), 123 deletions(-) diff --git a/hl/c++/test/ptableTest.cpp b/hl/c++/test/ptableTest.cpp index dd3d2ba..953ec91 100644 --- a/hl/c++/test/ptableTest.cpp +++ b/hl/c++/test/ptableTest.cpp @@ -52,9 +52,7 @@ int main(void) num_errors += SystemTest(); -#ifdef VLPT_REMOVED - num_errors += VariableLengthTest(); -#endif /* VLPT_REMOVED */ + num_errors += TestHDFFV_9758(); /* Terminate access to the file. */ err = H5Fclose(fileID); @@ -562,73 +560,128 @@ error: return 1; } -#ifdef VLPT_REMOVED -int VariableLengthTest(void) +/*------------------------------------------------------------------------- + * TestHDFFV_9758(): Test that a packet table with compound datatype which + * contain string type can be created and written correctly. (HDFFV-9758) + * + * Notes: + * Previously, data of the field that follows the string was read back + * as garbage when #pragma pack(1) is used. + * 2016/10/20 -BMR + *------------------------------------------------------------------------- + */ +#pragma pack(1) // no padding +const char* ABHI_PT("/abhiTest"); +const hsize_t NUM_PACKETS = 5; +const int STRING_LENGTH = 19; // including terminating NULL +int TestHDFFV_9758() { - long test_long; - short test_short; - hvl_t read_buf; - VL_PacketTable* test_VLPT; - PacketTable* new_pt; - - TESTING("variable-length packet tables") - - /* Create a variable length table */ - test_VLPT = new VL_PacketTable(fileID, "/VariableLengthTest", 1); - - /* Verify that the creation succeeded */ - if(! test_VLPT->IsValid()) - goto error; - - /* Append some packets */ - test_short = 9; - test_VLPT->AppendPacket(&test_short, sizeof(short)); - test_long = 16; - test_VLPT->AppendPacket(&test_long, sizeof(long)); - - /* Read them back and make sure they are correct */ - test_VLPT->GetNextPackets(1, &read_buf); - - if(read_buf.len != sizeof(short)) - goto error; - if(*(short *)(read_buf.p) != test_short) - goto error; - - /* Free the memory used by the read */ - test_VLPT->FreeReadbuff(1, &read_buf); - - /* Read the second record */ - test_VLPT->GetNextPackets(1, &read_buf); - - if(read_buf.len != sizeof(long)) - goto error; - if(*(long *)(read_buf.p) != test_long) - goto error; + hid_t strtype; + hid_t compound_type; + herr_t err; + struct s1_t + { + int a; + float b; + double c; + char d[STRING_LENGTH]; // null terminated string + int e; + }; - /* Free the memory used by the read */ - test_VLPT->FreeReadbuff(1, &read_buf); + s1_t s1[NUM_PACKETS]; + + for (hsize_t i = 0; i < NUM_PACKETS; i++) + { + s1[i].a = i; + s1[i].b = 1.f * static_cast(i * i); + s1[i].c = 1. / (i + 1); + sprintf(s1[i].d, "string%d", (int)i); + s1[i].e = 100+i; + } - /* Close the packet table */ - delete test_VLPT; + TESTING("the fix of issue HDFFV-9758") - /* Reopen the packet table and verify that it is variable length */ - new_pt = new PacketTable(fileID, "/VariableLengthTest"); + FL_PacketTable wrapper(fileID, H5P_DEFAULT, ABHI_PT, H5T_NATIVE_INT, 1); + if(! wrapper.IsValid()) + goto error; + + compound_type = H5Tcreate(H5T_COMPOUND, sizeof(s1_t)); + if (compound_type < 0) + goto error; + + err = H5Tinsert(compound_type, "a_name", HOFFSET(s1_t, a), H5T_NATIVE_INT); + if (err < 0) + goto error; + err = H5Tinsert(compound_type, "b_name", HOFFSET(s1_t, b), H5T_NATIVE_FLOAT); + if (err < 0) + goto error; + err = H5Tinsert(compound_type, "c_name", HOFFSET(s1_t, c), H5T_NATIVE_DOUBLE); + if (err < 0) + goto error; + + strtype = H5Tcopy (H5T_C_S1); + if (compound_type < 0) + goto error; + err = H5Tset_size (strtype, STRING_LENGTH); /* create string */ + if (err < 0) + goto error; + err = H5Tinsert(compound_type, "d_name", HOFFSET(s1_t, d), strtype); + if (err < 0) + goto error; + err = H5Tinsert(compound_type, "e_name", HOFFSET(s1_t, e), H5T_NATIVE_INT); + if (err < 0) + goto error; + +{ // so ptable will go out of scope + FL_PacketTable ptable(fileID, "/examplePacketTable", compound_type, 1); + if (not ptable.IsValid()) + goto error; + + for (size_t i = 0; i < NUM_PACKETS; i++) + { + /* Appends one packet at the current position */ + err = ptable.AppendPacket(s1 + i); + if (err < 0) goto error; + } - /* Verify that the open succeeded */ - if(! new_pt->IsValid()) - goto error; + const hsize_t count = ptable.GetPacketCount(err); + if (err < 0) + goto error; + + if (count != NUM_PACKETS) + { + std::cerr + << "Number of packets in packet table should be " << NUM_PACKETS + << " but is " << count << endl; + } - if(new_pt->IsVariableLength() != 1) - goto error; + ptable.ResetIndex(); - /* Close the packet table */ - delete new_pt; + for (size_t i = 0; i < NUM_PACKETS; i++) + { + s1_t s2; + memset(&s2, 0, sizeof(s1_t)); + err = ptable.GetNextPacket(&s2); + if (err < 0) + goto error; + + if (s2.a != s1[i].a || s2.e != s1[i].e) + goto error; + else if (HDstrcmp(s2.d, s1[i].d)) + goto error; + } +} PASSED(); return 0; error: + + H5E_BEGIN_TRY { + H5Fclose(fileID); + } H5E_END_TRY; + H5_FAILED(); return 1; } -#endif /* VLPT_REMOVED */ + diff --git a/hl/c++/test/ptableTest.h b/hl/c++/test/ptableTest.h index d351e34..4ee8967 100644 --- a/hl/c++/test/ptableTest.h +++ b/hl/c++/test/ptableTest.h @@ -52,6 +52,10 @@ int TestGetPacket(void); Test for unusual interactions between multiple packet tables. */ int SystemTest(void); +/* Create a packet table with compound type, which has a string type. Verify + that data was written and read correctly. */ +int TestHDFFV_9758(void); + /* Test the variable length dataset functionality */ int VariableLengthTest(void); diff --git a/hl/src/H5PT.c b/hl/src/H5PT.c index 647cbe8..5f0f94f 100644 --- a/hl/src/H5PT.c +++ b/hl/src/H5PT.c @@ -141,7 +141,9 @@ hid_t H5PTcreate(hid_t loc_id, if(H5Pclose(plistcopy_id) < 0) goto error; - if((table->type_id = H5Tget_native_type(dtype_id, H5T_DIR_DEFAULT)) < 0) + /* Make a copy of caller's datatype and save it in the table structure. + It will be closed when the table is closed */ + if((table->type_id = H5Tcopy(dtype_id)) < 0) goto error; H5PT_create_index(table); @@ -259,12 +261,11 @@ hid_t H5PTcreate_fl ( hid_t loc_id, if(H5Pclose(plist_id) < 0) goto error; + /* Make a copy of caller's datatype and save it in the table structure. + It will be closed when the table is closed */ if((table->type_id = H5Tcopy(dtype_id)) < 0) goto error; - if((table->type_id = H5Tget_native_type(table->type_id, H5T_DIR_DEFAULT)) < 0) - goto error; - H5PT_create_index(table); table->size = 0; @@ -352,8 +353,9 @@ hid_t H5PTopen( hid_t loc_id, if((type_id = H5Dget_type(table->dset_id)) < 0) goto error; - /* Get the table's native datatype */ - if((table->type_id = H5Tget_native_type(type_id, H5T_DIR_ASCEND)) < 0) + /* Make a copy of the datatype obtained and save it in the table structure. + It will be closed when the table is closed */ + if((table->type_id = H5Tcopy(type_id)) < 0) goto error; /* Close the disk datatype */ diff --git a/hl/test/test_packet.c b/hl/test/test_packet.c index e2ca2b5..1817ea4 100644 --- a/hl/test/test_packet.c +++ b/hl/test/test_packet.c @@ -95,8 +95,10 @@ make_particle_type(void) return FAIL; /* Insert fields. */ - string_type = H5Tcopy( H5T_C_S1 ); - H5Tset_size( string_type, (size_t)16 ); + if ((string_type = H5Tcopy(H5T_C_S1)) < 0) + return FAIL; + if (H5Tset_size(string_type, (size_t)16) < 0) + return FAIL; if ( H5Tinsert(type_id, "Name", HOFFSET(particle_t, name) , string_type ) < 0 ) return FAIL; @@ -133,8 +135,10 @@ static int create_hl_table(hid_t fid) herr_t status; /* Initialize the field field_type */ - string_type = H5Tcopy( H5T_C_S1 ); - H5Tset_size( string_type, (size_t)16 ); + if ((string_type = H5Tcopy(H5T_C_S1)) < 0) + return FAIL; + if (H5Tset_size(string_type, (size_t)16) < 0) + return FAIL; field_type[0] = string_type; field_type[1] = H5T_NATIVE_INT; field_type[2] = H5T_NATIVE_INT; @@ -152,12 +156,14 @@ static int create_hl_table(hid_t fid) field_names, part_offset, field_type, chunk_size, fill_data, compress, testPart ); -if(status<0) - return FAIL; -else - return SUCCEED; -} + if (H5Tclose(string_type) < 0) + return FAIL; + if(status<0) + return FAIL; + else + return SUCCEED; +} /*------------------------------------------------------------------------- @@ -183,7 +189,8 @@ static int test_create_close(hid_t fid) /* Create the table */ table = H5PTcreate_fl(fid, PT_NAME, part_t, (hsize_t)100, -1); - H5Tclose(part_t); + if (H5Tclose(part_t) < 0) + goto error; if( H5PTis_valid(table) < 0) goto error; if( H5PTis_varlen(table) != 0) @@ -248,7 +255,7 @@ static int test_append(hid_t fid) { herr_t err; hid_t table; - hsize_t count; + hsize_t count = 0; TESTING("H5PTappend"); @@ -458,7 +465,8 @@ static int test_big_table(hid_t fid) /* Create a new table */ table = H5PTcreate_fl(fid, "Packet Test Dataset2", part_t, (hsize_t)33, -1); - H5Tclose(part_t); + if (H5Tclose(part_t) < 0) + goto error; if( H5PTis_valid(table) < 0) goto error; @@ -536,7 +544,8 @@ static int test_opaque(hid_t fid) /* Create a new table */ table = H5PTcreate_fl(fid, "Packet Test Dataset3", part_t, (hsize_t)100, -1); - H5Tclose(part_t); + if( H5Tclose(part_t) < 0) + goto error; if( H5PTis_valid(table) < 0) goto error; @@ -743,9 +752,9 @@ static int test_rw_nonnative_dt(hid_t fid) /* Create a fixed-length packet table within the file */ /* This table's "packets" will be simple integers and it will use no compression */ if(H5Tget_order(H5T_NATIVE_INT) == H5T_ORDER_LE) { - ptable = H5PTcreate_fl(fid, "Packet Test Dataset, Non-native", H5T_STD_I32BE, (hsize_t)100, -1); + ptable = H5PTcreate(fid, "Packet Test Dataset, Non-native", H5T_STD_I32BE, (hsize_t)100, H5P_DEFAULT); } else { - ptable = H5PTcreate_fl(fid, "Packet Test Dataset, Non-native", H5T_STD_I32LE, (hsize_t)100, -1); + ptable = H5PTcreate(fid, "Packet Test Dataset, Non-native", H5T_STD_I32LE, (hsize_t)100, H5P_DEFAULT); } if(ptable == H5I_INVALID_HID) goto error; @@ -758,12 +767,14 @@ static int test_rw_nonnative_dt(hid_t fid) if( (err = H5PTappend(ptable, (size_t)4, &(writeBuffer[1]))) < 0) goto error; - if( (err = H5PTclose(ptable)) < 0) + /* if( (err = H5PTclose(ptable)) < 0) goto error; + */ /* Open the Packet table */ - if( (ptable = H5PTopen(fid, "Packet Test Dataset, Non-native")) < 0) + /* if( (ptable = H5PTopen(fid, "Packet Test Dataset, Non-native")) < 0) goto error; + */ /* Get the number of packets in the packet table. This should be five. */ if( (err = H5PTget_num_packets(ptable, &count)) < 0) @@ -973,7 +984,8 @@ int main(void) status = 1; /* Close the file */ - H5Fclose(fid); + if (H5Fclose(fid) < 0) + status = 1; return status; } diff --git a/hl/test/test_packet_vlen.c b/hl/test/test_packet_vlen.c index f1e4e00..a1e90a1 100644 --- a/hl/test/test_packet_vlen.c +++ b/hl/test/test_packet_vlen.c @@ -28,7 +28,6 @@ #define PT_COMP_VLEN "Dataset with Compound Type of VL types" #define PT_VLEN_VLEN "Dataset with VL of VL types" #define PT_FIXED_LEN "Fixed-length Packet Table" -#define SPACE3_RANK 1 #define L1_INCM 16 #define L2_INCM 8 #define NAME_BUF_SIZE 80 @@ -228,7 +227,9 @@ static int test_VLof_comptype(void) if (ptable == H5I_INVALID_HID) goto error; - /* Close the vlen datatype */ + /* Release the datatypes */ + if (H5Tclose(cmptype) < 0) + goto error; if (H5Tclose(vltype) < 0) goto error; @@ -311,13 +312,11 @@ static int test_compound_VL_VLtype(void) hvl_t v; } compVLVL_t; hid_t fid=H5I_INVALID_HID; /* Test file identifier */ - hid_t space=H5I_INVALID_HID; /* Dataspace identifier */ hid_t ptable=H5I_INVALID_HID; /* Packet table identifier */ hid_t vlatomic=H5I_INVALID_HID; /* Variable length datatype */ hid_t vlofvl=H5I_INVALID_HID; /* Variable length datatype */ hid_t comp_vlvl=H5I_INVALID_HID; /* ID of a compound datatype containing a VL of VL of atomic datatype */ - hsize_t dims1[] = {NRECORDS}; hsize_t count; /* Number of records in the table */ compVLVL_t writeBuf[NRECORDS];/* Buffer to hold data to be written */ compVLVL_t readBuf[NRECORDS]; /* Buffer to hold read data */ @@ -356,11 +355,6 @@ static int test_compound_VL_VLtype(void) if (fid < 0) goto error; - /* Create dataspace for datasets */ - space = H5Screate_simple(SPACE3_RANK, dims1, NULL); - if (space < 0) - goto error; - /* Create a VL datatype of an atomic type */ vlatomic = H5Tvlen_create (H5T_NATIVE_UINT); if (vlatomic < 0) @@ -394,7 +388,11 @@ static int test_compound_VL_VLtype(void) if (ptable == H5I_INVALID_HID) goto error; - /* Close the vlen datatype */ + /* Release datatypes */ + if (H5Tclose(vlatomic) < 0) + goto error; + if (H5Tclose(vlofvl) < 0) + goto error; if (H5Tclose(comp_vlvl) < 0) goto error; @@ -459,12 +457,6 @@ static int test_compound_VL_VLtype(void) if (ret < 0) goto error; - /* Release datatypes */ - if (H5Tclose(vlatomic) < 0) - goto error; - if (H5Tclose(vlofvl) < 0) - goto error; - /* Close the file */ if (H5Fclose(fid) < 0) goto error; @@ -547,7 +539,9 @@ static int test_VLof_VLtype(void) if (ptable == H5I_INVALID_HID) goto error; - /* Close the vlen datatype */ + /* Release datatypes */ + if (H5Tclose(vlatomic) < 0) + goto error; if (H5Tclose(vlofvl) < 0) goto error; @@ -771,6 +765,10 @@ static int adding_attribute(hid_t fid, const char *table_name, const char *attr_ if (H5Aclose(attr_id) < 0) goto error; + /* Close the dataspace */ + if (H5Sclose(space_id) < 0) + goto error; + /* Close the packet table */ if (H5PTclose(ptable) < 0) goto error; @@ -792,19 +790,12 @@ error: /* An error has occurred. Clean up and exit. */ static herr_t verify_attribute(hid_t fid, const char *table_name, const char *attr_name) { hid_t ptable=H5I_INVALID_HID; /* Packet table identifier */ - hid_t space_id=H5I_INVALID_HID; /* Dataspace for the attribute */ hid_t attr_id=H5I_INVALID_HID; /* Attribute identifier */ hid_t dset_id=H5I_INVALID_HID; /* Dataset associated with the pt */ - hsize_t dims[] = {ATTR_DIM}; /* Dimensions for dataspace */ int read_data[ATTR_DIM]; /* Output buffer */ int ii; herr_t ret = FAIL; /* Returned status from a callee */ - /* Create dataspace for attribute */ - space_id = H5Screate_simple(ATTR_RANK, dims, NULL); - if (space_id < 0) - goto error; - /* Open the named packet table */ ptable = H5PTopen(fid, table_name); if (ptable < 0) @@ -1229,7 +1220,9 @@ static int testfl_VLof_comptype(void) if (ptable == H5I_INVALID_HID) goto error; - /* Close the vlen datatype */ + /* Release the datatypes */ + if (H5Tclose(cmptype) < 0) + goto error; if (H5Tclose(vltype) < 0) goto error; @@ -1312,13 +1305,11 @@ static int testfl_compound_VL_VLtype(void) hvl_t v; } compVLVL_t; hid_t fid=H5I_INVALID_HID; /* Test file identifier */ - hid_t space=H5I_INVALID_HID; /* Dataspace identifier */ hid_t ptable=H5I_INVALID_HID; /* Packet table identifier */ hid_t vlatomic=H5I_INVALID_HID; /* Variable length datatype */ hid_t vlofvl=H5I_INVALID_HID; /* Variable length datatype */ hid_t comp_vlvl=H5I_INVALID_HID; /* ID of a compound datatype containing a VL of VL of atomic datatype */ - hsize_t dims1[] = {NRECORDS}; hsize_t count; /* Number of records in the table */ compVLVL_t writeBuf[NRECORDS];/* Buffer to hold data to be written */ compVLVL_t readBuf[NRECORDS]; /* Buffer to hold read data */ @@ -1357,11 +1348,6 @@ static int testfl_compound_VL_VLtype(void) if (fid < 0) goto error; - /* Create dataspace for datasets */ - space = H5Screate_simple(SPACE3_RANK, dims1, NULL); - if (space < 0) - goto error; - /* Create a VL datatype of an atomic type */ vlatomic = H5Tvlen_create (H5T_NATIVE_UINT); if (vlatomic < 0) @@ -1395,7 +1381,11 @@ static int testfl_compound_VL_VLtype(void) if (ptable == H5I_INVALID_HID) goto error; - /* Close the vlen datatype */ + /* Release datatypes */ + if (H5Tclose(vlatomic) < 0) + goto error; + if (H5Tclose(vlofvl) < 0) + goto error; if (H5Tclose(comp_vlvl) < 0) goto error; @@ -1460,12 +1450,6 @@ static int testfl_compound_VL_VLtype(void) if (ret < 0) goto error; - /* Release datatypes */ - if (H5Tclose(vlatomic) < 0) - goto error; - if (H5Tclose(vlofvl) < 0) - goto error; - /* Close the file */ if (H5Fclose(fid) < 0) goto error; @@ -1548,7 +1532,9 @@ static int testfl_VLof_VLtype(void) if (ptable == H5I_INVALID_HID) goto error; - /* Close the vlen datatype */ + /* Release datatypes */ + if (H5Tclose(vlatomic) < 0) + goto error; if (H5Tclose(vlofvl) < 0) goto error; @@ -1654,7 +1640,6 @@ int test_packet_table_with_varlen(void) if (test_accessors() < 0) status = FAIL; - /************************************************************************** Calling test functions for deprecated function H5PTcreate_fl Mar 2016, -BMR -- cgit v0.12 From be613da6b804e56a51f43a053bf35d898dccb420 Mon Sep 17 00:00:00 2001 From: Binh-Minh Ribler Date: Thu, 20 Oct 2016 23:38:24 -0500 Subject: Miscellaneous code cleanup. Platforms tested: Linux/32 2.6 (jam) Darwin (osx1010test) --- hl/c++/test/ptableTest.h | 3 --- hl/test/test_packet.c | 6 ++---- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/hl/c++/test/ptableTest.h b/hl/c++/test/ptableTest.h index 4ee8967..60b55ca 100644 --- a/hl/c++/test/ptableTest.h +++ b/hl/c++/test/ptableTest.h @@ -56,7 +56,4 @@ int SystemTest(void); that data was written and read correctly. */ int TestHDFFV_9758(void); -/* Test the variable length dataset functionality */ -int VariableLengthTest(void); - #endif /* PTABLETEST */ diff --git a/hl/test/test_packet.c b/hl/test/test_packet.c index 1817ea4..f577947 100644 --- a/hl/test/test_packet.c +++ b/hl/test/test_packet.c @@ -767,14 +767,12 @@ static int test_rw_nonnative_dt(hid_t fid) if( (err = H5PTappend(ptable, (size_t)4, &(writeBuffer[1]))) < 0) goto error; - /* if( (err = H5PTclose(ptable)) < 0) + if( (err = H5PTclose(ptable)) < 0) goto error; - */ /* Open the Packet table */ - /* if( (ptable = H5PTopen(fid, "Packet Test Dataset, Non-native")) < 0) + if( (ptable = H5PTopen(fid, "Packet Test Dataset, Non-native")) < 0) goto error; - */ /* Get the number of packets in the packet table. This should be five. */ if( (err = H5PTget_num_packets(ptable, &count)) < 0) -- cgit v0.12 From 3543f58f25ac6b71f7f7fc7c7a1e40b7fd373a75 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Fri, 21 Oct 2016 11:31:46 -0500 Subject: remove unneeded defines --- tools/h5repack/dynlib_vrpk.c | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/tools/h5repack/dynlib_vrpk.c b/tools/h5repack/dynlib_vrpk.c index 63ceaec..8da0270 100644 --- a/tools/h5repack/dynlib_vrpk.c +++ b/tools/h5repack/dynlib_vrpk.c @@ -21,17 +21,6 @@ #define H5Z_FILTER_DYNLIB4 260 -/* gcc attribute support from H5private.h */ -#ifdef __cplusplus -# define H5_ATTR_CONST /*void*/ -#else /* __cplusplus */ -#if defined(H5_HAVE_ATTRIBUTE) && !defined(__SUNPRO_C) -# define H5_ATTR_CONST __attribute__((const)) -#else -# define H5_ATTR_CONST /*void*/ -#endif -#endif /* __cplusplus */ - #define PUSH_ERR(func, minor, str) H5Epush2(H5E_DEFAULT, __FILE__, func, __LINE__, H5E_ERR_CLS, H5E_PLUGIN, minor, str) static size_t H5Z_filter_dynlib4(unsigned int flags, size_t cd_nelmts, @@ -48,8 +37,8 @@ const H5Z_class2_t H5Z_DYNLIB4[1] = {{ (H5Z_func_t)H5Z_filter_dynlib4, /* The actual filter function */ }}; -H5_ATTR_CONST H5PL_type_t H5PLget_plugin_type(void) {return H5PL_TYPE_FILTER;} -H5_ATTR_CONST const void *H5PLget_plugin_info(void) {return H5Z_DYNLIB4;} +H5PL_type_t H5PLget_plugin_type(void) {return H5PL_TYPE_FILTER;} +const void *H5PLget_plugin_info(void) {return H5Z_DYNLIB4;} /*------------------------------------------------------------------------- * Function: H5Z_filter_dynlib4 -- cgit v0.12 From 9a4ac501c1bd1f27bde1fc2acbc67bed74ff38ff Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Fri, 21 Oct 2016 14:11:46 -0500 Subject: Add defines missing on OSX --- tools/perform/pio_standalone.h | 5 +++++ tools/perform/sio_standalone.h | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/tools/perform/pio_standalone.h b/tools/perform/pio_standalone.h index df3bf54..f088c93 100644 --- a/tools/perform/pio_standalone.h +++ b/tools/perform/pio_standalone.h @@ -56,6 +56,11 @@ #define F_OK 0 /* Test for existence. */ #else /* H5_HAVE_WIN32_API */ #define HDaccess(F,M) access(F, M) +#ifndef F_OK +#define F_OK 00 +#define W_OK 02 +#define R_OK 04 +#endif #endif /* H5_HAVE_WIN32_API */ #define HDacos(X) acos(X) #ifdef H5_HAVE_ALARM diff --git a/tools/perform/sio_standalone.h b/tools/perform/sio_standalone.h index 63dc7b0..83dffa2 100644 --- a/tools/perform/sio_standalone.h +++ b/tools/perform/sio_standalone.h @@ -78,6 +78,11 @@ #define F_OK 0 /* Test for existence. */ #else /* H5_HAVE_WIN32_API */ #define HDaccess(F,M) access(F, M) +#ifndef F_OK +#define F_OK 00 +#define W_OK 02 +#define R_OK 04 +#endif #endif /* H5_HAVE_WIN32_API */ #define HDacos(X) acos(X) #ifdef H5_HAVE_ALARM -- cgit v0.12 From 0a27add8d71a9e623a99e7fc6eeff988e54a8566 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Fri, 21 Oct 2016 14:21:08 -0500 Subject: Change return statement format. --- tools/h5repack/dynlib_rpk.c | 50 +++++++++++++++++---------------------------- 1 file changed, 19 insertions(+), 31 deletions(-) diff --git a/tools/h5repack/dynlib_rpk.c b/tools/h5repack/dynlib_rpk.c index 6e8a7b6..3469e58 100644 --- a/tools/h5repack/dynlib_rpk.c +++ b/tools/h5repack/dynlib_rpk.c @@ -12,10 +12,10 @@ * to either file, you may request a copy from help@hdfgroup.org. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* - * Programmer: Raymond Lu - * 13 February 2013 + * Programmer: Raymond Lu + * 13 February 2013 * - * Purpose: Tests the plugin module (H5PL) + * Purpose: Tests the plugin module (H5PL) */ #include @@ -24,48 +24,36 @@ #define H5Z_FILTER_DYNLIB1 257 -/* gcc attribute support from H5private.h */ -#ifdef __cplusplus -# define H5_ATTR_CONST /*void*/ -#else /* __cplusplus */ -#if defined(H5_HAVE_ATTRIBUTE) && !defined(__SUNPRO_C) -# define H5_ATTR_CONST __attribute__((const)) -#else -# define H5_ATTR_CONST /*void*/ -#endif -#endif /* __cplusplus */ - - static size_t H5Z_filter_dynlib1(unsigned int flags, size_t cd_nelmts, const unsigned int *cd_values, size_t nbytes, size_t *buf_size, void **buf); /* This message derives from H5Z */ const H5Z_class2_t H5Z_DYNLIB1[1] = {{ H5Z_CLASS_T_VERS, /* H5Z_class_t version */ - H5Z_FILTER_DYNLIB1, /* Filter id number */ + H5Z_FILTER_DYNLIB1, /* Filter id number */ 1, 1, /* Encoding and decoding enabled */ - "dynlib1", /* Filter name for debugging */ + "dynlib1", /* Filter name for debugging */ NULL, /* The "can apply" callback */ NULL, /* The "set local" callback */ - (H5Z_func_t)H5Z_filter_dynlib1, /* The actual filter function */ + (H5Z_func_t)H5Z_filter_dynlib1, /* The actual filter function */ }}; -H5_ATTR_CONST H5PL_type_t H5PLget_plugin_type(void) {return H5PL_TYPE_FILTER;} -H5_ATTR_CONST const void *H5PLget_plugin_info(void) {return H5Z_DYNLIB1;} +H5PL_type_t H5PLget_plugin_type(void) {return H5PL_TYPE_FILTER;} +const void *H5PLget_plugin_info(void) {return H5Z_DYNLIB1;} /*------------------------------------------------------------------------- - * Function: H5Z_filter_dynlib1 + * Function: H5Z_filter_dynlib1 * - * Purpose: A dynlib1 filter method that adds on and subtract from - * the original value with another value. It will be built - * as a shared library. plugin.c test will load and use - * this filter library. + * Purpose: A dynlib1 filter method that adds on and subtract from + * the original value with another value. It will be built + * as a shared library. plugin.c test will load and use + * this filter library. * - * Return: Success: Data chunk size + * Return: Success: Data chunk size * - * Failure: 0 + * Failure: 0 * - * Programmer: Raymond Lu + * Programmer: Raymond Lu * 29 March 2013 * *------------------------------------------------------------------------- @@ -81,12 +69,12 @@ H5Z_filter_dynlib1(unsigned int flags, size_t cd_nelmts, /* Check for the correct number of parameters */ if(cd_nelmts == 0) - return(0); + return 0; /* Check that permanent parameters are set correctly */ if(cd_values[0] > 9) - return(0); - + return 0; + add_on = (int)cd_values[0]; if(flags & H5Z_FLAG_REVERSE) { /*read*/ -- cgit v0.12 From b3b7ae087edbc20891a088db2f4e4f83e186c8b0 Mon Sep 17 00:00:00 2001 From: Binh-Minh Ribler Date: Sun, 23 Oct 2016 21:03:47 -0500 Subject: Purpose: Fix Packet Table issues cont. Description: Misc cleanups and comments in tests. Platforms tested: Linux/32 2.6 (jam) Darwin (osx1010test) Linux/64 (jelly) --- hl/c++/test/ptableTest.cpp | 38 +++++++++++++++++++++----------------- hl/test/test_packet_vlen.c | 37 ++++++++++++++++++++++++------------- 2 files changed, 45 insertions(+), 30 deletions(-) diff --git a/hl/c++/test/ptableTest.cpp b/hl/c++/test/ptableTest.cpp index 953ec91..68b040e 100644 --- a/hl/c++/test/ptableTest.cpp +++ b/hl/c++/test/ptableTest.cpp @@ -38,20 +38,21 @@ int main(void) } else { - num_errors += BasicTest(); + num_errors += BasicTest(); - num_errors += TestCompoundDatatype(); + num_errors += TestCompoundDatatype(); - num_errors += TestGetPacket(); + num_errors += TestGetPacket(); - num_errors += TestGetNext(); + num_errors += TestGetNext(); - num_errors += TestCompress(); + num_errors += TestCompress(); - num_errors += TestErrors(); + num_errors += TestErrors(); - num_errors += SystemTest(); + num_errors += SystemTest(); + /* Test data corruption in packed structs */ num_errors += TestHDFFV_9758(); /* Terminate access to the file. */ @@ -562,7 +563,7 @@ error: /*------------------------------------------------------------------------- * TestHDFFV_9758(): Test that a packet table with compound datatype which - * contain string type can be created and written correctly. (HDFFV-9758) + * contains string type can be created and written correctly. (HDFFV-9758) * * Notes: * Previously, data of the field that follows the string was read back @@ -599,12 +600,9 @@ int TestHDFFV_9758() s1[i].e = 100+i; } - TESTING("the fix of issue HDFFV-9758") - - FL_PacketTable wrapper(fileID, H5P_DEFAULT, ABHI_PT, H5T_NATIVE_INT, 1); - if(! wrapper.IsValid()) - goto error; + TESTING("data corruption in packed structs (HDFFV-9758)") + // Build a compound datatype compound_type = H5Tcreate(H5T_COMPOUND, sizeof(s1_t)); if (compound_type < 0) goto error; @@ -619,7 +617,7 @@ int TestHDFFV_9758() if (err < 0) goto error; - strtype = H5Tcopy (H5T_C_S1); + strtype = H5Tcopy (H5T_C_S1); if (compound_type < 0) goto error; err = H5Tset_size (strtype, STRING_LENGTH); /* create string */ @@ -632,11 +630,14 @@ int TestHDFFV_9758() if (err < 0) goto error; -{ // so ptable will go out of scope + { // so ptable will go out of scope before PASSED + + // Create a packet table FL_PacketTable ptable(fileID, "/examplePacketTable", compound_type, 1); if (not ptable.IsValid()) goto error; + // Add packets to the table for (size_t i = 0; i < NUM_PACKETS; i++) { /* Appends one packet at the current position */ @@ -644,6 +645,7 @@ int TestHDFFV_9758() if (err < 0) goto error; } + // Check packet count const hsize_t count = ptable.GetPacketCount(err); if (err < 0) goto error; @@ -655,8 +657,8 @@ int TestHDFFV_9758() << " but is " << count << endl; } + // Read and verify the data ptable.ResetIndex(); - for (size_t i = 0; i < NUM_PACKETS; i++) { s1_t s2; @@ -670,7 +672,7 @@ int TestHDFFV_9758() else if (HDstrcmp(s2.d, s1[i].d)) goto error; } -} + } // end of ptable block PASSED(); return 0; @@ -678,6 +680,8 @@ int TestHDFFV_9758() error: H5E_BEGIN_TRY { + H5Tclose(strtype); + H5Tclose(compound_type); H5Fclose(fileID); } H5E_END_TRY; diff --git a/hl/test/test_packet_vlen.c b/hl/test/test_packet_vlen.c index a1e90a1..b152a2c 100644 --- a/hl/test/test_packet_vlen.c +++ b/hl/test/test_packet_vlen.c @@ -148,6 +148,7 @@ static int test_VLof_atomic(void) return SUCCEED; error: /* An error has occurred. Clean up and exit. */ + if (vltype > 0) H5Tclose(vltype); if (H5PTis_valid(ptable) > 0) H5PTclose(ptable); if (fid > 0) H5Fclose(fid); H5PTfree_vlen_buff(ptable, NRECORDS, readBuf); @@ -287,6 +288,8 @@ static int test_VLof_comptype(void) return SUCCEED; error: /* An error has occurred. Clean up and exit. */ + if (cmptype > 0) H5Tclose(cmptype); + if (vltype > 0) H5Tclose(vltype); if (H5PTis_valid(ptable) > 0) H5PTclose(ptable); if (fid > 0) H5Fclose(fid); H5PTfree_vlen_buff(ptable, NRECORDS, readBuf); @@ -465,6 +468,9 @@ static int test_compound_VL_VLtype(void) return SUCCEED; error: /* An error has occurred. Clean up and exit. */ + if (vlatomic > 0) H5Tclose(vlatomic); + if (vlofvl > 0) H5Tclose(vlofvl); + if (comp_vlvl > 0) H5Tclose(comp_vlvl); if (H5PTis_valid(ptable) > 0) H5PTclose(ptable); if (fid > 0) H5Fclose(fid); H5PTfree_vlen_buff(ptable, NRECORDS, readBuf); @@ -584,6 +590,8 @@ static int test_VLof_VLtype(void) return SUCCEED; error: /* An error has occurred. Clean up and exit. */ + if (vlatomic > 0) H5Tclose(vlatomic); + if (vlofvl > 0) H5Tclose(vlofvl); if (H5PTis_valid(ptable) > 0) H5PTclose(ptable); if (fid > 0) H5Fclose(fid); H5PTfree_vlen_buff(ptable, NRECORDS, readBuf); @@ -776,6 +784,8 @@ static int adding_attribute(hid_t fid, const char *table_name, const char *attr_ return SUCCEED; error: /* An error has occurred. Clean up and exit. */ + if (attr_id > 0) H5Aclose(attr_id); + if (space_id > 0) H5Sclose(space_id); if (H5PTis_valid(ptable) > 0) H5PTclose(ptable); return ret; } /* adding_attribute */ @@ -898,7 +908,7 @@ static int test_attributes(void) return(ret); error: /* An error has occurred. Clean up and exit. */ - H5Fclose(fid); + if (fid > 0) H5Fclose(fid); H5_FAILED(); return FAIL; } /* test_attributes */ @@ -920,9 +930,8 @@ error: /* An error has occurred. Clean up and exit. */ * 2016/01/27 -BMR *------------------------------------------------------------------------- */ -static herr_t verify_accessors(const char *table_name, herr_t expected_value) +static herr_t verify_accessors(hid_t fid, const char *table_name, herr_t expected_value) { - hid_t fid=H5I_INVALID_HID; /* File identifier */ hid_t ptable=H5I_INVALID_HID; /* Packet table identifier */ hid_t dset_id=H5I_INVALID_HID; /* Dataset associated with the pt */ hid_t dtype_id=H5I_INVALID_HID; /* Dataset identifier */ @@ -931,11 +940,6 @@ static herr_t verify_accessors(const char *table_name, herr_t expected_value) herr_t is_varlen = 0; herr_t ret = FAIL; /* Returned status from a callee */ - /* Open the file. */ - fid = H5Fopen(TEST_FILE_NAME, H5F_ACC_RDWR, H5P_DEFAULT); - if (fid < 0) - goto error; - /* Open the named packet table. */ ptable = H5PTopen(fid, table_name); if (ptable < 0) @@ -984,7 +988,8 @@ static herr_t verify_accessors(const char *table_name, herr_t expected_value) error: /* An error has occurred. Clean up and exit. */ if (H5PTis_valid(ptable) > 0) H5PTclose(ptable); - return ret; + H5_FAILED(); + return FAIL; } /* verify_accessors */ /*------------------------------------------------------------------------- @@ -1000,7 +1005,6 @@ error: /* An error has occurred. Clean up and exit. */ static int test_accessors(void) { hid_t fid=H5I_INVALID_HID; /* File identifier */ - hid_t ptable=H5I_INVALID_HID; /* File identifier */ herr_t ret = FAIL; /* Returned status from a callee */ TESTING("accessor functions"); @@ -1010,11 +1014,11 @@ static int test_accessors(void) if (fid < 0) goto error; - ret = verify_accessors(PT_VLEN_ATOMIC, TRUE); + ret = verify_accessors(fid, PT_VLEN_ATOMIC, TRUE); if (ret < 0) goto error; - ret = verify_accessors(PT_FIXED_LEN, FALSE); + ret = verify_accessors(fid, PT_FIXED_LEN, FALSE); if (ret < 0) goto error; @@ -1026,7 +1030,6 @@ static int test_accessors(void) return SUCCEED; error: /* An error has occurred. Clean up and exit. */ - if (H5PTis_valid(ptable) > 0) H5PTclose(ptable); if (fid > 0) H5Fclose(fid); H5_FAILED(); return FAIL; @@ -1141,6 +1144,7 @@ static int testfl_VLof_atomic(void) return SUCCEED; error: /* An error has occurred. Clean up and exit. */ + if (vltype > 0) H5Tclose(vltype); if (H5PTis_valid(ptable) > 0) H5PTclose(ptable); if (fid > 0) H5Fclose(fid); H5PTfree_vlen_buff(ptable, NRECORDS, readBuf); @@ -1280,6 +1284,8 @@ static int testfl_VLof_comptype(void) return SUCCEED; error: /* An error has occurred. Clean up and exit. */ + if (cmptype > 0) H5Tclose(cmptype); + if (vltype > 0) H5Tclose(vltype); if (H5PTis_valid(ptable) > 0) H5PTclose(ptable); if (fid > 0) H5Fclose(fid); H5PTfree_vlen_buff(ptable, NRECORDS, readBuf); @@ -1458,6 +1464,9 @@ static int testfl_compound_VL_VLtype(void) return SUCCEED; error: /* An error has occurred. Clean up and exit. */ + if (vlatomic > 0) H5Tclose(vlatomic); + if (vlofvl > 0) H5Tclose(vlofvl); + if (comp_vlvl > 0) H5Tclose(comp_vlvl); if (H5PTis_valid(ptable) > 0) H5PTclose(ptable); if (fid > 0) H5Fclose(fid); H5PTfree_vlen_buff(ptable, NRECORDS, readBuf); @@ -1577,6 +1586,8 @@ static int testfl_VLof_VLtype(void) return SUCCEED; error: /* An error has occurred. Clean up and exit. */ + if (vlatomic > 0) H5Tclose(vlatomic); + if (vlofvl > 0) H5Tclose(vlofvl); if (H5PTis_valid(ptable) > 0) H5PTclose(ptable); if (fid > 0) H5Fclose(fid); H5PTfree_vlen_buff(ptable, NRECORDS, readBuf); -- cgit v0.12 From 061b758c2948a94cf32f172119bcb5023d283750 Mon Sep 17 00:00:00 2001 From: Binh-Minh Ribler Date: Mon, 24 Oct 2016 09:56:01 -0500 Subject: Description: User's sample code used "not" instead of "!" and Windows does not like that. Fixed. Platforms tested: Linux/32 2.6 (jam) Darwin (osx1010test) --- hl/c++/test/ptableTest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hl/c++/test/ptableTest.cpp b/hl/c++/test/ptableTest.cpp index 68b040e..67efda5 100644 --- a/hl/c++/test/ptableTest.cpp +++ b/hl/c++/test/ptableTest.cpp @@ -634,7 +634,7 @@ int TestHDFFV_9758() // Create a packet table FL_PacketTable ptable(fileID, "/examplePacketTable", compound_type, 1); - if (not ptable.IsValid()) + if (!ptable.IsValid()) goto error; // Add packets to the table -- cgit v0.12 From 62232e9120a799f710e89eba86831c37d4096702 Mon Sep 17 00:00:00 2001 From: lrknox Date: Mon, 24 Oct 2016 14:17:24 -0500 Subject: Translate svn commands and references to git. --- bin/bbrelease | 10 +++++----- bin/chkcopyright | 2 +- bin/release | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/bin/bbrelease b/bin/bbrelease index c5d562e..b06b243 100755 --- a/bin/bbrelease +++ b/bin/bbrelease @@ -190,7 +190,7 @@ today=`date +%Y%m%d` pmode='no' revmode='no' tmpdir="../#release_tmp.$$" # tmp work directory -DOC_URL=http://svn.hdfgroup.uiuc.edu/hdf5doc/trunk +DOC_URL=https://git@bitbucket.hdfgroup.org/scm/hdffv/hdf5doc.git CPPLUS_RM_NAME=cpplus_RM # Restore previous Version information @@ -334,7 +334,7 @@ done # trunk is different than branches. if [ "${DOCVERSION}" ]; then - DOC_URL=http://svn.hdfgroup.uiuc.edu/hdf5doc/branches/${DOCVERSION} + DOC_URL=https://git@bitbucket.hdfgroup.org/scm/hdffv/hdf5doc.git -b ${DOCVERSION} fi # Create the tar file @@ -371,11 +371,11 @@ for comp in $methods; do ;; doc) if [ "${DOCVERSION}" = "" ]; then - DOCVERSION=trunk + DOCVERSION=master fi test "$verbose" && echo " Creating docs..." 1>&2 - # Check out docs from svn repo - (cd $tmpdir; svn co $DOC_URL > /dev/null) || exit 1 + # Check out docs from git repo + (cd $tmpdir; git clone $DOC_URL > /dev/null) || exit 1 # Create doxygen C++ RM (cd c++/src && doxygen cpp_doc_config > /dev/null ) || exit 1 # Replace version of C++ RM with just-created version diff --git a/bin/chkcopyright b/bin/chkcopyright index 07fcb24..f6e910d 100755 --- a/bin/chkcopyright +++ b/bin/chkcopyright @@ -30,7 +30,7 @@ DIFF="diff" INITFILE=.h5chkright.ini EXCEPTIONS=/tmp/h5chkright.except.$$ tmpfile=/tmp/h5chkright_tmp.$$ -EXCEPTIONDIRS="-name CVS -o -name .svn" # at least skip CVS directories. +EXCEPTIONDIRS="-name .git" # at least skip .git directories. EXTRACTEDFILE=/tmp/h5chkright.extracted.$$ VERBOSE= # default no FIXIT= # default no diff --git a/bin/release b/bin/release index 1d3c9c5..08779cb 100755 --- a/bin/release +++ b/bin/release @@ -168,7 +168,7 @@ release_date=`date +%F` today=`date +%Y%m%d` pmode='no' tmpdir="../#release_tmp.$$" # tmp work directory -DOC_URL=http://svn.hdfgroup.uiuc.edu/hdf5doc/trunk +DOC_URL=https://git@bitbucket.hdfgroup.org/scm/hdffv/hdf5doc.git CPPLUS_RM_NAME=cpplus_RM # Restore previous Version information @@ -316,8 +316,8 @@ for comp in $methods; do ;; doc) test "$verbose" && echo " Creating docs..." 1>&2 - # Check out docs from svn repo - (cd $tmpdir; svn co $DOC_URL > /dev/null) || exit 1 + # Check out docs from git repo + (cd $tmpdir; git clone $DOC_URL > /dev/null) || exit 1 # Create doxygen C++ RM (cd c++/src && doxygen cpp_doc_config > /dev/null ) || exit 1 # Replace version of C++ RM with just-created version -- cgit v0.12 From db9b0cb1006daa2c249a60ceca1d518a3da06c88 Mon Sep 17 00:00:00 2001 From: lrknox Date: Mon, 24 Oct 2016 16:27:17 -0500 Subject: Translate SVN commands and references to GIT. --- bin/chkmanifest | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/chkmanifest b/bin/chkmanifest index a0b51af..a01217d 100755 --- a/bin/chkmanifest +++ b/bin/chkmanifest @@ -14,8 +14,8 @@ # access to either file, you may request a copy from help@hdfgroup.org. # -# Check that all the files in MANIFEST exist and that (if this is a -# SVN checkout) that all the SVN-managed files appear in the +# Check that all the files in MANIFEST exist and (if this is a +# GIT checkout) that all the GIT-managed files appear in the # MANIFEST. # @@ -142,7 +142,7 @@ done if [ "X$fail" = "Xyes" ]; then cat 1>&2 < Date: Tue, 25 Oct 2016 09:53:44 -0500 Subject: Changes to be committed: modified: bittests.c modified: cmpd_dset.c modified: dsets.c modified: dt_arith.c modified: dtypes.c modified: extend.c modified: fillval.c modified: filter_fail.c modified: flush1.c modified: gen_cross.c modified: hyperslab.c modified: istore.c modified: links.c modified: links_env.c modified: objcopy.c modified: plugin.c modified: tcheck_version.c modified: unlink.c modified: unregister.c Minor fixes to replace numeric exit codes with MACRO declarations. Not all codes found were boolean, and those cases were not changed. --- test/bittests.c | 2 +- test/cmpd_dset.c | 4 ++-- test/dsets.c | 4 ++-- test/dt_arith.c | 10 +++++----- test/dtypes.c | 2 +- test/extend.c | 2 +- test/fillval.c | 2 +- test/filter_fail.c | 6 +++--- test/flush1.c | 10 +++++----- test/gen_cross.c | 4 ++-- test/hyperslab.c | 8 ++++---- test/istore.c | 10 +++++----- test/links.c | 6 +++--- test/links_env.c | 6 +++--- test/objcopy.c | 2 +- test/plugin.c | 4 ++-- test/tcheck_version.c | 8 ++++---- test/unlink.c | 2 +- test/unregister.c | 4 ++-- 19 files changed, 48 insertions(+), 48 deletions(-) diff --git a/test/bittests.c b/test/bittests.c index 38e419d..cf83ead 100644 --- a/test/bittests.c +++ b/test/bittests.c @@ -932,7 +932,7 @@ main(void) if(nerrors) { printf("***** %u FAILURE%s! *****\n", nerrors, 1 == nerrors ? "" : "S"); - exit(1); + exit(EXIT_FAILURE); } printf("All bit tests passed.\n"); diff --git a/test/cmpd_dset.c b/test/cmpd_dset.c index a7f3902..b44a847 100644 --- a/test/cmpd_dset.c +++ b/test/cmpd_dset.c @@ -2219,7 +2219,7 @@ main (int argc, char *argv[]) if (argc>1) { if (argc>2 || strcmp("--noopt", argv[1])) { fprintf(stderr, "usage: %s [--noopt]\n", argv[0]); - exit(1); + exit(EXIT_FAILURE); } H5Tunregister(H5T_PERS_DONTCARE, NULL, (hid_t)-1, (hid_t)-1, H5T__conv_struct_opt); } @@ -2252,7 +2252,7 @@ main (int argc, char *argv[]) if (nerrors) { printf("***** %u FAILURE%s! *****\n", nerrors, 1==nerrors?"":"S"); - HDexit(1); + HDexit(EXIT_FAILURE); } h5_cleanup(FILENAME, fapl_id); diff --git a/test/dsets.c b/test/dsets.c index 16c233f..7d9f331 100644 --- a/test/dsets.c +++ b/test/dsets.c @@ -12008,9 +12008,9 @@ error: * * Purpose: Tests the dataset interface (H5D) * - * Return: Success: exit(0) + * Return: Success: exit(EXIT_SUCCESS) * - * Failure: exit(1) + * Failure: exit(EXIT_FAILURE) * * Programmer: Robb Matzke * Tuesday, December 9, 1997 diff --git a/test/dt_arith.c b/test/dt_arith.c index 1ebcf74..c5c14c87 100644 --- a/test/dt_arith.c +++ b/test/dt_arith.c @@ -567,7 +567,7 @@ generates_sigfpe(void) HDfflush(stderr); if ((pid=fork()) < 0) { HDperror("fork"); - HDexit(1); + HDexit(EXIT_FAILURE); } else if (0==pid) { for (i=0; i<2000; i++) { for(j = 0; j < sizeof(double); j++) @@ -575,7 +575,7 @@ generates_sigfpe(void) f = (float)d; some_dummy_func((float)f); } - HDexit(0); + HDexit(EXIT_SUCCESS); } while (pid!=waitpid(pid, &status, 0)) @@ -3346,7 +3346,7 @@ done: if(run_test==TEST_NOOP || run_test==TEST_NORMAL) HDexit(MIN((int)fails_all_tests, 254)); else if(run_test==TEST_DENORM || run_test==TEST_SPECIAL) - HDexit(0); + HDexit(EXIT_SUCCESS); HDassert(0 && "Should not reach this point!"); return 1; #else @@ -3372,7 +3372,7 @@ error: if(run_test==TEST_NOOP || run_test==TEST_NORMAL) HDexit(MIN(MAX((int)fails_all_tests, 1), 254)); else if(run_test==TEST_DENORM || run_test==TEST_SPECIAL) - HDexit(1); + HDexit(EXIT_FAILURE); HDassert(0 && "Should not reach this point!"); return 1; #else @@ -5251,7 +5251,7 @@ main(void) if (nerrors) { printf("***** %lu FAILURE%s! *****\n", nerrors, 1==nerrors?"":"S"); - HDexit(1); + HDexit(EXIT_FAILURE); } printf("All data type tests passed.\n"); return 0; diff --git a/test/dtypes.c b/test/dtypes.c index f247bd9..c3a8066 100644 --- a/test/dtypes.c +++ b/test/dtypes.c @@ -7479,7 +7479,7 @@ main(void) if(nerrors) { printf("***** %lu FAILURE%s! *****\n", nerrors, 1==nerrors?"":"S"); - HDexit(1); + HDexit(EXIT_FAILURE); } printf("All datatype tests passed.\n"); diff --git a/test/extend.c b/test/extend.c index 5951e69..68f0d7c 100644 --- a/test/extend.c +++ b/test/extend.c @@ -292,7 +292,7 @@ main (void) if(nerrors) { printf("***** %d FAILURE%s! *****\n", nerrors, (1 == nerrors) ? "" : "S"); - exit(1); + exit(EXIT_FAILURE); } /* end if */ printf("All extend tests passed.\n"); diff --git a/test/fillval.c b/test/fillval.c index 3f713e9..4f7adc1 100644 --- a/test/fillval.c +++ b/test/fillval.c @@ -2383,7 +2383,7 @@ main(int argc, char *argv[]) test_compact =1; else { fprintf(stderr, "usage: %s [contiguous] [chunked] [compact]\n", argv[0]); - exit(1); + exit(EXIT_FAILURE); } } /* end for */ } /* end if */ diff --git a/test/filter_fail.c b/test/filter_fail.c index c7248cc..f165d8a 100644 --- a/test/filter_fail.c +++ b/test/filter_fail.c @@ -349,8 +349,8 @@ error: * Purpose: Tests the library's behavior when a mandate filter returns * failure. * - * Return: Success: exit(0) - * Failure: exit(1) + * Return: Success: exit(EXIT_SUCCESS) + * Failure: exit(EXIT_FAILURE) * * Programmer: Raymond Lu * 25 August 2010 @@ -406,6 +406,6 @@ error: if (nerrors) { printf("***** %u FAILURE%s! *****\n", nerrors, 1==nerrors?"":"S"); - HDexit(1); + HDexit(EXIT_FAILURE); } } diff --git a/test/flush1.c b/test/flush1.c index f1169ea..64d072a 100644 --- a/test/flush1.c +++ b/test/flush1.c @@ -20,7 +20,7 @@ * Purpose: This is the first half of a two-part test that makes sure * that a file can be read after an application crashes as long * as the file was flushed first. We simulate a crash by - * calling _exit(0) since this doesn't flush HDF5 caches but + * calling _exit(EXIT_SUCCESS) since this doesn't flush HDF5 caches but * still exits with success. */ #include "h5test.h" @@ -83,7 +83,7 @@ create_file(char* name, hid_t fapl) return file; error: - HD_exit(1); + HD_exit(EXIT_FAILURE); } @@ -127,7 +127,7 @@ extend_file(hid_t file) return file; error: - HD_exit(1); + HD_exit(EXIT_FAILURE); } /*------------------------------------------------------------------------- @@ -185,10 +185,10 @@ main(void) fflush(stdout); fflush(stderr); - HD_exit(0); + HD_exit(EXIT_SUCCESS); error: - HD_exit(1); + HD_exit(EXIT_FAILURE); return 1; } diff --git a/test/gen_cross.c b/test/gen_cross.c index d7c424a..af39f69 100644 --- a/test/gen_cross.c +++ b/test/gen_cross.c @@ -1260,8 +1260,8 @@ error: * * Purpose: Create a file for cross_read.c test. * - * Return: Success: exit(0) - * Failure: exit(1) + * Return: Success: exit(EXIT_SUCCESS) + * Failure: exit(EXIT_FAILURE) * * Programmer: Raymond Lu * Some time ago diff --git a/test/hyperslab.c b/test/hyperslab.c index 9ba5731..065d001 100644 --- a/test/hyperslab.c +++ b/test/hyperslab.c @@ -1188,9 +1188,9 @@ error: * `small' and/or `medium' on the command line or only `small' * is assumed. * - * Return: Success: exit(0) + * Return: Success: exit(EXIT_SUCCESS) * - * Failure: exit(non-zero) + * Failure: exit(EXIT_FAILURE) * * Programmer: Robb Matzke * Friday, October 10, 1997 @@ -1217,7 +1217,7 @@ main(int argc, char *argv[]) size_of_test |= TEST_MEDIUM; else { printf("unrecognized argument: %s\n", argv[i]); - HDexit(1); + HDexit(EXIT_FAILURE); } /* end else */ } /* end for */ } /* end else */ @@ -1437,7 +1437,7 @@ main(int argc, char *argv[]) == nerrors ? "" : "S"); if(HDisatty(1)) printf("(Redirect output to a pager or a file to see debug output)\n"); - HDexit(1); + HDexit(EXIT_FAILURE); } /* end if */ printf("All hyperslab tests passed.\n"); diff --git a/test/istore.c b/test/istore.c index 68668d8..f6b83c9 100644 --- a/test/istore.c +++ b/test/istore.c @@ -585,9 +585,9 @@ error: * * Purpose: Tests indexed storage stuff. * - * Return: Success: exit(0) + * Return: Success: exit(EXIT_SUCCESS) * - * Failure: exit(non-zero) + * Failure: exit(EXIT_FAILURE) * * Programmer: Robb Matzke * Wednesday, October 15, 1997 @@ -623,7 +623,7 @@ main(int argc, char *argv[]) } else { printf("unrecognized argument: %s\n", argv[i]); #if 0 - exit(1); + exit(EXIT_FAILURE); #endif } } @@ -658,7 +658,7 @@ main(int argc, char *argv[]) h5_fixname(FILENAME[0], fapl, filename, sizeof filename); if ((file=H5Fcreate(filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0) { printf("Cannot create file %s; test aborted\n", filename); - exit(1); + exit(EXIT_FAILURE); } /* Initialize chunk dimensions */ @@ -726,7 +726,7 @@ main(int argc, char *argv[]) if (nerrors) { printf("***** %d I-STORE TEST%s FAILED! *****\n", nerrors, 1 == nerrors ? "" : "S"); - exit(1); + exit(EXIT_FAILURE); } printf("All i-store tests passed.\n"); diff --git a/test/links.c b/test/links.c index f60a88a..2c841f0 100644 --- a/test/links.c +++ b/test/links.c @@ -14771,9 +14771,9 @@ error: * * Purpose: Test links * - * Return: Success: exit(0) + * Return: Success: exit(EXIT_SUCCESS) * - * Failure: exit(non-zero) + * Failure: exit(EXIT_FAILURE) * * Programmer: Robb Matzke * Friday, August 14, 1998 @@ -14973,7 +14973,7 @@ main(void) if(nerrors) { printf("***** %d LINK TEST%s FAILED! *****\n", nerrors, 1 == nerrors ? "" : "S"); - HDexit(1); + HDexit(EXIT_FAILURE); } printf("All link tests passed.\n"); diff --git a/test/links_env.c b/test/links_env.c index b9ecafa..efc7c1e 100644 --- a/test/links_env.c +++ b/test/links_env.c @@ -138,8 +138,8 @@ external_link_env(hid_t fapl, hbool_t new_format) * * Purpose: Test external link with environment variable HDF5_EXT_PREFIX * - * Return: Success: exit(0) - * Failure: exit(non-zero) + * Return: Success: exit(EXIT_SUCCESS) + * Failure: exit(EXIT_FAILURE) * * Programmer: Vailin Choi; Nov 2010 * @@ -175,7 +175,7 @@ main(void) if(nerrors) { HDprintf("***** %d External Link (HDF5_EXT_PREFIX) test%s FAILED! *****\n", nerrors, 1 == nerrors ? "" : "s"); - HDexit(1); + HDexit(EXIT_FAILURE); } HDprintf("All external Link (HDF5_EXT_PREFIX) tests passed.\n"); diff --git a/test/objcopy.c b/test/objcopy.c index f4b1561..7f5a9ba 100644 --- a/test/objcopy.c +++ b/test/objcopy.c @@ -13827,7 +13827,7 @@ main(void) if(nerrors) { printf("***** %d OBJECT COPY TEST%s FAILED! *****\n", nerrors, (1 == nerrors ? "" : "S")); - exit(1); + exit(EXIT_FAILURE); } /* end if */ puts ("All object copying tests passed."); diff --git a/test/plugin.c b/test/plugin.c index 3086e90..a70e885 100644 --- a/test/plugin.c +++ b/test/plugin.c @@ -733,9 +733,9 @@ error: * * Purpose: Tests the plugin module (H5PL) * - * Return: Success: exit(0) + * Return: Success: exit(EXIT_SUCCESS) * - * Failure: exit(1) + * Failure: exit(EXIT_FAILURE) * * Programmer: Raymond Lu * 14 March 2013 diff --git a/test/tcheck_version.c b/test/tcheck_version.c index 1abab69..5808680 100644 --- a/test/tcheck_version.c +++ b/test/tcheck_version.c @@ -65,7 +65,7 @@ parse(int ac, char **av) pt = *(++av); if (*pt != '-') { fprintf(stderr, "Unknown option(%s). Aborted.\n", *av); - exit(1); + exit(EXIT_FAILURE); }else{ switch(*(++pt)) { case 't': /* option -t */ @@ -81,15 +81,15 @@ parse(int ac, char **av) break; default: fprintf(stderr, "Unknown -v parameter (%s). Aborted.\n", *av); - exit(1); + exit(EXIT_FAILURE); } break; case 'h': /* help page */ showhelp(); - exit(0); + exit(EXIT_SUCCESS); default: fprintf(stderr, "Unknown option(%s). Aborted.\n", *av); - exit(1); + exit(EXIT_FAILURE); } } } diff --git a/test/unlink.c b/test/unlink.c index 9222596..660a155 100644 --- a/test/unlink.c +++ b/test/unlink.c @@ -2553,7 +2553,7 @@ main(void) if (nerrors) { printf("***** %d FAILURE%s! *****\n", nerrors, 1==nerrors?"":"S"); - exit(1); + exit(EXIT_FAILURE); } puts("All unlink tests passed."); diff --git a/test/unregister.c b/test/unregister.c index be40383..878270f 100644 --- a/test/unregister.c +++ b/test/unregister.c @@ -218,9 +218,9 @@ error: * * Purpose: Tests unregistering filter with H5Zunregister * - * Return: Success: exit(0) + * Return: Success: exit(EXIT_SUCCESS) * - * Failure: exit(1) + * Failure: exit(EXIT_FAILURE) * * Programmer: Raymond Lu * 11 April 2013 -- cgit v0.12 From 889d7fd73341a377dff98673d08031e422c18ab0 Mon Sep 17 00:00:00 2001 From: Binh-Minh Ribler Date: Wed, 26 Oct 2016 14:16:24 -0500 Subject: Description: - In the test for HDFFV-9758, a pragma pack(1) caused failure on Emu because Sparc cannot access misaligned data. Changed it to pack() to do the default alignment. - Added DOXYGEN_SHOULD_SKIP_THIS blocks to private elements to prevent warnings from doxygen. Platforms tested: SunOS 5.11 (emu) Linux/32 2.6 (jam) --- c++/src/H5Library.cpp | 2 ++ hl/c++/test/ptableTest.cpp | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/c++/src/H5Library.cpp b/c++/src/H5Library.cpp index 4d1f279..1726121 100644 --- a/c++/src/H5Library.cpp +++ b/c++/src/H5Library.cpp @@ -253,6 +253,7 @@ void H5Library::setFreeListLimits(int reg_global_lim, int reg_list_lim, } } +#ifndef DOXYGEN_SHOULD_SKIP_THIS //-------------------------------------------------------------------------- // Function: H5Library default constructor - private ///\brief Default constructor: Creates a stub H5Library object @@ -266,5 +267,6 @@ H5Library::H5Library(){} // Programmer Binh-Minh Ribler - 2000 //-------------------------------------------------------------------------- H5Library::~H5Library(){} +#endif // DOXYGEN_SHOULD_SKIP_THIS } // end namespace diff --git a/hl/c++/test/ptableTest.cpp b/hl/c++/test/ptableTest.cpp index 67efda5..c388af3 100644 --- a/hl/c++/test/ptableTest.cpp +++ b/hl/c++/test/ptableTest.cpp @@ -551,7 +551,6 @@ int SystemTest() return 0; error: - H5E_BEGIN_TRY { H5Tclose(dtypeID1); H5Tclose(dtypeID2); @@ -569,9 +568,14 @@ error: * Previously, data of the field that follows the string was read back * as garbage when #pragma pack(1) is used. * 2016/10/20 -BMR + * Updated: + * #pragma pack(1) caused failure on Emu because Sparc cannot + * access misaligned data. Changed it to pack() to do the + * default alignment. + * 2016/10/25 -BMR *------------------------------------------------------------------------- */ -#pragma pack(1) // no padding +#pragma pack() // default alignment const char* ABHI_PT("/abhiTest"); const hsize_t NUM_PACKETS = 5; const int STRING_LENGTH = 19; // including terminating NULL -- cgit v0.12 From b424328063646ff16877ecb7ee0132cab751da26 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Thu, 27 Oct 2016 09:14:22 -0500 Subject: Add error log for dlopen --- src/H5PL.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/H5PL.c b/src/H5PL.c index d715079..7e4dbcc 100644 --- a/src/H5PL.c +++ b/src/H5PL.c @@ -93,7 +93,7 @@ typedef const void *(__cdecl *H5PL_get_plugin_info_t)(void); #define H5PL_CLOSE_LIB(H) dlclose(H) /* Clear error */ -#define H5PL_CLR_ERROR dlerror() +#define H5PL_CLR_ERROR HERROR(H5E_PLUGIN, H5E_CANTGET, "can't dlopen:%s", dlerror()) typedef const void *(*H5PL_get_plugin_info_t)(void); #endif /* H5_HAVE_WIN32_API */ -- cgit v0.12 From b34423f620b470e1c5dc38cdd3abbd5fe8adc4ec Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Thu, 27 Oct 2016 10:03:22 -0500 Subject: Split the code into src and test --- tools/CMakeLists.txt | 45 ++++++++++----------------------------------- tools/Makefile.am | 3 +-- 2 files changed, 11 insertions(+), 37 deletions(-) diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 0b6faa8..4b9b765 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -6,11 +6,6 @@ PROJECT (HDF5_TOOLS) #----------------------------------------------------------------------------- add_definitions (${HDF_EXTRA_C_FLAGS}) -#----------------------------------------------------------------------------- -# Setup include Directories -#----------------------------------------------------------------------------- -INCLUDE_DIRECTORIES (${HDF5_TOOLS_SOURCE_DIR}/lib) - # -------------------------------------------------------------------- # If testing was NOT enabled, then we need to build the tools library # -------------------------------------------------------------------- @@ -18,35 +13,15 @@ if (NOT BUILD_TESTING) add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/lib) endif (NOT BUILD_TESTING) -#-- Add the h5diff and test executables -add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/h5diff) - -#-- Add the h5ls executable -add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/h5ls) - -#-- Misc Executables -add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/misc) - -#-- Add the h5import and test executables -add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/h5import) - -#-- h5Repack executables -add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/h5repack) - -#-- Add the h5dump and test executables -add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/h5jam) - -#-- Add the h5copy and test executables -add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/h5copy) - -#-- Add the h5stat and test executables -add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/h5stat) - -#-- Add the h5dump and test executables -add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/h5dump) +#----------------------------------------------------------------------------- +# Setup include Directories +#----------------------------------------------------------------------------- +INCLUDE_DIRECTORIES (${HDF5_TOOLS_SOURCE_DIR}/lib) -#-- Add the h5dump and test executables -add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/h5format_convert) +#-- Add the test sources +add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/src) -#-- Add the perform and test executables -add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/perform) +#-- Add the tests +if (BUILD_TESTING) + add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/test) +endif (BUILD_TESTING) diff --git a/tools/Makefile.am b/tools/Makefile.am index 887c0f0..cd97069 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -24,7 +24,6 @@ include $(top_srcdir)/config/commence.am CONFIG=ordered # All subdirectories -SUBDIRS=lib h5diff h5ls h5dump misc h5import h5repack h5jam h5copy h5stat \ - h5format_convert perform +SUBDIRS=lib src test include $(top_srcdir)/config/conclude.am -- cgit v0.12 From 5b562d9ce9b2945d0378b9c03e01f42923da80f4 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Thu, 27 Oct 2016 10:04:42 -0500 Subject: Split tools into src and test - remove folders --- tools/h5copy/CMakeLists.txt | 53 - tools/h5copy/CMakeTests.cmake | 373 - tools/h5copy/Makefile.am | 50 - tools/h5copy/h5copy.c | 534 - tools/h5copy/h5copygentest.c | 1004 -- tools/h5copy/testfiles/h5copy_extlinks_src.h5 | Bin 2184 -> 0 bytes tools/h5copy/testfiles/h5copy_extlinks_src.out.ls | 43 - tools/h5copy/testfiles/h5copy_extlinks_trg.h5 | Bin 2168 -> 0 bytes tools/h5copy/testfiles/h5copy_misc1.out | 3 - tools/h5copy/testfiles/h5copy_ref.h5 | Bin 9104 -> 0 bytes tools/h5copy/testfiles/h5copy_ref.out.ls | 31 - tools/h5copy/testfiles/h5copytst.h5 | Bin 15900 -> 0 bytes tools/h5copy/testfiles/h5copytst.out.ls | 429 - tools/h5copy/testfiles/h5copytst_new.h5 | Bin 31856 -> 0 bytes tools/h5copy/testfiles/h5copytst_new.out.ls | 502 - tools/h5copy/testh5copy.sh.in | 607 -- tools/h5diff/CMakeLists.txt | 85 - tools/h5diff/CMakeTests.cmake | 1362 --- tools/h5diff/Makefile.am | 61 - tools/h5diff/h5diff_common.c | 607 -- tools/h5diff/h5diff_common.h | 36 - tools/h5diff/h5diff_main.c | 145 - tools/h5diff/h5diffgentest.c | 7385 ------------- tools/h5diff/ph5diff_main.c | 329 - tools/h5diff/testfiles/compounds_array_vlen1.h5 | Bin 26912 -> 0 bytes tools/h5diff/testfiles/compounds_array_vlen2.h5 | Bin 26912 -> 0 bytes tools/h5diff/testfiles/h5diff_10.txt | 140 - tools/h5diff/testfiles/h5diff_100.txt | 1038 -- tools/h5diff/testfiles/h5diff_101.txt | 11 - tools/h5diff/testfiles/h5diff_101w.txt | 11 - tools/h5diff/testfiles/h5diff_102.txt | 10 - tools/h5diff/testfiles/h5diff_102w.txt | 10 - tools/h5diff/testfiles/h5diff_103.txt | 8 - tools/h5diff/testfiles/h5diff_103w.txt | 8 - tools/h5diff/testfiles/h5diff_104.txt | 8 - tools/h5diff/testfiles/h5diff_104w.txt | 8 - tools/h5diff/testfiles/h5diff_11.txt | 3 - tools/h5diff/testfiles/h5diff_12.txt | 3 - tools/h5diff/testfiles/h5diff_13.txt | 11 - tools/h5diff/testfiles/h5diff_14.txt | 11 - tools/h5diff/testfiles/h5diff_15.txt | 10 - tools/h5diff/testfiles/h5diff_16_1.txt | 11 - tools/h5diff/testfiles/h5diff_16_2.txt | 11 - tools/h5diff/testfiles/h5diff_16_3.txt | 11 - tools/h5diff/testfiles/h5diff_17.txt | 57 - tools/h5diff/testfiles/h5diff_171.txt | 3 - tools/h5diff/testfiles/h5diff_172.txt | 3 - tools/h5diff/testfiles/h5diff_18.txt | 1 - tools/h5diff/testfiles/h5diff_18_1.txt | 2 - tools/h5diff/testfiles/h5diff_19.txt | 26 - tools/h5diff/testfiles/h5diff_20.txt | 6 - tools/h5diff/testfiles/h5diff_200.txt | 5 - tools/h5diff/testfiles/h5diff_201.txt | 2 - tools/h5diff/testfiles/h5diff_202.txt | 2 - tools/h5diff/testfiles/h5diff_203.txt | 3 - tools/h5diff/testfiles/h5diff_204.txt | 3 - tools/h5diff/testfiles/h5diff_205.txt | 3 - tools/h5diff/testfiles/h5diff_206.txt | 2 - tools/h5diff/testfiles/h5diff_207.txt | 3 - tools/h5diff/testfiles/h5diff_208.txt | 5 - tools/h5diff/testfiles/h5diff_21.txt | 6 - tools/h5diff/testfiles/h5diff_22.txt | 6 - tools/h5diff/testfiles/h5diff_220.txt | 6 - tools/h5diff/testfiles/h5diff_221.txt | 12 - tools/h5diff/testfiles/h5diff_222.txt | 20 - tools/h5diff/testfiles/h5diff_223.txt | 4 - tools/h5diff/testfiles/h5diff_224.txt | 4 - tools/h5diff/testfiles/h5diff_23.txt | 8 - tools/h5diff/testfiles/h5diff_24.txt | 3 - tools/h5diff/testfiles/h5diff_25.txt | 3 - tools/h5diff/testfiles/h5diff_26.txt | 8 - tools/h5diff/testfiles/h5diff_27.txt | 3 - tools/h5diff/testfiles/h5diff_28.txt | 3 - tools/h5diff/testfiles/h5diff_30.txt | 9 - tools/h5diff/testfiles/h5diff_300.txt | 3 - tools/h5diff/testfiles/h5diff_400.txt | 35 - tools/h5diff/testfiles/h5diff_401.txt | 13 - tools/h5diff/testfiles/h5diff_402.txt | 13 - tools/h5diff/testfiles/h5diff_403.txt | 13 - tools/h5diff/testfiles/h5diff_404.txt | 32 - tools/h5diff/testfiles/h5diff_405.txt | 13 - tools/h5diff/testfiles/h5diff_406.txt | 13 - tools/h5diff/testfiles/h5diff_407.txt | 13 - tools/h5diff/testfiles/h5diff_408.txt | 13 - tools/h5diff/testfiles/h5diff_409.txt | 13 - tools/h5diff/testfiles/h5diff_410.txt | 62 - tools/h5diff/testfiles/h5diff_411.txt | 13 - tools/h5diff/testfiles/h5diff_412.txt | 13 - tools/h5diff/testfiles/h5diff_413.txt | 13 - tools/h5diff/testfiles/h5diff_414.txt | 9 - tools/h5diff/testfiles/h5diff_415.txt | 9 - tools/h5diff/testfiles/h5diff_416.txt | 8 - tools/h5diff/testfiles/h5diff_417.txt | 3 - tools/h5diff/testfiles/h5diff_418.txt | 3 - tools/h5diff/testfiles/h5diff_419.txt | 3 - tools/h5diff/testfiles/h5diff_420.txt | 3 - tools/h5diff/testfiles/h5diff_421.txt | 3 - tools/h5diff/testfiles/h5diff_422.txt | 3 - tools/h5diff/testfiles/h5diff_423.txt | 13 - tools/h5diff/testfiles/h5diff_424.txt | 13 - tools/h5diff/testfiles/h5diff_425.txt | 13 - tools/h5diff/testfiles/h5diff_450.txt | 38 - tools/h5diff/testfiles/h5diff_451.txt | 30 - tools/h5diff/testfiles/h5diff_452.txt | 2 - tools/h5diff/testfiles/h5diff_453.txt | 34 - tools/h5diff/testfiles/h5diff_454.txt | 2 - tools/h5diff/testfiles/h5diff_455.txt | 2 - tools/h5diff/testfiles/h5diff_456.txt | 30 - tools/h5diff/testfiles/h5diff_457.txt | 2 - tools/h5diff/testfiles/h5diff_458.txt | 2 - tools/h5diff/testfiles/h5diff_459.txt | 2 - tools/h5diff/testfiles/h5diff_465.txt | 1 - tools/h5diff/testfiles/h5diff_466.txt | 5 - tools/h5diff/testfiles/h5diff_467.txt | 3 - tools/h5diff/testfiles/h5diff_468.txt | 5 - tools/h5diff/testfiles/h5diff_469.txt | 3 - tools/h5diff/testfiles/h5diff_471.txt | 38 - tools/h5diff/testfiles/h5diff_472.txt | 3 - tools/h5diff/testfiles/h5diff_473.txt | 3 - tools/h5diff/testfiles/h5diff_474.txt | 3 - tools/h5diff/testfiles/h5diff_475.txt | 3 - tools/h5diff/testfiles/h5diff_480.txt | 17 - tools/h5diff/testfiles/h5diff_481.txt | 30 - tools/h5diff/testfiles/h5diff_482.txt | 17 - tools/h5diff/testfiles/h5diff_483.txt | 18 - tools/h5diff/testfiles/h5diff_484.txt | 11 - tools/h5diff/testfiles/h5diff_485.txt | 11 - tools/h5diff/testfiles/h5diff_486.txt | 11 - tools/h5diff/testfiles/h5diff_487.txt | 12 - tools/h5diff/testfiles/h5diff_50.txt | 13 - tools/h5diff/testfiles/h5diff_500.txt | 72 - tools/h5diff/testfiles/h5diff_501.txt | 188 - tools/h5diff/testfiles/h5diff_502.txt | 36 - tools/h5diff/testfiles/h5diff_503.txt | 32 - tools/h5diff/testfiles/h5diff_504.txt | 19 - tools/h5diff/testfiles/h5diff_505.txt | 6 - tools/h5diff/testfiles/h5diff_506.txt | 26 - tools/h5diff/testfiles/h5diff_507.txt | 6 - tools/h5diff/testfiles/h5diff_508.txt | 32 - tools/h5diff/testfiles/h5diff_509.txt | 6 - tools/h5diff/testfiles/h5diff_51.txt | 10 - tools/h5diff/testfiles/h5diff_510.txt | 32 - tools/h5diff/testfiles/h5diff_511.txt | 24 - tools/h5diff/testfiles/h5diff_512.txt | 53 - tools/h5diff/testfiles/h5diff_513.txt | 3 - tools/h5diff/testfiles/h5diff_514.txt | 53 - tools/h5diff/testfiles/h5diff_515.txt | 27 - tools/h5diff/testfiles/h5diff_516.txt | 32 - tools/h5diff/testfiles/h5diff_517.txt | 18 - tools/h5diff/testfiles/h5diff_518.txt | 23 - tools/h5diff/testfiles/h5diff_52.txt | 10 - tools/h5diff/testfiles/h5diff_53.txt | 10 - tools/h5diff/testfiles/h5diff_530.txt | 35 - tools/h5diff/testfiles/h5diff_54.txt | 10 - tools/h5diff/testfiles/h5diff_540.txt | 86 - tools/h5diff/testfiles/h5diff_55.txt | 10 - tools/h5diff/testfiles/h5diff_56.txt | 10 - tools/h5diff/testfiles/h5diff_57.txt | 11 - tools/h5diff/testfiles/h5diff_58.txt | 11 - tools/h5diff/testfiles/h5diff_59.txt | 11 - tools/h5diff/testfiles/h5diff_600.txt | 141 - tools/h5diff/testfiles/h5diff_601.txt | 2 - tools/h5diff/testfiles/h5diff_603.txt | 141 - tools/h5diff/testfiles/h5diff_604.txt | 3 - tools/h5diff/testfiles/h5diff_605.txt | 3 - tools/h5diff/testfiles/h5diff_606.txt | 141 - tools/h5diff/testfiles/h5diff_607.txt | 3 - tools/h5diff/testfiles/h5diff_608.txt | 3 - tools/h5diff/testfiles/h5diff_609.txt | 1 - tools/h5diff/testfiles/h5diff_610.txt | 3 - tools/h5diff/testfiles/h5diff_612.txt | 141 - tools/h5diff/testfiles/h5diff_613.txt | 3 - tools/h5diff/testfiles/h5diff_614.txt | 3 - tools/h5diff/testfiles/h5diff_615.txt | 141 - tools/h5diff/testfiles/h5diff_616.txt | 3 - tools/h5diff/testfiles/h5diff_617.txt | 3 - tools/h5diff/testfiles/h5diff_618.txt | 1 - tools/h5diff/testfiles/h5diff_619.txt | 3 - tools/h5diff/testfiles/h5diff_621.txt | 141 - tools/h5diff/testfiles/h5diff_622.txt | 141 - tools/h5diff/testfiles/h5diff_623.txt | 141 - tools/h5diff/testfiles/h5diff_624.txt | 141 - tools/h5diff/testfiles/h5diff_625.txt | 3 - tools/h5diff/testfiles/h5diff_626.txt | 3 - tools/h5diff/testfiles/h5diff_627.txt | 3 - tools/h5diff/testfiles/h5diff_628.txt | 3 - tools/h5diff/testfiles/h5diff_629.txt | 2 - tools/h5diff/testfiles/h5diff_630.txt | 3 - tools/h5diff/testfiles/h5diff_631.txt | 3 - tools/h5diff/testfiles/h5diff_640.txt | 4 - tools/h5diff/testfiles/h5diff_641.txt | 4 - tools/h5diff/testfiles/h5diff_642.txt | 4 - tools/h5diff/testfiles/h5diff_643.txt | 4 - tools/h5diff/testfiles/h5diff_644.txt | 4 - tools/h5diff/testfiles/h5diff_645.txt | 4 - tools/h5diff/testfiles/h5diff_646.txt | 4 - tools/h5diff/testfiles/h5diff_70.txt | 2032 ---- tools/h5diff/testfiles/h5diff_700.txt | 2038 ---- tools/h5diff/testfiles/h5diff_701.txt | 2137 ---- tools/h5diff/testfiles/h5diff_702.txt | 2038 ---- tools/h5diff/testfiles/h5diff_703.txt | 2137 ---- tools/h5diff/testfiles/h5diff_704.txt | 28 - tools/h5diff/testfiles/h5diff_705.txt | 17 - tools/h5diff/testfiles/h5diff_706.txt | 13 - tools/h5diff/testfiles/h5diff_707.txt | 29 - tools/h5diff/testfiles/h5diff_708.txt | 17 - tools/h5diff/testfiles/h5diff_709.txt | 12 - tools/h5diff/testfiles/h5diff_710.txt | 108 - tools/h5diff/testfiles/h5diff_80.txt | 881 -- tools/h5diff/testfiles/h5diff_90.txt | 50 - tools/h5diff/testfiles/h5diff_attr1.h5 | Bin 26000 -> 0 bytes tools/h5diff/testfiles/h5diff_attr2.h5 | Bin 26000 -> 0 bytes tools/h5diff/testfiles/h5diff_attr_v_level1.h5 | Bin 7192 -> 0 bytes tools/h5diff/testfiles/h5diff_attr_v_level2.h5 | Bin 7048 -> 0 bytes tools/h5diff/testfiles/h5diff_basic1.h5 | Bin 12248 -> 0 bytes tools/h5diff/testfiles/h5diff_basic2.h5 | Bin 9008 -> 0 bytes tools/h5diff/testfiles/h5diff_comp_vl_strs.h5 | Bin 37952 -> 0 bytes tools/h5diff/testfiles/h5diff_danglelinks1.h5 | Bin 4970 -> 0 bytes tools/h5diff/testfiles/h5diff_danglelinks2.h5 | Bin 4970 -> 0 bytes tools/h5diff/testfiles/h5diff_dset1.h5 | Bin 23624 -> 0 bytes tools/h5diff/testfiles/h5diff_dset2.h5 | Bin 23624 -> 0 bytes .../h5diff/testfiles/h5diff_dset_zero_dim_size1.h5 | Bin 1672 -> 0 bytes .../h5diff/testfiles/h5diff_dset_zero_dim_size2.h5 | Bin 1672 -> 0 bytes tools/h5diff/testfiles/h5diff_dtypes.h5 | Bin 11416 -> 0 bytes tools/h5diff/testfiles/h5diff_empty.h5 | Bin 800 -> 0 bytes .../h5diff/testfiles/h5diff_enum_invalid_values.h5 | Bin 2192 -> 0 bytes tools/h5diff/testfiles/h5diff_exclude1-1.h5 | Bin 5064 -> 0 bytes tools/h5diff/testfiles/h5diff_exclude1-2.h5 | Bin 5064 -> 0 bytes tools/h5diff/testfiles/h5diff_exclude2-1.h5 | Bin 5064 -> 0 bytes tools/h5diff/testfiles/h5diff_exclude2-2.h5 | Bin 6056 -> 0 bytes tools/h5diff/testfiles/h5diff_exclude3-1.h5 | Bin 4792 -> 0 bytes tools/h5diff/testfiles/h5diff_exclude3-2.h5 | Bin 2176 -> 0 bytes tools/h5diff/testfiles/h5diff_ext2softlink_src.h5 | Bin 1072 -> 0 bytes tools/h5diff/testfiles/h5diff_ext2softlink_trg.h5 | Bin 4640 -> 0 bytes tools/h5diff/testfiles/h5diff_extlink_src.h5 | Bin 1256 -> 0 bytes tools/h5diff/testfiles/h5diff_extlink_trg.h5 | Bin 6056 -> 0 bytes tools/h5diff/testfiles/h5diff_grp_recurse1.h5 | Bin 11826 -> 0 bytes tools/h5diff/testfiles/h5diff_grp_recurse2.h5 | Bin 11826 -> 0 bytes tools/h5diff/testfiles/h5diff_grp_recurse_ext1.h5 | Bin 8120 -> 0 bytes .../h5diff/testfiles/h5diff_grp_recurse_ext2-1.h5 | Bin 4296 -> 0 bytes .../h5diff/testfiles/h5diff_grp_recurse_ext2-2.h5 | Bin 5640 -> 0 bytes .../h5diff/testfiles/h5diff_grp_recurse_ext2-3.h5 | Bin 2464 -> 0 bytes tools/h5diff/testfiles/h5diff_hyper1.h5 | Bin 1052720 -> 0 bytes tools/h5diff/testfiles/h5diff_hyper2.h5 | Bin 1052720 -> 0 bytes tools/h5diff/testfiles/h5diff_linked_softlink.h5 | Bin 8144 -> 0 bytes tools/h5diff/testfiles/h5diff_links.h5 | Bin 2536 -> 0 bytes tools/h5diff/testfiles/h5diff_softlinks.h5 | Bin 5744 -> 0 bytes tools/h5diff/testfiles/h5diff_tmp1.txt | 5 - tools/h5diff/testfiles/h5diff_tmp2.txt | 13 - tools/h5diff/testfiles/h5diff_types.h5 | Bin 4778 -> 0 bytes tools/h5diff/testfiles/h5diff_v1.txt | 18 - tools/h5diff/testfiles/h5diff_v2.txt | 7 - tools/h5diff/testfiles/h5diff_v3.txt | 4 - tools/h5diff/testfiles/non_comparables1.h5 | Bin 8628 -> 0 bytes tools/h5diff/testfiles/non_comparables2.h5 | Bin 8644 -> 0 bytes .../h5diff/testfiles/tmpSingleSiteBethe.output.h5 | Bin 124440 -> 0 bytes .../testfiles/tmpSingleSiteBethe.reference.h5 | Bin 119464 -> 0 bytes tools/h5diff/testfiles/tmptest.he5 | Bin 4740424 -> 0 bytes tools/h5diff/testfiles/tmptest2.he5 | Bin 4734280 -> 0 bytes tools/h5diff/testh5diff.sh.in | 1160 --- tools/h5diff/testph5diff.sh.in | 64 - tools/h5dump/CMakeLists.txt | 66 - tools/h5dump/CMakeTests.cmake | 1412 --- tools/h5dump/CMakeTestsPBITS.cmake | 340 - tools/h5dump/CMakeTestsVDS.cmake | 233 - tools/h5dump/CMakeTestsXML.cmake | 414 - tools/h5dump/Makefile.am | 51 - tools/h5dump/binread.c | 97 - tools/h5dump/errfiles/filter_fail.err | 24 - tools/h5dump/errfiles/non_existing.err | 1 - tools/h5dump/errfiles/tall-1.err | 25 - tools/h5dump/errfiles/tall-2A.err | 25 - tools/h5dump/errfiles/tall-2A0.err | 25 - tools/h5dump/errfiles/tall-2B.err | 25 - tools/h5dump/errfiles/tarray1_big.err | 31 - tools/h5dump/errfiles/tattr-3.err | 8 - tools/h5dump/errfiles/tattrregR.err | 21 - tools/h5dump/errfiles/tcomp-3.err | 16 - tools/h5dump/errfiles/tdataregR.err | 21 - tools/h5dump/errfiles/tdset-2.err | 36 - tools/h5dump/errfiles/texceedsubblock.err | 1 - tools/h5dump/errfiles/texceedsubcount.err | 1 - tools/h5dump/errfiles/texceedsubstart.err | 1 - tools/h5dump/errfiles/texceedsubstride.err | 1 - tools/h5dump/errfiles/textlink.err | 50 - tools/h5dump/errfiles/textlinkfar.err | 243 - tools/h5dump/errfiles/textlinksrc.err | 243 - tools/h5dump/errfiles/tgroup-2.err | 20 - .../errfiles/tnofilename-with-packed-bits.err | 1 - tools/h5dump/errfiles/torderlinks1.err | 25 - tools/h5dump/errfiles/torderlinks2.err | 25 - tools/h5dump/errfiles/tpbitsCharLengthExceeded.err | 1 - tools/h5dump/errfiles/tpbitsCharOffsetExceeded.err | 1 - tools/h5dump/errfiles/tpbitsIncomplete.err | 1 - tools/h5dump/errfiles/tpbitsIntLengthExceeded.err | 1 - tools/h5dump/errfiles/tpbitsIntOffsetExceeded.err | 1 - tools/h5dump/errfiles/tpbitsLengthExceeded.err | 1 - tools/h5dump/errfiles/tpbitsLengthPositive.err | 1 - tools/h5dump/errfiles/tpbitsLongLengthExceeded.err | 1 - tools/h5dump/errfiles/tpbitsLongOffsetExceeded.err | 1 - tools/h5dump/errfiles/tpbitsMaxExceeded.err | 1 - tools/h5dump/errfiles/tpbitsOffsetExceeded.err | 1 - tools/h5dump/errfiles/tpbitsOffsetNegative.err | 1 - tools/h5dump/errfiles/tperror.err | 36 - tools/h5dump/errfiles/tqmarkfile.err | 33 - tools/h5dump/errfiles/tslink-D.err | 28 - tools/h5dump/h5dump.c | 1802 ---- tools/h5dump/h5dump.h | 115 - tools/h5dump/h5dump_ddl.c | 2178 ---- tools/h5dump/h5dump_ddl.h | 52 - tools/h5dump/h5dump_defines.h | 56 - tools/h5dump/h5dump_extern.h | 114 - tools/h5dump/h5dump_xml.c | 4567 -------- tools/h5dump/h5dump_xml.h | 39 - tools/h5dump/h5dumpgentest.c | 10388 ------------------- tools/h5dump/testh5dump.sh.in | 1345 --- tools/h5dump/testh5dumppbits.sh.in | 598 -- tools/h5dump/testh5dumpvds.sh.in | 523 - tools/h5dump/testh5dumpxml.sh.in | 388 - tools/h5format_convert/CMakeLists.txt | 62 - tools/h5format_convert/CMakeTests.cmake | 460 - tools/h5format_convert/Makefile.am | 49 - tools/h5format_convert/h5fc_chk_idx.c | 103 - tools/h5format_convert/h5fc_gentest.c | 812 -- tools/h5format_convert/h5format_convert.c | 474 - tools/h5format_convert/testfiles/h5fc_d_file.ddl | 26 - tools/h5format_convert/testfiles/h5fc_dname.ddl | 26 - tools/h5format_convert/testfiles/h5fc_edge_v3.h5 | Bin 2526 -> 0 bytes tools/h5format_convert/testfiles/h5fc_err_level.h5 | Bin 7294 -> 0 bytes tools/h5format_convert/testfiles/h5fc_ext1_f.ddl | 58 - tools/h5format_convert/testfiles/h5fc_ext1_f.h5 | Bin 8296 -> 0 bytes tools/h5format_convert/testfiles/h5fc_ext1_i.ddl | 58 - tools/h5format_convert/testfiles/h5fc_ext1_i.h5 | Bin 8062 -> 0 bytes tools/h5format_convert/testfiles/h5fc_ext1_s.ddl | 58 - tools/h5format_convert/testfiles/h5fc_ext1_s.h5 | Bin 8128 -> 0 bytes tools/h5format_convert/testfiles/h5fc_ext2_if.ddl | 58 - tools/h5format_convert/testfiles/h5fc_ext2_if.h5 | Bin 8062 -> 0 bytes tools/h5format_convert/testfiles/h5fc_ext2_is.ddl | 58 - tools/h5format_convert/testfiles/h5fc_ext2_is.h5 | Bin 8178 -> 0 bytes tools/h5format_convert/testfiles/h5fc_ext2_sf.ddl | 58 - tools/h5format_convert/testfiles/h5fc_ext2_sf.h5 | Bin 6612 -> 0 bytes tools/h5format_convert/testfiles/h5fc_ext3_isf.ddl | 58 - tools/h5format_convert/testfiles/h5fc_ext3_isf.h5 | Bin 8215 -> 0 bytes tools/h5format_convert/testfiles/h5fc_ext_none.h5 | Bin 8010 -> 0 bytes tools/h5format_convert/testfiles/h5fc_help.ddl | 25 - tools/h5format_convert/testfiles/h5fc_non_v3.h5 | Bin 6818 -> 0 bytes .../testfiles/h5fc_nonexistdset_file.ddl | 1 - .../testfiles/h5fc_nonexistfile.ddl | 1 - tools/h5format_convert/testfiles/h5fc_nooption.ddl | 25 - tools/h5format_convert/testfiles/h5fc_v_all.ddl | 77 - tools/h5format_convert/testfiles/h5fc_v_bt1.ddl | 12 - tools/h5format_convert/testfiles/h5fc_v_err.ddl | 13 - tools/h5format_convert/testfiles/h5fc_v_n_1d.ddl | 14 - tools/h5format_convert/testfiles/h5fc_v_n_all.ddl | 56 - .../testfiles/h5fc_v_ndata_bt1.ddl | 13 - .../testfiles/h5fc_v_non_chunked.ddl | 12 - .../h5format_convert/testfiles/old_h5fc_ext1_f.ddl | 58 - .../h5format_convert/testfiles/old_h5fc_ext1_f.h5 | Bin 19987 -> 0 bytes .../h5format_convert/testfiles/old_h5fc_ext1_i.ddl | 58 - .../h5format_convert/testfiles/old_h5fc_ext1_i.h5 | Bin 32716 -> 0 bytes .../h5format_convert/testfiles/old_h5fc_ext1_s.ddl | 58 - .../h5format_convert/testfiles/old_h5fc_ext1_s.h5 | Bin 20032 -> 0 bytes .../testfiles/old_h5fc_ext2_if.ddl | 58 - .../h5format_convert/testfiles/old_h5fc_ext2_if.h5 | Bin 32720 -> 0 bytes .../testfiles/old_h5fc_ext2_is.ddl | 58 - .../h5format_convert/testfiles/old_h5fc_ext2_is.h5 | Bin 32872 -> 0 bytes .../testfiles/old_h5fc_ext2_sf.ddl | 58 - .../h5format_convert/testfiles/old_h5fc_ext2_sf.h5 | Bin 18512 -> 0 bytes .../testfiles/old_h5fc_ext3_isf.ddl | 58 - .../testfiles/old_h5fc_ext3_isf.h5 | Bin 32896 -> 0 bytes .../testfiles/old_h5fc_ext_none.h5 | Bin 19912 -> 0 bytes tools/h5format_convert/testh5fc.sh.in | 505 - tools/h5import/CMakeLists.txt | 54 - tools/h5import/CMakeTests.cmake | 465 - tools/h5import/Makefile.am | 46 - tools/h5import/h5import.c | 4393 -------- tools/h5import/h5import.h | 198 - tools/h5import/h5importtest.c | 371 - tools/h5import/h5importtestutil.sh.in | 384 - tools/h5import/testfiles/binfp64.conf | 13 - tools/h5import/testfiles/binfp64.h5 | Bin 10760 -> 0 bytes tools/h5import/testfiles/binin16.conf | 12 - tools/h5import/testfiles/binin16.h5 | Bin 10760 -> 0 bytes tools/h5import/testfiles/binin32.conf | 12 - tools/h5import/testfiles/binin32.h5 | Bin 9472 -> 0 bytes tools/h5import/testfiles/binin8.conf | 16 - tools/h5import/testfiles/binin8.h5 | Bin 10760 -> 0 bytes tools/h5import/testfiles/binin8w.conf | 9 - tools/h5import/testfiles/binin8w.h5 | Bin 2852 -> 0 bytes tools/h5import/testfiles/binuin16.conf | 12 - tools/h5import/testfiles/binuin16.h5 | Bin 10760 -> 0 bytes tools/h5import/testfiles/binuin32.conf | 12 - tools/h5import/testfiles/binuin32.h5 | Bin 6384 -> 0 bytes tools/h5import/testfiles/dbinfp64.h5.txt | 2 - tools/h5import/testfiles/dbinin16.h5.txt | 2 - tools/h5import/testfiles/dbinin32.h5.txt | 2 - tools/h5import/testfiles/dbinin8.h5.txt | 2 - tools/h5import/testfiles/dbinin8w.h5.txt | 2 - tools/h5import/testfiles/dbinuin16.h5.txt | 2 - tools/h5import/testfiles/dbinuin32.h5.txt | 2 - tools/h5import/testfiles/dtxtstr.h5.txt | 2 - tools/h5import/testfiles/textpfe.conf | 12 - tools/h5import/testfiles/textpfe.h5 | Bin 2064 -> 0 bytes tools/h5import/testfiles/textpfe64.txt | 2 - tools/h5import/testfiles/txtfp32.conf | 10 - tools/h5import/testfiles/txtfp32.h5 | Bin 4192 -> 0 bytes tools/h5import/testfiles/txtfp32.txt | 9 - tools/h5import/testfiles/txtfp64.conf | 13 - tools/h5import/testfiles/txtfp64.h5 | Bin 9784 -> 0 bytes tools/h5import/testfiles/txtfp64.txt | 19 - tools/h5import/testfiles/txtin16.conf | 12 - tools/h5import/testfiles/txtin16.h5 | Bin 9784 -> 0 bytes tools/h5import/testfiles/txtin16.txt | 15 - tools/h5import/testfiles/txtin32.conf | 11 - tools/h5import/testfiles/txtin32.h5 | Bin 4192 -> 0 bytes tools/h5import/testfiles/txtin32.txt | 15 - tools/h5import/testfiles/txtin8.conf | 18 - tools/h5import/testfiles/txtin8.h5 | Bin 9784 -> 0 bytes tools/h5import/testfiles/txtin8.txt | 15 - tools/h5import/testfiles/txtstr.conf | 6 - tools/h5import/testfiles/txtstr.h5 | Bin 10240 -> 0 bytes tools/h5import/testfiles/txtstr.txt | 2 - tools/h5import/testfiles/txtuin16.conf | 12 - tools/h5import/testfiles/txtuin16.h5 | Bin 10240 -> 0 bytes tools/h5import/testfiles/txtuin16.txt | 15 - tools/h5import/testfiles/txtuin32.conf | 11 - tools/h5import/testfiles/txtuin32.h5 | Bin 6240 -> 0 bytes tools/h5import/testfiles/txtuin32.txt | 15 - tools/h5jam/CMakeLists.txt | 81 - tools/h5jam/CMakeTests.cmake | 384 - tools/h5jam/Makefile.am | 45 - tools/h5jam/getub.c | 157 - tools/h5jam/h5jam.c | 571 - tools/h5jam/h5jamgentest.c | 389 - tools/h5jam/h5unjam.c | 411 - tools/h5jam/tellub.c | 196 - tools/h5jam/testfiles/h5jam-help.txt | 24 - tools/h5jam/testfiles/h5jam-ub-nohdf5.txt | 2 - tools/h5jam/testfiles/h5unjam-help.txt | 27 - tools/h5jam/testfiles/tall.h5 | Bin 9968 -> 0 bytes tools/h5jam/testfiles/twithub.h5 | Bin 10592 -> 0 bytes tools/h5jam/testfiles/twithub513.h5 | Bin 11056 -> 0 bytes tools/h5jam/testfiles/u10.txt | 1 - tools/h5jam/testfiles/u511.txt | 1 - tools/h5jam/testfiles/u512.txt | 1 - tools/h5jam/testfiles/u513.txt | 1 - tools/h5jam/testh5jam.sh.in | 699 -- tools/h5ls/CMakeLists.txt | 49 - tools/h5ls/CMakeTests.cmake | 390 - tools/h5ls/CMakeTestsVDS.cmake | 137 - tools/h5ls/Makefile.am | 40 - tools/h5ls/h5ls.c | 2939 ------ tools/h5ls/testh5ls.sh.in | 436 - tools/h5ls/testh5lsvds.sh.in | 258 - tools/h5repack/CMakeLists.txt | 114 - tools/h5repack/CMakeTests.cmake | 1153 -- tools/h5repack/Makefile.am | 79 - tools/h5repack/dynlib_rpk.c | 97 - tools/h5repack/h5repack.c | 942 -- tools/h5repack/h5repack.h | 243 - tools/h5repack/h5repack.sh.in | 1265 --- tools/h5repack/h5repack_copy.c | 1581 --- tools/h5repack/h5repack_filters.c | 493 - tools/h5repack/h5repack_main.c | 664 -- tools/h5repack/h5repack_opttable.c | 367 - tools/h5repack/h5repack_parse.c | 616 -- tools/h5repack/h5repack_plugin.sh.in | 275 - tools/h5repack/h5repack_refs.c | 877 -- tools/h5repack/h5repack_verify.c | 675 -- tools/h5repack/h5repacktst.c | 6856 ------------ .../testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.ddl | 112 - .../testfiles/2_vds.h5-vds_chunk3x6x9-v.ddl | 70 - .../testfiles/3_1_vds.h5-vds_chunk2x5x8-v.ddl | 147 - tools/h5repack/testfiles/4_vds.h5-vds_compa-v.ddl | 58 - tools/h5repack/testfiles/4_vds.h5-vds_conti-v.ddl | 59 - tools/h5repack/testfiles/README | 5 - .../testfiles/deflate_limit.h5repack_layout.h5.ddl | 130 - tools/h5repack/testfiles/h5repack-help.txt | 125 - tools/h5repack/testfiles/h5repack.info | 1 - tools/h5repack/testfiles/h5repack_attr.h5 | Bin 21856 -> 0 bytes tools/h5repack/testfiles/h5repack_attr_refs.h5 | Bin 10336 -> 0 bytes tools/h5repack/testfiles/h5repack_deflate.h5 | Bin 6336 -> 0 bytes tools/h5repack/testfiles/h5repack_early.h5 | Bin 3074224 -> 0 bytes tools/h5repack/testfiles/h5repack_ext.bin | Bin 8 -> 0 bytes tools/h5repack/testfiles/h5repack_ext.h5 | Bin 1464 -> 0 bytes tools/h5repack/testfiles/h5repack_fill.h5 | Bin 2168 -> 0 bytes tools/h5repack/testfiles/h5repack_filters.h5 | Bin 27604 -> 0 bytes .../h5repack_filters.h5-gzip_verbose_filters.tst | 13 - tools/h5repack/testfiles/h5repack_fletcher.h5 | Bin 7232 -> 0 bytes tools/h5repack/testfiles/h5repack_hlink.h5 | Bin 6544 -> 0 bytes tools/h5repack/testfiles/h5repack_layout.UD.h5 | Bin 43744 -> 0 bytes .../h5repack_layout.UD.h5-plugin_none.ddl | 130 - tools/h5repack/testfiles/h5repack_layout.h5 | Bin 29480 -> 0 bytes ...h5repack_layout.h5-dset2_chunk_20x10-errstk.tst | 38 - .../testfiles/h5repack_layout.h5-plugin_test.ddl | 158 - .../testfiles/h5repack_layout.h5-plugin_zero.tst | 9 - tools/h5repack/testfiles/h5repack_layout.h5.ddl | 606 -- tools/h5repack/testfiles/h5repack_layout2.h5 | Bin 6808 -> 0 bytes tools/h5repack/testfiles/h5repack_layout3.h5 | Bin 491840 -> 0 bytes tools/h5repack/testfiles/h5repack_layouto.h5 | Bin 1576 -> 0 bytes tools/h5repack/testfiles/h5repack_named_dtypes.h5 | Bin 4320 -> 0 bytes tools/h5repack/testfiles/h5repack_nbit.h5 | Bin 13208 -> 0 bytes .../testfiles/h5repack_nested_8bit_enum.h5 | Bin 273992 -> 0 bytes .../h5repack_nested_8bit_enum_deflated.h5 | Bin 120630 -> 0 bytes tools/h5repack/testfiles/h5repack_objs.h5 | Bin 19738 -> 0 bytes tools/h5repack/testfiles/h5repack_refs.h5 | Bin 10336 -> 0 bytes tools/h5repack/testfiles/h5repack_shuffle.h5 | Bin 7216 -> 0 bytes tools/h5repack/testfiles/h5repack_soffset.h5 | Bin 12452 -> 0 bytes tools/h5repack/testfiles/h5repack_szip.h5 | Bin 5588 -> 0 bytes .../plugin_none.h5repack_layout.UD.h5.tst | 14 - .../testfiles/plugin_test.h5repack_layout.h5.tst | 14 - tools/h5repack/testfiles/ublock.bin | 1 - tools/h5repack/testh5repack_detect_szip.c | 62 - tools/h5stat/CMakeLists.txt | 56 - tools/h5stat/CMakeTests.cmake | 237 - tools/h5stat/Makefile.am | 55 - tools/h5stat/h5stat.c | 1815 ---- tools/h5stat/h5stat_gentest.c | 449 - tools/h5stat/testfiles/h5stat_dims1.ddl | 45 - tools/h5stat/testfiles/h5stat_dims2.ddl | 36 - tools/h5stat/testfiles/h5stat_err1_dims.ddl | 1 - tools/h5stat/testfiles/h5stat_err1_links.ddl | 1 - tools/h5stat/testfiles/h5stat_err1_numattrs.ddl | 1 - tools/h5stat/testfiles/h5stat_err2_numattrs.ddl | 1 - tools/h5stat/testfiles/h5stat_filters-F.ddl | 26 - tools/h5stat/testfiles/h5stat_filters-UD.ddl | 5 - tools/h5stat/testfiles/h5stat_filters-UT.ddl | 10 - tools/h5stat/testfiles/h5stat_filters-d.ddl | 32 - tools/h5stat/testfiles/h5stat_filters-dT.ddl | 41 - tools/h5stat/testfiles/h5stat_filters-file.ddl | 9 - tools/h5stat/testfiles/h5stat_filters-g.ddl | 6 - tools/h5stat/testfiles/h5stat_filters.ddl | 97 - tools/h5stat/testfiles/h5stat_filters.h5 | Bin 46272 -> 0 bytes tools/h5stat/testfiles/h5stat_help1.ddl | 24 - tools/h5stat/testfiles/h5stat_help2.ddl | 24 - tools/h5stat/testfiles/h5stat_idx.ddl | 93 - tools/h5stat/testfiles/h5stat_idx.h5 | Bin 2206 -> 0 bytes tools/h5stat/testfiles/h5stat_links1.ddl | 10 - tools/h5stat/testfiles/h5stat_links2.ddl | 105 - tools/h5stat/testfiles/h5stat_links3.ddl | 12 - tools/h5stat/testfiles/h5stat_links4.ddl | 8 - tools/h5stat/testfiles/h5stat_links5.ddl | 9 - tools/h5stat/testfiles/h5stat_newgrat-UA.ddl | 7 - tools/h5stat/testfiles/h5stat_newgrat-UG.ddl | 5 - tools/h5stat/testfiles/h5stat_newgrat.ddl | 95 - tools/h5stat/testfiles/h5stat_newgrat.h5 | Bin 6362168 -> 0 bytes tools/h5stat/testfiles/h5stat_nofile.ddl | 25 - tools/h5stat/testfiles/h5stat_notexist.ddl | 2 - tools/h5stat/testfiles/h5stat_numattrs1.ddl | 17 - tools/h5stat/testfiles/h5stat_numattrs2.ddl | 105 - tools/h5stat/testfiles/h5stat_numattrs3.ddl | 12 - tools/h5stat/testfiles/h5stat_numattrs4.ddl | 8 - tools/h5stat/testfiles/h5stat_threshold.h5 | Bin 16312 -> 0 bytes tools/h5stat/testfiles/h5stat_tsohm.ddl | 90 - tools/h5stat/testfiles/h5stat_tsohm.h5 | Bin 3850 -> 0 bytes tools/h5stat/testh5stat.sh.in | 318 - tools/misc/CMakeLists.txt | 92 - tools/misc/CMakeTests.cmake | 253 - tools/misc/Makefile.am | 76 - tools/misc/h5cc.in | 401 - tools/misc/h5debug.c | 723 -- tools/misc/h5mkgrp.c | 336 - tools/misc/h5perf_gentest.c | 598 -- tools/misc/h5redeploy.in | 218 - tools/misc/h5repart.c | 510 - tools/misc/h5repart_gentest.c | 101 - tools/misc/repart_test.c | 165 - tools/misc/talign.c | 244 - tools/misc/testfiles/h5mkgrp_help.txt | 7 - tools/misc/testfiles/h5mkgrp_version.txt.in | 1 - tools/misc/testh5mkgrp.sh.in | 325 - tools/misc/testh5repart.sh.in | 116 - tools/misc/vds/CMakeLists.txt | 28 - tools/misc/vds/Makefile.am | 38 - tools/misc/vds/UC_1.h | 121 - tools/misc/vds/UC_1_one_dim_gen.c | 269 - tools/misc/vds/UC_2.h | 110 - tools/misc/vds/UC_2_two_dims_gen.c | 270 - tools/misc/vds/UC_3.h | 74 - tools/misc/vds/UC_3_gaps_gen.c | 255 - tools/misc/vds/UC_4.h | 86 - tools/misc/vds/UC_4_printf_gen.c | 219 - tools/misc/vds/UC_5.h | 83 - tools/misc/vds/UC_5_stride_gen.c | 243 - tools/misc/vds/UC_common.h | 41 - tools/perform/CMakeLists.txt | 126 - tools/perform/CMakeTests.cmake | 54 - tools/perform/COPYING | 16 - tools/perform/Makefile.am | 79 - tools/perform/build_h5perf_alone.sh | 28 - tools/perform/build_h5perf_serial_alone.sh | 28 - tools/perform/chunk.c | 550 - tools/perform/gen_report.pl | 527 - tools/perform/iopipe.c | 508 - tools/perform/overhead.c | 408 - tools/perform/perf.c | 494 - tools/perform/perf_meta.c | 850 -- tools/perform/pio_engine.c | 2682 ----- tools/perform/pio_perf.c | 1694 --- tools/perform/pio_perf.h | 104 - tools/perform/pio_standalone.c | 281 - tools/perform/pio_standalone.h | 530 - tools/perform/sio_engine.c | 1313 --- tools/perform/sio_perf.c | 1412 --- tools/perform/sio_perf.h | 104 - tools/perform/sio_standalone.c | 285 - tools/perform/sio_standalone.h | 546 - tools/perform/zip_perf.c | 644 -- 608 files changed, 114958 deletions(-) delete mode 100644 tools/h5copy/CMakeLists.txt delete mode 100644 tools/h5copy/CMakeTests.cmake delete mode 100644 tools/h5copy/Makefile.am delete mode 100644 tools/h5copy/h5copy.c delete mode 100644 tools/h5copy/h5copygentest.c delete mode 100644 tools/h5copy/testfiles/h5copy_extlinks_src.h5 delete mode 100644 tools/h5copy/testfiles/h5copy_extlinks_src.out.ls delete mode 100644 tools/h5copy/testfiles/h5copy_extlinks_trg.h5 delete mode 100644 tools/h5copy/testfiles/h5copy_misc1.out delete mode 100644 tools/h5copy/testfiles/h5copy_ref.h5 delete mode 100644 tools/h5copy/testfiles/h5copy_ref.out.ls delete mode 100644 tools/h5copy/testfiles/h5copytst.h5 delete mode 100644 tools/h5copy/testfiles/h5copytst.out.ls delete mode 100644 tools/h5copy/testfiles/h5copytst_new.h5 delete mode 100644 tools/h5copy/testfiles/h5copytst_new.out.ls delete mode 100644 tools/h5copy/testh5copy.sh.in delete mode 100644 tools/h5diff/CMakeLists.txt delete mode 100644 tools/h5diff/CMakeTests.cmake delete mode 100644 tools/h5diff/Makefile.am delete mode 100644 tools/h5diff/h5diff_common.c delete mode 100644 tools/h5diff/h5diff_common.h delete mode 100644 tools/h5diff/h5diff_main.c delete mode 100644 tools/h5diff/h5diffgentest.c delete mode 100644 tools/h5diff/ph5diff_main.c delete mode 100644 tools/h5diff/testfiles/compounds_array_vlen1.h5 delete mode 100644 tools/h5diff/testfiles/compounds_array_vlen2.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_10.txt delete mode 100644 tools/h5diff/testfiles/h5diff_100.txt delete mode 100644 tools/h5diff/testfiles/h5diff_101.txt delete mode 100644 tools/h5diff/testfiles/h5diff_101w.txt delete mode 100644 tools/h5diff/testfiles/h5diff_102.txt delete mode 100644 tools/h5diff/testfiles/h5diff_102w.txt delete mode 100644 tools/h5diff/testfiles/h5diff_103.txt delete mode 100644 tools/h5diff/testfiles/h5diff_103w.txt delete mode 100644 tools/h5diff/testfiles/h5diff_104.txt delete mode 100644 tools/h5diff/testfiles/h5diff_104w.txt delete mode 100644 tools/h5diff/testfiles/h5diff_11.txt delete mode 100644 tools/h5diff/testfiles/h5diff_12.txt delete mode 100644 tools/h5diff/testfiles/h5diff_13.txt delete mode 100644 tools/h5diff/testfiles/h5diff_14.txt delete mode 100644 tools/h5diff/testfiles/h5diff_15.txt delete mode 100644 tools/h5diff/testfiles/h5diff_16_1.txt delete mode 100644 tools/h5diff/testfiles/h5diff_16_2.txt delete mode 100644 tools/h5diff/testfiles/h5diff_16_3.txt delete mode 100644 tools/h5diff/testfiles/h5diff_17.txt delete mode 100644 tools/h5diff/testfiles/h5diff_171.txt delete mode 100644 tools/h5diff/testfiles/h5diff_172.txt delete mode 100644 tools/h5diff/testfiles/h5diff_18.txt delete mode 100644 tools/h5diff/testfiles/h5diff_18_1.txt delete mode 100644 tools/h5diff/testfiles/h5diff_19.txt delete mode 100644 tools/h5diff/testfiles/h5diff_20.txt delete mode 100644 tools/h5diff/testfiles/h5diff_200.txt delete mode 100644 tools/h5diff/testfiles/h5diff_201.txt delete mode 100644 tools/h5diff/testfiles/h5diff_202.txt delete mode 100644 tools/h5diff/testfiles/h5diff_203.txt delete mode 100644 tools/h5diff/testfiles/h5diff_204.txt delete mode 100644 tools/h5diff/testfiles/h5diff_205.txt delete mode 100644 tools/h5diff/testfiles/h5diff_206.txt delete mode 100644 tools/h5diff/testfiles/h5diff_207.txt delete mode 100644 tools/h5diff/testfiles/h5diff_208.txt delete mode 100644 tools/h5diff/testfiles/h5diff_21.txt delete mode 100644 tools/h5diff/testfiles/h5diff_22.txt delete mode 100644 tools/h5diff/testfiles/h5diff_220.txt delete mode 100644 tools/h5diff/testfiles/h5diff_221.txt delete mode 100644 tools/h5diff/testfiles/h5diff_222.txt delete mode 100644 tools/h5diff/testfiles/h5diff_223.txt delete mode 100644 tools/h5diff/testfiles/h5diff_224.txt delete mode 100644 tools/h5diff/testfiles/h5diff_23.txt delete mode 100644 tools/h5diff/testfiles/h5diff_24.txt delete mode 100644 tools/h5diff/testfiles/h5diff_25.txt delete mode 100644 tools/h5diff/testfiles/h5diff_26.txt delete mode 100644 tools/h5diff/testfiles/h5diff_27.txt delete mode 100644 tools/h5diff/testfiles/h5diff_28.txt delete mode 100644 tools/h5diff/testfiles/h5diff_30.txt delete mode 100644 tools/h5diff/testfiles/h5diff_300.txt delete mode 100644 tools/h5diff/testfiles/h5diff_400.txt delete mode 100644 tools/h5diff/testfiles/h5diff_401.txt delete mode 100644 tools/h5diff/testfiles/h5diff_402.txt delete mode 100644 tools/h5diff/testfiles/h5diff_403.txt delete mode 100644 tools/h5diff/testfiles/h5diff_404.txt delete mode 100644 tools/h5diff/testfiles/h5diff_405.txt delete mode 100644 tools/h5diff/testfiles/h5diff_406.txt delete mode 100644 tools/h5diff/testfiles/h5diff_407.txt delete mode 100644 tools/h5diff/testfiles/h5diff_408.txt delete mode 100644 tools/h5diff/testfiles/h5diff_409.txt delete mode 100644 tools/h5diff/testfiles/h5diff_410.txt delete mode 100644 tools/h5diff/testfiles/h5diff_411.txt delete mode 100644 tools/h5diff/testfiles/h5diff_412.txt delete mode 100644 tools/h5diff/testfiles/h5diff_413.txt delete mode 100644 tools/h5diff/testfiles/h5diff_414.txt delete mode 100644 tools/h5diff/testfiles/h5diff_415.txt delete mode 100644 tools/h5diff/testfiles/h5diff_416.txt delete mode 100644 tools/h5diff/testfiles/h5diff_417.txt delete mode 100644 tools/h5diff/testfiles/h5diff_418.txt delete mode 100644 tools/h5diff/testfiles/h5diff_419.txt delete mode 100644 tools/h5diff/testfiles/h5diff_420.txt delete mode 100644 tools/h5diff/testfiles/h5diff_421.txt delete mode 100644 tools/h5diff/testfiles/h5diff_422.txt delete mode 100644 tools/h5diff/testfiles/h5diff_423.txt delete mode 100644 tools/h5diff/testfiles/h5diff_424.txt delete mode 100644 tools/h5diff/testfiles/h5diff_425.txt delete mode 100644 tools/h5diff/testfiles/h5diff_450.txt delete mode 100644 tools/h5diff/testfiles/h5diff_451.txt delete mode 100644 tools/h5diff/testfiles/h5diff_452.txt delete mode 100644 tools/h5diff/testfiles/h5diff_453.txt delete mode 100644 tools/h5diff/testfiles/h5diff_454.txt delete mode 100644 tools/h5diff/testfiles/h5diff_455.txt delete mode 100644 tools/h5diff/testfiles/h5diff_456.txt delete mode 100644 tools/h5diff/testfiles/h5diff_457.txt delete mode 100644 tools/h5diff/testfiles/h5diff_458.txt delete mode 100644 tools/h5diff/testfiles/h5diff_459.txt delete mode 100644 tools/h5diff/testfiles/h5diff_465.txt delete mode 100644 tools/h5diff/testfiles/h5diff_466.txt delete mode 100644 tools/h5diff/testfiles/h5diff_467.txt delete mode 100644 tools/h5diff/testfiles/h5diff_468.txt delete mode 100644 tools/h5diff/testfiles/h5diff_469.txt delete mode 100644 tools/h5diff/testfiles/h5diff_471.txt delete mode 100644 tools/h5diff/testfiles/h5diff_472.txt delete mode 100644 tools/h5diff/testfiles/h5diff_473.txt delete mode 100644 tools/h5diff/testfiles/h5diff_474.txt delete mode 100644 tools/h5diff/testfiles/h5diff_475.txt delete mode 100644 tools/h5diff/testfiles/h5diff_480.txt delete mode 100644 tools/h5diff/testfiles/h5diff_481.txt delete mode 100644 tools/h5diff/testfiles/h5diff_482.txt delete mode 100644 tools/h5diff/testfiles/h5diff_483.txt delete mode 100644 tools/h5diff/testfiles/h5diff_484.txt delete mode 100644 tools/h5diff/testfiles/h5diff_485.txt delete mode 100644 tools/h5diff/testfiles/h5diff_486.txt delete mode 100644 tools/h5diff/testfiles/h5diff_487.txt delete mode 100644 tools/h5diff/testfiles/h5diff_50.txt delete mode 100644 tools/h5diff/testfiles/h5diff_500.txt delete mode 100644 tools/h5diff/testfiles/h5diff_501.txt delete mode 100644 tools/h5diff/testfiles/h5diff_502.txt delete mode 100644 tools/h5diff/testfiles/h5diff_503.txt delete mode 100644 tools/h5diff/testfiles/h5diff_504.txt delete mode 100644 tools/h5diff/testfiles/h5diff_505.txt delete mode 100644 tools/h5diff/testfiles/h5diff_506.txt delete mode 100644 tools/h5diff/testfiles/h5diff_507.txt delete mode 100644 tools/h5diff/testfiles/h5diff_508.txt delete mode 100644 tools/h5diff/testfiles/h5diff_509.txt delete mode 100644 tools/h5diff/testfiles/h5diff_51.txt delete mode 100644 tools/h5diff/testfiles/h5diff_510.txt delete mode 100644 tools/h5diff/testfiles/h5diff_511.txt delete mode 100644 tools/h5diff/testfiles/h5diff_512.txt delete mode 100644 tools/h5diff/testfiles/h5diff_513.txt delete mode 100644 tools/h5diff/testfiles/h5diff_514.txt delete mode 100644 tools/h5diff/testfiles/h5diff_515.txt delete mode 100644 tools/h5diff/testfiles/h5diff_516.txt delete mode 100644 tools/h5diff/testfiles/h5diff_517.txt delete mode 100644 tools/h5diff/testfiles/h5diff_518.txt delete mode 100644 tools/h5diff/testfiles/h5diff_52.txt delete mode 100644 tools/h5diff/testfiles/h5diff_53.txt delete mode 100644 tools/h5diff/testfiles/h5diff_530.txt delete mode 100644 tools/h5diff/testfiles/h5diff_54.txt delete mode 100644 tools/h5diff/testfiles/h5diff_540.txt delete mode 100644 tools/h5diff/testfiles/h5diff_55.txt delete mode 100644 tools/h5diff/testfiles/h5diff_56.txt delete mode 100644 tools/h5diff/testfiles/h5diff_57.txt delete mode 100644 tools/h5diff/testfiles/h5diff_58.txt delete mode 100644 tools/h5diff/testfiles/h5diff_59.txt delete mode 100644 tools/h5diff/testfiles/h5diff_600.txt delete mode 100644 tools/h5diff/testfiles/h5diff_601.txt delete mode 100644 tools/h5diff/testfiles/h5diff_603.txt delete mode 100644 tools/h5diff/testfiles/h5diff_604.txt delete mode 100644 tools/h5diff/testfiles/h5diff_605.txt delete mode 100644 tools/h5diff/testfiles/h5diff_606.txt delete mode 100644 tools/h5diff/testfiles/h5diff_607.txt delete mode 100644 tools/h5diff/testfiles/h5diff_608.txt delete mode 100644 tools/h5diff/testfiles/h5diff_609.txt delete mode 100644 tools/h5diff/testfiles/h5diff_610.txt delete mode 100644 tools/h5diff/testfiles/h5diff_612.txt delete mode 100644 tools/h5diff/testfiles/h5diff_613.txt delete mode 100644 tools/h5diff/testfiles/h5diff_614.txt delete mode 100644 tools/h5diff/testfiles/h5diff_615.txt delete mode 100644 tools/h5diff/testfiles/h5diff_616.txt delete mode 100644 tools/h5diff/testfiles/h5diff_617.txt delete mode 100644 tools/h5diff/testfiles/h5diff_618.txt delete mode 100644 tools/h5diff/testfiles/h5diff_619.txt delete mode 100644 tools/h5diff/testfiles/h5diff_621.txt delete mode 100644 tools/h5diff/testfiles/h5diff_622.txt delete mode 100644 tools/h5diff/testfiles/h5diff_623.txt delete mode 100644 tools/h5diff/testfiles/h5diff_624.txt delete mode 100644 tools/h5diff/testfiles/h5diff_625.txt delete mode 100644 tools/h5diff/testfiles/h5diff_626.txt delete mode 100644 tools/h5diff/testfiles/h5diff_627.txt delete mode 100644 tools/h5diff/testfiles/h5diff_628.txt delete mode 100644 tools/h5diff/testfiles/h5diff_629.txt delete mode 100644 tools/h5diff/testfiles/h5diff_630.txt delete mode 100644 tools/h5diff/testfiles/h5diff_631.txt delete mode 100644 tools/h5diff/testfiles/h5diff_640.txt delete mode 100644 tools/h5diff/testfiles/h5diff_641.txt delete mode 100644 tools/h5diff/testfiles/h5diff_642.txt delete mode 100644 tools/h5diff/testfiles/h5diff_643.txt delete mode 100644 tools/h5diff/testfiles/h5diff_644.txt delete mode 100644 tools/h5diff/testfiles/h5diff_645.txt delete mode 100644 tools/h5diff/testfiles/h5diff_646.txt delete mode 100644 tools/h5diff/testfiles/h5diff_70.txt delete mode 100644 tools/h5diff/testfiles/h5diff_700.txt delete mode 100644 tools/h5diff/testfiles/h5diff_701.txt delete mode 100644 tools/h5diff/testfiles/h5diff_702.txt delete mode 100644 tools/h5diff/testfiles/h5diff_703.txt delete mode 100644 tools/h5diff/testfiles/h5diff_704.txt delete mode 100644 tools/h5diff/testfiles/h5diff_705.txt delete mode 100644 tools/h5diff/testfiles/h5diff_706.txt delete mode 100644 tools/h5diff/testfiles/h5diff_707.txt delete mode 100644 tools/h5diff/testfiles/h5diff_708.txt delete mode 100644 tools/h5diff/testfiles/h5diff_709.txt delete mode 100644 tools/h5diff/testfiles/h5diff_710.txt delete mode 100644 tools/h5diff/testfiles/h5diff_80.txt delete mode 100644 tools/h5diff/testfiles/h5diff_90.txt delete mode 100644 tools/h5diff/testfiles/h5diff_attr1.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_attr2.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_attr_v_level1.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_attr_v_level2.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_basic1.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_basic2.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_comp_vl_strs.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_danglelinks1.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_danglelinks2.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_dset1.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_dset2.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_dset_zero_dim_size1.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_dset_zero_dim_size2.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_dtypes.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_empty.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_enum_invalid_values.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_exclude1-1.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_exclude1-2.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_exclude2-1.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_exclude2-2.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_exclude3-1.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_exclude3-2.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_ext2softlink_src.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_ext2softlink_trg.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_extlink_src.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_extlink_trg.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_grp_recurse1.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_grp_recurse2.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_grp_recurse_ext1.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_grp_recurse_ext2-1.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_grp_recurse_ext2-2.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_grp_recurse_ext2-3.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_hyper1.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_hyper2.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_linked_softlink.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_links.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_softlinks.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_tmp1.txt delete mode 100644 tools/h5diff/testfiles/h5diff_tmp2.txt delete mode 100644 tools/h5diff/testfiles/h5diff_types.h5 delete mode 100644 tools/h5diff/testfiles/h5diff_v1.txt delete mode 100644 tools/h5diff/testfiles/h5diff_v2.txt delete mode 100644 tools/h5diff/testfiles/h5diff_v3.txt delete mode 100644 tools/h5diff/testfiles/non_comparables1.h5 delete mode 100644 tools/h5diff/testfiles/non_comparables2.h5 delete mode 100644 tools/h5diff/testfiles/tmpSingleSiteBethe.output.h5 delete mode 100644 tools/h5diff/testfiles/tmpSingleSiteBethe.reference.h5 delete mode 100644 tools/h5diff/testfiles/tmptest.he5 delete mode 100644 tools/h5diff/testfiles/tmptest2.he5 delete mode 100644 tools/h5diff/testh5diff.sh.in delete mode 100644 tools/h5diff/testph5diff.sh.in delete mode 100644 tools/h5dump/CMakeLists.txt delete mode 100644 tools/h5dump/CMakeTests.cmake delete mode 100644 tools/h5dump/CMakeTestsPBITS.cmake delete mode 100644 tools/h5dump/CMakeTestsVDS.cmake delete mode 100644 tools/h5dump/CMakeTestsXML.cmake delete mode 100644 tools/h5dump/Makefile.am delete mode 100644 tools/h5dump/binread.c delete mode 100644 tools/h5dump/errfiles/filter_fail.err delete mode 100644 tools/h5dump/errfiles/non_existing.err delete mode 100644 tools/h5dump/errfiles/tall-1.err delete mode 100644 tools/h5dump/errfiles/tall-2A.err delete mode 100644 tools/h5dump/errfiles/tall-2A0.err delete mode 100644 tools/h5dump/errfiles/tall-2B.err delete mode 100644 tools/h5dump/errfiles/tarray1_big.err delete mode 100644 tools/h5dump/errfiles/tattr-3.err delete mode 100644 tools/h5dump/errfiles/tattrregR.err delete mode 100644 tools/h5dump/errfiles/tcomp-3.err delete mode 100644 tools/h5dump/errfiles/tdataregR.err delete mode 100644 tools/h5dump/errfiles/tdset-2.err delete mode 100644 tools/h5dump/errfiles/texceedsubblock.err delete mode 100644 tools/h5dump/errfiles/texceedsubcount.err delete mode 100644 tools/h5dump/errfiles/texceedsubstart.err delete mode 100644 tools/h5dump/errfiles/texceedsubstride.err delete mode 100644 tools/h5dump/errfiles/textlink.err delete mode 100644 tools/h5dump/errfiles/textlinkfar.err delete mode 100644 tools/h5dump/errfiles/textlinksrc.err delete mode 100644 tools/h5dump/errfiles/tgroup-2.err delete mode 100644 tools/h5dump/errfiles/tnofilename-with-packed-bits.err delete mode 100644 tools/h5dump/errfiles/torderlinks1.err delete mode 100644 tools/h5dump/errfiles/torderlinks2.err delete mode 100644 tools/h5dump/errfiles/tpbitsCharLengthExceeded.err delete mode 100644 tools/h5dump/errfiles/tpbitsCharOffsetExceeded.err delete mode 100644 tools/h5dump/errfiles/tpbitsIncomplete.err delete mode 100644 tools/h5dump/errfiles/tpbitsIntLengthExceeded.err delete mode 100644 tools/h5dump/errfiles/tpbitsIntOffsetExceeded.err delete mode 100644 tools/h5dump/errfiles/tpbitsLengthExceeded.err delete mode 100644 tools/h5dump/errfiles/tpbitsLengthPositive.err delete mode 100644 tools/h5dump/errfiles/tpbitsLongLengthExceeded.err delete mode 100644 tools/h5dump/errfiles/tpbitsLongOffsetExceeded.err delete mode 100644 tools/h5dump/errfiles/tpbitsMaxExceeded.err delete mode 100644 tools/h5dump/errfiles/tpbitsOffsetExceeded.err delete mode 100644 tools/h5dump/errfiles/tpbitsOffsetNegative.err delete mode 100644 tools/h5dump/errfiles/tperror.err delete mode 100644 tools/h5dump/errfiles/tqmarkfile.err delete mode 100644 tools/h5dump/errfiles/tslink-D.err delete mode 100644 tools/h5dump/h5dump.c delete mode 100644 tools/h5dump/h5dump.h delete mode 100644 tools/h5dump/h5dump_ddl.c delete mode 100644 tools/h5dump/h5dump_ddl.h delete mode 100644 tools/h5dump/h5dump_defines.h delete mode 100644 tools/h5dump/h5dump_extern.h delete mode 100644 tools/h5dump/h5dump_xml.c delete mode 100644 tools/h5dump/h5dump_xml.h delete mode 100644 tools/h5dump/h5dumpgentest.c delete mode 100644 tools/h5dump/testh5dump.sh.in delete mode 100644 tools/h5dump/testh5dumppbits.sh.in delete mode 100644 tools/h5dump/testh5dumpvds.sh.in delete mode 100644 tools/h5dump/testh5dumpxml.sh.in delete mode 100644 tools/h5format_convert/CMakeLists.txt delete mode 100644 tools/h5format_convert/CMakeTests.cmake delete mode 100644 tools/h5format_convert/Makefile.am delete mode 100644 tools/h5format_convert/h5fc_chk_idx.c delete mode 100644 tools/h5format_convert/h5fc_gentest.c delete mode 100644 tools/h5format_convert/h5format_convert.c delete mode 100644 tools/h5format_convert/testfiles/h5fc_d_file.ddl delete mode 100644 tools/h5format_convert/testfiles/h5fc_dname.ddl delete mode 100644 tools/h5format_convert/testfiles/h5fc_edge_v3.h5 delete mode 100644 tools/h5format_convert/testfiles/h5fc_err_level.h5 delete mode 100644 tools/h5format_convert/testfiles/h5fc_ext1_f.ddl delete mode 100644 tools/h5format_convert/testfiles/h5fc_ext1_f.h5 delete mode 100644 tools/h5format_convert/testfiles/h5fc_ext1_i.ddl delete mode 100644 tools/h5format_convert/testfiles/h5fc_ext1_i.h5 delete mode 100644 tools/h5format_convert/testfiles/h5fc_ext1_s.ddl delete mode 100644 tools/h5format_convert/testfiles/h5fc_ext1_s.h5 delete mode 100644 tools/h5format_convert/testfiles/h5fc_ext2_if.ddl delete mode 100644 tools/h5format_convert/testfiles/h5fc_ext2_if.h5 delete mode 100644 tools/h5format_convert/testfiles/h5fc_ext2_is.ddl delete mode 100644 tools/h5format_convert/testfiles/h5fc_ext2_is.h5 delete mode 100644 tools/h5format_convert/testfiles/h5fc_ext2_sf.ddl delete mode 100644 tools/h5format_convert/testfiles/h5fc_ext2_sf.h5 delete mode 100644 tools/h5format_convert/testfiles/h5fc_ext3_isf.ddl delete mode 100644 tools/h5format_convert/testfiles/h5fc_ext3_isf.h5 delete mode 100644 tools/h5format_convert/testfiles/h5fc_ext_none.h5 delete mode 100644 tools/h5format_convert/testfiles/h5fc_help.ddl delete mode 100644 tools/h5format_convert/testfiles/h5fc_non_v3.h5 delete mode 100644 tools/h5format_convert/testfiles/h5fc_nonexistdset_file.ddl delete mode 100644 tools/h5format_convert/testfiles/h5fc_nonexistfile.ddl delete mode 100644 tools/h5format_convert/testfiles/h5fc_nooption.ddl delete mode 100644 tools/h5format_convert/testfiles/h5fc_v_all.ddl delete mode 100644 tools/h5format_convert/testfiles/h5fc_v_bt1.ddl delete mode 100644 tools/h5format_convert/testfiles/h5fc_v_err.ddl delete mode 100644 tools/h5format_convert/testfiles/h5fc_v_n_1d.ddl delete mode 100644 tools/h5format_convert/testfiles/h5fc_v_n_all.ddl delete mode 100644 tools/h5format_convert/testfiles/h5fc_v_ndata_bt1.ddl delete mode 100644 tools/h5format_convert/testfiles/h5fc_v_non_chunked.ddl delete mode 100644 tools/h5format_convert/testfiles/old_h5fc_ext1_f.ddl delete mode 100644 tools/h5format_convert/testfiles/old_h5fc_ext1_f.h5 delete mode 100644 tools/h5format_convert/testfiles/old_h5fc_ext1_i.ddl delete mode 100644 tools/h5format_convert/testfiles/old_h5fc_ext1_i.h5 delete mode 100644 tools/h5format_convert/testfiles/old_h5fc_ext1_s.ddl delete mode 100644 tools/h5format_convert/testfiles/old_h5fc_ext1_s.h5 delete mode 100644 tools/h5format_convert/testfiles/old_h5fc_ext2_if.ddl delete mode 100644 tools/h5format_convert/testfiles/old_h5fc_ext2_if.h5 delete mode 100644 tools/h5format_convert/testfiles/old_h5fc_ext2_is.ddl delete mode 100644 tools/h5format_convert/testfiles/old_h5fc_ext2_is.h5 delete mode 100644 tools/h5format_convert/testfiles/old_h5fc_ext2_sf.ddl delete mode 100644 tools/h5format_convert/testfiles/old_h5fc_ext2_sf.h5 delete mode 100644 tools/h5format_convert/testfiles/old_h5fc_ext3_isf.ddl delete mode 100644 tools/h5format_convert/testfiles/old_h5fc_ext3_isf.h5 delete mode 100644 tools/h5format_convert/testfiles/old_h5fc_ext_none.h5 delete mode 100644 tools/h5format_convert/testh5fc.sh.in delete mode 100644 tools/h5import/CMakeLists.txt delete mode 100644 tools/h5import/CMakeTests.cmake delete mode 100644 tools/h5import/Makefile.am delete mode 100644 tools/h5import/h5import.c delete mode 100644 tools/h5import/h5import.h delete mode 100644 tools/h5import/h5importtest.c delete mode 100644 tools/h5import/h5importtestutil.sh.in delete mode 100644 tools/h5import/testfiles/binfp64.conf delete mode 100644 tools/h5import/testfiles/binfp64.h5 delete mode 100644 tools/h5import/testfiles/binin16.conf delete mode 100644 tools/h5import/testfiles/binin16.h5 delete mode 100644 tools/h5import/testfiles/binin32.conf delete mode 100644 tools/h5import/testfiles/binin32.h5 delete mode 100644 tools/h5import/testfiles/binin8.conf delete mode 100644 tools/h5import/testfiles/binin8.h5 delete mode 100644 tools/h5import/testfiles/binin8w.conf delete mode 100644 tools/h5import/testfiles/binin8w.h5 delete mode 100644 tools/h5import/testfiles/binuin16.conf delete mode 100644 tools/h5import/testfiles/binuin16.h5 delete mode 100644 tools/h5import/testfiles/binuin32.conf delete mode 100644 tools/h5import/testfiles/binuin32.h5 delete mode 100644 tools/h5import/testfiles/dbinfp64.h5.txt delete mode 100644 tools/h5import/testfiles/dbinin16.h5.txt delete mode 100644 tools/h5import/testfiles/dbinin32.h5.txt delete mode 100644 tools/h5import/testfiles/dbinin8.h5.txt delete mode 100644 tools/h5import/testfiles/dbinin8w.h5.txt delete mode 100644 tools/h5import/testfiles/dbinuin16.h5.txt delete mode 100644 tools/h5import/testfiles/dbinuin32.h5.txt delete mode 100644 tools/h5import/testfiles/dtxtstr.h5.txt delete mode 100644 tools/h5import/testfiles/textpfe.conf delete mode 100644 tools/h5import/testfiles/textpfe.h5 delete mode 100644 tools/h5import/testfiles/textpfe64.txt delete mode 100644 tools/h5import/testfiles/txtfp32.conf delete mode 100644 tools/h5import/testfiles/txtfp32.h5 delete mode 100644 tools/h5import/testfiles/txtfp32.txt delete mode 100644 tools/h5import/testfiles/txtfp64.conf delete mode 100644 tools/h5import/testfiles/txtfp64.h5 delete mode 100644 tools/h5import/testfiles/txtfp64.txt delete mode 100644 tools/h5import/testfiles/txtin16.conf delete mode 100644 tools/h5import/testfiles/txtin16.h5 delete mode 100644 tools/h5import/testfiles/txtin16.txt delete mode 100644 tools/h5import/testfiles/txtin32.conf delete mode 100644 tools/h5import/testfiles/txtin32.h5 delete mode 100644 tools/h5import/testfiles/txtin32.txt delete mode 100644 tools/h5import/testfiles/txtin8.conf delete mode 100644 tools/h5import/testfiles/txtin8.h5 delete mode 100644 tools/h5import/testfiles/txtin8.txt delete mode 100644 tools/h5import/testfiles/txtstr.conf delete mode 100644 tools/h5import/testfiles/txtstr.h5 delete mode 100644 tools/h5import/testfiles/txtstr.txt delete mode 100644 tools/h5import/testfiles/txtuin16.conf delete mode 100644 tools/h5import/testfiles/txtuin16.h5 delete mode 100644 tools/h5import/testfiles/txtuin16.txt delete mode 100644 tools/h5import/testfiles/txtuin32.conf delete mode 100644 tools/h5import/testfiles/txtuin32.h5 delete mode 100644 tools/h5import/testfiles/txtuin32.txt delete mode 100644 tools/h5jam/CMakeLists.txt delete mode 100644 tools/h5jam/CMakeTests.cmake delete mode 100644 tools/h5jam/Makefile.am delete mode 100644 tools/h5jam/getub.c delete mode 100644 tools/h5jam/h5jam.c delete mode 100644 tools/h5jam/h5jamgentest.c delete mode 100644 tools/h5jam/h5unjam.c delete mode 100644 tools/h5jam/tellub.c delete mode 100644 tools/h5jam/testfiles/h5jam-help.txt delete mode 100644 tools/h5jam/testfiles/h5jam-ub-nohdf5.txt delete mode 100644 tools/h5jam/testfiles/h5unjam-help.txt delete mode 100644 tools/h5jam/testfiles/tall.h5 delete mode 100644 tools/h5jam/testfiles/twithub.h5 delete mode 100644 tools/h5jam/testfiles/twithub513.h5 delete mode 100644 tools/h5jam/testfiles/u10.txt delete mode 100644 tools/h5jam/testfiles/u511.txt delete mode 100644 tools/h5jam/testfiles/u512.txt delete mode 100644 tools/h5jam/testfiles/u513.txt delete mode 100644 tools/h5jam/testh5jam.sh.in delete mode 100644 tools/h5ls/CMakeLists.txt delete mode 100644 tools/h5ls/CMakeTests.cmake delete mode 100644 tools/h5ls/CMakeTestsVDS.cmake delete mode 100644 tools/h5ls/Makefile.am delete mode 100644 tools/h5ls/h5ls.c delete mode 100644 tools/h5ls/testh5ls.sh.in delete mode 100644 tools/h5ls/testh5lsvds.sh.in delete mode 100644 tools/h5repack/CMakeLists.txt delete mode 100644 tools/h5repack/CMakeTests.cmake delete mode 100644 tools/h5repack/Makefile.am delete mode 100644 tools/h5repack/dynlib_rpk.c delete mode 100644 tools/h5repack/h5repack.c delete mode 100644 tools/h5repack/h5repack.h delete mode 100644 tools/h5repack/h5repack.sh.in delete mode 100644 tools/h5repack/h5repack_copy.c delete mode 100644 tools/h5repack/h5repack_filters.c delete mode 100644 tools/h5repack/h5repack_main.c delete mode 100644 tools/h5repack/h5repack_opttable.c delete mode 100644 tools/h5repack/h5repack_parse.c delete mode 100644 tools/h5repack/h5repack_plugin.sh.in delete mode 100644 tools/h5repack/h5repack_refs.c delete mode 100644 tools/h5repack/h5repack_verify.c delete mode 100644 tools/h5repack/h5repacktst.c delete mode 100644 tools/h5repack/testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.ddl delete mode 100644 tools/h5repack/testfiles/2_vds.h5-vds_chunk3x6x9-v.ddl delete mode 100644 tools/h5repack/testfiles/3_1_vds.h5-vds_chunk2x5x8-v.ddl delete mode 100644 tools/h5repack/testfiles/4_vds.h5-vds_compa-v.ddl delete mode 100644 tools/h5repack/testfiles/4_vds.h5-vds_conti-v.ddl delete mode 100644 tools/h5repack/testfiles/README delete mode 100644 tools/h5repack/testfiles/deflate_limit.h5repack_layout.h5.ddl delete mode 100644 tools/h5repack/testfiles/h5repack-help.txt delete mode 100644 tools/h5repack/testfiles/h5repack.info delete mode 100644 tools/h5repack/testfiles/h5repack_attr.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_attr_refs.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_deflate.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_early.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_ext.bin delete mode 100644 tools/h5repack/testfiles/h5repack_ext.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_fill.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_filters.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_filters.h5-gzip_verbose_filters.tst delete mode 100644 tools/h5repack/testfiles/h5repack_fletcher.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_hlink.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_layout.UD.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_layout.UD.h5-plugin_none.ddl delete mode 100644 tools/h5repack/testfiles/h5repack_layout.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_layout.h5-dset2_chunk_20x10-errstk.tst delete mode 100644 tools/h5repack/testfiles/h5repack_layout.h5-plugin_test.ddl delete mode 100644 tools/h5repack/testfiles/h5repack_layout.h5-plugin_zero.tst delete mode 100644 tools/h5repack/testfiles/h5repack_layout.h5.ddl delete mode 100644 tools/h5repack/testfiles/h5repack_layout2.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_layout3.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_layouto.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_named_dtypes.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_nbit.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_nested_8bit_enum.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_nested_8bit_enum_deflated.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_objs.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_refs.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_shuffle.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_soffset.h5 delete mode 100644 tools/h5repack/testfiles/h5repack_szip.h5 delete mode 100644 tools/h5repack/testfiles/plugin_none.h5repack_layout.UD.h5.tst delete mode 100644 tools/h5repack/testfiles/plugin_test.h5repack_layout.h5.tst delete mode 100644 tools/h5repack/testfiles/ublock.bin delete mode 100644 tools/h5repack/testh5repack_detect_szip.c delete mode 100644 tools/h5stat/CMakeLists.txt delete mode 100644 tools/h5stat/CMakeTests.cmake delete mode 100644 tools/h5stat/Makefile.am delete mode 100644 tools/h5stat/h5stat.c delete mode 100644 tools/h5stat/h5stat_gentest.c delete mode 100644 tools/h5stat/testfiles/h5stat_dims1.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_dims2.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_err1_dims.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_err1_links.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_err1_numattrs.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_err2_numattrs.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_filters-F.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_filters-UD.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_filters-UT.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_filters-d.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_filters-dT.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_filters-file.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_filters-g.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_filters.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_filters.h5 delete mode 100644 tools/h5stat/testfiles/h5stat_help1.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_help2.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_idx.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_idx.h5 delete mode 100644 tools/h5stat/testfiles/h5stat_links1.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_links2.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_links3.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_links4.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_links5.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_newgrat-UA.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_newgrat-UG.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_newgrat.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_newgrat.h5 delete mode 100644 tools/h5stat/testfiles/h5stat_nofile.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_notexist.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_numattrs1.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_numattrs2.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_numattrs3.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_numattrs4.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_threshold.h5 delete mode 100644 tools/h5stat/testfiles/h5stat_tsohm.ddl delete mode 100644 tools/h5stat/testfiles/h5stat_tsohm.h5 delete mode 100644 tools/h5stat/testh5stat.sh.in delete mode 100644 tools/misc/CMakeLists.txt delete mode 100644 tools/misc/CMakeTests.cmake delete mode 100644 tools/misc/Makefile.am delete mode 100644 tools/misc/h5cc.in delete mode 100644 tools/misc/h5debug.c delete mode 100644 tools/misc/h5mkgrp.c delete mode 100644 tools/misc/h5perf_gentest.c delete mode 100644 tools/misc/h5redeploy.in delete mode 100644 tools/misc/h5repart.c delete mode 100644 tools/misc/h5repart_gentest.c delete mode 100644 tools/misc/repart_test.c delete mode 100644 tools/misc/talign.c delete mode 100644 tools/misc/testfiles/h5mkgrp_help.txt delete mode 100644 tools/misc/testfiles/h5mkgrp_version.txt.in delete mode 100644 tools/misc/testh5mkgrp.sh.in delete mode 100644 tools/misc/testh5repart.sh.in delete mode 100644 tools/misc/vds/CMakeLists.txt delete mode 100644 tools/misc/vds/Makefile.am delete mode 100644 tools/misc/vds/UC_1.h delete mode 100644 tools/misc/vds/UC_1_one_dim_gen.c delete mode 100644 tools/misc/vds/UC_2.h delete mode 100644 tools/misc/vds/UC_2_two_dims_gen.c delete mode 100644 tools/misc/vds/UC_3.h delete mode 100644 tools/misc/vds/UC_3_gaps_gen.c delete mode 100644 tools/misc/vds/UC_4.h delete mode 100644 tools/misc/vds/UC_4_printf_gen.c delete mode 100644 tools/misc/vds/UC_5.h delete mode 100644 tools/misc/vds/UC_5_stride_gen.c delete mode 100644 tools/misc/vds/UC_common.h delete mode 100644 tools/perform/CMakeLists.txt delete mode 100644 tools/perform/CMakeTests.cmake delete mode 100644 tools/perform/COPYING delete mode 100644 tools/perform/Makefile.am delete mode 100755 tools/perform/build_h5perf_alone.sh delete mode 100755 tools/perform/build_h5perf_serial_alone.sh delete mode 100644 tools/perform/chunk.c delete mode 100755 tools/perform/gen_report.pl delete mode 100644 tools/perform/iopipe.c delete mode 100644 tools/perform/overhead.c delete mode 100644 tools/perform/perf.c delete mode 100644 tools/perform/perf_meta.c delete mode 100644 tools/perform/pio_engine.c delete mode 100644 tools/perform/pio_perf.c delete mode 100644 tools/perform/pio_perf.h delete mode 100644 tools/perform/pio_standalone.c delete mode 100644 tools/perform/pio_standalone.h delete mode 100644 tools/perform/sio_engine.c delete mode 100644 tools/perform/sio_perf.c delete mode 100644 tools/perform/sio_perf.h delete mode 100644 tools/perform/sio_standalone.c delete mode 100644 tools/perform/sio_standalone.h delete mode 100644 tools/perform/zip_perf.c diff --git a/tools/h5copy/CMakeLists.txt b/tools/h5copy/CMakeLists.txt deleted file mode 100644 index 4fcd19b..0000000 --- a/tools/h5copy/CMakeLists.txt +++ /dev/null @@ -1,53 +0,0 @@ -cmake_minimum_required (VERSION 3.1.0) -PROJECT (HDF5_TOOLS_H5COPY) - -#----------------------------------------------------------------------------- -# Setup include Directories -#----------------------------------------------------------------------------- -INCLUDE_DIRECTORIES (${HDF5_TOOLS_DIR}/lib) - -# -------------------------------------------------------------------- -# Add the h5copy and test executables -# -------------------------------------------------------------------- -add_executable (h5copy ${HDF5_TOOLS_H5COPY_SOURCE_DIR}/h5copy.c) -TARGET_NAMING (h5copy STATIC) -TARGET_C_PROPERTIES (h5copy STATIC " " " ") -target_link_libraries (h5copy ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) -set_target_properties (h5copy PROPERTIES FOLDER tools) -set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5copy") - -set (H5_DEP_EXECUTABLES h5copy) - -if (BUILD_TESTING) - if (HDF5_BUILD_GENERATORS) - add_executable (h5copygentest ${HDF5_TOOLS_H5COPY_SOURCE_DIR}/h5copygentest.c) - TARGET_NAMING (h5copygentest STATIC) - TARGET_C_PROPERTIES (h5copygentest STATIC " " " ") - target_link_libraries (h5copygentest ${HDF5_LIB_TARGET}) - set_target_properties (h5copygentest PROPERTIES FOLDER generator/tools) - - #add_test (NAME h5copygentest COMMAND $) - endif (HDF5_BUILD_GENERATORS) - - include (CMakeTests.cmake) -endif (BUILD_TESTING) - -############################################################################## -############################################################################## -### I N S T A L L A T I O N ### -############################################################################## -############################################################################## - -#----------------------------------------------------------------------------- -# Rules for Installation of tools using make Install target -#----------------------------------------------------------------------------- - -#INSTALL_PROGRAM_PDB (h5copy ${HDF5_INSTALL_BIN_DIR} toolsapplications) - -install ( - TARGETS - h5copy - EXPORT - ${HDF5_EXPORTED_TARGETS} - RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications -) diff --git a/tools/h5copy/CMakeTests.cmake b/tools/h5copy/CMakeTests.cmake deleted file mode 100644 index a32c766..0000000 --- a/tools/h5copy/CMakeTests.cmake +++ /dev/null @@ -1,373 +0,0 @@ - -############################################################################## -############################################################################## -### T E S T I N G ### -############################################################################## -############################################################################## - - # -------------------------------------------------------------------- - # Copy all the HDF5 files from the source directory into the test directory - # -------------------------------------------------------------------- - set (LIST_HDF5_TEST_FILES - ${HDF5_TOOLS_H5COPY_SOURCE_DIR}/testfiles/h5copy_extlinks_src.h5 - ${HDF5_TOOLS_H5COPY_SOURCE_DIR}/testfiles/h5copy_extlinks_trg.h5 - ${HDF5_TOOLS_H5COPY_SOURCE_DIR}/testfiles/h5copy_ref.h5 - ${HDF5_TOOLS_H5COPY_SOURCE_DIR}/testfiles/h5copytst.h5 - ) - - set (LIST_OTHER_TEST_FILES - ${HDF5_TOOLS_H5COPY_SOURCE_DIR}/testfiles/h5copy_misc1.out - ) - - file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - - foreach (listfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES}) - get_filename_component(fname "${listfiles}" NAME) - HDFTEST_COPY_FILE("${listfiles}" "${PROJECT_BINARY_DIR}/testfiles/${fname}" "h5copy_files") - endforeach (listfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES}) - add_custom_target(h5copy_files ALL COMMENT "Copying files needed by h5copy tests" DEPENDS ${h5copy_files_list}) - -############################################################################## -############################################################################## -### T H E T E S T S M A C R O S ### -############################################################################## -############################################################################## - - # - # Perform h5copy according to passing parmeters - # - MACRO (ADD_H5_F_TEST testname resultcode infile fparam vparam sparam srcname dparam dstname) - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - # Remove any output file left over from previous test run - add_test ( - NAME H5COPY_F-${testname}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove - ./testfiles/${testname}.out.h5 - ) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - - add_test ( - NAME H5COPY_F-${testname} - COMMAND $ -f ${fparam} -i ./testfiles/${infile} -o ./testfiles/${testname}.out.h5 ${vparam} ${sparam} ${srcname} ${dparam} ${dstname} ${ARGN} - ) - if (HDF5_ENABLE_USING_MEMCHECKER) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5COPY_F-${testname} PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - else (HDF5_ENABLE_USING_MEMCHECKER) - set_tests_properties (H5COPY_F-${testname} PROPERTIES DEPENDS H5COPY_F-${testname}-clear-objects) - endif (HDF5_ENABLE_USING_MEMCHECKER) - - # resultcode=2 will cause the test to skip the diff test - if (NOT ${resultcode} STREQUAL "2") - add_test ( - NAME H5COPY_F-${testname}-DIFF - COMMAND $ -q ./testfiles/${infile} ./testfiles/${testname}.out.h5 ${srcname} ${dstname} - ) - SET_TESTS_PROPERTIES(H5COPY_F-${testname}-DIFF PROPERTIES DEPENDS H5COPY_F-${testname}) - if (${resultcode} STREQUAL "1") - set_tests_properties (H5COPY_F-${testname}-DIFF PROPERTIES WILL_FAIL "true") - endif (${resultcode} STREQUAL "1") - endif (NOT ${resultcode} STREQUAL "2") - ENDMACRO (ADD_H5_F_TEST) - - MACRO (ADD_H5_TEST testname resultcode infile vparam sparam srcname dparam dstname) - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - # Remove any output file left over from previous test run - add_test ( - NAME H5COPY-${testname}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove - ./testfiles/${testname}.out.h5 - ) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - - add_test ( - NAME H5COPY-${testname} - COMMAND $ -i ./testfiles/${infile} -o ./testfiles/${testname}.out.h5 ${vparam} ${sparam} ${srcname} ${dparam} ${dstname} ${ARGN} - ) - if (HDF5_ENABLE_USING_MEMCHECKER) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5COPY-${testname} PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - else (HDF5_ENABLE_USING_MEMCHECKER) - set_tests_properties (H5COPY-${testname} PROPERTIES DEPENDS H5COPY-${testname}-clear-objects) - endif (HDF5_ENABLE_USING_MEMCHECKER) - - # resultcode=2 will cause the test to skip the diff test - if (NOT ${resultcode} STREQUAL "2") - add_test ( - NAME H5COPY-${testname}-DIFF - COMMAND $ -q ./testfiles/${infile} ./testfiles/${testname}.out.h5 ${srcname} ${dstname} - ) - SET_TESTS_PROPERTIES(H5COPY-${testname}-DIFF PROPERTIES DEPENDS H5COPY-${testname}) - if (${resultcode} STREQUAL "1") - set_tests_properties (H5COPY-${testname}-DIFF PROPERTIES WILL_FAIL "true") - endif (${resultcode} STREQUAL "1") - endif (NOT ${resultcode} STREQUAL "2") - ENDMACRO (ADD_H5_TEST) - - MACRO (ADD_H5_TEST2 testname resultcode infile psparam pdparam vparam sparam srcname dparam dstname) - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - # Remove any output file left over from previous test run - add_test ( - NAME H5COPY-${testname}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove - ./testfiles/${testname}.out.h5 - ) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - - add_test ( - NAME H5COPY-${testname}-prefill - COMMAND $ -i ./testfiles/${infile} -o ./testfiles/${testname}.out.h5 -v -s ${psparam} -d ${pdparam} - ) - if (HDF5_ENABLE_USING_MEMCHECKER) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5COPY-${testname}-prefill PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - else (HDF5_ENABLE_USING_MEMCHECKER) - set_tests_properties (H5COPY-${testname}-prefill PROPERTIES DEPENDS H5COPY-${testname}-clear-objects) - endif (HDF5_ENABLE_USING_MEMCHECKER) - - add_test ( - NAME H5COPY-${testname} - COMMAND $ -i ./testfiles/${infile} -o ./testfiles/${testname}.out.h5 ${vparam} ${sparam} ${srcname} ${dparam} ${dstname} ${ARGN} - ) - set_tests_properties (H5COPY-${testname} PROPERTIES DEPENDS H5COPY-${testname}-prefill) - # resultcode=2 will cause the test to skip the diff test - if (NOT ${resultcode} STREQUAL "2") - add_test ( - NAME H5COPY-${testname}-DIFF - COMMAND $ -q ./testfiles/${infile} ./testfiles/${testname}.out.h5 ${srcname} ${dstname} - ) - SET_TESTS_PROPERTIES(H5COPY-${testname}-DIFF PROPERTIES DEPENDS H5COPY-${testname}) - if (${resultcode} STREQUAL "1") - set_tests_properties (H5COPY-${testname}-DIFF PROPERTIES WILL_FAIL "true") - endif (${resultcode} STREQUAL "1") - endif (NOT ${resultcode} STREQUAL "2") - ENDMACRO (ADD_H5_TEST2) - - MACRO (ADD_H5_TEST_SAME testname resultcode pfile psparam pdparam vparam sparam srcname dparam dstname) - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - # Remove any output file left over from previous test run - add_test ( - NAME H5COPY_SAME-${testname}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove - ./testfiles/${testname}.out.h5 - ) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - - add_test ( - NAME H5COPY_SAME-${testname}-prefill - COMMAND $ -i ./testfiles/${pfile} -o ./testfiles/${testname}.out.h5 -v -s ${psparam} -d ${pdparam} - ) - if (HDF5_ENABLE_USING_MEMCHECKER) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5COPY_SAME-${testname}-prefill PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - else (HDF5_ENABLE_USING_MEMCHECKER) - set_tests_properties (H5COPY_SAME-${testname}-prefill PROPERTIES DEPENDS H5COPY_SAME-${testname}-clear-objects) - endif (HDF5_ENABLE_USING_MEMCHECKER) - - add_test ( - NAME H5COPY_SAME-${testname} - COMMAND $ -i ./testfiles/${testname}.out.h5 -o ./testfiles/${testname}.out.h5 ${vparam} ${sparam} ${srcname} ${dparam} ${dstname} ${ARGN} - ) - set_tests_properties (H5COPY_SAME-${testname} PROPERTIES DEPENDS H5COPY_SAME-${testname}-prefill) - # resultcode=2 will cause the test to skip the diff test - if (NOT ${resultcode} STREQUAL "2") - add_test ( - NAME H5COPY_SAME-${testname}-DIFF - COMMAND $ -q ./testfiles/${testname}.out.h5 ./testfiles/${testname}.out.h5 ${srcname} ${dstname} - ) - SET_TESTS_PROPERTIES(H5COPY_SAME-${testname}-DIFF PROPERTIES DEPENDS H5COPY_SAME-${testname}) - if (${resultcode} STREQUAL "1") - set_tests_properties (H5COPY_SAME-${testname}-DIFF PROPERTIES WILL_FAIL "true") - endif (${resultcode} STREQUAL "1") - endif (NOT ${resultcode} STREQUAL "2") - ENDMACRO (ADD_H5_TEST_SAME) - - # - # Similiar to ADD_H5_TEST macro. Compare to outputs from source & target - # files instead of checking with h5ls. - # - MACRO (ADD_H5_CMP_TEST testname resultcode infile vparam sparam srcname dparam dstname) - # If using memchecker add tests without using scripts - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME H5COPY-CMP-${testname} COMMAND $ -i ./testfiles/${infile} -o ./testfiles/${testname}.out.h5 ${vparam} ${sparam} ${srcname} ${dparam} ${dstname} ${ARGN}) - if (${resultcode} STREQUAL "1") - set_tests_properties (H5COPY-CMP-${testname} PROPERTIES WILL_FAIL "true") - endif (${resultcode} STREQUAL "1") - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5COPY-CMP-${testname} PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - else (HDF5_ENABLE_USING_MEMCHECKER) - # Remove any output file left over from previous test run - add_test ( - NAME H5COPY-CMP-${testname}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove - ./testfiles/${testname}.out.h5 - ) - add_test ( - NAME H5COPY-CMP-${testname} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS=-i;./testfiles/${infile};-o;./testfiles/${testname}.out.h5;${vparam};${sparam};${srcname};${dparam};${dstname}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -D "TEST_OUTPUT=./testfiles/${testname}.out.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=./testfiles/${testname}.out" - -D "TEST_MASK=true" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5COPY-CMP-${testname} PROPERTIES DEPENDS H5COPY-CMP-${testname}-clear-objects) - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_CMP_TEST) - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## - - # -------------------------------------------------------------------- - # test file names - # -------------------------------------------------------------------- - set (HDF_FILE1 h5copytst) - set (HDF_FILE2 h5copy_ref) - set (HDF_EXT_SRC_FILE h5copy_extlinks_src) - set (HDF_EXT_TRG_FILE h5copy_extlinks_trg) - - if (HDF5_ENABLE_USING_MEMCHECKER) - # Remove any output file left over from previous test run - add_test ( - NAME H5COPY-clearall-objects - COMMAND ${CMAKE_COMMAND} - -E remove - simple.out.h5 - chunk.out.h5 - compact.out.h5 - compound.out.h5 - compressed.out.h5 - named_vl.out.h5 - nested_vl.out.h5 - simple_top.out.h5 - dsrename.out.h5 - grp_empty.out.h5 - grp_dsets.out.h5 - grp_nested.out.h5 - simple_group.out.h5 - grp_rename.out.h5 - grp_dsets_rename.out.h5 - A_B1_simple.out.h5 - A_B2_simple2.out.h5 - C_D_simple.out.h5 - E_F_grp_dsets.out.h5 - G_H_grp_nested.out.h5 - region_ref.out.h5 - ext_link.out.h5 - ext_link_f.out.h5 - ext_dangle_noobj.out.h5 - ext_dangle_noobj_f.out.h5 - ext_dangle_nofile.out.h5 - ext_dangle_nofile_f.out.h5 - ext_link_group.out.h5 - ext_link_group_f.out.h5 - samefile1.out.h5 - samefile2.out.h5 - h5copy_misc1.out.h5 - h5copy_misc1.out.out - h5copy_misc1.out.out.err - ) - set_tests_properties (H5COPY-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5COPY-clearall-objects PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - set (last_test "H5COPY-clearall-objects") - endif (HDF5_ENABLE_USING_MEMCHECKER) - - # "Test copying various forms of datasets" - ADD_H5_TEST (simple 0 ${HDF_FILE1}.h5 -v -s simple -d simple) - ADD_H5_TEST (chunk 0 ${HDF_FILE1}.h5 -v -s chunk -d chunk) - ADD_H5_TEST (compact 0 ${HDF_FILE1}.h5 -v -s compact -d compact) - ADD_H5_TEST (compound 0 ${HDF_FILE1}.h5 -v -s compound -d compound) - ADD_H5_TEST (compressed 0 ${HDF_FILE1}.h5 -v -s compressed -d compressed) - ADD_H5_TEST (named_vl 0 ${HDF_FILE1}.h5 -v -s named_vl -d named_vl) - ADD_H5_TEST (nested_vl 0 ${HDF_FILE1}.h5 -v -s nested_vl -d nested_vl) - - # "Test copying dataset within group in source file to root of destination" - ADD_H5_TEST (simple_top 0 ${HDF_FILE1}.h5 -v -s grp_dsets/simple -d simple_top) - - # "Test copying & renaming dataset" - ADD_H5_TEST (dsrename 0 ${HDF_FILE1}.h5 -v -s compound -d rename) - - # "Test copying empty, 'full' & 'nested' groups" - ADD_H5_TEST (grp_empty 0 ${HDF_FILE1}.h5 -v -s grp_empty -d grp_empty) - ADD_H5_TEST (grp_dsets 0 ${HDF_FILE1}.h5 -v -s grp_dsets -d grp_dsets) - ADD_H5_TEST (grp_nested 0 ${HDF_FILE1}.h5 -v -s grp_nested -d grp_nested) - - # "Test copying dataset within group in source file to group in destination" - ADD_H5_TEST2 (simple_group 0 ${HDF_FILE1}.h5 grp_dsets grp_dsets -v -s /grp_dsets/simple -d /grp_dsets/simple_group) - - # "Test copying & renaming group" - ADD_H5_TEST (grp_rename 0 ${HDF_FILE1}.h5 -v -s grp_dsets -d grp_rename) - - # "Test copying 'full' group hierarchy into group in destination file" - ADD_H5_TEST2 (grp_dsets_rename 0 ${HDF_FILE1}.h5 grp_dsets grp_rename -v -s grp_dsets -d /grp_rename/grp_dsets) - - # "Test copying objects into group hier. that doesn't exist yet in destination file" - ADD_H5_TEST (A_B1_simple 0 ${HDF_FILE1}.h5 -vp -s simple -d /A/B1/simple) - ADD_H5_TEST (A_B2_simple2 0 ${HDF_FILE1}.h5 -vp -s simple -d /A/B2/simple2) - ADD_H5_TEST (C_D_simple 0 ${HDF_FILE1}.h5 -vp -s /grp_dsets/simple -d /C/D/simple) - ADD_H5_TEST (E_F_grp_dsets 0 ${HDF_FILE1}.h5 -vp -s /grp_dsets -d /E/F/grp_dsets) - ADD_H5_TEST (G_H_grp_nested 0 ${HDF_FILE1}.h5 -vp -s /grp_nested -d /G/H/grp_nested) - -############# COPY REFERENCES ############## - - # "Test copying object and region references" - ADD_H5_F_TEST (region_ref 2 ${HDF_FILE2}.h5 ref -v -s / -d /COPY) - -############# COPY EXT LINKS ############## - - # "Test copying external link directly without -f ext" - ADD_H5_TEST (ext_link 2 ${HDF_EXT_SRC_FILE}.h5 -v -s /group_ext/extlink_dset -d /copy1_dset) - - # "Test copying external link directly with -f ext" - ADD_H5_F_TEST (ext_link_f 2 ${HDF_EXT_SRC_FILE}.h5 ext -v -s /group_ext/extlink_dset -d /copy2_dset) - - # "Test copying dangling external link (no obj) directly without -f ext" - ADD_H5_TEST (ext_dangle_noobj 2 ${HDF_EXT_SRC_FILE}.h5 -v -s /group_ext/extlink_notyet1 -d /copy_dangle1_1) - - # "Test copying dangling external link (no obj) directly with -f ext" - ADD_H5_F_TEST (ext_dangle_noobj_f 2 ${HDF_EXT_SRC_FILE}.h5 ext -v -s /group_ext/extlink_notyet1 -d /copy_dangle1_2) - - # "Test copying dangling external link (no file) directly without -f ext" - ADD_H5_TEST (ext_dangle_nofile 2 ${HDF_EXT_SRC_FILE}.h5 -v -s /group_ext/extlink_notyet2 -d /copy_dangle2_1) - - # "Test copying dangling external link (no file) directly with -f ext" - ADD_H5_F_TEST (ext_dangle_nofile_f 2 ${HDF_EXT_SRC_FILE}.h5 ext -v -s /group_ext/extlink_notyet2 -d /copy_dangle2_2) - - # "Test copying a group contains external links without -f ext" - ADD_H5_TEST (ext_link_group 2 ${HDF_EXT_SRC_FILE}.h5 -v -s /group_ext -d /copy1_group) - - # "Test copying a group contains external links with -f ext" - ADD_H5_F_TEST (ext_link_group_f 2 ${HDF_EXT_SRC_FILE}.h5 ext -v -s /group_ext -d /copy2_group) - -############# Test misc. ############## - - #----------------------------------------------------------------- - # "Test copying object into group which doesn't exist, without -p" - # - ADD_H5_CMP_TEST (h5copy_misc1 1 ${HDF_FILE1}.h5 -v -s /simple -d /g1/g2/simple) - - #------------------------------------------- - # "Test copying objects to the same file " - # - # - dataset - ADD_H5_TEST_SAME (samefile1 0 ${HDF_FILE1}.h5 /simple /simple -v -s /simple -d /simple_cp) - # - group with some datasets - ADD_H5_TEST_SAME (samefile2 0 ${HDF_FILE1}.h5 /grp_dsets /grp_dsets -v -s /grp_dsets -d /grp_dsets_cp) diff --git a/tools/h5copy/Makefile.am b/tools/h5copy/Makefile.am deleted file mode 100644 index 9d326ce..0000000 --- a/tools/h5copy/Makefile.am +++ /dev/null @@ -1,50 +0,0 @@ -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -## -## Makefile.am -## Run automake to generate a Makefile.in from this file. -# -# HDF5 Library Makefile(.in) -# - -include $(top_srcdir)/config/commence.am - -# Include src and tools/lib directories -AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib - -# Test programs and scripts -TEST_PROG=h5copygentest -TEST_SCRIPT=testh5copy.sh - -check_SCRIPTS=$(TEST_SCRIPT) -SCRIPT_DEPEND=h5copy$(EXEEXT) - -# This is our main target, the h5copy tool -bin_PROGRAMS=h5copy -check_PROGRAMS=$(TEST_PROG) - -# Add h5copy specific linker flags here -h5copy_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) - -# source file for the test file generator -h5copygentest_SOURCES=h5copygentest.c - -# All programs depend on the hdf5 and h5tools libraries -LDADD=$(LIBH5TOOLS) $(LIBHDF5) - -# Temporary files. *.h5 are generated by h5dumpgentest. They should -# copied to the testfiles/ directory if update is required. -CHECK_CLEANFILES+=*.h5 - -include $(top_srcdir)/config/conclude.am diff --git a/tools/h5copy/h5copy.c b/tools/h5copy/h5copy.c deleted file mode 100644 index 5371a21..0000000 --- a/tools/h5copy/h5copy.c +++ /dev/null @@ -1,534 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include "H5private.h" -#include "h5tools.h" -#include "h5tools_utils.h" -#include -#include - -/* Name of tool */ -#define PROGRAMNAME "h5copy" - -/* command-line options: short and long-named parameters */ -static const char *s_opts = "d:f:hi:o:ps:vVE"; -static struct long_options l_opts[] = { - { "destination", require_arg, 'd' }, - { "flag", require_arg, 'f' }, - { "help", no_arg, 'h' }, - { "input", require_arg, 'i' }, - { "output", require_arg, 'o' }, - { "parents", no_arg, 'p' }, - { "source", require_arg, 's' }, - { "verbose", no_arg, 'v' }, - { "version", no_arg, 'V' }, - { "enable-error-stack", no_arg, 'E' }, - { NULL, 0, '\0' } -}; -char *fname_src = NULL; -char *fname_dst = NULL; -char *oname_src = NULL; -char *oname_dst = NULL; -char *str_flag = NULL; - -/*------------------------------------------------------------------------- - * Function: leave - * - * Purpose: Shutdown MPI & HDF5 and call exit() - * - * Return: Does not return - * - * Programmer: Quincey Koziol - * Saturday, 31. January 2004 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -leave(int ret) -{ - if (fname_src) - HDfree(fname_src); - if (fname_dst) - HDfree(fname_dst); - if (oname_dst) - HDfree(oname_dst); - if (oname_src) - HDfree(oname_src); - if (str_flag) - HDfree(str_flag); - - h5tools_close(); - HDexit(ret); -} - - -/*------------------------------------------------------------------------- - * Function: usage - * - * Purpose: Prints a usage message on stderr and then returns. - * - * Return: void - * - * Programmer: Pedro Vicente Nunes, 7/8/2006 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -usage (void) -{ - FLUSHSTREAM(rawoutstream); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, "usage: h5copy [OPTIONS] [OBJECTS...]\n"); - PRINTVALSTREAM(rawoutstream, " OBJECTS\n"); - PRINTVALSTREAM(rawoutstream, " -i, --input input file name\n"); - PRINTVALSTREAM(rawoutstream, " -o, --output output file name\n"); - PRINTVALSTREAM(rawoutstream, " -s, --source source object name\n"); - PRINTVALSTREAM(rawoutstream, " -d, --destination destination object name\n"); - PRINTVALSTREAM(rawoutstream, " OPTIONS\n"); - PRINTVALSTREAM(rawoutstream, " -h, --help Print a usage message and exit\n"); - PRINTVALSTREAM(rawoutstream, " -p, --parents No error if existing, make parent groups as needed\n"); - PRINTVALSTREAM(rawoutstream, " -v, --verbose Print information about OBJECTS and OPTIONS\n"); - PRINTVALSTREAM(rawoutstream, " -V, --version Print version number and exit\n"); - PRINTVALSTREAM(rawoutstream, " -f, --flag Flag type\n\n"); - PRINTVALSTREAM(rawoutstream, " Flag type is one of the following strings:\n\n"); - PRINTVALSTREAM(rawoutstream, " shallow Copy only immediate members for groups\n\n"); - PRINTVALSTREAM(rawoutstream, " soft Expand soft links into new objects\n\n"); - PRINTVALSTREAM(rawoutstream, " ext Expand external links into new objects\n\n"); - PRINTVALSTREAM(rawoutstream, " ref Copy references and any referenced objects, i.e., objects\n"); - PRINTVALSTREAM(rawoutstream, " that the references point to.\n"); - PRINTVALSTREAM(rawoutstream, " Referenced objects are copied in addition to the objects\n"); - PRINTVALSTREAM(rawoutstream, " specified on the command line and reference datasets are\n"); - PRINTVALSTREAM(rawoutstream, " populated with correct reference values. Copies of referenced\n"); - PRINTVALSTREAM(rawoutstream, " datasets outside the copy range specified on the command line\n"); - PRINTVALSTREAM(rawoutstream, " will normally have a different name from the original.\n"); - PRINTVALSTREAM(rawoutstream, " (Default:Without this option, reference value(s) in any\n"); - PRINTVALSTREAM(rawoutstream, " reference datasets are set to NULL and referenced objects are\n"); - PRINTVALSTREAM(rawoutstream, " not copied unless they are otherwise within the copy range\n"); - PRINTVALSTREAM(rawoutstream, " specified on the command line.)\n\n"); - PRINTVALSTREAM(rawoutstream, " noattr Copy object without copying attributes\n\n"); - PRINTVALSTREAM(rawoutstream, " allflags Switches all flags from the default to the non-default setting\n\n"); - PRINTVALSTREAM(rawoutstream, " These flag types correspond to the following API symbols\n\n"); - PRINTVALSTREAM(rawoutstream, " H5O_COPY_SHALLOW_HIERARCHY_FLAG\n"); - PRINTVALSTREAM(rawoutstream, " H5O_COPY_EXPAND_SOFT_LINK_FLAG\n"); - PRINTVALSTREAM(rawoutstream, " H5O_COPY_EXPAND_EXT_LINK_FLAG\n"); - PRINTVALSTREAM(rawoutstream, " H5O_COPY_EXPAND_REFERENCE_FLAG\n"); - PRINTVALSTREAM(rawoutstream, " H5O_COPY_WITHOUT_ATTR_FLAG\n"); - PRINTVALSTREAM(rawoutstream, " H5O_COPY_ALL\n"); -} - - - -/*------------------------------------------------------------------------- - * Function: parse_flag - * - * Purpose: read the flag -f STRING - * - * STRING is one of the following (API symbol and description) - * - * shallow H5O_COPY_SHALLOW_HIERARCHY_FLAG: Copy only immediate members for groups - * soft H5O_COPY_EXPAND_SOFT_LINK_FLAG: Expand soft links into new objects - * ext H5O_COPY_EXPAND_EXT_LINK_FLAG: Expand external links into new objects - * ref H5O_COPY_EXPAND_OBJ_REFERENCE_FLAG: Copy objects that are pointed by references - * noattr H5O_COPY_WITHOUT_ATTR_FLAG Copy object without copying attributes - * allflags Switches all flags from the default to the non-default setting - * - * Return: Success: SUCCEED - * Failure: FAIL - * - * Programmer: Pedro Vicente Nunes, 7/8/2006 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ - - -static int parse_flag(const char* s_flag, unsigned *flag) -{ - unsigned fla=0; - - if (HDstrcmp(s_flag,"shallow")==0) - { - fla = H5O_COPY_SHALLOW_HIERARCHY_FLAG; - } - else if (HDstrcmp(s_flag,"soft")==0) - { - fla = H5O_COPY_EXPAND_SOFT_LINK_FLAG; - } - else if (HDstrcmp(s_flag,"ext")==0) - { - fla = H5O_COPY_EXPAND_EXT_LINK_FLAG; - } - else if (HDstrcmp(s_flag,"ref")==0) - { - fla = H5O_COPY_EXPAND_REFERENCE_FLAG; - } - else if (HDstrcmp(s_flag,"noattr")==0) - { - fla = H5O_COPY_WITHOUT_ATTR_FLAG; - } - else if (HDstrcmp(s_flag,"allflags")==0) - { - fla = H5O_COPY_ALL; - } - else if (HDstrcmp(s_flag,"nullmsg")==0) - { - fla = H5O_COPY_PRESERVE_NULL_FLAG; - } - else - { - error_msg("Error in input flag\n"); - return -1; - } - - *flag = (*flag) | fla; - - return 0; -} - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: main program - * - * Programmer: Pedro Vicente Nunes - * - * Modifications: - * - *------------------------------------------------------------------------- - */ - -int -main (int argc, const char *argv[]) -{ - int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */ - H5E_auto2_t func; - H5E_auto2_t tools_func; - void *edata; - void *tools_edata; - hid_t fid_src = -1; - hid_t fid_dst = -1; - unsigned flag = 0; - unsigned verbose = 0; - unsigned parents = 0; - hid_t ocpl_id = (-1); /* Object copy property list */ - hid_t lcpl_id = (-1); /* Link creation property list */ - int opt; - int li_ret; - h5tool_link_info_t linkinfo; - - h5tools_setprogname(PROGRAMNAME); - h5tools_setstatus(EXIT_SUCCESS); - - /* Disable error reporting */ - H5Eget_auto2(H5E_DEFAULT, &func, &edata); - H5Eset_auto2(H5E_DEFAULT, NULL, NULL); - - /* Initialize h5tools lib */ - h5tools_init(); - - /* Disable tools error reporting */ - H5Eget_auto2(H5tools_ERR_STACK_g, &tools_func, &tools_edata); - H5Eset_auto2(H5tools_ERR_STACK_g, NULL, NULL); - - /* init linkinfo struct */ - HDmemset(&linkinfo, 0, sizeof(h5tool_link_info_t)); - - /* Check for no command line parameters */ - if(argc == 1) - { - usage(); - leave(EXIT_FAILURE); - } /* end if */ - - /* parse command line options */ - while ((opt = get_option(argc, argv, s_opts, l_opts)) != EOF) - { - switch ((char)opt) - { - case 'd': - oname_dst = HDstrdup(opt_arg); - break; - - case 'f': - /* validate flag */ - if (parse_flag(opt_arg,&flag)<0) - { - usage(); - leave(EXIT_FAILURE); - } - str_flag = HDstrdup(opt_arg); - break; - - case 'h': - usage(); - leave(EXIT_SUCCESS); - break; - - case 'i': - fname_src = HDstrdup(opt_arg); - break; - - case 'o': - fname_dst = HDstrdup(opt_arg); - break; - - case 'p': - parents = 1; - break; - - case 's': - oname_src = HDstrdup(opt_arg); - break; - - case 'V': - print_version(h5tools_getprogname()); - leave(EXIT_SUCCESS); - break; - - case 'v': - verbose = 1; - break; - - case 'E': - enable_error_stack = TRUE; - break; - - default: - usage(); - leave(EXIT_FAILURE); - } - } /* end of while */ - -/*------------------------------------------------------------------------- - * check for missing file/object names - *-------------------------------------------------------------------------*/ - - if (fname_src==NULL) - { - error_msg("Input file name missing\n"); - usage(); - leave(EXIT_FAILURE); - } - - if (fname_dst==NULL) - { - error_msg("Output file name missing\n"); - usage(); - leave(EXIT_FAILURE); - } - - if (oname_src==NULL) - { - error_msg("Source object name missing\n"); - usage(); - leave(EXIT_FAILURE); - } - - if (oname_dst==NULL) - { - error_msg("Destination object name missing\n"); - usage(); - leave(EXIT_FAILURE); - } - - if (enable_error_stack) { - H5Eset_auto2(H5E_DEFAULT, func, edata); - H5Eset_auto2(H5tools_ERR_STACK_g, tools_func, tools_edata); - } - - /*------------------------------------------------------------------------- - * open output file - *-------------------------------------------------------------------------*/ - - /* Attempt to open an existing HDF5 file first. Need to open the dst file - before the src file just in case that the dst and src are the same file - */ - fid_dst = h5tools_fopen(fname_dst, H5F_ACC_RDWR, H5P_DEFAULT, NULL, NULL, 0); - - /*------------------------------------------------------------------------- - * open input file - *-------------------------------------------------------------------------*/ - - fid_src = h5tools_fopen(fname_src, H5F_ACC_RDONLY, H5P_DEFAULT, NULL, NULL, 0); - - /*------------------------------------------------------------------------- - * test for error in opening input file - *-------------------------------------------------------------------------*/ - if (fid_src==-1) - { - error_msg("Could not open input file <%s>...Exiting\n", fname_src); - leave(EXIT_FAILURE); - } - - - /*------------------------------------------------------------------------- - * create an output file when failed to open it - *-------------------------------------------------------------------------*/ - - /* If we couldn't open an existing file, try creating file */ - /* (use "EXCL" instead of "TRUNC", so we don't blow away existing non-HDF5 file) */ - if(fid_dst < 0) - fid_dst = H5Fcreate(fname_dst, H5F_ACC_EXCL, H5P_DEFAULT, H5P_DEFAULT); - - /*------------------------------------------------------------------------- - * test for error in opening output file - *-------------------------------------------------------------------------*/ - if (fid_dst==-1) - { - error_msg("Could not open output file <%s>...Exiting\n", fname_dst); - leave(EXIT_FAILURE); - } - - /*------------------------------------------------------------------------- - * print some info - *-------------------------------------------------------------------------*/ - - if (verbose) - { - printf("Copying file <%s> and object <%s> to file <%s> and object <%s>\n", - fname_src, oname_src, fname_dst, oname_dst); - if (flag) { - HDassert(str_flag); - printf("Using %s flag\n", str_flag); - } - } - - - /*------------------------------------------------------------------------- - * create property lists for copy - *-------------------------------------------------------------------------*/ - - /* create property to pass copy options */ - if ( (ocpl_id = H5Pcreate(H5P_OBJECT_COPY)) < 0) - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Pcreate failed"); - - /* set options for object copy */ - if (flag) - { - if ( H5Pset_copy_object(ocpl_id, flag) < 0) - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Pset_copy_object failed"); - } - - /* Create link creation property list */ - if((lcpl_id = H5Pcreate(H5P_LINK_CREATE)) < 0) { - error_msg("Could not create link creation property list\n"); - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Pcreate failed"); - } /* end if */ - - /* Check for creating intermediate groups */ - if(parents) { - /* Set the intermediate group creation property */ - if(H5Pset_create_intermediate_group(lcpl_id, 1) < 0) { - error_msg("Could not set property for creating parent groups\n"); - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Pset_create_intermediate_group failed"); - } /* end if */ - - /* Display some output if requested */ - if(verbose) - printf("%s: Creating parent groups\n", h5tools_getprogname()); - } /* end if */ - else /* error, if parent groups doesn't already exist in destination file */ - { - size_t i, len; - - len = HDstrlen(oname_dst); - - /* check if all the parents groups exist. skip root group */ - for (i = 1; i < len; i++) - { - if ('/'==oname_dst[i]) - { - char *str_ptr; - - str_ptr = (char *)HDcalloc(i + 1, sizeof(char)); - HDstrncpy(str_ptr, oname_dst, i); - str_ptr[i]='\0'; - if (H5Lexists(fid_dst, str_ptr, H5P_DEFAULT) <= 0) - { - error_msg("group <%s> doesn't exist. Use -p to create parent groups.\n", str_ptr); - HDfree(str_ptr); - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Lexists failed"); - } - HDfree(str_ptr); - } - } - } - - /*------------------------------------------------------------------------- - * do the copy - *-------------------------------------------------------------------------*/ - - if(verbose) - linkinfo.opt.msg_mode = 1; - - li_ret = H5tools_get_symlink_info(fid_src, oname_src, &linkinfo, 1); - if (li_ret == 0) /* dangling link */ - { - if(H5Lcopy(fid_src, oname_src, - fid_dst, oname_dst, - H5P_DEFAULT, H5P_DEFAULT) < 0) - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Lcopy failed"); - } - else /* valid link */ - { - if (H5Ocopy(fid_src, /* Source file or group identifier */ - oname_src, /* Name of the source object to be copied */ - fid_dst, /* Destination file or group identifier */ - oname_dst, /* Name of the destination object */ - ocpl_id, /* Object copy property list */ - lcpl_id)<0) /* Link creation property list */ - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Ocopy failed"); - } - - /* free link info path */ - if (linkinfo.trg_path) - HDfree(linkinfo.trg_path); - - /* close propertis */ - if(H5Pclose(ocpl_id)<0) - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Pclose failed"); - if(H5Pclose(lcpl_id)<0) - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Pclose failed"); - - /* close files */ - if (H5Fclose(fid_src)<0) - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Fclose failed"); - if (H5Fclose(fid_dst)<0) - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Fclose failed"); - - leave(EXIT_SUCCESS); - -done: - printf("Error in copy...Exiting\n"); - - /* free link info path */ - if (linkinfo.trg_path) - HDfree(linkinfo.trg_path); - - H5E_BEGIN_TRY { - H5Pclose(ocpl_id); - H5Pclose(lcpl_id); - H5Fclose(fid_src); - H5Fclose(fid_dst); - } H5E_END_TRY; - - leave(ret_value); -} - diff --git a/tools/h5copy/h5copygentest.c b/tools/h5copy/h5copygentest.c deleted file mode 100644 index 7669702..0000000 --- a/tools/h5copy/h5copygentest.c +++ /dev/null @@ -1,1004 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * Generate the binary hdf5 file for the h5copy tests - */ -#include -#include "hdf5.h" -#include "H5private.h" - -/* HDF file names */ -#define HDF_FILE1 "h5copytst.h5" -#define HDF_FILE1_NEW "h5copytst_new.h5" -#define HDF_FILE2 "h5copy_ref.h5" -#define HDF_EXT_SRC_FILE "h5copy_extlinks_src.h5" -#define HDF_EXT_TRG_FILE "h5copy_extlinks_trg.h5" - -/* objects in HDF_FILE1 */ -#define DATASET_SIMPLE "simple" -#define DATASET_CHUNK "chunk" -#define DATASET_COMPACT "compact" -#define DATASET_COMPOUND "compound" -#define DATASET_COMPRESSED "compressed" -#define DATASET_NAMED_VL "named_vl" -#define DATASET_NESTED_VL "nested_vl" -#define DATASET_ATTR "dset_attr" -#define ATTR "attr" -#define GROUP_EMPTY "grp_empty" -#define GROUP_DATASETS "grp_dsets" -#define GROUP_NESTED "grp_nested" -#define GROUP_ATTR "grp_attr" - -/* Obj reference */ -#define OBJ_REF_DS "Dset1" -#define OBJ_REF_GRP "Group" -/* Region reference */ -#define REG_REF_DS1 "Dset_REGREF" -#define REG_REF_DS2 "Dset2" - - -/*------------------------------------------------------------------------- - * Function: gent_simple - * - * Purpose: Generate a simple dataset in LOC_ID - * - *------------------------------------------------------------------------- - */ -static void gent_simple(hid_t loc_id) -{ - hid_t sid, did; - hsize_t dims[1] = {6}; - int buf[6] = {1,2,3,4,5,6}; - - /* create dataspace */ - sid = H5Screate_simple(1, dims, NULL); - - /* create dataset */ - did = H5Dcreate2(loc_id, DATASET_SIMPLE, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* write */ - H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - - /* close */ - H5Sclose(sid); - H5Dclose(did); -} - -/*------------------------------------------------------------------------- - * Function: gent_chunked - * - * Purpose: Generate a chunked dataset in LOC_ID - * - *------------------------------------------------------------------------- - */ -static void gent_chunked(hid_t loc_id) -{ - hid_t sid, did, pid; - hsize_t dims[1] = {6}; - hsize_t chunk_dims[1] = {2}; - int buf[6] = {1,2,3,4,5,6}; - - /* create dataspace */ - sid = H5Screate_simple(1, dims, NULL); - - /* create property plist */ - pid = H5Pcreate(H5P_DATASET_CREATE); - H5Pset_chunk(pid, 1, chunk_dims); - - /* create dataset */ - did = H5Dcreate2(loc_id, DATASET_CHUNK, H5T_NATIVE_INT, sid, H5P_DEFAULT, pid, H5P_DEFAULT); - - /* write */ - H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - - /* close */ - H5Sclose(sid); - H5Dclose(did); - H5Pclose(pid); -} - - -/*------------------------------------------------------------------------- - * Function: gent_compact - * - * Purpose: Generate a compact dataset in LOC_ID - * - *------------------------------------------------------------------------- - */ -static void gent_compact(hid_t loc_id) -{ - hid_t sid, did, pid; - hsize_t dims[1] = {6}; - int buf[6] = {1,2,3,4,5,6}; - - /* create dataspace */ - sid = H5Screate_simple(1, dims, NULL); - - /* create property plist */ - pid = H5Pcreate(H5P_DATASET_CREATE); - H5Pset_layout (pid,H5D_COMPACT); - - /* create dataset */ - did = H5Dcreate2(loc_id, DATASET_COMPACT, H5T_NATIVE_INT, sid, H5P_DEFAULT, pid, H5P_DEFAULT); - - /* write */ - H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - - /* close */ - H5Sclose(sid); - H5Dclose(did); - H5Pclose(pid); -} - - -/*------------------------------------------------------------------------- - * Function: gent_compound - * - * Purpose: Generate a compound dataset in LOC_ID - * - *------------------------------------------------------------------------- - */ -static void gent_compound(hid_t loc_id) -{ - typedef struct s_t - { - char str1[20]; - char str2[20]; - } s_t; - hid_t sid, did, tid_c, tid_s; - hsize_t dims[1] = {2}; - s_t buf[2] = {{"str1", "str2"}, {"str3", "str4"}}; - - /* create dataspace */ - sid = H5Screate_simple(1, dims, NULL); - - /* create a compound type */ - tid_c = H5Tcreate(H5T_COMPOUND, sizeof(s_t)); - tid_s = H5Tcopy(H5T_C_S1); - H5Tset_size(tid_s, 20); - - H5Tinsert(tid_c, "str1", HOFFSET(s_t,str1), tid_s); - H5Tinsert(tid_c, "str2", HOFFSET(s_t,str2), tid_s); - - /* create dataset */ - did = H5Dcreate2(loc_id, DATASET_COMPOUND, tid_c, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* write */ - H5Dwrite(did, tid_c, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - - /* close */ - H5Sclose(sid); - H5Dclose(did); - H5Tclose(tid_c); - H5Tclose(tid_s); -} - -/*------------------------------------------------------------------------- - * Function: gent_compressed - * - * Purpose: Generate a compressed dataset in LOC_ID - * - *------------------------------------------------------------------------- - */ -static void gent_compressed(hid_t loc_id) -{ - hid_t sid, did, pid; - hsize_t dims[1] = {6}; - hsize_t chunk_dims[1] = {2}; - int buf[6] = {1,2,3,4,5,6}; - - /* create dataspace */ - sid = H5Screate_simple(1, dims, NULL); - - /* create property plist for chunk*/ - pid = H5Pcreate(H5P_DATASET_CREATE); - H5Pset_chunk(pid, 1, chunk_dims); - - /* set the deflate filter */ -#if defined (H5_HAVE_FILTER_DEFLATE) - H5Pset_deflate(pid, 1); -#endif - - /* create dataset */ - did = H5Dcreate2(loc_id, DATASET_COMPRESSED, H5T_NATIVE_INT, sid, H5P_DEFAULT, pid, H5P_DEFAULT); - - /* write */ - H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - - /* close */ - H5Sclose(sid); - H5Dclose(did); - H5Pclose(pid); -} - - -/*------------------------------------------------------------------------- - * Function: gent_named_vl - * - * Purpose: Generate a variable lenght named datatype for a dataset in - LOC_ID - * - *------------------------------------------------------------------------- - */ -static void gent_named_vl(hid_t loc_id) -{ - hid_t sid, did, tid; - hsize_t dims[1] = {2}; - hvl_t buf[2]; - - /* allocate and initialize VL dataset to write */ - buf[0].len = 1; - buf[0].p = HDmalloc( 1 * sizeof(int)); - ((int *)buf[0].p)[0]=1; - buf[1].len = 2; - buf[1].p = HDmalloc( 2 * sizeof(int)); - ((int *)buf[1].p)[0]=2; - ((int *)buf[1].p)[1]=3; - - /* create dataspace */ - sid = H5Screate_simple(1, dims, NULL); - - /* create datatype */ - tid = H5Tvlen_create(H5T_NATIVE_INT); - - /* create named datatype */ - H5Tcommit2(loc_id, "vl", tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* create dataset */ - did = H5Dcreate2(loc_id, DATASET_NAMED_VL, tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* write */ - H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - - /* close */ - H5Dvlen_reclaim(tid,sid,H5P_DEFAULT,buf); - H5Sclose(sid); - H5Dclose(did); - H5Tclose(tid); -} - - -/*------------------------------------------------------------------------- - * Function: gent_nested_vl - * - * Purpose: Generate a nested variable length dataset in LOC_ID - * - *------------------------------------------------------------------------- - */ -static void gent_nested_vl(hid_t loc_id) -{ - hid_t sid, did, tid1, tid2; - hsize_t dims[1] = {2}; - hvl_t buf[2]; - hvl_t *tvl; - - /* allocate and initialize VL dataset to write */ - buf[0].len = 1; - buf[0].p = HDmalloc( 1 * sizeof(hvl_t)); - tvl = (hvl_t *)buf[0].p; - tvl->p = HDmalloc( 1 * sizeof(int) ); - tvl->len = 1; - ((int *)tvl->p)[0]=1; - - buf[1].len = 1; - buf[1].p = HDmalloc( 1 * sizeof(hvl_t)); - tvl = (hvl_t *)buf[1].p; - tvl->p = HDmalloc( 2 * sizeof(int) ); - tvl->len = 2; - ((int *)tvl->p)[0]=2; - ((int *)tvl->p)[1]=3; - - /* create dataspace */ - sid = H5Screate_simple(1, dims, NULL); - - /* create datatype */ - tid1 = H5Tvlen_create(H5T_NATIVE_INT); - - /* create nested VL datatype */ - tid2 = H5Tvlen_create(tid1); - - /* create dataset */ - did = H5Dcreate2(loc_id, DATASET_NESTED_VL, tid2, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* write */ - H5Dwrite(did, tid2, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - - /* close */ - H5Dvlen_reclaim(tid2,sid,H5P_DEFAULT,buf); - H5Sclose(sid); - H5Dclose(did); - H5Tclose(tid1); - H5Tclose(tid2); -} - - -/*------------------------------------------------------------------------- - * Function: gent_att_compound_vlstr - * - * Purpose: Generate a dataset and a group. - * Both has an attribute with a compound datatype consisting - * of a variable length string - * - *------------------------------------------------------------------------- - */ -static void gent_att_compound_vlstr(hid_t loc_id) -{ - typedef struct { /* Compound structure for the attribute */ - int i; - char *v; - } s1; - hsize_t dim[1] = {1}; /* Dimension size */ - hid_t sid = -1; /* Dataspace ID */ - hid_t tid = -1; /* Datatype ID */ - hid_t aid = -1; /* Attribute ID */ - hid_t did = -1; /* Dataset ID */ - hid_t gid = -1; /* Group ID */ - hid_t vl_str_tid = -1; /* Variable length datatype ID */ - hid_t cmpd_tid = -1; /* Compound datatype ID */ - hid_t null_sid = -1; /* Null dataspace ID */ - s1 buf; /* Buffer */ - - buf.i = 9; - buf.v = "ThisIsAString"; - - /* Create an integer datatype */ - tid = H5Tcopy(H5T_NATIVE_INT); - - /* Create a variable length string */ - vl_str_tid = H5Tcopy(H5T_C_S1); - H5Tset_size(vl_str_tid, H5T_VARIABLE); - - /* Create a compound datatype with a variable length string and an integer */ - cmpd_tid = H5Tcreate(H5T_COMPOUND, sizeof(s1)); - H5Tinsert(cmpd_tid, "i", HOFFSET(s1, i), tid); - H5Tinsert(cmpd_tid, "v", HOFFSET(s1, v), vl_str_tid); - - /* Create a dataset */ - null_sid = H5Screate(H5S_NULL); - did = H5Dcreate2(loc_id, DATASET_ATTR, H5T_NATIVE_INT, null_sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Attach an attribute with the compound datatype to the dataset */ - sid = H5Screate_simple(1, dim, dim); - aid = H5Acreate2(did, ATTR, cmpd_tid, sid, H5P_DEFAULT, H5P_DEFAULT); - - /* Write the attribute */ - buf.i = 9; - buf.v = "ThisIsAString"; - H5Awrite(aid, cmpd_tid, &buf); - - /* Close the dataset and its attribute */ - H5Dclose(did); - H5Aclose(aid); - - /* Create a group */ - gid = H5Gcreate2(loc_id, GROUP_ATTR, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Attach an attribute with the compound datatype to the group */ - aid = H5Acreate2(gid, ATTR, cmpd_tid, sid, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(aid, cmpd_tid, &buf); - - /* Close the group and its attribute */ - H5Aclose(aid); - H5Gclose(gid); - - /* Close dataspaces */ - H5Sclose(sid); - H5Sclose(null_sid); - - /* Close datatypes */ - H5Tclose(tid); - H5Tclose(vl_str_tid); - H5Tclose(cmpd_tid); - -} /* gen_att_compound_vlstr() */ - -/*------------------------------------------------------------------------- - * Function: gent_datasets - * - * Purpose: Generate all datasets in a particular location - * - *------------------------------------------------------------------------- - */ -static void gent_datasets(hid_t loc_id) -{ - gent_simple(loc_id); - gent_chunked(loc_id); - gent_compact(loc_id); - gent_compound(loc_id); - gent_compressed(loc_id); - gent_named_vl(loc_id); - gent_nested_vl(loc_id); -} - -/*------------------------------------------------------------------------- - * Function: gent_empty_group - * - * Purpose: Generate an empty group in a location - * - *------------------------------------------------------------------------- - */ -static void gent_empty_group(hid_t loc_id) -{ - hid_t gid; - - /* Create group in location */ - gid = H5Gcreate2(loc_id, GROUP_EMPTY, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Release resources */ - H5Gclose(gid); -} - -/*------------------------------------------------------------------------- - * Function: gent_nested_datasets - * - * Purpose: Generate a group in a location and populate it with the "standard" - * datasets - * - *------------------------------------------------------------------------- - */ -static void gent_nested_datasets(hid_t loc_id) -{ - hid_t gid; - - /* Create group in location */ - gid = H5Gcreate2(loc_id, GROUP_DATASETS, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Add datasets to group created */ - gent_datasets(gid); - - /* Release resources */ - H5Gclose(gid); -} - -/*------------------------------------------------------------------------- - * Function: gent_nested_group - * - * Purpose: Generate a group in a location and populate it with another group - * containing the "standard" datasets - * - *------------------------------------------------------------------------- - */ -static void gent_nested_group(hid_t loc_id) -{ - hid_t gid; - - /* Create group in location */ - gid = H5Gcreate2(loc_id, GROUP_NESTED, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Add datasets to group created */ - gent_nested_datasets(gid); - - /* Release resources */ - H5Gclose(gid); -} - - -/*------------------------------------------------------------------------- - * Function: gen_obj_ref - * - * Purpose: Generate object references to dataset and group - * - * Programmer: Jonathan Kim (Feb 23, 2010) - *------------------------------------------------------------------------*/ -static herr_t gen_obj_ref(hid_t loc_id) -{ - hid_t sid=0, oid=0; - hsize_t dims1[1]={3}; - hsize_t dims2[1]={2}; - int data[3] = {10,20,30}; - int status; - - /*--------------------- - * create obj references to the previously created objects. - * Passing -1 as reference is an object.*/ - hobj_ref_t or_data[2]; /* write buffer */ - herr_t ret = SUCCEED; - - /*-------------- - * add dataset */ - sid = H5Screate_simple(1, dims1, NULL); - if (sid < 0) - { - fprintf(stderr, "Error: %s %d> H5Screate_simple failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - oid = H5Dcreate2 (loc_id, OBJ_REF_DS, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (oid < 0) - { - fprintf(stderr, "Error: %s %d> H5Dcreate2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - status = H5Dwrite(oid, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Dwrite failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - H5Dclose(oid); - H5Sclose(sid); - - /*-------------- - * add group */ - oid = H5Gcreate2 (loc_id, OBJ_REF_GRP, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (oid < 0) - { - fprintf(stderr, "Error: %s %d> H5Gcreate2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - H5Gclose(oid); - - status = H5Rcreate (&or_data[0], loc_id, OBJ_REF_DS, H5R_OBJECT, (hid_t)-1); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - status = H5Rcreate (&or_data[1], loc_id, OBJ_REF_GRP, H5R_OBJECT, (hid_t)-1); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - sid = H5Screate_simple (1, dims2, NULL); - if (sid < 0) - { - fprintf(stderr, "Error: %s %d> H5Screate_simple failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - oid = H5Dcreate2 (loc_id, "Dset_OBJREF", H5T_STD_REF_OBJ, sid, H5P_DEFAULT,H5P_DEFAULT,H5P_DEFAULT); - if (oid < 0) - { - fprintf(stderr, "Error: %s %d> H5Dcreate2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - status = H5Dwrite(oid, H5T_STD_REF_OBJ, H5S_ALL, H5S_ALL, H5P_DEFAULT, or_data); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Dwrite failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - -out: - if(oid > 0) - H5Dclose(oid); - if(sid > 0) - H5Sclose(sid); - - return ret; -} - - -/*------------------------------------------------------------------------- - * Function: gen_region_ref - * - * Purpose: Generate dataset region references - * - * Programmer: Jonathan Kim (Feb 23, 2010) - *------------------------------------------------------------------------*/ -static herr_t gen_region_ref(hid_t loc_id) -{ - hid_t sid=0, oid1=0, oid2=0; - int status; - herr_t ret = SUCCEED; - char data[3][16] = {"The quick brown", "fox jumps over ", "the 5 lazy dogs"}; - hsize_t dims2[2] = {3,16}; - hsize_t coords[4][2] = { {0,1}, {2,11}, {1,0}, {2,4} }; - hdset_reg_ref_t rr_data[2]; - hsize_t start[2] = {0,0}; - hsize_t stride[2] = {2,11}; - hsize_t count[2] = {2,2}; - hsize_t block[2] = {1,3}; - hsize_t dims1[1] = {2}; - - sid = H5Screate_simple (2, dims2, NULL); - if (sid < 0) - { - fprintf(stderr, "Error: %s %d> H5Screate_simple failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* create normal dataset which is refered */ - oid2 = H5Dcreate2 (loc_id, REG_REF_DS2, H5T_STD_I8LE, sid, H5P_DEFAULT,H5P_DEFAULT,H5P_DEFAULT); - if (oid2 < 0) - { - fprintf(stderr, "Error: %s %d> H5Dcreate2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* write values to dataset */ - status = H5Dwrite (oid2, H5T_NATIVE_CHAR, H5S_ALL, H5S_ALL, H5P_DEFAULT, data); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Dwrite failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* select elements space for reference */ - status = H5Sselect_elements (sid, H5S_SELECT_SET, 4, coords[0]); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Sselect_elements failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* create region reference from elements space */ - status = H5Rcreate (&rr_data[0], loc_id, REG_REF_DS2, H5R_DATASET_REGION, sid); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* select hyperslab space for reference */ - status = H5Sselect_hyperslab (sid, H5S_SELECT_SET, start, stride, count, block); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Sselect_hyperslab failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* create region reference from hyperslab space */ - status = H5Rcreate (&rr_data[1], loc_id, REG_REF_DS2, H5R_DATASET_REGION, sid); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - H5Sclose (sid); - - /* Create dataspace. */ - sid = H5Screate_simple (1, dims1, NULL); - if (sid < 0) - { - fprintf(stderr, "Error: %s %d> H5Screate_simple failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* create region reference dataset */ - oid1 = H5Dcreate2 (loc_id, REG_REF_DS1, H5T_STD_REF_DSETREG, sid, H5P_DEFAULT,H5P_DEFAULT,H5P_DEFAULT); - if (oid1 < 0) - { - fprintf(stderr, "Error: %s %d> H5Dcreate2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* write data as region references */ - status = H5Dwrite (oid1, H5T_STD_REF_DSETREG, H5S_ALL, H5S_ALL, H5P_DEFAULT, rr_data); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Dwrite failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - -out: - if (oid1 > 0) - H5Dclose (oid1); - if (oid2 > 0) - H5Dclose (oid2); - if (sid > 0) - H5Sclose (sid); - - return ret; -} - -/*------------------------------------------------------------------------- - * Function: Test_Obj_Copy - * - * Purpose: Testing with various objects - * - *------------------------------------------------------------------------*/ -static void Test_Obj_Copy(void) -{ - hid_t fid = -1; /* File id */ - hid_t fapl_new = (-1); /* File access property id */ - unsigned new_format; /* New format or old format */ - - if((fapl_new = H5Pcreate(H5P_FILE_ACCESS)) < 0) { - fprintf(stderr, "Error: H5Pcreate failed.\n"); - goto out; - } - if(H5Pset_libver_bounds(fapl_new, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0) { - fprintf(stderr, "Error: H5Pset_libver_bounds failed.\n"); - goto out; - } - - /* Test with old & new format groups */ - for(new_format = FALSE; new_format <= TRUE; new_format++) { - - /* Set the FAPL for the type of format */ - /* Create source file */ - if(new_format) - fid = H5Fcreate(HDF_FILE1, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_new); - else - fid = H5Fcreate(HDF_FILE1_NEW, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if(fid < 0) { - fprintf(stderr, "Error: H5Fcreate failed.\n"); - goto out; - } - - gent_datasets(fid); - gent_empty_group(fid); - gent_nested_datasets(fid); - gent_nested_group(fid); - gent_att_compound_vlstr(fid); - - H5Fclose(fid); - fid = (-1); - } /* end for */ - -out: - /*----------------------------------------------------------------------- - * Close - *------------------------------------------------------------------------*/ - if(fid > 0) - H5Fclose(fid); - if(fapl_new > 0) - H5Pclose(fapl_new); -} - -/*------------------------------------------------------------------------- - * Function: Test_Ref_Copy - * - * Purpose: Testing with various references - * - *------------------------------------------------------------------------*/ -static void Test_Ref_Copy(void) -{ - hid_t fid=0; - herr_t status; - - fid = H5Fcreate (HDF_FILE2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", HDF_FILE2); - goto out; - } - - /* add object reference */ - status = gen_obj_ref(fid); - if (status < 0) - fprintf(stderr, "Failed to generate object reference.\n"); - - /* add region reference */ - status = gen_region_ref(fid); - if (status < 0) - fprintf(stderr, "Failed to generate region reference.\n"); - -out: - /*----------------------------------------------------------------------- - * Close - *------------------------------------------------------------------------*/ - if(fid > 0) - H5Fclose(fid); -} - -/*------------------------------------------------------------------------- - * Function: gen_extlink_trg - * - * Purpose: generate target external link objs - * - * Programmer: Jonathan Kim (March 03, 2010) - *------------------------------------------------------------------------*/ -static herr_t gen_extlink_trg(hid_t loc_id) -{ - hid_t gid=0, tid=0; - int status; - herr_t ret = SUCCEED; - - /*----------------------------------------------------------------------- - * Groups - *------------------------------------------------------------------------*/ - /*-------------- - * target file */ - gid = H5Gcreate2(loc_id, "group", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid < 0) - { - fprintf(stderr, "Error: %s %d> H5Gcreate2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /*-------------- - * add dataset */ - gent_simple(loc_id); - - /*-------------------- - * add named datatype - */ - tid = H5Tcopy(H5T_NATIVE_INT); - status = H5Tcommit2(loc_id, "datatype", tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Tcommit2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - -out: - if(gid > 0) - H5Gclose(gid); - if(tid > 0) - H5Tclose(tid); - - return ret; -} - -/*------------------------------------------------------------------------- - * Function: gen_extlink_src - * - * Purpose: generate source external link objs - * - * Programmer: Jonathan Kim (March 03, 2010) - *------------------------------------------------------------------------*/ -static herr_t gen_extlink_src(hid_t loc_id) -{ - hid_t gid=0; - int status; - herr_t ret = SUCCEED; - - /*----------------------------------------------------------------------- - * Groups - *------------------------------------------------------------------------*/ - gid = H5Gcreate2(loc_id, "/group_ext", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid < 0) - { - fprintf(stderr, "Error: %s %d> H5Gcreate2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * External links - *------------------------------------------------------------------------*/ - /* link to dataset */ - status = H5Lcreate_external(HDF_EXT_TRG_FILE, "/simple", gid, "extlink_dset", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Lcreate_external failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* link to group */ - status = H5Lcreate_external(HDF_EXT_TRG_FILE, "/group", gid, "extlink_grp", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Lcreate_external failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* link to datatype */ - status = H5Lcreate_external(HDF_EXT_TRG_FILE, "/datatype", gid, "extlink_datatype", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Lcreate_external failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* dangling link - no obj*/ - status = H5Lcreate_external(HDF_EXT_TRG_FILE, "notyet", gid, "extlink_notyet1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Lcreate_external failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* dangling link - no file */ - status = H5Lcreate_external("notyet_file.h5", "notyet", gid, "extlink_notyet2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Lcreate_external failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - -out: - if(gid > 0) - H5Gclose(gid); - - return ret; -} - -/*------------------------------------------------------------------------- - * Function: Test_Extlink_Copy - * - * Purpose: gerenate external link files - * - *------------------------------------------------------------------------*/ -static void Test_Extlink_Copy(void) -{ - hid_t fid1=0; - hid_t fid2=0; - herr_t status; - - fid1 = H5Fcreate (HDF_EXT_SRC_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", HDF_EXT_SRC_FILE); - goto out; - } - - fid2 = H5Fcreate (HDF_EXT_TRG_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid2 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", HDF_EXT_TRG_FILE); - goto out; - } - - /* add links to source external link file */ - status = gen_extlink_src(fid1); - if (status < 0) - fprintf(stderr, "Error: %s> gen_extlink_src failed.\n", HDF_EXT_SRC_FILE); - - /* add objs to target external link file */ - status = gen_extlink_trg(fid2); - if (status < 0) - fprintf(stderr, "Error: %s> gen_extlink_trg failed.\n", HDF_EXT_TRG_FILE); - -out: - /*----------------------------------------------------------------------- - * Close - *------------------------------------------------------------------------*/ - if(fid1 > 0) - H5Fclose(fid1); - if(fid2 > 0) - H5Fclose(fid2); -} - -/*------------------------------------------------------------------------- - * Function: main - * - *------------------------------------------------------------------------- - */ - -int main(void) -{ - Test_Obj_Copy(); - Test_Ref_Copy(); - Test_Extlink_Copy(); - - return 0; -} - diff --git a/tools/h5copy/testfiles/h5copy_extlinks_src.h5 b/tools/h5copy/testfiles/h5copy_extlinks_src.h5 deleted file mode 100644 index 7b8621e..0000000 Binary files a/tools/h5copy/testfiles/h5copy_extlinks_src.h5 and /dev/null differ diff --git a/tools/h5copy/testfiles/h5copy_extlinks_src.out.ls b/tools/h5copy/testfiles/h5copy_extlinks_src.out.ls deleted file mode 100644 index 0134714..0000000 --- a/tools/h5copy/testfiles/h5copy_extlinks_src.out.ls +++ /dev/null @@ -1,43 +0,0 @@ -Opened "./testfiles/h5copy_extlinks_src.out.h5" with sec2 driver. -/ Group - Location: 1:96 - Links: 1 -/copy1_dset Dataset {6/6} - Location: 1:800 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/copy1_group Group - Location: 1:4696 - Links: 1 -/copy1_group/extlink_datatype External Link {h5copy_extlinks_trg.h5//datatype} -/copy1_group/extlink_dset External Link {h5copy_extlinks_trg.h5//simple} -/copy1_group/extlink_grp External Link {h5copy_extlinks_trg.h5//group} -/copy1_group/extlink_notyet1 External Link {h5copy_extlinks_trg.h5//notyet} -/copy1_group/extlink_notyet2 External Link {notyet_file.h5//notyet} -/copy2_dset Dataset {6/6} - Location: 1:4216 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/copy2_group Group - Location: 1:5128 - Links: 1 -/copy2_group/extlink_datatype Type - Location: 1:6328 - Links: 1 - Type: shared-1:6328 32-bit little-endian integer -/copy2_group/extlink_dset Dataset {6/6} - Location: 1:5496 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/copy2_group/extlink_grp Group - Location: 1:6288 - Links: 1 -/copy2_group/extlink_notyet1 External Link {h5copy_extlinks_trg.h5//notyet} -/copy2_group/extlink_notyet2 External Link {notyet_file.h5//notyet} -/copy_dangle1_1 External Link {h5copy_extlinks_trg.h5//notyet} -/copy_dangle1_2 External Link {h5copy_extlinks_trg.h5//notyet} -/copy_dangle2_1 External Link {notyet_file.h5//notyet} -/copy_dangle2_2 External Link {notyet_file.h5//notyet} diff --git a/tools/h5copy/testfiles/h5copy_extlinks_trg.h5 b/tools/h5copy/testfiles/h5copy_extlinks_trg.h5 deleted file mode 100644 index 3a0242d..0000000 Binary files a/tools/h5copy/testfiles/h5copy_extlinks_trg.h5 and /dev/null differ diff --git a/tools/h5copy/testfiles/h5copy_misc1.out b/tools/h5copy/testfiles/h5copy_misc1.out deleted file mode 100644 index 1624f2b..0000000 --- a/tools/h5copy/testfiles/h5copy_misc1.out +++ /dev/null @@ -1,3 +0,0 @@ -Copying file <./testfiles/h5copytst.h5> and object to file <./testfiles/h5copy_misc1.out.h5> and object -Error in copy...Exiting -h5copy error: group doesn't exist. Use -p to create parent groups. diff --git a/tools/h5copy/testfiles/h5copy_ref.h5 b/tools/h5copy/testfiles/h5copy_ref.h5 deleted file mode 100644 index bd727e6..0000000 Binary files a/tools/h5copy/testfiles/h5copy_ref.h5 and /dev/null differ diff --git a/tools/h5copy/testfiles/h5copy_ref.out.ls b/tools/h5copy/testfiles/h5copy_ref.out.ls deleted file mode 100644 index d685af2..0000000 --- a/tools/h5copy/testfiles/h5copy_ref.out.ls +++ /dev/null @@ -1,31 +0,0 @@ -Opened "./testfiles/h5copy_ref.out.h5" with sec2 driver. -/ Group - Location: 1:96 - Links: 1 -/COPY Group - Location: 1:1464 - Links: 1 -/COPY/Dset1 Dataset {3/3} - Location: 1:1504 - Links: 2 - Storage:
- Type: 32-bit little-endian integer -/COPY/Dset2 Dataset {3/3, 16/16} - Location: 1:1960 - Links: 3 - Storage:
- Type: 8-bit integer -/COPY/Dset_OBJREF Dataset {2/2} - Location: 1:5184 - Links: 1 - Storage:
- Type: object reference -/COPY/Dset_REGREF Dataset {2/2} - Location: 1:5304 - Links: 1 - Storage:
- Type: dataset region reference -/COPY/Group Group - Location: 1:2096 - Links: 3 -/~obj_pointed_by_2096 Group, same as /COPY/Group diff --git a/tools/h5copy/testfiles/h5copytst.h5 b/tools/h5copy/testfiles/h5copytst.h5 deleted file mode 100644 index 1d1cbf1..0000000 Binary files a/tools/h5copy/testfiles/h5copytst.h5 and /dev/null differ diff --git a/tools/h5copy/testfiles/h5copytst.out.ls b/tools/h5copy/testfiles/h5copytst.out.ls deleted file mode 100644 index 4044aaf..0000000 --- a/tools/h5copy/testfiles/h5copytst.out.ls +++ /dev/null @@ -1,429 +0,0 @@ -Opened "./testfiles/h5copytst.out.h5" with sec2 driver. -/ Group - Location: 1:96 - Links: 1 -/A Group - Location: 1:84304 - Links: 1 -/A/B1 Group - Location: 1:85008 - Links: 1 -/A/B1/simple Dataset {6/6} - Location: 1:84176 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/A/B2 Group - Location: 1:88544 - Links: 1 -/A/B2/simple2 Dataset {6/6} - Location: 1:88416 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/C Group - Location: 1:91752 - Links: 1 -/C/D Group - Location: 1:92456 - Links: 1 -/C/D/simple Dataset {6/6} - Location: 1:91624 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/E Group - Location: 1:106368 - Links: 1 -/E/F Group - Location: 1:107072 - Links: 1 -/E/F/grp_dsets Group - Location: 1:94568 - Links: 1 -/E/F/grp_dsets/chunk Dataset {6/6} - Location: 1:98752 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/E/F/grp_dsets/compact Dataset {6/6} - Location: 1:99208 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/E/F/grp_dsets/compound Dataset {2/2} - Location: 1:99344 - Links: 1 - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/E/F/grp_dsets/compressed Dataset {6/6} - Location: 1:101656 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/E/F/grp_dsets/named_vl Dataset {2/2} - Location: 1:105920 - Links: 1 - Storage:
- Type: shared-1:106048 variable length of - 32-bit little-endian integer -/E/F/grp_dsets/nested_vl Dataset {2/2} - Location: 1:106096 - Links: 1 - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/E/F/grp_dsets/simple Dataset {6/6} - Location: 1:106240 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/E/F/grp_dsets/vl Type - Location: 1:106048 - Links: 2 - Type: shared-1:106048 variable length of - 32-bit little-endian integer -/G Group - Location: 1:122016 - Links: 1 -/G/H Group - Location: 1:122720 - Links: 1 -/G/H/grp_nested Group - Location: 1:109096 - Links: 1 -/G/H/grp_nested/grp_dsets Group - Location: 1:109888 - Links: 1 -/G/H/grp_nested/grp_dsets/chunk Dataset {6/6} - Location: 1:114072 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/compact Dataset {6/6} - Location: 1:114528 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/compound Dataset {2/2} - Location: 1:114664 - Links: 1 - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/G/H/grp_nested/grp_dsets/compressed Dataset {6/6} - Location: 1:116976 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/named_vl Dataset {2/2} - Location: 1:121240 - Links: 1 - Storage:
- Type: shared-1:121368 variable length of - 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/nested_vl Dataset {2/2} - Location: 1:121416 - Links: 1 - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/simple Dataset {6/6} - Location: 1:121560 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/vl Type - Location: 1:121368 - Links: 2 - Type: shared-1:121368 variable length of - 32-bit little-endian integer -/chunk Dataset {6/6} - Location: 1:6312 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/compact Dataset {6/6} - Location: 1:6440 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/compound Dataset {2/2} - Location: 1:8624 - Links: 1 - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/compressed Dataset {6/6} - Location: 1:12984 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/grp_dsets Group - Location: 1:28128 - Links: 1 -/grp_dsets/chunk Dataset {6/6} - Location: 1:32312 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/grp_dsets/compact Dataset {6/6} - Location: 1:32768 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/grp_dsets/compound Dataset {2/2} - Location: 1:32904 - Links: 1 - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/grp_dsets/compressed Dataset {6/6} - Location: 1:35216 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/grp_dsets/named_vl Dataset {2/2} - Location: 1:39480 - Links: 1 - Storage:
- Type: shared-1:39608 variable length of - 32-bit little-endian integer -/grp_dsets/nested_vl Dataset {2/2} - Location: 1:39656 - Links: 1 - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/grp_dsets/simple Dataset {6/6} - Location: 1:39800 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/grp_dsets/simple_group Dataset {6/6} - Location: 1:55912 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/grp_dsets/vl Type - Location: 1:39608 - Links: 2 - Type: shared-1:39608 variable length of - 32-bit little-endian integer -/grp_empty Group - Location: 1:27336 - Links: 1 -/grp_nested Group - Location: 1:40592 - Links: 1 -/grp_nested/grp_dsets Group - Location: 1:41384 - Links: 1 -/grp_nested/grp_dsets/chunk Dataset {6/6} - Location: 1:45568 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/grp_nested/grp_dsets/compact Dataset {6/6} - Location: 1:46024 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/grp_nested/grp_dsets/compound Dataset {2/2} - Location: 1:46160 - Links: 1 - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/grp_nested/grp_dsets/compressed Dataset {6/6} - Location: 1:48472 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/grp_nested/grp_dsets/named_vl Dataset {2/2} - Location: 1:52736 - Links: 1 - Storage:
- Type: shared-1:52864 variable length of - 32-bit little-endian integer -/grp_nested/grp_dsets/nested_vl Dataset {2/2} - Location: 1:52912 - Links: 1 - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/grp_nested/grp_dsets/simple Dataset {6/6} - Location: 1:53056 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/grp_nested/grp_dsets/vl Type - Location: 1:52864 - Links: 2 - Type: shared-1:52864 variable length of - 32-bit little-endian integer -/grp_rename Group - Location: 1:57120 - Links: 1 -/grp_rename/chunk Dataset {6/6} - Location: 1:61304 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/grp_rename/compact Dataset {6/6} - Location: 1:61760 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/grp_rename/compound Dataset {2/2} - Location: 1:61896 - Links: 1 - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/grp_rename/compressed Dataset {6/6} - Location: 1:64208 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/grp_rename/grp_dsets Group - Location: 1:70000 - Links: 1 -/grp_rename/grp_dsets/chunk Dataset {6/6} - Location: 1:74184 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/grp_rename/grp_dsets/compact Dataset {6/6} - Location: 1:74640 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/grp_rename/grp_dsets/compound Dataset {2/2} - Location: 1:74776 - Links: 1 - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/grp_rename/grp_dsets/compressed Dataset {6/6} - Location: 1:77088 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/grp_rename/grp_dsets/named_vl Dataset {2/2} - Location: 1:81352 - Links: 1 - Storage:
- Type: shared-1:81480 variable length of - 32-bit little-endian integer -/grp_rename/grp_dsets/nested_vl Dataset {2/2} - Location: 1:81528 - Links: 1 - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/grp_rename/grp_dsets/simple Dataset {6/6} - Location: 1:81672 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/grp_rename/grp_dsets/vl Type - Location: 1:81480 - Links: 2 - Type: shared-1:81480 variable length of - 32-bit little-endian integer -/grp_rename/named_vl Dataset {2/2} - Location: 1:68472 - Links: 1 - Storage:
- Type: shared-1:68600 variable length of - 32-bit little-endian integer -/grp_rename/nested_vl Dataset {2/2} - Location: 1:68648 - Links: 1 - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/grp_rename/simple Dataset {6/6} - Location: 1:68792 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/grp_rename/vl Type - Location: 1:68600 - Links: 2 - Type: shared-1:68600 variable length of - 32-bit little-endian integer -/named_vl Dataset {2/2} - Location: 1:17280 - Links: 1 - Storage:
- Type: shared-1:17408 variable length of - 32-bit little-endian integer -/nested_vl Dataset {2/2} - Location: 1:21760 - Links: 1 - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/rename Dataset {2/2} - Location: 1:26128 - Links: 1 - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/simple Dataset {6/6} - Location: 1:800 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/simple_top Dataset {6/6} - Location: 1:23952 - Links: 1 - Storage:
- Type: 32-bit little-endian integer diff --git a/tools/h5copy/testfiles/h5copytst_new.h5 b/tools/h5copy/testfiles/h5copytst_new.h5 deleted file mode 100644 index fd820ca..0000000 Binary files a/tools/h5copy/testfiles/h5copytst_new.h5 and /dev/null differ diff --git a/tools/h5copy/testfiles/h5copytst_new.out.ls b/tools/h5copy/testfiles/h5copytst_new.out.ls deleted file mode 100644 index 9df6b2e..0000000 --- a/tools/h5copy/testfiles/h5copytst_new.out.ls +++ /dev/null @@ -1,502 +0,0 @@ -############################# -Expected output for 'h5ls ../testfiles/h5copytst_new.out.h5' -############################# -Opened "../testfiles/h5copytst_new.out.h5" with sec2 driver. -/ Group - Location: 1:96 - Links: 1 -/A Group - Location: 1:65602 - Links: 1 -/A/B1 Group - Location: 1:66306 - Links: 1 -/A/B1/simple Dataset {6/6} - Location: 1:65509 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/A/B2 Group - Location: 1:69807 - Links: 1 -/A/B2/simple2 Dataset {6/6} - Location: 1:69714 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/C Group - Location: 1:72980 - Links: 1 -/C/D Group - Location: 1:73684 - Links: 1 -/C/D/simple Dataset {6/6} - Location: 1:72887 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/E Group - Location: 1:76217 - Links: 1 -/E/F Group - Location: 1:76921 - Links: 1 -/E/F/grp_dsets Group - Location: 1:75044 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX -/E/F/grp_dsets/chunk Dataset {6/6} - Location: 1:76014 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/E/F/grp_dsets/compact Dataset {6/6} - Location: 1:75367 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/E/F/grp_dsets/compound Dataset {2/2} - Location: 1:75470 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/E/F/grp_dsets/compressed Dataset {6/6} - Location: 1:75683 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/E/F/grp_dsets/named_vl Dataset {2/2} - Location: 1:75853 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: shared-1:75793 variable length of - 32-bit little-endian integer -/E/F/grp_dsets/nested_vl Dataset {2/2} - Location: 1:76108 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/E/F/grp_dsets/simple Dataset {6/6} - Location: 1:75274 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/E/F/grp_dsets/vl Type - Location: 1:75793 - Links: 2 - Modified: XXXX-XX-XX XX:XX:XX XXX - Type: shared-1:75793 variable length of - 32-bit little-endian integer -/G Group - Location: 1:85688 - Links: 1 -/G/H Group - Location: 1:86392 - Links: 1 -/G/H/grp_nested Group - Location: 1:84436 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX -/G/H/grp_nested/grp_dsets Group - Location: 1:84515 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX -/G/H/grp_nested/grp_dsets/chunk Dataset {6/6} - Location: 1:85485 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/compact Dataset {6/6} - Location: 1:84838 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/compound Dataset {2/2} - Location: 1:84941 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/G/H/grp_nested/grp_dsets/compressed Dataset {6/6} - Location: 1:85154 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/named_vl Dataset {2/2} - Location: 1:85324 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: shared-1:85264 variable length of - 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/nested_vl Dataset {2/2} - Location: 1:85579 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/simple Dataset {6/6} - Location: 1:84745 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/vl Type - Location: 1:85264 - Links: 2 - Modified: XXXX-XX-XX XX:XX:XX XXX - Type: shared-1:85264 variable length of - 32-bit little-endian integer -/chunk Dataset {6/6} - Location: 1:2238 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/compact Dataset {6/6} - Location: 1:4240 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/compound Dataset {2/2} - Location: 1:6391 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/compressed Dataset {6/6} - Location: 1:6604 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/grp_dsets Group - Location: 1:27748 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX -/grp_dsets/chunk Dataset {6/6} - Location: 1:28718 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/grp_dsets/compact Dataset {6/6} - Location: 1:28071 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/grp_dsets/compound Dataset {2/2} - Location: 1:28174 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/grp_dsets/compressed Dataset {6/6} - Location: 1:28387 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/grp_dsets/named_vl Dataset {2/2} - Location: 1:28557 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: shared-1:28497 variable length of - 32-bit little-endian integer -/grp_dsets/nested_vl Dataset {2/2} - Location: 1:28812 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/grp_dsets/simple Dataset {6/6} - Location: 1:27978 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/grp_dsets/simple_group Dataset {6/6} - Location: 1:46180 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/grp_dsets/vl Type - Location: 1:28497 - Links: 2 - Modified: XXXX-XX-XX XX:XX:XX XXX - Type: shared-1:28497 variable length of - 32-bit little-endian integer -/grp_empty Group - Location: 1:27693 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX -/grp_nested Group - Location: 1:35940 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX -/grp_nested/grp_dsets Group - Location: 1:36019 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX -/grp_nested/grp_dsets/chunk Dataset {6/6} - Location: 1:36989 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/grp_nested/grp_dsets/compact Dataset {6/6} - Location: 1:36342 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/grp_nested/grp_dsets/compound Dataset {2/2} - Location: 1:36445 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/grp_nested/grp_dsets/compressed Dataset {6/6} - Location: 1:36658 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/grp_nested/grp_dsets/named_vl Dataset {2/2} - Location: 1:36828 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: shared-1:36768 variable length of - 32-bit little-endian integer -/grp_nested/grp_dsets/nested_vl Dataset {2/2} - Location: 1:37083 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/grp_nested/grp_dsets/simple Dataset {6/6} - Location: 1:36249 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/grp_nested/grp_dsets/vl Type - Location: 1:36768 - Links: 2 - Modified: XXXX-XX-XX XX:XX:XX XXX - Type: shared-1:36768 variable length of - 32-bit little-endian integer -/grp_rename Group - Location: 1:47077 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX -/grp_rename/chunk Dataset {6/6} - Location: 1:48047 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/grp_rename/compact Dataset {6/6} - Location: 1:47400 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/grp_rename/compound Dataset {2/2} - Location: 1:47503 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/grp_rename/compressed Dataset {6/6} - Location: 1:47716 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/grp_rename/grp_dsets Group - Location: 1:55269 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX -/grp_rename/grp_dsets/chunk Dataset {6/6} - Location: 1:56239 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/grp_rename/grp_dsets/compact Dataset {6/6} - Location: 1:55592 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/grp_rename/grp_dsets/compound Dataset {2/2} - Location: 1:55695 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/grp_rename/grp_dsets/compressed Dataset {6/6} - Location: 1:55908 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/grp_rename/grp_dsets/named_vl Dataset {2/2} - Location: 1:56078 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: shared-1:56018 variable length of - 32-bit little-endian integer -/grp_rename/grp_dsets/nested_vl Dataset {2/2} - Location: 1:56333 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/grp_rename/grp_dsets/simple Dataset {6/6} - Location: 1:55499 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/grp_rename/grp_dsets/vl Type - Location: 1:56018 - Links: 2 - Modified: XXXX-XX-XX XX:XX:XX XXX - Type: shared-1:56018 variable length of - 32-bit little-endian integer -/grp_rename/named_vl Dataset {2/2} - Location: 1:47886 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: shared-1:47826 variable length of - 32-bit little-endian integer -/grp_rename/nested_vl Dataset {2/2} - Location: 1:48141 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/grp_rename/simple Dataset {6/6} - Location: 1:47307 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/grp_rename/vl Type - Location: 1:47826 - Links: 2 - Modified: XXXX-XX-XX XX:XX:XX XXX - Type: shared-1:47826 variable length of - 32-bit little-endian integer -/named_vl Dataset {2/2} - Location: 1:8657 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: shared-1:8606 variable length of - 32-bit little-endian integer -/nested_vl Dataset {2/2} - Location: 1:22942 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/rename Dataset {2/2} - Location: 1:27240 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/simple Dataset {6/6} - Location: 1:800 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/simple_top Dataset {6/6} - Location: 1:25099 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer diff --git a/tools/h5copy/testh5copy.sh.in b/tools/h5copy/testh5copy.sh.in deleted file mode 100644 index 859d7c8..0000000 --- a/tools/h5copy/testh5copy.sh.in +++ /dev/null @@ -1,607 +0,0 @@ -#! /bin/sh -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -# -# Tests for the h5copy tool -# -# Pedro Vicente Nunes (pvn@hdfgroup.org), Albert Cheng (acheng@hdfgroup.org) -# Thursday, July 20, 2006 -# - -srcdir=@srcdir@ - -# source dirs -SRC_TOOLS="$srcdir/.." -SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles" -# testfiles source dirs for tools -SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles" -SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles" -SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles" -SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles" -SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles" -SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles" - -TESTNAME=h5copy -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -###################################################################### -# test files -# -------------------------------------------------------------------- -# All the test files copy from source directory to test directory -# NOTE: Keep this framework to add/remove test files. -# Any test files from other tools can be used in this framework. -# This list are also used for checking exist. -# Comment '#' without space can be used. -# -------------------------------------------------------------------- -# List of files that will be copied over to local test dir -LIST_HDF5_TEST_FILES=" -$SRC_H5COPY_TESTFILES/h5copytst.h5 -$SRC_H5COPY_TESTFILES/h5copy_ref.h5 -$SRC_H5COPY_TESTFILES/h5copy_extlinks_src.h5 -$SRC_H5COPY_TESTFILES/h5copy_extlinks_trg.h5 -" - -# List of expect files that will be copied over to local test dir -LIST_OTHER_TEST_FILES=" -$SRC_H5COPY_TESTFILES/h5copy_misc1.out -" - -H5COPY=h5copy # The tool name -H5COPY_BIN=`pwd`/$H5COPY # The path of the tool binary -H5DIFF=h5diff # The h5diff tool name -H5DIFF_BIN=`pwd`/../h5diff/$H5DIFF # The path of the h5diff tool binary -H5LS=h5ls # The h5ls tool name -H5LS_ARGS=-Svr # Arguments to the h5ls tool -H5LS_BIN=`pwd`/../h5ls/$H5LS # The path of the h5ls tool binary - -RM='rm -rf' -CMP='cmp -s' -DIFF='diff -c' -CP='cp' -DIRNAME='dirname' -LS='ls' -AWK='awk' - -nerrors=0 -verbose=yes -h5haveexitcode=yes # default is yes - -TESTDIR=./testfiles -test -d $TESTDIR || mkdir $TESTDIR - -# RUNSERIAL is used. Check if it can return exit code from executalbe correctly. -if [ -n "$RUNSERIAL_NOEXITCODE" ]; then - echo "***Warning*** Serial Exit Code is not passed back to shell corretly." - echo "***Warning*** Exit code checking is skipped." - h5haveexitcode=no -fi - -# -# copy test files and expected output files from source dirs to test dir -# -COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES" - -COPY_TESTFILES_TO_TESTDIR() -{ - # copy test files. Used -f to make sure get a new copy - for tstfile in $COPY_TESTFILES - do - # ignore '#' comment - echo $tstfile | tr -d ' ' | grep '^#' > /dev/null - RET=$? - if [ $RET -eq 1 ]; then - # skip cp if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=`$DIRNAME $tstfile` - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $CP -f $tstfile $TESTDIR - if [ $? -ne 0 ]; then - echo "Error: FAILED to copy $tstfile ." - - # Comment out this to CREATE expected file - exit $EXIT_FAILURE - fi - fi - fi - done -} - -CLEAN_TESTFILES_AND_TESTDIR() -{ - # skip rm if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=$SRC_H5COPY_TESTFILES - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $RM $TESTDIR - fi -} - - -# Print a "SKIP" message -SKIP() { - TESTING $H5COPY $@ - echo " -SKIP-" -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Testing". -TESTING() -{ - SPACES=" " - echo "Testing $* $SPACES" |cut -c1-70 |tr -d '\012' -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Verifying". -# -VERIFY() -{ - SPACES=" " - echo "Verifying h5diff output $* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Verifying". -# -VERIFY_OUTPUT() -{ - SPACES=" " - echo "Verifying output files $* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Source in the output filter function definitions. -. $srcdir/../../bin/output_filter.sh - -# Run a test and print PASS or *FAIL*. If h5copy can complete -# with exit status 0, consider it pass. If a test fails then increment -# the `nerrors' global variable. -# Assumed arguments: -# $1 is -i -# $2 is input file -# $3 is -o -# $4 is output file -# $* everything else arguments for h5copy. - -TOOLTEST() -{ - actualout="$TESTDIR/tooltest.actualout" - actualerr="$TESTDIR/tooltest.actualerr" - runh5diff=yes - if [ "$1" = -i ]; then - inputfile=$2 - else - if [ "$1" = -f ]; then - inputfile=$4 - else - inputfile=$3 - fi - runh5diff=no - fi - if [ "$3" = -o ]; then - outputfile=$4 - else - if [ "$1" = -f ]; then - outputfile=$6 - else - outputfile=$5 - fi - runh5diff=no - fi - - TESTING $H5COPY $@ - ( - echo "#############################" - echo " output for '$H5COPY $@'" - echo "#############################" - $RUNSERIAL $H5COPY_BIN $@ - ) > $actualout 2> $actualerr - RET=$? - if [ $RET != 0 ]; then - echo "*FAILED*" - echo "failed result is:" - cat $actualout - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - - if [ $runh5diff != no ]; then - H5DIFFTEST $inputfile $outputfile $7 $9 - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actualout $actualerr $outputfile - fi - fi -} - -# TOOLTEST back-to-back -TOOLTEST_PREFILL() -{ - actualout="$TESTDIR/tooltest.actualout" - actualerr="$TESTDIR/tooltest.actualerr" - runh5diff=yes - if [ "$1" = -i ]; then - inputfile=$2 - else - runh5diff=no - fi - if [ "$3" = -o ]; then - outputfile=$4 - else - runh5diff=no - fi - - grp_name=$5 - grp_name2=$6 - obj_name=$7 - obj_name2=$8 - - TESTING $H5COPY $@ - ( - echo "#############################" - echo " output for '$H5COPY $@'" - echo "#############################" - $RUNSERIAL $H5COPY_BIN -i $inputfile -o $outputfile -v -s $grp_name -d $grp_name2 - ) > $actualout 2> $actualerr - RET=$? - if [ $RET != 0 ]; then - echo "*FAILED*" - echo "failed result is:" - cat $actualout - nerrors="`expr $nerrors + 1`" - else - TESTING $H5COPY $@ - ( - echo "#############################" - echo " output for '$H5COPY $@'" - echo "#############################" - $RUNSERIAL $H5COPY_BIN -i $inputfile -o $outputfile -v -s $obj_name -d $obj_name2 - ) > $actualout 2> $actualerr - RET=$? - if [ $RET != 0 ]; then - echo "*FAILED*" - echo "failed result is:" - cat $actualout - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - - if [ $runh5diff != no ]; then - H5DIFFTEST $inputfile $outputfile $obj_name $obj_name2 - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actualout $actualerr $outputfile - fi - fi - fi -} - -# TOOLTEST back-to-back -TOOLTEST_SAME() -{ - actualout="$TESTDIR/tooltest.actualout" - actualerr="$TESTDIR/tooltest.actualerr" - runh5diff=yes - if [ "$1" = -i ]; then - inputfile=$2 - else - runh5diff=no - fi - if [ "$3" = -o ]; then - outputfile=$4 - else - runh5diff=no - fi - - grp_name=$5 - grp_name2=$6 - - TESTING $H5COPY $@ - ( - echo "#############################" - echo " output for '$H5COPY $@'" - echo "#############################" - $RUNSERIAL $H5COPY_BIN -i $inputfile -o $outputfile -v -s $grp_name -d $grp_name - ) > $actualout 2> $actualerr - RET=$? - if [ $RET != 0 ]; then - echo "*FAILED*" - echo "failed result is:" - cat $actualout - nerrors="`expr $nerrors + 1`" - else - TESTING $H5COPY $@ - ( - echo "#############################" - echo " output for '$H5COPY $@'" - echo "#############################" - $RUNSERIAL $H5COPY_BIN -i $outputfile -o $outputfile -v -s $grp_name -d $grp_name2 - ) > $actualout 2> $actualerr - RET=$? - if [ $RET != 0 ]; then - echo "*FAILED*" - echo "failed result is:" - cat $actualout - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - - if [ $runh5diff != no ]; then - H5DIFFTEST $outputfile $outputfile $grp_name $grp_name2 - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actualout $actualerr $outputfile - fi - fi - fi -} - - -# Compare the two text files -# PASS if same -# FAIL if different, and show the diff -# -# Assumed arguments: -# $1 is text file1 (expected output) -# $2 is text file2 (actual output) -CMP_OUTPUT() -{ - expect=$1 - actual=$2 - - VERIFY_OUTPUT $@ - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected output differs from actual output" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi -} - -TOOLTEST_FAIL() -{ - expectout="$TESTDIR/$1" - actualout="$TESTDIR/$1.actualout" - actualerr="$TESTDIR/$1.actualerr" - actualout_sav=${actualout}-sav - actualerr_sav=${actualerr}-sav - shift - if [ "$1" = -i ]; then - inputfile=$2 - fi - if [ "$3" = -o ]; then - outputfile=$4 - fi - - TESTING $H5COPY $@ - ( - #echo "#############################" - #echo " output for '$H5COPY $@'" - #echo "#############################" - $RUNSERIAL $H5COPY_BIN $@ - ) > $actualout 2> $actualerr - - RET=$? - # save actualout and actualerr in case they are needed later. - cp $actualout $actualout_sav - STDOUT_FILTER $actualout - cp $actualerr $actualerr_sav - STDERR_FILTER $actualerr - if [ $RET != 0 ]; then - echo " PASSED" - # Verifying output text from h5copy - if [ "$expectout" != "SKIP" ]; then - # combine stderr to stdout to compare the output at once. - # We may seperate stdout and stderr later. - cat $actualerr >> $actualout - CMP_OUTPUT $expectout $actualout - fi - else - echo "*FAILED*" - echo "failed result is:" - cat $actualout - nerrors="`expr $nerrors + 1`" - fi - - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actualout $actualerr $actualout_sav $actualerr_sav $outputfile - fi -} - - -# Call the h5diff tool -# -H5DIFFTEST() -{ - VERIFY $@ - $RUNSERIAL $H5DIFF_BIN -q "$@" - RET=$? - if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - fi -} - -# Call the h5diff tool with a call that is expected to fail -# -H5DIFFTEST_FAIL() -{ - VERIFY $@ - $RUNSERIAL $H5DIFF_BIN -q "$@" - RET=$? - - if [ $h5haveexitcode = 'yes' -a $RET != 1 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - fi -} - -# Copy single datasets of various forms from one group to another, -# adding object copied to the destination file each time -# -# Assumed arguments: -# -COPY_OBJECTS() -{ - TESTFILE="$TESTDIR/h5copytst.h5" - - echo "Test copying various forms of datasets" - TOOLTEST -i $TESTFILE -o $TESTDIR/simple.out.h5 -v -s simple -d simple - TOOLTEST -i $TESTFILE -o $TESTDIR/chunk.out.h5 -v -s chunk -d chunk - TOOLTEST -i $TESTFILE -o $TESTDIR/compact.out.h5 -v -s compact -d compact - TOOLTEST -i $TESTFILE -o $TESTDIR/compound.out.h5 -v -s compound -d compound - TOOLTEST -i $TESTFILE -o $TESTDIR/compressed.out.h5 -v -s compressed -d compressed - TOOLTEST -i $TESTFILE -o $TESTDIR/named_vl.out.h5 -v -s named_vl -d named_vl - TOOLTEST -i $TESTFILE -o $TESTDIR/nested_vl.out.h5 -v -s nested_vl -d nested_vl - TOOLTEST -i $TESTFILE -o $TESTDIR/dset_attr.out.h5 -v -s /dset_attr -d /dset_attr - - echo "Test copying dataset within group in source file to root of destination" - TOOLTEST -i $TESTFILE -o $TESTDIR/simple_top.out.h5 -v -s grp_dsets/simple -d simple_top - - echo "Test copying & renaming dataset" - TOOLTEST -i $TESTFILE -o $TESTDIR/dsrename.out.h5 -v -s compound -d rename - - echo "Test copying empty, 'full' & 'nested' groups" - TOOLTEST -i $TESTFILE -o $TESTDIR/grp_empty.out.h5 -v -s grp_empty -d grp_empty - TOOLTEST -i $TESTFILE -o $TESTDIR/grp_dsets.out.h5 -v -s grp_dsets -d grp_dsets - TOOLTEST -i $TESTFILE -o $TESTDIR/grp_nested.out.h5 -v -s grp_nested -d grp_nested - TOOLTEST -i $TESTFILE -o $TESTDIR/grp_attr.out.h5 -v -s grp_attr -d grp_attr - - echo "Test copying dataset within group in source file to group in destination" - TOOLTEST_PREFILL -i $TESTFILE -o $TESTDIR/simple_group.out.h5 grp_dsets grp_dsets /grp_dsets/simple /grp_dsets/simple_group - - echo "Test copying & renaming group" - TOOLTEST -i $TESTFILE -o $TESTDIR/grp_rename.out.h5 -v -s grp_dsets -d grp_rename - - echo "Test copying 'full' group hierarchy into group in destination file" - TOOLTEST_PREFILL -i $TESTFILE -o $TESTDIR/grp_dsets_rename.out.h5 grp_dsets grp_rename grp_dsets /grp_rename/grp_dsets - - echo "Test copying objects into group hier. that doesn't exist yet in destination file" - TOOLTEST -i $TESTFILE -o $TESTDIR/A_B1_simple.out.h5 -vp -s simple -d /A/B1/simple - TOOLTEST -i $TESTFILE -o $TESTDIR/A_B2_simple2.out.h5 -vp -s simple -d /A/B2/simple2 - TOOLTEST -i $TESTFILE -o $TESTDIR/C_D_simple.out.h5 -vp -s /grp_dsets/simple -d /C/D/simple - TOOLTEST -i $TESTFILE -o $TESTDIR/E_F_grp_dsets.out.h5 -vp -s /grp_dsets -d /E/F/grp_dsets - TOOLTEST -i $TESTFILE -o $TESTDIR/G_H_grp_nested.out.h5 -vp -s /grp_nested -d /G/H/grp_nested -} - -# Copy references in various way. -# -# Assumed arguments: -# -COPY_REFERENCES() -{ - TESTFILE="$TESTDIR/h5copy_ref.h5" - - echo "Test copying object and region references" - TOOLTEST -f ref -i $TESTFILE -o $TESTDIR/region_ref.out.h5 -v -s / -d /COPY -} - -# Copy external links. -# adding to the destination file each time compare the result -# -# Assumed arguments: -# -COPY_EXT_LINKS() -{ - TESTFILE="$TESTDIR/h5copy_extlinks_src.h5" - - echo "Test copying external link directly without -f ext" - TOOLTEST -v -i $TESTFILE -o $TESTDIR/ext_link.out.h5 -s /group_ext/extlink_dset -d /copy1_dset - - echo "Test copying external link directly with -f ext" - TOOLTEST -f ext -i $TESTFILE -o $TESTDIR/ext_link_f.out.h5 -v -s /group_ext/extlink_dset -d /copy2_dset - - echo "Test copying dangling external link (no obj) directly without -f ext" - TOOLTEST -v -i $TESTFILE -o $TESTDIR/ext_dangle_noobj.out.h5 -s /group_ext/extlink_notyet1 -d /copy_dangle1_1 - - echo "Test copying dangling external link (no obj) directly with -f ext" - TOOLTEST -f ext -i $TESTFILE -o $TESTDIR/ext_dangle_noobj_f.out.h5 -v -s /group_ext/extlink_notyet1 -d /copy_dangle1_2 - - echo "Test copying dangling external link (no file) directly without -f ext" - TOOLTEST -v -i $TESTFILE -o $TESTDIR/ext_dangle_nofile.out.h5 -s /group_ext/extlink_notyet2 -d /copy_dangle2_1 - - echo "Test copying dangling external link (no file) directly with -f ext" - TOOLTEST -f ext -i $TESTFILE -o $TESTDIR/ext_dangle_nofile_f.out.h5 -v -s /group_ext/extlink_notyet2 -d /copy_dangle2_2 - - echo "Test copying a group contains external links without -f ext" - TOOLTEST -v -i $TESTFILE -o $TESTDIR/ext_link_group.out.h5 -s /group_ext -d /copy1_group - - echo "Test copying a group contains external links with -f ext" - TOOLTEST -f ext -i $TESTFILE -o $TESTDIR/ext_link_group_f.out.h5 -v -s /group_ext -d /copy2_group -} - -# Test misc. -# -# Assumed arguments: -# -TEST_MISC() -{ - TESTFILE="$TESTDIR/h5copytst.h5" - - echo "Test copying object into group which doesn't exist, without -p" - TOOLTEST_FAIL h5copy_misc1.out -i $TESTFILE -o $TESTDIR/h5copy_misc1.out.h5 -v -s /simple -d /g1/g2/simple - - echo "Test copying objects to the same file " - TOOLTEST_SAME -i $TESTFILE -o $TESTDIR/samefile1.out.h5 /simple /simple_cp - TOOLTEST_SAME -i $TESTFILE -o $TESTDIR/samefile2.out.h5 /grp_dsets /grp_dsets_cp -} - -############################################################################## -### T H E T E S T S ### -############################################################################## -# prepare for test -COPY_TESTFILES_TO_TESTDIR - -# Start tests -COPY_OBJECTS -COPY_REFERENCES -COPY_EXT_LINKS -TEST_MISC - -# Clean up temporary files/directories -CLEAN_TESTFILES_AND_TESTDIR - -if test $nerrors -eq 0 ; then - echo "All $TESTNAME tests passed." - exit $EXIT_SUCCESS -else - echo "$TESTNAME tests failed with $nerrors errors." - exit $EXIT_FAILURE -fi diff --git a/tools/h5diff/CMakeLists.txt b/tools/h5diff/CMakeLists.txt deleted file mode 100644 index 4d386ad..0000000 --- a/tools/h5diff/CMakeLists.txt +++ /dev/null @@ -1,85 +0,0 @@ -cmake_minimum_required (VERSION 3.1.0) -PROJECT (HDF5_TOOLS_H5DIFF) - -#----------------------------------------------------------------------------- -# Setup include Directories -#----------------------------------------------------------------------------- -INCLUDE_DIRECTORIES (${HDF5_TOOLS_DIR}/lib) - -# -------------------------------------------------------------------- -# Add the h5diff executables -# -------------------------------------------------------------------- -add_executable (h5diff - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/h5diff_common.c - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/h5diff_main.c -) -TARGET_NAMING (h5diff STATIC) -TARGET_C_PROPERTIES (h5diff STATIC " " " ") -target_link_libraries (h5diff ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) -set_target_properties (h5diff PROPERTIES FOLDER tools) -set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5diff") - -set (H5_DEP_EXECUTABLES h5diff) - -if (H5_HAVE_PARALLEL) - add_executable (ph5diff - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/h5diff_common.c - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/ph5diff_main.c - ) - TARGET_NAMING (ph5diff STATIC) - TARGET_C_PROPERTIES (ph5diff STATIC " " " ") - target_link_libraries (ph5diff ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) - set_target_properties (ph5diff PROPERTIES FOLDER tools) - set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};ph5diff") -endif (H5_HAVE_PARALLEL) - -if (BUILD_TESTING) - # -------------------------------------------------------------------- - # Add the h5diff and test executables - # -------------------------------------------------------------------- - if (HDF5_BUILD_GENERATORS) - add_executable (h5diffgentest ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/h5diffgentest.c) - TARGET_NAMING (h5diffgentest STATIC) - TARGET_C_PROPERTIES (h5diffgentest STATIC " " " ") - target_link_libraries (h5diffgentest ${HDF5_LIB_TARGET}) - set_target_properties (h5diffgentest PROPERTIES FOLDER generator/tools) - - #add_test (NAME h5diffgentest COMMAND $) - endif (HDF5_BUILD_GENERATORS) - - include (CMakeTests.cmake) - -endif (BUILD_TESTING) - -############################################################################## -############################################################################## -### I N S T A L L A T I O N ### -############################################################################## -############################################################################## - -#----------------------------------------------------------------------------- -# Rules for Installation of tools using make Install target -#----------------------------------------------------------------------------- - -#INSTALL_PROGRAM_PDB (h5diff ${HDF5_INSTALL_BIN_DIR} toolsapplications) - -install ( - TARGETS - h5diff - EXPORT - ${HDF5_EXPORTED_TARGETS} - RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications -) - -if (H5_HAVE_PARALLEL) - - #INSTALL_PROGRAM_PDB (ph5diff ${HDF5_INSTALL_BIN_DIR} toolsapplications) - - install ( - TARGETS - ph5diff - EXPORT - ${HDF5_EXPORTED_TARGETS} - RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications - ) -endif (H5_HAVE_PARALLEL) diff --git a/tools/h5diff/CMakeTests.cmake b/tools/h5diff/CMakeTests.cmake deleted file mode 100644 index 5d3d433..0000000 --- a/tools/h5diff/CMakeTests.cmake +++ /dev/null @@ -1,1362 +0,0 @@ - -############################################################################## -############################################################################## -### T E S T I N G ### -############################################################################## -############################################################################## - - # -------------------------------------------------------------------- - # Copy all the HDF5 files from the test directory into the source directory - # -------------------------------------------------------------------- - set (LIST_HDF5_TEST_FILES - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_basic1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_basic2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_types.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_dtypes.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_dset1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_dset2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_hyper1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_hyper2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_empty.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_links.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_softlinks.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_linked_softlink.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_extlink_src.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_extlink_trg.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_ext2softlink_src.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_ext2softlink_trg.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_dset_zero_dim_size1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_dset_zero_dim_size2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_danglelinks1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_danglelinks2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_grp_recurse1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_grp_recurse2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_grp_recurse_ext1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_grp_recurse_ext2-1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_grp_recurse_ext2-2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_grp_recurse_ext2-3.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude1-1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude1-2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude2-1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude2-2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude3-1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude3-2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_comp_vl_strs.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr_v_level1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr_v_level2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/compounds_array_vlen1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/compounds_array_vlen2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/non_comparables1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/non_comparables2.h5 - # tools/testfiles/vds - ${HDF5_TOOLS_DIR}/testfiles/vds/1_a.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/1_b.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/1_c.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/1_d.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/1_e.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/1_f.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/1_vds.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/2_a.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/2_b.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/2_c.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/2_d.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/2_e.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/2_vds.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/3_1_vds.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/3_2_vds.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/4_0.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/4_1.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/4_2.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/4_vds.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/5_a.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/5_b.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/5_c.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/5_vds.h5 - ) - - set (LIST_OTHER_TEST_FILES - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_10.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_100.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_11.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_12.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_13.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_14.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_15.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_16_1.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_16_2.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_16_3.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_17.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_171.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_172.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_18_1.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_18.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_20.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_200.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_201.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_202.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_203.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_204.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_205.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_206.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_207.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_208.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_220.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_221.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_222.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_223.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_224.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_21.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_22.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_23.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_24.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_25.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_26.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_27.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_28.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_300.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_400.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_401.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_402.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_403.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_404.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_405.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_406.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_407.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_408.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_409.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_410.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_411.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_412.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_413.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_414.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_415.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_416.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_417.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_418.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_419.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_420.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_421.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_422.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_423.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_424.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_425.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_450.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_451.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_452.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_453.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_454.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_455.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_456.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_457.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_458.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_459.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_465.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_466.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_467.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_468.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_469.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_471.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_472.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_473.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_474.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_475.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_480.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_481.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_482.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_483.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_484.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_485.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_486.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_487.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_50.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_51.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_52.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_53.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_54.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_55.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_56.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_57.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_58.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_59.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_500.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_501.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_502.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_503.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_504.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_505.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_506.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_507.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_508.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_509.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_510.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_511.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_512.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_513.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_514.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_515.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_516.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_517.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_518.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_530.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_540.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_600.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_601.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_603.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_604.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_605.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_606.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_607.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_608.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_609.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_610.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_612.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_613.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_614.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_615.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_616.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_617.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_618.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_619.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_621.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_622.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_623.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_624.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_625.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_626.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_627.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_628.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_629.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_630.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_631.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_640.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_641.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_642.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_643.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_644.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_645.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_646.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_70.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_700.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_701.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_702.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_703.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_704.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_705.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_706.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_707.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_708.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_709.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_710.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_80.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_90.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_v1.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_v2.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_v3.txt - ) - - set (LIST_WIN_TEST_FILES - h5diff_101 - h5diff_102 - h5diff_103 - h5diff_104 - ) - - # Make testfiles dir under build dir - file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - - # - # copy test files from source to build dir - # - foreach (h5_tstfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES}) - get_filename_component(fname "${h5_tstfiles}" NAME) - HDFTEST_COPY_FILE("${h5_tstfiles}" "${PROJECT_BINARY_DIR}/testfiles/${fname}" "h5diff_files") - endforeach () - - - # - # Overwrite system dependent files (Windows) and not VS2015 - # - if (WIN32 AND MSVC_VERSION LESS 1900) - foreach (h5_tstfiles ${LIST_WIN_TEST_FILES}) - get_filename_component(fname "${h5_tstfiles}" NAME) - HDFTEST_COPY_FILE("${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/${h5_tstfiles}w.txt" "${PROJECT_BINARY_DIR}/testfiles/${fname}.txt" "h5diff_files") - endforeach () - else () - foreach (h5_tstfiles ${LIST_WIN_TEST_FILES}) - get_filename_component(fname "${h5_tstfiles}" NAME) - HDFTEST_COPY_FILE("${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/${h5_tstfiles}.txt" "${PROJECT_BINARY_DIR}/testfiles/${fname}.txt" "h5diff_files") - endforeach () - endif () - add_custom_target(h5diff_files ALL COMMENT "Copying files needed by h5diff tests" DEPENDS ${h5diff_files_list}) - -############################################################################## -############################################################################## -### T H E T E S T S M A C R O S ### -############################################################################## -############################################################################## - - MACRO (ADD_H5_TEST resultfile resultcode) - # If using memchecker add tests without using scripts - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME H5DIFF-${resultfile} COMMAND $ ${ARGN}) - set_tests_properties (H5DIFF-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - if (NOT ${resultcode} STREQUAL "0") - set_tests_properties (H5DIFF-${resultfile} PROPERTIES WILL_FAIL "true") - endif () - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5DIFF-${resultfile} PROPERTIES DEPENDS ${last_test}) - endif () - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5DIFF-${resultfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" - -D "TEST_OUTPUT=${resultfile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}.txt" - -D "TEST_APPEND=EXIT CODE:" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - endif (HDF5_ENABLE_USING_MEMCHECKER) - if (H5_HAVE_PARALLEL) - ADD_PH5_TEST (${resultfile} ${resultcode} ${ARGN}) - endif () - ENDMACRO (ADD_H5_TEST file) - - MACRO (ADD_PH5_TEST resultfile resultcode) - # If using memchecker add tests without using scripts - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME PH5DIFF-${resultfile} COMMAND $ ${MPIEXEC} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_POSTFLAGS} ${ARGN}) - set_tests_properties (PH5DIFF-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - if (NOT ${resultcode} STREQUAL "0") - set_tests_properties (PH5DIFF-${resultfile} PROPERTIES WILL_FAIL "true") - endif () - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (PH5DIFF-${resultfile} PROPERTIES DEPENDS ${last_test}) - endif () - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME PH5DIFF-${resultfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=${MPIEXEC};${MPIEXEC_PREFLAGS};${MPIEXEC_NUMPROC_FLAG};${MPIEXEC_MAX_NUMPROCS};${MPIEXEC_POSTFLAGS};$" - -D "TEST_ARGS:STRING=${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" - -D "TEST_OUTPUT=P_${resultfile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}.txt" -# -D "TEST_APPEND=EXIT CODE: [0-9]" -# -D "TEST_REF_FILTER=EXIT CODE: 0" - -D "TEST_SKIP_COMPARE=TRUE" - -P "${HDF_RESOURCES_EXT_DIR}/prunTest.cmake" - ) - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_PH5_TEST file) - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## - - # -------------------------------------------------------------------- - # test file names - # -------------------------------------------------------------------- - set (FILE1 h5diff_basic1.h5) - set (FILE2 h5diff_basic2.h5) - set (FILE3 h5diff_types.h5) - set (FILE4 h5diff_dtypes.h5) - set (FILE5 h5diff_attr1.h5) - set (FILE6 h5diff_attr2.h5) - set (FILE7 h5diff_dset1.h5) - set (FILE8 h5diff_dset2.h5) - set (FILE9 h5diff_hyper1.h5) - set (FILE10 h5diff_hyper2.h5) - set (FILE11 h5diff_empty.h5) - set (FILE12 h5diff_links.h5) - set (FILE13 h5diff_softlinks.h5) - set (FILE14 h5diff_linked_softlink.h5) - set (FILE15 h5diff_extlink_src.h5) - set (FILE16 h5diff_extlink_trg.h5) - set (FILE17 h5diff_ext2softlink_src.h5) - set (FILE18 h5diff_ext2softlink_trg.h5) - set (FILE19 h5diff_dset_zero_dim_size1.h5) - set (FILE20 h5diff_dset_zero_dim_size2.h5) - set (DANGLE_LINK_FILE1 h5diff_danglelinks1.h5) - set (DANGLE_LINK_FILE2 h5diff_danglelinks2.h5) - set (GRP_RECURSE_FILE1 h5diff_grp_recurse1.h5) - set (GRP_RECURSE_FILE2 h5diff_grp_recurse2.h5) - # group recursive - same structure via external links through files - set (GRP_RECURSE1_EXT h5diff_grp_recurse_ext1.h5) - set (GRP_RECURSE2_EXT1 h5diff_grp_recurse_ext2-1.h5) - set (GRP_RECURSE2_EXT2 h5diff_grp_recurse_ext2-2.h5) - set (GRP_RECURSE2_EXT3 h5diff_grp_recurse_ext2-3.h5) - # same structure, same obj name with different value - set (EXCLUDE_FILE1_1 h5diff_exclude1-1.h5) - set (EXCLUDE_FILE1_2 h5diff_exclude1-2.h5) - # different structure and obj names - set (EXCLUDE_FILE2_1 h5diff_exclude2-1.h5) - set (EXCLUDE_FILE2_2 h5diff_exclude2-2.h5) - # Only one file contains unique objs. Common objs are same. - set (EXCLUDE_FILE3_1 h5diff_exclude3-1.h5) - set (EXCLUDE_FILE3_2 h5diff_exclude3-2.h5) - # compound type with multiple vlen string types - set (COMP_VL_STRS_FILE h5diff_comp_vl_strs.h5) - # container types (array,vlen) with multiple nested compound types - set (COMPS_ARRAY_VLEN_FILE1 compounds_array_vlen1.h5) - set (COMPS_ARRAY_VLEN_FILE2 compounds_array_vlen2.h5) - # attrs with verbose option level - set (ATTR_VERBOSE_LEVEL_FILE1 h5diff_attr_v_level1.h5) - set (ATTR_VERBOSE_LEVEL_FILE2 h5diff_attr_v_level2.h5) -# VDS tests - set (FILEV1 1_vds.h5) - set (FILEV2 2_vds.h5) - set (FILEV3_1 3_1_vds.h5) - set (FILEV3_2 3_2_vds.h5) - set (FILEV4 4_vds.h5) - set (FILEV5 5_vds.h5) - - if (HDF5_ENABLE_USING_MEMCHECKER) - # Remove any output file left over from previous test run - add_test ( - NAME H5DIFF-clearall-objects - COMMAND ${CMAKE_COMMAND} - -E remove - h5diff_10.out - h5diff_10.out.err - h5diff_100.out - h5diff_100.out.err - h5diff_101.out - h5diff_101.out.err - h5diff_102.out - h5diff_102.out.err - h5diff_103.out - h5diff_103.out.err - h5diff_104.out - h5diff_104.out.err - h5diff_11.out - h5diff_11.out.err - h5diff_12.out - h5diff_12.out.err - h5diff_13.out - h5diff_13.out.err - h5diff_14.out - h5diff_14.out.err - h5diff_15.out - h5diff_15.out.err - h5diff_16_1.out - h5diff_16_1.out.err - h5diff_16_2.out - h5diff_16_2.out.err - h5diff_16_3.out - h5diff_16_3.out.err - h5diff_17.out - h5diff_17.out.err - h5diff_171.out - h5diff_171.out.err - h5diff_172.out - h5diff_172.out.err - h5diff_18_1.out - h5diff_18_1.out.err - h5diff_18.out - h5diff_18.out.err - h5diff_20.out - h5diff_20.out.err - h5diff_200.out - h5diff_200.out.err - h5diff_201.out - h5diff_201.out.err - h5diff_202.out - h5diff_202.out.err - h5diff_203.out - h5diff_203.out.err - h5diff_204.out - h5diff_204.out.err - h5diff_205.out - h5diff_205.out.err - h5diff_206.out - h5diff_206.out.err - h5diff_207.out - h5diff_207.out.err - h5diff_208.out - h5diff_208.out.err - h5diff_220.out - h5diff_220.out.err - h5diff_221.out - h5diff_221.out.err - h5diff_222.out - h5diff_222.out.err - h5diff_223.out - h5diff_223.out.err - h5diff_224.out - h5diff_224.out.err - h5diff_21.out - h5diff_21.out.err - h5diff_22.out - h5diff_22.out.err - h5diff_23.out - h5diff_23.out.err - h5diff_24.out - h5diff_24.out.err - h5diff_25.out - h5diff_25.out.err - h5diff_26.out - h5diff_26.out.err - h5diff_27.out - h5diff_27.out.err - h5diff_28.out - h5diff_28.out.err - h5diff_300.out - h5diff_300.out.err - h5diff_400.out - h5diff_400.out.err - h5diff_401.out - h5diff_401.out.err - h5diff_402.out - h5diff_402.out.err - h5diff_403.out - h5diff_403.out.err - h5diff_404.out - h5diff_404.out.err - h5diff_405.out - h5diff_405.out.err - h5diff_406.out - h5diff_406.out.err - h5diff_407.out - h5diff_407.out.err - h5diff_408.out - h5diff_408.out.err - h5diff_409.out - h5diff_409.out.err - h5diff_410.out - h5diff_410.out.err - h5diff_411.out - h5diff_411.out.err - h5diff_412.out - h5diff_412.out.err - h5diff_413.out - h5diff_413.out.err - h5diff_414.out - h5diff_414.out.err - h5diff_415.out - h5diff_415.out.err - h5diff_416.out - h5diff_416.out.err - h5diff_417.out - h5diff_417.out.err - h5diff_418.out - h5diff_418.out.err - h5diff_419.out - h5diff_419.out.err - h5diff_420.out - h5diff_420.out.err - h5diff_421.out - h5diff_421.out.err - h5diff_422.out - h5diff_422.out.err - h5diff_423.out - h5diff_423.out.err - h5diff_424.out - h5diff_424.out.err - h5diff_425.out - h5diff_425.out.err - h5diff_450.out - h5diff_450.out.err - h5diff_451.out - h5diff_451.out.err - h5diff_452.out - h5diff_452.out.err - h5diff_453.out - h5diff_453.out.err - h5diff_454.out - h5diff_454.out.err - h5diff_455.out - h5diff_455.out.err - h5diff_456.out - h5diff_456.out.err - h5diff_457.out - h5diff_457.out.err - h5diff_458.out - h5diff_458.out.err - h5diff_459.out - h5diff_459.out.err - h5diff_465.out - h5diff_465.out.err - h5diff_466.out - h5diff_466.out.err - h5diff_467.out - h5diff_467.out.err - h5diff_468.out - h5diff_468.out.err - h5diff_469.out - h5diff_469.out.err - h5diff_471.out - h5diff_471.out.err - h5diff_472.out - h5diff_472.out.err - h5diff_473.out - h5diff_473.out.err - h5diff_474.out - h5diff_474.out.err - h5diff_475.out - h5diff_475.out.err - h5diff_480.out - h5diff_480.out.err - h5diff_481.out - h5diff_481.out.err - h5diff_482.out - h5diff_482.out.err - h5diff_483.out - h5diff_483.out.err - h5diff_484.out - h5diff_484.out.err - h5diff_50.out - h5diff_50.out.err - h5diff_51.out - h5diff_51.out.err - h5diff_52.out - h5diff_52.out.err - h5diff_53.out - h5diff_53.out.err - h5diff_54.out - h5diff_54.out.err - h5diff_55.out - h5diff_55.out.err - h5diff_56.out - h5diff_56.out.err - h5diff_57.out - h5diff_57.out.err - h5diff_58.out - h5diff_58.out.err - h5diff_59.out - h5diff_59.out.err - h5diff_500.out - h5diff_500.out.err - h5diff_501.out - h5diff_501.out.err - h5diff_502.out - h5diff_502.out.err - h5diff_503.out - h5diff_503.out.err - h5diff_504.out - h5diff_504.out.err - h5diff_505.out - h5diff_505.out.err - h5diff_506.out - h5diff_506.out.err - h5diff_507.out - h5diff_507.out.err - h5diff_508.out - h5diff_508.out.err - h5diff_509.out - h5diff_509.out.err - h5diff_510.out - h5diff_510.out.err - h5diff_511.out - h5diff_511.out.err - h5diff_512.out - h5diff_512.out.err - h5diff_513.out - h5diff_513.out.err - h5diff_514.out - h5diff_514.out.err - h5diff_515.out - h5diff_515.out.err - h5diff_516.out - h5diff_516.out.err - h5diff_517.out - h5diff_517.out.err - h5diff_518.out - h5diff_518.out.err - h5diff_530.out - h5diff_530.out.err - h5diff_540.out - h5diff_540.out.err - h5diff_600.out - h5diff_600.out.err - h5diff_601.out - h5diff_601.out.err - h5diff_603.out - h5diff_603.out.err - h5diff_604.out - h5diff_604.out.err - h5diff_605.out - h5diff_605.out.err - h5diff_606.out - h5diff_606.out.err - h5diff_607.out - h5diff_607.out.err - h5diff_608.out - h5diff_608.out.err - h5diff_609.out - h5diff_609.out.err - h5diff_610.out - h5diff_610.out.err - h5diff_612.out - h5diff_612.out.err - h5diff_613.out - h5diff_613.out.err - h5diff_614.out - h5diff_614.out.err - h5diff_615.out - h5diff_615.out.err - h5diff_616.out - h5diff_616.out.err - h5diff_617.out - h5diff_617.out.err - h5diff_618.out - h5diff_618.out.err - h5diff_619.out - h5diff_619.out.err - h5diff_621.out - h5diff_621.out.err - h5diff_622.out - h5diff_622.out.err - h5diff_623.out - h5diff_623.out.err - h5diff_624.out - h5diff_624.out.err - h5diff_625.out - h5diff_625.out.err - h5diff_626.out - h5diff_626.out.err - h5diff_627.out - h5diff_627.out.err - h5diff_628.out - h5diff_628.out.err - h5diff_629.out - h5diff_629.out.err - h5diff_640.out - h5diff_640.out.err - h5diff_641.out - h5diff_641.out.err - h5diff_642.out - h5diff_642.out.err - h5diff_643.out - h5diff_643.out.err - h5diff_644.out - h5diff_644.out.err - h5diff_645.out - h5diff_645.out.err - h5diff_646.out - h5diff_646.out.err - h5diff_70.out - h5diff_70.out.err - h5diff_700.out - h5diff_700.out.err - h5diff_701.out - h5diff_701.out.err - h5diff_702.out - h5diff_702.out.err - h5diff_703.out - h5diff_703.out.err - h5diff_704.out - h5diff_704.out.err - h5diff_705.out - h5diff_705.out.err - h5diff_706.out - h5diff_706.out.err - h5diff_707.out - h5diff_707.out.err - h5diff_708.out - h5diff_708.out.err - h5diff_709.out - h5diff_709.out.err - h5diff_710.out - h5diff_710.out.err - h5diff_80.out - h5diff_80.out.err - h5diff_90.out - h5diff_90.out.err - h5diff_v1.out - h5diff_v1.out.err - h5diff_v2.out - h5diff_v2.out.err - h5diff_v3.out - h5diff_v3.out.err - ) - set_tests_properties (H5DIFF-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5DIFF-clearall-objects PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - set (last_test "H5DIFF-clearall-objects") - endif (HDF5_ENABLE_USING_MEMCHECKER) - -# ############################################################################ -# # Common usage -# ############################################################################ - -# 1.0 -ADD_H5_TEST (h5diff_10 0 -h) - -# 1.1 normal mode -ADD_H5_TEST (h5diff_11 1 ${FILE1} ${FILE2}) - -# 1.2 normal mode with objects -ADD_H5_TEST (h5diff_12 1 ${FILE1} ${FILE2} g1/dset1 g1/dset2) - -# 1.3 report mode -ADD_H5_TEST (h5diff_13 1 -r ${FILE1} ${FILE2}) - -# 1.4 report mode with objects -ADD_H5_TEST (h5diff_14 1 -r ${FILE1} ${FILE2} g1/dset1 g1/dset2) - -# 1.5 with -d -ADD_H5_TEST (h5diff_15 1 --report --delta=5 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 1.6.1 with -p (int) -ADD_H5_TEST (h5diff_16_1 1 -v -p 0.02 ${FILE1} ${FILE1} g1/dset5 g1/dset6) - -# 1.6.2 with -p (unsigned long_long) -ADD_H5_TEST (h5diff_16_2 1 --verbose --relative=0.02 ${FILE1} ${FILE1} g1/dset7 g1/dset8) - -# 1.6.3 with -p (double) -ADD_H5_TEST (h5diff_16_3 1 -v -p 0.02 ${FILE1} ${FILE1} g1/dset9 g1/dset10) - -# 1.7 verbose mode -ADD_H5_TEST (h5diff_17 1 -v ${FILE1} ${FILE2}) - -# 1.7 test 32-bit INFINITY -ADD_H5_TEST (h5diff_171 0 -v ${FILE1} ${FILE1} /g1/fp19 /g1/fp19_COPY) - -# 1.7 test 64-bit INFINITY -ADD_H5_TEST (h5diff_172 0 -v ${FILE1} ${FILE1} /g1/fp20 /g1/fp20_COPY) - -# 1.8 quiet mode -ADD_H5_TEST (h5diff_18 1 -q ${FILE1} ${FILE2}) - -# 1.8 -v and -q -ADD_H5_TEST (h5diff_18_1 2 -v -q ${FILE1} ${FILE2}) - -# ############################################################################## -# # not comparable types -# ############################################################################## - -# 2.0 -ADD_H5_TEST (h5diff_20 0 -v ${FILE3} ${FILE3} dset g1) - -# 2.1 -ADD_H5_TEST (h5diff_21 0 -v ${FILE3} ${FILE3} dset l1) - -# 2.2 -ADD_H5_TEST (h5diff_22 0 -v ${FILE3} ${FILE3} dset t1) - -# ############################################################################## -# # compare groups, types, links (no differences and differences) -# ############################################################################## - -# 2.3 -ADD_H5_TEST (h5diff_23 0 -v ${FILE3} ${FILE3} g1 g1) - -# 2.4 -ADD_H5_TEST (h5diff_24 0 -v ${FILE3} ${FILE3} t1 t1) - -# 2.5 -ADD_H5_TEST (h5diff_25 0 -v ${FILE3} ${FILE3} l1 l1) - -# 2.6 -ADD_H5_TEST (h5diff_26 0 -v ${FILE3} ${FILE3} g1 g2) - -# 2.7 -ADD_H5_TEST (h5diff_27 1 -v ${FILE3} ${FILE3} t1 t2) - -# 2.8 -ADD_H5_TEST (h5diff_28 1 -v ${FILE3} ${FILE3} l1 l2) - -# ############################################################################## -# # Dataset datatypes -# ############################################################################## - -# 5.0 -ADD_H5_TEST (h5diff_50 1 -v ${FILE4} ${FILE4} dset0a dset0b) - -# 5.1 -ADD_H5_TEST (h5diff_51 1 -v ${FILE4} ${FILE4} dset1a dset1b) - -# 5.2 -ADD_H5_TEST (h5diff_52 1 -v ${FILE4} ${FILE4} dset2a dset2b) - -# 5.3 -ADD_H5_TEST (h5diff_53 1 -v ${FILE4} ${FILE4} dset3a dset4b) - -# 5.4 -ADD_H5_TEST (h5diff_54 1 -v ${FILE4} ${FILE4} dset4a dset4b) - -# 5.5 -ADD_H5_TEST (h5diff_55 1 -v ${FILE4} ${FILE4} dset5a dset5b) - -# 5.6 -ADD_H5_TEST (h5diff_56 1 -v ${FILE4} ${FILE4} dset6a dset6b) - -# 5.7 -ADD_H5_TEST (h5diff_57 0 -v ${FILE4} ${FILE4} dset7a dset7b) - -# 5.8 (region reference) -ADD_H5_TEST (h5diff_58 1 -v ${FILE7} ${FILE8} refreg) - -# test for both dset and attr with same type but with different size -# ( HDDFV-7942 ) -ADD_H5_TEST (h5diff_59 0 -v ${FILE4} ${FILE4} dset11a dset11b) - -# ############################################################################## -# # Error messages -# ############################################################################## - -# 6.0: Check if the command line number of arguments is less than 3 -ADD_H5_TEST (h5diff_600 1 ${FILE1}) - -# 6.1: Check if non-exist object name is specified -ADD_H5_TEST (h5diff_601 2 ${FILE1} ${FILE1} nono_obj) - -# ############################################################################## -# # -d -# ############################################################################## - -# 6.3: negative value -ADD_H5_TEST (h5diff_603 1 -d -4 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.4: zero -ADD_H5_TEST (h5diff_604 1 -d 0 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.5: non number -ADD_H5_TEST (h5diff_605 1 -d u ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.6: hexadecimal -ADD_H5_TEST (h5diff_606 1 -d 0x1 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.7: string -ADD_H5_TEST (h5diff_607 1 -d "1" ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.8: use system epsilon -ADD_H5_TEST (h5diff_608 1 --use-system-epsilon ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.9: number larger than biggest difference -ADD_H5_TEST (h5diff_609 0 -d 200 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.10: number smaller than smallest difference -ADD_H5_TEST (h5diff_610 1 -d 1 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# ############################################################################## -# # -p -# ############################################################################## - -# 6.12: negative value -ADD_H5_TEST (h5diff_612 1 -p -4 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.13: zero -ADD_H5_TEST (h5diff_613 1 -p 0 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.14: non number -ADD_H5_TEST (h5diff_614 1 -p u ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.15: hexadecimal -ADD_H5_TEST (h5diff_615 1 -p 0x1 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.16: string -ADD_H5_TEST (h5diff_616 1 -p "0.21" ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.17: repeated option -ADD_H5_TEST (h5diff_617 1 -p 0.21 -p 0.22 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.18: number larger than biggest difference -ADD_H5_TEST (h5diff_618 0 -p 2 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.19: number smaller than smallest difference -ADD_H5_TEST (h5diff_619 1 -p 0.005 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# ############################################################################## -# # -n -# ############################################################################## - -# 6.21: negative value -ADD_H5_TEST (h5diff_621 1 -n -4 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.22: zero -ADD_H5_TEST (h5diff_622 1 -n 0 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.23: non number -ADD_H5_TEST (h5diff_623 1 -n u ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.24: hexadecimal -ADD_H5_TEST (h5diff_624 1 -n 0x1 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.25: string -ADD_H5_TEST (h5diff_625 1 -n "2" ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.26: repeated option -ADD_H5_TEST (h5diff_626 1 -n 2 -n 3 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.27: number larger than biggest difference -ADD_H5_TEST (h5diff_627 1 --count=200 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.28: number smaller than smallest difference -ADD_H5_TEST (h5diff_628 1 -n 1 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# Disabling this test as it hangs - LRK 20090618 -# 6.29 non valid files -#ADD_H5_TEST (h5diff_629 2 file1.h6 file2.h6) - -# ############################################################################## -# # NaN -# ############################################################################## -# 6.30: test (NaN == NaN) must be true based on our documentation -- XCAO -ADD_H5_TEST (h5diff_630 0 -v -d "0.0001" ${FILE1} ${FILE1} g1/fp18 g1/fp18_COPY) -ADD_H5_TEST (h5diff_631 0 -v --use-system-epsilon ${FILE1} ${FILE1} g1/fp18 g1/fp18_COPY) - -# ############################################################################## -# 7. attributes -# ############################################################################## -ADD_H5_TEST (h5diff_70 1 -v ${FILE5} ${FILE6}) - -# ################################################## -# attrs with verbose option level -# ################################################## -ADD_H5_TEST (h5diff_700 1 -v1 ${FILE5} ${FILE6}) -ADD_H5_TEST (h5diff_701 1 -v2 ${FILE5} ${FILE6}) -ADD_H5_TEST (h5diff_702 1 --verbose=1 ${FILE5} ${FILE6}) -ADD_H5_TEST (h5diff_703 1 --verbose=2 ${FILE5} ${FILE6}) - -# same attr number , all same attr name -ADD_H5_TEST (h5diff_704 1 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2} /g) - -# same attr number , some same attr name -ADD_H5_TEST (h5diff_705 1 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2} /dset) - -# same attr number , all different attr name -ADD_H5_TEST (h5diff_706 1 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2} /ntype) - -# different attr number , same attr name (intersected) -ADD_H5_TEST (h5diff_707 1 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2} /g2) - -# different attr number , all different attr name -ADD_H5_TEST (h5diff_708 1 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2} /g3) - -# when no attributes exist in both objects -ADD_H5_TEST (h5diff_709 0 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2} /g4) - -# file vs file -ADD_H5_TEST (h5diff_710 1 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2}) - -# ############################################################################## -# 8. all dataset datatypes -# ############################################################################## -ADD_H5_TEST (h5diff_80 1 -v ${FILE7} ${FILE8}) - -# 9. compare a file with itself -ADD_H5_TEST (h5diff_90 0 -v ${FILE2} ${FILE2}) - -# 10. read by hyperslab, print indexes -ADD_H5_TEST (h5diff_100 1 -v ${FILE9} ${FILE10}) - -# 11. floating point comparison -# double value -ADD_H5_TEST (h5diff_101 1 -v ${FILE1} ${FILE1} g1/d1 g1/d2) - -# float value -ADD_H5_TEST (h5diff_102 1 -v ${FILE1} ${FILE1} g1/fp1 g1/fp2) - -# with --use-system-epsilon for double value. expect less differences -ADD_H5_TEST (h5diff_103 1 -v --use-system-epsilon ${FILE1} ${FILE1} g1/d1 -g1/d2) - -# with --use-system-epsilon for float value. expect less differences -ADD_H5_TEST (h5diff_104 1 -v --use-system-epsilon ${FILE1} ${FILE1} g1/fp1 -g1/fp2) - -# not comparable -c flag -ADD_H5_TEST (h5diff_200 0 ${FILE2} ${FILE2} g2/dset1 g2/dset2) - -ADD_H5_TEST (h5diff_201 0 -c ${FILE2} ${FILE2} g2/dset1 g2/dset2) - -ADD_H5_TEST (h5diff_202 0 -c ${FILE2} ${FILE2} g2/dset2 g2/dset3) - -ADD_H5_TEST (h5diff_203 0 -c ${FILE2} ${FILE2} g2/dset3 g2/dset4) - -ADD_H5_TEST (h5diff_204 0 -c ${FILE2} ${FILE2} g2/dset4 g2/dset5) - -ADD_H5_TEST (h5diff_205 0 -c ${FILE2} ${FILE2} g2/dset5 g2/dset6) - -# not comparable in compound -ADD_H5_TEST (h5diff_206 0 -c ${FILE2} ${FILE2} g2/dset7 g2/dset8) - -ADD_H5_TEST (h5diff_207 0 -c ${FILE2} ${FILE2} g2/dset8 g2/dset9) - -# not comparable in dataspace of zero dimension size -ADD_H5_TEST (h5diff_208 0 -c ${FILE19} ${FILE20}) - -# non-comparable dataset with comparable attribute, and other comparable datasets. -# All the rest comparables should display differences. -ADD_H5_TEST (h5diff_220 1 -c non_comparables1.h5 non_comparables2.h5 /g1) - -# comparable dataset with non-comparable attribute and other comparable attributes. -# Also test non-compatible attributes with different type, dimention, rank. -# All the rest comparables should display differences. -ADD_H5_TEST (h5diff_221 1 -c non_comparables1.h5 non_comparables2.h5 /g2) - -# entire file -# All the rest comparables should display differences -ADD_H5_TEST (h5diff_222 1 -c non_comparables1.h5 non_comparables2.h5) - -# non-comparable test for common objects (same name) with different object types -# (HDFFV-7644) -ADD_H5_TEST (h5diff_223 0 -c non_comparables1.h5 non_comparables2.h5 /diffobjtypes) -# swap files -ADD_H5_TEST (h5diff_224 0 -c non_comparables2.h5 non_comparables1.h5 /diffobjtypes) - -# ############################################################################## -# # Links compare without --follow-symlinks nor --no-dangling-links -# ############################################################################## -# test for bug1749 -ADD_H5_TEST (h5diff_300 1 -v ${FILE12} ${FILE12} /link_g1 /link_g2) - -# ############################################################################## -# # Links compare with --follow-symlinks Only -# ############################################################################## -# soft links file to file -ADD_H5_TEST (h5diff_400 0 --follow-symlinks -v ${FILE13} ${FILE13}) - -# softlink vs dset" -ADD_H5_TEST (h5diff_401 1 --follow-symlinks -v ${FILE13} ${FILE13} /softlink_dset1_1 /target_dset2) - -# dset vs softlink" -ADD_H5_TEST (h5diff_402 1 --follow-symlinks -v ${FILE13} ${FILE13} /target_dset2 /softlink_dset1_1) - -# softlink vs softlink" -ADD_H5_TEST (h5diff_403 1 --follow-symlinks -v ${FILE13} ${FILE13} /softlink_dset1_1 /softlink_dset2) - -# extlink vs extlink (FILE)" -ADD_H5_TEST (h5diff_404 0 --follow-symlinks -v ${FILE15} ${FILE15}) - -# extlink vs dset" -ADD_H5_TEST (h5diff_405 1 --follow-symlinks -v ${FILE15} ${FILE16} /ext_link_dset1 /target_group2/x_dset) - -# dset vs extlink" -ADD_H5_TEST (h5diff_406 1 --follow-symlinks -v ${FILE16} ${FILE15} /target_group2/x_dset /ext_link_dset1) - -# extlink vs extlink" -ADD_H5_TEST (h5diff_407 1 --follow-symlinks -v ${FILE15} ${FILE15} /ext_link_dset1 /ext_link_dset2) - -# softlink vs extlink" -ADD_H5_TEST (h5diff_408 1 --follow-symlinks -v ${FILE13} ${FILE15} /softlink_dset1_1 /ext_link_dset2) - -# extlink vs softlink " -ADD_H5_TEST (h5diff_409 1 --follow-symlinks -v ${FILE15} ${FILE13} /ext_link_dset2 /softlink_dset1_1) - -# linked_softlink vs linked_softlink (FILE)" -ADD_H5_TEST (h5diff_410 0 --follow-symlinks -v ${FILE14} ${FILE14}) - -# dset2 vs linked_softlink_dset1" -ADD_H5_TEST (h5diff_411 1 --follow-symlinks -v ${FILE14} ${FILE14} /target_dset2 /softlink1_to_slink2) - -# linked_softlink_dset1 vs dset2" -ADD_H5_TEST (h5diff_412 1 --follow-symlinks -v ${FILE14} ${FILE14} /softlink1_to_slink2 /target_dset2) - -# linked_softlink_to_dset1 vs linked_softlink_to_dset2" -ADD_H5_TEST (h5diff_413 1 --follow-symlinks -v ${FILE14} ${FILE14} /softlink1_to_slink2 /softlink2_to_slink2) - -# group vs linked_softlink_group1" -ADD_H5_TEST (h5diff_414 1 --follow-symlinks -v ${FILE14} ${FILE14} /target_group /softlink3_to_slink2) - -# linked_softlink_group1 vs group" -ADD_H5_TEST (h5diff_415 1 --follow-symlinks -v ${FILE14} ${FILE14} /softlink3_to_slink2 /target_group) - -# linked_softlink_to_group1 vs linked_softlink_to_group2" -ADD_H5_TEST (h5diff_416 0 --follow-symlinks -v ${FILE14} ${FILE14} /softlink3_to_slink2 /softlink4_to_slink2) - -# non-exist-softlink vs softlink" -ADD_H5_TEST (h5diff_417 1 --follow-symlinks -v ${FILE13} ${FILE13} /softlink_noexist /softlink_dset2) - -# softlink vs non-exist-softlink" -ADD_H5_TEST (h5diff_418 1 --follow-symlinks -v ${FILE13} ${FILE13} /softlink_dset2 /softlink_noexist) - -# non-exist-extlink_file vs extlink" -ADD_H5_TEST (h5diff_419 1 --follow-symlinks -v ${FILE15} ${FILE15} /ext_link_noexist2 /ext_link_dset2) - -# exlink vs non-exist-extlink_file" -ADD_H5_TEST (h5diff_420 1 --follow-symlinks -v ${FILE15} ${FILE15} /ext_link_dset2 /ext_link_noexist2) - -# extlink vs non-exist-extlink_obj" -ADD_H5_TEST (h5diff_421 1 --follow-symlinks -v ${FILE15} ${FILE15} /ext_link_dset2 /ext_link_noexist1) - -# non-exist-extlink_obj vs extlink" -ADD_H5_TEST (h5diff_422 1 --follow-symlinks -v ${FILE15} ${FILE15} /ext_link_noexist1 /ext_link_dset2) - -# extlink_to_softlink_to_dset1 vs dset2" -ADD_H5_TEST (h5diff_423 1 --follow-symlinks -v ${FILE17} ${FILE18} /ext_link_to_slink1 /dset2) - -# dset2 vs extlink_to_softlink_to_dset1" -ADD_H5_TEST (h5diff_424 1 --follow-symlinks -v ${FILE18} ${FILE17} /dset2 /ext_link_to_slink1) - -# extlink_to_softlink_to_dset1 vs extlink_to_softlink_to_dset2" -ADD_H5_TEST (h5diff_425 1 --follow-symlinks -v ${FILE17} ${FILE17} /ext_link_to_slink1 /ext_link_to_slink2) - -# ############################################################################## -# # Dangling links compare (--follow-symlinks and --no-dangling-links) -# ############################################################################## -# dangling links --follow-symlinks (FILE to FILE) -ADD_H5_TEST (h5diff_450 1 --follow-symlinks -v ${DANGLE_LINK_FILE1} ${DANGLE_LINK_FILE2}) - -# dangling links --follow-symlinks and --no-dangling-links (FILE to FILE) -ADD_H5_TEST (h5diff_451 2 --follow-symlinks -v --no-dangling-links ${DANGLE_LINK_FILE1} ${DANGLE_LINK_FILE2}) - -# try --no-dangling-links without --follow-symlinks options -ADD_H5_TEST (h5diff_452 2 --no-dangling-links ${FILE13} ${FILE13}) - -# dangling link found for soft links (FILE to FILE) -ADD_H5_TEST (h5diff_453 2 --follow-symlinks -v --no-dangling-links ${FILE13} ${FILE13}) - -# dangling link found for soft links (obj to obj) -ADD_H5_TEST (h5diff_454 2 --follow-symlinks -v --no-dangling-links ${FILE13} ${FILE13} /softlink_dset2 /softlink_noexist) - -# dangling link found for soft links (obj to obj) Both dangle links -ADD_H5_TEST (h5diff_455 2 --follow-symlinks -v --no-dangling-links ${FILE13} ${FILE13} /softlink_noexist /softlink_noexist) - -# dangling link found for ext links (FILE to FILE) -ADD_H5_TEST (h5diff_456 2 --follow-symlinks -v --no-dangling-links ${FILE15} ${FILE15}) - -# dangling link found for ext links (obj to obj). target file exist -ADD_H5_TEST (h5diff_457 2 --follow-symlinks -v --no-dangling-links ${FILE15} ${FILE15} /ext_link_dset1 /ext_link_noexist1) - -# dangling link found for ext links (obj to obj). target file NOT exist -ADD_H5_TEST (h5diff_458 2 --follow-symlinks -v --no-dangling-links ${FILE15} ${FILE15} /ext_link_dset1 /ext_link_noexist2) - -# dangling link found for ext links (obj to obj). Both dangle links -ADD_H5_TEST (h5diff_459 2 --follow-symlinks -v --no-dangling-links ${FILE15} ${FILE15} /ext_link_noexist1 /ext_link_noexist2) - -# dangling link --follow-symlinks (obj vs obj) -# (HDFFV-7836) -ADD_H5_TEST (h5diff_465 0 --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1) -# (HDFFV-7835) -# soft dangling vs. soft dangling -ADD_H5_TEST (h5diff_466 0 -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1) -# soft link vs. soft dangling -ADD_H5_TEST (h5diff_467 1 -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link2) -# ext dangling vs. ext dangling -ADD_H5_TEST (h5diff_468 0 -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link4) -# ext link vs. ext dangling -ADD_H5_TEST (h5diff_469 1 -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link2) - -#--------------------------------------------------- -# dangling links without follow symlink -# (HDFFV-7998) -# test - soft dangle links (same and different paths), -# - external dangle links (same and different paths) -ADD_H5_TEST (h5diff_471 1 -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5) -ADD_H5_TEST (h5diff_472 0 -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1) -ADD_H5_TEST (h5diff_473 1 -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link4) -ADD_H5_TEST (h5diff_474 0 -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link4) -ADD_H5_TEST (h5diff_475 1 -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link1) - - -# ############################################################################## -# # test for group diff recursivly -# ############################################################################## -# root -ADD_H5_TEST (h5diff_500 1 -v ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} / /) -ADD_H5_TEST (h5diff_501 1 -v --follow-symlinks ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} / /) - -# root vs group -ADD_H5_TEST (h5diff_502 1 -v ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} / /grp1/grp2/grp3) - -# group vs group (same name and structure) -ADD_H5_TEST (h5diff_503 0 -v ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /grp1 /grp1) - -# group vs group (different name and structure) -ADD_H5_TEST (h5diff_504 1 -v ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /grp1/grp2 /grp1/grp2/grp3) - -# groups vs soft-link -ADD_H5_TEST (h5diff_505 0 -v ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /grp1 /slink_grp1) -ADD_H5_TEST (h5diff_506 0 -v --follow-symlinks ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /grp1/grp2 /slink_grp2) - -# groups vs ext-link -ADD_H5_TEST (h5diff_507 0 -v ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /grp1 /elink_grp1) -ADD_H5_TEST (h5diff_508 0 -v --follow-symlinks ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /grp1 /elink_grp1) - -# soft-link vs ext-link -ADD_H5_TEST (h5diff_509 0 -v ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /slink_grp1 /elink_grp1) -ADD_H5_TEST (h5diff_510 0 -v --follow-symlinks ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /slink_grp1 /elink_grp1) - -# circled ext links -ADD_H5_TEST (h5diff_511 1 -v ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /grp10 /grp11) -ADD_H5_TEST (h5diff_512 1 -v --follow-symlinks ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /grp10 /grp11) - -# circled soft2ext-link vs soft2ext-link -ADD_H5_TEST (h5diff_513 1 -v ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /slink_grp10 /slink_grp11) -ADD_H5_TEST (h5diff_514 1 -v --follow-symlinks ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /slink_grp10 /slink_grp11) - -############################################################################### -# Test for group recursive diff via multi-linked external links -# With follow-symlinks, file $GRP_RECURSE1_EXT and $GRP_RECURSE2_EXT1 should -# be same with the external links. -############################################################################### -# file vs file -ADD_H5_TEST (h5diff_515 1 -v ${GRP_RECURSE1_EXT} ${GRP_RECURSE2_EXT1}) -ADD_H5_TEST (h5diff_516 0 -v --follow-symlinks ${GRP_RECURSE1_EXT} ${GRP_RECURSE2_EXT1}) -# group vs group -ADD_H5_TEST (h5diff_517 1 -v ${GRP_RECURSE1_EXT} ${GRP_RECURSE2_EXT1} /g1) -ADD_H5_TEST (h5diff_518 0 -v --follow-symlinks ${GRP_RECURSE1_EXT} ${GRP_RECURSE2_EXT1} /g1) - -# ############################################################################## -# # Exclude objects (--exclude-path) -# ############################################################################## -# -# Same structure, same names and different value. -# -# Exclude the object with different value. Expect return - same -ADD_H5_TEST (h5diff_480 0 -v --exclude-path /group1/dset3 ${EXCLUDE_FILE1_1} ${EXCLUDE_FILE1_2}) -# Verify different by not excluding. Expect return - diff -ADD_H5_TEST (h5diff_481 1 -v ${EXCLUDE_FILE1_1} ${EXCLUDE_FILE1_2}) - -# -# Different structure, different names. -# -# Exclude all the different objects. Expect return - same -ADD_H5_TEST (h5diff_482 0 -v --exclude-path "/group1" --exclude-path "/dset1" ${EXCLUDE_FILE2_1} ${EXCLUDE_FILE2_2}) -# Exclude only some different objects. Expect return - diff -ADD_H5_TEST (h5diff_483 1 -v --exclude-path "/group1" ${EXCLUDE_FILE2_1} ${EXCLUDE_FILE2_2}) - -# Exclude from group compare -ADD_H5_TEST (h5diff_484 0 -v --exclude-path "/dset3" ${EXCLUDE_FILE1_1} ${EXCLUDE_FILE1_2} /group1) - -# -# Only one file contains unique objs. Common objs are same. -# (HDFFV-7837) -# -ADD_H5_TEST (h5diff_485 0 -v --exclude-path "/group1" h5diff_exclude3-1.h5 h5diff_exclude3-2.h5) -ADD_H5_TEST (h5diff_486 0 -v --exclude-path "/group1" h5diff_exclude3-2.h5 h5diff_exclude3-1.h5) -ADD_H5_TEST (h5diff_487 1 -v --exclude-path "/group1/dset" h5diff_exclude3-1.h5 h5diff_exclude3-2.h5) - - - -# ############################################################################## -# # diff various multiple vlen and fixed strings in a compound type dataset -# ############################################################################## -ADD_H5_TEST (h5diff_530 0 -v ${COMP_VL_STRS_FILE} ${COMP_VL_STRS_FILE} /group /group_copy) - -# ############################################################################## -# # Test container types (array,vlen) with multiple nested compound types -# # Complex compound types in dataset and attribute -# ############################################################################## -ADD_H5_TEST (h5diff_540 1 -v ${COMPS_ARRAY_VLEN_FILE1} ${COMPS_ARRAY_VLEN_FILE2}) - -# ############################################################################## -# # Test mutually exclusive options -# ############################################################################## -# -# Test with -d , -p and --use-system-epsilon. -ADD_H5_TEST (h5diff_640 1 -v -d 5 -p 0.05 --use-system-epsilon ${FILE1} ${FILE2} /g1/dset3 /g1/dset4) -ADD_H5_TEST (h5diff_641 1 -v -d 5 -p 0.05 ${FILE1} ${FILE2} /g1/dset3 /g1/dset4) -ADD_H5_TEST (h5diff_642 1 -v -p 0.05 -d 5 ${FILE1} ${FILE2} /g1/dset3 /g1/dset4) -ADD_H5_TEST (h5diff_643 1 -v -d 5 --use-system-epsilon ${FILE1} ${FILE2} /g1/dset3 /g1/dset4) -ADD_H5_TEST (h5diff_644 1 -v --use-system-epsilon -d 5 ${FILE1} ${FILE2} /g1/dset3 /g1/dset4) -ADD_H5_TEST (h5diff_645 1 -v -p 0.05 --use-system-epsilon ${FILE1} ${FILE2} /g1/dset3 /g1/dset4) -ADD_H5_TEST (h5diff_646 1 -v --use-system-epsilon -p 0.05 ${FILE1} ${FILE2} /g1/dset3 /g1/dset4) - -# VDS -ADD_H5_TEST (h5diff_v1 0 -v ${FILEV1} ${FILEV2}) -ADD_H5_TEST (h5diff_v2 0 -r ${FILEV1} ${FILEV2}) -ADD_H5_TEST (h5diff_v3 0 -c ${FILEV1} ${FILEV2}) - diff --git a/tools/h5diff/Makefile.am b/tools/h5diff/Makefile.am deleted file mode 100644 index 7e3b620..0000000 --- a/tools/h5diff/Makefile.am +++ /dev/null @@ -1,61 +0,0 @@ -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -## -## Makefile.am -## Run automake to generate a Makefile.in from this file. -# -# HDF5 Library Makefile(.in) -# - -include $(top_srcdir)/config/commence.am - -# Include src and tools/lib directories -AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib - -# Always build and test h5diff but build and test ph5diff only if parallel -# is enabled. -if BUILD_PARALLEL_CONDITIONAL - H5PDIFF=ph5diff - TEST_SCRIPT_PARA=testph5diff.sh -endif - -# Our main target, h5diff -bin_PROGRAMS=h5diff $(H5PDIFF) - -# Add h5diff specific linker flags here -h5diff_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) - -# Test programs and scripts -TEST_PROG=h5diffgentest -TEST_SCRIPT=testh5diff.sh - -check_PROGRAMS=$(TEST_PROG) -check_SCRIPTS=$(TEST_SCRIPT) $(TEST_SCRIPT_PARA) -# The parallel test script testph5diff.sh actually depends on testh5diff.sh. -SCRIPT_DEPEND=h5diff$(EXEEXT) $(H5PDIFF) testh5diff.sh - -# Source files for the program -h5diff_SOURCES=h5diff_main.c h5diff_common.c -ph5diff_SOURCES=ph5diff_main.c h5diff_common.c -h5diffgentest_SOURCES=h5diffgentest.c - -# Programs depend on the main HDF5 library and tools library -LDADD=$(LIBH5TOOLS) $(LIBHDF5) - -# Temporary files. *.h5 are generated by h5diff. They should -# be copied to the testfiles/ directory if update is required -CHECK_CLEANFILES+=*.h5 expect_sorted actual_sorted - -include $(top_srcdir)/config/conclude.am - diff --git a/tools/h5diff/h5diff_common.c b/tools/h5diff/h5diff_common.c deleted file mode 100644 index 2453ffc..0000000 --- a/tools/h5diff/h5diff_common.c +++ /dev/null @@ -1,607 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include -#include -#include "H5private.h" -#include "h5diff.h" -#include "h5diff_common.h" -#include "h5tools.h" -#include "h5tools_utils.h" - -static int check_n_input( const char* ); -static int check_p_input( const char* ); -static int check_d_input( const char* ); - -/* - * Command-line options: The user can specify short or long-named - * parameters. - */ -static const char *s_opts = "hVrv:qn:d:p:Nc"; -static struct long_options l_opts[] = { - { "help", no_arg, 'h' }, - { "version", no_arg, 'V' }, - { "report", no_arg, 'r' }, - { "verbose", optional_arg, 'v' }, - { "quiet", no_arg, 'q' }, - { "count", require_arg, 'n' }, - { "delta", require_arg, 'd' }, - { "relative", require_arg, 'p' }, - { "nan", no_arg, 'N' }, - { "compare", no_arg, 'c' }, - { "use-system-epsilon", no_arg, 'e' }, - { "follow-symlinks", no_arg, 'l' }, - { "no-dangling-links", no_arg, 'x' }, - { "exclude-path", require_arg, 'E' }, - { NULL, 0, '\0' } -}; - -/*------------------------------------------------------------------------- - * Function: check_options - * - * Purpose: parse command line input - * - *------------------------------------------------------------------------- - */ -static void check_options(diff_opt_t* options) -{ - /*-------------------------------------------------------------- - * check for mutually exclusive options - *--------------------------------------------------------------*/ - - /* check between -d , -p, --use-system-epsilon. - * These options are mutually exclusive. - */ - if ((options->d + options->p + options->use_system_epsilon) > 1) - { - printf("%s error: -d, -p and --use-system-epsilon options are mutually-exclusive;\n", PROGRAMNAME); - printf("use no more than one.\n"); - printf("Try '-h' or '--help' option for more information or see the %s entry in the 'HDF5 Reference Manual'.\n", PROGRAMNAME); - h5diff_exit(EXIT_FAILURE); - } -} - - -/*------------------------------------------------------------------------- - * Function: parse_command_line - * - * Purpose: parse command line input - * - *------------------------------------------------------------------------- - */ - -void parse_command_line(int argc, - const char* argv[], - const char** fname1, - const char** fname2, - const char** objname1, - const char** objname2, - diff_opt_t* options) -{ - int i; - int opt; - struct exclude_path_list *exclude_head, *exclude_prev, *exclude_node; - - /* process the command-line */ - memset(options, 0, sizeof (diff_opt_t)); - - /* assume equal contents initially */ - options->contents = 1; - - /* NaNs are handled by default */ - options->do_nans = 1; - - /* not Listing objects that are not comparable */ - options->m_list_not_cmp = 0; - - /* initially no not-comparable. */ - /**this is bad in mixing option with results**/ - options->not_cmp=0; - - /* init for exclude-path option */ - exclude_head = NULL; - - /* parse command line options */ - while ((opt = get_option(argc, argv, s_opts, l_opts)) != EOF) - { - switch ((char)opt) - { - default: - usage(); - h5diff_exit(EXIT_FAILURE); - case 'h': - usage(); - h5diff_exit(EXIT_SUCCESS); - case 'V': - print_version(h5tools_getprogname()); - h5diff_exit(EXIT_SUCCESS); - case 'v': - options->m_verbose = 1; - /* This for loop is for handling style like - * -v, -v1, --verbose, --verbose=1. - */ - for (i = 1; i < argc; i++) - { - /* - * short opt - */ - if (!strcmp (argv[i], "-v")) /* no arg */ - { - opt_ind--; - options->m_verbose_level = 0; - break; - } - else if (!strncmp (argv[i], "-v", (size_t)2)) - { - options->m_verbose_level = atoi(&argv[i][2]); - break; - } - - /* - * long opt - */ - if (!strcmp (argv[i], "--verbose")) /* no arg */ - { - options->m_verbose_level = 0; - break; - } - else if ( !strncmp (argv[i], "--verbose", (size_t)9) && argv[i][9]=='=') - { - options->m_verbose_level = atoi(&argv[i][10]); - break; - } - } - break; - case 'q': - /* use quiet mode; supress the message "0 differences found" */ - options->m_quiet = 1; - break; - case 'r': - options->m_report = 1; - break; - case 'l': - options->follow_links = TRUE; - break; - case 'x': - options->no_dangle_links = 1; - break; - case 'E': - options->exclude_path = 1; - - /* create linked list of excluding objects */ - if( (exclude_node = (struct exclude_path_list*) HDmalloc(sizeof(struct exclude_path_list))) == NULL) - { - printf("Error: lack of memory!\n"); - h5diff_exit(EXIT_FAILURE); - } - - /* init */ - exclude_node->obj_path = (char*)opt_arg; - exclude_node->obj_type = H5TRAV_TYPE_UNKNOWN; - exclude_prev = exclude_head; - - if (NULL == exclude_head) - { - exclude_head = exclude_node; - exclude_head->next = NULL; - } - else - { - while(NULL != exclude_prev->next) - exclude_prev=exclude_prev->next; - - exclude_node->next = NULL; - exclude_prev->next = exclude_node; - } - break; - case 'd': - options->d=1; - - if ( check_d_input( opt_arg )==-1) - { - printf("<-d %s> is not a valid option\n", opt_arg ); - usage(); - h5diff_exit(EXIT_FAILURE); - } - options->delta = atof( opt_arg ); - - /* -d 0 is the same as default */ - if (H5_DBL_ABS_EQUAL(options->delta, (double)0.0F)) - options->d=0; - - break; - - case 'p': - - options->p=1; - if ( check_p_input( opt_arg )==-1) - { - printf("<-p %s> is not a valid option\n", opt_arg ); - usage(); - h5diff_exit(EXIT_FAILURE); - } - options->percent = atof( opt_arg ); - - /* -p 0 is the same as default */ - if (H5_DBL_ABS_EQUAL(options->percent, (double)0.0F)) - options->p = 0; - - break; - - case 'n': - - options->n=1; - if ( check_n_input( opt_arg )==-1) - { - printf("<-n %s> is not a valid option\n", opt_arg ); - usage(); - h5diff_exit(EXIT_FAILURE); - } - options->count = HDstrtoull(opt_arg, NULL, 0); - break; - - case 'N': - options->do_nans = 0; - break; - - case 'c': - options->m_list_not_cmp = 1; - break; - - case 'e': - options->use_system_epsilon = 1; - break; - } - } - - /* check options */ - check_options(options); - - /* if exclude-path option is used, keep the exclude path list */ - if (options->exclude_path) - options->exclude = exclude_head; - - /* check for file names to be processed */ - if (argc <= opt_ind || argv[ opt_ind + 1 ] == NULL) - { - error_msg("missing file names\n"); - usage(); - h5diff_exit(EXIT_FAILURE); - } - - *fname1 = argv[ opt_ind ]; - *fname2 = argv[ opt_ind + 1 ]; - *objname1 = argv[ opt_ind + 2 ]; - - if ( *objname1 == NULL ) - { - *objname2 = NULL; - return; - } - - if ( argv[ opt_ind + 3 ] != NULL) - { - *objname2 = argv[ opt_ind + 3 ]; - } - else - { - *objname2 = *objname1; - } - - -} - - -/*------------------------------------------------------------------------- - * Function: print_info - * - * Purpose: print several information messages after h5diff call - * - *------------------------------------------------------------------------- - */ - - void print_info(diff_opt_t* options) - { - if (options->m_quiet || options->err_stat ) - return; - - if (options->cmn_objs==0) - { - printf("No common objects found. Files are not comparable.\n"); - if (!options->m_verbose) - printf("Use -v for a list of objects.\n"); - } - - if (options->not_cmp==1) - { - if ( options->m_list_not_cmp == 0 ) - { - printf("--------------------------------\n"); - printf("Some objects are not comparable\n"); - printf("--------------------------------\n"); - if (options->m_verbose) - printf("Use -c for a list of objects without details of differences.\n"); - else - printf("Use -c for a list of objects.\n"); - } - - - } - - } - -/*------------------------------------------------------------------------- - * Function: check_n_input - * - * Purpose: check for valid input - * - * Return: 1 for ok, -1 for fail - * - * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu - * - * Date: May 9, 2003 - * - * Comments: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -H5_ATTR_PURE static int -check_n_input( const char *str ) -{ - unsigned i; - char c; - - for ( i = 0; i < strlen(str); i++) - { - c = str[i]; - if ( i==0 ) - { - if ( c < 49 || c > 57 ) /* ascii values between 1 and 9 */ - return -1; - } - else - if ( c < 48 || c > 57 ) /* 0 also */ - return -1; - } - return 1; -} - -/*------------------------------------------------------------------------- - * Function: check_p_input - * - * Purpose: check for a valid p option input - * - * Return: 1 for ok, -1 for fail - * - * Date: May 9, 2003 - * - * Comments: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static int -check_p_input( const char *str ) -{ - double x; - - /* - the atof return value on a hexadecimal input is different - on some systems; we do a character check for this - */ - if (strlen(str)>2 && str[0]=='0' && str[1]=='x') - return -1; - - x=atof(str); - if (x<0) - return -1; - - return 1; -} - -/*------------------------------------------------------------------------- - * Function: check_d_input - * - * Purpose: check for a valid d option input - * - * Return: 1 for ok, -1 for fail - * - * Date: November 11, 2007 - * - * Comments: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static int -check_d_input( const char *str ) -{ - double x; - - /* - the atof return value on a hexadecimal input is different - on some systems; we do a character check for this - */ - if (strlen(str)>2 && str[0]=='0' && str[1]=='x') - return -1; - - x=atof(str); - if (x <0) - return -1; - - return 1; -} - -/*------------------------------------------------------------------------- - * Function: usage - * - * Purpose: print a usage message - * - * Return: void - * - *------------------------------------------------------------------------- - */ - -void usage(void) -{ - printf("usage: h5diff [OPTIONS] file1 file2 [obj1[ obj2]] \n"); - printf(" file1 File name of the first HDF5 file\n"); - printf(" file2 File name of the second HDF5 file\n"); - printf(" [obj1] Name of an HDF5 object, in absolute path\n"); - printf(" [obj2] Name of an HDF5 object, in absolute path\n"); - printf("\n"); - printf(" OPTIONS\n"); - printf(" -h, --help\n"); - printf(" Print a usage message and exit.\n"); - printf(" -V, --version\n"); - printf(" Print version number and exit.\n"); - printf(" -r, --report\n"); - printf(" Report mode. Print differences.\n"); - printf(" -v --verbose\n"); - printf(" Verbose mode. Print differences information and list of objects.\n"); - printf(" -vN --verbose=N\n"); - printf(" Verbose mode with level. Print differences and list of objects.\n"); - printf(" Level of detail depends on value of N:\n"); - printf(" 0 : Identical to '-v' or '--verbose'.\n"); - printf(" 1 : All level 0 information plus one-line attribute\n"); - printf(" status summary.\n"); - printf(" 2 : All level 1 information plus extended attribute\n"); - printf(" status report.\n"); - printf(" -q, --quiet\n"); - printf(" Quiet mode. Do not produce output.\n"); - printf(" --follow-symlinks\n"); - printf(" Follow symbolic links (soft links and external links and compare the)\n"); - printf(" links' target objects.\n"); - printf(" If symbolic link(s) with the same name exist in the files being\n"); - printf(" compared, then determine whether the target of each link is an existing\n"); - printf(" object (dataset, group, or named datatype) or the link is a dangling\n"); - printf(" link (a soft or external link pointing to a target object that does\n"); - printf(" not yet exist).\n"); - printf(" - If both symbolic links are dangling links, they are treated as being\n"); - printf(" the same; by default, h5diff returns an exit code of 0.\n"); - printf(" If, however, --no-dangling-links is used with --follow-symlinks,\n"); - printf(" this situation is treated as an error and h5diff returns an\n"); - printf(" exit code of 2.\n"); - printf(" - If only one of the two links is a dangling link,they are treated as\n"); - printf(" being different and h5diff returns an exit code of 1.\n"); - printf(" If, however, --no-dangling-links is used with --follow-symlinks,\n"); - printf(" this situation is treated as an error and h5diff returns an\n"); - printf(" exit code of 2.\n"); - printf(" - If both symbolic links point to existing objects, h5diff compares the\n"); - printf(" two objects.\n"); - printf(" If any symbolic link specified in the call to h5diff does not exist,\n"); - printf(" h5diff treats it as an error and returns an exit code of 2.\n"); - printf(" --no-dangling-links\n"); - printf(" Must be used with --follow-symlinks option; otherwise, h5diff shows\n"); - printf(" error message and returns an exit code of 2.\n"); - printf(" Check for any symbolic links (soft links or external links) that do not\n"); - printf(" resolve to an existing object (dataset, group, or named datatype).\n"); - printf(" If any dangling link is found, this situation is treated as an error\n"); - printf(" and h5diff returns an exit code of 2.\n"); - printf(" -c, --compare\n"); - printf(" List objects that are not comparable\n"); - printf(" -N, --nan\n"); - printf(" Avoid NaNs detection\n"); - printf(" -n C, --count=C\n"); - printf(" Print differences up to C. C must be a positive integer.\n"); - printf(" -d D, --delta=D\n"); - printf(" Print difference if (|a-b| > D). D must be a positive number.\n"); - printf(" Can not use with '-p' or '--use-system-epsilon'.\n"); - printf(" -p R, --relative=R\n"); - printf(" Print difference if (|(a-b)/b| > R). R must be a positive number.\n"); - printf(" Can not use with '-d' or '--use-system-epsilon'.\n"); - printf(" --use-system-epsilon\n"); - printf(" Print difference if (|a-b| > EPSILON), EPSILON is system defined value.\n"); - printf(" If the system epsilon is not defined,one of the following predefined\n"); - printf(" values will be used:\n"); - printf(" FLT_EPSILON = 1.19209E-07 for floating-point type\n"); - printf(" DBL_EPSILON = 2.22045E-16 for double precision type\n"); - printf(" Can not use with '-p' or '-d'.\n"); - printf(" --exclude-path \"path\" \n"); - printf(" Exclude the specified path to an object when comparing files or groups.\n"); - printf(" If a group is excluded, all member objects will also be excluded.\n"); - printf(" The specified path is excluded wherever it occurs.\n"); - printf(" This flexibility enables the same option to exclude either objects that\n"); - printf(" exist only in one file or common objects that are known to differ.\n"); - printf("\n"); - printf(" When comparing files, \"path\" is the absolute path to the excluded;\n"); - printf(" object; when comparing groups, \"path\" is similar to the relative\n"); - printf(" path from the group to the excluded object. This \"path\" can be\n"); - printf(" taken from the first section of the output of the --verbose option.\n"); - printf(" For example, if you are comparing the group /groupA in two files and\n"); - printf(" you want to exclude /groupA/groupB/groupC in both files, the exclude\n"); - printf(" option would read as follows:\n"); - printf(" --exclude-path \"/groupB/groupC\"\n"); - printf("\n"); - printf(" If there are multiple paths to an object, only the specified path(s)\n"); - printf(" will be excluded; the comparison will include any path not explicitly\n"); - printf(" excluded.\n"); - printf(" This option can be used repeatedly to exclude multiple paths.\n"); - printf("\n"); - - printf(" Modes of output:\n"); - printf(" Default mode: print the number of differences found and where they occured\n"); - printf(" -r Report mode: print the above plus the differences\n"); - printf(" -v Verbose mode: print the above plus a list of objects and warnings\n"); - printf(" -q Quiet mode: do not print output\n"); - - printf("\n"); - - printf(" File comparison:\n"); - printf(" If no objects [obj1[ obj2]] are specified, the h5diff comparison proceeds as\n"); - printf(" a comparison of the two files' root groups. That is, h5diff first compares\n"); - printf(" the names of root group members, generates a report of root group objects\n"); - printf(" that appear in only one file or in both files, and recursively compares\n"); - printf(" common objects.\n"); - printf("\n"); - - printf(" Object comparison:\n"); - printf(" 1) Groups \n"); - printf(" First compares the names of member objects (relative path, from the\n"); - printf(" specified group) and generates a report of objects that appear in only\n"); - printf(" one group or in both groups. Common objects are then compared recursively.\n"); - printf(" 2) Datasets \n"); - printf(" Array rank and dimensions, datatypes, and data values are compared.\n"); - printf(" 3) Datatypes \n"); - printf(" The comparison is based on the return value of H5Tequal.\n"); - printf(" 4) Symbolic links \n"); - printf(" The paths to the target objects are compared.\n"); - printf(" (The option --follow-symlinks overrides the default behavior when\n"); - printf(" symbolic links are compared.).\n"); - printf("\n"); - - printf(" Exit code:\n"); - printf(" 0 if no differences, 1 if differences found, 2 if error\n"); - printf("\n"); - printf(" Examples of use:\n"); - printf(" 1) h5diff file1 file2 /g1/dset1 /g1/dset2\n"); - printf(" Compares object '/g1/dset1' in file1 with '/g1/dset2' in file2\n"); - printf("\n"); - printf(" 2) h5diff file1 file2 /g1/dset1\n"); - printf(" Compares object '/g1/dset1' in both files\n"); - printf("\n"); - printf(" 3) h5diff file1 file2\n"); - printf(" Compares all objects in both files\n"); - printf("\n"); - printf(" Notes:\n"); - printf(" file1 and file2 can be the same file.\n"); - printf(" Use h5diff file1 file1 /g1/dset1 /g1/dset2 to compare\n"); - printf(" '/g1/dset1' and '/g1/dset2' in the same file\n"); - printf("\n"); -} diff --git a/tools/h5diff/h5diff_common.h b/tools/h5diff/h5diff_common.h deleted file mode 100644 index 5b1317f..0000000 --- a/tools/h5diff/h5diff_common.h +++ /dev/null @@ -1,36 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#ifndef H5DIFFCOMMON_H__ -#define H5DIFFCOMMON_H__ - -#include "h5tools.h" -/* Name of tool */ -#define PROGRAMNAME "h5diff" - -#ifdef __cplusplus -extern "C" { -#endif - -void usage(void); -void parse_command_line(int argc, const char* argv[], const char** fname1, const char** fname2, const char** objname1, const char** objname2, diff_opt_t* options); -void h5diff_exit(int status); -void print_info(diff_opt_t* options); - -#ifdef __cplusplus -} -#endif - -#endif /* H5DIFFCOMMON_H__ */ diff --git a/tools/h5diff/h5diff_main.c b/tools/h5diff/h5diff_main.c deleted file mode 100644 index cdaca29..0000000 --- a/tools/h5diff/h5diff_main.c +++ /dev/null @@ -1,145 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include -#include -#include -#include "H5private.h" -#include "h5diff.h" -#include "h5diff_common.h" -#include "h5tools.h" -#include "h5tools_utils.h" - - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: h5diff main program - * - * Return: An exit status of 0 means no differences were found, 1 means some - * differences were found. - * - * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu - * - * Date: May 9, 2003 - * - * Comments: - * - * Modifications: July 2004 - * Introduced the four modes: - * Normal mode: print the number of differences found and where they occured - * Report mode: print the above plus the differences - * Verbose mode: print the above plus a list of objects and warnings - * Quiet mode: do not print output - * - * November 2004: Leon Arber (larber@uiuc.edu) - * Additions that allow h5diff to be run in parallel - * - * February 2005: Leon Arber (larber@uiuc.edu) - * h5diff and ph5diff split into two files, one that is used - * to build a serial h5diff and one used to build a parallel h5diff - * Common functions have been moved to h5diff_common.c - * - * October 2005 - * Introduced a new field 'not_cmp' to 'diff_opt_t' that detects - * if some objects are not comparable and prints the message - * "Some objects are not comparable" - * - * February 2007 - * Added comparison for dataset regions. - * Added support for reading and comparing by hyperslabs for large files. - * Inclusion of a relative error formula to compare floating - * point numbers in order to deal with floating point uncertainty. - * Printing of dataset dimensions along with dataset name - * - * November 19, 2007 - * adopted the syntax h5diff [OPTIONS] file1 file2 [obj1[obj2]] - * - *------------------------------------------------------------------------- - */ - - -int main(int argc, const char *argv[]) -{ - int ret; - const char *fname1 = NULL; - const char *fname2 = NULL; - const char *objname1 = NULL; - const char *objname2 = NULL; - hsize_t nfound=0; - diff_opt_t options; - - h5tools_setprogname(PROGRAMNAME); - h5tools_setstatus(EXIT_SUCCESS); - - /* Initialize h5tools lib */ - h5tools_init(); - - /*------------------------------------------------------------------------- - * process the command-line - *------------------------------------------------------------------------- - */ - parse_command_line(argc, argv, &fname1, &fname2, &objname1, &objname2, &options); - - /*------------------------------------------------------------------------- - * do the diff - *------------------------------------------------------------------------- - */ - - nfound = h5diff(fname1,fname2,objname1,objname2,&options); - - print_info(&options); - - /*------------------------------------------------------------------------- - * exit code - * 1 if differences, 0 if no differences, 2 if error - *------------------------------------------------------------------------- - */ - - ret = (nfound == 0 ? 0 : 1 ); - - /* if graph difference return 1 for differences */ - if ( options.contents == 0 ) - ret = 1; - - /* and return 2 for error */ - if (options.err_stat) - ret = 2; - - return ret; -} - -/*------------------------------------------------------------------------- - * Function: h5diff_exit - * - * Purpose: dismiss phdiff worker processes and exit - * - * Return: none - * - * Programmer: Albert Cheng - * Date: Feb 6, 2005 - * - * Comments: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -H5_ATTR_NORETURN void -h5diff_exit(int status) -{ - HDexit(status); -} - diff --git a/tools/h5diff/h5diffgentest.c b/tools/h5diff/h5diffgentest.c deleted file mode 100644 index 339ff6c..0000000 --- a/tools/h5diff/h5diffgentest.c +++ /dev/null @@ -1,7385 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -* Copyright by The HDF Group. * -* Copyright by the Board of Trustees of the University of Illinois. * -* All rights reserved. * -* * -* This file is part of HDF5. The full HDF5 copyright notice, including * -* terms governing use, modification, and redistribution, is contained in * -* the files COPYING and Copyright.html. COPYING can be found at the root * -* of the source code distribution tree; Copyright.html can be found at the * -* root level of an installed copy of the electronic HDF5 document set and * -* is linked from the top-level documents page. It can also be found at * -* http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * -* access to either file, you may request a copy from help@hdfgroup.org. * -* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include -#include -#include "hdf5.h" -#include "H5private.h" - -/* - * The output functions need a temporary buffer to hold a piece of the - * dataset while it's being printed. This constant sets the limit on the - * size of that temporary buffer in bytes. For efficiency's sake, choose the - * largest value suitable for your machine (for testing use a small value). - */ -/* Maximum size used in a call to malloc for a dataset - * NOTE: this value should stay in sync with the value defined in the tools - * library file: h5tools_utils.h - */ -size_t H5TOOLS_MALLOCSIZE = (128 * 1024 * 1024); - -/*------------------------------------------------------------------------- -* Program: h5diffgentest -* -* Purpose: generate files for h5diff testing -* -* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu -* -* Date: November 12, 2003 -* -*------------------------------------------------------------------------- -*/ - -#define FILE1 "h5diff_basic1.h5" -#define FILE2 "h5diff_basic2.h5" -#define FILE3 "h5diff_types.h5" -#define FILE4 "h5diff_dtypes.h5" -#define FILE5 "h5diff_attr1.h5" -#define FILE6 "h5diff_attr2.h5" -#define FILE7 "h5diff_dset1.h5" -#define FILE8 "h5diff_dset2.h5" -#define FILE9 "h5diff_hyper1.h5" -#define FILE10 "h5diff_hyper2.h5" -#define FILE11 "h5diff_empty.h5" -#define FILE12 "h5diff_links.h5" -#define FILE13 "h5diff_softlinks.h5" -#define FILE14 "h5diff_linked_softlink.h5" -#define FILE15 "h5diff_extlink_src.h5" -#define FILE16 "h5diff_extlink_trg.h5" -#define FILE17 "h5diff_ext2softlink_src.h5" -#define FILE18 "h5diff_ext2softlink_trg.h5" -#define FILE19 "h5diff_dset_zero_dim_size1.h5" -#define FILE20 "h5diff_dset_zero_dim_size2.h5" -#define FILE21 "h5diff_dset_idx1.h5" -#define FILE22 "h5diff_dset_idx2.h5" -#define DANGLE_LINK_FILE1 "h5diff_danglelinks1.h5" -#define DANGLE_LINK_FILE2 "h5diff_danglelinks2.h5" -#define GRP_RECURSE_FILE1 "h5diff_grp_recurse1.h5" -#define GRP_RECURSE_FILE2 "h5diff_grp_recurse2.h5" -/* same structure via external links through files */ -#define GRP_RECURSE1_EXT "h5diff_grp_recurse_ext1.h5" -#define GRP_RECURSE2_EXT1 "h5diff_grp_recurse_ext2-1.h5" -#define GRP_RECURSE2_EXT2 "h5diff_grp_recurse_ext2-2.h5" -#define GRP_RECURSE2_EXT3 "h5diff_grp_recurse_ext2-3.h5" -/* same structure, same obj name with different value */ -#define EXCLUDE_FILE1_1 "h5diff_exclude1-1.h5" -#define EXCLUDE_FILE1_2 "h5diff_exclude1-2.h5" -/* different structure and obj names */ -#define EXCLUDE_FILE2_1 "h5diff_exclude2-1.h5" -#define EXCLUDE_FILE2_2 "h5diff_exclude2-2.h5" -/* only one file has unique objs */ -#define EXCLUDE_FILE3_1 "h5diff_exclude3-1.h5" -#define EXCLUDE_FILE3_2 "h5diff_exclude3-2.h5" -/* compound type with multiple vlen string types */ -#define COMP_VL_STRS_FILE "h5diff_comp_vl_strs.h5" -/* attribute compre with verbose level */ -#define ATTR_VERBOSE_LEVEL_FILE1 "h5diff_attr_v_level1.h5" -#define ATTR_VERBOSE_LEVEL_FILE2 "h5diff_attr_v_level2.h5" -/* file containing valid/invalid enum value mix */ -#define ENUM_INVALID_VALUES "h5diff_enum_invalid_values.h5" -/* file with container types (array,vlen) with multiple compounds */ -#define COMPS_COMPLEX1 "compounds_array_vlen1.h5" -#define COMPS_COMPLEX2 "compounds_array_vlen2.h5" -/* non-comparable dataset and attribute */ -#define NON_COMPARBLES1 "non_comparables1.h5" -#define NON_COMPARBLES2 "non_comparables2.h5" - -#define UIMAX 4294967295u /*Maximum value for a variable of type unsigned int */ -#define STR_SIZE 3 -#define GBLL ((unsigned long long) 1024 * 1024 *1024 ) - -#define MY_LINKCLASS 187 - -/* Dataspace of 0 dimension size */ -#define SPACE1_RANK 2 -#define SPACE1_DIM1 0 -#define SPACE1_DIM2 0 - -/* A UD link traversal function. Shouldn't actually be called. */ -static hid_t UD_traverse(H5_ATTR_UNUSED const char * link_name, H5_ATTR_UNUSED hid_t cur_group, - H5_ATTR_UNUSED const void * udata, H5_ATTR_UNUSED size_t udata_size, H5_ATTR_UNUSED hid_t lapl_id) -{ - return -1; -} -const H5L_class_t UD_link_class[1] = {{ - H5L_LINK_CLASS_T_VERS, /* H5L_class_t version */ - (H5L_type_t)MY_LINKCLASS, /* Link type id number */ - "UD link class", /* name for debugging */ - NULL, /* Creation callback */ - NULL, /* Move/rename callback */ - NULL, /* Copy callback */ - UD_traverse, /* The actual traversal function */ - NULL, /* Deletion callback */ - NULL /* Query callback */ -}}; - - -/*------------------------------------------------------------------------- -* prototypes -*------------------------------------------------------------------------- -*/ - -/* tests called in main() */ -static int test_basic(const char *fname1, const char *fname2, const char *fname3); -static int test_types(const char *fname); -static int test_datatypes(const char *fname); -static int test_attributes(const char *fname,int make_diffs); -static int test_datasets(const char *fname,int make_diffs); -static int test_special_datasets(const char *fname,int make_diffs); -static int test_hyperslab(const char *fname,int make_diffs); -static int test_link_name(const char *fname1); -static int test_soft_links(const char *fname1); -static int test_linked_softlinks(const char *fname1); -static int test_external_links(const char *fname1, const char *fname2); -static int test_ext2soft_links(const char *fname1, const char *fname2); -static int test_dangle_links(const char *fname1, const char *fname2); -static int test_group_recurse(const char *fname1, const char *fname2); -static int test_group_recurse2(void); -static int test_exclude_obj1(const char *fname1, const char *fname2); -static int test_exclude_obj2(const char *fname1, const char *fname2); -static int test_exclude_obj3(const char *fname1, const char *fname2); -static int test_comp_vlen_strings(const char *fname1, const char *grp_name, int is_file_new); -static int test_attributes_verbose_level(const char *fname1, const char *fname2); -static int test_enums(const char *fname); -static void test_comps_array (const char *fname, const char *dset, const char *attr,int diff, int is_file_new); -static void test_comps_vlen (const char *fname, const char *dset,const char *attr, int diff, int is_file_new); -static void test_comps_array_vlen (const char *fname, const char *dset, const char *attr, int diff, int is_file_new); -static void test_comps_vlen_arry (const char *fname, const char *dset,const char *attr, int diff, int is_file_new); -static void test_data_nocomparables (const char *fname, int diff); -static void test_objs_nocomparables (const char *fname1, const char *fname2); - -/* called by test_attributes() and test_datasets() */ -static void write_attr_in(hid_t loc_id,const char* dset_name,hid_t fid,int make_diffs); -static void write_dset_in(hid_t loc_id,const char* dset_name,hid_t fid,int make_diffs); -static void gen_datareg(hid_t fid,int make_diffs); -/* utilities */ -static int write_attr(hid_t loc_id,int rank,hsize_t *dims,const char *name,hid_t tid,void *buf); -static int write_dset(hid_t loc_id,int rank,hsize_t *dims,const char *name,hid_t tid,void *buf); -static int gen_dataset_idx(const char *file, int format); - - -/*------------------------------------------------------------------------- -* Function: main -* -* Purpose: main program -* -*------------------------------------------------------------------------- -*/ - -int main(void) -{ - test_basic(FILE1, FILE2, FILE11); - - test_types (FILE3); - test_datatypes(FILE4); - - /* generate 2 files, the second call creates a similar file with differences */ - test_attributes(FILE5,0); - test_attributes(FILE6,1); - - /* test attributes with verbose level */ - test_attributes_verbose_level(ATTR_VERBOSE_LEVEL_FILE1, ATTR_VERBOSE_LEVEL_FILE2); - - /* generate 2 files, the second call creates a similar file with differences */ - test_datasets(FILE7,0); - test_datasets(FILE8,1); - - /* generate 2 files, the second call creates a similar file with differences */ - test_hyperslab(FILE9,0); - test_hyperslab(FILE10,1); - - test_link_name(FILE12); - - test_soft_links(FILE13); - - test_linked_softlinks(FILE14); - - test_external_links(FILE15, FILE16); - - test_ext2soft_links(FILE17, FILE18); - - /* generate 2 files, the second call creates a similar file with differences */ - test_special_datasets(FILE19,0); - test_special_datasets(FILE20,1); - - /* - * Generate 2 files: FILE21 with old format; FILE22 with new format - * Create 2 datasets in each file: - * One dataset: chunked layout, w/o filters, fixed dimension - * One dataset: chunked layout, w/ filters, fixed dimension - */ - gen_dataset_idx(FILE21, 0); - gen_dataset_idx(FILE22, 1); - - test_dangle_links(DANGLE_LINK_FILE1, DANGLE_LINK_FILE2); - - test_group_recurse(GRP_RECURSE_FILE1, GRP_RECURSE_FILE2); - test_group_recurse2(); - - test_exclude_obj1(EXCLUDE_FILE1_1, EXCLUDE_FILE1_2); - test_exclude_obj2(EXCLUDE_FILE2_1, EXCLUDE_FILE2_2); - test_exclude_obj3(EXCLUDE_FILE3_1, EXCLUDE_FILE3_2); - - /* diff various multiple vlen and fixlen string types in a compound dataset */ - test_comp_vlen_strings(COMP_VL_STRS_FILE, "group", 1); - test_comp_vlen_strings(COMP_VL_STRS_FILE, "group_copy", 0); - - /* diff when invalid enum values are present. - * This will probably grow to involve more extensive testing of - * enums so it has been given its own test file and test (apart - * from the basic type testing). - */ - test_enums(ENUM_INVALID_VALUES); - - /* ------------------------------------------------- - * Create test files with dataset and attribute with container types - * (array, vlen) with multiple nested compound types. - */ - /* file1 */ - test_comps_array(COMPS_COMPLEX1,"dset1", "attr1", 0, 1); - test_comps_vlen(COMPS_COMPLEX1,"dset2", "attr2", 0, 0); - test_comps_array_vlen(COMPS_COMPLEX1,"dset3", "attr3", 0, 0); - test_comps_vlen_arry(COMPS_COMPLEX1,"dset4", "attr4", 0, 0); - /* file2 */ - test_comps_array(COMPS_COMPLEX2,"dset1", "attr1", 5, 1); - test_comps_vlen(COMPS_COMPLEX2,"dset2", "attr2",5, 0); - test_comps_array_vlen(COMPS_COMPLEX2,"dset3", "attr3", 5, 0); - test_comps_vlen_arry(COMPS_COMPLEX2,"dset4", "attr4", 5, 0); - - /*------------------------------------------------- - * Create test files with non-comparable dataset and attributes with - * comparable datasets and attributes. All the comparables should display - * differences. - */ - test_data_nocomparables(NON_COMPARBLES1,0); - test_data_nocomparables(NON_COMPARBLES2,5); - - /* common objects (same name) with different object types. HDFFV-7644 */ - test_objs_nocomparables(NON_COMPARBLES1, NON_COMPARBLES2); - - return 0; -} - -/*------------------------------------------------------------------------- -* Function: test_basic -* -* Purpose: Create basic test files, first two contains different data, the -* third one is just an empty file. -* -*------------------------------------------------------------------------- -*/ - -static -int test_basic(const char *fname1, const char *fname2, const char *fname3) -{ - hid_t fid1, fid2; - hid_t gid1, gid2, gid3; - hsize_t dims1[1] = { 6 }; - hsize_t dims2[2] = { 3,2 }; - - /* create the empty file */ - if ((fid1=H5Fcreate(fname3, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0){ - fprintf(stderr, "empty file (%s) creation failed.\n", fname3); - goto out; - } - if (H5Fclose(fid1) < 0){ - fprintf(stderr, "empty file (%s) close failed.\n", fname3); - goto out; - } - - /*------------------------------------------------------------------------- - * create two files - *------------------------------------------------------------------------- - */ - - if (( fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0 ) - goto out; - if (( fid2 = H5Fcreate (fname2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0 ) - goto out; - - /*------------------------------------------------------------------------- - * create groups - *------------------------------------------------------------------------- - */ - - gid1 = H5Gcreate2(fid1, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - gid2 = H5Gcreate2(fid2, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - gid3 = H5Gcreate2(fid2, "g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /*------------------------------------------------------------------------- - * tests: - * # 1.1 normal mode - * # 1.2 normal mode with objects - * # 1.3 report mode - * # 1.4 report mode with objects - * # 1.5 with -d - *------------------------------------------------------------------------- - */ - - { - double data1[3][2] = {{ 1.0F, 1.0F}, { 1.00F, 1.000F}, { 0.0F, 0.0F}}; - double data2[3][2] = {{ 0.0F, 1.1F}, { 1.01F, 1.001F}, { 0.0F, 1.0F}}; - double data3[3][2] = {{100.0F, 100.0F}, {100.00F, 100.000F}, {100.0F, 100.0F}}; - double data4[3][2] = {{105.0F, 120.0F}, {160.00F, 95.000F}, { 80.0F, 40.0F}}; - - write_dset(gid1,2,dims2,"dset1",H5T_NATIVE_DOUBLE,data1); - write_dset(gid2,2,dims2,"dset2",H5T_NATIVE_DOUBLE,data2); - write_dset(gid1,2,dims2,"dset3",H5T_NATIVE_DOUBLE,data3); - write_dset(gid2,2,dims2,"dset4",H5T_NATIVE_DOUBLE,data4); - write_dset(gid2,2,dims2,"dset1",H5T_NATIVE_DOUBLE,data2); - - } - /*------------------------------------------------------------------------- - * relative error, compare divide by zero, both zero - * # 1.6.1 with -p (int) - *------------------------------------------------------------------------- - */ - { - int data5[3][2] = {{100,100},{100,0},{0,100}}; - int data6[3][2] = {{120,80}, {0,100},{0,50}}; - - write_dset(gid1,2,dims2,"dset5",H5T_NATIVE_INT,data5); - write_dset(gid1,2,dims2,"dset6",H5T_NATIVE_INT,data6); - - } - - /*------------------------------------------------------------------------- - * relative error, compare divide by zero, both zero - * # 1.6.2 with -p (unsigned long long) - *------------------------------------------------------------------------- - */ - { - unsigned long long data7[3][2] = {{100,100},{100,0},{0,100}}; - unsigned long long data8[3][2] = {{120,80}, {0,100},{0,50}}; - - write_dset(gid1,2,dims2,"dset7",H5T_NATIVE_ULLONG,data7); - write_dset(gid1,2,dims2,"dset8",H5T_NATIVE_ULLONG,data8); - - } - - /*------------------------------------------------------------------------- - * relative error, compare divide by zero, both zero - * # 1.6.3 with -p (double) - * - * A B 1-B/A % - * 100 120 0.2 20 - * 100 80 0.2 20 - * 100 0 1 100 - * 0 100 #DIV/0! #DIV/0! - * 0 0 #DIV/0! #DIV/0! - * 100 50 0.5 50 - *------------------------------------------------------------------------- - */ - { - double data9[3][2] = {{100.0F, 100.0F}, {100.0F, 0.0F}, {0.0F, 100.0F}}; - double data10[3][2] ={{120.0F, 80.0F}, { 0.0F, 100.0F}, {0.0F, 50.0F}}; - - write_dset(gid1,2,dims2,"dset9",H5T_NATIVE_DOUBLE,data9); - write_dset(gid1,2,dims2,"dset10",H5T_NATIVE_DOUBLE,data10); - - } - - - /*------------------------------------------------------------------------- - * test floating point comparison - *------------------------------------------------------------------------- - */ - { - /* epsilon = 0.0000001 = 1e-7 - * system epsilon for float : FLT_EPSILON = 1.19209E-07 - */ - float data11[3][2] ={{0.000000f,0.0000001f},{0.0000001f, 0.00000022f},{0.0000001f,0.0000001f}}; - float data12[3][2] ={{0.000000f,0.0000002f},{0.0000003f,0.0000001f},{0.000000f,0.0000001f}}; - /* epsilon = 0.0000000000000001 = 1e-16 - * system epsilon for double : DBL_EPSILON = 2.22045E-16 - */ - double data13[3][2] ={ - {H5_DOUBLE(0.0000000000000000), H5_DOUBLE(0.0000000000000001)}, - {H5_DOUBLE(0.0000000000000001), H5_DOUBLE(0.0000000000000000)}, - {H5_DOUBLE(0.00000000000000033), H5_DOUBLE(0.0000000000000001)}}; - double data14[3][2] ={ - {H5_DOUBLE(0.0000000000000000), H5_DOUBLE(0.0000000000000004)}, - {H5_DOUBLE(0.0000000000000002), H5_DOUBLE(0.0000000000000001)}, - {H5_DOUBLE(0.0000000000000001), H5_DOUBLE(0.00000000000000000)}}; - - write_dset(gid1,2,dims2,"fp1",H5T_NATIVE_FLOAT,data11); - write_dset(gid1,2,dims2,"fp2",H5T_NATIVE_FLOAT,data12); - write_dset(gid1,2,dims2,"d1",H5T_NATIVE_DOUBLE,data13); - write_dset(gid1,2,dims2,"d2",H5T_NATIVE_DOUBLE,data14); - - } - - -#if H5_SIZEOF_LONG_DOUBLE !=0 - { - - /*------------------------------------------------------------------------- - * H5T_NATIVE_LDOUBLE - *------------------------------------------------------------------------- - */ - - long double data15[3][2] ={{1.0L,1.0L},{1.0L,1.0L},{1.0L,1.0L}}; - - write_dset(gid1,2,dims2,"ld",H5T_NATIVE_LDOUBLE,data15); - - } -#endif - - - - /*------------------------------------------------------------------------- - * NaNs in H5T_NATIVE_FLOAT - *------------------------------------------------------------------------- - */ - { - - float data15[6]; - float data16[6]; - - data15[0] = (float)HDsqrt(-1.0F); - data15[1] = 1.0F; - data15[2] = (float)HDsqrt(-1.0F); - data15[3] = 1.0F; - data15[4] = 1.0F; - data15[5] = 1.0F; - - data16[0] = (float)HDsqrt(-1.0F); - data16[1] = (float)HDsqrt(-1.0F); - data16[2] = 1.0F; - data16[3] = 1.0F; - data16[4] = 1.0F; - data16[5] = 1.0F; - - write_dset(gid1,1,dims1,"fp15",H5T_NATIVE_FLOAT,data15); - write_dset(gid1,1,dims1,"fp16",H5T_NATIVE_FLOAT,data16); - - } - - /*------------------------------------------------------------------------- - * NaNs in H5T_NATIVE_DOUBLE - *------------------------------------------------------------------------- - */ - { - - double data17[6]; - double data18[6]; - - data17[0] = HDsqrt(-1.0F); - data17[1] = 1.0F; - data17[2] = HDsqrt(-1.0F); - data17[3] = 1.0F; - data17[4] = 1.0F; - data17[5] = 1.0F; - - data18[0] = HDsqrt(-1.0F); - data18[1] = HDsqrt(-10000.0F); - data18[2] = 1.0F; - data18[3] = 1.0F; - data18[4] = 1.0F; - data18[5] = 1.0F; - - write_dset(gid1,1,dims1,"fp17",H5T_NATIVE_DOUBLE,data17); - write_dset(gid1,1,dims1,"fp18",H5T_NATIVE_DOUBLE,data18); - write_dset(gid1,1,dims1,"fp18_COPY",H5T_NATIVE_DOUBLE,data18); - } - - /*------------------------------------------------------------------------ - * INFINITY values - *------------------------------------------------------------------------ - */ - { - float data19[6]; - double data20[6]; - - data19[0] = data19[1] = data19[2] = (float)HDlog(0.0F); - data19[3] = data19[4] = data19[5] = (float)-HDlog(0.0F); - - data20[0] = data20[1] = data20[2] = HDlog(0.0F); - data20[3] = data20[4] = data20[5] = -HDlog(0.0F); - - write_dset(gid1,1,dims1,"fp19",H5T_NATIVE_FLOAT,data19); - write_dset(gid1,1,dims1,"fp19_COPY",H5T_NATIVE_FLOAT,data19); - write_dset(gid1,1,dims1,"fp20",H5T_NATIVE_DOUBLE,data20); - write_dset(gid1,1,dims1,"fp20_COPY",H5T_NATIVE_DOUBLE,data20); - } - - /*------------------------------------------------------------------------- - * NaNs in H5T_NATIVE_DOUBLE and H5T_NATIVE_FLOAT inside H5T_COMPOUND - *------------------------------------------------------------------------- - */ - { - typedef struct cmp1_t - { - double d; - float f; - } cmp1_t; - - cmp1_t buf1[2]; - cmp1_t buf2[2]; - hsize_t dims[1] = {2}; - size_t type_size; - hid_t tid; - - buf1[0].d = HDsqrt(-1.0F); - buf1[0].f = (float)HDsqrt(-1.0F); - buf2[0].d = HDsqrt(-1.0F); - buf2[0].f = (float)HDsqrt(-1.0F); - - buf1[1].d = HDsqrt(-1.0F); - buf1[1].f = (float)HDsqrt(-1.0F); - buf2[1].d = 0.0F; - buf2[1].f = 0.0F; - - type_size = sizeof( cmp1_t ); - tid = H5Tcreate (H5T_COMPOUND, type_size ); - H5Tinsert(tid, "d", HOFFSET( cmp1_t, d ), H5T_NATIVE_DOUBLE ); - H5Tinsert(tid, "f", HOFFSET( cmp1_t, f ), H5T_NATIVE_FLOAT ); - write_dset(gid1,1,dims,"dset11",tid,buf1); - write_dset(gid1,1,dims,"dset12",tid,buf2); - H5Tclose(tid); - - - } - - /* not comparable objects */ - { - - typedef struct cmp1_t - { - double d; - int i; - } cmp1_t; - - typedef struct cmp2_t - { - int i; - double d; - } cmp2_t; - - typedef struct cmp3_t - { - int i; - } cmp3_t; - - double data2[6] = {0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F}; - int data3[6] = {0,0,0,0,0,0}; - int data4[3][2] = {{0,0},{0,0},{0,0}}; - int data5[2][2] = {{0,0},{0,0}}; - unsigned int data6[3][2] = {{0,0},{0,0},{0,0}}; - cmp1_t data7[1] = {{1.0f, 2}}; - cmp2_t data8[1] = {{1, 2.0f}}; - hsize_t dims3[2] = {2, 2}; - hsize_t dims4[1] = {1}; - size_t type_size; - hid_t tid; - - - - write_dset(gid3,1,dims1,"dset1",H5T_NATIVE_DOUBLE,NULL); - write_dset(gid3,1,dims1,"dset2",H5T_NATIVE_DOUBLE,data2); - write_dset(gid3,1,dims1,"dset3",H5T_NATIVE_INT,data3); - write_dset(gid3,2,dims2,"dset4",H5T_NATIVE_INT,data4); - write_dset(gid3,2,dims3,"dset5",H5T_NATIVE_INT,data5); - write_dset(gid3,2,dims2,"dset6",H5T_NATIVE_UINT,data6); - - /* case of compound with different type members */ - type_size = sizeof( cmp1_t ); - tid = H5Tcreate (H5T_COMPOUND, type_size ); - H5Tinsert(tid, "d", HOFFSET( cmp1_t, d ), H5T_NATIVE_DOUBLE ); - H5Tinsert(tid, "i", HOFFSET( cmp1_t, i ), H5T_NATIVE_INT ); - write_dset(gid3,1,dims4,"dset7",tid,data7); - H5Tclose(tid); - - type_size = sizeof( cmp2_t ); - tid = H5Tcreate (H5T_COMPOUND, type_size ); - H5Tinsert(tid, "i", HOFFSET( cmp2_t, i ), H5T_NATIVE_INT ); - H5Tinsert(tid, "d", HOFFSET( cmp2_t, d ), H5T_NATIVE_DOUBLE ); - write_dset(gid3,1,dims4,"dset8",tid,data8); - H5Tclose(tid); - - /* case of compound with different number of members */ - type_size = sizeof( cmp3_t ); - tid = H5Tcreate (H5T_COMPOUND, type_size ); - H5Tinsert(tid, "i", HOFFSET( cmp2_t, i ), H5T_NATIVE_INT ); - write_dset(gid3,1,dims4,"dset9",tid,NULL); - H5Tclose(tid); - - } - - - /*------------------------------------------------------------------------- - * close - *------------------------------------------------------------------------- - */ - H5Gclose(gid1); - H5Gclose(gid2); - H5Gclose(gid3); - H5Fclose(fid1); - H5Fclose(fid2); - return SUCCEED; - -out: - - return FAIL; -} - - -/*------------------------------------------------------------------------- -* Function: test_types -* -* Purpose: Compare different HDF5 object & link types: -* H5G_DATASET, H5G_TYPE, H5G_GROUP, H5G_LINK, H5G_UDLINK -* -*------------------------------------------------------------------------- -*/ -static -int test_types(const char *fname) -{ - hid_t fid1; - hid_t gid1; - hid_t gid2; - hid_t tid1; - hid_t tid2; - herr_t status; - hsize_t dims[1]={1}; - typedef struct s1_t - { - int a; - float b; - } s1_t; - typedef struct s2_t - { - int a; - } s2_t; - - /*------------------------------------------------------------------------- - * Create one file - *------------------------------------------------------------------------- - */ - fid1 = H5Fcreate (fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /*------------------------------------------------------------------------- - * H5G_DATASET - *------------------------------------------------------------------------- - */ - write_dset(fid1,1,dims,"dset",H5T_NATIVE_INT,0); - - /*------------------------------------------------------------------------- - * H5G_GROUP - *------------------------------------------------------------------------- - */ - gid1 = H5Gcreate2(fid1, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Gclose(gid1); - gid2 = H5Gcreate2(fid1, "g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Gclose(gid2); - - /*------------------------------------------------------------------------- - * H5G_TYPE - *------------------------------------------------------------------------- - */ - - /* create and commit datatype 1 */ - tid1 = H5Tcreate(H5T_COMPOUND, sizeof(s1_t)); - H5Tinsert(tid1, "a", HOFFSET(s1_t, a), H5T_NATIVE_INT); - H5Tinsert(tid1, "b", HOFFSET(s1_t, b), H5T_NATIVE_FLOAT); - H5Tcommit2(fid1, "t1", tid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Tclose(tid1); - /* create and commit datatype 2 */ - tid2 = H5Tcreate(H5T_COMPOUND, sizeof(s2_t)); - H5Tinsert(tid2, "a", HOFFSET(s2_t, a), H5T_NATIVE_INT); - H5Tcommit2(fid1, "t2", tid2, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Tclose(tid2); - - /*------------------------------------------------------------------------- - * H5G_LINK - *------------------------------------------------------------------------- - */ - - status = H5Lcreate_soft("g1", fid1, "l1", H5P_DEFAULT, H5P_DEFAULT); - status = H5Lcreate_soft("g2", fid1, "l2", H5P_DEFAULT, H5P_DEFAULT); - - /*------------------------------------------------------------------------- - * H5G_UDLINK - *------------------------------------------------------------------------- - */ - H5Lcreate_external("filename", "objname", fid1, "ext_link", H5P_DEFAULT, H5P_DEFAULT); - H5Lregister(UD_link_class); - H5Lcreate_ud(fid1, "ud_link", (H5L_type_t)MY_LINKCLASS, NULL, (size_t)0, H5P_DEFAULT, H5P_DEFAULT); - - /*------------------------------------------------------------------------- - * Close - *------------------------------------------------------------------------- - */ - status = H5Fclose(fid1); - return status; -} - - -/* - -# ############################################################################## -# # not comparable types -# ############################################################################## - -# 2.0 -TOOLTEST h5diff_20.txt file3.h5 file3.h5 -v dset g1 - -# 2.1 -TOOLTEST h5diff_21.txt file3.h5 file3.h5 -v dset l1 - -# 2.2 -TOOLTEST h5diff_22.txt file3.h5 file3.h5 -v dset t1 - -# ############################################################################## -# # compare groups, types, links (no differences and differences) -# ############################################################################## - -# 2.3 -TOOLTEST h5diff_23.txt file3.h5 file3.h5 -v g1 g1 - -# 2.4 -TOOLTEST h5diff_24.txt file3.h5 file3.h5 -v t1 t1 - -# 2.5 -TOOLTEST h5diff_25.txt file3.h5 file3.h5 -v l1 l1 - -# 2.6 -TOOLTEST h5diff_26.txt file3.h5 file3.h5 -v g1 g2 - -# 2.7 -TOOLTEST h5diff_27.txt file3.h5 file3.h5 -v t1 t2 - -# 2.8 -TOOLTEST h5diff_28.txt file3.h5 file3.h5 -v l1 l2 -*/ - -/*------------------------------------------------------------------------- -* Function: test_datatypes -* -* Purpose: test dataset datatypes -* -*------------------------------------------------------------------------- -*/ -static -int test_datatypes(const char *fname) -{ - - hid_t fid1; - hid_t dset; - hsize_t dims[2]={3,2}; - herr_t status; - char buf1a[3][2] = {{1,1},{1,1},{1,1}}; - char buf1b[3][2] = {{1,1},{3,4},{5,6}}; - short buf2a[3][2] = {{1,1},{1,1},{1,1}}; - short buf2b[3][2] = {{1,1},{3,4},{5,6}}; - int buf3a[3][2] = {{1,1},{1,1},{1,1}}; - int buf3b[3][2] = {{1,1},{3,4},{5,6}}; - long buf4a[3][2] = {{1,1},{1,1},{1,1}}; - long buf4b[3][2] = {{1,1},{3,4},{5,6}}; - float buf5a[3][2] = {{1.0F, 1.0F}, {1.0F, 1.0F}, {1.0F, 1.0F}}; - float buf5b[3][2] = {{1.0F, 1.0F}, {3.0F, 4.0F}, {5.0F, 6.0F}}; - double buf6a[3][2] = {{1.0F, 1.0F}, {1.0F, 1.0F}, {1.0F, 1.0F}}; - double buf6b[3][2] = {{1.0F, 1.0F}, {3.0F, 4.0F}, {5.0F, 6.0F}}; - - /*unsigned/signed test - signed char -128 to 127 - unsigned char 0 to 255 - */ - char buf7a[3][2] = {{-1,-128},{-1,-1},{-1,-1}}; - unsigned char buf7b[3][2] = {{1,128},{1,1},{1,1}}; - - /* long long test */ - long long buf8a[3][2] = {{1,1},{1,1},{1,1}}; - long long buf8b[3][2] = {{1,1},{3,4},{5,6}}; - unsigned long long buf9a[3][2] = {{1,1},{1,1},{1,1}}; - unsigned long long buf9b[3][2] = {{1,1},{3,4},{5,6}}; - - unsigned int buf10a[3][2] = {{UIMAX,1},{1,1},{1,1}}; - unsigned int buf10b[3][2] = {{UIMAX-1,1},{3,4},{5,6}}; - - unsigned short buf11a[3][2] = {{204,205},{2,3},{1,1}}; - unsigned int buf11b[3][2] = {{204,205},{2,3},{1,1}}; - - - /*------------------------------------------------------------------------- - * Create a file - *------------------------------------------------------------------------- - */ - fid1 = H5Fcreate (fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /*------------------------------------------------------------------------- - * Check for different storage order. Give a warning if they are different - *------------------------------------------------------------------------- - */ - - write_dset(fid1,2,dims,"dset0a",H5T_STD_I16LE,buf2a); - write_dset(fid1,2,dims,"dset0b",H5T_STD_I32LE,buf3b); - - /*------------------------------------------------------------------------- - * H5T_NATIVE_CHAR - *------------------------------------------------------------------------- - */ - write_dset(fid1,2,dims,"dset1a",H5T_NATIVE_CHAR,buf1a); - write_dset(fid1,2,dims,"dset1b",H5T_NATIVE_CHAR,buf1b); - - /*------------------------------------------------------------------------- - * H5T_NATIVE_SHORT - *------------------------------------------------------------------------- - */ - write_dset(fid1,2,dims,"dset2a",H5T_NATIVE_SHORT,buf2a); - write_dset(fid1,2,dims,"dset2b",H5T_NATIVE_SHORT,buf2b); - - /*------------------------------------------------------------------------- - * H5T_NATIVE_INT - *------------------------------------------------------------------------- - */ - write_dset(fid1,2,dims,"dset3a",H5T_NATIVE_INT,buf3a); - write_dset(fid1,2,dims,"dset3b",H5T_NATIVE_INT,buf3b); - - /*------------------------------------------------------------------------- - * H5T_NATIVE_LONG - *------------------------------------------------------------------------- - */ - write_dset(fid1,2,dims,"dset4a",H5T_NATIVE_LONG,buf4a); - write_dset(fid1,2,dims,"dset4b",H5T_NATIVE_LONG,buf4b); - - /*------------------------------------------------------------------------- - * H5T_NATIVE_FLOAT - *------------------------------------------------------------------------- - */ - write_dset(fid1,2,dims,"dset5a",H5T_NATIVE_FLOAT,buf5a); - write_dset(fid1,2,dims,"dset5b",H5T_NATIVE_FLOAT,buf5b); - - /*------------------------------------------------------------------------- - * H5T_NATIVE_DOUBLE - *------------------------------------------------------------------------- - */ - - write_dset(fid1,2,dims,"dset6a",H5T_NATIVE_DOUBLE,buf6a); - write_dset(fid1,2,dims,"dset6b",H5T_NATIVE_DOUBLE,buf6b); - - /*------------------------------------------------------------------------- - * H5T_NATIVE_CHAR and H5T_NATIVE_UCHAR - *------------------------------------------------------------------------- - */ - - write_dset(fid1,2,dims,"dset7a",H5T_NATIVE_CHAR,buf7a); - write_dset(fid1,2,dims,"dset7b",H5T_NATIVE_UCHAR,buf7b); - - /*------------------------------------------------------------------------- - * H5T_NATIVE_LLONG - *------------------------------------------------------------------------- - */ - - write_dset(fid1,2,dims,"dset8a",H5T_NATIVE_LLONG,buf8a); - write_dset(fid1,2,dims,"dset8b",H5T_NATIVE_LLONG,buf8b); - - /*------------------------------------------------------------------------- - * H5T_NATIVE_ULLONG - *------------------------------------------------------------------------- - */ - - write_dset(fid1,2,dims,"dset9a",H5T_NATIVE_ULLONG,buf9a); - write_dset(fid1,2,dims,"dset9b",H5T_NATIVE_ULLONG,buf9b); - - /*------------------------------------------------------------------------- - * H5T_NATIVE_INT - *------------------------------------------------------------------------- - */ - - write_dset(fid1,2,dims,"dset10a",H5T_NATIVE_UINT,buf10a); - write_dset(fid1,2,dims,"dset10b",H5T_NATIVE_UINT,buf10b); - - /*------------------------------------------------------------------------- - * Same type class, different size - *------------------------------------------------------------------------- - */ - write_dset(fid1,2,dims,"dset11a",H5T_STD_U16LE,buf11a); - dset=H5Dopen2 (fid1, "dset11a", H5P_DEFAULT); - write_attr(dset,2,dims,"attr",H5T_STD_U16LE,buf11a); - H5Dclose (dset); - - write_dset(fid1,2,dims,"dset11b",H5T_STD_U32LE,buf11b); - dset=H5Dopen2 (fid1, "dset11b", H5P_DEFAULT); - write_attr(dset,2,dims,"attr",H5T_STD_U32LE,buf11b); - H5Dclose (dset); - - /*------------------------------------------------------------------------- - * Close - *------------------------------------------------------------------------- - */ - status = H5Fclose(fid1); - return status; -} - -/* -# ############################################################################## -# # Dataset datatypes -# ############################################################################## - -# 5.0 -TOOLTEST h5diff_50.txt file4.h5 file4.h5 -v dset0a dset0b - -# 5.1 -TOOLTEST h5diff_51.txt file4.h5 file4.h5 -v dset1a dset1b - -# 5.2 -TOOLTEST h5diff_52.txt file4.h5 file4.h5 -v dset2a dset2b - -# 5.3 -TOOLTEST h5diff_53.txt file4.h5 file4.h5 -v dset3a dset4b - -# 5.4 -TOOLTEST h5diff_54.txt file4.h5 file4.h5 -v dset4a dset4b - -# 5.5 -TOOLTEST h5diff_55.txt file4.h5 file4.h5 -v dset5a dset5b - -# 5.6 -TOOLTEST h5diff_56.txt file4.h5 file4.h5 -v dset6a dset6b - -# 5.7 -TOOLTEST h5diff_57.txt file4.h5 file4.h5 -v dset7a dset7b - -# 5.8 (region reference) -TOOLTEST h5diff_58.txt file7.h5 file8.h5 -v refreg -*/ - -/*------------------------------------------------------------------------- -* Function: test_attributes -* -* Purpose: test attributes -* -*------------------------------------------------------------------------- -*/ -static -int test_attributes(const char *file, - int make_diffs /* flag to modify data buffers */) -{ - hid_t fid; - hid_t did; - hid_t gid; - hid_t root_id; - hid_t sid; - hsize_t dims[1]={2}; - herr_t status; - - /* Create a file */ - if((fid = H5Fcreate(file, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) - return -1; - - /* Create a 1D dataset */ - sid = H5Screate_simple(1, dims, NULL); - did = H5Dcreate2(fid, "dset", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Sclose(sid); - assert(status >= 0); - - /* Create groups */ - gid = H5Gcreate2(fid, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - root_id = H5Gopen2(fid, "/", H5P_DEFAULT); - - /*------------------------------------------------------------------------- - * write a series of attributes on the dataset, group, and root group - *------------------------------------------------------------------------- - */ - - write_attr_in(did,"dset",fid,make_diffs); - write_attr_in(gid,NULL,(hid_t)0,make_diffs); - write_attr_in(root_id,NULL,(hid_t)0,make_diffs); - - - /* Close */ - status = H5Dclose(did); - assert(status >= 0); - status = H5Gclose(gid); - assert(status >= 0); - status = H5Gclose(root_id); - assert(status >= 0); - - /* Close file */ - status = H5Fclose(fid); - assert(status >= 0); - return status; -} - - -/*------------------------------------------------------------------------- -* Function: test_attributes_verbose_level -* -* Purpose: Cresting test files for testing attributes along with -* levels of verbos option -* -*------------------------------------------------------------------------- -*/ -static int test_attributes_verbose_level(const char *fname1, const char *fname2) -{ - herr_t status = SUCCEED; - hid_t fid1 = -1, fid2 = -1; - hid_t f1_gid = -1, f2_gid = -1; - hid_t f1_gid2 = -1, f2_gid2 = -1; - hid_t f1_gid3 = -1, f2_gid3 = -1; - hid_t f1_gid4 = -1, f2_gid4 = -1; - hid_t f1_did = -1, f2_did = -1; - hid_t f1_sid = -1, f2_sid = -1; - hid_t f1_tid = -1, f2_tid = -1; - /* dset */ - hsize_t dset_dims[1]={3}; - int dset_data[3] = {0,1,2}; - - /* common attrs dim */ - hsize_t attr_dims[1]={2}; - - /* file1 attr */ - int f1_attr_idata[2]= {1,2}; /* integer */ - float f1_attr_fdata[2]= {1.1F,2.2F}; /* float */ - /* file2 attr */ - int f2_attr_idata[2]= {2,3}; /* integer */ - float f2_attr_fdata[2]= {2.1F,3.2F}; /* float */ - - - /*---------------------------------------------------------------------- - * Create file1 - *-----------------------------------------------------------------------*/ - if((fid1 = H5Fcreate(fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - /*---------------------------------- - * Groups - */ - f1_gid = H5Gcreate2(fid1, "g", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (f1_gid < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - f1_gid2 = H5Gcreate2(fid1, "g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (f1_gid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - f1_gid3 = H5Gcreate2(fid1, "g3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (f1_gid3 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - f1_gid4 = H5Gcreate2(fid1, "g4", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (f1_gid4 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - /*---------------------------------- - * Datasets - */ - f1_sid = H5Screate_simple(1, dset_dims, NULL); - f1_did = H5Dcreate2(fid1, "dset", H5T_NATIVE_INT, f1_sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (f1_did == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - status = H5Dwrite(f1_did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset_data); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname1); - status = FAIL; - goto out; - } - - /*---------------------------------- - * Named Datatype - */ - f1_tid = H5Tcopy(H5T_NATIVE_INT); - status = H5Tcommit2(fid1, "ntype", f1_tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Tcommit2 failed.\n", fname1); - status = FAIL; - goto out; - } - - - - - /*---------------------------------------------------------------------- - * Create file2 - *-----------------------------------------------------------------------*/ - if((fid2 = H5Fcreate(fname2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname2); - status = FAIL; - goto out; - } - - /*---------------------------------- - * Groups - */ - f2_gid = H5Gcreate2(fid2, "g", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (f2_gid < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - f2_gid2 = H5Gcreate2(fid2, "g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (f2_gid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - f2_gid3 = H5Gcreate2(fid2, "g3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (f2_gid3 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - f2_gid4 = H5Gcreate2(fid2, "g4", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (f2_gid4 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - /*---------------------------------- - * Datasets - */ - f2_sid = H5Screate_simple(1, dset_dims, NULL); - f2_did = H5Dcreate2(fid2, "dset", H5T_NATIVE_INT, f2_sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (f2_did == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - status = H5Dwrite(f2_did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset_data); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname2); - status = FAIL; - goto out; - } - - /*---------------------------------- - * Named Datatype - */ - f2_tid = H5Tcopy(H5T_NATIVE_INT); - status = H5Tcommit2(fid2, "ntype", f2_tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Tcommit2 failed.\n", fname2); - status = FAIL; - goto out; - } - - /*---------------------------------- - * CASE1 - Same attr number, all Same attr name - * add attr to group - */ - write_attr(f1_gid,1,attr_dims,"integer1",H5T_NATIVE_INT,f1_attr_idata); - write_attr(f1_gid,1,attr_dims,"float1",H5T_NATIVE_FLOAT,f1_attr_fdata); - - write_attr(f2_gid,1,attr_dims,"integer1",H5T_NATIVE_INT,f2_attr_idata); - write_attr(f2_gid,1,attr_dims,"float1",H5T_NATIVE_FLOAT,f2_attr_fdata); - - /*---------------------------------- - * CASE2 - Same attr number, some Same attr name - * add attr to dset - */ - write_attr(f1_did,1,attr_dims,"integer1",H5T_NATIVE_INT,f1_attr_idata); - write_attr(f1_did,1,attr_dims,"float2",H5T_NATIVE_FLOAT,f1_attr_fdata); - - write_attr(f2_did,1,attr_dims,"integer1",H5T_NATIVE_INT,f2_attr_idata); - write_attr(f2_did,1,attr_dims,"float3",H5T_NATIVE_FLOAT,f2_attr_fdata); - - /*---------------------------------- - * CASE3 - Same attr number, all different attr name - * add attr to ntype - */ - write_attr(f1_tid,1,attr_dims,"integer1",H5T_NATIVE_INT,f1_attr_idata); - write_attr(f1_tid,1,attr_dims,"float2",H5T_NATIVE_FLOAT,f1_attr_fdata); - write_attr(f1_tid,1,attr_dims,"float3",H5T_NATIVE_FLOAT,f1_attr_fdata); - - write_attr(f2_tid,1,attr_dims,"integer4",H5T_NATIVE_INT,f2_attr_idata); - write_attr(f2_tid,1,attr_dims,"float5",H5T_NATIVE_FLOAT,f2_attr_fdata); - write_attr(f2_tid,1,attr_dims,"float6",H5T_NATIVE_FLOAT,f2_attr_fdata); - - /*---------------------------------- - * CASE4 - Different attr number, some same attr name (vs file2-g2) - * add attr to g2 - */ - write_attr(f1_gid2,1,attr_dims,"integer1",H5T_NATIVE_INT,f1_attr_idata); - write_attr(f1_gid2,1,attr_dims,"float2",H5T_NATIVE_FLOAT,f1_attr_fdata); - write_attr(f1_gid2,1,attr_dims,"float3",H5T_NATIVE_FLOAT,f1_attr_fdata); - - write_attr(f2_gid2,1,attr_dims,"integer1",H5T_NATIVE_INT,f2_attr_idata); - write_attr(f2_gid2,1,attr_dims,"float2",H5T_NATIVE_FLOAT,f2_attr_fdata); - - - /*---------------------------------- - * CASE5 - Different attr number, all different attr name - * add attr to g3 - */ - write_attr(f1_gid3,1,attr_dims,"integer10",H5T_NATIVE_INT,f1_attr_idata); - write_attr(f1_gid3,1,attr_dims,"float11",H5T_NATIVE_FLOAT,f1_attr_fdata); - write_attr(f1_gid3,1,attr_dims,"float12",H5T_NATIVE_FLOAT,f1_attr_fdata); - - write_attr(f2_gid3,1,attr_dims,"integer3",H5T_NATIVE_INT,f2_attr_idata); - write_attr(f2_gid3,1,attr_dims,"float4",H5T_NATIVE_FLOAT,f2_attr_fdata); - - -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1 > 0) - H5Fclose(fid1); - if(fid2 > 0) - H5Fclose(fid2); - if(f1_gid > 0) - H5Gclose(f1_gid); - if(f2_gid > 0) - H5Gclose(f2_gid); - if(f1_gid2 > 0) - H5Gclose(f1_gid2); - if(f2_gid2 > 0) - H5Gclose(f2_gid2); - if(f1_gid3 > 0) - H5Gclose(f1_gid3); - if(f2_gid3 > 0) - H5Gclose(f2_gid3); - if(f1_gid4 > 0) - H5Gclose(f1_gid4); - if(f2_gid4 > 0) - H5Gclose(f2_gid4); - if(f1_did > 0) - H5Dclose(f1_did); - if(f2_did > 0) - H5Dclose(f2_did); - if(f1_sid > 0) - H5Sclose(f1_sid); - if(f2_sid > 0) - H5Sclose(f2_sid); - if(f1_tid > 0) - H5Tclose(f1_tid); - if(f2_tid > 0) - H5Tclose(f2_tid); - - return status; -} - - -/*------------------------------------------------------------------------- -* Function: test_datasets -* -* Purpose: Check all HDF5 classes -* H5T_INTEGER, H5T_FLOAT -* H5T_TIME, H5T_STRING, H5T_BITFIELD, H5T_OPAQUE, H5T_COMPOUND, H5T_REFERENCE, -* H5T_ENUM, H5T_VLEN, H5T_ARRAY -* -*------------------------------------------------------------------------- -*/ -static -int test_datasets(const char *file, - int make_diffs /* flag to modify data buffers */) -{ - hid_t fid; - hid_t did; - hid_t gid; - hid_t sid; - hsize_t dims[1]={2}; - herr_t status; - int buf[2]={1,2}; - - if(make_diffs) - memset(buf, 0, sizeof buf); - - /* Create a file */ - if((fid = H5Fcreate(file, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) - return -1; - - /* Create a 1D dataset */ - sid = H5Screate_simple(1, dims, NULL); - did = H5Dcreate2(fid, "dset", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - status = H5Sclose(sid); - assert(status >= 0); - - /* Create a group */ - gid = H5Gcreate2(fid, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /*------------------------------------------------------------------------- - * write a series of datasets on the group - *------------------------------------------------------------------------- - */ - - write_dset_in(gid,"/dset",fid,make_diffs); - - /* close */ - status = H5Dclose(did); - assert(status >= 0); - status = H5Gclose(gid); - assert(status >= 0); - - /* close file */ - status = H5Fclose(fid); - assert(status >= 0); - return status; -} - -/*------------------------------------------------------------------------- -* Function: test_special_datasets -* -* Purpose: Check datasets with datasapce of zero dimension size. -*------------------------------------------------------------------------- -*/ -static -int test_special_datasets(const char *file, - int make_diffs /* flag to modify data buffers */) -{ - hid_t fid; - hid_t did; - hid_t sid0, sid; - hsize_t dims0[SPACE1_RANK]={SPACE1_DIM1, SPACE1_DIM2}; - hsize_t dims[SPACE1_RANK]={SPACE1_DIM1, SPACE1_DIM2}; - herr_t status; - - /* Create a file */ - if((fid = H5Fcreate(file, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) - return -1; - - /* Create a dataset with zero dimension size */ - sid0 = H5Screate_simple(SPACE1_RANK, dims0, NULL); - did = H5Dcreate2(fid, "dset1", H5T_NATIVE_INT, sid0, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* close dataset */ - status = H5Dclose(did); - assert(status >= 0); - - /* close dataspace */ - status = H5Sclose(sid0); - assert(status >= 0); - - /* Create a dataset with zero dimension size in one file but the other one - * has a dataset with a non-zero dimension size */ - if(make_diffs) { - dims[1] = SPACE1_DIM2 + 4; - } - - sid = H5Screate_simple(SPACE1_RANK, dims, NULL); - did = H5Dcreate2(fid, "dset2", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* close dataspace */ - status = H5Sclose(sid); - assert(status >= 0); - - /* close dataset */ - status = H5Dclose(did); - assert(status >= 0); - - /* close file */ - status = H5Fclose(fid); - assert(status >= 0); - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: Create test files to compare links, one has longer name than -* the other and short name is subset of long name. -* -* Programmer: Jonathan Kim (Feb 17, 2010) -* -*-------------------------------------------------------------------------*/ -static int test_link_name(const char *fname1) -{ - hid_t fid1=0; - hid_t gid1=0; - hid_t gid2=0; - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Groups - *------------------------------------------------------------------------*/ - gid1 = H5Gcreate2(fid1, "group", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - gid2 = H5Gcreate2(fid1, "group_longname", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - if (gid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Soft Links - *------------------------------------------------------------------------*/ - status = H5Lcreate_soft("group", fid1, "link_g1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("group_longname", fid1, "link_g2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - -out: - /*----------------------------------------------------------------------- - * Close - *------------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(gid1) - H5Gclose(gid1); - if(gid2) - H5Gclose(gid2); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: Create test files to compare soft links in various way -* -* Programmer: Jonathan Kim (Feb 17, 2010) -* -*-------------------------------------------------------------------------*/ -static int test_soft_links(const char *fname1) -{ - hid_t fid1=0; - hid_t gid1=0; - hsize_t dims2[2] = {2,4}; - int data1[4][2] = {{0,1},{2,3},{1,2},{3,4}}; - int data2[4][2] = {{0,0},{0,0},{0,0},{0,0}}; - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Groups - *------------------------------------------------------------------------*/ - gid1 = H5Gcreate2(fid1, "target_group", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Datasets - *------------------------------------------------------------------------*/ - /* file1 */ - status = write_dset(fid1,2,dims2,"target_dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(fid1,2,dims2,"target_dset2",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(gid1,2,dims2,"dset",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Soft Links - *------------------------------------------------------------------------*/ - /* file 1 */ - status = H5Lcreate_soft("/target_dset1", fid1, "softlink_dset1_1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/target_dset1", fid1, "softlink_dset1_2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/target_dset2", fid1, "softlink_dset2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/target_group", fid1, "softlink_group1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/target_group", fid1, "softlink_group2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/no_obj", fid1, "softlink_noexist", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(gid1) - H5Gclose(gid1); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: Create test files to compare linked soft links in various way -* -* Programmer: Jonathan Kim (Feb 17, 2010) -* -*-------------------------------------------------------------------------*/ -static int test_linked_softlinks(const char *fname1) -{ - hid_t fid1=0; - hid_t gid1=0; - hid_t gid2=0; - hid_t gid3=0; - hsize_t dims2[2] = {2,4}; - int data1[4][2] = {{0,1},{2,3},{1,2},{3,4}}; - int data2[4][2] = {{0,0},{0,0},{0,0},{0,0}}; - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Groups - *------------------------------------------------------------------------*/ - gid1 = H5Gcreate2(fid1, "target_group", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - gid2 = H5Gcreate2(fid1, "target_group1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - gid3 = H5Gcreate2(fid1, "target_group2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid3 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Datasets - *------------------------------------------------------------------------*/ - /* file1 */ - status = write_dset(fid1,2,dims2,"target_dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(fid1,2,dims2,"target_dset2",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - status = write_dset(gid1,2,dims2,"dset",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Soft Links (Linked) - *------------------------------------------------------------------------*/ - /*--------- - * file 1 */ - status = H5Lcreate_soft("/target_dset1", fid1, "softlink1_to_dset1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("softlink1_to_dset1", fid1, "softlink1_to_slink1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("softlink1_to_slink1", fid1, "softlink1_to_slink2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/target_dset2", fid1, "softlink2_to_dset2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("softlink2_to_dset2", fid1, "softlink2_to_slink1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("softlink2_to_slink1", fid1, "softlink2_to_slink2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("target_group1", fid1, "softlink3_to_group1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("softlink3_to_group1", fid1, "softlink3_to_slink1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("softlink3_to_slink1", fid1, "softlink3_to_slink2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("target_group2", fid1, "softlink4_to_group2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("softlink4_to_group2", fid1, "softlink4_to_slink1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("softlink4_to_slink1", fid1, "softlink4_to_slink2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(gid1) - H5Gclose(gid1); - if(gid2) - H5Gclose(gid2); - if(gid3) - H5Gclose(gid3); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: Create test files to compare external links in various way -* -* Programmer: Jonathan Kim (Feb 17, 2010) -* -*-------------------------------------------------------------------------*/ -static int test_external_links(const char *fname1, const char *fname2) -{ - hid_t fid1=0; - hid_t fid2=0; - hid_t gid1=0; - hid_t gid2=0; - hsize_t dims2[2] = {2,4}; - int data1[4][2] = {{0,1},{2,3},{1,2},{3,4}}; - int data2[4][2] = {{0,0},{0,0},{0,0},{0,0}}; - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - /* source file */ - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - /* target file */ - fid2 = H5Fcreate (fname2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid2 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Groups - *------------------------------------------------------------------------*/ - /*-------------- - * target file */ - gid1 = H5Gcreate2(fid2, "target_group", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - gid2 = H5Gcreate2(fid2, "target_group2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - /*----------------------------------------------------------------------- - * Datasets - *------------------------------------------------------------------------*/ - /*-------------- - * target file */ - status = write_dset(fid2,2,dims2,"target_dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid1,2,dims2,"x_dset",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid2,2,dims2,"x_dset",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * External Links - *------------------------------------------------------------------------*/ - /*--------------*/ - /* source file */ - status = H5Lcreate_external(fname2, "/target_group/x_dset", fid1, "ext_link_dset1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname2, "/target_group2/x_dset", fid1, "ext_link_dset2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname2, "/target_group", fid1, "/ext_link_grp1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname2, "/target_group2", fid1, "/ext_link_grp2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname2, "no_obj", fid1, "ext_link_noexist1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external("no_file.h5", "no_obj", fid1, "ext_link_noexist2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(fid2) - H5Fclose(fid2); - if(gid1) - H5Gclose(gid1); - if(gid2) - H5Gclose(gid2); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: Create test files to compare external links which point to -* soft link in various way -* -* Programmer: Jonathan Kim (Feb 17, 2010) -* -*-------------------------------------------------------------------------*/ -static int test_ext2soft_links(const char *fname1, const char *fname2) -{ - hid_t fid1=0; - hid_t fid2=0; - hid_t gid2=0; - hsize_t dims2[2] = {2,4}; - int data1[4][2] = {{0,1},{2,3},{1,2},{3,4}}; - int data2[4][2] = {{0,0},{0,0},{0,0},{0,0}}; - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - /* source file */ - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - /* target file */ - fid2 = H5Fcreate (fname2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid2 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Groups - *------------------------------------------------------------------------*/ - /* target file */ - gid2 = H5Gcreate2(fid2, "target_group", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Datasets - *------------------------------------------------------------------------*/ - /*-------------- - * target file */ - status = write_dset(fid2,2,dims2,"dset1",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(fid2,2,dims2,"dset2",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Soft Links (Linked) - *------------------------------------------------------------------------*/ - /*--------------- - * target file */ - status = H5Lcreate_soft("/dset1", fid2, "softlink_to_dset1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/dset2", fid2, "softlink_to_dset2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * External Links - *------------------------------------------------------------------------*/ - /*--------------- - * source file */ - status = H5Lcreate_external(fname2, "/target_group", fid1, "ext_link", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname2, "/softlink_to_dset1", fid1, "ext_link_to_slink1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname2, "/softlink_to_dset2", fid1, "ext_link_to_slink2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(fid2) - H5Fclose(fid2); - if(gid2) - H5Gclose(gid2); - - return status; -} - -/*------------------------------------------------------------------------- -* Function: gen_dataset_idx -* -* Purpose: Create a file with either the new or old format -* Create two datasets in the file: -* one dataset: fixed dimension, chunked layout, w/o filters -* one dataset: fixed dimension, chunked layout, w/ filters -* -*------------------------------------------------------------------------- -*/ -static -int gen_dataset_idx(const char *file, int format) -{ - hid_t fid; /* file id */ - hid_t did, did2; /* dataset id */ - hid_t sid; /* space id */ - hid_t fapl; /* file access property id */ - hid_t dcpl; /* dataset creation property id */ - hsize_t dims[1] = {10}; /* dataset dimension */ - hsize_t c_dims[1] = {2}; /* chunk dimension */ - herr_t status; /* return status */ - int buf[10]; /* data buffer */ - int i; /* local index variable */ - - /* Get a copy of the file aaccess property */ - fapl = H5Pcreate(H5P_FILE_ACCESS); - - /* Set the "use the latest format" bounds for creating objects in the file */ - if(format) { - status = H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST); - assert(status >= 0); - } - - /* Create a file */ - if((fid = H5Fcreate(file, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) - return -1; - - /* Create data */ - for(i = 0; i < 10; i++) - buf[i] = i; - - /* Set chunk */ - dcpl = H5Pcreate(H5P_DATASET_CREATE); - status = H5Pset_chunk(dcpl, 1, c_dims); - assert(status >= 0); - - /* Create a 1D dataset */ - sid = H5Screate_simple(1, dims, NULL); - did = H5Dcreate2(fid, "dset", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT); - - /* Write to the dataset */ - status = H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - assert(status >= 0); - -#if defined (H5_HAVE_FILTER_DEFLATE) - /* set deflate data */ - status = H5Pset_deflate(dcpl, 9); - assert(status >= 0); - - /* Create and write the dataset */ - did2 = H5Dcreate2(fid, "dset_filter", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT); - status = H5Dwrite(did2, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - assert(status >= 0); - - /* Close the dataset */ - status = H5Dclose(did2); - assert(status >= 0); - -#endif - - /* closing: dataspace, dataset, file */ - status = H5Sclose(sid); - assert(status >= 0); - - status = H5Dclose(did); - assert(status >= 0); - - status = H5Fclose(fid); - assert(status >= 0); - - status = H5Pclose(dcpl); - assert(status >= 0); - - status = H5Pclose(fapl); - assert(status >= 0); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: Create test files to compare dangling links in various way -* -* Programmer: Jonathan Kim (Feb 17, 2010) -* -*-------------------------------------------------------------------------*/ -static int test_dangle_links(const char *fname1, const char *fname2) -{ - hid_t fid1=0; - hid_t fid2=0; - hsize_t dims2[2] = {2,4}; - int data1[4][2] = {{0,1},{2,3},{1,2},{3,4}}; - int data2[4][2] = {{0,0},{0,0},{0,0},{0,0}}; - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - fid2 = H5Fcreate (fname2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid2 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Datasets - *------------------------------------------------------------------------*/ - /* file1 */ - status = write_dset(fid1,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(fid1,2,dims2,"dset2",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - /* file2 */ - status = write_dset(fid2,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(fid2,2,dims2,"dset2",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Soft Links - *------------------------------------------------------------------------*/ - /* file 1 */ - status = H5Lcreate_soft("no_obj", fid1, "soft_link1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/dset1", fid1, "soft_link2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("no_obj", fid1, "soft_link3", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("no_obj1", fid1, "soft_link4", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - /* file 2 */ - status = H5Lcreate_soft("no_obj", fid2, "soft_link1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("no_obj", fid2, "soft_link2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/dset2", fid2, "soft_link3", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("no_obj2", fid2, "soft_link4", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * External Links - *------------------------------------------------------------------------*/ - /* file1 */ - status = H5Lcreate_external(fname2, "no_obj", fid1, "ext_link1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname2, "/dset1", fid1, "ext_link2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname2, "no_obj", fid1, "ext_link3", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external("no_file.h5", "no_obj", fid1, "ext_link4", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - /* file2 */ - status = H5Lcreate_external(fname1, "no_obj", fid2, "ext_link1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname1, "no_obj", fid2, "ext_link2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname1, "/dset2", fid2, "ext_link3", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_external("no_file.h5", "no_obj", fid2, "ext_link4", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname2); - status = FAIL; - goto out; - } - -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(fid2) - H5Fclose(fid2); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: For testing comparing group member objects recursively -* -* Programmer: Jonathan Kim (Aug 19, 2010) -* -*-------------------------------------------------------------------------*/ -static int test_group_recurse(const char *fname1, const char *fname2) -{ - hid_t fid1=0; - hid_t fid2=0; - hid_t gid1_f1=0, gid2_f1=0, gid3_f1=0, gid10_f1=0; - hid_t gid1_f2=0, gid2_f2=0, gid3_f2=0, gid11_f2=0; - hsize_t dims2[2] = {2,4}; - int data1[4][2] = {{0,1},{0,1},{1,0},{1,0}}; - int data2[4][2] = {{0,2},{0,2},{2,0},{2,0}}; - int data3[4][2] = {{0,3},{0,3},{3,0},{3,0}}; - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - fid2 = H5Fcreate (fname2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid2 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Groups - *------------------------------------------------------------------------*/ - /* file1 */ - gid1_f1 = H5Gcreate2(fid1, "/grp1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1_f1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - gid2_f1 = H5Gcreate2(fid1, "/grp1/grp2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid2_f1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - gid3_f1 = H5Gcreate2(fid1, "/grp1/grp2/grp3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid3_f1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - gid10_f1 = H5Gcreate2(fid1, "/grp10", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid10_f1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /* file2 */ - gid1_f2 = H5Gcreate2(fid2, "/grp1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1_f2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - gid2_f2 = H5Gcreate2(fid2, "/grp1/grp2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid2_f2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - gid3_f2 = H5Gcreate2(fid2, "/grp1/grp2/grp3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid3_f2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - gid11_f2 = H5Gcreate2(fid2, "/grp11", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid11_f2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Datasets under root - *------------------------------------------------------------------------*/ - /* file1 */ - status = write_dset(fid1,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(fid1,2,dims2,"dset2",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(fid1,2,dims2,"dset3",H5T_NATIVE_INT,data3); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - /* file2 */ - status = write_dset(fid2,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(fid2,2,dims2,"dset2",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(fid2,2,dims2,"dset3",H5T_NATIVE_INT,data3); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Datasets under group - *------------------------------------------------------------------------*/ - /* file1 */ - status = write_dset(gid1_f1,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(gid2_f1,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - status = write_dset(gid2_f1,2,dims2,"dset2",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(gid3_f1,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - status = write_dset(gid3_f1,2,dims2,"dset2",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(gid3_f1,2,dims2,"dset3",H5T_NATIVE_INT,data3); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(gid10_f1,2,dims2,"dset4",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(gid10_f1,2,dims2,"dset5",H5T_NATIVE_INT,data3); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - /* file2 */ - status = write_dset(gid1_f2,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid2_f2,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - status = write_dset(gid2_f2,2,dims2,"dset2",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid3_f2,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - status = write_dset(gid3_f2,2,dims2,"dset2",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid3_f2,2,dims2,"dset3",H5T_NATIVE_INT,data3); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid11_f2,2,dims2,"dset4",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid11_f2,2,dims2,"dset5",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - - /*----------------------------------------------------------------------- - * Soft Links - *------------------------------------------------------------------------*/ - /* file 1 */ - status = H5Lcreate_soft("/grp1", fid1, "slink_grp1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/grp1/grp2", fid1, "slink_grp2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/grp1/grp2/grp3", fid1, "slink_grp3", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/grp10", fid1, "slink_grp10", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - /* file 2 */ - status = H5Lcreate_soft("/grp1", fid2, "slink_grp1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/grp1/grp2", fid2, "slink_grp2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/grp1/grp2/grp3", fid2, "slink_grp3", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/grp11", fid2, "slink_grp11", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * External Links - *------------------------------------------------------------------------*/ - /* file1 */ - status = H5Lcreate_external(fname2, "/grp1", fid1, "elink_grp1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname2, "/grp1/grp2", fid1, "elink_grp2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname2, "/grp1/grp2/grp3", fid1, "elink_grp3", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - /* file2 */ - status = H5Lcreate_external(fname1, "/grp1", fid2, "elink_grp1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname1, "/grp1/grp2", fid2, "elink_grp2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname1, "/grp1/grp2/grp3", fid2, "elink_grp3", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname2); - status = FAIL; - goto out; - } - - /*------------------------------ - * external circle route test - * file1/grp11 <-> file2/grp10 via elink_grp_circle link - */ - /* file1 */ - status = H5Lcreate_external(fname2, "/grp11", gid10_f1, "elink_grp_circle", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - /* file2 */ - status = H5Lcreate_external(fname1, "/grp10", gid11_f2, "elink_grp_circle", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname2); - status = FAIL; - goto out; - } - - -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(fid2) - H5Fclose(fid2); - if(gid1_f1) - H5Gclose(gid1_f1); - if(gid2_f1) - H5Gclose(gid2_f1); - if(gid3_f1) - H5Gclose(gid3_f1); - if(gid1_f2) - H5Gclose(gid1_f2); - if(gid2_f2) - H5Gclose(gid2_f2); - if(gid3_f2) - H5Gclose(gid3_f2); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: -* For testing comparing group member objects recursively via multiple -* linked external links -* -* Programmer: Jonathan Kim (Sep 16, 2010) -* -*-------------------------------------------------------------------------*/ -#define GRP_R_DSETNAME1 "dset1" -#define GRP_R_DSETNAME2 "dset2" -static int test_group_recurse2(void) -{ - hid_t fileid1 = -1; - hid_t grp1 = -1; - hid_t grp2 = -1; - hid_t grp3 = -1; - hid_t grp4 = -1; - hid_t dset1 = -1; - hid_t dset2 = -1; - hid_t datatype = -1; - hid_t dataspace = -1; - hid_t fileid2 = -1; - hid_t fileid3 = -1; - hid_t fileid4 = -1; - hsize_t dimsf[2]; /* dataset dimensions */ - herr_t status=0; - int data1[4][2] = {{0,0},{1,1},{2,2},{3,3}}; - int data2[4][2] = {{0,0},{0,1},{0,2},{3,3}}; - - /*----------------------------------------------------------------------- - * FILE 1 - *------------------------------------------------------------------------*/ - /* - * Create a new file using H5F_ACC_TRUNC access, - * default file creation properties, and default file - * access properties. - */ - fileid1 = H5Fcreate(GRP_RECURSE1_EXT, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /*----------------------------------------------------------------------- - * Groups - *------------------------------------------------------------------------*/ - grp1 = H5Gcreate2(fileid1, "/g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (grp1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", GRP_RECURSE1_EXT); - status = FAIL; - goto out; - } - - grp2 = H5Gcreate2(grp1, "g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (grp2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", GRP_RECURSE1_EXT); - status = FAIL; - goto out; - } - - grp3 = H5Gcreate2(grp2, "g3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (grp3 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", GRP_RECURSE1_EXT); - status = FAIL; - goto out; - } - - grp4 = H5Gcreate2(grp3, "g4", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (grp4 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", GRP_RECURSE1_EXT); - status = FAIL; - goto out; - } - - - /*----------------------------------------------------------------------- - * Datasets - *------------------------------------------------------------------------*/ - /* - * Describe the size of the array and create the data space for fixed - * size dataset. - */ - dimsf[0] = 4; - dimsf[1] = 2; - dataspace = H5Screate_simple(2, dimsf, NULL); - - /* - * Define datatype for the data in the file. - * We will store little endian INT numbers. - */ - datatype = H5Tcopy(H5T_NATIVE_INT); - status = H5Tset_order(datatype, H5T_ORDER_LE); - - /*--------------- - * dset1 - */ - /* - * Create a new dataset within the file using defined dataspace and - * datatype and default dataset creation properties. - */ - dset1 = H5Dcreate2(fileid1, GRP_R_DSETNAME1, datatype, dataspace, - H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* - * Write the data to the dataset using default transfer properties. - */ - status = H5Dwrite(dset1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data1); - H5Dclose(dset1); - - /*--------------- - * dset1 - */ - /* - * Create a new dataset within the file using defined dataspace and - * datatype and default dataset creation properties. - */ - dset1 = H5Dcreate2(grp3, GRP_R_DSETNAME1, datatype, dataspace, - H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* - * Write the data to the dataset using default transfer properties. - */ - status = H5Dwrite(dset1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data1); - - /*--------------- - * dset2 - */ - /* - * Create a new dataset within the fileid1 using defined dataspace and - * datatype and default dataset creation properties. - */ - dset2 = H5Dcreate2(grp4, GRP_R_DSETNAME2, datatype, dataspace, - H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* - * Write the data to the dataset using default transfer properties. - */ - status = H5Dwrite(dset2, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data2); - - /*----------------------------------------------------------------------- - * Soft links - *------------------------------------------------------------------------*/ - /* - * under '/' root - */ - /* link to dset1 */ - status = H5Lcreate_soft(GRP_R_DSETNAME1, fileid1, "soft_dset1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", GRP_RECURSE1_EXT); - status = FAIL; - goto out; - } - - H5Dclose(dset1); - H5Dclose(dset2); - H5Gclose(grp1); - H5Gclose(grp2); - H5Gclose(grp3); - H5Gclose(grp4); - - /*----------------------------------------------------------------------- - * FILE 2-3 - *------------------------------------------------------------------------*/ - - /* crate target file */ - fileid4 = H5Fcreate(GRP_RECURSE2_EXT3, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /*----------------------------------------------- - * Groups - */ - grp4 = H5Gcreate2(fileid4, "/g4", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (grp4 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", GRP_RECURSE2_EXT3); - status = FAIL; - goto out; - } - - /*--------------- - * dset2 - */ - /* - * Create a new dataset within the fileid1 using defined dataspace and - * datatype and default dataset creation properties. - */ - dset2 = H5Dcreate2(grp4, GRP_R_DSETNAME2, datatype, dataspace, - H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* - * Write the data to the dataset using default transfer properties. - */ - status = H5Dwrite(dset2, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data2); - - H5Gclose(grp4); - H5Dclose(dset2); - - - /*----------------------------------------------------------------------- - * FILE 2-2 - *------------------------------------------------------------------------*/ - - /* crate target file */ - fileid3 = H5Fcreate(GRP_RECURSE2_EXT2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /*----------------------------------------------- - * Groups - */ - grp2 = H5Gcreate2(fileid3, "g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (grp2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", GRP_RECURSE2_EXT2); - status = FAIL; - goto out; - } - - grp3 = H5Gcreate2(grp2, "g3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (grp3 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", GRP_RECURSE2_EXT2); - status = FAIL; - goto out; - } - - /*--------------- - * dset1 - */ - /* - * Create a new dataset within the fileid1 using defined dataspace and - * datatype and default dataset creation properties. - */ - dset1 = H5Dcreate2(grp3, GRP_R_DSETNAME1, datatype, dataspace, - H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* - * Write the data to the dataset using default transfer properties. - */ - status = H5Dwrite(dset1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data1); - - /*----------------------------------------------- - * extlink to $GRP_RECURSE2_EXT3/g4 - */ - status = H5Lcreate_external(GRP_RECURSE2_EXT3, "/g4", fileid3, "/g2/g3/g4", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", GRP_RECURSE2_EXT2); - status = FAIL; - goto out; - } - - H5Dclose(dset1); - H5Gclose(grp2); - H5Gclose(grp3); - - /*----------------------------------------------------------------------- - * FILE 2-1 - *------------------------------------------------------------------------*/ - - /* crate target file */ - fileid2 = H5Fcreate(GRP_RECURSE2_EXT1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /*----------------------------------------------- - * Groups - */ - grp1 = H5Gcreate2(fileid2, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (grp1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", GRP_RECURSE1_EXT); - status = FAIL; - goto out; - } - - /*--------------- - * dset1 - */ - dset1 = H5Dcreate2(fileid2, GRP_R_DSETNAME1, datatype, dataspace, - H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* - * Write the data to the dataset using default transfer properties. - */ - status = H5Dwrite(dset1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data1); - - /*----------------------------------------------------------------------- - * Soft links - *------------------------------------------------------------------------*/ - /* - * under '/' root - */ - /* link to dset1 */ - status = H5Lcreate_soft(GRP_R_DSETNAME1, fileid2, "soft_dset1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", GRP_RECURSE2_EXT1); - status = FAIL; - goto out; - } - - /*----------------------------------------------- - * extlink to $GRP_RECURSE2_EXT2/g2 - */ - status = H5Lcreate_external(GRP_RECURSE2_EXT2, "/g2", fileid2, "/g1/g2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", GRP_RECURSE2_EXT1); - status = FAIL; - goto out; - } - - H5Gclose(grp1); - H5Dclose(dset1); - -out: - /* - * Close/release resources. - */ - if(dataspace > 0) - H5Sclose(dataspace); - if(datatype > 0) - H5Tclose(datatype); - if(fileid1 > 0) - H5Fclose(fileid1); - if(fileid2 > 0) - H5Fclose(fileid2); - if(fileid3 > 0) - H5Fclose(fileid3); - if(fileid4 > 0) - H5Fclose(fileid4); - - return status; -} - - -/*------------------------------------------------------------------------- -* -* Purpose: Create test files for excluding obj. -* Same structure, same obj names -* Test : exclude obj with different value to verify the rest are same -* -* Programmer: Jonathan Kim (July, 21, 2010) -* -*-------------------------------------------------------------------------*/ -static int test_exclude_obj1(const char *fname1, const char *fname2) -{ - hid_t fid1=0; - hid_t fid2=0; - hid_t gid1=0; - hid_t gid2=0; - hsize_t dims2[2] = {2,4}; - int data1[4][2] = {{0,0},{0,0},{0,0},{0,0}}; - int data2[4][2] = {{0,1},{2,3},{1,2},{3,4}}; - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - fid2 = H5Fcreate (fname2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid2 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname2); - status = FAIL; - goto out; - } - - - /*----------------------------------------------------------------------- - * Group - *------------------------------------------------------------------------*/ - /* file1 */ - gid1 = H5Gcreate2(fid1, "group1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /* file2 */ - gid2 = H5Gcreate2(fid2, "group1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - if (gid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - - /*----------------------------------------------------------------------- - * Datasets - *------------------------------------------------------------------------*/ - /* file1 */ - status = write_dset(fid1,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(gid1,2,dims2,"dset2",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(gid1,2,dims2,"dset3",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - - /* file2 */ - status = write_dset(fid2,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid2,2,dims2,"dset2",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid2,2,dims2,"dset3",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(fid2) - H5Fclose(fid2); - if(gid1) - H5Gclose(gid1); - if(gid2) - H5Gclose(gid2); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: Create test files for excluding obj. -* different structure and name -* Test : exclude different objs to verify the rest are same -* -* Programmer: Jonathan Kim (July, 21, 2010) -* -*-------------------------------------------------------------------------*/ -static int test_exclude_obj2(const char *fname1, const char *fname2) -{ - hid_t fid1=0; - hid_t fid2=0; - hid_t gid1=0; - hid_t gid2=0; - hid_t gid3=0; - hsize_t dims2[2] = {2,4}; - int data1[4][2] = {{0,0},{0,0},{0,0},{0,0}}; - int data2[4][2] = {{0,1},{2,3},{1,2},{3,4}}; - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - fid2 = H5Fcreate (fname2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid2 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname2); - status = FAIL; - goto out; - } - - - /*----------------------------------------------------------------------- - * Group - *------------------------------------------------------------------------*/ - /* file1 */ - gid1 = H5Gcreate2(fid1, "group10", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /* file2 */ - gid2 = H5Gcreate2(fid2, "group10", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - if (gid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - /* subset name from group10 */ - gid3 = H5Gcreate2(fid2, "group1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - if (gid3 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - - /*----------------------------------------------------------------------- - * Datasets - *------------------------------------------------------------------------*/ - /* file1 */ - status = write_dset(fid1,2,dims2,"dset10",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(fid1,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(gid1,2,dims2,"dset2",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - - /* file2 */ - status = write_dset(fid2,2,dims2,"dset10",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid2,2,dims2,"dset2",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid3,2,dims2,"dset3",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(fid2) - H5Fclose(fid2); - if(gid1) - H5Gclose(gid1); - if(gid2) - H5Gclose(gid2); - if(gid3) - H5Gclose(gid3); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: Create test files for excluding obj. -* Only one file contains unique objs. Common objs are same. -* Test : exclude unique objs to verify the rest are same -* - HDFFV-7837 -* -* Programmer: Jonathan Kim (Mar, 19, 2012) -* -*-------------------------------------------------------------------------*/ -static int test_exclude_obj3(const char *fname1, const char *fname2) -{ - hid_t fid1=0; - hid_t fid2=0; - hid_t gid1=0; - hsize_t dims2[2] = {2,4}; - int data1[4][2] = {{0,0},{0,0},{0,0},{0,0}}; - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - fid2 = H5Fcreate (fname2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid2 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname2); - status = FAIL; - goto out; - } - - - /*----------------------------------------------------------------------- - * Group - *------------------------------------------------------------------------*/ - /* file1 */ - gid1 = H5Gcreate2(fid1, "group1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Datasets - *------------------------------------------------------------------------*/ - /* file1 */ - status = write_dset(fid1,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(gid1,2,dims2,"dset",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - /* file2 */ - status = write_dset(fid2,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(fid2) - H5Fclose(fid2); - if(gid1) - H5Gclose(gid1); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: Create test files for multiple variable length string/string array -* along with fixed length string/string array types in -* a compound type dataset. -* -* Programmer: Jonathan Kim (Oct, 26, 2010) -* -*-------------------------------------------------------------------------*/ -#define STR_RANK 1 -#define VLEN_STR_DIM 1 -#define FIXLEN_STR_SIZE 21 -#define FIXLEN_STR_DIM 1 -#define VLEN_STR_ARRY_DIM 3 -#define FIXLEN_STR_ARRY_DIM 3 -#define FIXLEN_STR_ARRY_SIZE 30 -#define COMP_RANK 1 -#define COMP_DIM 1 -static int test_comp_vlen_strings(const char *fname1, const char *grp_name, int is_file_new) -{ - int i; - - hid_t fid1 = -1; /* file id */ - hid_t gid = -1; - - /* compound1 datatype */ - typedef struct comp1_t - { - char *str_vlen; /* vlen string */ - char *str_vlen_repeat; /* vlen string */ - char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */ - char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */ - char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - } comp1_t; - - /* compound2 datatype */ - typedef struct comp2_t - { - char *str_vlen; /* vlen string */ - char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */ - char *str_vlen_repeat; /* vlen string */ - char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */ - char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - } comp2_t; - - /* compound3 datatype */ - typedef struct comp3_t - { - char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */ - char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */ - char *str_vlen; /* vlen string */ - char *str_vlen_repeat; /* vlen string */ - char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */ - } comp3_t; - - /* compound4 datatype */ - typedef struct comp4_t - { - char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */ - char *str_vlen; /* vlen string */ - char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */ - char *str_vlen_repeat; /* vlen string */ - char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */ - } comp4_t; - - /* compound5 datatype */ - typedef struct comp5_t - { - char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_vlen; /* vlen string */ - char *str_vlen_repeat; /* vlen string */ - char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */ - char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */ - } comp5_t; - - /* compound6 datatype */ - typedef struct comp6_t - { - char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_vlen; /* vlen string */ - char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */ - char *str_vlen_repeat; /* vlen string */ - char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */ - } comp6_t; - - /* compound7 datatype */ - typedef struct comp7_t - { - char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */ - char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */ - char *str_vlen; /* vlen string */ - char *str_vlen_repeat; /* vlen string */ - } comp7_t; - - /* compound8 datatype */ - typedef struct comp8_t - { - char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */ - char *str_vlen; /* vlen string */ - char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */ - char *str_vlen_repeat; /* vlen string */ - } comp8_t; - - /* compound9 datatype */ - typedef struct comp9_t - { - char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */ - int int_data1; - hobj_ref_t objref1; /* reference */ - char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */ - hobj_ref_t objref2; /* reference */ - char *str_vlen; /* vlen string */ - int int_data2; - char *str_vlen_repeat; /* vlen string */ - hobj_ref_t objref3; /* reference */ - int int_data3; - } comp9_t; - - /* vlen string */ - hid_t sid_vlen_str=0; /* dataspace ID */ - hid_t tid_vlen_str=0; /* datatype ID */ - char vlen_str_buf[]= { - "Variable length string" - }; - hsize_t dims_vlen_str[] = {VLEN_STR_DIM}; - - /* fixlen string */ - hid_t sid_fixlen_str=0; /* dataspace ID */ - hid_t tid_fixlen_str=0; /* datatype ID */ - const char fixlen_str_buf[FIXLEN_STR_SIZE]= { - "Fixed length string" - }; - hsize_t dims_fixlen_str[] = {FIXLEN_STR_DIM}; - - /* vlen string array */ - hid_t sid_vlen_str_array=0; /* dataspace ID */ - hid_t tid_vlen_str_array_pre=0; /* datatype ID */ - hid_t tid_vlen_str_array=0; /* datatype ID */ - char *vlen_str_array_buf[VLEN_STR_ARRY_DIM]= { - "1 - Variable length string Array", - "2 - Testing variable length string array in compound type", - "3 - Four score and seven\n years ago our forefathers brought forth on this continent a new nation," - }; - hsize_t dims_vlen_str_array[] = {VLEN_STR_ARRY_DIM}; - - /* fixlen string array */ - hid_t sid_fixlen_str_array=0; /* dataspace ID */ - hid_t tid_fixlen_str_array_pre=0; /* datatype ID */ - hid_t tid_fixlen_str_array=0; /* datatype ID */ - const char *fixlen_str_array_buf[FIXLEN_STR_ARRY_DIM]= { - "1 - Fixed length string Array", - "2 - Fixed length string Array", - "3 - Fixed length string Array" - }; - hsize_t dims_fixlen_str_array[] = {FIXLEN_STR_ARRY_DIM}; - - /*------------------------------------------ - * compound dataset - *------------------------------------------*/ - hid_t sid_comp=0; /* dataspace ID */ - hid_t tid1_comp=0; /* datatype ID */ - hid_t tid2_comp=0; /* datatype ID */ - hid_t tid3_comp=0; /* datatype ID */ - hid_t tid4_comp=0; /* datatype ID */ - hid_t tid5_comp=0; /* datatype ID */ - hid_t tid6_comp=0; /* datatype ID */ - hid_t tid7_comp=0; /* datatype ID */ - hid_t tid8_comp=0; /* datatype ID */ - hid_t tid9_comp=0; /* datatype ID */ - hid_t did_comp=0; /* dataset ID */ - hsize_t dims_comp[] = {COMP_DIM}; - herr_t status = SUCCEED; - - /* make compound strings data */ - comp1_t comp1_buf; - comp2_t comp2_buf; - comp3_t comp3_buf; - comp4_t comp4_buf; - comp5_t comp5_buf; - comp6_t comp6_buf; - comp7_t comp7_buf; - comp8_t comp8_buf; - comp9_t comp9_buf; - - /* copy vlen string data to compound buffers */ - comp1_buf.str_vlen = comp1_buf.str_vlen_repeat = vlen_str_buf; - comp2_buf.str_vlen = comp2_buf.str_vlen_repeat = vlen_str_buf; - comp3_buf.str_vlen = comp3_buf.str_vlen_repeat = vlen_str_buf; - comp4_buf.str_vlen = comp4_buf.str_vlen_repeat = vlen_str_buf; - comp5_buf.str_vlen = comp5_buf.str_vlen_repeat = vlen_str_buf; - comp6_buf.str_vlen = comp6_buf.str_vlen_repeat = vlen_str_buf; - comp7_buf.str_vlen = comp7_buf.str_vlen_repeat = vlen_str_buf; - comp8_buf.str_vlen = comp8_buf.str_vlen_repeat = vlen_str_buf; - comp9_buf.str_vlen = comp9_buf.str_vlen_repeat = vlen_str_buf; - - /* copy fixlen string data to compound buffers */ - HDstrcpy(comp1_buf.str_fixlen, fixlen_str_buf); - HDstrcpy(comp1_buf.str_fixlen_repeat, fixlen_str_buf); - - HDstrcpy(comp2_buf.str_fixlen, fixlen_str_buf); - HDstrcpy(comp2_buf.str_fixlen_repeat, fixlen_str_buf); - - HDstrcpy(comp3_buf.str_fixlen, fixlen_str_buf); - HDstrcpy(comp3_buf.str_fixlen_repeat, fixlen_str_buf); - - HDstrcpy(comp3_buf.str_fixlen, fixlen_str_buf); - HDstrcpy(comp3_buf.str_fixlen_repeat, fixlen_str_buf); - - HDstrcpy(comp4_buf.str_fixlen, fixlen_str_buf); - HDstrcpy(comp4_buf.str_fixlen_repeat, fixlen_str_buf); - - HDstrcpy(comp5_buf.str_fixlen, fixlen_str_buf); - HDstrcpy(comp5_buf.str_fixlen_repeat, fixlen_str_buf); - - HDstrcpy(comp6_buf.str_fixlen, fixlen_str_buf); - HDstrcpy(comp6_buf.str_fixlen_repeat, fixlen_str_buf); - - HDstrcpy(comp7_buf.str_fixlen, fixlen_str_buf); - HDstrcpy(comp7_buf.str_fixlen_repeat, fixlen_str_buf); - - HDstrcpy(comp8_buf.str_fixlen, fixlen_str_buf); - HDstrcpy(comp8_buf.str_fixlen_repeat, fixlen_str_buf); - - HDstrcpy(comp9_buf.str_fixlen, fixlen_str_buf); - HDstrcpy(comp9_buf.str_fixlen_repeat, fixlen_str_buf); - - /* copy vlen string array data to compound buffers */ - for (i=0; i < VLEN_STR_ARRY_DIM; i++) - { - comp1_buf.str_array_vlen[i] = comp1_buf.str_vlen_array_again[i] = vlen_str_array_buf[i]; - comp2_buf.str_array_vlen[i] = comp2_buf.str_vlen_array_again[i] = vlen_str_array_buf[i]; - comp3_buf.str_array_vlen[i] = comp3_buf.str_vlen_array_again[i] = vlen_str_array_buf[i]; - comp4_buf.str_array_vlen[i] = comp4_buf.str_vlen_array_again[i] = vlen_str_array_buf[i]; - comp5_buf.str_array_vlen[i] = comp5_buf.str_vlen_array_again[i] = vlen_str_array_buf[i]; - comp6_buf.str_array_vlen[i] = comp6_buf.str_vlen_array_again[i] = vlen_str_array_buf[i]; - comp7_buf.str_array_vlen[i] = comp7_buf.str_vlen_array_again[i] = vlen_str_array_buf[i]; - comp8_buf.str_array_vlen[i] = comp8_buf.str_vlen_array_again[i] = vlen_str_array_buf[i]; - comp9_buf.str_array_vlen[i] = comp9_buf.str_vlen_array_again[i] = vlen_str_array_buf[i]; - - } - - /* copy fixlen string attay data to compound buffers */ - for (i=0; i < FIXLEN_STR_ARRY_DIM; i++) - { - HDstrcpy(comp1_buf.str_array_fixlen[i], fixlen_str_array_buf[i]); - HDstrcpy(comp1_buf.str_fixlen_array_again[i], fixlen_str_array_buf[i]); - - HDstrcpy(comp2_buf.str_array_fixlen[i], fixlen_str_array_buf[i]); - HDstrcpy(comp2_buf.str_fixlen_array_again[i], fixlen_str_array_buf[i]); - - HDstrcpy(comp3_buf.str_array_fixlen[i], fixlen_str_array_buf[i]); - HDstrcpy(comp3_buf.str_fixlen_array_again[i], fixlen_str_array_buf[i]); - - HDstrcpy(comp4_buf.str_array_fixlen[i], fixlen_str_array_buf[i]); - HDstrcpy(comp4_buf.str_fixlen_array_again[i], fixlen_str_array_buf[i]); - - HDstrcpy(comp5_buf.str_array_fixlen[i], fixlen_str_array_buf[i]); - HDstrcpy(comp5_buf.str_fixlen_array_again[i], fixlen_str_array_buf[i]); - - HDstrcpy(comp6_buf.str_array_fixlen[i], fixlen_str_array_buf[i]); - HDstrcpy(comp6_buf.str_fixlen_array_again[i], fixlen_str_array_buf[i]); - - HDstrcpy(comp7_buf.str_array_fixlen[i], fixlen_str_array_buf[i]); - HDstrcpy(comp7_buf.str_fixlen_array_again[i], fixlen_str_array_buf[i]); - - HDstrcpy(comp8_buf.str_array_fixlen[i], fixlen_str_array_buf[i]); - HDstrcpy(comp8_buf.str_fixlen_array_again[i], fixlen_str_array_buf[i]); - - HDstrcpy(comp9_buf.str_array_fixlen[i], fixlen_str_array_buf[i]); - HDstrcpy(comp9_buf.str_fixlen_array_again[i], fixlen_str_array_buf[i]); - } - - /* int data */ - comp9_buf.int_data1 = 10; - comp9_buf.int_data2 = 20; - comp9_buf.int_data3 = 30; - - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - if (is_file_new == 1) - { - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - } - else - { - fid1 = H5Fopen (fname1, H5F_ACC_RDWR, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fopen failed.\n", fname1); - status = FAIL; - goto out; - } - } - - /*----------------------------------------------------------------------- - * Create group - *------------------------------------------------------------------------*/ - gid = H5Gcreate2(fid1, grp_name, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Variable length String1 - Create space and type - *------------------------------------------------------------------------*/ - sid_vlen_str = H5Screate_simple(STR_RANK, dims_vlen_str, NULL); - if (sid_vlen_str < 0) - { - fprintf(stderr, "Error: %s> H5Screate_simple failed.\n", fname1); - status = FAIL; - goto out; - } - - tid_vlen_str = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid_vlen_str, H5T_VARIABLE); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Tset_size failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Fixed length String2 - Create space and type - *------------------------------------------------------------------------*/ - sid_fixlen_str = H5Screate_simple(STR_RANK, dims_fixlen_str, NULL); - if (sid_fixlen_str < 0) - { - fprintf(stderr, "Error: %s> H5Screate_simple failed.\n", fname1); - status = FAIL; - goto out; - } - - tid_fixlen_str = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid_fixlen_str, FIXLEN_STR_SIZE); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Tset_size failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Fixed length String3 array - Create space and type - *------------------------------------------------------------------------*/ - sid_vlen_str_array = H5Screate_simple(STR_RANK, dims_vlen_str_array, NULL); - if (sid_vlen_str_array < 0) - { - fprintf(stderr, "Error: %s> H5Screate_simple failed.\n", fname1); - status = FAIL; - goto out; - } - - tid_vlen_str_array_pre = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid_vlen_str_array_pre, H5T_VARIABLE); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Tset_size failed.\n", fname1); - status = FAIL; - goto out; - } - - /* Create the array data type for the string array */ - tid_vlen_str_array = H5Tarray_create2(tid_vlen_str_array_pre, COMP_RANK, dims_vlen_str_array); - if (tid_vlen_str_array < 0) - { - fprintf(stderr, "Error: %s> H5Tarray_create2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Variable length String4 array - Create space and type - *------------------------------------------------------------------------*/ - sid_fixlen_str_array = H5Screate_simple(STR_RANK, dims_fixlen_str_array, NULL); - if (sid_fixlen_str_array < 0) - { - fprintf(stderr, "Error: %s> H5Screate_simple failed.\n", fname1); - status = FAIL; - goto out; - } - - tid_fixlen_str_array_pre = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid_fixlen_str_array_pre, FIXLEN_STR_ARRY_SIZE); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Tset_size failed.\n", fname1); - status = FAIL; - goto out; - } - /* Create the array data type for the string array */ - tid_fixlen_str_array = H5Tarray_create2(tid_fixlen_str_array_pre, COMP_RANK, dims_fixlen_str_array); - if (tid_fixlen_str_array < 0) - { - fprintf(stderr, "Error: %s> H5Tarray_create2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /*------------------------------------------------------------------------- - * Compound dataset - *------------------------------------------------------------------------*/ - sid_comp = H5Screate_simple(COMP_RANK, dims_comp, NULL); - if (sid_comp < 0) - { - fprintf(stderr, "Error: %s> H5Screate_simple failed.\n", fname1); - status = FAIL; - goto out; - } - tid1_comp = H5Tcreate (H5T_COMPOUND, sizeof(comp1_t)); - tid2_comp = H5Tcreate (H5T_COMPOUND, sizeof(comp2_t)); - tid3_comp = H5Tcreate (H5T_COMPOUND, sizeof(comp3_t)); - tid4_comp = H5Tcreate (H5T_COMPOUND, sizeof(comp4_t)); - tid5_comp = H5Tcreate (H5T_COMPOUND, sizeof(comp5_t)); - tid6_comp = H5Tcreate (H5T_COMPOUND, sizeof(comp6_t)); - tid7_comp = H5Tcreate (H5T_COMPOUND, sizeof(comp7_t)); - tid8_comp = H5Tcreate (H5T_COMPOUND, sizeof(comp8_t)); - tid9_comp = H5Tcreate (H5T_COMPOUND, sizeof(comp9_t)); - - /* compound 1 */ - H5Tinsert(tid1_comp, "VLEN_STR1", HOFFSET(comp1_t, str_vlen), tid_vlen_str ); - H5Tinsert(tid1_comp, "VLEN_STR2", HOFFSET(comp1_t, str_vlen_repeat), tid_vlen_str ); - H5Tinsert(tid1_comp, "FIXLEN_STR1", HOFFSET(comp1_t, str_fixlen), tid_fixlen_str ); - H5Tinsert(tid1_comp, "FIXLEN_STR2", HOFFSET(comp1_t, str_fixlen_repeat), tid_fixlen_str ); - H5Tinsert(tid1_comp, "VLEN_STR_ARRAY1", HOFFSET(comp1_t, str_array_vlen), tid_vlen_str_array); - H5Tinsert(tid1_comp, "VLEN_STR_ARRAY2", HOFFSET(comp1_t, str_vlen_array_again), tid_vlen_str_array); - H5Tinsert(tid1_comp, "FIXLEN_STR_ARRAY1", HOFFSET(comp1_t, str_array_fixlen), tid_fixlen_str_array); - H5Tinsert(tid1_comp, "FIXLEN_STR_ARRAY2", HOFFSET(comp1_t, str_fixlen_array_again), tid_fixlen_str_array); - - /* compound 2 */ - H5Tinsert(tid2_comp, "VLEN_STR1", HOFFSET(comp2_t, str_vlen), tid_vlen_str ); - H5Tinsert(tid2_comp, "VLEN_STR2", HOFFSET(comp2_t, str_vlen_repeat), tid_vlen_str ); - H5Tinsert(tid2_comp, "FIXLEN_STR1", HOFFSET(comp2_t, str_fixlen), tid_fixlen_str ); - H5Tinsert(tid2_comp, "FIXLEN_STR2", HOFFSET(comp2_t, str_fixlen_repeat), tid_fixlen_str ); - H5Tinsert(tid2_comp, "VLEN_STR_ARRAY1", HOFFSET(comp2_t, str_array_vlen), tid_vlen_str_array); - H5Tinsert(tid2_comp, "VLEN_STR_ARRAY2", HOFFSET(comp2_t, str_vlen_array_again), tid_vlen_str_array); - H5Tinsert(tid2_comp, "FIXLEN_STR_ARRAY1", HOFFSET(comp2_t, str_array_fixlen), tid_fixlen_str_array); - H5Tinsert(tid2_comp, "FIXLEN_STR_ARRAY2", HOFFSET(comp2_t, str_fixlen_array_again), tid_fixlen_str_array); - - /* compound 3 */ - H5Tinsert(tid3_comp, "VLEN_STR1", HOFFSET(comp3_t, str_vlen), tid_vlen_str ); - H5Tinsert(tid3_comp, "VLEN_STR2", HOFFSET(comp3_t, str_vlen_repeat), tid_vlen_str ); - H5Tinsert(tid3_comp, "FIXLEN_STR1", HOFFSET(comp3_t, str_fixlen), tid_fixlen_str ); - H5Tinsert(tid3_comp, "FIXLEN_STR2", HOFFSET(comp3_t, str_fixlen_repeat), tid_fixlen_str ); - H5Tinsert(tid3_comp, "VLEN_STR_ARRAY1", HOFFSET(comp3_t, str_array_vlen), tid_vlen_str_array); - H5Tinsert(tid3_comp, "VLEN_STR_ARRAY2", HOFFSET(comp3_t, str_vlen_array_again), tid_vlen_str_array); - H5Tinsert(tid3_comp, "FIXLEN_STR_ARRAY1", HOFFSET(comp3_t, str_array_fixlen), tid_fixlen_str_array); - H5Tinsert(tid3_comp, "FIXLEN_STR_ARRAY2", HOFFSET(comp3_t, str_fixlen_array_again), tid_fixlen_str_array); - - /* compound 4 */ - H5Tinsert(tid4_comp, "VLEN_STR1", HOFFSET(comp4_t, str_vlen), tid_vlen_str ); - H5Tinsert(tid4_comp, "VLEN_STR2", HOFFSET(comp4_t, str_vlen_repeat), tid_vlen_str ); - H5Tinsert(tid4_comp, "FIXLEN_STR1", HOFFSET(comp4_t, str_fixlen), tid_fixlen_str ); - H5Tinsert(tid4_comp, "FIXLEN_STR2", HOFFSET(comp4_t, str_fixlen_repeat), tid_fixlen_str ); - H5Tinsert(tid4_comp, "VLEN_STR_ARRAY1", HOFFSET(comp4_t, str_array_vlen), tid_vlen_str_array); - H5Tinsert(tid4_comp, "VLEN_STR_ARRAY2", HOFFSET(comp4_t, str_vlen_array_again), tid_vlen_str_array); - H5Tinsert(tid4_comp, "FIXLEN_STR_ARRAY1", HOFFSET(comp4_t, str_array_fixlen), tid_fixlen_str_array); - H5Tinsert(tid4_comp, "FIXLEN_STR_ARRAY2", HOFFSET(comp4_t, str_fixlen_array_again), tid_fixlen_str_array); - - /* compound 5 */ - H5Tinsert(tid5_comp, "VLEN_STR1", HOFFSET(comp5_t, str_vlen), tid_vlen_str ); - H5Tinsert(tid5_comp, "VLEN_STR2", HOFFSET(comp5_t, str_vlen_repeat), tid_vlen_str ); - H5Tinsert(tid5_comp, "FIXLEN_STR1", HOFFSET(comp5_t, str_fixlen), tid_fixlen_str ); - H5Tinsert(tid5_comp, "FIXLEN_STR2", HOFFSET(comp5_t, str_fixlen_repeat), tid_fixlen_str ); - H5Tinsert(tid5_comp, "VLEN_STR_ARRAY1", HOFFSET(comp5_t, str_array_vlen), tid_vlen_str_array); - H5Tinsert(tid5_comp, "VLEN_STR_ARRAY2", HOFFSET(comp5_t, str_vlen_array_again), tid_vlen_str_array); - H5Tinsert(tid5_comp, "FIXLEN_STR_ARRAY1", HOFFSET(comp5_t, str_array_fixlen), tid_fixlen_str_array); - H5Tinsert(tid5_comp, "FIXLEN_STR_ARRAY2", HOFFSET(comp5_t, str_fixlen_array_again), tid_fixlen_str_array); - - /* compound 6 */ - H5Tinsert(tid6_comp, "VLEN_STR1", HOFFSET(comp6_t, str_vlen), tid_vlen_str ); - H5Tinsert(tid6_comp, "VLEN_STR2", HOFFSET(comp6_t, str_vlen_repeat), tid_vlen_str ); - H5Tinsert(tid6_comp, "FIXLEN_STR1", HOFFSET(comp6_t, str_fixlen), tid_fixlen_str ); - H5Tinsert(tid6_comp, "FIXLEN_STR2", HOFFSET(comp6_t, str_fixlen_repeat), tid_fixlen_str ); - H5Tinsert(tid6_comp, "VLEN_STR_ARRAY1", HOFFSET(comp6_t, str_array_vlen), tid_vlen_str_array); - H5Tinsert(tid6_comp, "VLEN_STR_ARRAY2", HOFFSET(comp6_t, str_vlen_array_again), tid_vlen_str_array); - H5Tinsert(tid6_comp, "FIXLEN_STR_ARRAY1", HOFFSET(comp6_t, str_array_fixlen), tid_fixlen_str_array); - H5Tinsert(tid6_comp, "FIXLEN_STR_ARRAY2", HOFFSET(comp6_t, str_fixlen_array_again), tid_fixlen_str_array); - - /* compound 7 */ - H5Tinsert(tid7_comp, "VLEN_STR1", HOFFSET(comp7_t, str_vlen), tid_vlen_str ); - H5Tinsert(tid7_comp, "VLEN_STR2", HOFFSET(comp7_t, str_vlen_repeat), tid_vlen_str ); - H5Tinsert(tid7_comp, "FIXLEN_STR1", HOFFSET(comp7_t, str_fixlen), tid_fixlen_str ); - H5Tinsert(tid7_comp, "FIXLEN_STR2", HOFFSET(comp7_t, str_fixlen_repeat), tid_fixlen_str ); - H5Tinsert(tid7_comp, "VLEN_STR_ARRAY1", HOFFSET(comp7_t, str_array_vlen), tid_vlen_str_array); - H5Tinsert(tid7_comp, "VLEN_STR_ARRAY2", HOFFSET(comp7_t, str_vlen_array_again), tid_vlen_str_array); - H5Tinsert(tid7_comp, "FIXLEN_STR_ARRAY1", HOFFSET(comp7_t, str_array_fixlen), tid_fixlen_str_array); - H5Tinsert(tid7_comp, "FIXLEN_STR_ARRAY2", HOFFSET(comp7_t, str_fixlen_array_again), tid_fixlen_str_array); - - /* compound 8 */ - H5Tinsert(tid8_comp, "VLEN_STR1", HOFFSET(comp8_t, str_vlen), tid_vlen_str ); - H5Tinsert(tid8_comp, "VLEN_STR2", HOFFSET(comp8_t, str_vlen_repeat), tid_vlen_str ); - H5Tinsert(tid8_comp, "FIXLEN_STR1", HOFFSET(comp8_t, str_fixlen), tid_fixlen_str ); - H5Tinsert(tid8_comp, "FIXLEN_STR2", HOFFSET(comp8_t, str_fixlen_repeat), tid_fixlen_str ); - H5Tinsert(tid8_comp, "VLEN_STR_ARRAY1", HOFFSET(comp8_t, str_array_vlen), tid_vlen_str_array); - H5Tinsert(tid8_comp, "VLEN_STR_ARRAY2", HOFFSET(comp8_t, str_vlen_array_again), tid_vlen_str_array); - H5Tinsert(tid8_comp, "FIXLEN_STR_ARRAY1", HOFFSET(comp8_t, str_array_fixlen), tid_fixlen_str_array); - H5Tinsert(tid8_comp, "FIXLEN_STR_ARRAY2", HOFFSET(comp8_t, str_fixlen_array_again), tid_fixlen_str_array); - - /* compound 9 */ - H5Tinsert(tid9_comp, "VLEN_STR1", HOFFSET(comp9_t, str_vlen), tid_vlen_str ); - H5Tinsert(tid9_comp, "VLEN_STR2", HOFFSET(comp9_t, str_vlen_repeat), tid_vlen_str ); - H5Tinsert(tid9_comp, "FIXLEN_STR1", HOFFSET(comp9_t, str_fixlen), tid_fixlen_str ); - H5Tinsert(tid9_comp, "FIXLEN_STR2", HOFFSET(comp9_t, str_fixlen_repeat), tid_fixlen_str ); - H5Tinsert(tid9_comp, "VLEN_STR_ARRAY1", HOFFSET(comp9_t, str_array_vlen), tid_vlen_str_array); - H5Tinsert(tid9_comp, "VLEN_STR_ARRAY2", HOFFSET(comp9_t, str_vlen_array_again), tid_vlen_str_array); - H5Tinsert(tid9_comp, "FIXLEN_STR_ARRAY1", HOFFSET(comp9_t, str_array_fixlen), tid_fixlen_str_array); - H5Tinsert(tid9_comp, "FIXLEN_STR_ARRAY2", HOFFSET(comp9_t, str_fixlen_array_again), tid_fixlen_str_array); - H5Tinsert(tid9_comp, "INT_DATA1", HOFFSET(comp9_t, int_data1), H5T_STD_I32LE); - H5Tinsert(tid9_comp, "INT_DATA2", HOFFSET(comp9_t, int_data2), H5T_STD_I32BE); - H5Tinsert(tid9_comp, "INT_DATA3", HOFFSET(comp9_t, int_data3), H5T_STD_I32LE); - H5Tinsert(tid9_comp, "OBJREF1", HOFFSET(comp9_t, objref1), H5T_STD_REF_OBJ); - H5Tinsert(tid9_comp, "OBJREF2", HOFFSET(comp9_t, objref2), H5T_STD_REF_OBJ); - H5Tinsert(tid9_comp, "OBJREF3", HOFFSET(comp9_t, objref3), H5T_STD_REF_OBJ); - - - /* Write data to compound 1 dataset buffer */ - did_comp = H5Dcreate2(gid, "Compound_dset1", tid1_comp, sid_comp, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did_comp, tid1_comp, H5S_ALL, H5S_ALL, H5P_DEFAULT, &comp1_buf); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname1); - status = FAIL; - goto out; - } - H5Dclose(did_comp); - - /* Write data to compound 2 dataset buffer */ - did_comp = H5Dcreate2(gid, "Compound_dset2", tid2_comp, sid_comp, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did_comp, tid2_comp, H5S_ALL, H5S_ALL, H5P_DEFAULT, &comp2_buf); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname1); - status = FAIL; - goto out; - } - H5Dclose(did_comp); - - /* Write data to compound 3 dataset buffer */ - did_comp = H5Dcreate2(gid, "Compound_dset3", tid3_comp, sid_comp, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did_comp, tid3_comp, H5S_ALL, H5S_ALL, H5P_DEFAULT, &comp3_buf); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname1); - status = FAIL; - goto out; - } - H5Dclose(did_comp); - - /* Write data to compound 4 dataset buffer */ - did_comp = H5Dcreate2(gid, "Compound_dset4", tid4_comp, sid_comp, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did_comp, tid4_comp, H5S_ALL, H5S_ALL, H5P_DEFAULT, &comp4_buf); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname1); - status = FAIL; - goto out; - } - H5Dclose(did_comp); - - /* Write data to compound 5 dataset buffer */ - did_comp = H5Dcreate2(gid, "Compound_dset5", tid5_comp, sid_comp, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did_comp, tid5_comp, H5S_ALL, H5S_ALL, H5P_DEFAULT, &comp5_buf); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname1); - status = FAIL; - goto out; - } - H5Dclose(did_comp); - - /* Write data to compound 6 dataset buffer */ - did_comp = H5Dcreate2(gid, "Compound_dset6", tid6_comp, sid_comp, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did_comp, tid6_comp, H5S_ALL, H5S_ALL, H5P_DEFAULT, &comp6_buf); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname1); - status = FAIL; - goto out; - } - H5Dclose(did_comp); - - /* Write data to compound 7 dataset buffer */ - did_comp = H5Dcreate2(gid, "Compound_dset7", tid7_comp, sid_comp, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did_comp, tid7_comp, H5S_ALL, H5S_ALL, H5P_DEFAULT, &comp7_buf); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname1); - status = FAIL; - goto out; - } - H5Dclose(did_comp); - - /* Write data to compound 8 dataset buffer */ - did_comp = H5Dcreate2(gid, "Compound_dset8", tid8_comp, sid_comp, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did_comp, tid8_comp, H5S_ALL, H5S_ALL, H5P_DEFAULT, &comp8_buf); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname1); - status = FAIL; - goto out; - } - H5Dclose(did_comp); - - /* Write data to compound 9 dataset buffer */ - did_comp = H5Dcreate2(gid, "Compound_dset9", tid9_comp, sid_comp, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* obj references */ - status=H5Rcreate(&(comp9_buf.objref1),gid,"Compound_dset2",H5R_OBJECT,(hid_t)-1); - status=H5Rcreate(&(comp9_buf.objref2),gid,"Compound_dset3",H5R_OBJECT,(hid_t)-1); - status=H5Rcreate(&(comp9_buf.objref3),gid,"Compound_dset4",H5R_OBJECT,(hid_t)-1); - - status = H5Dwrite(did_comp, tid9_comp, H5S_ALL, H5S_ALL, H5P_DEFAULT, &comp9_buf); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname1); - status = FAIL; - goto out; - } - - - H5Dclose(did_comp); - - did_comp=0; -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1 > 0) - H5Fclose(fid1); - if(gid > 0) - H5Gclose(gid); - /* vlen string */ - if(tid_vlen_str > 0) - H5Tclose(tid_vlen_str); - if(sid_vlen_str > 0) - H5Sclose(sid_vlen_str); - /* fixed len string */ - if(tid_fixlen_str > 0) - H5Tclose(tid_fixlen_str); - if(sid_fixlen_str > 0) - H5Sclose(sid_fixlen_str); - /* vlen string array */ - if(tid_vlen_str_array_pre > 0) - H5Tclose(tid_vlen_str_array_pre); - if(tid_vlen_str_array > 0) - H5Tclose(tid_vlen_str_array); - if(sid_vlen_str_array > 0) - H5Sclose(sid_vlen_str_array); - /* fixed len string array */ - if(tid_fixlen_str_array_pre > 0) - H5Tclose(tid_fixlen_str_array_pre); - if(tid_fixlen_str_array > 0) - H5Tclose(tid_fixlen_str_array); - if(sid_fixlen_str_array > 0) - H5Sclose(sid_fixlen_str_array); - /* compound */ - if(tid1_comp > 0) - H5Tclose(tid1_comp); - if(tid2_comp > 0) - H5Tclose(tid2_comp); - if(tid3_comp > 0) - H5Tclose(tid3_comp); - if(tid4_comp > 0) - H5Tclose(tid4_comp); - if(tid5_comp > 0) - H5Tclose(tid5_comp); - if(tid6_comp > 0) - H5Tclose(tid6_comp); - if(tid7_comp > 0) - H5Tclose(tid7_comp); - if(tid8_comp > 0) - H5Tclose(tid8_comp); - if(tid9_comp > 0) - H5Tclose(tid9_comp); - if(did_comp > 0) - H5Dclose(did_comp); - if(sid_comp > 0) - H5Sclose(sid_comp); - - return status; -} /* end test_comp_vlen_strings() */ - - -/*------------------------------------------------------------------------- -* -* Purpose: Test diffs of enum values which may include invalid values. -* -* Programmer: Dana Robinson -* -*-------------------------------------------------------------------------*/ - -static int -test_enums(const char *fname) -{ - hid_t fid = -1; - - hid_t tid = -1; - int enum_val = -1; - - /* The data in the two arrays cover the following cases: - * - * V = valid enum value, I = invalid enum value - * - * 0: I-I (same value) - * 1: V-I - * 2: I-V - * 3: V-V (same value) - * 4: I-I (different values) SKIPPED FOR NOW - * 5: V-V (different values) - */ - /* *** NOTE *** - * - * There is a bug in H5Dread() where invalid enum values are always - * returned as -1 so two different invalid enum values cannot be - * properly compared. Test 4 has been adjusted to pass here - * while we fix the issue. - */ - int data1[6] = {9, 0, 9, 0, 9, 0}; - /*int data1[6] = {9, 0, 9, 0, 8, 0}; */ - int data2[6] = {9, 9, 0, 0, 9, 1}; - - hsize_t dims = 6; - - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create the file - *---------------------------------------------------------------------*/ - - fid = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /*----------------------------------------------------------------------- - * Create enum types - *---------------------------------------------------------------------*/ - - tid = H5Tenum_create(H5T_NATIVE_INT); - enum_val = 0; - status = H5Tenum_insert(tid, "YIN", &enum_val); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Tenum_insert failed.\n", fname); - status = FAIL; - goto out; - } - enum_val = 1; - status = H5Tenum_insert(tid, "YANG", &enum_val); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Tenum_insert failed.\n", fname); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Create datasets containing enum data. - *---------------------------------------------------------------------*/ - - status = write_dset(fid, 1, &dims, "dset1", tid, data1); - if (status < 0) - { - fprintf(stderr, "Error: %s> write_dset failed.\n", fname); - status = FAIL; - goto out; - } - status = write_dset(fid, 1, &dims, "dset2", tid, data2); - if (status < 0) - { - fprintf(stderr, "Error: %s> write_dset failed.\n", fname); - status = FAIL; - goto out; - } - -out: - /*----------------------------------------------------------------------- - * Close - *---------------------------------------------------------------------*/ - if(fid) - H5Fclose(fid); - if(tid) - H5Tclose(tid); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: -* Create test files with dataset and attribute with container types -* (array, vlen) with multiple nested compound types. -* -* Function: test_comps_array() -* - type: compound->array->compound -* -* Function: test_comps_vlen() -* - type: compound->vlen->compound -* -* Function: test_comps_array_vlen() -* - type: compound->array->compound->vlen->compound -* -* Function: test_comps_vlen_arry() -* - type: compound->vlen->compound->array->compound -* -* Programmer: Jonathan Kim (Sep, 1, 2011) -* -*-------------------------------------------------------------------------*/ -#define SDIM_DSET 2 -#define SDIM_CMPD_ARRAY 2 - -static void test_comps_array (const char *fname, const char *dset, const char *attr,int diff, int is_file_new) -{ - /* sub compound 2 */ - typedef struct { - int i2; - float f2; - } cmpd2_t; - - /* top compound 1 */ - typedef struct { - int i1; - cmpd2_t cmpd2[SDIM_CMPD_ARRAY]; - } cmpd1_t; - - cmpd1_t wdata[SDIM_DSET]; /* dataset with compound1 */ - - hid_t fid; /* HDF5 File IDs */ - hid_t did_dset; /* Dataset ID */ - hid_t sid_dset; /* Dataset space ID */ - hid_t tid_cmpd1; /* Compound1 type ID */ - hid_t tid_arry1; /* Array type ID in compound1 */ - hid_t tid_cmpd2; /* Compound2 type ID */ - hid_t tid_attr; - hsize_t sdims_dset[] = {SDIM_DSET}; - hsize_t sdims_cmpd_arry[] = {SDIM_CMPD_ARRAY}; - int i,j; - herr_t ret; /* Generic return value */ - - /* Initialize array data to write */ - for(i=0; i < SDIM_DSET; i++) - { - wdata[i].i1 = i; - for(j=0; j < SDIM_CMPD_ARRAY; j++) - { - wdata[i].cmpd2[j].i2 = i * 10 + diff; - wdata[i].cmpd2[j].f2 = (float)i * 10.5F + (float)diff; - } /* end for */ - } - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - if (is_file_new == 1) - fid = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - else - fid = H5Fopen (fname, H5F_ACC_RDWR, H5P_DEFAULT); - - - /* ------------------------------- - * Create a sub compound2 datatype */ - tid_cmpd2 = H5Tcreate(H5T_COMPOUND, sizeof(cmpd2_t)); - - /* Insert integer field */ - ret = H5Tinsert(tid_cmpd2, "int2", HOFFSET(cmpd2_t, i2), H5T_NATIVE_INT); - assert(ret >= 0); - - /* Insert float field */ - ret = H5Tinsert(tid_cmpd2, "float2", HOFFSET(cmpd2_t, f2), H5T_NATIVE_FLOAT); - assert(ret >= 0); - - /*----------------------------------- - * Create a top compound1. - */ - tid_cmpd1 = H5Tcreate (H5T_COMPOUND, sizeof(cmpd1_t)); - - ret = H5Tinsert(tid_cmpd1, "int1", HOFFSET(cmpd1_t, i1), H5T_NATIVE_INT); - assert(ret >= 0); - - /* Create an array datatype */ - tid_arry1 = H5Tarray_create2(tid_cmpd2, 1, sdims_cmpd_arry); - /* insert the array */ - ret = H5Tinsert(tid_cmpd1, "array_cmpd1", HOFFSET(cmpd1_t, cmpd2), tid_arry1); - assert(ret >= 0); - - - /* ------------------- - * Create a dataset - */ - /* Create dataspace for datasets */ - sid_dset = H5Screate_simple(1, sdims_dset, NULL); - - did_dset = H5Dcreate2(fid, dset, tid_cmpd1, sid_dset, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write dataset to disk */ - ret = H5Dwrite(did_dset, tid_cmpd1, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - assert(ret >= 0); - - /*----------------------------------- - * Create an attribute in root group - */ - tid_attr = H5Acreate2(fid, attr, tid_cmpd1, sid_dset, H5P_DEFAULT, H5P_DEFAULT); - assert(tid_attr > 0); - ret = H5Awrite(tid_attr, tid_cmpd1, wdata); - assert(ret >= 0); - - /* ---------------- - * Close Dataset */ - ret = H5Aclose(tid_attr); - assert(ret >= 0); - ret = H5Tclose(tid_arry1); - assert(ret >= 0); - ret = H5Dclose(did_dset); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd1); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd2); - assert(ret >= 0); - ret = H5Sclose(sid_dset); - assert(ret >= 0); - ret = H5Fclose(fid); - assert(ret >= 0); -} - - - -static void test_comps_vlen (const char * fname, const char *dset, const char *attr, int diff, int is_file_new) -{ - /* sub compound 2 */ - typedef struct { - int i2; - float f2; - } cmpd2_t; - - /* top compound 1 */ - typedef struct { - int i1; - hvl_t vl; /* VL information for compound2 */ - } cmpd1_t; - - cmpd1_t wdata[SDIM_DSET]; /* Dataset for compound1 */ - - hid_t fid; /* HDF5 File ID */ - hid_t did_dset; /* dataset ID */ - hid_t sid_dset; /* dataset space ID */ - hid_t tid_attr; - hid_t tid_cmpd2; /* compound2 type ID */ - hid_t tid_cmpd1; /* compound1 type ID */ - hid_t tid_cmpd1_vlen; - hsize_t sdims_dset[] = {SDIM_DSET}; - - unsigned i,j; /* counting variables */ - herr_t ret; /* Generic return value */ - - /* Allocate and initialize VL data to write */ - for(i = 0; i < SDIM_DSET; i++) { - wdata[i].i1 = (int)i; - wdata[i].vl.p = HDmalloc((i + 1) * sizeof(cmpd2_t)); - wdata[i].vl.len = i + 1; - for(j = 0; j < (i + 1); j++) { - ((cmpd2_t *)wdata[i].vl.p)[j].i2 = (int)(i * 10 + (unsigned)diff); - ((cmpd2_t *)wdata[i].vl.p)[j].f2 = (float)i * 10.5F + (float)diff; - } /* end for */ - } /* end for */ - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - if (is_file_new == 1) - fid = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - else - fid = H5Fopen (fname, H5F_ACC_RDWR, H5P_DEFAULT); - - /* ----------------------------- - * Create sub compound2 type */ - tid_cmpd2 = H5Tcreate(H5T_COMPOUND, sizeof(cmpd2_t)); - - /* Insert fields */ - ret = H5Tinsert(tid_cmpd2, "int2", HOFFSET(cmpd2_t, i2), H5T_NATIVE_INT); - assert(ret >= 0); - ret = H5Tinsert(tid_cmpd2, "float2", HOFFSET(cmpd2_t, f2), H5T_NATIVE_FLOAT); - assert(ret >= 0); - - /* --------------------------- - * Create top compound1 type */ - tid_cmpd1 = H5Tcreate(H5T_COMPOUND, sizeof(cmpd1_t)); - /* Insert fields */ - ret = H5Tinsert(tid_cmpd1, "int1", HOFFSET(cmpd1_t, i1), H5T_NATIVE_INT); - assert(ret >= 0); - /* Create a VL datatype */ - tid_cmpd1_vlen = H5Tvlen_create(tid_cmpd2); - - ret = H5Tinsert(tid_cmpd1, "vlen_cmpd1", HOFFSET(cmpd1_t, vl), tid_cmpd1_vlen); - assert(ret >= 0); - - /* ------------------------------- - * Create dataset with compound1 - */ - /* Create dataspace for dataset */ - sid_dset = H5Screate_simple(1, sdims_dset, NULL); - - /* Create a dataset */ - did_dset = H5Dcreate2(fid, dset, tid_cmpd1, sid_dset, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write dataset to disk */ - ret = H5Dwrite(did_dset, tid_cmpd1, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - assert(ret >= 0); - - /*----------------------------------- - * Create an attribute in root group - */ - tid_attr = H5Acreate2(fid, attr, tid_cmpd1, sid_dset, H5P_DEFAULT, H5P_DEFAULT); - assert(tid_attr > 0); - ret = H5Awrite(tid_attr, tid_cmpd1, wdata); - assert(ret >= 0); - - /* Reclaim the write VL data */ - ret = H5Dvlen_reclaim(tid_cmpd1, sid_dset, H5P_DEFAULT, wdata); - assert(ret >= 0); - - /* ---------------- - * Close IDs */ - ret = H5Aclose(tid_attr); - assert(ret >= 0); - ret = H5Dclose(did_dset); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd2); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd1); - assert(ret >= 0); - ret = H5Sclose(sid_dset); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd1_vlen); - assert(ret >= 0); - ret = H5Fclose(fid); - assert(ret >= 0); -} - - -static void test_comps_array_vlen (const char * fname, const char *dset,const char *attr, int diff, int is_file_new) -{ - typedef struct { - int i3; - float f3; - } cmpd3_t; - - typedef struct { /* Typedef for compound datatype */ - int i2; - hvl_t vl; /* VL information to write */ - } cmpd2_t; - - typedef struct { - int i1; - cmpd2_t cmpd2[SDIM_CMPD_ARRAY]; - } cmpd1_t; - - cmpd1_t wdata[SDIM_DSET]; /* Information to write */ - hid_t fid; /* HDF5 File IDs */ - hid_t did_dset; /* Dataset ID */ - hid_t sid_dset; /* Dataspace ID */ - hid_t tid_attr; - hid_t tid_cmpd1; /* Compound1 Datatype ID */ - hid_t tid_arry1; /* Array Datatype ID */ - hid_t tid_cmpd2; /* Compound2 Datatype ID */ - hid_t tid_cmpd2_vlen; - hid_t tid_cmpd3; /* Compound3 Datatype ID */ - hsize_t sdims_dset[] = {SDIM_DSET}; - hsize_t sdims_arry[] = {SDIM_CMPD_ARRAY}; - unsigned i, j, k; /* counting variables */ - herr_t ret; /* Generic return value */ - - - - /* Initialize array data to write in compound1 */ - for(i = 0; i < SDIM_DSET; i++) { - wdata[i].i1 = (int)i; - - /* Allocate and initialize VL data to write in compound2 */ - for(j = 0; j < SDIM_CMPD_ARRAY; j++) { - wdata[i].cmpd2[j].i2 = (int)(j * 10); - wdata[i].cmpd2[j].vl.p = HDmalloc((j + 1) * sizeof(cmpd3_t)); - wdata[i].cmpd2[j].vl.len = j + 1; - for(k = 0; k < (j + 1); k++) { - /* Initialize data of compound3 */ - ((cmpd3_t *)wdata[i].cmpd2[j].vl.p)[k].i3 = (int)j * 10 + diff; - ((cmpd3_t *)wdata[i].cmpd2[j].vl.p)[k].f3 = (float)j * 10.5F + (float)diff; - } /* end for */ - } /* end for */ - } - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - if (is_file_new == 1) - fid = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - else - fid = H5Fopen (fname, H5F_ACC_RDWR, H5P_DEFAULT); - - /* Create dataspace for datasets */ - sid_dset = H5Screate_simple(1, sdims_dset, NULL); - - /*------------------------------------- - * Create a sub compound3 datatype */ - tid_cmpd3 = H5Tcreate(H5T_COMPOUND, sizeof(cmpd3_t)); - - /* Insert integer field */ - ret = H5Tinsert(tid_cmpd3, "int", HOFFSET(cmpd3_t, i3), H5T_NATIVE_INT); - assert(ret >= 0); - - /* Insert float field */ - ret = H5Tinsert(tid_cmpd3, "float", HOFFSET(cmpd3_t, f3), H5T_NATIVE_FLOAT); - assert(ret >= 0); - - - /*------------------------------------- - * Create a sub compound2 datatype */ - tid_cmpd2 = H5Tcreate(H5T_COMPOUND, sizeof(cmpd2_t)); - - /* Insert integer field */ - ret = H5Tinsert(tid_cmpd2, "int", HOFFSET(cmpd2_t, i2), H5T_NATIVE_INT); - assert(ret >= 0); - /* Create a VL datatype */ - tid_cmpd2_vlen = H5Tvlen_create(tid_cmpd3); - ret = H5Tinsert(tid_cmpd2, "vlen", HOFFSET(cmpd2_t, vl), tid_cmpd2_vlen); - assert(ret >= 0); - - - /*----------------------------------- - * Create a top compound1 datatype for dataset. - */ - tid_cmpd1 = H5Tcreate (H5T_COMPOUND, sizeof(cmpd1_t)); - - /* Create an array datatype */ - tid_arry1 = H5Tarray_create2(tid_cmpd2, 1, sdims_arry); - /* insert the array */ - H5Tinsert(tid_cmpd1, "array_comp", HOFFSET(cmpd1_t, cmpd2), tid_arry1); - - - /* ---------------------- - * Create a dataset */ - did_dset = H5Dcreate2(fid, dset, tid_cmpd1, sid_dset, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write dataset to disk */ - ret = H5Dwrite(did_dset, tid_cmpd1, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - assert(ret >= 0); - - /*----------------------------------- - * Create an attribute in root group - */ - tid_attr = H5Acreate2(fid, attr, tid_cmpd1, sid_dset, H5P_DEFAULT, H5P_DEFAULT); - assert(tid_attr > 0); - ret = H5Awrite(tid_attr, tid_cmpd1, wdata); - assert(ret >= 0); - - /* Reclaim the write VL data */ - ret = H5Dvlen_reclaim(tid_cmpd1, sid_dset, H5P_DEFAULT, wdata); - assert(ret >= 0); - - /*------------------- - * Close IDs */ - ret = H5Aclose(tid_attr); - assert(ret >= 0); - ret = H5Tclose(tid_arry1); - assert(ret >= 0); - ret = H5Dclose(did_dset); - assert(ret >= 0); - ret = H5Sclose(sid_dset); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd3); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd2); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd2_vlen); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd1); - assert(ret >= 0); - ret = H5Fclose(fid); - assert(ret >= 0); -} - - -static void test_comps_vlen_arry (const char * fname, const char *dset, const char *attr, int diff, int is_file_new) -{ - /* sub compound 3 */ - typedef struct { - int i3; - float f3; - } cmpd3_t; - - /* sub compound 2 */ - typedef struct { - int i2; - cmpd3_t cmpd3[SDIM_CMPD_ARRAY]; - } cmpd2_t; - - /* top compound 1 */ - typedef struct { - int i1; - hvl_t vl; /* VL information for compound2 */ - } cmpd1_t; - - cmpd1_t wdata[SDIM_DSET]; /* Dataset for compound1 */ - - hid_t fid; /* HDF5 File ID */ - hid_t did_dset; /* dataset ID */ - hid_t sid_dset; /* dataset space ID */ - hid_t tid_attr; - hid_t tid_cmpd3; /* compound3 type ID */ - hid_t tid_cmpd2; /* compound2 type ID */ - hid_t tid_cmpd2_arry; - hid_t tid_cmpd1; /* compound1 type ID */ - hid_t tid_cmpd1_vlen; - hsize_t sdims_dset[] = {SDIM_DSET}; - hsize_t sdims_cmpd_arry[] = {SDIM_CMPD_ARRAY}; - - unsigned i,j,k; /* counting variables */ - herr_t ret; /* Generic return value */ - - /* Allocate and initialize VL data to write */ - for(i = 0; i < SDIM_DSET; i++) { - /* compound 1 data */ - wdata[i].i1 = (int)i; - wdata[i].vl.p = HDmalloc((i + 1) * sizeof(cmpd2_t)); - wdata[i].vl.len = i + 1; - for(j = 0; j < (i + 1); j++) { - /* compound2 data */ - ((cmpd2_t *)wdata[i].vl.p)[j].i2 = (int)i * 10 + diff; - for(k = 0; k < SDIM_CMPD_ARRAY; k++) { - /* compound 3 data */ - ((cmpd2_t *)(wdata[i].vl.p))[j].cmpd3[k].i3 = (int)((float)k * 10.5F) + diff; - ((cmpd2_t *)(wdata[i].vl.p))[j].cmpd3[k].f3 = (float)k * 10.5F + (float)diff; - } /* end for */ - } /* end for */ - } /* end for */ - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - if (is_file_new == 1) - fid = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - else - fid = H5Fopen (fname, H5F_ACC_RDWR, H5P_DEFAULT); - - /* ----------------------------- - * Create sub compound3 type */ - tid_cmpd3 = H5Tcreate(H5T_COMPOUND, sizeof(cmpd3_t)); - - /* Insert fields */ - ret = H5Tinsert(tid_cmpd3, "int3", HOFFSET(cmpd3_t, i3), H5T_NATIVE_INT); - assert(ret >= 0); - ret = H5Tinsert(tid_cmpd3, "float3", HOFFSET(cmpd3_t, f3), H5T_NATIVE_FLOAT); - assert(ret >= 0); - - /* ----------------------------- - * Create sub compound2 type */ - tid_cmpd2 = H5Tcreate(H5T_COMPOUND, sizeof(cmpd2_t)); - - ret = H5Tinsert(tid_cmpd2, "int2", HOFFSET(cmpd2_t, i2), H5T_NATIVE_INT); - assert(ret >= 0); - - tid_cmpd2_arry = H5Tarray_create2(tid_cmpd3, 1, sdims_cmpd_arry); - ret = H5Tinsert(tid_cmpd2, "array_cmpd2", HOFFSET(cmpd2_t, cmpd3), tid_cmpd2_arry); - assert(ret >= 0); - - /* --------------------------- - * Create top compound1 type - */ - /* Create a VL datatype */ - tid_cmpd1 = H5Tcreate(H5T_COMPOUND, sizeof(cmpd1_t)); - /* Insert fields */ - ret = H5Tinsert(tid_cmpd1, "int1", HOFFSET(cmpd1_t, i1), H5T_NATIVE_INT); - assert(ret >= 0); - tid_cmpd1_vlen = H5Tvlen_create(tid_cmpd2); - ret = H5Tinsert(tid_cmpd1, "vlen_cmpd1", HOFFSET(cmpd1_t, vl), tid_cmpd1_vlen); - assert(ret >= 0); - - /* ------------------------------- - * Create dataset with compound1 - */ - /* Create dataspace for dataset */ - sid_dset = H5Screate_simple(1, sdims_dset, NULL); - - /* Create a dataset */ - did_dset = H5Dcreate2(fid, dset, tid_cmpd1, sid_dset, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write dataset to disk */ - ret = H5Dwrite(did_dset, tid_cmpd1, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - assert(ret >= 0); - - /*----------------------------------- - * Create an attribute in root group - */ - tid_attr = H5Acreate2(fid, attr, tid_cmpd1, sid_dset, H5P_DEFAULT, H5P_DEFAULT); - assert(tid_attr > 0); - ret = H5Awrite(tid_attr, tid_cmpd1, wdata); - assert(ret >= 0); - - /* Reclaim the write VL data */ - ret = H5Dvlen_reclaim(tid_cmpd1, sid_dset, H5P_DEFAULT, wdata); - assert(ret >= 0); - - /* ---------------- - * Close IDs */ - ret = H5Aclose(tid_attr); - assert(ret >= 0); - ret = H5Dclose(did_dset); - assert(ret >= 0); - ret = H5Sclose(sid_dset); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd3); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd2_arry); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd2); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd1_vlen); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd1); - assert(ret >= 0); - ret = H5Fclose(fid); - assert(ret >= 0); -} - - -/*------------------------------------------------------------------------- -* Function: test_data_nocomparables -* -* Purpose: -* Create test files with non-comparable dataset and attributes with -* comparable datasets and attributes. All the comparables should display -* differences. -* -*-------------------------------------------------------------------------*/ -#define DIM_ARRY 3 -static void test_data_nocomparables (const char * fname, int make_diffs) -{ - hid_t fid=0; - hid_t gid1=0; - hid_t gid2=0; - hid_t did1=0; - hid_t did2=0; - hid_t sid1=0; - hid_t tid_dset1=0; - hid_t tid_attr1=0; - hsize_t dims1_1[1] = {DIM_ARRY}; - hsize_t dims1_2[1] = {DIM_ARRY+1}; - hsize_t dims2[2] = {DIM_ARRY, 1}; - int data1[DIM_ARRY] = {0,0,0}; - int data2[DIM_ARRY] = {1,1,1}; - int data3[DIM_ARRY+1] = {1,1,1,1}; - int data1_dim2[DIM_ARRY][1] = {{0},{0},{0}}; - int rank_attr; - char data1_str[DIM_ARRY][STR_SIZE]= {"ab","cd","ef"}; - herr_t status = SUCCEED; - void *dset_data_ptr1=NULL; - void *dset_data_ptr2=NULL; - void *dset_data_ptr3=NULL; - void *attr_data_ptr1=NULL; - void *attr_data_ptr2=NULL; - void *attr_data_ptr3=NULL; - void *attr_data_ptr4=NULL; - void *attr2_dim_ptr=NULL; - void *attr3_dim_ptr=NULL; - - /* init */ - tid_dset1=H5Tcopy(H5T_NATIVE_INT); - dset_data_ptr1=(int*)&data1; - dset_data_ptr2=(int*)&data1; - dset_data_ptr3=(int*)&data1; - tid_attr1=H5Tcopy(H5T_NATIVE_INT); - attr_data_ptr1=(int*)&data1; - attr_data_ptr3=(int*)&data1; - attr_data_ptr4=(int*)&data1; - attr2_dim_ptr=(hsize_t*)&dims1_1; - attr3_dim_ptr=(hsize_t*)&dims1_1; - rank_attr=1; - - if (make_diffs) - { - /* ------------ - * group1 */ - tid_dset1=H5Tcopy(H5T_C_S1); - H5Tset_size(tid_dset1, (size_t)STR_SIZE); - dset_data_ptr1=(char*)&data1_str; - dset_data_ptr2=(int*)&data2; - attr_data_ptr1=(int*)&data2; - - /* ----------- - * group2 - */ - dset_data_ptr3=(int*)&data2; - /* dset1/attr1 */ - tid_attr1=H5Tcopy(H5T_C_S1); - H5Tset_size(tid_attr1, (size_t)STR_SIZE); - attr_data_ptr2=(char*)&data1_str; - - /* dset1/attr2 */ - attr2_dim_ptr=(hsize_t*)&dims1_2; - - /* dset1/attr3 */ - attr_data_ptr3=(int*)&data1_dim2; - attr3_dim_ptr=(hsize_t*)&dims2; - rank_attr=2; - - /* dset1/attr4 */ - attr_data_ptr4=(int*)&data2; - - } - - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - fid = H5Fcreate (fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Groups - *------------------------------------------------------------------------*/ - gid1 = H5Gcreate2(fid, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname); - status = FAIL; - goto out; - } - - gid2 = H5Gcreate2(fid, "g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Datasets in /g1 - *------------------------------------------------------------------------*/ - if((sid1 = H5Screate_simple(1, dims1_1, NULL)) < 0) - goto out; - - /* dset1 */ - if((did1 = H5Dcreate2(gid1, "dset1", tid_dset1, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - { - fprintf(stderr, "Error: %s> H5Dcreate2 failed.\n", "dset1"); - status = FAIL; - goto out; - } - - if(H5Dwrite(did1, tid_dset1, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset_data_ptr1) < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", "dset1"); - status = FAIL; - goto out; - } - write_attr(did1,1,dims1_1,"attr", H5T_NATIVE_INT, attr_data_ptr1); - - /* dset2 */ - status = write_dset(gid1, 1, dims1_1,"dset2", H5T_NATIVE_INT, dset_data_ptr2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname); - goto out; - } - - /*----------------------------------------------------------------------- - * Datasets in /g2 - *------------------------------------------------------------------------*/ - /* --------- - * dset1 */ - if((did2 = H5Dcreate2(gid2, "dset1", H5T_NATIVE_INT, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - { - fprintf(stderr, "Error: %s> H5Dcreate2 failed.\n", "dset1"); - status = FAIL; - goto out; - } - - if(H5Dwrite(did2, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset_data_ptr3) < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", "dset1"); - status = FAIL; - goto out; - } - /* attr1 - non-compatible : different type */ - write_attr(did2,1,dims1_1,"attr1", tid_attr1, attr_data_ptr2); - - - /* attr2 - non-compatible : same rank, different dimention */ - write_attr(did2,1,(hsize_t *)attr2_dim_ptr,"attr2", H5T_NATIVE_INT, data3); - - /* attr3 - non-compatible : different rank */ - write_attr(did2, rank_attr,(hsize_t *)attr3_dim_ptr,"attr3", H5T_NATIVE_INT, attr_data_ptr3); - - /* attr4 - compatible : different data values */ - write_attr(did2,1,dims1_1,"attr4", H5T_NATIVE_INT, attr_data_ptr4); - - /*---------- - * dset2 */ - status = write_dset(gid2, 1, dims1_1,"dset2", H5T_NATIVE_INT, dset_data_ptr3); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname); - goto out; - } - - - -out: - - /*----------------------------------------------------------------------- - * Close IDs - *-----------------------------------------------------------------------*/ - if(fid) - H5Fclose(fid); - if(gid1) - H5Gclose(gid1); - if(gid2) - H5Gclose(gid2); - if(did1) - H5Dclose(did1); - if(did2) - H5Dclose(did2); - if(sid1) - H5Sclose(sid1); - if(tid_dset1) - H5Tclose(tid_dset1); - if(tid_attr1) - H5Tclose(tid_attr1); -} - -/*------------------------------------------------------------------------- -* Function: test_objs_nocomparables -* -* Purpose: -* Create test files with common objects (same name) but different object -* types. -* h5diff should show non-comparable output from these common objects. -*-------------------------------------------------------------------------*/ -static void test_objs_nocomparables(const char *fname1, const char *fname2) -{ - herr_t status = SUCCEED; - hid_t fid1=0; - hid_t fid2=0; - hid_t topgid1=0; - hid_t topgid2=0; - hid_t gid1=0; - hid_t did1=0; - hid_t tid1=0; - hid_t gid2=0; - hid_t did2=0; - hid_t tid2=0; - hsize_t dims[1] = {DIM_ARRY}; - int data1[DIM_ARRY] = {1,1,1}; - int data2[DIM_ARRY] = {2,2,2}; - - /*----------------------------------------------------------------------- - * Open file(s) to add objects - *------------------------------------------------------------------------*/ - /* file1 */ - fid1 = H5Fopen (fname1, H5F_ACC_RDWR, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fopen failed.\n", fname1); - status = FAIL; - goto out; - } - - /* file2 */ - fid2 = H5Fopen (fname2, H5F_ACC_RDWR, H5P_DEFAULT); - if (fid2 < 0) - { - fprintf(stderr, "Error: %s> H5Fopen failed.\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * in file1 : add member objects - *------------------------------------------------------------------------*/ - /* parent group */ - topgid1 = H5Gcreate2(fid1, "diffobjtypes", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (topgid1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /* dataset */ - status = write_dset(topgid1, 1, dims,"obj1", H5T_NATIVE_INT, data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - goto out; - } - - /* group */ - gid1 = H5Gcreate2(topgid1, "obj2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /* committed type */ - tid1 = H5Tcopy(H5T_NATIVE_INT); - status = H5Tcommit2(topgid1, "obj3", tid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Tcommit2 failed.\n", fname1); - goto out; - } - - /*----------------------------------------------------------------------- - * in file2 : add member objects - *------------------------------------------------------------------------*/ - /* parent group */ - topgid2 = H5Gcreate2(fid2, "diffobjtypes", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (topgid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - /* group */ - gid2 = H5Gcreate2(topgid2, "obj1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - /* committed type */ - tid2 = H5Tcopy(H5T_NATIVE_INT); - status = H5Tcommit2(topgid2, "obj2", tid2, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Tcommit2 failed.\n", fname2); - goto out; - } - - /* dataset */ - status = write_dset(topgid2, 1, dims,"obj3", H5T_NATIVE_INT, data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - goto out; - } - -out: - /*----------------------------------------------------------------------- - * Close IDs - *-----------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(fid2) - H5Fclose(fid2); - if(topgid1) - H5Gclose(topgid1); - if(topgid2) - H5Gclose(topgid2); - if(did1) - H5Dclose(did1); - if(did2) - H5Dclose(did2); - if(gid1) - H5Gclose(gid1); - if(gid2) - H5Gclose(gid2); - if(tid1) - H5Tclose(tid1); - if(tid2) - H5Tclose(tid2); - -} - -/*------------------------------------------------------------------------- -* Function: write_attr_in -* -* Purpose: write attributes in LOC_ID (dataset, group, named datatype) -* -*------------------------------------------------------------------------- -*/ -static -void write_attr_in(hid_t loc_id, - const char* dset_name, /* for saving reference to dataset*/ - hid_t fid, - int make_diffs /* flag to modify data buffers */) -{ - /* Compound datatype */ - typedef struct s_t - { - char a; - double b; - } s_t; - - typedef enum - { - RED, - GREEN - } e_t; - - hid_t aid; - hid_t sid; - hid_t tid; - herr_t status; - int val, i, j, k, l, n; - float f; - - /* create 1D attributes with dimension [2], 2 elements */ - hsize_t dims[1]={2}; - char buf1[2][STR_SIZE]= {"ab","de"}; /* string */ - char *buf1a[2]; /* VL string */ - char buf2[2]= {1,2}; /* bitfield, opaque */ - s_t buf3[2]= {{1,2.0F},{3,4.0F}}; /* compound */ - hobj_ref_t buf4[2]; /* reference */ - e_t buf45[2]= {RED,RED}; /* enum */ - hvl_t buf5[2]; /* vlen */ - hsize_t dimarray[1]={3}; /* array dimension */ - int buf6[2][3]= {{1,2,3},{4,5,6}}; /* array */ - int buf7[2]= {1,2}; /* integer */ - float buf8[2]= {1.0F, 2.0F}; /* float */ - - /* create 2D attributes with dimension [3][2], 6 elements */ - hsize_t dims2[2]={3,2}; - char buf12[3][2][STR_SIZE]= {{"ab","cd"},{"ef","gh"},{"ij","kl"}}; /* string */ - char *buf12a[3][2]; /* VL string */ - char buf22[3][2]= {{1,2},{3,4},{5,6}}; /* bitfield, opaque */ - s_t buf32[6]= {{1,2.0F},{3,4.0F},{5,6.0F},{7,8.0F},{9,10.0F},{11,12.0F}}; /* compound */ - hobj_ref_t buf42[3][2]; /* reference */ - e_t buf452[3][2]; /* enum */ - hvl_t buf52[3][2]; /* vlen */ - int buf62[6][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15},{16,17,18}}; /* array */ - int buf72[3][2]= {{1,2},{3,4},{5,6}}; /* integer */ - float buf82[3][2]= {{1.0F,2.0F},{3.0F,4.0F},{5.0F,6.0F}}; /* float */ - - /* create 3D attributes with dimension [4][3][2], 24 elements */ - hsize_t dims3[3]={4,3,2}; - char buf13[4][3][2][STR_SIZE]= {{{"ab","cd"},{"ef","gh"},{"ij","kl"}}, - {{"mn","pq"},{"rs","tu"},{"vw","xz"}}, - {{"AB","CD"},{"EF","GH"},{"IJ","KL"}}, - {{"MN","PQ"},{"RS","TU"},{"VW","XZ"}}}; /* string */ - char *buf13a[4][3][2]; /* VL string */ - char buf23[4][3][2]; /* bitfield, opaque */ - s_t buf33[4][3][2]; /* compound */ - hobj_ref_t buf43[4][3][2]; /* reference */ - e_t buf453[4][3][2]; /* enum */ - hvl_t buf53[4][3][2]; /* vlen */ - int buf63[24][3]; /* array */ - int buf73[4][3][2]; /* integer */ - float buf83[4][3][2]; /* float */ - - - /*------------------------------------------------------------------------- - * 1D attributes - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - { - for (j=0; j<2; j++) - { - buf1[i][j]='z'; - } - } - } - /* - buf1[2][2]= {"ab","de"}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - Attribute: and - position string of string of difference - ------------------------------------------------------------ - [ 0 ] a z - [ 0 ] b z - [ 1 ] d z - [ 1 ] e z - */ - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, (size_t)STR_SIZE); - write_attr(loc_id,1,dims,"string",tid,buf1); - status = H5Tclose(tid); - - for (i=0; i<2; i++) - buf1a[i]=buf1[i]; - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, H5T_VARIABLE); - write_attr(loc_id,1,dims,"VLstring",tid,buf1a); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - buf2[i]=buf2[1]=0; - } - /* - buf2[2]= {1,2}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - Attribute: and - position bitfield of bitfield of difference - position opaque of opaque of difference - ------------------------------------------------------------ - [ 0 ] 1 0 1 - [ 1 ] 2 0 2 - */ - - tid = H5Tcopy(H5T_STD_B8LE); - write_attr(loc_id,1,dims,"bitfield",tid,buf2); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - - /* - buf2[2]= {1,2}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - Attribute: and - position opaque of opaque of difference - position opaque of opaque of difference - ------------------------------------------------------------ - [ 0 ] 1 0 1 - [ 1 ] 2 0 2 - */ - - tid = H5Tcreate(H5T_OPAQUE, (size_t)1); - status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */ - write_attr(loc_id,1,dims,"opaque",tid,buf2); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - { - buf3[i].a=0; buf3[i].b=0; - } - } - - /* - buf3[2]= {{1,2},{3,4}}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - Attribute: and - position compound of compound of difference - ------------------------------------------------------------ - [ 0 ] 1 5 4 - [ 0 ] 2 5 3 - [ 1 ] 3 5 2 - [ 1 ] 4 5 1 - */ - - tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t)); - H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR); - H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE); - write_attr(loc_id,1,dims,"compound",tid,buf3); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_REFERENCE (H5R_OBJECT object reference) - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if (dset_name) - { - status=H5Rcreate(&buf4[0],fid,dset_name,H5R_OBJECT,(hid_t)-1); - status=H5Rcreate(&buf4[1],fid,dset_name,H5R_OBJECT,(hid_t)-1); - write_attr(loc_id,1,dims,"reference",H5T_STD_REF_OBJ,buf4); - } - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - if (make_diffs) - { - for (i=0; i<2; i++) - { - buf45[i]=GREEN; - } - } - /* - buf45[2]= {RED,RED}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - Attribute: and - position enum of enum of difference - ------------------------------------------------------------ - [ 0 ] RED GREEN - [ 1 ] RED GREEN - */ - tid = H5Tcreate(H5T_ENUM, sizeof(e_t)); - H5Tenum_insert(tid, "RED", (val = 0, &val)); - H5Tenum_insert(tid, "GREEN", (val = 1, &val)); - write_attr(loc_id,1,dims,"enum",tid,buf45); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - - buf5[0].len = 1; - buf5[0].p = HDmalloc( 1 * sizeof(int)); - ((int *)buf5[0].p)[0]=1; - buf5[1].len = 2; - buf5[1].p = HDmalloc( 2 * sizeof(int)); - ((int *)buf5[1].p)[0]=2; - ((int *)buf5[1].p)[1]=3; - - if (make_diffs) - { - ((int *)buf5[0].p)[0]=0; - ((int *)buf5[1].p)[0]=0; - ((int *)buf5[1].p)[1]=0; - } - /* - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - position vlen of vlen of difference - ------------------------------------------------------------ - [ 0 ] 1 0 1 - [ 1 ] 2 0 2 - [ 1 ] 3 0 3 - */ - - sid = H5Screate_simple(1, dims, NULL); - tid = H5Tvlen_create(H5T_NATIVE_INT); - aid = H5Acreate2(loc_id, "vlen", tid, sid, H5P_DEFAULT, H5P_DEFAULT); - status = H5Awrite(aid, tid, buf5); - assert(status >= 0); - status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf5); - assert(status >= 0); - status = H5Aclose(aid); - status = H5Tclose(tid); - status = H5Sclose(sid); - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - for (j=0; j<3; j++) - { - buf6[i][j]=0; - } - } - /* - buf6[2][3]= {{1,2,3},{4,5,6}}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - Attribute: and - position array of array of difference - ------------------------------------------------------------ - [ 0 ] 1 0 1 - [ 0 ] 2 0 2 - [ 0 ] 3 0 3 - [ 1 ] 4 0 4 - [ 1 ] 5 0 5 - [ 1 ] 6 0 6 - */ - tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray); - write_attr(loc_id, 1, dims, "array", tid, buf6); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_INTEGER and H5T_FLOAT - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - { - buf7[i]=0; - buf8[i]=0; - } - } - /* - buf7[2]= {1,2}; - buf8[2]= {1,2}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - position integer of integer of difference - ------------------------------------------------------------ - [ 0 ] 1 0 1 - [ 1 ] 2 0 2 - position float of float of difference - ------------------------------------------------------------ - [ 0 ] 1 0 1 - [ 1 ] 2 0 2 - */ - write_attr(loc_id,1,dims,"integer",H5T_NATIVE_INT,buf7); - write_attr(loc_id,1,dims,"float",H5T_NATIVE_FLOAT,buf8); - - - /*------------------------------------------------------------------------- - * 2D attributes - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - if (make_diffs) - { - for (i=0; i<3; i++) - for (j=0; j<2; j++) - for (k=0; k<2; k++) - buf12[i][j][k]='z'; - } - - /* - buf12[6][2]= {"ab","cd","ef","gh","ij","kl"}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Attribute: and - position string2D of string2D of difference - ------------------------------------------------------------ - [ 0 0 ] a z - [ 0 0 ] b z - [ 0 1 ] c z - [ 0 1 ] d z - [ 1 0 ] e z - [ 1 0 ] f z - [ 1 1 ] g z - [ 1 1 ] h z - [ 2 0 ] i z - [ 2 0 ] j z - [ 2 1 ] k z - [ 2 1 ] l z - */ - - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, (size_t)STR_SIZE); - write_attr(loc_id,2,dims2,"string2D",tid,buf12); - status = H5Tclose(tid); - - for (i=0; i<3; i++) - { - for (j=0; j<2; j++) - { - - buf12a[i][j]=buf12[i][j]; - } - } - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, H5T_VARIABLE); - write_attr(loc_id,2,dims2,"VLstring2D",tid,buf12a); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - memset(buf22,0,sizeof buf22); - } - - /* - buf22[3][2]= {{1,2},{3,4},{5,6}}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Attribute: and - position bitfield2D of bitfield2D of difference - ------------------------------------------------------------ - [ 0 0 ] 1 0 1 - [ 0 1 ] 2 0 2 - [ 1 0 ] 3 0 3 - [ 1 1 ] 4 0 4 - [ 2 0 ] 5 0 5 - [ 2 1 ] 6 0 6 - */ - - - tid = H5Tcopy(H5T_STD_B8LE); - write_attr(loc_id,2,dims2,"bitfield2D",tid,buf22); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - - /* - buf22[3][2]= {{1,2},{3,4},{5,6}}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Attribute: and - position opaque2D of opaque2D of difference - ------------------------------------------------------------ - [ 0 0 ] 1 0 1 - [ 0 1 ] 2 0 2 - [ 1 0 ] 3 0 3 - [ 1 1 ] 4 0 4 - [ 2 0 ] 5 0 5 - [ 2 1 ] 6 0 6 - */ - tid = H5Tcreate(H5T_OPAQUE, (size_t)1); - status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */ - write_attr(loc_id,2,dims2,"opaque2D",tid,buf22); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - if (make_diffs) - { - memset(buf32,0,sizeof buf32); - } - - /* - buf32[6]= {{1,2},{3,4},{5,6},{7,8},{9,10},{11,12}}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Attribute: and - position opaque2D of opaque2D of difference - ------------------------------------------------------------ - [ 0 0 ] 1 0 1 - [ 0 1 ] 2 0 2 - [ 1 0 ] 3 0 3 - [ 1 1 ] 4 0 4 - [ 2 0 ] 5 0 5 - [ 2 1 ] 6 0 6 - */ - - - tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t)); - H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR); - H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE); - write_attr(loc_id,2,dims2,"compound2D",tid,buf32); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_REFERENCE (H5R_OBJECT object reference) - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if (dset_name) - { - for (i = 0; i < 3; i++) { - for (j = 0; j < 2; j++) { - status=H5Rcreate(&buf42[i][j],fid,dset_name,H5R_OBJECT,(hid_t)-1); - } - } - write_attr(loc_id,2,dims2,"reference2D",H5T_STD_REF_OBJ,buf42); - } - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - for (i=0; i<3; i++) - { - for (j=0; j<2; j++) - { - if (make_diffs) buf452[i][j]=GREEN; else buf452[i][j]=RED; - } - } - - /* - Attribute: and - position enum2D of enum2D of difference - ------------------------------------------------------------ - [ 0 0 ] RED GREEN - [ 0 1 ] RED GREEN - [ 1 0 ] RED GREEN - [ 1 1 ] RED GREEN - [ 2 0 ] RED GREEN - [ 2 1 ] RED GREEN - */ - - tid = H5Tcreate(H5T_ENUM, sizeof(e_t)); - H5Tenum_insert(tid, "RED", (val = 0, &val)); - H5Tenum_insert(tid, "GREEN", (val = 1, &val)); - write_attr(loc_id,2,dims2,"enum2D",tid,buf452); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - n=0; - for(i = 0; i < 3; i++) { - for(j = 0; j < 2; j++) { - buf52[i][j].p = HDmalloc((size_t)(i + 1) * sizeof(int)); - buf52[i][j].len = (size_t)(i + 1); - for(l = 0; l < i + 1; l++) - if(make_diffs) - ((int *)buf52[i][j].p)[l] = 0; - else - ((int *)buf52[i][j].p)[l] = n++; - } - } - - /* - position vlen2D of vlen2D of difference - ------------------------------------------------------------ - [ 0 1 ] 1 0 1 - [ 1 0 ] 2 0 2 - [ 1 0 ] 3 0 3 - [ 1 1 ] 4 0 4 - [ 1 1 ] 5 0 5 - [ 2 0 ] 6 0 6 - [ 2 0 ] 7 0 7 - [ 2 0 ] 8 0 8 - [ 2 1 ] 9 0 9 - [ 2 1 ] 10 0 10 - [ 2 1 ] 11 0 11 - */ - - sid = H5Screate_simple(2, dims2, NULL); - tid = H5Tvlen_create(H5T_NATIVE_INT); - aid = H5Acreate2(loc_id, "vlen2D", tid, sid, H5P_DEFAULT, H5P_DEFAULT); - status = H5Awrite(aid, tid, buf52); - assert(status >= 0); - status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf52); - assert(status >= 0); - status = H5Aclose(aid); - status = H5Tclose(tid); - status = H5Sclose(sid); - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - memset(buf62,0,sizeof buf62); - } - /* - buf62[6][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15},{16,17,18}}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - Attribute: and - position array2D of array2D of difference - ------------------------------------------------------------ - [ 0 0 ] 1 0 1 - [ 0 0 ] 2 0 2 - [ 0 0 ] 3 0 3 - [ 0 1 ] 4 0 4 - [ 0 1 ] 5 0 5 - [ 0 1 ] 6 0 6 - [ 1 0 ] 7 0 7 - [ 1 0 ] 8 0 8 - [ 1 0 ] 9 0 9 - [ 1 1 ] 10 0 10 - [ 1 1 ] 11 0 11 - [ 1 1 ] 12 0 12 - [ 2 0 ] 13 0 13 - [ 2 0 ] 14 0 14 - [ 2 0 ] 15 0 15 - [ 2 1 ] 16 0 16 - [ 2 1 ] 17 0 17 - [ 2 1 ] 18 0 18 - */ - tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray); - write_attr(loc_id, 2, dims2, "array2D", tid, buf62); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_INTEGER and H5T_FLOAT - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - memset(buf72,0,sizeof buf72); - memset(buf82,0,sizeof buf82); - } - /* - Attribute: and - position integer2D of integer2D of difference - ------------------------------------------------------------ - [ 0 0 ] 1 0 1 - [ 0 1 ] 2 0 2 - [ 1 0 ] 3 0 3 - [ 1 1 ] 4 0 4 - [ 2 0 ] 5 0 5 - [ 2 1 ] 6 0 6 - 6 differences found - Attribute: and - position float2D of float2D of difference - ------------------------------------------------------------ - [ 0 0 ] 1 0 1 - [ 0 1 ] 2 0 2 - [ 1 0 ] 3 0 3 - [ 1 1 ] 4 0 4 - [ 2 0 ] 5 0 5 - [ 2 1 ] 6 0 6 - */ - - write_attr(loc_id,2,dims2,"integer2D",H5T_NATIVE_INT,buf72); - write_attr(loc_id,2,dims2,"float2D",H5T_NATIVE_FLOAT,buf82); - - - /*------------------------------------------------------------------------- - * 3D attributes - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<4; i++) - for (j=0; j<3; j++) - for (k=0; k<2; k++) - for (l=0; l<2; l++) - buf13[i][j][k][l]='z'; - } - - /* - buf13[24][2]= {"ab","cd","ef","gh","ij","kl","mn","pq", - "rs","tu","vw","xz","AB","CD","EF","GH", - "IJ","KL","MN","PQ","RS","TU","VW","XZ"}; - - Attribute: and - position string3D of string3D of difference - ------------------------------------------------------------ - [ 0 0 0 ] a z - [ 0 0 0 ] b z - [ 0 0 1 ] c z - [ 0 0 1 ] d z - [ 0 1 0 ] e z - [ 0 1 0 ] f z - [ 0 1 1 ] g z - [ 0 1 1 ] h z - [ 0 2 0 ] i z - [ 0 2 0 ] j z - [ 0 2 1 ] k z - [ 0 2 1 ] l z - [ 1 0 0 ] m z - [ 1 0 0 ] n z - [ 1 0 1 ] p z - [ 1 0 1 ] q z - [ 1 1 0 ] r z - [ 1 1 0 ] s z - [ 1 1 1 ] t z - [ 1 1 1 ] u z - [ 1 2 0 ] v z - [ 1 2 0 ] w z - [ 1 2 1 ] x z - [ 2 0 0 ] A z - [ 2 0 0 ] B z - [ 2 0 1 ] C z - [ 2 0 1 ] D z - [ 2 1 0 ] E z - [ 2 1 0 ] F z - [ 2 1 1 ] G z - [ 2 1 1 ] H z - [ 2 2 0 ] I z - [ 2 2 0 ] J z - [ 2 2 1 ] K z - [ 2 2 1 ] L z - [ 3 0 0 ] M z - [ 3 0 0 ] N z - [ 3 0 1 ] P z - [ 3 0 1 ] Q z - [ 3 1 0 ] R z - [ 3 1 0 ] S z - [ 3 1 1 ] T z - [ 3 1 1 ] U z - [ 3 2 0 ] V z - [ 3 2 0 ] W z - [ 3 2 1 ] X z - [ 3 2 1 ] Z z - */ - - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, (size_t)STR_SIZE); - write_attr(loc_id,3,dims3,"string3D",tid,buf13); - status = H5Tclose(tid); - - for (i=0; i<4; i++) - { - for (j=0; j<3; j++) - { - for (k=0; k<2; k++) - { - buf13a[i][j][k]=buf13[i][j][k]; - } - } - } - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, H5T_VARIABLE); - write_attr(loc_id,3,dims3,"VLstring3D",tid,buf13a); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - - n=1; - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - for (k = 0; k < 2; k++) { - if(make_diffs) - buf23[i][j][k] = 0; - else - buf23[i][j][k] = (char)n++; - } - } - } - - /* - position bitfield3D of bitfield3D of difference - ------------------------------------------------------------ - [ 0 0 0 ] 1 0 1 - [ 0 0 1 ] 2 0 2 - [ 0 1 0 ] 3 0 3 - [ 0 1 1 ] 4 0 4 - [ 0 2 0 ] 5 0 5 - [ 0 2 1 ] 6 0 6 - [ 1 0 0 ] 7 0 7 - [ 1 0 1 ] 8 0 8 - [ 1 1 0 ] 9 0 9 - [ 1 1 1 ] 10 0 10 - [ 1 2 0 ] 11 0 11 - [ 1 2 1 ] 12 0 12 - [ 2 0 0 ] 13 0 13 - [ 2 0 1 ] 14 0 14 - [ 2 1 0 ] 15 0 15 - [ 2 1 1 ] 16 0 16 - [ 2 2 0 ] 17 0 17 - [ 2 2 1 ] 18 0 18 - [ 3 0 0 ] 19 0 19 - [ 3 0 1 ] 20 0 20 - [ 3 1 0 ] 21 0 21 - [ 3 1 1 ] 22 0 22 - [ 3 2 0 ] 23 0 23 - [ 3 2 1 ] 24 0 24 - */ - - tid = H5Tcopy(H5T_STD_B8LE); - write_attr(loc_id,3,dims3,"bitfield3D",tid,buf23); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - tid = H5Tcreate(H5T_OPAQUE, (size_t)1); - status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */ - write_attr(loc_id,3,dims3,"opaque3D",tid,buf23); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - - n=1; - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - for (k = 0; k < 2; k++) { - if (make_diffs) { - buf33[i][j][k].a = 0; - buf33[i][j][k].b = 0.0F; - } - else { - buf33[i][j][k].a = (char)n++; - buf33[i][j][k].b = n++; - } - } - } - } - /*position compound3D of compound3D of difference - ------------------------------------------------------------ - [ 0 0 0 ] 1 0 1 - [ 0 0 0 ] 2 0 2 - [ 0 0 1 ] 3 0 3 - [ 0 0 1 ] 4 0 4 - [ 0 1 0 ] 5 0 5 - [ 0 1 0 ] 6 0 6 - [ 0 1 1 ] 7 0 7 - [ 0 1 1 ] 8 0 8 - [ 0 2 0 ] 9 0 9 - [ 0 2 0 ] 10 0 10 - [ 0 2 1 ] 11 0 11 - [ 0 2 1 ] 12 0 12 - [ 1 0 0 ] 13 0 13 - [ 1 0 0 ] 14 0 14 - [ 1 0 1 ] 15 0 15 - [ 1 0 1 ] 16 0 16 - [ 1 1 0 ] 17 0 17 - [ 1 1 0 ] 18 0 18 - [ 1 1 1 ] 19 0 19 - [ 1 1 1 ] 20 0 20 - [ 1 2 0 ] 21 0 21 - [ 1 2 0 ] 22 0 22 - [ 1 2 1 ] 23 0 23 - [ 1 2 1 ] 24 0 24 - [ 2 0 0 ] 25 0 25 - [ 2 0 0 ] 26 0 26 - [ 2 0 1 ] 27 0 27 - [ 2 0 1 ] 28 0 28 - [ 2 1 0 ] 29 0 29 - [ 2 1 0 ] 30 0 30 - [ 2 1 1 ] 31 0 31 - [ 2 1 1 ] 32 0 32 - [ 2 2 0 ] 33 0 33 - [ 2 2 0 ] 34 0 34 - [ 2 2 1 ] 35 0 35 - [ 2 2 1 ] 36 0 36 - [ 3 0 0 ] 37 0 37 - [ 3 0 0 ] 38 0 38 - [ 3 0 1 ] 39 0 39 - [ 3 0 1 ] 40 0 40 - [ 3 1 0 ] 41 0 41 - [ 3 1 0 ] 42 0 42 - [ 3 1 1 ] 43 0 43 - [ 3 1 1 ] 44 0 44 - [ 3 2 0 ] 45 0 45 - [ 3 2 0 ] 46 0 46 - [ 3 2 1 ] 47 0 47 - [ 3 2 1 ] 48 0 48 - */ - - tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t)); - H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR); - H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE); - write_attr(loc_id,3,dims3,"compound3D",tid,buf33); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_REFERENCE (H5R_OBJECT object reference) - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if (dset_name) - { - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - for (k = 0; k < 2; k++) - status=H5Rcreate(&buf43[i][j][k],fid,dset_name,H5R_OBJECT,(hid_t)-1); - } - } - write_attr(loc_id,3,dims3,"reference3D",H5T_STD_REF_OBJ,buf43); - } - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - for (k = 0; k < 2; k++) { - if (make_diffs) buf453[i][j][k]=RED; else buf453[i][j][k]=GREEN; - } - } - } - - /* - position enum3D of enum3D of difference - ------------------------------------------------------------ - [ 0 0 0 ] GREEN RED - [ 0 0 1 ] GREEN RED - [ 0 1 0 ] GREEN RED - [ 0 1 1 ] GREEN RED - [ 0 2 0 ] GREEN RED - [ 0 2 1 ] GREEN RED - [ 1 0 0 ] GREEN RED - [ 1 0 1 ] GREEN RED - [ 1 1 0 ] GREEN RED - [ 1 1 1 ] GREEN RED - [ 1 2 0 ] GREEN RED - [ 1 2 1 ] GREEN RED - [ 2 0 0 ] GREEN RED - [ 2 0 1 ] GREEN RED - [ 2 1 0 ] GREEN RED - [ 2 1 1 ] GREEN RED - [ 2 2 0 ] GREEN RED - [ 2 2 1 ] GREEN RED - [ 3 0 0 ] GREEN RED - [ 3 0 1 ] GREEN RED - [ 3 1 0 ] GREEN RED - [ 3 1 1 ] GREEN RED - [ 3 2 0 ] GREEN RED - [ 3 2 1 ] GREEN RED - */ - - - tid = H5Tcreate(H5T_ENUM, sizeof(e_t)); - H5Tenum_insert(tid, "RED", (val = 0, &val)); - H5Tenum_insert(tid, "GREEN", (val = 1, &val)); - write_attr(loc_id,3,dims3,"enum3D",tid,buf453); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - n=0; - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - for (k = 0; k < 2; k++) { - buf53[i][j][k].p = HDmalloc((size_t)(i + 1) * sizeof(int)); - buf53[i][j][k].len = (size_t)(i + 1); - for (l = 0; l < i + 1; l++) - if(make_diffs) - ((int *)buf53[i][j][k].p)[l] = 0; - else - ((int *)buf53[i][j][k].p)[l] = n++; - } - } - } - /* - position vlen3D of vlen3D of difference - ------------------------------------------------------------ - [ 0 0 1 ] 1 0 1 - [ 0 1 0 ] 2 0 2 - [ 0 1 1 ] 3 0 3 - [ 0 2 0 ] 4 0 4 - [ 0 2 1 ] 5 0 5 - [ 1 0 0 ] 6 0 6 - [ 1 0 0 ] 7 0 7 - [ 1 0 1 ] 8 0 8 - [ 1 0 1 ] 9 0 9 - [ 1 1 0 ] 10 0 10 - etc - */ - sid = H5Screate_simple(3, dims3, NULL); - tid = H5Tvlen_create(H5T_NATIVE_INT); - aid = H5Acreate2(loc_id, "vlen3D", tid, sid, H5P_DEFAULT, H5P_DEFAULT); - status = H5Awrite(aid, tid, buf53); - assert(status >= 0); - status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf53); - assert(status >= 0); - status = H5Aclose(aid); - status = H5Tclose(tid); - status = H5Sclose(sid); - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - n=1; - for (i = 0; i < 24; i++) { - for (j = 0; j < (int)dimarray[0]; j++) { - if (make_diffs) buf63[i][j]=0; - else buf63[i][j]=n++; - } - } - /* - position array3D of array3D of difference - ------------------------------------------------------------ - [ 0 0 0 ] 1 0 1 - [ 0 0 0 ] 2 0 2 - [ 0 0 0 ] 3 0 3 - [ 0 0 1 ] 4 0 4 - [ 0 0 1 ] 5 0 5 - [ 0 0 1 ] 6 0 6 - [ 0 1 0 ] 7 0 7 - etc - */ - - tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray); - write_attr(loc_id, 3, dims3, "array3D", tid, buf63); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_INTEGER and H5T_FLOAT - *------------------------------------------------------------------------- - */ - n=1; f=1; - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - for (k = 0; k < 2; k++) { - if (make_diffs) { - buf73[i][j][k]=0; - buf83[i][j][k]=0.0F; - } - else { - buf73[i][j][k]=n++; - buf83[i][j][k]=f++; - } - } - } - } - - /* - position integer3D of integer3D of difference - ------------------------------------------------------------ - [ 0 0 0 ] 1 0 1 - [ 0 0 1 ] 2 0 2 - [ 0 1 0 ] 3 0 3 - [ 0 1 1 ] 4 0 4 - [ 0 2 0 ] 5 0 5 - [ 0 2 1 ] 6 0 6 - [ 1 0 0 ] 7 0 7 - [ 1 0 1 ] 8 0 8 - [ 1 1 0 ] 9 0 9 - [ 1 1 1 ] 10 0 10 - etc - */ - write_attr(loc_id,3,dims3,"integer3D",H5T_NATIVE_INT,buf73); - write_attr(loc_id,3,dims3,"float3D",H5T_NATIVE_FLOAT,buf83); -} - - - -/*------------------------------------------------------------------------- -* Function: write_dset_in -* -* Purpose: write datasets in LOC_ID -* -*------------------------------------------------------------------------- -*/ -static -void write_dset_in(hid_t loc_id, - const char* dset_name, /* for saving reference to dataset*/ - hid_t fid, - int make_diffs /* flag to modify data buffers */) -{ - /* Compound datatype */ - typedef struct s_t - { - char a; - double b; - } s_t; - - typedef enum - { - RED, - GREEN - } e_t; - - hid_t did; - hid_t sid; - hid_t tid; - hid_t dcpl; - herr_t status; - int val, i, j, k, l, n; - float f; - int fillvalue=2; - int scalar_data = 2; - - /* create 1D attributes with dimension [2], 2 elements */ - hsize_t dims[1]={2}; - char buf1[2][STR_SIZE]= {"ab","de"}; /* string */ - char *buf1a[2]; /* VL string */ - char buf2[2]= {1,2}; /* bitfield, opaque */ - s_t buf3[2]= {{1,2.0F},{3,4.0F}}; /* compound */ - hobj_ref_t buf4[2]; /* reference */ - e_t buf45[2]= {RED,GREEN}; /* enum */ - hvl_t buf5[2]; /* vlen */ - hsize_t dimarray[1]={3}; /* array dimension */ - int buf6[2][3]= {{1,2,3},{4,5,6}}; /* array */ - int buf7[2]= {1,2}; /* integer */ - float buf8[2]= {1.0F,2.0F}; /* float */ - - /* create 2D attributes with dimension [3][2], 6 elements */ - hsize_t dims2[2]={3,2}; - char buf12[3][2][STR_SIZE]= {{"ab","cd"},{"ef","gh"},{"ij","kl"}}; /* string */ - char *buf12a[3][2]; /* VL string */ - char buf22[3][2]= {{1,2},{3,4},{5,6}}; /* bitfield, opaque */ - s_t buf32[6]= {{1,2.0F},{3,4.0F},{5,6.0F},{7,8.0F},{9,10.0F},{11,12.0F}}; /* compound */ - hobj_ref_t buf42[3][2]; /* reference */ - hvl_t buf52[3][2]; /* vlen */ - int buf62[6][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15},{16,17,18}}; /* array */ - int buf72[3][2]= {{1,2},{3,4},{5,6}}; /* integer */ - float buf82[3][2]= {{1.0F,2.0F},{3.0F,4.0F},{5.0F,6.0F}}; /* float */ - - /* create 3D attributes with dimension [4][3][2], 24 elements */ - hsize_t dims3[3]={4,3,2}; - char buf13[4][3][2][STR_SIZE]= {{{"ab","cd"},{"ef","gh"},{"ij","kl"}}, - {{"mn","pq"},{"rs","tu"},{"vw","xz"}}, - {{"AB","CD"},{"EF","GH"},{"IJ","KL"}}, - {{"MN","PQ"},{"RS","TU"},{"VW","XZ"}}}; /* string */ - char *buf13a[4][3][2]; /* VL string */ - char buf23[4][3][2]; /* bitfield, opaque */ - s_t buf33[4][3][2]; /* compound */ - hobj_ref_t buf43[4][3][2]; /* reference */ - hvl_t buf53[4][3][2]; /* vlen */ - int buf63[24][3]; /* array */ - int buf73[4][3][2]; /* integer */ - float buf83[4][3][2]; /* float */ - - - /*------------------------------------------------------------------------- - * H5S_SCALAR - *------------------------------------------------------------------------- - */ - - - - if ( make_diffs ) - { - - scalar_data = 1; - } - - /* create a space */ - sid = H5Screate(H5S_SCALAR); - - /* create a dataset */ - did = H5Dcreate2(loc_id, "scalar", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* write */ - H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &scalar_data); - - /* close */ - H5Dclose(did); - H5Sclose(sid); - - - /*------------------------------------------------------------------------- - * 1D - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - - - if (make_diffs) - { - for (i=0; i<2; i++) - for (j=0; j<2; j++) - buf1[i][j]='z'; - } - - - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid,(size_t)STR_SIZE); - write_dset(loc_id,1,dims,"string",tid,buf1); - status = H5Tclose(tid); - - for (i=0; i<2; i++) - { - buf1a[i]=buf1[i]; - } - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, H5T_VARIABLE); - write_dset(loc_id,1,dims,"VLstring",tid,buf1a); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - buf2[i]=buf2[1]=0; - } - - tid = H5Tcopy(H5T_STD_B8LE); - write_dset(loc_id,1,dims,"bitfield",tid,buf2); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - { - buf3[i].a=0; buf3[i].b=0; - } - } - - tid = H5Tcreate(H5T_OPAQUE, (size_t)1); - status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */ - write_dset(loc_id,1,dims,"opaque",tid,buf2); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - - - if (make_diffs) - { - for (i=0; i<2; i++) - { - buf45[i]=GREEN; - } - } - - tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t)); - H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR); - H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE); - write_dset(loc_id,1,dims,"compound",tid,buf3); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_REFERENCE (H5R_OBJECT object reference) - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if (dset_name) - { - status=H5Rcreate(&buf4[0],fid,dset_name,H5R_OBJECT,(hid_t)-1); - status=H5Rcreate(&buf4[1],fid,dset_name,H5R_OBJECT,(hid_t)-1); - write_dset(loc_id,1,dims,"reference",H5T_STD_REF_OBJ,buf4); - } - - /*------------------------------------------------------------------------- - * H5T_REFERENCE (H5R_DATASET_REGION dataset region reference) - *------------------------------------------------------------------------- - */ - - gen_datareg(fid,make_diffs); - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - tid = H5Tcreate(H5T_ENUM, sizeof(e_t)); - H5Tenum_insert(tid, "RED", (val = 0, &val)); - H5Tenum_insert(tid, "GREEN", (val = 1, &val)); - write_dset(loc_id,1,dims,"enum",tid,buf45); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - - buf5[0].len = 1; - buf5[0].p = HDmalloc( 1 * sizeof(int)); - ((int *)buf5[0].p)[0]=1; - buf5[1].len = 2; - buf5[1].p = HDmalloc( 2 * sizeof(int)); - ((int *)buf5[1].p)[0]=2; - ((int *)buf5[1].p)[1]=3; - - if(make_diffs) { - ((int *)buf5[0].p)[0] = 0; - ((int *)buf5[1].p)[0] = 0; - ((int *)buf5[1].p)[1]=0; - } - - sid = H5Screate_simple(1, dims, NULL); - tid = H5Tvlen_create(H5T_NATIVE_INT); - did = H5Dcreate2(loc_id, "vlen", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf5); - HDassert(status >= 0); - status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf5); - HDassert(status >= 0); - status = H5Dclose(did); - status = H5Tclose(tid); - status = H5Sclose(sid); - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - for (j=0; j<3; j++) - { - buf6[i][j]=0; - } - } - - tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray); - write_dset(loc_id, 1, dims, "array", tid, buf6); - status = H5Tclose(tid); - - { - double *dbuf; /* information to write */ - hid_t ldid; /* dataset ID */ - hid_t lsid; /* dataspace ID */ - hid_t ltid; /* datatype ID */ - size_t size; - hsize_t sdims[] = {1}; - hsize_t tdims[] = {H5TOOLS_MALLOCSIZE / sizeof(double) + 1}; - size_t jj; - - /* allocate and initialize array data to write */ - size = ( H5TOOLS_MALLOCSIZE / sizeof(double) + 1 ) * sizeof(double); - dbuf = (double *)HDmalloc(size); - - for(jj = 0; jj < (H5TOOLS_MALLOCSIZE / sizeof(double) + 1); jj++) - dbuf[jj] = (double)jj; - - if (make_diffs) - { - dbuf[5] = 0; - dbuf[6] = 0; - } - - /* create a type larger than H5TOOLS_MALLOCSIZE */ - ltid = H5Tarray_create2(H5T_NATIVE_DOUBLE, 1, tdims); - size = H5Tget_size(ltid); - lsid = H5Screate_simple(1, sdims, NULL); - ldid = H5Dcreate2(loc_id, "arrayd", ltid, lsid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); -#if defined(WRITE_ARRAY) - H5Dwrite(ldid, ltid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dbuf); -#endif - - /* close */ - H5Dclose(ldid); - H5Tclose(ltid); - H5Sclose(lsid); - HDfree(dbuf); - } - - /*------------------------------------------------------------------------- - * H5T_INTEGER and H5T_FLOAT - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - { - buf7[i]=0; - buf8[i]=0; - } - } - - write_dset(loc_id,1,dims,"integer",H5T_NATIVE_INT,buf7); - write_dset(loc_id,1,dims,"float",H5T_NATIVE_FLOAT,buf8); - - - /*------------------------------------------------------------------------- - * 2D - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<3; i++) - for (j=0; j<2; j++) - for (k=0; k<2; k++) - buf12[i][j][k]='z'; - } - - - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid,(size_t)STR_SIZE); - write_dset(loc_id,2,dims2,"string2D",tid,buf12); - status = H5Tclose(tid); - - for (i=0; i<3; i++) - { - for (j=0; j<2; j++) - { - buf12a[i][j]=buf12[i][j]; - } - } - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, H5T_VARIABLE); - write_dset(loc_id,2,dims2,"VLstring2D",tid,buf12a); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - - - if (make_diffs) - { - memset(buf22,0,sizeof buf22); - } - - tid = H5Tcopy(H5T_STD_B8LE); - write_dset(loc_id,2,dims2,"bitfield2D",tid,buf22); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - tid = H5Tcreate(H5T_OPAQUE, (size_t)1); - status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */ - write_dset(loc_id,2,dims2,"opaque2D",tid,buf22); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - memset(buf32,0,sizeof buf32); - } - - tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t)); - H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR); - H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE); - write_dset(loc_id,2,dims2,"compound2D",tid,buf32); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_REFERENCE (H5R_OBJECT object reference) - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if (dset_name) - { - for (i = 0; i < 3; i++) { - for (j = 0; j < 2; j++) { - status=H5Rcreate(&buf42[i][j],fid,dset_name,H5R_OBJECT,(hid_t)-1); - } - } - write_dset(loc_id,2,dims2,"reference2D",H5T_STD_REF_OBJ,buf42); - } - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - - tid = H5Tcreate(H5T_ENUM, sizeof(e_t)); - H5Tenum_insert(tid, "RED", (val = 0, &val)); - H5Tenum_insert(tid, "GREEN", (val = 1, &val)); - write_dset(loc_id,2,dims2,"enum2D",tid,0); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - n = 0; - for(i = 0; i < 3; i++) { - for(j = 0; j < 2; j++) { - buf52[i][j].p = HDmalloc((size_t)(i + 1) * sizeof(int)); - buf52[i][j].len = (size_t)(i + 1); - for(l = 0; l < i + 1; l++) { - if(make_diffs) - ((int *)buf52[i][j].p)[l] = 0; - else - ((int *)buf52[i][j].p)[l] = n++; - } - } - } - - sid = H5Screate_simple(2, dims2, NULL); - tid = H5Tvlen_create(H5T_NATIVE_INT); - did = H5Dcreate2(loc_id, "vlen2D", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf52); - assert(status >= 0); - status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf52); - assert(status >= 0); - status = H5Dclose(did); - status = H5Tclose(tid); - status = H5Sclose(sid); - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - memset(buf62,0,sizeof buf62); - } - - - tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray); - write_dset(loc_id, 2, dims2, "array2D", tid, buf62); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_INTEGER, write a fill value - *------------------------------------------------------------------------- - */ - - - if (make_diffs) - { - memset(buf72, 0, sizeof buf72); - memset(buf82, 0, sizeof buf82); - } - - - dcpl = H5Pcreate(H5P_DATASET_CREATE); - status = H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillvalue); - sid = H5Screate_simple(2, dims2, NULL); - did = H5Dcreate2(loc_id, "integer2D", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT); - status = H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf72); - status = H5Pclose(dcpl); - status = H5Dclose(did); - status = H5Sclose(sid); - - /*------------------------------------------------------------------------- - * H5T_FLOAT - *------------------------------------------------------------------------- - */ - - write_dset(loc_id,2,dims2,"float2D",H5T_NATIVE_FLOAT,buf82); - - - /*------------------------------------------------------------------------- - * 3D - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<4; i++) - for (j=0; j<3; j++) - for (k=0; k<2; k++) - for (l=0; l<2; l++) - buf13[i][j][k][l]='z'; - } - - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid,(size_t)STR_SIZE); - write_dset(loc_id,3,dims3,"string3D",tid,buf13); - status = H5Tclose(tid); - - for (i=0; i<4; i++) - { - for (j=0; j<3; j++) - { - for (k=0; k<2; k++) - { - buf13a[i][j][k]=buf13[i][j][k]; - } - } - } - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, H5T_VARIABLE); - write_dset(loc_id,3,dims3,"VLstring3D",tid,buf13a); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - - - n=1; - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - for (k = 0; k < 2; k++) { - if(make_diffs) - buf23[i][j][k] = 0; - else - buf23[i][j][k] = (char)n++; - } - } - } - - - tid = H5Tcopy(H5T_STD_B8LE); - write_dset(loc_id,3,dims3,"bitfield3D",tid,buf23); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - tid = H5Tcreate(H5T_OPAQUE, (size_t)1); - status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */ - write_dset(loc_id,3,dims3,"opaque3D",tid,buf23); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - - n=1; - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - for (k = 0; k < 2; k++) { - if (make_diffs) { - buf33[i][j][k].a = 0; - buf33[i][j][k].b = 0.0F; - } - else { - buf33[i][j][k].a = (char)n++; - buf33[i][j][k].b = n++; - } - } - } - } - - - tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t)); - H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR); - H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE); - write_dset(loc_id,3,dims3,"compound3D",tid,buf33); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_REFERENCE (H5R_OBJECT object reference) - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if (dset_name) - { - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - for (k = 0; k < 2; k++) - status=H5Rcreate(&buf43[i][j][k],fid,dset_name,H5R_OBJECT,(hid_t)-1); - } - } - write_dset(loc_id,3,dims3,"reference3D",H5T_STD_REF_OBJ,buf43); - } - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - - tid = H5Tcreate(H5T_ENUM, sizeof(e_t)); - H5Tenum_insert(tid, "RED", (val = 0, &val)); - H5Tenum_insert(tid, "GREEN", (val = 1, &val)); - write_dset(loc_id,3,dims3,"enum3D",tid,0); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - n=0; - for(i = 0; i < 4; i++) { - for(j = 0; j < 3; j++) { - for(k = 0; k < 2; k++) { - buf53[i][j][k].p = HDmalloc((size_t)(i + 1) * sizeof(int)); - buf53[i][j][k].len = (size_t)(i + 1); - for(l = 0; l < i + 1; l++) { - if(make_diffs) - ((int *)buf53[i][j][k].p)[l] = 0; - else - ((int *)buf53[i][j][k].p)[l] = n++; - } - } - } - } - - sid = H5Screate_simple(3, dims3, NULL); - tid = H5Tvlen_create(H5T_NATIVE_INT); - did = H5Dcreate2(loc_id, "vlen3D", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf53); - assert(status >= 0); - status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf53); - assert(status >= 0); - status = H5Dclose(did); - status = H5Tclose(tid); - status = H5Sclose(sid); - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - - - n=1; - for (i = 0; i < 24; i++) { - for (j = 0; j < (int)dimarray[0]; j++) { - if (make_diffs) buf63[i][j]=0; - else buf63[i][j]=n++; - } - } - - tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray); - write_dset(loc_id, 3, dims3, "array3D", tid, buf63); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_INTEGER and H5T_FLOAT - *------------------------------------------------------------------------- - */ - n=1; f=1; - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - for (k = 0; k < 2; k++) { - if (make_diffs) { - buf73[i][j][k]=0; - buf83[i][j][k]=0.0F; - } - else { - buf73[i][j][k]=n++; - buf83[i][j][k]=f++; - } - } - } - } - write_dset(loc_id,3,dims3,"integer3D",H5T_NATIVE_INT,buf73); - write_dset(loc_id,3,dims3,"float3D",H5T_NATIVE_FLOAT,buf83); -} - -/*------------------------------------------------------------------------- -* Function: gen_datareg -* -* Purpose: generate a dataset region and its reference -* -* Date: April 19, 2006 -* -*------------------------------------------------------------------------- -*/ - -static -void gen_datareg(hid_t fid, - int make_diffs /* flag to modify data buffers */) -{ - /* data dataset */ - hid_t did1; /* dataset ID */ - hid_t sid1; /* dataspace ID */ - hsize_t dims1[2] = {10,10};/* dimensions */ - int *buf; /* dataset buffer */ - /* reference dataset */ - hid_t did2; /* dataset ID */ - hid_t sid2; /* dataspace ID */ - hsize_t dims2[] = {2}; /* 2 references */ - hdset_reg_ref_t *rbuf; /* buffer for write the references */ - hsize_t start[10]; /* starting location of hyperslab */ - hsize_t count[10]; /* element count of hyperslab */ - hsize_t coord[5][2]; /* coordinates for point selection */ - herr_t status; - int i; - - /* allocate the buffer for write the references */ - rbuf = (hdset_reg_ref_t *)HDcalloc((size_t)2, sizeof(hdset_reg_ref_t)); - - /* allocate the buffer for write the data dataset */ - buf = (int *)HDmalloc(10 * 10 * sizeof(int)); - - for(i = 0; i < 10 * 10; i++) - buf[i] = i; - - /* create the data dataset */ - sid1 = H5Screate_simple(2, dims1, NULL); - did1 = H5Dcreate2(fid, "dsetref", H5T_NATIVE_INT, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - HDassert(status >= 0); - - /* create the reference dataset */ - sid2 = H5Screate_simple(1, dims2, NULL); - did2 = H5Dcreate2(fid, "refreg", H5T_STD_REF_DSETREG, sid2, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* create the references */ - /* select hyperslab for first reference */ - - start[0] = 2; start[1] = 2; - count[0] = 6; count[1] = 6; - if(make_diffs) { - start[0] = 0; start[1] = 0; - count[0] = 3; count[1] = 3; - } - - status = H5Sselect_hyperslab(sid1, H5S_SELECT_SET, start, NULL, count, NULL); - HDassert(status >= 0); - H5Sget_select_npoints(sid1); - - /* store first dataset region */ - status = H5Rcreate(&rbuf[0], fid, "dsetref", H5R_DATASET_REGION, sid1); - HDassert(status >= 0); - - /* select sequence of five points for second reference */ - coord[0][0]=6; coord[0][1]=9; - coord[1][0]=2; coord[1][1]=2; - coord[2][0]=8; coord[2][1]=4; - coord[3][0]=1; coord[3][1]=6; - coord[4][0]=2; coord[4][1]=8; - if (make_diffs) - { - coord[1][0]=3; coord[1][1]=3; - coord[3][0]=2; coord[3][1]=5; - coord[4][0]=1; coord[4][1]=7; - } - H5Sselect_elements(sid1,H5S_SELECT_SET,(size_t)5,(const hsize_t *)coord); - H5Sget_select_npoints(sid1); - - /* store second dataset region */ - H5Rcreate(&rbuf[1],fid,"dsetref",H5R_DATASET_REGION,sid1); - - /* write */ - status = H5Dwrite(did2,H5T_STD_REF_DSETREG,H5S_ALL,H5S_ALL,H5P_DEFAULT,rbuf); - HDassert(status >= 0); - - /* close, free memory buffers */ - status = H5Dclose(did1); - HDassert(status >= 0); - status = H5Sclose(sid1); - HDassert(status >= 0); - status = H5Dclose(did2); - HDassert(status >= 0); - status = H5Sclose(sid2); - HDassert(status >= 0); - - HDfree(rbuf); - HDfree(buf); -} - - -/*------------------------------------------------------------------------- -* Function: test_hyperslab -* -* Purpose: test diff by hyperslabs. create a dataset with 1GB dimensions -* by iterating trough 1KB hyperslabs -* -*------------------------------------------------------------------------- -*/ -static -int test_hyperslab(const char *fname, - int make_diffs /* flag to modify data buffers */) -{ - hid_t did=-1; - hid_t fid=-1; - hid_t f_sid=-1; - hid_t m_sid=-1; - hid_t tid=-1; - hid_t dcpl=-1; - hsize_t dims[1]={GBLL}; /* dataset dimensions */ - hsize_t hs_size[1]={GBLL/(1024*1024)}; /* hyperslab dimensions */ - hsize_t chunk_dims[1]={GBLL/1024}; /* chunk dimensions */ - hsize_t hs_start[1]; - size_t size; - size_t nelmts=(size_t)GBLL/(1024*1024); /* elements in each hyperslab */ - char fillvalue=-1; - char *buf=NULL; - int i, j, s; - char c; - - /* create */ - fid = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) - goto out; - if(H5Pset_fill_value(dcpl, H5T_NATIVE_CHAR, &fillvalue) < 0) - goto out; - if(H5Pset_chunk(dcpl, 1, chunk_dims) < 0) - goto out; - if((f_sid = H5Screate_simple(1, dims, NULL)) < 0) - goto out; - if((did = H5Dcreate2(fid, "big", H5T_NATIVE_CHAR, f_sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto out; - if((m_sid = H5Screate_simple(1, hs_size, hs_size)) < 0) - goto out; - if((tid = H5Dget_type(did)) < 0) - goto out; - if((size = H5Tget_size(tid)) <= 0) - goto out; - - /* create a evenly divided buffer from 0 to 127 */ - buf = (char *)HDmalloc((size_t)(nelmts * size)); - s = 1024 * 1024 / 127; - for(i = 0, j = 0, c = 0; i < 1024 * 1024; j++, i++) { - if(j == s) { - c++; - j = 0; - } - - /* set the hyperslab values */ - HDmemset(buf, c, nelmts); - - /* make a different hyperslab at this position */ - if(make_diffs && i == 512 * 512) - HDmemset(buf, 0, nelmts); - - hs_start[0] = (unsigned long long)i * GBLL / (1024 * 1024); - if (H5Sselect_hyperslab (f_sid,H5S_SELECT_SET,hs_start,NULL,hs_size, NULL) < 0) - goto out; - - /* write only one hyperslab */ - if ( i==512*512) - { - if (H5Dwrite (did,H5T_NATIVE_CHAR,m_sid,f_sid,H5P_DEFAULT,buf) < 0) - goto out; - } - - } - HDfree(buf); - buf=NULL; - - /* close */ - if(H5Sclose(f_sid) < 0) - goto out; - if(H5Sclose(m_sid) < 0) - goto out; - if(H5Pclose(dcpl) < 0) - goto out; - if(H5Dclose(did) < 0) - goto out; - H5Fclose(fid); - - return 0; - -out: - H5E_BEGIN_TRY { - H5Pclose(dcpl); - H5Sclose(f_sid); - H5Sclose(m_sid); - H5Dclose(did); - H5Fclose(fid); - } H5E_END_TRY; - return -1; - -} - - -/*------------------------------------------------------------------------- -* Function: write_attr -* -* Purpose: utility function to write an attribute in LOC_ID -* -*------------------------------------------------------------------------- -*/ -static -int write_attr(hid_t loc_id, - int rank, - hsize_t *dims, - const char *name, - hid_t tid, - void *buf) -{ - hid_t aid=-1; - hid_t sid=-1; - - /* create a space */ - if((sid = H5Screate_simple(rank, dims, NULL)) < 0) - goto out; - - /* create the attribute */ - if((aid = H5Acreate2(loc_id, name, tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - - /* write */ - if(buf) - { - if(H5Awrite(aid, tid, buf) < 0) - goto out; - } - - /* close */ - H5Aclose(aid); - H5Sclose(sid); - - return SUCCEED; - -out: - - H5Aclose(aid); - H5Sclose(sid); - return FAIL; -} - -/*------------------------------------------------------------------------- -* Function: write_dset -* -* Purpose: utility function to create and write a dataset in LOC_ID -* -*------------------------------------------------------------------------- -*/ -static -int write_dset( hid_t loc_id, - int rank, - hsize_t *dims, - const char *name, - hid_t tid, - void *buf ) -{ - hid_t did=-1; - hid_t sid=-1; - - /* create a space */ - if((sid = H5Screate_simple(rank, dims, NULL)) < 0) - goto out; - - /* create the dataset */ - if((did = H5Dcreate2(loc_id, name, tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - - /* write */ - if(buf) - { - if(H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto out; - } - - /* close */ - H5Dclose(did); - H5Sclose(sid); - - return SUCCEED; - -out: - - H5Dclose(did); - H5Sclose(sid); - return FAIL; -} - diff --git a/tools/h5diff/ph5diff_main.c b/tools/h5diff/ph5diff_main.c deleted file mode 100644 index a26b6e9..0000000 --- a/tools/h5diff/ph5diff_main.c +++ /dev/null @@ -1,329 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include -#include -#include -#include "H5private.h" -#include "h5diff.h" -#include "ph5diff.h" -#include "h5diff_common.h" -#include "h5tools.h" -#include "h5tools_utils.h" - -/* Name of tool */ -#define PROGRAMNAME "h5diff" - -static void ph5diff_worker(int ); - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: ph5diff main program - * - * Return: An exit status of 0 means no differences were found, 1 means some - * differences were found. - * - * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu - * - * Date: May 9, 2003 - * - * Comments: - * - * This function drives the diff process and will do a serial or parallel diff depending - * on the value of the global variable g_Parallel (default is 0), set to 1 when the program - * is run as "ph5diff" - *------------------------------------------------------------------------- - */ - -int main(int argc, const char *argv[]) -{ - int nID = 0; - const char *fname1 = NULL; - const char *fname2 = NULL; - const char *objname1 = NULL; - const char *objname2 = NULL; - diff_opt_t options; - - h5tools_setprogname(PROGRAMNAME); - h5tools_setstatus(EXIT_SUCCESS); - - /* Initialize h5tools lib */ - h5tools_init(); - - outBuffOffset = 0; - g_Parallel = 1; - - MPI_Init(&argc, (char***) &argv); - - MPI_Comm_rank(MPI_COMM_WORLD, &nID); - MPI_Comm_size(MPI_COMM_WORLD, &g_nTasks); - - if(g_nTasks == 1) - { - printf("Only 1 task available...doing serial diff\n"); - - g_Parallel = 0; - - parse_command_line(argc, argv, &fname1, &fname2, &objname1, &objname2, &options); - - h5diff(fname1, fname2, objname1, objname2, &options); - - print_info(&options); - } - /* Parallel h5diff */ - else { - - /* Have the manager process the command-line */ - if(nID == 0) - { - parse_command_line(argc, argv, &fname1, &fname2, &objname1, &objname2, &options); - - h5diff(fname1, fname2, objname1, objname2, &options); - - MPI_Barrier(MPI_COMM_WORLD); - - print_info(&options); - print_manager_output(); - } - /* All other tasks become workers and wait for assignments. */ - else { - ph5diff_worker(nID); - - MPI_Barrier(MPI_COMM_WORLD); - } /* end else */ - - } /* end else */ - - MPI_Finalize(); - - return 0; -} - -/*------------------------------------------------------------------------- - * Function: ph5diff_worker - * - * Purpose: worker process of ph5diff - * - * Return: none - * - * Programmer: Leon Arber - * Date: January 2005 - * - * Comments: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -ph5diff_worker(int nID) -{ - hid_t file1_id = -1, file2_id = -1; - - while(1) - { - MPI_Status Status; - - MPI_Probe(0, MPI_ANY_TAG, MPI_COMM_WORLD, &Status); - - /* Check for filenames */ - if(Status.MPI_TAG == MPI_TAG_PARALLEL) - { - char filenames[2][MAX_FILENAME]; - - /* Retrieve filenames */ - MPI_Recv(filenames, MAX_FILENAME*2, MPI_CHAR, 0, MPI_ANY_TAG, MPI_COMM_WORLD, &Status); - - /* disable error reporting */ - H5E_BEGIN_TRY - { - /* Open the files */ - if ((file1_id = H5Fopen (filenames[0], H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) - { - printf ("h5diff Task [%d]: <%s>: unable to open file\n", nID, filenames[0]); - MPI_Abort(MPI_COMM_WORLD, 0); - } - if ((file2_id = H5Fopen (filenames[1], H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) - { - printf ("h5diff Task [%d]: <%s>: unable to open file\n", nID, filenames[1]); - MPI_Abort(MPI_COMM_WORLD, 0); - } - /* enable error reporting */ - } - H5E_END_TRY; - } - /* Check for work */ - else if(Status.MPI_TAG == MPI_TAG_ARGS) - { - struct diff_mpi_args args; - struct diffs_found diffs; - int i; - - /* Make certain we've received the filenames and opened the files already */ - if(file1_id < 0 || file2_id < 0) - { - printf("ph5diff_worker: ERROR: work received before/without filenames\n"); - break; - } - - /* Recv parameters for diff from manager task */ - MPI_Recv(&args, sizeof(args), MPI_BYTE, 0, MPI_TAG_ARGS, MPI_COMM_WORLD, &Status); - - /* Do the diff */ - diffs.nfound = diff(file1_id, args.name1, file2_id, args.name2, &(args.options), &(args.argdata)); - diffs.not_cmp = args.options.not_cmp; - - /* If print buffer has something in it, request print token.*/ - if(outBuffOffset>0) - { - MPI_Send(NULL, 0, MPI_BYTE, 0, MPI_TAG_TOK_REQUEST, MPI_COMM_WORLD); - - /* Wait for print token. */ - MPI_Recv(NULL, 0, MPI_BYTE, 0, MPI_TAG_PRINT_TOK, MPI_COMM_WORLD, &Status); - - /* When get token, send all of our output to the manager task and then return the token */ - for(i=0; i= 0) - { - *(out_data + i++) = (char)tmp; - if(i==PRINT_DATA_MAX_SIZE) - { - MPI_Send(out_data, PRINT_DATA_MAX_SIZE, MPI_BYTE, 0, MPI_TAG_PRINT_DATA, MPI_COMM_WORLD); - i=0; - memset(out_data, 0, PRINT_DATA_MAX_SIZE); - } - } - - if(i>0) - MPI_Send(out_data, PRINT_DATA_MAX_SIZE, MPI_BYTE, 0, MPI_TAG_PRINT_DATA, MPI_COMM_WORLD); - - fclose(overflow_file); - overflow_file = NULL; - } - - fflush(stdout); - memset(outBuff, 0, OUTBUFF_SIZE); - outBuffOffset = 0; - - MPI_Send(&diffs, sizeof(diffs), MPI_BYTE, 0, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD); - } - else - MPI_Send(&diffs, sizeof(diffs), MPI_BYTE, 0, MPI_TAG_DONE, MPI_COMM_WORLD); - } - /* Check for leaving */ - else if(Status.MPI_TAG == MPI_TAG_END) - { - MPI_Recv(NULL, 0, MPI_BYTE, 0, MPI_TAG_END, MPI_COMM_WORLD, &Status); - break; - } - else - { - printf("ph5diff_worker: ERROR: invalid tag (%d) received\n", Status.MPI_TAG); - break; - } - - } - - return; -} - -/*------------------------------------------------------------------------- - * Function: print_manager_output - * - * Purpose: special function that prints any output accumulated by the - * manager task. - * - * Return: none - * - * Programmer: Leon Arber - * - * Date: Feb 7, 2005 - * - *------------------------------------------------------------------------- - */ -void print_manager_output(void) -{ - /* If there was something we buffered, let's print it now */ - if( (outBuffOffset>0) && g_Parallel) - { - printf("%s", outBuff); - - if(overflow_file) - { - int tmp; - rewind(overflow_file); - while((tmp = getc(overflow_file)) >= 0) - putchar(tmp); - fclose(overflow_file); - overflow_file = NULL; - } - - HDfflush(stdout); - HDmemset(outBuff, 0, OUTBUFF_SIZE); - outBuffOffset = 0; - } - else if( (outBuffOffset>0) && !g_Parallel) - { - HDfprintf(stderr, "h5diff error: outBuffOffset>0, but we're not in parallel!\n"); - } -} - -/*------------------------------------------------------------------------- - * Function: h5diff_exit - * - * Purpose: dismiss phdiff worker processes and exit - * - * Return: none - * - * Programmer: Albert Cheng - * Date: Feb 6, 2005 - * - * Comments: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -void h5diff_exit(int status) -{ - /* if in parallel mode, dismiss workers, close down MPI, then exit */ - if(g_Parallel) { - if(g_nTasks > 1) { - phdiff_dismiss_workers(); - MPI_Barrier(MPI_COMM_WORLD); - } - MPI_Finalize(); - status = EXIT_SUCCESS; /* Reset exit status, since some mpiexec commands generate output on failure status */ - } - - /* Always exit(0), since MPI implementations do weird stuff when they - * receive a non-zero exit value. - QAK - */ - exit(0); -} - diff --git a/tools/h5diff/testfiles/compounds_array_vlen1.h5 b/tools/h5diff/testfiles/compounds_array_vlen1.h5 deleted file mode 100644 index 398026c..0000000 Binary files a/tools/h5diff/testfiles/compounds_array_vlen1.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/compounds_array_vlen2.h5 b/tools/h5diff/testfiles/compounds_array_vlen2.h5 deleted file mode 100644 index f6f0868..0000000 Binary files a/tools/h5diff/testfiles/compounds_array_vlen2.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_10.txt b/tools/h5diff/testfiles/h5diff_10.txt deleted file mode 100644 index a699f00..0000000 --- a/tools/h5diff/testfiles/h5diff_10.txt +++ /dev/null @@ -1,140 +0,0 @@ -usage: h5diff [OPTIONS] file1 file2 [obj1[ obj2]] - file1 File name of the first HDF5 file - file2 File name of the second HDF5 file - [obj1] Name of an HDF5 object, in absolute path - [obj2] Name of an HDF5 object, in absolute path - - OPTIONS - -h, --help - Print a usage message and exit. - -V, --version - Print version number and exit. - -r, --report - Report mode. Print differences. - -v --verbose - Verbose mode. Print differences information and list of objects. - -vN --verbose=N - Verbose mode with level. Print differences and list of objects. - Level of detail depends on value of N: - 0 : Identical to '-v' or '--verbose'. - 1 : All level 0 information plus one-line attribute - status summary. - 2 : All level 1 information plus extended attribute - status report. - -q, --quiet - Quiet mode. Do not produce output. - --follow-symlinks - Follow symbolic links (soft links and external links and compare the) - links' target objects. - If symbolic link(s) with the same name exist in the files being - compared, then determine whether the target of each link is an existing - object (dataset, group, or named datatype) or the link is a dangling - link (a soft or external link pointing to a target object that does - not yet exist). - - If both symbolic links are dangling links, they are treated as being - the same; by default, h5diff returns an exit code of 0. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If only one of the two links is a dangling link,they are treated as - being different and h5diff returns an exit code of 1. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If both symbolic links point to existing objects, h5diff compares the - two objects. - If any symbolic link specified in the call to h5diff does not exist, - h5diff treats it as an error and returns an exit code of 2. - --no-dangling-links - Must be used with --follow-symlinks option; otherwise, h5diff shows - error message and returns an exit code of 2. - Check for any symbolic links (soft links or external links) that do not - resolve to an existing object (dataset, group, or named datatype). - If any dangling link is found, this situation is treated as an error - and h5diff returns an exit code of 2. - -c, --compare - List objects that are not comparable - -N, --nan - Avoid NaNs detection - -n C, --count=C - Print differences up to C. C must be a positive integer. - -d D, --delta=D - Print difference if (|a-b| > D). D must be a positive number. - Can not use with '-p' or '--use-system-epsilon'. - -p R, --relative=R - Print difference if (|(a-b)/b| > R). R must be a positive number. - Can not use with '-d' or '--use-system-epsilon'. - --use-system-epsilon - Print difference if (|a-b| > EPSILON), EPSILON is system defined value. - If the system epsilon is not defined,one of the following predefined - values will be used: - FLT_EPSILON = 1.19209E-07 for floating-point type - DBL_EPSILON = 2.22045E-16 for double precision type - Can not use with '-p' or '-d'. - --exclude-path "path" - Exclude the specified path to an object when comparing files or groups. - If a group is excluded, all member objects will also be excluded. - The specified path is excluded wherever it occurs. - This flexibility enables the same option to exclude either objects that - exist only in one file or common objects that are known to differ. - - When comparing files, "path" is the absolute path to the excluded; - object; when comparing groups, "path" is similar to the relative - path from the group to the excluded object. This "path" can be - taken from the first section of the output of the --verbose option. - For example, if you are comparing the group /groupA in two files and - you want to exclude /groupA/groupB/groupC in both files, the exclude - option would read as follows: - --exclude-path "/groupB/groupC" - - If there are multiple paths to an object, only the specified path(s) - will be excluded; the comparison will include any path not explicitly - excluded. - This option can be used repeatedly to exclude multiple paths. - - Modes of output: - Default mode: print the number of differences found and where they occured - -r Report mode: print the above plus the differences - -v Verbose mode: print the above plus a list of objects and warnings - -q Quiet mode: do not print output - - File comparison: - If no objects [obj1[ obj2]] are specified, the h5diff comparison proceeds as - a comparison of the two files' root groups. That is, h5diff first compares - the names of root group members, generates a report of root group objects - that appear in only one file or in both files, and recursively compares - common objects. - - Object comparison: - 1) Groups - First compares the names of member objects (relative path, from the - specified group) and generates a report of objects that appear in only - one group or in both groups. Common objects are then compared recursively. - 2) Datasets - Array rank and dimensions, datatypes, and data values are compared. - 3) Datatypes - The comparison is based on the return value of H5Tequal. - 4) Symbolic links - The paths to the target objects are compared. - (The option --follow-symlinks overrides the default behavior when - symbolic links are compared.). - - Exit code: - 0 if no differences, 1 if differences found, 2 if error - - Examples of use: - 1) h5diff file1 file2 /g1/dset1 /g1/dset2 - Compares object '/g1/dset1' in file1 with '/g1/dset2' in file2 - - 2) h5diff file1 file2 /g1/dset1 - Compares object '/g1/dset1' in both files - - 3) h5diff file1 file2 - Compares all objects in both files - - Notes: - file1 and file2 can be the same file. - Use h5diff file1 file1 /g1/dset1 /g1/dset2 to compare - '/g1/dset1' and '/g1/dset2' in the same file - -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_100.txt b/tools/h5diff/testfiles/h5diff_100.txt deleted file mode 100644 index 363daa3..0000000 --- a/tools/h5diff/testfiles/h5diff_100.txt +++ /dev/null @@ -1,1038 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /big - -group : and -0 differences found -dataset: and -size: [1073741824] [1073741824] -position big big difference ------------------------------------------------------------- -[ 268435456 ] 31 0 31 -[ 268435457 ] 31 0 31 -[ 268435458 ] 31 0 31 -[ 268435459 ] 31 0 31 -[ 268435460 ] 31 0 31 -[ 268435461 ] 31 0 31 -[ 268435462 ] 31 0 31 -[ 268435463 ] 31 0 31 -[ 268435464 ] 31 0 31 -[ 268435465 ] 31 0 31 -[ 268435466 ] 31 0 31 -[ 268435467 ] 31 0 31 -[ 268435468 ] 31 0 31 -[ 268435469 ] 31 0 31 -[ 268435470 ] 31 0 31 -[ 268435471 ] 31 0 31 -[ 268435472 ] 31 0 31 -[ 268435473 ] 31 0 31 -[ 268435474 ] 31 0 31 -[ 268435475 ] 31 0 31 -[ 268435476 ] 31 0 31 -[ 268435477 ] 31 0 31 -[ 268435478 ] 31 0 31 -[ 268435479 ] 31 0 31 -[ 268435480 ] 31 0 31 -[ 268435481 ] 31 0 31 -[ 268435482 ] 31 0 31 -[ 268435483 ] 31 0 31 -[ 268435484 ] 31 0 31 -[ 268435485 ] 31 0 31 -[ 268435486 ] 31 0 31 -[ 268435487 ] 31 0 31 -[ 268435488 ] 31 0 31 -[ 268435489 ] 31 0 31 -[ 268435490 ] 31 0 31 -[ 268435491 ] 31 0 31 -[ 268435492 ] 31 0 31 -[ 268435493 ] 31 0 31 -[ 268435494 ] 31 0 31 -[ 268435495 ] 31 0 31 -[ 268435496 ] 31 0 31 -[ 268435497 ] 31 0 31 -[ 268435498 ] 31 0 31 -[ 268435499 ] 31 0 31 -[ 268435500 ] 31 0 31 -[ 268435501 ] 31 0 31 -[ 268435502 ] 31 0 31 -[ 268435503 ] 31 0 31 -[ 268435504 ] 31 0 31 -[ 268435505 ] 31 0 31 -[ 268435506 ] 31 0 31 -[ 268435507 ] 31 0 31 -[ 268435508 ] 31 0 31 -[ 268435509 ] 31 0 31 -[ 268435510 ] 31 0 31 -[ 268435511 ] 31 0 31 -[ 268435512 ] 31 0 31 -[ 268435513 ] 31 0 31 -[ 268435514 ] 31 0 31 -[ 268435515 ] 31 0 31 -[ 268435516 ] 31 0 31 -[ 268435517 ] 31 0 31 -[ 268435518 ] 31 0 31 -[ 268435519 ] 31 0 31 -[ 268435520 ] 31 0 31 -[ 268435521 ] 31 0 31 -[ 268435522 ] 31 0 31 -[ 268435523 ] 31 0 31 -[ 268435524 ] 31 0 31 -[ 268435525 ] 31 0 31 -[ 268435526 ] 31 0 31 -[ 268435527 ] 31 0 31 -[ 268435528 ] 31 0 31 -[ 268435529 ] 31 0 31 -[ 268435530 ] 31 0 31 -[ 268435531 ] 31 0 31 -[ 268435532 ] 31 0 31 -[ 268435533 ] 31 0 31 -[ 268435534 ] 31 0 31 -[ 268435535 ] 31 0 31 -[ 268435536 ] 31 0 31 -[ 268435537 ] 31 0 31 -[ 268435538 ] 31 0 31 -[ 268435539 ] 31 0 31 -[ 268435540 ] 31 0 31 -[ 268435541 ] 31 0 31 -[ 268435542 ] 31 0 31 -[ 268435543 ] 31 0 31 -[ 268435544 ] 31 0 31 -[ 268435545 ] 31 0 31 -[ 268435546 ] 31 0 31 -[ 268435547 ] 31 0 31 -[ 268435548 ] 31 0 31 -[ 268435549 ] 31 0 31 -[ 268435550 ] 31 0 31 -[ 268435551 ] 31 0 31 -[ 268435552 ] 31 0 31 -[ 268435553 ] 31 0 31 -[ 268435554 ] 31 0 31 -[ 268435555 ] 31 0 31 -[ 268435556 ] 31 0 31 -[ 268435557 ] 31 0 31 -[ 268435558 ] 31 0 31 -[ 268435559 ] 31 0 31 -[ 268435560 ] 31 0 31 -[ 268435561 ] 31 0 31 -[ 268435562 ] 31 0 31 -[ 268435563 ] 31 0 31 -[ 268435564 ] 31 0 31 -[ 268435565 ] 31 0 31 -[ 268435566 ] 31 0 31 -[ 268435567 ] 31 0 31 -[ 268435568 ] 31 0 31 -[ 268435569 ] 31 0 31 -[ 268435570 ] 31 0 31 -[ 268435571 ] 31 0 31 -[ 268435572 ] 31 0 31 -[ 268435573 ] 31 0 31 -[ 268435574 ] 31 0 31 -[ 268435575 ] 31 0 31 -[ 268435576 ] 31 0 31 -[ 268435577 ] 31 0 31 -[ 268435578 ] 31 0 31 -[ 268435579 ] 31 0 31 -[ 268435580 ] 31 0 31 -[ 268435581 ] 31 0 31 -[ 268435582 ] 31 0 31 -[ 268435583 ] 31 0 31 -[ 268435584 ] 31 0 31 -[ 268435585 ] 31 0 31 -[ 268435586 ] 31 0 31 -[ 268435587 ] 31 0 31 -[ 268435588 ] 31 0 31 -[ 268435589 ] 31 0 31 -[ 268435590 ] 31 0 31 -[ 268435591 ] 31 0 31 -[ 268435592 ] 31 0 31 -[ 268435593 ] 31 0 31 -[ 268435594 ] 31 0 31 -[ 268435595 ] 31 0 31 -[ 268435596 ] 31 0 31 -[ 268435597 ] 31 0 31 -[ 268435598 ] 31 0 31 -[ 268435599 ] 31 0 31 -[ 268435600 ] 31 0 31 -[ 268435601 ] 31 0 31 -[ 268435602 ] 31 0 31 -[ 268435603 ] 31 0 31 -[ 268435604 ] 31 0 31 -[ 268435605 ] 31 0 31 -[ 268435606 ] 31 0 31 -[ 268435607 ] 31 0 31 -[ 268435608 ] 31 0 31 -[ 268435609 ] 31 0 31 -[ 268435610 ] 31 0 31 -[ 268435611 ] 31 0 31 -[ 268435612 ] 31 0 31 -[ 268435613 ] 31 0 31 -[ 268435614 ] 31 0 31 -[ 268435615 ] 31 0 31 -[ 268435616 ] 31 0 31 -[ 268435617 ] 31 0 31 -[ 268435618 ] 31 0 31 -[ 268435619 ] 31 0 31 -[ 268435620 ] 31 0 31 -[ 268435621 ] 31 0 31 -[ 268435622 ] 31 0 31 -[ 268435623 ] 31 0 31 -[ 268435624 ] 31 0 31 -[ 268435625 ] 31 0 31 -[ 268435626 ] 31 0 31 -[ 268435627 ] 31 0 31 -[ 268435628 ] 31 0 31 -[ 268435629 ] 31 0 31 -[ 268435630 ] 31 0 31 -[ 268435631 ] 31 0 31 -[ 268435632 ] 31 0 31 -[ 268435633 ] 31 0 31 -[ 268435634 ] 31 0 31 -[ 268435635 ] 31 0 31 -[ 268435636 ] 31 0 31 -[ 268435637 ] 31 0 31 -[ 268435638 ] 31 0 31 -[ 268435639 ] 31 0 31 -[ 268435640 ] 31 0 31 -[ 268435641 ] 31 0 31 -[ 268435642 ] 31 0 31 -[ 268435643 ] 31 0 31 -[ 268435644 ] 31 0 31 -[ 268435645 ] 31 0 31 -[ 268435646 ] 31 0 31 -[ 268435647 ] 31 0 31 -[ 268435648 ] 31 0 31 -[ 268435649 ] 31 0 31 -[ 268435650 ] 31 0 31 -[ 268435651 ] 31 0 31 -[ 268435652 ] 31 0 31 -[ 268435653 ] 31 0 31 -[ 268435654 ] 31 0 31 -[ 268435655 ] 31 0 31 -[ 268435656 ] 31 0 31 -[ 268435657 ] 31 0 31 -[ 268435658 ] 31 0 31 -[ 268435659 ] 31 0 31 -[ 268435660 ] 31 0 31 -[ 268435661 ] 31 0 31 -[ 268435662 ] 31 0 31 -[ 268435663 ] 31 0 31 -[ 268435664 ] 31 0 31 -[ 268435665 ] 31 0 31 -[ 268435666 ] 31 0 31 -[ 268435667 ] 31 0 31 -[ 268435668 ] 31 0 31 -[ 268435669 ] 31 0 31 -[ 268435670 ] 31 0 31 -[ 268435671 ] 31 0 31 -[ 268435672 ] 31 0 31 -[ 268435673 ] 31 0 31 -[ 268435674 ] 31 0 31 -[ 268435675 ] 31 0 31 -[ 268435676 ] 31 0 31 -[ 268435677 ] 31 0 31 -[ 268435678 ] 31 0 31 -[ 268435679 ] 31 0 31 -[ 268435680 ] 31 0 31 -[ 268435681 ] 31 0 31 -[ 268435682 ] 31 0 31 -[ 268435683 ] 31 0 31 -[ 268435684 ] 31 0 31 -[ 268435685 ] 31 0 31 -[ 268435686 ] 31 0 31 -[ 268435687 ] 31 0 31 -[ 268435688 ] 31 0 31 -[ 268435689 ] 31 0 31 -[ 268435690 ] 31 0 31 -[ 268435691 ] 31 0 31 -[ 268435692 ] 31 0 31 -[ 268435693 ] 31 0 31 -[ 268435694 ] 31 0 31 -[ 268435695 ] 31 0 31 -[ 268435696 ] 31 0 31 -[ 268435697 ] 31 0 31 -[ 268435698 ] 31 0 31 -[ 268435699 ] 31 0 31 -[ 268435700 ] 31 0 31 -[ 268435701 ] 31 0 31 -[ 268435702 ] 31 0 31 -[ 268435703 ] 31 0 31 -[ 268435704 ] 31 0 31 -[ 268435705 ] 31 0 31 -[ 268435706 ] 31 0 31 -[ 268435707 ] 31 0 31 -[ 268435708 ] 31 0 31 -[ 268435709 ] 31 0 31 -[ 268435710 ] 31 0 31 -[ 268435711 ] 31 0 31 -[ 268435712 ] 31 0 31 -[ 268435713 ] 31 0 31 -[ 268435714 ] 31 0 31 -[ 268435715 ] 31 0 31 -[ 268435716 ] 31 0 31 -[ 268435717 ] 31 0 31 -[ 268435718 ] 31 0 31 -[ 268435719 ] 31 0 31 -[ 268435720 ] 31 0 31 -[ 268435721 ] 31 0 31 -[ 268435722 ] 31 0 31 -[ 268435723 ] 31 0 31 -[ 268435724 ] 31 0 31 -[ 268435725 ] 31 0 31 -[ 268435726 ] 31 0 31 -[ 268435727 ] 31 0 31 -[ 268435728 ] 31 0 31 -[ 268435729 ] 31 0 31 -[ 268435730 ] 31 0 31 -[ 268435731 ] 31 0 31 -[ 268435732 ] 31 0 31 -[ 268435733 ] 31 0 31 -[ 268435734 ] 31 0 31 -[ 268435735 ] 31 0 31 -[ 268435736 ] 31 0 31 -[ 268435737 ] 31 0 31 -[ 268435738 ] 31 0 31 -[ 268435739 ] 31 0 31 -[ 268435740 ] 31 0 31 -[ 268435741 ] 31 0 31 -[ 268435742 ] 31 0 31 -[ 268435743 ] 31 0 31 -[ 268435744 ] 31 0 31 -[ 268435745 ] 31 0 31 -[ 268435746 ] 31 0 31 -[ 268435747 ] 31 0 31 -[ 268435748 ] 31 0 31 -[ 268435749 ] 31 0 31 -[ 268435750 ] 31 0 31 -[ 268435751 ] 31 0 31 -[ 268435752 ] 31 0 31 -[ 268435753 ] 31 0 31 -[ 268435754 ] 31 0 31 -[ 268435755 ] 31 0 31 -[ 268435756 ] 31 0 31 -[ 268435757 ] 31 0 31 -[ 268435758 ] 31 0 31 -[ 268435759 ] 31 0 31 -[ 268435760 ] 31 0 31 -[ 268435761 ] 31 0 31 -[ 268435762 ] 31 0 31 -[ 268435763 ] 31 0 31 -[ 268435764 ] 31 0 31 -[ 268435765 ] 31 0 31 -[ 268435766 ] 31 0 31 -[ 268435767 ] 31 0 31 -[ 268435768 ] 31 0 31 -[ 268435769 ] 31 0 31 -[ 268435770 ] 31 0 31 -[ 268435771 ] 31 0 31 -[ 268435772 ] 31 0 31 -[ 268435773 ] 31 0 31 -[ 268435774 ] 31 0 31 -[ 268435775 ] 31 0 31 -[ 268435776 ] 31 0 31 -[ 268435777 ] 31 0 31 -[ 268435778 ] 31 0 31 -[ 268435779 ] 31 0 31 -[ 268435780 ] 31 0 31 -[ 268435781 ] 31 0 31 -[ 268435782 ] 31 0 31 -[ 268435783 ] 31 0 31 -[ 268435784 ] 31 0 31 -[ 268435785 ] 31 0 31 -[ 268435786 ] 31 0 31 -[ 268435787 ] 31 0 31 -[ 268435788 ] 31 0 31 -[ 268435789 ] 31 0 31 -[ 268435790 ] 31 0 31 -[ 268435791 ] 31 0 31 -[ 268435792 ] 31 0 31 -[ 268435793 ] 31 0 31 -[ 268435794 ] 31 0 31 -[ 268435795 ] 31 0 31 -[ 268435796 ] 31 0 31 -[ 268435797 ] 31 0 31 -[ 268435798 ] 31 0 31 -[ 268435799 ] 31 0 31 -[ 268435800 ] 31 0 31 -[ 268435801 ] 31 0 31 -[ 268435802 ] 31 0 31 -[ 268435803 ] 31 0 31 -[ 268435804 ] 31 0 31 -[ 268435805 ] 31 0 31 -[ 268435806 ] 31 0 31 -[ 268435807 ] 31 0 31 -[ 268435808 ] 31 0 31 -[ 268435809 ] 31 0 31 -[ 268435810 ] 31 0 31 -[ 268435811 ] 31 0 31 -[ 268435812 ] 31 0 31 -[ 268435813 ] 31 0 31 -[ 268435814 ] 31 0 31 -[ 268435815 ] 31 0 31 -[ 268435816 ] 31 0 31 -[ 268435817 ] 31 0 31 -[ 268435818 ] 31 0 31 -[ 268435819 ] 31 0 31 -[ 268435820 ] 31 0 31 -[ 268435821 ] 31 0 31 -[ 268435822 ] 31 0 31 -[ 268435823 ] 31 0 31 -[ 268435824 ] 31 0 31 -[ 268435825 ] 31 0 31 -[ 268435826 ] 31 0 31 -[ 268435827 ] 31 0 31 -[ 268435828 ] 31 0 31 -[ 268435829 ] 31 0 31 -[ 268435830 ] 31 0 31 -[ 268435831 ] 31 0 31 -[ 268435832 ] 31 0 31 -[ 268435833 ] 31 0 31 -[ 268435834 ] 31 0 31 -[ 268435835 ] 31 0 31 -[ 268435836 ] 31 0 31 -[ 268435837 ] 31 0 31 -[ 268435838 ] 31 0 31 -[ 268435839 ] 31 0 31 -[ 268435840 ] 31 0 31 -[ 268435841 ] 31 0 31 -[ 268435842 ] 31 0 31 -[ 268435843 ] 31 0 31 -[ 268435844 ] 31 0 31 -[ 268435845 ] 31 0 31 -[ 268435846 ] 31 0 31 -[ 268435847 ] 31 0 31 -[ 268435848 ] 31 0 31 -[ 268435849 ] 31 0 31 -[ 268435850 ] 31 0 31 -[ 268435851 ] 31 0 31 -[ 268435852 ] 31 0 31 -[ 268435853 ] 31 0 31 -[ 268435854 ] 31 0 31 -[ 268435855 ] 31 0 31 -[ 268435856 ] 31 0 31 -[ 268435857 ] 31 0 31 -[ 268435858 ] 31 0 31 -[ 268435859 ] 31 0 31 -[ 268435860 ] 31 0 31 -[ 268435861 ] 31 0 31 -[ 268435862 ] 31 0 31 -[ 268435863 ] 31 0 31 -[ 268435864 ] 31 0 31 -[ 268435865 ] 31 0 31 -[ 268435866 ] 31 0 31 -[ 268435867 ] 31 0 31 -[ 268435868 ] 31 0 31 -[ 268435869 ] 31 0 31 -[ 268435870 ] 31 0 31 -[ 268435871 ] 31 0 31 -[ 268435872 ] 31 0 31 -[ 268435873 ] 31 0 31 -[ 268435874 ] 31 0 31 -[ 268435875 ] 31 0 31 -[ 268435876 ] 31 0 31 -[ 268435877 ] 31 0 31 -[ 268435878 ] 31 0 31 -[ 268435879 ] 31 0 31 -[ 268435880 ] 31 0 31 -[ 268435881 ] 31 0 31 -[ 268435882 ] 31 0 31 -[ 268435883 ] 31 0 31 -[ 268435884 ] 31 0 31 -[ 268435885 ] 31 0 31 -[ 268435886 ] 31 0 31 -[ 268435887 ] 31 0 31 -[ 268435888 ] 31 0 31 -[ 268435889 ] 31 0 31 -[ 268435890 ] 31 0 31 -[ 268435891 ] 31 0 31 -[ 268435892 ] 31 0 31 -[ 268435893 ] 31 0 31 -[ 268435894 ] 31 0 31 -[ 268435895 ] 31 0 31 -[ 268435896 ] 31 0 31 -[ 268435897 ] 31 0 31 -[ 268435898 ] 31 0 31 -[ 268435899 ] 31 0 31 -[ 268435900 ] 31 0 31 -[ 268435901 ] 31 0 31 -[ 268435902 ] 31 0 31 -[ 268435903 ] 31 0 31 -[ 268435904 ] 31 0 31 -[ 268435905 ] 31 0 31 -[ 268435906 ] 31 0 31 -[ 268435907 ] 31 0 31 -[ 268435908 ] 31 0 31 -[ 268435909 ] 31 0 31 -[ 268435910 ] 31 0 31 -[ 268435911 ] 31 0 31 -[ 268435912 ] 31 0 31 -[ 268435913 ] 31 0 31 -[ 268435914 ] 31 0 31 -[ 268435915 ] 31 0 31 -[ 268435916 ] 31 0 31 -[ 268435917 ] 31 0 31 -[ 268435918 ] 31 0 31 -[ 268435919 ] 31 0 31 -[ 268435920 ] 31 0 31 -[ 268435921 ] 31 0 31 -[ 268435922 ] 31 0 31 -[ 268435923 ] 31 0 31 -[ 268435924 ] 31 0 31 -[ 268435925 ] 31 0 31 -[ 268435926 ] 31 0 31 -[ 268435927 ] 31 0 31 -[ 268435928 ] 31 0 31 -[ 268435929 ] 31 0 31 -[ 268435930 ] 31 0 31 -[ 268435931 ] 31 0 31 -[ 268435932 ] 31 0 31 -[ 268435933 ] 31 0 31 -[ 268435934 ] 31 0 31 -[ 268435935 ] 31 0 31 -[ 268435936 ] 31 0 31 -[ 268435937 ] 31 0 31 -[ 268435938 ] 31 0 31 -[ 268435939 ] 31 0 31 -[ 268435940 ] 31 0 31 -[ 268435941 ] 31 0 31 -[ 268435942 ] 31 0 31 -[ 268435943 ] 31 0 31 -[ 268435944 ] 31 0 31 -[ 268435945 ] 31 0 31 -[ 268435946 ] 31 0 31 -[ 268435947 ] 31 0 31 -[ 268435948 ] 31 0 31 -[ 268435949 ] 31 0 31 -[ 268435950 ] 31 0 31 -[ 268435951 ] 31 0 31 -[ 268435952 ] 31 0 31 -[ 268435953 ] 31 0 31 -[ 268435954 ] 31 0 31 -[ 268435955 ] 31 0 31 -[ 268435956 ] 31 0 31 -[ 268435957 ] 31 0 31 -[ 268435958 ] 31 0 31 -[ 268435959 ] 31 0 31 -[ 268435960 ] 31 0 31 -[ 268435961 ] 31 0 31 -[ 268435962 ] 31 0 31 -[ 268435963 ] 31 0 31 -[ 268435964 ] 31 0 31 -[ 268435965 ] 31 0 31 -[ 268435966 ] 31 0 31 -[ 268435967 ] 31 0 31 -[ 268435968 ] 31 0 31 -[ 268435969 ] 31 0 31 -[ 268435970 ] 31 0 31 -[ 268435971 ] 31 0 31 -[ 268435972 ] 31 0 31 -[ 268435973 ] 31 0 31 -[ 268435974 ] 31 0 31 -[ 268435975 ] 31 0 31 -[ 268435976 ] 31 0 31 -[ 268435977 ] 31 0 31 -[ 268435978 ] 31 0 31 -[ 268435979 ] 31 0 31 -[ 268435980 ] 31 0 31 -[ 268435981 ] 31 0 31 -[ 268435982 ] 31 0 31 -[ 268435983 ] 31 0 31 -[ 268435984 ] 31 0 31 -[ 268435985 ] 31 0 31 -[ 268435986 ] 31 0 31 -[ 268435987 ] 31 0 31 -[ 268435988 ] 31 0 31 -[ 268435989 ] 31 0 31 -[ 268435990 ] 31 0 31 -[ 268435991 ] 31 0 31 -[ 268435992 ] 31 0 31 -[ 268435993 ] 31 0 31 -[ 268435994 ] 31 0 31 -[ 268435995 ] 31 0 31 -[ 268435996 ] 31 0 31 -[ 268435997 ] 31 0 31 -[ 268435998 ] 31 0 31 -[ 268435999 ] 31 0 31 -[ 268436000 ] 31 0 31 -[ 268436001 ] 31 0 31 -[ 268436002 ] 31 0 31 -[ 268436003 ] 31 0 31 -[ 268436004 ] 31 0 31 -[ 268436005 ] 31 0 31 -[ 268436006 ] 31 0 31 -[ 268436007 ] 31 0 31 -[ 268436008 ] 31 0 31 -[ 268436009 ] 31 0 31 -[ 268436010 ] 31 0 31 -[ 268436011 ] 31 0 31 -[ 268436012 ] 31 0 31 -[ 268436013 ] 31 0 31 -[ 268436014 ] 31 0 31 -[ 268436015 ] 31 0 31 -[ 268436016 ] 31 0 31 -[ 268436017 ] 31 0 31 -[ 268436018 ] 31 0 31 -[ 268436019 ] 31 0 31 -[ 268436020 ] 31 0 31 -[ 268436021 ] 31 0 31 -[ 268436022 ] 31 0 31 -[ 268436023 ] 31 0 31 -[ 268436024 ] 31 0 31 -[ 268436025 ] 31 0 31 -[ 268436026 ] 31 0 31 -[ 268436027 ] 31 0 31 -[ 268436028 ] 31 0 31 -[ 268436029 ] 31 0 31 -[ 268436030 ] 31 0 31 -[ 268436031 ] 31 0 31 -[ 268436032 ] 31 0 31 -[ 268436033 ] 31 0 31 -[ 268436034 ] 31 0 31 -[ 268436035 ] 31 0 31 -[ 268436036 ] 31 0 31 -[ 268436037 ] 31 0 31 -[ 268436038 ] 31 0 31 -[ 268436039 ] 31 0 31 -[ 268436040 ] 31 0 31 -[ 268436041 ] 31 0 31 -[ 268436042 ] 31 0 31 -[ 268436043 ] 31 0 31 -[ 268436044 ] 31 0 31 -[ 268436045 ] 31 0 31 -[ 268436046 ] 31 0 31 -[ 268436047 ] 31 0 31 -[ 268436048 ] 31 0 31 -[ 268436049 ] 31 0 31 -[ 268436050 ] 31 0 31 -[ 268436051 ] 31 0 31 -[ 268436052 ] 31 0 31 -[ 268436053 ] 31 0 31 -[ 268436054 ] 31 0 31 -[ 268436055 ] 31 0 31 -[ 268436056 ] 31 0 31 -[ 268436057 ] 31 0 31 -[ 268436058 ] 31 0 31 -[ 268436059 ] 31 0 31 -[ 268436060 ] 31 0 31 -[ 268436061 ] 31 0 31 -[ 268436062 ] 31 0 31 -[ 268436063 ] 31 0 31 -[ 268436064 ] 31 0 31 -[ 268436065 ] 31 0 31 -[ 268436066 ] 31 0 31 -[ 268436067 ] 31 0 31 -[ 268436068 ] 31 0 31 -[ 268436069 ] 31 0 31 -[ 268436070 ] 31 0 31 -[ 268436071 ] 31 0 31 -[ 268436072 ] 31 0 31 -[ 268436073 ] 31 0 31 -[ 268436074 ] 31 0 31 -[ 268436075 ] 31 0 31 -[ 268436076 ] 31 0 31 -[ 268436077 ] 31 0 31 -[ 268436078 ] 31 0 31 -[ 268436079 ] 31 0 31 -[ 268436080 ] 31 0 31 -[ 268436081 ] 31 0 31 -[ 268436082 ] 31 0 31 -[ 268436083 ] 31 0 31 -[ 268436084 ] 31 0 31 -[ 268436085 ] 31 0 31 -[ 268436086 ] 31 0 31 -[ 268436087 ] 31 0 31 -[ 268436088 ] 31 0 31 -[ 268436089 ] 31 0 31 -[ 268436090 ] 31 0 31 -[ 268436091 ] 31 0 31 -[ 268436092 ] 31 0 31 -[ 268436093 ] 31 0 31 -[ 268436094 ] 31 0 31 -[ 268436095 ] 31 0 31 -[ 268436096 ] 31 0 31 -[ 268436097 ] 31 0 31 -[ 268436098 ] 31 0 31 -[ 268436099 ] 31 0 31 -[ 268436100 ] 31 0 31 -[ 268436101 ] 31 0 31 -[ 268436102 ] 31 0 31 -[ 268436103 ] 31 0 31 -[ 268436104 ] 31 0 31 -[ 268436105 ] 31 0 31 -[ 268436106 ] 31 0 31 -[ 268436107 ] 31 0 31 -[ 268436108 ] 31 0 31 -[ 268436109 ] 31 0 31 -[ 268436110 ] 31 0 31 -[ 268436111 ] 31 0 31 -[ 268436112 ] 31 0 31 -[ 268436113 ] 31 0 31 -[ 268436114 ] 31 0 31 -[ 268436115 ] 31 0 31 -[ 268436116 ] 31 0 31 -[ 268436117 ] 31 0 31 -[ 268436118 ] 31 0 31 -[ 268436119 ] 31 0 31 -[ 268436120 ] 31 0 31 -[ 268436121 ] 31 0 31 -[ 268436122 ] 31 0 31 -[ 268436123 ] 31 0 31 -[ 268436124 ] 31 0 31 -[ 268436125 ] 31 0 31 -[ 268436126 ] 31 0 31 -[ 268436127 ] 31 0 31 -[ 268436128 ] 31 0 31 -[ 268436129 ] 31 0 31 -[ 268436130 ] 31 0 31 -[ 268436131 ] 31 0 31 -[ 268436132 ] 31 0 31 -[ 268436133 ] 31 0 31 -[ 268436134 ] 31 0 31 -[ 268436135 ] 31 0 31 -[ 268436136 ] 31 0 31 -[ 268436137 ] 31 0 31 -[ 268436138 ] 31 0 31 -[ 268436139 ] 31 0 31 -[ 268436140 ] 31 0 31 -[ 268436141 ] 31 0 31 -[ 268436142 ] 31 0 31 -[ 268436143 ] 31 0 31 -[ 268436144 ] 31 0 31 -[ 268436145 ] 31 0 31 -[ 268436146 ] 31 0 31 -[ 268436147 ] 31 0 31 -[ 268436148 ] 31 0 31 -[ 268436149 ] 31 0 31 -[ 268436150 ] 31 0 31 -[ 268436151 ] 31 0 31 -[ 268436152 ] 31 0 31 -[ 268436153 ] 31 0 31 -[ 268436154 ] 31 0 31 -[ 268436155 ] 31 0 31 -[ 268436156 ] 31 0 31 -[ 268436157 ] 31 0 31 -[ 268436158 ] 31 0 31 -[ 268436159 ] 31 0 31 -[ 268436160 ] 31 0 31 -[ 268436161 ] 31 0 31 -[ 268436162 ] 31 0 31 -[ 268436163 ] 31 0 31 -[ 268436164 ] 31 0 31 -[ 268436165 ] 31 0 31 -[ 268436166 ] 31 0 31 -[ 268436167 ] 31 0 31 -[ 268436168 ] 31 0 31 -[ 268436169 ] 31 0 31 -[ 268436170 ] 31 0 31 -[ 268436171 ] 31 0 31 -[ 268436172 ] 31 0 31 -[ 268436173 ] 31 0 31 -[ 268436174 ] 31 0 31 -[ 268436175 ] 31 0 31 -[ 268436176 ] 31 0 31 -[ 268436177 ] 31 0 31 -[ 268436178 ] 31 0 31 -[ 268436179 ] 31 0 31 -[ 268436180 ] 31 0 31 -[ 268436181 ] 31 0 31 -[ 268436182 ] 31 0 31 -[ 268436183 ] 31 0 31 -[ 268436184 ] 31 0 31 -[ 268436185 ] 31 0 31 -[ 268436186 ] 31 0 31 -[ 268436187 ] 31 0 31 -[ 268436188 ] 31 0 31 -[ 268436189 ] 31 0 31 -[ 268436190 ] 31 0 31 -[ 268436191 ] 31 0 31 -[ 268436192 ] 31 0 31 -[ 268436193 ] 31 0 31 -[ 268436194 ] 31 0 31 -[ 268436195 ] 31 0 31 -[ 268436196 ] 31 0 31 -[ 268436197 ] 31 0 31 -[ 268436198 ] 31 0 31 -[ 268436199 ] 31 0 31 -[ 268436200 ] 31 0 31 -[ 268436201 ] 31 0 31 -[ 268436202 ] 31 0 31 -[ 268436203 ] 31 0 31 -[ 268436204 ] 31 0 31 -[ 268436205 ] 31 0 31 -[ 268436206 ] 31 0 31 -[ 268436207 ] 31 0 31 -[ 268436208 ] 31 0 31 -[ 268436209 ] 31 0 31 -[ 268436210 ] 31 0 31 -[ 268436211 ] 31 0 31 -[ 268436212 ] 31 0 31 -[ 268436213 ] 31 0 31 -[ 268436214 ] 31 0 31 -[ 268436215 ] 31 0 31 -[ 268436216 ] 31 0 31 -[ 268436217 ] 31 0 31 -[ 268436218 ] 31 0 31 -[ 268436219 ] 31 0 31 -[ 268436220 ] 31 0 31 -[ 268436221 ] 31 0 31 -[ 268436222 ] 31 0 31 -[ 268436223 ] 31 0 31 -[ 268436224 ] 31 0 31 -[ 268436225 ] 31 0 31 -[ 268436226 ] 31 0 31 -[ 268436227 ] 31 0 31 -[ 268436228 ] 31 0 31 -[ 268436229 ] 31 0 31 -[ 268436230 ] 31 0 31 -[ 268436231 ] 31 0 31 -[ 268436232 ] 31 0 31 -[ 268436233 ] 31 0 31 -[ 268436234 ] 31 0 31 -[ 268436235 ] 31 0 31 -[ 268436236 ] 31 0 31 -[ 268436237 ] 31 0 31 -[ 268436238 ] 31 0 31 -[ 268436239 ] 31 0 31 -[ 268436240 ] 31 0 31 -[ 268436241 ] 31 0 31 -[ 268436242 ] 31 0 31 -[ 268436243 ] 31 0 31 -[ 268436244 ] 31 0 31 -[ 268436245 ] 31 0 31 -[ 268436246 ] 31 0 31 -[ 268436247 ] 31 0 31 -[ 268436248 ] 31 0 31 -[ 268436249 ] 31 0 31 -[ 268436250 ] 31 0 31 -[ 268436251 ] 31 0 31 -[ 268436252 ] 31 0 31 -[ 268436253 ] 31 0 31 -[ 268436254 ] 31 0 31 -[ 268436255 ] 31 0 31 -[ 268436256 ] 31 0 31 -[ 268436257 ] 31 0 31 -[ 268436258 ] 31 0 31 -[ 268436259 ] 31 0 31 -[ 268436260 ] 31 0 31 -[ 268436261 ] 31 0 31 -[ 268436262 ] 31 0 31 -[ 268436263 ] 31 0 31 -[ 268436264 ] 31 0 31 -[ 268436265 ] 31 0 31 -[ 268436266 ] 31 0 31 -[ 268436267 ] 31 0 31 -[ 268436268 ] 31 0 31 -[ 268436269 ] 31 0 31 -[ 268436270 ] 31 0 31 -[ 268436271 ] 31 0 31 -[ 268436272 ] 31 0 31 -[ 268436273 ] 31 0 31 -[ 268436274 ] 31 0 31 -[ 268436275 ] 31 0 31 -[ 268436276 ] 31 0 31 -[ 268436277 ] 31 0 31 -[ 268436278 ] 31 0 31 -[ 268436279 ] 31 0 31 -[ 268436280 ] 31 0 31 -[ 268436281 ] 31 0 31 -[ 268436282 ] 31 0 31 -[ 268436283 ] 31 0 31 -[ 268436284 ] 31 0 31 -[ 268436285 ] 31 0 31 -[ 268436286 ] 31 0 31 -[ 268436287 ] 31 0 31 -[ 268436288 ] 31 0 31 -[ 268436289 ] 31 0 31 -[ 268436290 ] 31 0 31 -[ 268436291 ] 31 0 31 -[ 268436292 ] 31 0 31 -[ 268436293 ] 31 0 31 -[ 268436294 ] 31 0 31 -[ 268436295 ] 31 0 31 -[ 268436296 ] 31 0 31 -[ 268436297 ] 31 0 31 -[ 268436298 ] 31 0 31 -[ 268436299 ] 31 0 31 -[ 268436300 ] 31 0 31 -[ 268436301 ] 31 0 31 -[ 268436302 ] 31 0 31 -[ 268436303 ] 31 0 31 -[ 268436304 ] 31 0 31 -[ 268436305 ] 31 0 31 -[ 268436306 ] 31 0 31 -[ 268436307 ] 31 0 31 -[ 268436308 ] 31 0 31 -[ 268436309 ] 31 0 31 -[ 268436310 ] 31 0 31 -[ 268436311 ] 31 0 31 -[ 268436312 ] 31 0 31 -[ 268436313 ] 31 0 31 -[ 268436314 ] 31 0 31 -[ 268436315 ] 31 0 31 -[ 268436316 ] 31 0 31 -[ 268436317 ] 31 0 31 -[ 268436318 ] 31 0 31 -[ 268436319 ] 31 0 31 -[ 268436320 ] 31 0 31 -[ 268436321 ] 31 0 31 -[ 268436322 ] 31 0 31 -[ 268436323 ] 31 0 31 -[ 268436324 ] 31 0 31 -[ 268436325 ] 31 0 31 -[ 268436326 ] 31 0 31 -[ 268436327 ] 31 0 31 -[ 268436328 ] 31 0 31 -[ 268436329 ] 31 0 31 -[ 268436330 ] 31 0 31 -[ 268436331 ] 31 0 31 -[ 268436332 ] 31 0 31 -[ 268436333 ] 31 0 31 -[ 268436334 ] 31 0 31 -[ 268436335 ] 31 0 31 -[ 268436336 ] 31 0 31 -[ 268436337 ] 31 0 31 -[ 268436338 ] 31 0 31 -[ 268436339 ] 31 0 31 -[ 268436340 ] 31 0 31 -[ 268436341 ] 31 0 31 -[ 268436342 ] 31 0 31 -[ 268436343 ] 31 0 31 -[ 268436344 ] 31 0 31 -[ 268436345 ] 31 0 31 -[ 268436346 ] 31 0 31 -[ 268436347 ] 31 0 31 -[ 268436348 ] 31 0 31 -[ 268436349 ] 31 0 31 -[ 268436350 ] 31 0 31 -[ 268436351 ] 31 0 31 -[ 268436352 ] 31 0 31 -[ 268436353 ] 31 0 31 -[ 268436354 ] 31 0 31 -[ 268436355 ] 31 0 31 -[ 268436356 ] 31 0 31 -[ 268436357 ] 31 0 31 -[ 268436358 ] 31 0 31 -[ 268436359 ] 31 0 31 -[ 268436360 ] 31 0 31 -[ 268436361 ] 31 0 31 -[ 268436362 ] 31 0 31 -[ 268436363 ] 31 0 31 -[ 268436364 ] 31 0 31 -[ 268436365 ] 31 0 31 -[ 268436366 ] 31 0 31 -[ 268436367 ] 31 0 31 -[ 268436368 ] 31 0 31 -[ 268436369 ] 31 0 31 -[ 268436370 ] 31 0 31 -[ 268436371 ] 31 0 31 -[ 268436372 ] 31 0 31 -[ 268436373 ] 31 0 31 -[ 268436374 ] 31 0 31 -[ 268436375 ] 31 0 31 -[ 268436376 ] 31 0 31 -[ 268436377 ] 31 0 31 -[ 268436378 ] 31 0 31 -[ 268436379 ] 31 0 31 -[ 268436380 ] 31 0 31 -[ 268436381 ] 31 0 31 -[ 268436382 ] 31 0 31 -[ 268436383 ] 31 0 31 -[ 268436384 ] 31 0 31 -[ 268436385 ] 31 0 31 -[ 268436386 ] 31 0 31 -[ 268436387 ] 31 0 31 -[ 268436388 ] 31 0 31 -[ 268436389 ] 31 0 31 -[ 268436390 ] 31 0 31 -[ 268436391 ] 31 0 31 -[ 268436392 ] 31 0 31 -[ 268436393 ] 31 0 31 -[ 268436394 ] 31 0 31 -[ 268436395 ] 31 0 31 -[ 268436396 ] 31 0 31 -[ 268436397 ] 31 0 31 -[ 268436398 ] 31 0 31 -[ 268436399 ] 31 0 31 -[ 268436400 ] 31 0 31 -[ 268436401 ] 31 0 31 -[ 268436402 ] 31 0 31 -[ 268436403 ] 31 0 31 -[ 268436404 ] 31 0 31 -[ 268436405 ] 31 0 31 -[ 268436406 ] 31 0 31 -[ 268436407 ] 31 0 31 -[ 268436408 ] 31 0 31 -[ 268436409 ] 31 0 31 -[ 268436410 ] 31 0 31 -[ 268436411 ] 31 0 31 -[ 268436412 ] 31 0 31 -[ 268436413 ] 31 0 31 -[ 268436414 ] 31 0 31 -[ 268436415 ] 31 0 31 -[ 268436416 ] 31 0 31 -[ 268436417 ] 31 0 31 -[ 268436418 ] 31 0 31 -[ 268436419 ] 31 0 31 -[ 268436420 ] 31 0 31 -[ 268436421 ] 31 0 31 -[ 268436422 ] 31 0 31 -[ 268436423 ] 31 0 31 -[ 268436424 ] 31 0 31 -[ 268436425 ] 31 0 31 -[ 268436426 ] 31 0 31 -[ 268436427 ] 31 0 31 -[ 268436428 ] 31 0 31 -[ 268436429 ] 31 0 31 -[ 268436430 ] 31 0 31 -[ 268436431 ] 31 0 31 -[ 268436432 ] 31 0 31 -[ 268436433 ] 31 0 31 -[ 268436434 ] 31 0 31 -[ 268436435 ] 31 0 31 -[ 268436436 ] 31 0 31 -[ 268436437 ] 31 0 31 -[ 268436438 ] 31 0 31 -[ 268436439 ] 31 0 31 -[ 268436440 ] 31 0 31 -[ 268436441 ] 31 0 31 -[ 268436442 ] 31 0 31 -[ 268436443 ] 31 0 31 -[ 268436444 ] 31 0 31 -[ 268436445 ] 31 0 31 -[ 268436446 ] 31 0 31 -[ 268436447 ] 31 0 31 -[ 268436448 ] 31 0 31 -[ 268436449 ] 31 0 31 -[ 268436450 ] 31 0 31 -[ 268436451 ] 31 0 31 -[ 268436452 ] 31 0 31 -[ 268436453 ] 31 0 31 -[ 268436454 ] 31 0 31 -[ 268436455 ] 31 0 31 -[ 268436456 ] 31 0 31 -[ 268436457 ] 31 0 31 -[ 268436458 ] 31 0 31 -[ 268436459 ] 31 0 31 -[ 268436460 ] 31 0 31 -[ 268436461 ] 31 0 31 -[ 268436462 ] 31 0 31 -[ 268436463 ] 31 0 31 -[ 268436464 ] 31 0 31 -[ 268436465 ] 31 0 31 -[ 268436466 ] 31 0 31 -[ 268436467 ] 31 0 31 -[ 268436468 ] 31 0 31 -[ 268436469 ] 31 0 31 -[ 268436470 ] 31 0 31 -[ 268436471 ] 31 0 31 -[ 268436472 ] 31 0 31 -[ 268436473 ] 31 0 31 -[ 268436474 ] 31 0 31 -[ 268436475 ] 31 0 31 -[ 268436476 ] 31 0 31 -[ 268436477 ] 31 0 31 -[ 268436478 ] 31 0 31 -[ 268436479 ] 31 0 31 -1024 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_101.txt b/tools/h5diff/testfiles/h5diff_101.txt deleted file mode 100644 index f915439..0000000 --- a/tools/h5diff/testfiles/h5diff_101.txt +++ /dev/null @@ -1,11 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position d1 d2 difference ------------------------------------------------------------- -[ 0 1 ] 1e-16 4e-16 3e-16 -[ 1 0 ] 1e-16 2e-16 1e-16 -[ 1 1 ] 0 1e-16 1e-16 -[ 2 0 ] 3.3e-16 1e-16 2.3e-16 -[ 2 1 ] 1e-16 0 1e-16 -5 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_101w.txt b/tools/h5diff/testfiles/h5diff_101w.txt deleted file mode 100644 index 71f4e87..0000000 --- a/tools/h5diff/testfiles/h5diff_101w.txt +++ /dev/null @@ -1,11 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position d1 d2 difference ------------------------------------------------------------- -[ 0 1 ] 1e-016 4e-016 3e-016 -[ 1 0 ] 1e-016 2e-016 1e-016 -[ 1 1 ] 0 1e-016 1e-016 -[ 2 0 ] 3.3e-016 1e-016 2.3e-016 -[ 2 1 ] 1e-016 0 1e-016 -5 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_102.txt b/tools/h5diff/testfiles/h5diff_102.txt deleted file mode 100644 index 476067b..0000000 --- a/tools/h5diff/testfiles/h5diff_102.txt +++ /dev/null @@ -1,10 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position fp1 fp2 difference ------------------------------------------------------------- -[ 0 1 ] 1e-07 2e-07 1e-07 -[ 1 0 ] 1e-07 3e-07 2e-07 -[ 1 1 ] 2.2e-07 1e-07 1.2e-07 -[ 2 0 ] 1e-07 0 1e-07 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_102w.txt b/tools/h5diff/testfiles/h5diff_102w.txt deleted file mode 100644 index 19a097c..0000000 --- a/tools/h5diff/testfiles/h5diff_102w.txt +++ /dev/null @@ -1,10 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position fp1 fp2 difference ------------------------------------------------------------- -[ 0 1 ] 1e-007 2e-007 1e-007 -[ 1 0 ] 1e-007 3e-007 2e-007 -[ 1 1 ] 2.2e-007 1e-007 1.2e-007 -[ 2 0 ] 1e-007 0 1e-007 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_103.txt b/tools/h5diff/testfiles/h5diff_103.txt deleted file mode 100644 index 5700459..0000000 --- a/tools/h5diff/testfiles/h5diff_103.txt +++ /dev/null @@ -1,8 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position d1 d2 difference ------------------------------------------------------------- -[ 0 1 ] 1e-16 4e-16 3e-16 -[ 2 0 ] 3.3e-16 1e-16 2.3e-16 -2 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_103w.txt b/tools/h5diff/testfiles/h5diff_103w.txt deleted file mode 100644 index b1abea2..0000000 --- a/tools/h5diff/testfiles/h5diff_103w.txt +++ /dev/null @@ -1,8 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position d1 d2 difference ------------------------------------------------------------- -[ 0 1 ] 1e-016 4e-016 3e-016 -[ 2 0 ] 3.3e-016 1e-016 2.3e-016 -2 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_104.txt b/tools/h5diff/testfiles/h5diff_104.txt deleted file mode 100644 index 2997f10..0000000 --- a/tools/h5diff/testfiles/h5diff_104.txt +++ /dev/null @@ -1,8 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position fp1 fp2 difference ------------------------------------------------------------- -[ 1 0 ] 1e-07 3e-07 2e-07 -[ 1 1 ] 2.2e-07 1e-07 1.2e-07 -2 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_104w.txt b/tools/h5diff/testfiles/h5diff_104w.txt deleted file mode 100644 index 28ef705..0000000 --- a/tools/h5diff/testfiles/h5diff_104w.txt +++ /dev/null @@ -1,8 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position fp1 fp2 difference ------------------------------------------------------------- -[ 1 0 ] 1e-007 3e-007 2e-007 -[ 1 1 ] 2.2e-007 1e-007 1.2e-007 -2 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_11.txt b/tools/h5diff/testfiles/h5diff_11.txt deleted file mode 100644 index c06305c..0000000 --- a/tools/h5diff/testfiles/h5diff_11.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -5 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_12.txt b/tools/h5diff/testfiles/h5diff_12.txt deleted file mode 100644 index 371df79..0000000 --- a/tools/h5diff/testfiles/h5diff_12.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -5 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_13.txt b/tools/h5diff/testfiles/h5diff_13.txt deleted file mode 100644 index 729859b..0000000 --- a/tools/h5diff/testfiles/h5diff_13.txt +++ /dev/null @@ -1,11 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset1 dset1 difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 1 1.1 0.1 -[ 1 0 ] 1 1.01 0.01 -[ 1 1 ] 1 1.001 0.001 -[ 2 1 ] 0 1 1 -5 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_14.txt b/tools/h5diff/testfiles/h5diff_14.txt deleted file mode 100644 index 454463a..0000000 --- a/tools/h5diff/testfiles/h5diff_14.txt +++ /dev/null @@ -1,11 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset1 dset2 difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 1 1.1 0.1 -[ 1 0 ] 1 1.01 0.01 -[ 1 1 ] 1 1.001 0.001 -[ 2 1 ] 0 1 1 -5 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_15.txt b/tools/h5diff/testfiles/h5diff_15.txt deleted file mode 100644 index 7685f75..0000000 --- a/tools/h5diff/testfiles/h5diff_15.txt +++ /dev/null @@ -1,10 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset3 dset4 difference ------------------------------------------------------------- -[ 0 1 ] 100 120 20 -[ 1 0 ] 100 160 60 -[ 2 0 ] 100 80 20 -[ 2 1 ] 100 40 60 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_16_1.txt b/tools/h5diff/testfiles/h5diff_16_1.txt deleted file mode 100644 index 482a42f..0000000 --- a/tools/h5diff/testfiles/h5diff_16_1.txt +++ /dev/null @@ -1,11 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset5 dset6 difference relative ------------------------------------------------------------------------- -[ 0 0 ] 100 120 20 0.200000 -[ 0 1 ] 100 80 20 0.200000 -[ 1 0 ] 100 0 100 1.000000 -[ 1 1 ] 0 100 100 not comparable -[ 2 1 ] 100 50 50 0.500000 -5 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_16_2.txt b/tools/h5diff/testfiles/h5diff_16_2.txt deleted file mode 100644 index 34c1afb..0000000 --- a/tools/h5diff/testfiles/h5diff_16_2.txt +++ /dev/null @@ -1,11 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset7 dset8 difference relative ------------------------------------------------------------------------- -[ 0 0 ] 100 120 20 0.200000 -[ 0 1 ] 100 80 20 0.200000 -[ 1 0 ] 100 0 100 1.000000 -[ 1 1 ] 0 100 100 not comparable -[ 2 1 ] 100 50 50 0.500000 -5 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_16_3.txt b/tools/h5diff/testfiles/h5diff_16_3.txt deleted file mode 100644 index 173a39b..0000000 --- a/tools/h5diff/testfiles/h5diff_16_3.txt +++ /dev/null @@ -1,11 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset9 dset10 difference relative ------------------------------------------------------------------------- -[ 0 0 ] 100 120 20 0.2 -[ 0 1 ] 100 80 20 0.2 -[ 1 0 ] 100 0 100 1 -[ 1 1 ] 0 100 100 not comparable -[ 2 1 ] 100 50 50 0.5 -5 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_17.txt b/tools/h5diff/testfiles/h5diff_17.txt deleted file mode 100644 index 4906a2a..0000000 --- a/tools/h5diff/testfiles/h5diff_17.txt +++ /dev/null @@ -1,57 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /g1 - x /g1/d1 - x /g1/d2 - x x /g1/dset1 - x /g1/dset10 - x /g1/dset11 - x /g1/dset12 - x /g1/dset2 - x /g1/dset3 - x /g1/dset4 - x /g1/dset5 - x /g1/dset6 - x /g1/dset7 - x /g1/dset8 - x /g1/dset9 - x /g1/fp1 - x /g1/fp15 - x /g1/fp16 - x /g1/fp17 - x /g1/fp18 - x /g1/fp18_COPY - x /g1/fp19 - x /g1/fp19_COPY - x /g1/fp2 - x /g1/fp20 - x /g1/fp20_COPY - x /g1/ld - x /g2 - x /g2/dset1 - x /g2/dset2 - x /g2/dset3 - x /g2/dset4 - x /g2/dset5 - x /g2/dset6 - x /g2/dset7 - x /g2/dset8 - x /g2/dset9 - -group : and -0 differences found -group : and -0 differences found -dataset: and -size: [3x2] [3x2] -position dset1 dset1 difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 1 1.1 0.1 -[ 1 0 ] 1 1.01 0.01 -[ 1 1 ] 1 1.001 0.001 -[ 2 1 ] 0 1 1 -5 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_171.txt b/tools/h5diff/testfiles/h5diff_171.txt deleted file mode 100644 index aabe16a..0000000 --- a/tools/h5diff/testfiles/h5diff_171.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_172.txt b/tools/h5diff/testfiles/h5diff_172.txt deleted file mode 100644 index 852f7b5..0000000 --- a/tools/h5diff/testfiles/h5diff_172.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_18.txt b/tools/h5diff/testfiles/h5diff_18.txt deleted file mode 100644 index 1255241..0000000 --- a/tools/h5diff/testfiles/h5diff_18.txt +++ /dev/null @@ -1 +0,0 @@ -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_18_1.txt b/tools/h5diff/testfiles/h5diff_18_1.txt deleted file mode 100644 index 0067075..0000000 --- a/tools/h5diff/testfiles/h5diff_18_1.txt +++ /dev/null @@ -1,2 +0,0 @@ -Error: -q (quiet mode) cannot be added to verbose or report modes -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_19.txt b/tools/h5diff/testfiles/h5diff_19.txt deleted file mode 100644 index 1155d55..0000000 --- a/tools/h5diff/testfiles/h5diff_19.txt +++ /dev/null @@ -1,26 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x /g1 - x /g1/d1 - x /g1/d2 - x /g1/dset1 - x /g1/dset10 - x /g1/dset3 - x /g1/dset5 - x /g1/dset6 - x /g1/dset7 - x /g1/dset8 - x /g1/dset9 - x /g1/fp1 - x /g1/fp15 - x /g1/fp16 - x /g1/fp17 - x /g1/fp18 - x /g1/fp2 - x /g1/ld - -group : and -0 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_20.txt b/tools/h5diff/testfiles/h5diff_20.txt deleted file mode 100644 index 09c20cb..0000000 --- a/tools/h5diff/testfiles/h5diff_20.txt +++ /dev/null @@ -1,6 +0,0 @@ -Not comparable: is of type H5G_DATASET and is of type H5G_GROUP --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_200.txt b/tools/h5diff/testfiles/h5diff_200.txt deleted file mode 100644 index 40e3fb6..0000000 --- a/tools/h5diff/testfiles/h5diff_200.txt +++ /dev/null @@ -1,5 +0,0 @@ --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects. -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_201.txt b/tools/h5diff/testfiles/h5diff_201.txt deleted file mode 100644 index ede94e1..0000000 --- a/tools/h5diff/testfiles/h5diff_201.txt +++ /dev/null @@ -1,2 +0,0 @@ -Not comparable: or is an empty dataset -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_202.txt b/tools/h5diff/testfiles/h5diff_202.txt deleted file mode 100644 index 95ef1da..0000000 --- a/tools/h5diff/testfiles/h5diff_202.txt +++ /dev/null @@ -1,2 +0,0 @@ -Not comparable: is of class H5T_FLOAT and is of class H5T_INTEGER -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_203.txt b/tools/h5diff/testfiles/h5diff_203.txt deleted file mode 100644 index 61a773a..0000000 --- a/tools/h5diff/testfiles/h5diff_203.txt +++ /dev/null @@ -1,3 +0,0 @@ -Not comparable: has rank 1, dimensions [6], max dimensions [6] -and has rank 2, dimensions [3x2], max dimensions [3x2] -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_204.txt b/tools/h5diff/testfiles/h5diff_204.txt deleted file mode 100644 index e02e831..0000000 --- a/tools/h5diff/testfiles/h5diff_204.txt +++ /dev/null @@ -1,3 +0,0 @@ -Not comparable: has rank 2, dimensions [3x2], max dimensions [3x2] -and has rank 2, dimensions [2x2], max dimensions [2x2] -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_205.txt b/tools/h5diff/testfiles/h5diff_205.txt deleted file mode 100644 index bf5650f..0000000 --- a/tools/h5diff/testfiles/h5diff_205.txt +++ /dev/null @@ -1,3 +0,0 @@ -Not comparable: has rank 2, dimensions [2x2], max dimensions [2x2] -and has rank 2, dimensions [3x2], max dimensions [3x2] -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_206.txt b/tools/h5diff/testfiles/h5diff_206.txt deleted file mode 100644 index 659321f..0000000 --- a/tools/h5diff/testfiles/h5diff_206.txt +++ /dev/null @@ -1,2 +0,0 @@ -Not comparable: has a class H5T_FLOAT and has a class H5T_INTEGER -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_207.txt b/tools/h5diff/testfiles/h5diff_207.txt deleted file mode 100644 index 1ef3dbe..0000000 --- a/tools/h5diff/testfiles/h5diff_207.txt +++ /dev/null @@ -1,3 +0,0 @@ -Not comparable: or is an empty dataset -Not comparable: has 2 members has 1 members -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_208.txt b/tools/h5diff/testfiles/h5diff_208.txt deleted file mode 100644 index 783be90..0000000 --- a/tools/h5diff/testfiles/h5diff_208.txt +++ /dev/null @@ -1,5 +0,0 @@ -Not comparable: or is an empty dataset -Not comparable: or is an empty dataset -Not comparable: has rank 2, dimensions [0x0], max dimensions [0x0] -and has rank 2, dimensions [0x4], max dimensions [0x4] -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_21.txt b/tools/h5diff/testfiles/h5diff_21.txt deleted file mode 100644 index 1c625fe..0000000 --- a/tools/h5diff/testfiles/h5diff_21.txt +++ /dev/null @@ -1,6 +0,0 @@ -Not comparable: is of type H5G_DATASET and is of type H5G_LINK --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_22.txt b/tools/h5diff/testfiles/h5diff_22.txt deleted file mode 100644 index 2ef22d0..0000000 --- a/tools/h5diff/testfiles/h5diff_22.txt +++ /dev/null @@ -1,6 +0,0 @@ -Not comparable: is of type H5G_DATASET and is of type H5G_TYPE --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_220.txt b/tools/h5diff/testfiles/h5diff_220.txt deleted file mode 100644 index 0092fc1..0000000 --- a/tools/h5diff/testfiles/h5diff_220.txt +++ /dev/null @@ -1,6 +0,0 @@ -Not comparable: is of class H5T_INTEGER and is of class H5T_STRING -attribute: > and > -3 differences found -dataset: and -3 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_221.txt b/tools/h5diff/testfiles/h5diff_221.txt deleted file mode 100644 index 5f10860..0000000 --- a/tools/h5diff/testfiles/h5diff_221.txt +++ /dev/null @@ -1,12 +0,0 @@ -dataset: and -3 differences found -Not comparable: is of class H5T_INTEGER and is of class H5T_STRING -Not comparable: has rank 1, dimensions [3], max dimensions [3] -and has rank 1, dimensions [4], max dimensions [4] -Not comparable: has rank 1, dimensions [3], max dimensions [3] -and has rank 2, dimensions [3x1], max dimensions [3x1] -attribute: > and > -3 differences found -dataset: and -3 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_222.txt b/tools/h5diff/testfiles/h5diff_222.txt deleted file mode 100644 index 77447da..0000000 --- a/tools/h5diff/testfiles/h5diff_222.txt +++ /dev/null @@ -1,20 +0,0 @@ -Not comparable: is of type H5G_DATASET and is of type H5G_GROUP -Not comparable: is of type H5G_GROUP and is of type H5G_TYPE -Not comparable: is of type H5G_TYPE and is of type H5G_DATASET -Not comparable: is of class H5T_INTEGER and is of class H5T_STRING -attribute: > and > -3 differences found -dataset: and -3 differences found -dataset: and -3 differences found -Not comparable: is of class H5T_INTEGER and is of class H5T_STRING -Not comparable: has rank 1, dimensions [3], max dimensions [3] -and has rank 1, dimensions [4], max dimensions [4] -Not comparable: has rank 1, dimensions [3], max dimensions [3] -and has rank 2, dimensions [3x1], max dimensions [3x1] -attribute: > and > -3 differences found -dataset: and -3 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_223.txt b/tools/h5diff/testfiles/h5diff_223.txt deleted file mode 100644 index c8e0f65..0000000 --- a/tools/h5diff/testfiles/h5diff_223.txt +++ /dev/null @@ -1,4 +0,0 @@ -Not comparable: is of type H5G_DATASET and is of type H5G_GROUP -Not comparable: is of type H5G_GROUP and is of type H5G_TYPE -Not comparable: is of type H5G_TYPE and is of type H5G_DATASET -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_224.txt b/tools/h5diff/testfiles/h5diff_224.txt deleted file mode 100644 index a4ebedb..0000000 --- a/tools/h5diff/testfiles/h5diff_224.txt +++ /dev/null @@ -1,4 +0,0 @@ -Not comparable: is of type H5G_GROUP and is of type H5G_DATASET -Not comparable: is of type H5G_TYPE and is of type H5G_GROUP -Not comparable: is of type H5G_DATASET and is of type H5G_TYPE -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_23.txt b/tools/h5diff/testfiles/h5diff_23.txt deleted file mode 100644 index bd1cadb..0000000 --- a/tools/h5diff/testfiles/h5diff_23.txt +++ /dev/null @@ -1,8 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - -group : and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_24.txt b/tools/h5diff/testfiles/h5diff_24.txt deleted file mode 100644 index fa5723a..0000000 --- a/tools/h5diff/testfiles/h5diff_24.txt +++ /dev/null @@ -1,3 +0,0 @@ -datatype: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_25.txt b/tools/h5diff/testfiles/h5diff_25.txt deleted file mode 100644 index e463ba1..0000000 --- a/tools/h5diff/testfiles/h5diff_25.txt +++ /dev/null @@ -1,3 +0,0 @@ -link : and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_26.txt b/tools/h5diff/testfiles/h5diff_26.txt deleted file mode 100644 index 54a5121..0000000 --- a/tools/h5diff/testfiles/h5diff_26.txt +++ /dev/null @@ -1,8 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - -group : and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_27.txt b/tools/h5diff/testfiles/h5diff_27.txt deleted file mode 100644 index cbc128e..0000000 --- a/tools/h5diff/testfiles/h5diff_27.txt +++ /dev/null @@ -1,3 +0,0 @@ -datatype: and -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_28.txt b/tools/h5diff/testfiles/h5diff_28.txt deleted file mode 100644 index 07d01fe..0000000 --- a/tools/h5diff/testfiles/h5diff_28.txt +++ /dev/null @@ -1,3 +0,0 @@ -link : and -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_30.txt b/tools/h5diff/testfiles/h5diff_30.txt deleted file mode 100644 index 187589a..0000000 --- a/tools/h5diff/testfiles/h5diff_30.txt +++ /dev/null @@ -1,9 +0,0 @@ -dataset: and -size: [6] [6] -position dset1 dset2 difference ------------------------------------------------------------- -[ 1 ] YIN **INVALID VALUE** -[ 2 ] **INVALID VALUE** YIN -[ 5 ] YIN YANG -3 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_300.txt b/tools/h5diff/testfiles/h5diff_300.txt deleted file mode 100644 index e51643f..0000000 --- a/tools/h5diff/testfiles/h5diff_300.txt +++ /dev/null @@ -1,3 +0,0 @@ -link : and -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_400.txt b/tools/h5diff/testfiles/h5diff_400.txt deleted file mode 100644 index 8b3c03c..0000000 --- a/tools/h5diff/testfiles/h5diff_400.txt +++ /dev/null @@ -1,35 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /softlink_dset1_1 - x x /softlink_dset2 - x x /softlink_group1 - x x /softlink_group1/dset - x x /softlink_noexist - x x /target_dset1 - x x /target_dset2 - x x /target_group - x x /target_group/dset - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dangling link: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_401.txt b/tools/h5diff/testfiles/h5diff_401.txt deleted file mode 100644 index 278729e..0000000 --- a/tools/h5diff/testfiles/h5diff_401.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position softlink_dset1_1 target_dset2 difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 0 2 ] 2 0 2 -[ 0 3 ] 3 0 3 -[ 1 0 ] 1 0 1 -[ 1 1 ] 2 0 2 -[ 1 2 ] 3 0 3 -[ 1 3 ] 4 0 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_402.txt b/tools/h5diff/testfiles/h5diff_402.txt deleted file mode 100644 index b0f30ca..0000000 --- a/tools/h5diff/testfiles/h5diff_402.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position target_dset2 softlink_dset1_1 difference ------------------------------------------------------------- -[ 0 1 ] 0 1 1 -[ 0 2 ] 0 2 2 -[ 0 3 ] 0 3 3 -[ 1 0 ] 0 1 1 -[ 1 1 ] 0 2 2 -[ 1 2 ] 0 3 3 -[ 1 3 ] 0 4 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_403.txt b/tools/h5diff/testfiles/h5diff_403.txt deleted file mode 100644 index 068d01d..0000000 --- a/tools/h5diff/testfiles/h5diff_403.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position softlink_dset1_1 softlink_dset2 difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 0 2 ] 2 0 2 -[ 0 3 ] 3 0 3 -[ 1 0 ] 1 0 1 -[ 1 1 ] 2 0 2 -[ 1 2 ] 3 0 3 -[ 1 3 ] 4 0 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_404.txt b/tools/h5diff/testfiles/h5diff_404.txt deleted file mode 100644 index db317d1..0000000 --- a/tools/h5diff/testfiles/h5diff_404.txt +++ /dev/null @@ -1,32 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /ext_link_dset1 - x x /ext_link_dset2 - x x /ext_link_grp1 - x x /ext_link_grp1/x_dset - x x /ext_link_grp2 - x x /ext_link_grp2/x_dset - x x /ext_link_noexist1 - x x /ext_link_noexist2 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dangling link: and -0 differences found -dangling link: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_405.txt b/tools/h5diff/testfiles/h5diff_405.txt deleted file mode 100644 index 890dd33..0000000 --- a/tools/h5diff/testfiles/h5diff_405.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position ext_link_dset1 x_dset difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 0 2 ] 2 0 2 -[ 0 3 ] 3 0 3 -[ 1 0 ] 1 0 1 -[ 1 1 ] 2 0 2 -[ 1 2 ] 3 0 3 -[ 1 3 ] 4 0 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_406.txt b/tools/h5diff/testfiles/h5diff_406.txt deleted file mode 100644 index 7fa442a..0000000 --- a/tools/h5diff/testfiles/h5diff_406.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position x_dset ext_link_dset1 difference ------------------------------------------------------------- -[ 0 1 ] 0 1 1 -[ 0 2 ] 0 2 2 -[ 0 3 ] 0 3 3 -[ 1 0 ] 0 1 1 -[ 1 1 ] 0 2 2 -[ 1 2 ] 0 3 3 -[ 1 3 ] 0 4 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_407.txt b/tools/h5diff/testfiles/h5diff_407.txt deleted file mode 100644 index 3693ab9..0000000 --- a/tools/h5diff/testfiles/h5diff_407.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position ext_link_dset1 ext_link_dset2 difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 0 2 ] 2 0 2 -[ 0 3 ] 3 0 3 -[ 1 0 ] 1 0 1 -[ 1 1 ] 2 0 2 -[ 1 2 ] 3 0 3 -[ 1 3 ] 4 0 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_408.txt b/tools/h5diff/testfiles/h5diff_408.txt deleted file mode 100644 index e941f9b..0000000 --- a/tools/h5diff/testfiles/h5diff_408.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position softlink_dset1_1 ext_link_dset2 difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 0 2 ] 2 0 2 -[ 0 3 ] 3 0 3 -[ 1 0 ] 1 0 1 -[ 1 1 ] 2 0 2 -[ 1 2 ] 3 0 3 -[ 1 3 ] 4 0 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_409.txt b/tools/h5diff/testfiles/h5diff_409.txt deleted file mode 100644 index 007da7d..0000000 --- a/tools/h5diff/testfiles/h5diff_409.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position ext_link_dset2 softlink_dset1_1 difference ------------------------------------------------------------- -[ 0 1 ] 0 1 1 -[ 0 2 ] 0 2 2 -[ 0 3 ] 0 3 3 -[ 1 0 ] 0 1 1 -[ 1 1 ] 0 2 2 -[ 1 2 ] 0 3 3 -[ 1 3 ] 0 4 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_410.txt b/tools/h5diff/testfiles/h5diff_410.txt deleted file mode 100644 index 6087bb8..0000000 --- a/tools/h5diff/testfiles/h5diff_410.txt +++ /dev/null @@ -1,62 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /softlink1_to_dset1 - x x /softlink1_to_slink1 - x x /softlink1_to_slink2 - x x /softlink2_to_dset2 - x x /softlink2_to_slink1 - x x /softlink2_to_slink2 - x x /softlink3_to_group1 - x x /softlink3_to_slink1 - x x /softlink3_to_slink2 - x x /softlink4_to_group2 - x x /softlink4_to_slink1 - x x /softlink4_to_slink2 - x x /target_dset1 - x x /target_dset2 - x x /target_group - x x /target_group/dset - x x /target_group1 - x x /target_group2 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -group : and -0 differences found -group : and -0 differences found -group : and -0 differences found -group : and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -group : and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_411.txt b/tools/h5diff/testfiles/h5diff_411.txt deleted file mode 100644 index 161ab34..0000000 --- a/tools/h5diff/testfiles/h5diff_411.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position target_dset2 softlink1_to_slink2 difference ------------------------------------------------------------- -[ 0 1 ] 0 1 1 -[ 0 2 ] 0 2 2 -[ 0 3 ] 0 3 3 -[ 1 0 ] 0 1 1 -[ 1 1 ] 0 2 2 -[ 1 2 ] 0 3 3 -[ 1 3 ] 0 4 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_412.txt b/tools/h5diff/testfiles/h5diff_412.txt deleted file mode 100644 index bb8209c..0000000 --- a/tools/h5diff/testfiles/h5diff_412.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position softlink1_to_slink2 target_dset2 difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 0 2 ] 2 0 2 -[ 0 3 ] 3 0 3 -[ 1 0 ] 1 0 1 -[ 1 1 ] 2 0 2 -[ 1 2 ] 3 0 3 -[ 1 3 ] 4 0 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_413.txt b/tools/h5diff/testfiles/h5diff_413.txt deleted file mode 100644 index 8df3d51..0000000 --- a/tools/h5diff/testfiles/h5diff_413.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position softlink1_to_slink2 softlink2_to_slink2 difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 0 2 ] 2 0 2 -[ 0 3 ] 3 0 3 -[ 1 0 ] 1 0 1 -[ 1 1 ] 2 0 2 -[ 1 2 ] 3 0 3 -[ 1 3 ] 4 0 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_414.txt b/tools/h5diff/testfiles/h5diff_414.txt deleted file mode 100644 index a47349e..0000000 --- a/tools/h5diff/testfiles/h5diff_414.txt +++ /dev/null @@ -1,9 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x /dset - -group : and -0 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_415.txt b/tools/h5diff/testfiles/h5diff_415.txt deleted file mode 100644 index 30cc947..0000000 --- a/tools/h5diff/testfiles/h5diff_415.txt +++ /dev/null @@ -1,9 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x /dset - -group : and -0 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_416.txt b/tools/h5diff/testfiles/h5diff_416.txt deleted file mode 100644 index 551a6c3..0000000 --- a/tools/h5diff/testfiles/h5diff_416.txt +++ /dev/null @@ -1,8 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - -group : and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_417.txt b/tools/h5diff/testfiles/h5diff_417.txt deleted file mode 100644 index 0ea2542..0000000 --- a/tools/h5diff/testfiles/h5diff_417.txt +++ /dev/null @@ -1,3 +0,0 @@ -obj1 is a dangling link. -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_418.txt b/tools/h5diff/testfiles/h5diff_418.txt deleted file mode 100644 index 46222bb..0000000 --- a/tools/h5diff/testfiles/h5diff_418.txt +++ /dev/null @@ -1,3 +0,0 @@ -obj2 is a dangling link. -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_419.txt b/tools/h5diff/testfiles/h5diff_419.txt deleted file mode 100644 index 387c600..0000000 --- a/tools/h5diff/testfiles/h5diff_419.txt +++ /dev/null @@ -1,3 +0,0 @@ -obj1 is a dangling link. -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_420.txt b/tools/h5diff/testfiles/h5diff_420.txt deleted file mode 100644 index f3e65d9..0000000 --- a/tools/h5diff/testfiles/h5diff_420.txt +++ /dev/null @@ -1,3 +0,0 @@ -obj2 is a dangling link. -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_421.txt b/tools/h5diff/testfiles/h5diff_421.txt deleted file mode 100644 index 833c60c..0000000 --- a/tools/h5diff/testfiles/h5diff_421.txt +++ /dev/null @@ -1,3 +0,0 @@ -obj2 is a dangling link. -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_422.txt b/tools/h5diff/testfiles/h5diff_422.txt deleted file mode 100644 index 3e675d5..0000000 --- a/tools/h5diff/testfiles/h5diff_422.txt +++ /dev/null @@ -1,3 +0,0 @@ -obj1 is a dangling link. -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_423.txt b/tools/h5diff/testfiles/h5diff_423.txt deleted file mode 100644 index 1ebc157..0000000 --- a/tools/h5diff/testfiles/h5diff_423.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position ext_link_to_slink1 dset2 difference ------------------------------------------------------------- -[ 0 1 ] 0 1 1 -[ 0 2 ] 0 2 2 -[ 0 3 ] 0 3 3 -[ 1 0 ] 0 1 1 -[ 1 1 ] 0 2 2 -[ 1 2 ] 0 3 3 -[ 1 3 ] 0 4 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_424.txt b/tools/h5diff/testfiles/h5diff_424.txt deleted file mode 100644 index 9099c41..0000000 --- a/tools/h5diff/testfiles/h5diff_424.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position dset2 ext_link_to_slink1 difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 0 2 ] 2 0 2 -[ 0 3 ] 3 0 3 -[ 1 0 ] 1 0 1 -[ 1 1 ] 2 0 2 -[ 1 2 ] 3 0 3 -[ 1 3 ] 4 0 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_425.txt b/tools/h5diff/testfiles/h5diff_425.txt deleted file mode 100644 index 03ceb78..0000000 --- a/tools/h5diff/testfiles/h5diff_425.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position ext_link_to_slink1 ext_link_to_slink2 difference ------------------------------------------------------------- -[ 0 1 ] 0 1 1 -[ 0 2 ] 0 2 2 -[ 0 3 ] 0 3 3 -[ 1 0 ] 0 1 1 -[ 1 1 ] 0 2 2 -[ 1 2 ] 0 3 3 -[ 1 3 ] 0 4 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_450.txt b/tools/h5diff/testfiles/h5diff_450.txt deleted file mode 100644 index a63d78f..0000000 --- a/tools/h5diff/testfiles/h5diff_450.txt +++ /dev/null @@ -1,38 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x x /dset2 - x x /ext_link1 - x x /ext_link2 - x x /ext_link3 - x x /ext_link4 - x x /soft_link1 - x x /soft_link2 - x x /soft_link3 - x x /soft_link4 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dangling link: and -0 differences found -obj2 is a dangling link. -1 differences found -obj1 is a dangling link. -1 differences found -dangling link: and -0 differences found -dangling link: and -0 differences found -obj2 is a dangling link. -1 differences found -obj1 is a dangling link. -1 differences found -dangling link: and -0 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_451.txt b/tools/h5diff/testfiles/h5diff_451.txt deleted file mode 100644 index fd0691f..0000000 --- a/tools/h5diff/testfiles/h5diff_451.txt +++ /dev/null @@ -1,30 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x x /dset2 - x x /ext_link1 - x x /ext_link2 - x x /ext_link3 - x x /ext_link4 - x x /soft_link1 - x x /soft_link2 - x x /soft_link3 - x x /soft_link4 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -Warning: is a dangling link. -Warning: is a dangling link. -Warning: is a dangling link. -Warning: is a dangling link. -Warning: is a dangling link. -Warning: is a dangling link. -Warning: is a dangling link. -Warning: is a dangling link. -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_452.txt b/tools/h5diff/testfiles/h5diff_452.txt deleted file mode 100644 index 05403af..0000000 --- a/tools/h5diff/testfiles/h5diff_452.txt +++ /dev/null @@ -1,2 +0,0 @@ -Error: --no-dangling-links must be used along with --follow-symlinks option. -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_453.txt b/tools/h5diff/testfiles/h5diff_453.txt deleted file mode 100644 index 8a5ca52..0000000 --- a/tools/h5diff/testfiles/h5diff_453.txt +++ /dev/null @@ -1,34 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /softlink_dset1_1 - x x /softlink_dset2 - x x /softlink_group1 - x x /softlink_group1/dset - x x /softlink_noexist - x x /target_dset1 - x x /target_dset2 - x x /target_group - x x /target_group/dset - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -Warning: is a dangling link. -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_454.txt b/tools/h5diff/testfiles/h5diff_454.txt deleted file mode 100644 index dcc2e9c..0000000 --- a/tools/h5diff/testfiles/h5diff_454.txt +++ /dev/null @@ -1,2 +0,0 @@ -Warning: is a dangling link. -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_455.txt b/tools/h5diff/testfiles/h5diff_455.txt deleted file mode 100644 index dcc2e9c..0000000 --- a/tools/h5diff/testfiles/h5diff_455.txt +++ /dev/null @@ -1,2 +0,0 @@ -Warning: is a dangling link. -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_456.txt b/tools/h5diff/testfiles/h5diff_456.txt deleted file mode 100644 index 9317988..0000000 --- a/tools/h5diff/testfiles/h5diff_456.txt +++ /dev/null @@ -1,30 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /ext_link_dset1 - x x /ext_link_dset2 - x x /ext_link_grp1 - x x /ext_link_grp1/x_dset - x x /ext_link_grp2 - x x /ext_link_grp2/x_dset - x x /ext_link_noexist1 - x x /ext_link_noexist2 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -Warning: is a dangling link. -Warning: is a dangling link. -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_457.txt b/tools/h5diff/testfiles/h5diff_457.txt deleted file mode 100644 index 762ccdc..0000000 --- a/tools/h5diff/testfiles/h5diff_457.txt +++ /dev/null @@ -1,2 +0,0 @@ -Warning: is a dangling link. -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_458.txt b/tools/h5diff/testfiles/h5diff_458.txt deleted file mode 100644 index 067d665..0000000 --- a/tools/h5diff/testfiles/h5diff_458.txt +++ /dev/null @@ -1,2 +0,0 @@ -Warning: is a dangling link. -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_459.txt b/tools/h5diff/testfiles/h5diff_459.txt deleted file mode 100644 index 762ccdc..0000000 --- a/tools/h5diff/testfiles/h5diff_459.txt +++ /dev/null @@ -1,2 +0,0 @@ -Warning: is a dangling link. -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_465.txt b/tools/h5diff/testfiles/h5diff_465.txt deleted file mode 100644 index eca5994..0000000 --- a/tools/h5diff/testfiles/h5diff_465.txt +++ /dev/null @@ -1 +0,0 @@ -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_466.txt b/tools/h5diff/testfiles/h5diff_466.txt deleted file mode 100644 index 3e00ca3..0000000 --- a/tools/h5diff/testfiles/h5diff_466.txt +++ /dev/null @@ -1,5 +0,0 @@ -obj1 is a dangling link. -obj2 is a dangling link. -dangling link: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_467.txt b/tools/h5diff/testfiles/h5diff_467.txt deleted file mode 100644 index f5195c0..0000000 --- a/tools/h5diff/testfiles/h5diff_467.txt +++ /dev/null @@ -1,3 +0,0 @@ -obj2 is a dangling link. -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_468.txt b/tools/h5diff/testfiles/h5diff_468.txt deleted file mode 100644 index 75b16c6..0000000 --- a/tools/h5diff/testfiles/h5diff_468.txt +++ /dev/null @@ -1,5 +0,0 @@ -obj1 is a dangling link. -obj2 is a dangling link. -dangling link: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_469.txt b/tools/h5diff/testfiles/h5diff_469.txt deleted file mode 100644 index 594fd80..0000000 --- a/tools/h5diff/testfiles/h5diff_469.txt +++ /dev/null @@ -1,3 +0,0 @@ -obj2 is a dangling link. -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_471.txt b/tools/h5diff/testfiles/h5diff_471.txt deleted file mode 100644 index 124cdd7..0000000 --- a/tools/h5diff/testfiles/h5diff_471.txt +++ /dev/null @@ -1,38 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x x /dset2 - x x /ext_link1 - x x /ext_link2 - x x /ext_link3 - x x /ext_link4 - x x /soft_link1 - x x /soft_link2 - x x /soft_link3 - x x /soft_link4 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -external link: and -1 differences found -external link: and -1 differences found -external link: and -1 differences found -external link: and -0 differences found -link : and -0 differences found -link : and -1 differences found -link : and -1 differences found -link : and -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_472.txt b/tools/h5diff/testfiles/h5diff_472.txt deleted file mode 100644 index 57a8af4..0000000 --- a/tools/h5diff/testfiles/h5diff_472.txt +++ /dev/null @@ -1,3 +0,0 @@ -link : and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_473.txt b/tools/h5diff/testfiles/h5diff_473.txt deleted file mode 100644 index 4c1855d..0000000 --- a/tools/h5diff/testfiles/h5diff_473.txt +++ /dev/null @@ -1,3 +0,0 @@ -link : and -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_474.txt b/tools/h5diff/testfiles/h5diff_474.txt deleted file mode 100644 index 7807551..0000000 --- a/tools/h5diff/testfiles/h5diff_474.txt +++ /dev/null @@ -1,3 +0,0 @@ -external link: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_475.txt b/tools/h5diff/testfiles/h5diff_475.txt deleted file mode 100644 index be6110e..0000000 --- a/tools/h5diff/testfiles/h5diff_475.txt +++ /dev/null @@ -1,3 +0,0 @@ -external link: and -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_480.txt b/tools/h5diff/testfiles/h5diff_480.txt deleted file mode 100644 index 3e1f900..0000000 --- a/tools/h5diff/testfiles/h5diff_480.txt +++ /dev/null @@ -1,17 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x x /group1 - x x /group1/dset2 - -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_481.txt b/tools/h5diff/testfiles/h5diff_481.txt deleted file mode 100644 index c4f2448..0000000 --- a/tools/h5diff/testfiles/h5diff_481.txt +++ /dev/null @@ -1,30 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x x /group1 - x x /group1/dset2 - x x /group1/dset3 - -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -size: [2x4] [2x4] -position dset3 dset3 difference ------------------------------------------------------------- -[ 0 1 ] 0 1 1 -[ 0 2 ] 0 2 2 -[ 0 3 ] 0 3 3 -[ 1 0 ] 0 1 1 -[ 1 1 ] 0 2 2 -[ 1 2 ] 0 3 3 -[ 1 3 ] 0 4 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_482.txt b/tools/h5diff/testfiles/h5diff_482.txt deleted file mode 100644 index 5b3c8c1..0000000 --- a/tools/h5diff/testfiles/h5diff_482.txt +++ /dev/null @@ -1,17 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset10 - x x /group10 - x x /group10/dset2 - -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_483.txt b/tools/h5diff/testfiles/h5diff_483.txt deleted file mode 100644 index a45e928..0000000 --- a/tools/h5diff/testfiles/h5diff_483.txt +++ /dev/null @@ -1,18 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x /dset1 - x x /dset10 - x x /group10 - x x /group10/dset2 - -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_484.txt b/tools/h5diff/testfiles/h5diff_484.txt deleted file mode 100644 index 87d9c7c..0000000 --- a/tools/h5diff/testfiles/h5diff_484.txt +++ /dev/null @@ -1,11 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /dset2 - -group : and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_485.txt b/tools/h5diff/testfiles/h5diff_485.txt deleted file mode 100644 index 4175809..0000000 --- a/tools/h5diff/testfiles/h5diff_485.txt +++ /dev/null @@ -1,11 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - -group : and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_486.txt b/tools/h5diff/testfiles/h5diff_486.txt deleted file mode 100644 index 4175809..0000000 --- a/tools/h5diff/testfiles/h5diff_486.txt +++ /dev/null @@ -1,11 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - -group : and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_487.txt b/tools/h5diff/testfiles/h5diff_487.txt deleted file mode 100644 index 8555a71..0000000 --- a/tools/h5diff/testfiles/h5diff_487.txt +++ /dev/null @@ -1,12 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x /group1 - -group : and -0 differences found -dataset: and -0 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_50.txt b/tools/h5diff/testfiles/h5diff_50.txt deleted file mode 100644 index 434b458..0000000 --- a/tools/h5diff/testfiles/h5diff_50.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -Warning: different storage datatype - has file datatype H5T_STD_I16LE - has file datatype H5T_STD_I32LE -size: [3x2] [3x2] -position dset0a dset0b difference ------------------------------------------------------------- -[ 1 0 ] 1 3 2 -[ 1 1 ] 1 4 3 -[ 2 0 ] 1 5 4 -[ 2 1 ] 1 6 5 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_500.txt b/tools/h5diff/testfiles/h5diff_500.txt deleted file mode 100644 index 7d688d2..0000000 --- a/tools/h5diff/testfiles/h5diff_500.txt +++ /dev/null @@ -1,72 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x x /dset2 - x x /dset3 - x x /elink_grp1 - x x /elink_grp2 - x x /elink_grp3 - x x /grp1 - x x /grp1/dset1 - x x /grp1/grp2 - x x /grp1/grp2/dset1 - x x /grp1/grp2/dset2 - x x /grp1/grp2/grp3 - x x /grp1/grp2/grp3/dset1 - x x /grp1/grp2/grp3/dset2 - x x /grp1/grp2/grp3/dset3 - x /grp10 - x /grp10/dset4 - x /grp10/dset5 - x /grp10/elink_grp_circle - x /grp11 - x /grp11/dset4 - x /grp11/dset5 - x /grp11/elink_grp_circle - x x /slink_grp1 - x /slink_grp10 - x /slink_grp11 - x x /slink_grp2 - x x /slink_grp3 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -external link: and -1 differences found -external link: and -1 differences found -external link: and -1 differences found -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -link : and -0 differences found -link : and -0 differences found -link : and -0 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_501.txt b/tools/h5diff/testfiles/h5diff_501.txt deleted file mode 100644 index 75e91da..0000000 --- a/tools/h5diff/testfiles/h5diff_501.txt +++ /dev/null @@ -1,188 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x x /dset2 - x x /dset3 - x x /elink_grp1 - x x /elink_grp1/dset1 - x x /elink_grp1/grp2 - x x /elink_grp1/grp2/dset1 - x x /elink_grp1/grp2/dset2 - x x /elink_grp1/grp2/grp3 - x x /elink_grp1/grp2/grp3/dset1 - x x /elink_grp1/grp2/grp3/dset2 - x x /elink_grp1/grp2/grp3/dset3 - x x /elink_grp2 - x x /elink_grp2/dset1 - x x /elink_grp2/dset2 - x x /elink_grp2/grp3 - x x /elink_grp2/grp3/dset1 - x x /elink_grp2/grp3/dset2 - x x /elink_grp2/grp3/dset3 - x x /elink_grp3 - x x /elink_grp3/dset1 - x x /elink_grp3/dset2 - x x /elink_grp3/dset3 - x x /grp1 - x x /grp1/dset1 - x x /grp1/grp2 - x x /grp1/grp2/dset1 - x x /grp1/grp2/dset2 - x x /grp1/grp2/grp3 - x x /grp1/grp2/grp3/dset1 - x x /grp1/grp2/grp3/dset2 - x x /grp1/grp2/grp3/dset3 - x /grp10 - x /grp10/dset4 - x /grp10/dset5 - x /grp10/elink_grp_circle - x /grp10/elink_grp_circle/dset4 - x /grp10/elink_grp_circle/dset5 - x /grp10/elink_grp_circle/elink_grp_circle - x /grp10/elink_grp_circle/elink_grp_circle/dset4 - x /grp10/elink_grp_circle/elink_grp_circle/dset5 - x /grp11 - x /grp11/dset4 - x /grp11/dset5 - x /grp11/elink_grp_circle - x /grp11/elink_grp_circle/dset4 - x /grp11/elink_grp_circle/dset5 - x /grp11/elink_grp_circle/elink_grp_circle - x /grp11/elink_grp_circle/elink_grp_circle/dset4 - x /grp11/elink_grp_circle/elink_grp_circle/dset5 - x x /slink_grp1 - x x /slink_grp1/dset1 - x x /slink_grp1/grp2 - x x /slink_grp1/grp2/dset1 - x x /slink_grp1/grp2/dset2 - x x /slink_grp1/grp2/grp3 - x x /slink_grp1/grp2/grp3/dset1 - x x /slink_grp1/grp2/grp3/dset2 - x x /slink_grp1/grp2/grp3/dset3 - x /slink_grp10 - x /slink_grp10/dset4 - x /slink_grp10/dset5 - x /slink_grp11 - x /slink_grp11/dset4 - x /slink_grp11/dset5 - x x /slink_grp2 - x x /slink_grp2/dset1 - x x /slink_grp2/dset2 - x x /slink_grp2/grp3 - x x /slink_grp2/grp3/dset1 - x x /slink_grp2/grp3/dset2 - x x /slink_grp2/grp3/dset3 - x x /slink_grp3 - x x /slink_grp3/dset1 - x x /slink_grp3/dset2 - x x /slink_grp3/dset3 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_502.txt b/tools/h5diff/testfiles/h5diff_502.txt deleted file mode 100644 index d3de6e5..0000000 --- a/tools/h5diff/testfiles/h5diff_502.txt +++ /dev/null @@ -1,36 +0,0 @@ - -group1 group2 ---------------------------------------- - x - x / - x x /dset1 - x x /dset2 - x x /dset3 - x /elink_grp1 - x /elink_grp2 - x /elink_grp3 - x /grp1 - x /grp1/dset1 - x /grp1/grp2 - x /grp1/grp2/dset1 - x /grp1/grp2/dset2 - x /grp1/grp2/grp3 - x /grp1/grp2/grp3/dset1 - x /grp1/grp2/grp3/dset2 - x /grp1/grp2/grp3/dset3 - x /grp10 - x /grp10/dset4 - x /grp10/dset5 - x /grp10/elink_grp_circle - x /slink_grp1 - x /slink_grp10 - x /slink_grp2 - x /slink_grp3 - -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_503.txt b/tools/h5diff/testfiles/h5diff_503.txt deleted file mode 100644 index cf01598..0000000 --- a/tools/h5diff/testfiles/h5diff_503.txt +++ /dev/null @@ -1,32 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /dset1 - x x /grp2 - x x /grp2/dset1 - x x /grp2/dset2 - x x /grp2/grp3 - x x /grp2/grp3/dset1 - x x /grp2/grp3/dset2 - x x /grp2/grp3/dset3 - -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_504.txt b/tools/h5diff/testfiles/h5diff_504.txt deleted file mode 100644 index 6cf43b3..0000000 --- a/tools/h5diff/testfiles/h5diff_504.txt +++ /dev/null @@ -1,19 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /dset1 - x x /dset2 - x /dset3 - x /grp3 - x /grp3/dset1 - x /grp3/dset2 - x /grp3/dset3 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_505.txt b/tools/h5diff/testfiles/h5diff_505.txt deleted file mode 100644 index 607b99b..0000000 --- a/tools/h5diff/testfiles/h5diff_505.txt +++ /dev/null @@ -1,6 +0,0 @@ -Not comparable: is of type H5G_GROUP and is of type H5G_LINK --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_506.txt b/tools/h5diff/testfiles/h5diff_506.txt deleted file mode 100644 index efef9a7..0000000 --- a/tools/h5diff/testfiles/h5diff_506.txt +++ /dev/null @@ -1,26 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /dset1 - x x /dset2 - x x /grp3 - x x /grp3/dset1 - x x /grp3/dset2 - x x /grp3/dset3 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_507.txt b/tools/h5diff/testfiles/h5diff_507.txt deleted file mode 100644 index 06b7fe6..0000000 --- a/tools/h5diff/testfiles/h5diff_507.txt +++ /dev/null @@ -1,6 +0,0 @@ -Not comparable: is of type H5G_GROUP and is of type H5G_UDLINK --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_508.txt b/tools/h5diff/testfiles/h5diff_508.txt deleted file mode 100644 index 9796345..0000000 --- a/tools/h5diff/testfiles/h5diff_508.txt +++ /dev/null @@ -1,32 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /dset1 - x x /grp2 - x x /grp2/dset1 - x x /grp2/dset2 - x x /grp2/grp3 - x x /grp2/grp3/dset1 - x x /grp2/grp3/dset2 - x x /grp2/grp3/dset3 - -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_509.txt b/tools/h5diff/testfiles/h5diff_509.txt deleted file mode 100644 index 2e3e87a..0000000 --- a/tools/h5diff/testfiles/h5diff_509.txt +++ /dev/null @@ -1,6 +0,0 @@ -Not comparable: is of type H5G_LINK and is of type H5G_UDLINK --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_51.txt b/tools/h5diff/testfiles/h5diff_51.txt deleted file mode 100644 index 621ba2a..0000000 --- a/tools/h5diff/testfiles/h5diff_51.txt +++ /dev/null @@ -1,10 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset1a dset1b difference ------------------------------------------------------------- -[ 1 0 ] 1 3 2 -[ 1 1 ] 1 4 3 -[ 2 0 ] 1 5 4 -[ 2 1 ] 1 6 5 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_510.txt b/tools/h5diff/testfiles/h5diff_510.txt deleted file mode 100644 index 9d92768..0000000 --- a/tools/h5diff/testfiles/h5diff_510.txt +++ /dev/null @@ -1,32 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /dset1 - x x /grp2 - x x /grp2/dset1 - x x /grp2/dset2 - x x /grp2/grp3 - x x /grp2/grp3/dset1 - x x /grp2/grp3/dset2 - x x /grp2/grp3/dset3 - -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_511.txt b/tools/h5diff/testfiles/h5diff_511.txt deleted file mode 100644 index 4bac100..0000000 --- a/tools/h5diff/testfiles/h5diff_511.txt +++ /dev/null @@ -1,24 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /dset4 - x x /dset5 - x x /elink_grp_circle - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -size: [2x4] [2x4] -position dset5 dset5 difference ------------------------------------------------------------- -[ 0 1 ] 3 2 1 -[ 0 3 ] 3 2 1 -[ 1 0 ] 3 2 1 -[ 1 2 ] 3 2 1 -4 differences found -external link: and -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_512.txt b/tools/h5diff/testfiles/h5diff_512.txt deleted file mode 100644 index 23fbc12..0000000 --- a/tools/h5diff/testfiles/h5diff_512.txt +++ /dev/null @@ -1,53 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /dset4 - x x /dset5 - x x /elink_grp_circle - x x /elink_grp_circle/dset4 - x x /elink_grp_circle/dset5 - x x /elink_grp_circle/elink_grp_circle - x x /elink_grp_circle/elink_grp_circle/dset4 - x x /elink_grp_circle/elink_grp_circle/dset5 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -size: [2x4] [2x4] -position dset5 dset5 difference ------------------------------------------------------------- -[ 0 1 ] 3 2 1 -[ 0 3 ] 3 2 1 -[ 1 0 ] 3 2 1 -[ 1 2 ] 3 2 1 -4 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -size: [2x4] [2x4] -position dset5 dset5 difference ------------------------------------------------------------- -[ 0 1 ] 2 3 1 -[ 0 3 ] 2 3 1 -[ 1 0 ] 2 3 1 -[ 1 2 ] 2 3 1 -4 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -size: [2x4] [2x4] -position dset5 dset5 difference ------------------------------------------------------------- -[ 0 1 ] 3 2 1 -[ 0 3 ] 3 2 1 -[ 1 0 ] 3 2 1 -[ 1 2 ] 3 2 1 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_513.txt b/tools/h5diff/testfiles/h5diff_513.txt deleted file mode 100644 index b0af15d..0000000 --- a/tools/h5diff/testfiles/h5diff_513.txt +++ /dev/null @@ -1,3 +0,0 @@ -link : and -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_514.txt b/tools/h5diff/testfiles/h5diff_514.txt deleted file mode 100644 index f8e16e9..0000000 --- a/tools/h5diff/testfiles/h5diff_514.txt +++ /dev/null @@ -1,53 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /dset4 - x x /dset5 - x x /elink_grp_circle - x x /elink_grp_circle/dset4 - x x /elink_grp_circle/dset5 - x x /elink_grp_circle/elink_grp_circle - x x /elink_grp_circle/elink_grp_circle/dset4 - x x /elink_grp_circle/elink_grp_circle/dset5 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -size: [2x4] [2x4] -position dset5 dset5 difference ------------------------------------------------------------- -[ 0 1 ] 3 2 1 -[ 0 3 ] 3 2 1 -[ 1 0 ] 3 2 1 -[ 1 2 ] 3 2 1 -4 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -size: [2x4] [2x4] -position dset5 dset5 difference ------------------------------------------------------------- -[ 0 1 ] 2 3 1 -[ 0 3 ] 2 3 1 -[ 1 0 ] 2 3 1 -[ 1 2 ] 2 3 1 -4 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -size: [2x4] [2x4] -position dset5 dset5 difference ------------------------------------------------------------- -[ 0 1 ] 3 2 1 -[ 0 3 ] 3 2 1 -[ 1 0 ] 3 2 1 -[ 1 2 ] 3 2 1 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_515.txt b/tools/h5diff/testfiles/h5diff_515.txt deleted file mode 100644 index 263441d..0000000 --- a/tools/h5diff/testfiles/h5diff_515.txt +++ /dev/null @@ -1,27 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x x /g1 - x x /g1/g2 - x /g1/g2/g3 - x /g1/g2/g3/dset1 - x /g1/g2/g3/g4 - x /g1/g2/g3/g4/dset2 - x x /soft_dset1 - -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -Not comparable: is of type H5G_GROUP and is of type H5G_UDLINK -link : and -0 differences found --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_516.txt b/tools/h5diff/testfiles/h5diff_516.txt deleted file mode 100644 index 32f4bd5..0000000 --- a/tools/h5diff/testfiles/h5diff_516.txt +++ /dev/null @@ -1,32 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x x /g1 - x x /g1/g2 - x x /g1/g2/g3 - x x /g1/g2/g3/dset1 - x x /g1/g2/g3/g4 - x x /g1/g2/g3/g4/dset2 - x x /soft_dset1 - -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -group : and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_517.txt b/tools/h5diff/testfiles/h5diff_517.txt deleted file mode 100644 index 91c69fb..0000000 --- a/tools/h5diff/testfiles/h5diff_517.txt +++ /dev/null @@ -1,18 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /g2 - x /g2/g3 - x /g2/g3/dset1 - x /g2/g3/g4 - x /g2/g3/g4/dset2 - -group : and -0 differences found -Not comparable: is of type H5G_GROUP and is of type H5G_UDLINK --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_518.txt b/tools/h5diff/testfiles/h5diff_518.txt deleted file mode 100644 index f4761ad..0000000 --- a/tools/h5diff/testfiles/h5diff_518.txt +++ /dev/null @@ -1,23 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /g2 - x x /g2/g3 - x x /g2/g3/dset1 - x x /g2/g3/g4 - x x /g2/g3/g4/dset2 - -group : and -0 differences found -group : and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_52.txt b/tools/h5diff/testfiles/h5diff_52.txt deleted file mode 100644 index 6667659..0000000 --- a/tools/h5diff/testfiles/h5diff_52.txt +++ /dev/null @@ -1,10 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset2a dset2b difference ------------------------------------------------------------- -[ 1 0 ] 1 3 2 -[ 1 1 ] 1 4 3 -[ 2 0 ] 1 5 4 -[ 2 1 ] 1 6 5 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_53.txt b/tools/h5diff/testfiles/h5diff_53.txt deleted file mode 100644 index 458d166..0000000 --- a/tools/h5diff/testfiles/h5diff_53.txt +++ /dev/null @@ -1,10 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset3a dset4b difference ------------------------------------------------------------- -[ 1 0 ] 1 3 2 -[ 1 1 ] 1 4 3 -[ 2 0 ] 1 5 4 -[ 2 1 ] 1 6 5 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_530.txt b/tools/h5diff/testfiles/h5diff_530.txt deleted file mode 100644 index 73d736e..0000000 --- a/tools/h5diff/testfiles/h5diff_530.txt +++ /dev/null @@ -1,35 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /Compound_dset1 - x x /Compound_dset2 - x x /Compound_dset3 - x x /Compound_dset4 - x x /Compound_dset5 - x x /Compound_dset6 - x x /Compound_dset7 - x x /Compound_dset8 - x x /Compound_dset9 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_54.txt b/tools/h5diff/testfiles/h5diff_54.txt deleted file mode 100644 index 2ca60f8..0000000 --- a/tools/h5diff/testfiles/h5diff_54.txt +++ /dev/null @@ -1,10 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset4a dset4b difference ------------------------------------------------------------- -[ 1 0 ] 1 3 2 -[ 1 1 ] 1 4 3 -[ 2 0 ] 1 5 4 -[ 2 1 ] 1 6 5 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_540.txt b/tools/h5diff/testfiles/h5diff_540.txt deleted file mode 100644 index a6903c8..0000000 --- a/tools/h5diff/testfiles/h5diff_540.txt +++ /dev/null @@ -1,86 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x x /dset2 - x x /dset3 - x x /dset4 - -group : and -0 differences found -attribute: > and > -size: [2] [2] -position attr1 of attr1 of difference ------------------------------------------------------------- -[ 0 ] 0 5 5 -[ 0 ] 0 5 5 -[ 0 ] 0 5 5 -[ 0 ] 0 5 5 -[ 1 ] 10 15 5 -[ 1 ] 10.5 15.5 5 -[ 1 ] 10 15 5 -[ 1 ] 10.5 15.5 5 -8 differences found -dataset: and -size: [2] [2] -position dset1 dset1 difference ------------------------------------------------------------- -[ 0 ] 0 5 5 -[ 0 ] 0 5 5 -[ 0 ] 0 5 5 -[ 0 ] 0 5 5 -[ 1 ] 10 15 5 -[ 1 ] 10.5 15.5 5 -[ 1 ] 10 15 5 -[ 1 ] 10.5 15.5 5 -8 differences found -dataset: and -size: [2] [2] -position dset2 dset2 difference ------------------------------------------------------------- -[ 0 ] 0 5 5 -[ 0 ] 0 5 5 -[ 1 ] 10 15 5 -[ 1 ] 10.5 15.5 5 -[ 1 ] 10 15 5 -[ 1 ] 10.5 15.5 5 -6 differences found -dataset: and -size: [2] [2] -position dset3 dset3 difference ------------------------------------------------------------- -[ 0 ] 0 5 5 -[ 0 ] 0 5 5 -[ 0 ] 10 15 5 -[ 0 ] 10.5 15.5 5 -[ 0 ] 10 15 5 -[ 0 ] 10.5 15.5 5 -[ 1 ] 0 5 5 -[ 1 ] 0 5 5 -[ 1 ] 10 15 5 -[ 1 ] 10.5 15.5 5 -[ 1 ] 10 15 5 -[ 1 ] 10.5 15.5 5 -12 differences found -dataset: and -size: [2] [2] -position dset4 dset4 difference ------------------------------------------------------------- -[ 0 ] 0 5 5 -[ 0 ] 0 5 5 -[ 0 ] 0 5 5 -[ 0 ] 10 15 5 -[ 0 ] 10.5 15.5 5 -[ 1 ] 10 15 5 -[ 1 ] 0 5 5 -[ 1 ] 0 5 5 -[ 1 ] 10 15 5 -[ 1 ] 10.5 15.5 5 -[ 1 ] 10 15 5 -[ 1 ] 0 5 5 -[ 1 ] 0 5 5 -[ 1 ] 10 15 5 -[ 1 ] 10.5 15.5 5 -15 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_55.txt b/tools/h5diff/testfiles/h5diff_55.txt deleted file mode 100644 index 1288887..0000000 --- a/tools/h5diff/testfiles/h5diff_55.txt +++ /dev/null @@ -1,10 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset5a dset5b difference ------------------------------------------------------------- -[ 1 0 ] 1 3 2 -[ 1 1 ] 1 4 3 -[ 2 0 ] 1 5 4 -[ 2 1 ] 1 6 5 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_56.txt b/tools/h5diff/testfiles/h5diff_56.txt deleted file mode 100644 index 0e82860..0000000 --- a/tools/h5diff/testfiles/h5diff_56.txt +++ /dev/null @@ -1,10 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset6a dset6b difference ------------------------------------------------------------- -[ 1 0 ] 1 3 2 -[ 1 1 ] 1 4 3 -[ 2 0 ] 1 5 4 -[ 2 1 ] 1 6 5 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_57.txt b/tools/h5diff/testfiles/h5diff_57.txt deleted file mode 100644 index d5125fe..0000000 --- a/tools/h5diff/testfiles/h5diff_57.txt +++ /dev/null @@ -1,11 +0,0 @@ -dataset: and -Warning: different storage datatype - has file datatype H5T_STD_I8LE - has file datatype H5T_STD_U8LE -Not comparable: has sign H5T_SGN_2 and has sign H5T_SGN_NONE -0 differences found --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_58.txt b/tools/h5diff/testfiles/h5diff_58.txt deleted file mode 100644 index 768dd97..0000000 --- a/tools/h5diff/testfiles/h5diff_58.txt +++ /dev/null @@ -1,11 +0,0 @@ -dataset: and -Referenced dataset 10720 10720 ------------------------------------------------------------- -Region blocks -block #0 (2,2)-(7,7) (0,0)-(2,2) -Region points -point #1 (2,2) (3,3) -point #3 (1,6) (2,5) -point #4 (2,8) (1,7) -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_59.txt b/tools/h5diff/testfiles/h5diff_59.txt deleted file mode 100644 index 996a7b2..0000000 --- a/tools/h5diff/testfiles/h5diff_59.txt +++ /dev/null @@ -1,11 +0,0 @@ -dataset: and -Warning: different storage datatype - has file datatype H5T_STD_U16LE - has file datatype H5T_STD_U32LE -0 differences found -Warning: different storage datatype - has file datatype H5T_STD_U16LE - has file datatype H5T_STD_U32LE -attribute: > and > -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_600.txt b/tools/h5diff/testfiles/h5diff_600.txt deleted file mode 100644 index 3c3ad9f..0000000 --- a/tools/h5diff/testfiles/h5diff_600.txt +++ /dev/null @@ -1,141 +0,0 @@ -usage: h5diff [OPTIONS] file1 file2 [obj1[ obj2]] - file1 File name of the first HDF5 file - file2 File name of the second HDF5 file - [obj1] Name of an HDF5 object, in absolute path - [obj2] Name of an HDF5 object, in absolute path - - OPTIONS - -h, --help - Print a usage message and exit. - -V, --version - Print version number and exit. - -r, --report - Report mode. Print differences. - -v --verbose - Verbose mode. Print differences information and list of objects. - -vN --verbose=N - Verbose mode with level. Print differences and list of objects. - Level of detail depends on value of N: - 0 : Identical to '-v' or '--verbose'. - 1 : All level 0 information plus one-line attribute - status summary. - 2 : All level 1 information plus extended attribute - status report. - -q, --quiet - Quiet mode. Do not produce output. - --follow-symlinks - Follow symbolic links (soft links and external links and compare the) - links' target objects. - If symbolic link(s) with the same name exist in the files being - compared, then determine whether the target of each link is an existing - object (dataset, group, or named datatype) or the link is a dangling - link (a soft or external link pointing to a target object that does - not yet exist). - - If both symbolic links are dangling links, they are treated as being - the same; by default, h5diff returns an exit code of 0. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If only one of the two links is a dangling link,they are treated as - being different and h5diff returns an exit code of 1. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If both symbolic links point to existing objects, h5diff compares the - two objects. - If any symbolic link specified in the call to h5diff does not exist, - h5diff treats it as an error and returns an exit code of 2. - --no-dangling-links - Must be used with --follow-symlinks option; otherwise, h5diff shows - error message and returns an exit code of 2. - Check for any symbolic links (soft links or external links) that do not - resolve to an existing object (dataset, group, or named datatype). - If any dangling link is found, this situation is treated as an error - and h5diff returns an exit code of 2. - -c, --compare - List objects that are not comparable - -N, --nan - Avoid NaNs detection - -n C, --count=C - Print differences up to C. C must be a positive integer. - -d D, --delta=D - Print difference if (|a-b| > D). D must be a positive number. - Can not use with '-p' or '--use-system-epsilon'. - -p R, --relative=R - Print difference if (|(a-b)/b| > R). R must be a positive number. - Can not use with '-d' or '--use-system-epsilon'. - --use-system-epsilon - Print difference if (|a-b| > EPSILON), EPSILON is system defined value. - If the system epsilon is not defined,one of the following predefined - values will be used: - FLT_EPSILON = 1.19209E-07 for floating-point type - DBL_EPSILON = 2.22045E-16 for double precision type - Can not use with '-p' or '-d'. - --exclude-path "path" - Exclude the specified path to an object when comparing files or groups. - If a group is excluded, all member objects will also be excluded. - The specified path is excluded wherever it occurs. - This flexibility enables the same option to exclude either objects that - exist only in one file or common objects that are known to differ. - - When comparing files, "path" is the absolute path to the excluded; - object; when comparing groups, "path" is similar to the relative - path from the group to the excluded object. This "path" can be - taken from the first section of the output of the --verbose option. - For example, if you are comparing the group /groupA in two files and - you want to exclude /groupA/groupB/groupC in both files, the exclude - option would read as follows: - --exclude-path "/groupB/groupC" - - If there are multiple paths to an object, only the specified path(s) - will be excluded; the comparison will include any path not explicitly - excluded. - This option can be used repeatedly to exclude multiple paths. - - Modes of output: - Default mode: print the number of differences found and where they occured - -r Report mode: print the above plus the differences - -v Verbose mode: print the above plus a list of objects and warnings - -q Quiet mode: do not print output - - File comparison: - If no objects [obj1[ obj2]] are specified, the h5diff comparison proceeds as - a comparison of the two files' root groups. That is, h5diff first compares - the names of root group members, generates a report of root group objects - that appear in only one file or in both files, and recursively compares - common objects. - - Object comparison: - 1) Groups - First compares the names of member objects (relative path, from the - specified group) and generates a report of objects that appear in only - one group or in both groups. Common objects are then compared recursively. - 2) Datasets - Array rank and dimensions, datatypes, and data values are compared. - 3) Datatypes - The comparison is based on the return value of H5Tequal. - 4) Symbolic links - The paths to the target objects are compared. - (The option --follow-symlinks overrides the default behavior when - symbolic links are compared.). - - Exit code: - 0 if no differences, 1 if differences found, 2 if error - - Examples of use: - 1) h5diff file1 file2 /g1/dset1 /g1/dset2 - Compares object '/g1/dset1' in file1 with '/g1/dset2' in file2 - - 2) h5diff file1 file2 /g1/dset1 - Compares object '/g1/dset1' in both files - - 3) h5diff file1 file2 - Compares all objects in both files - - Notes: - file1 and file2 can be the same file. - Use h5diff file1 file1 /g1/dset1 /g1/dset2 to compare - '/g1/dset1' and '/g1/dset2' in the same file - -h5diff error: missing file names -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_601.txt b/tools/h5diff/testfiles/h5diff_601.txt deleted file mode 100644 index eb12f38..0000000 --- a/tools/h5diff/testfiles/h5diff_601.txt +++ /dev/null @@ -1,2 +0,0 @@ -Object could not be found in -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_603.txt b/tools/h5diff/testfiles/h5diff_603.txt deleted file mode 100644 index 087764a..0000000 --- a/tools/h5diff/testfiles/h5diff_603.txt +++ /dev/null @@ -1,141 +0,0 @@ -<-d -4> is not a valid option -usage: h5diff [OPTIONS] file1 file2 [obj1[ obj2]] - file1 File name of the first HDF5 file - file2 File name of the second HDF5 file - [obj1] Name of an HDF5 object, in absolute path - [obj2] Name of an HDF5 object, in absolute path - - OPTIONS - -h, --help - Print a usage message and exit. - -V, --version - Print version number and exit. - -r, --report - Report mode. Print differences. - -v --verbose - Verbose mode. Print differences information and list of objects. - -vN --verbose=N - Verbose mode with level. Print differences and list of objects. - Level of detail depends on value of N: - 0 : Identical to '-v' or '--verbose'. - 1 : All level 0 information plus one-line attribute - status summary. - 2 : All level 1 information plus extended attribute - status report. - -q, --quiet - Quiet mode. Do not produce output. - --follow-symlinks - Follow symbolic links (soft links and external links and compare the) - links' target objects. - If symbolic link(s) with the same name exist in the files being - compared, then determine whether the target of each link is an existing - object (dataset, group, or named datatype) or the link is a dangling - link (a soft or external link pointing to a target object that does - not yet exist). - - If both symbolic links are dangling links, they are treated as being - the same; by default, h5diff returns an exit code of 0. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If only one of the two links is a dangling link,they are treated as - being different and h5diff returns an exit code of 1. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If both symbolic links point to existing objects, h5diff compares the - two objects. - If any symbolic link specified in the call to h5diff does not exist, - h5diff treats it as an error and returns an exit code of 2. - --no-dangling-links - Must be used with --follow-symlinks option; otherwise, h5diff shows - error message and returns an exit code of 2. - Check for any symbolic links (soft links or external links) that do not - resolve to an existing object (dataset, group, or named datatype). - If any dangling link is found, this situation is treated as an error - and h5diff returns an exit code of 2. - -c, --compare - List objects that are not comparable - -N, --nan - Avoid NaNs detection - -n C, --count=C - Print differences up to C. C must be a positive integer. - -d D, --delta=D - Print difference if (|a-b| > D). D must be a positive number. - Can not use with '-p' or '--use-system-epsilon'. - -p R, --relative=R - Print difference if (|(a-b)/b| > R). R must be a positive number. - Can not use with '-d' or '--use-system-epsilon'. - --use-system-epsilon - Print difference if (|a-b| > EPSILON), EPSILON is system defined value. - If the system epsilon is not defined,one of the following predefined - values will be used: - FLT_EPSILON = 1.19209E-07 for floating-point type - DBL_EPSILON = 2.22045E-16 for double precision type - Can not use with '-p' or '-d'. - --exclude-path "path" - Exclude the specified path to an object when comparing files or groups. - If a group is excluded, all member objects will also be excluded. - The specified path is excluded wherever it occurs. - This flexibility enables the same option to exclude either objects that - exist only in one file or common objects that are known to differ. - - When comparing files, "path" is the absolute path to the excluded; - object; when comparing groups, "path" is similar to the relative - path from the group to the excluded object. This "path" can be - taken from the first section of the output of the --verbose option. - For example, if you are comparing the group /groupA in two files and - you want to exclude /groupA/groupB/groupC in both files, the exclude - option would read as follows: - --exclude-path "/groupB/groupC" - - If there are multiple paths to an object, only the specified path(s) - will be excluded; the comparison will include any path not explicitly - excluded. - This option can be used repeatedly to exclude multiple paths. - - Modes of output: - Default mode: print the number of differences found and where they occured - -r Report mode: print the above plus the differences - -v Verbose mode: print the above plus a list of objects and warnings - -q Quiet mode: do not print output - - File comparison: - If no objects [obj1[ obj2]] are specified, the h5diff comparison proceeds as - a comparison of the two files' root groups. That is, h5diff first compares - the names of root group members, generates a report of root group objects - that appear in only one file or in both files, and recursively compares - common objects. - - Object comparison: - 1) Groups - First compares the names of member objects (relative path, from the - specified group) and generates a report of objects that appear in only - one group or in both groups. Common objects are then compared recursively. - 2) Datasets - Array rank and dimensions, datatypes, and data values are compared. - 3) Datatypes - The comparison is based on the return value of H5Tequal. - 4) Symbolic links - The paths to the target objects are compared. - (The option --follow-symlinks overrides the default behavior when - symbolic links are compared.). - - Exit code: - 0 if no differences, 1 if differences found, 2 if error - - Examples of use: - 1) h5diff file1 file2 /g1/dset1 /g1/dset2 - Compares object '/g1/dset1' in file1 with '/g1/dset2' in file2 - - 2) h5diff file1 file2 /g1/dset1 - Compares object '/g1/dset1' in both files - - 3) h5diff file1 file2 - Compares all objects in both files - - Notes: - file1 and file2 can be the same file. - Use h5diff file1 file1 /g1/dset1 /g1/dset2 to compare - '/g1/dset1' and '/g1/dset2' in the same file - -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_604.txt b/tools/h5diff/testfiles/h5diff_604.txt deleted file mode 100644 index db14532..0000000 --- a/tools/h5diff/testfiles/h5diff_604.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -6 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_605.txt b/tools/h5diff/testfiles/h5diff_605.txt deleted file mode 100644 index db14532..0000000 --- a/tools/h5diff/testfiles/h5diff_605.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -6 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_606.txt b/tools/h5diff/testfiles/h5diff_606.txt deleted file mode 100644 index c31a67e..0000000 --- a/tools/h5diff/testfiles/h5diff_606.txt +++ /dev/null @@ -1,141 +0,0 @@ -<-d 0x1> is not a valid option -usage: h5diff [OPTIONS] file1 file2 [obj1[ obj2]] - file1 File name of the first HDF5 file - file2 File name of the second HDF5 file - [obj1] Name of an HDF5 object, in absolute path - [obj2] Name of an HDF5 object, in absolute path - - OPTIONS - -h, --help - Print a usage message and exit. - -V, --version - Print version number and exit. - -r, --report - Report mode. Print differences. - -v --verbose - Verbose mode. Print differences information and list of objects. - -vN --verbose=N - Verbose mode with level. Print differences and list of objects. - Level of detail depends on value of N: - 0 : Identical to '-v' or '--verbose'. - 1 : All level 0 information plus one-line attribute - status summary. - 2 : All level 1 information plus extended attribute - status report. - -q, --quiet - Quiet mode. Do not produce output. - --follow-symlinks - Follow symbolic links (soft links and external links and compare the) - links' target objects. - If symbolic link(s) with the same name exist in the files being - compared, then determine whether the target of each link is an existing - object (dataset, group, or named datatype) or the link is a dangling - link (a soft or external link pointing to a target object that does - not yet exist). - - If both symbolic links are dangling links, they are treated as being - the same; by default, h5diff returns an exit code of 0. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If only one of the two links is a dangling link,they are treated as - being different and h5diff returns an exit code of 1. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If both symbolic links point to existing objects, h5diff compares the - two objects. - If any symbolic link specified in the call to h5diff does not exist, - h5diff treats it as an error and returns an exit code of 2. - --no-dangling-links - Must be used with --follow-symlinks option; otherwise, h5diff shows - error message and returns an exit code of 2. - Check for any symbolic links (soft links or external links) that do not - resolve to an existing object (dataset, group, or named datatype). - If any dangling link is found, this situation is treated as an error - and h5diff returns an exit code of 2. - -c, --compare - List objects that are not comparable - -N, --nan - Avoid NaNs detection - -n C, --count=C - Print differences up to C. C must be a positive integer. - -d D, --delta=D - Print difference if (|a-b| > D). D must be a positive number. - Can not use with '-p' or '--use-system-epsilon'. - -p R, --relative=R - Print difference if (|(a-b)/b| > R). R must be a positive number. - Can not use with '-d' or '--use-system-epsilon'. - --use-system-epsilon - Print difference if (|a-b| > EPSILON), EPSILON is system defined value. - If the system epsilon is not defined,one of the following predefined - values will be used: - FLT_EPSILON = 1.19209E-07 for floating-point type - DBL_EPSILON = 2.22045E-16 for double precision type - Can not use with '-p' or '-d'. - --exclude-path "path" - Exclude the specified path to an object when comparing files or groups. - If a group is excluded, all member objects will also be excluded. - The specified path is excluded wherever it occurs. - This flexibility enables the same option to exclude either objects that - exist only in one file or common objects that are known to differ. - - When comparing files, "path" is the absolute path to the excluded; - object; when comparing groups, "path" is similar to the relative - path from the group to the excluded object. This "path" can be - taken from the first section of the output of the --verbose option. - For example, if you are comparing the group /groupA in two files and - you want to exclude /groupA/groupB/groupC in both files, the exclude - option would read as follows: - --exclude-path "/groupB/groupC" - - If there are multiple paths to an object, only the specified path(s) - will be excluded; the comparison will include any path not explicitly - excluded. - This option can be used repeatedly to exclude multiple paths. - - Modes of output: - Default mode: print the number of differences found and where they occured - -r Report mode: print the above plus the differences - -v Verbose mode: print the above plus a list of objects and warnings - -q Quiet mode: do not print output - - File comparison: - If no objects [obj1[ obj2]] are specified, the h5diff comparison proceeds as - a comparison of the two files' root groups. That is, h5diff first compares - the names of root group members, generates a report of root group objects - that appear in only one file or in both files, and recursively compares - common objects. - - Object comparison: - 1) Groups - First compares the names of member objects (relative path, from the - specified group) and generates a report of objects that appear in only - one group or in both groups. Common objects are then compared recursively. - 2) Datasets - Array rank and dimensions, datatypes, and data values are compared. - 3) Datatypes - The comparison is based on the return value of H5Tequal. - 4) Symbolic links - The paths to the target objects are compared. - (The option --follow-symlinks overrides the default behavior when - symbolic links are compared.). - - Exit code: - 0 if no differences, 1 if differences found, 2 if error - - Examples of use: - 1) h5diff file1 file2 /g1/dset1 /g1/dset2 - Compares object '/g1/dset1' in file1 with '/g1/dset2' in file2 - - 2) h5diff file1 file2 /g1/dset1 - Compares object '/g1/dset1' in both files - - 3) h5diff file1 file2 - Compares all objects in both files - - Notes: - file1 and file2 can be the same file. - Use h5diff file1 file1 /g1/dset1 /g1/dset2 to compare - '/g1/dset1' and '/g1/dset2' in the same file - -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_607.txt b/tools/h5diff/testfiles/h5diff_607.txt deleted file mode 100644 index db14532..0000000 --- a/tools/h5diff/testfiles/h5diff_607.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -6 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_608.txt b/tools/h5diff/testfiles/h5diff_608.txt deleted file mode 100644 index db14532..0000000 --- a/tools/h5diff/testfiles/h5diff_608.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -6 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_609.txt b/tools/h5diff/testfiles/h5diff_609.txt deleted file mode 100644 index eca5994..0000000 --- a/tools/h5diff/testfiles/h5diff_609.txt +++ /dev/null @@ -1 +0,0 @@ -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_610.txt b/tools/h5diff/testfiles/h5diff_610.txt deleted file mode 100644 index db14532..0000000 --- a/tools/h5diff/testfiles/h5diff_610.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -6 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_612.txt b/tools/h5diff/testfiles/h5diff_612.txt deleted file mode 100644 index 05318bd..0000000 --- a/tools/h5diff/testfiles/h5diff_612.txt +++ /dev/null @@ -1,141 +0,0 @@ -<-p -4> is not a valid option -usage: h5diff [OPTIONS] file1 file2 [obj1[ obj2]] - file1 File name of the first HDF5 file - file2 File name of the second HDF5 file - [obj1] Name of an HDF5 object, in absolute path - [obj2] Name of an HDF5 object, in absolute path - - OPTIONS - -h, --help - Print a usage message and exit. - -V, --version - Print version number and exit. - -r, --report - Report mode. Print differences. - -v --verbose - Verbose mode. Print differences information and list of objects. - -vN --verbose=N - Verbose mode with level. Print differences and list of objects. - Level of detail depends on value of N: - 0 : Identical to '-v' or '--verbose'. - 1 : All level 0 information plus one-line attribute - status summary. - 2 : All level 1 information plus extended attribute - status report. - -q, --quiet - Quiet mode. Do not produce output. - --follow-symlinks - Follow symbolic links (soft links and external links and compare the) - links' target objects. - If symbolic link(s) with the same name exist in the files being - compared, then determine whether the target of each link is an existing - object (dataset, group, or named datatype) or the link is a dangling - link (a soft or external link pointing to a target object that does - not yet exist). - - If both symbolic links are dangling links, they are treated as being - the same; by default, h5diff returns an exit code of 0. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If only one of the two links is a dangling link,they are treated as - being different and h5diff returns an exit code of 1. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If both symbolic links point to existing objects, h5diff compares the - two objects. - If any symbolic link specified in the call to h5diff does not exist, - h5diff treats it as an error and returns an exit code of 2. - --no-dangling-links - Must be used with --follow-symlinks option; otherwise, h5diff shows - error message and returns an exit code of 2. - Check for any symbolic links (soft links or external links) that do not - resolve to an existing object (dataset, group, or named datatype). - If any dangling link is found, this situation is treated as an error - and h5diff returns an exit code of 2. - -c, --compare - List objects that are not comparable - -N, --nan - Avoid NaNs detection - -n C, --count=C - Print differences up to C. C must be a positive integer. - -d D, --delta=D - Print difference if (|a-b| > D). D must be a positive number. - Can not use with '-p' or '--use-system-epsilon'. - -p R, --relative=R - Print difference if (|(a-b)/b| > R). R must be a positive number. - Can not use with '-d' or '--use-system-epsilon'. - --use-system-epsilon - Print difference if (|a-b| > EPSILON), EPSILON is system defined value. - If the system epsilon is not defined,one of the following predefined - values will be used: - FLT_EPSILON = 1.19209E-07 for floating-point type - DBL_EPSILON = 2.22045E-16 for double precision type - Can not use with '-p' or '-d'. - --exclude-path "path" - Exclude the specified path to an object when comparing files or groups. - If a group is excluded, all member objects will also be excluded. - The specified path is excluded wherever it occurs. - This flexibility enables the same option to exclude either objects that - exist only in one file or common objects that are known to differ. - - When comparing files, "path" is the absolute path to the excluded; - object; when comparing groups, "path" is similar to the relative - path from the group to the excluded object. This "path" can be - taken from the first section of the output of the --verbose option. - For example, if you are comparing the group /groupA in two files and - you want to exclude /groupA/groupB/groupC in both files, the exclude - option would read as follows: - --exclude-path "/groupB/groupC" - - If there are multiple paths to an object, only the specified path(s) - will be excluded; the comparison will include any path not explicitly - excluded. - This option can be used repeatedly to exclude multiple paths. - - Modes of output: - Default mode: print the number of differences found and where they occured - -r Report mode: print the above plus the differences - -v Verbose mode: print the above plus a list of objects and warnings - -q Quiet mode: do not print output - - File comparison: - If no objects [obj1[ obj2]] are specified, the h5diff comparison proceeds as - a comparison of the two files' root groups. That is, h5diff first compares - the names of root group members, generates a report of root group objects - that appear in only one file or in both files, and recursively compares - common objects. - - Object comparison: - 1) Groups - First compares the names of member objects (relative path, from the - specified group) and generates a report of objects that appear in only - one group or in both groups. Common objects are then compared recursively. - 2) Datasets - Array rank and dimensions, datatypes, and data values are compared. - 3) Datatypes - The comparison is based on the return value of H5Tequal. - 4) Symbolic links - The paths to the target objects are compared. - (The option --follow-symlinks overrides the default behavior when - symbolic links are compared.). - - Exit code: - 0 if no differences, 1 if differences found, 2 if error - - Examples of use: - 1) h5diff file1 file2 /g1/dset1 /g1/dset2 - Compares object '/g1/dset1' in file1 with '/g1/dset2' in file2 - - 2) h5diff file1 file2 /g1/dset1 - Compares object '/g1/dset1' in both files - - 3) h5diff file1 file2 - Compares all objects in both files - - Notes: - file1 and file2 can be the same file. - Use h5diff file1 file1 /g1/dset1 /g1/dset2 to compare - '/g1/dset1' and '/g1/dset2' in the same file - -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_613.txt b/tools/h5diff/testfiles/h5diff_613.txt deleted file mode 100644 index db14532..0000000 --- a/tools/h5diff/testfiles/h5diff_613.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -6 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_614.txt b/tools/h5diff/testfiles/h5diff_614.txt deleted file mode 100644 index db14532..0000000 --- a/tools/h5diff/testfiles/h5diff_614.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -6 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_615.txt b/tools/h5diff/testfiles/h5diff_615.txt deleted file mode 100644 index fd756b3..0000000 --- a/tools/h5diff/testfiles/h5diff_615.txt +++ /dev/null @@ -1,141 +0,0 @@ -<-p 0x1> is not a valid option -usage: h5diff [OPTIONS] file1 file2 [obj1[ obj2]] - file1 File name of the first HDF5 file - file2 File name of the second HDF5 file - [obj1] Name of an HDF5 object, in absolute path - [obj2] Name of an HDF5 object, in absolute path - - OPTIONS - -h, --help - Print a usage message and exit. - -V, --version - Print version number and exit. - -r, --report - Report mode. Print differences. - -v --verbose - Verbose mode. Print differences information and list of objects. - -vN --verbose=N - Verbose mode with level. Print differences and list of objects. - Level of detail depends on value of N: - 0 : Identical to '-v' or '--verbose'. - 1 : All level 0 information plus one-line attribute - status summary. - 2 : All level 1 information plus extended attribute - status report. - -q, --quiet - Quiet mode. Do not produce output. - --follow-symlinks - Follow symbolic links (soft links and external links and compare the) - links' target objects. - If symbolic link(s) with the same name exist in the files being - compared, then determine whether the target of each link is an existing - object (dataset, group, or named datatype) or the link is a dangling - link (a soft or external link pointing to a target object that does - not yet exist). - - If both symbolic links are dangling links, they are treated as being - the same; by default, h5diff returns an exit code of 0. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If only one of the two links is a dangling link,they are treated as - being different and h5diff returns an exit code of 1. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If both symbolic links point to existing objects, h5diff compares the - two objects. - If any symbolic link specified in the call to h5diff does not exist, - h5diff treats it as an error and returns an exit code of 2. - --no-dangling-links - Must be used with --follow-symlinks option; otherwise, h5diff shows - error message and returns an exit code of 2. - Check for any symbolic links (soft links or external links) that do not - resolve to an existing object (dataset, group, or named datatype). - If any dangling link is found, this situation is treated as an error - and h5diff returns an exit code of 2. - -c, --compare - List objects that are not comparable - -N, --nan - Avoid NaNs detection - -n C, --count=C - Print differences up to C. C must be a positive integer. - -d D, --delta=D - Print difference if (|a-b| > D). D must be a positive number. - Can not use with '-p' or '--use-system-epsilon'. - -p R, --relative=R - Print difference if (|(a-b)/b| > R). R must be a positive number. - Can not use with '-d' or '--use-system-epsilon'. - --use-system-epsilon - Print difference if (|a-b| > EPSILON), EPSILON is system defined value. - If the system epsilon is not defined,one of the following predefined - values will be used: - FLT_EPSILON = 1.19209E-07 for floating-point type - DBL_EPSILON = 2.22045E-16 for double precision type - Can not use with '-p' or '-d'. - --exclude-path "path" - Exclude the specified path to an object when comparing files or groups. - If a group is excluded, all member objects will also be excluded. - The specified path is excluded wherever it occurs. - This flexibility enables the same option to exclude either objects that - exist only in one file or common objects that are known to differ. - - When comparing files, "path" is the absolute path to the excluded; - object; when comparing groups, "path" is similar to the relative - path from the group to the excluded object. This "path" can be - taken from the first section of the output of the --verbose option. - For example, if you are comparing the group /groupA in two files and - you want to exclude /groupA/groupB/groupC in both files, the exclude - option would read as follows: - --exclude-path "/groupB/groupC" - - If there are multiple paths to an object, only the specified path(s) - will be excluded; the comparison will include any path not explicitly - excluded. - This option can be used repeatedly to exclude multiple paths. - - Modes of output: - Default mode: print the number of differences found and where they occured - -r Report mode: print the above plus the differences - -v Verbose mode: print the above plus a list of objects and warnings - -q Quiet mode: do not print output - - File comparison: - If no objects [obj1[ obj2]] are specified, the h5diff comparison proceeds as - a comparison of the two files' root groups. That is, h5diff first compares - the names of root group members, generates a report of root group objects - that appear in only one file or in both files, and recursively compares - common objects. - - Object comparison: - 1) Groups - First compares the names of member objects (relative path, from the - specified group) and generates a report of objects that appear in only - one group or in both groups. Common objects are then compared recursively. - 2) Datasets - Array rank and dimensions, datatypes, and data values are compared. - 3) Datatypes - The comparison is based on the return value of H5Tequal. - 4) Symbolic links - The paths to the target objects are compared. - (The option --follow-symlinks overrides the default behavior when - symbolic links are compared.). - - Exit code: - 0 if no differences, 1 if differences found, 2 if error - - Examples of use: - 1) h5diff file1 file2 /g1/dset1 /g1/dset2 - Compares object '/g1/dset1' in file1 with '/g1/dset2' in file2 - - 2) h5diff file1 file2 /g1/dset1 - Compares object '/g1/dset1' in both files - - 3) h5diff file1 file2 - Compares all objects in both files - - Notes: - file1 and file2 can be the same file. - Use h5diff file1 file1 /g1/dset1 /g1/dset2 to compare - '/g1/dset1' and '/g1/dset2' in the same file - -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_616.txt b/tools/h5diff/testfiles/h5diff_616.txt deleted file mode 100644 index 3bc194a..0000000 --- a/tools/h5diff/testfiles/h5diff_616.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -2 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_617.txt b/tools/h5diff/testfiles/h5diff_617.txt deleted file mode 100644 index 3bc194a..0000000 --- a/tools/h5diff/testfiles/h5diff_617.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -2 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_618.txt b/tools/h5diff/testfiles/h5diff_618.txt deleted file mode 100644 index eca5994..0000000 --- a/tools/h5diff/testfiles/h5diff_618.txt +++ /dev/null @@ -1 +0,0 @@ -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_619.txt b/tools/h5diff/testfiles/h5diff_619.txt deleted file mode 100644 index db14532..0000000 --- a/tools/h5diff/testfiles/h5diff_619.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -6 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_621.txt b/tools/h5diff/testfiles/h5diff_621.txt deleted file mode 100644 index fd8c680..0000000 --- a/tools/h5diff/testfiles/h5diff_621.txt +++ /dev/null @@ -1,141 +0,0 @@ -<-n -4> is not a valid option -usage: h5diff [OPTIONS] file1 file2 [obj1[ obj2]] - file1 File name of the first HDF5 file - file2 File name of the second HDF5 file - [obj1] Name of an HDF5 object, in absolute path - [obj2] Name of an HDF5 object, in absolute path - - OPTIONS - -h, --help - Print a usage message and exit. - -V, --version - Print version number and exit. - -r, --report - Report mode. Print differences. - -v --verbose - Verbose mode. Print differences information and list of objects. - -vN --verbose=N - Verbose mode with level. Print differences and list of objects. - Level of detail depends on value of N: - 0 : Identical to '-v' or '--verbose'. - 1 : All level 0 information plus one-line attribute - status summary. - 2 : All level 1 information plus extended attribute - status report. - -q, --quiet - Quiet mode. Do not produce output. - --follow-symlinks - Follow symbolic links (soft links and external links and compare the) - links' target objects. - If symbolic link(s) with the same name exist in the files being - compared, then determine whether the target of each link is an existing - object (dataset, group, or named datatype) or the link is a dangling - link (a soft or external link pointing to a target object that does - not yet exist). - - If both symbolic links are dangling links, they are treated as being - the same; by default, h5diff returns an exit code of 0. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If only one of the two links is a dangling link,they are treated as - being different and h5diff returns an exit code of 1. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If both symbolic links point to existing objects, h5diff compares the - two objects. - If any symbolic link specified in the call to h5diff does not exist, - h5diff treats it as an error and returns an exit code of 2. - --no-dangling-links - Must be used with --follow-symlinks option; otherwise, h5diff shows - error message and returns an exit code of 2. - Check for any symbolic links (soft links or external links) that do not - resolve to an existing object (dataset, group, or named datatype). - If any dangling link is found, this situation is treated as an error - and h5diff returns an exit code of 2. - -c, --compare - List objects that are not comparable - -N, --nan - Avoid NaNs detection - -n C, --count=C - Print differences up to C. C must be a positive integer. - -d D, --delta=D - Print difference if (|a-b| > D). D must be a positive number. - Can not use with '-p' or '--use-system-epsilon'. - -p R, --relative=R - Print difference if (|(a-b)/b| > R). R must be a positive number. - Can not use with '-d' or '--use-system-epsilon'. - --use-system-epsilon - Print difference if (|a-b| > EPSILON), EPSILON is system defined value. - If the system epsilon is not defined,one of the following predefined - values will be used: - FLT_EPSILON = 1.19209E-07 for floating-point type - DBL_EPSILON = 2.22045E-16 for double precision type - Can not use with '-p' or '-d'. - --exclude-path "path" - Exclude the specified path to an object when comparing files or groups. - If a group is excluded, all member objects will also be excluded. - The specified path is excluded wherever it occurs. - This flexibility enables the same option to exclude either objects that - exist only in one file or common objects that are known to differ. - - When comparing files, "path" is the absolute path to the excluded; - object; when comparing groups, "path" is similar to the relative - path from the group to the excluded object. This "path" can be - taken from the first section of the output of the --verbose option. - For example, if you are comparing the group /groupA in two files and - you want to exclude /groupA/groupB/groupC in both files, the exclude - option would read as follows: - --exclude-path "/groupB/groupC" - - If there are multiple paths to an object, only the specified path(s) - will be excluded; the comparison will include any path not explicitly - excluded. - This option can be used repeatedly to exclude multiple paths. - - Modes of output: - Default mode: print the number of differences found and where they occured - -r Report mode: print the above plus the differences - -v Verbose mode: print the above plus a list of objects and warnings - -q Quiet mode: do not print output - - File comparison: - If no objects [obj1[ obj2]] are specified, the h5diff comparison proceeds as - a comparison of the two files' root groups. That is, h5diff first compares - the names of root group members, generates a report of root group objects - that appear in only one file or in both files, and recursively compares - common objects. - - Object comparison: - 1) Groups - First compares the names of member objects (relative path, from the - specified group) and generates a report of objects that appear in only - one group or in both groups. Common objects are then compared recursively. - 2) Datasets - Array rank and dimensions, datatypes, and data values are compared. - 3) Datatypes - The comparison is based on the return value of H5Tequal. - 4) Symbolic links - The paths to the target objects are compared. - (The option --follow-symlinks overrides the default behavior when - symbolic links are compared.). - - Exit code: - 0 if no differences, 1 if differences found, 2 if error - - Examples of use: - 1) h5diff file1 file2 /g1/dset1 /g1/dset2 - Compares object '/g1/dset1' in file1 with '/g1/dset2' in file2 - - 2) h5diff file1 file2 /g1/dset1 - Compares object '/g1/dset1' in both files - - 3) h5diff file1 file2 - Compares all objects in both files - - Notes: - file1 and file2 can be the same file. - Use h5diff file1 file1 /g1/dset1 /g1/dset2 to compare - '/g1/dset1' and '/g1/dset2' in the same file - -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_622.txt b/tools/h5diff/testfiles/h5diff_622.txt deleted file mode 100644 index f0d38af..0000000 --- a/tools/h5diff/testfiles/h5diff_622.txt +++ /dev/null @@ -1,141 +0,0 @@ -<-n 0> is not a valid option -usage: h5diff [OPTIONS] file1 file2 [obj1[ obj2]] - file1 File name of the first HDF5 file - file2 File name of the second HDF5 file - [obj1] Name of an HDF5 object, in absolute path - [obj2] Name of an HDF5 object, in absolute path - - OPTIONS - -h, --help - Print a usage message and exit. - -V, --version - Print version number and exit. - -r, --report - Report mode. Print differences. - -v --verbose - Verbose mode. Print differences information and list of objects. - -vN --verbose=N - Verbose mode with level. Print differences and list of objects. - Level of detail depends on value of N: - 0 : Identical to '-v' or '--verbose'. - 1 : All level 0 information plus one-line attribute - status summary. - 2 : All level 1 information plus extended attribute - status report. - -q, --quiet - Quiet mode. Do not produce output. - --follow-symlinks - Follow symbolic links (soft links and external links and compare the) - links' target objects. - If symbolic link(s) with the same name exist in the files being - compared, then determine whether the target of each link is an existing - object (dataset, group, or named datatype) or the link is a dangling - link (a soft or external link pointing to a target object that does - not yet exist). - - If both symbolic links are dangling links, they are treated as being - the same; by default, h5diff returns an exit code of 0. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If only one of the two links is a dangling link,they are treated as - being different and h5diff returns an exit code of 1. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If both symbolic links point to existing objects, h5diff compares the - two objects. - If any symbolic link specified in the call to h5diff does not exist, - h5diff treats it as an error and returns an exit code of 2. - --no-dangling-links - Must be used with --follow-symlinks option; otherwise, h5diff shows - error message and returns an exit code of 2. - Check for any symbolic links (soft links or external links) that do not - resolve to an existing object (dataset, group, or named datatype). - If any dangling link is found, this situation is treated as an error - and h5diff returns an exit code of 2. - -c, --compare - List objects that are not comparable - -N, --nan - Avoid NaNs detection - -n C, --count=C - Print differences up to C. C must be a positive integer. - -d D, --delta=D - Print difference if (|a-b| > D). D must be a positive number. - Can not use with '-p' or '--use-system-epsilon'. - -p R, --relative=R - Print difference if (|(a-b)/b| > R). R must be a positive number. - Can not use with '-d' or '--use-system-epsilon'. - --use-system-epsilon - Print difference if (|a-b| > EPSILON), EPSILON is system defined value. - If the system epsilon is not defined,one of the following predefined - values will be used: - FLT_EPSILON = 1.19209E-07 for floating-point type - DBL_EPSILON = 2.22045E-16 for double precision type - Can not use with '-p' or '-d'. - --exclude-path "path" - Exclude the specified path to an object when comparing files or groups. - If a group is excluded, all member objects will also be excluded. - The specified path is excluded wherever it occurs. - This flexibility enables the same option to exclude either objects that - exist only in one file or common objects that are known to differ. - - When comparing files, "path" is the absolute path to the excluded; - object; when comparing groups, "path" is similar to the relative - path from the group to the excluded object. This "path" can be - taken from the first section of the output of the --verbose option. - For example, if you are comparing the group /groupA in two files and - you want to exclude /groupA/groupB/groupC in both files, the exclude - option would read as follows: - --exclude-path "/groupB/groupC" - - If there are multiple paths to an object, only the specified path(s) - will be excluded; the comparison will include any path not explicitly - excluded. - This option can be used repeatedly to exclude multiple paths. - - Modes of output: - Default mode: print the number of differences found and where they occured - -r Report mode: print the above plus the differences - -v Verbose mode: print the above plus a list of objects and warnings - -q Quiet mode: do not print output - - File comparison: - If no objects [obj1[ obj2]] are specified, the h5diff comparison proceeds as - a comparison of the two files' root groups. That is, h5diff first compares - the names of root group members, generates a report of root group objects - that appear in only one file or in both files, and recursively compares - common objects. - - Object comparison: - 1) Groups - First compares the names of member objects (relative path, from the - specified group) and generates a report of objects that appear in only - one group or in both groups. Common objects are then compared recursively. - 2) Datasets - Array rank and dimensions, datatypes, and data values are compared. - 3) Datatypes - The comparison is based on the return value of H5Tequal. - 4) Symbolic links - The paths to the target objects are compared. - (The option --follow-symlinks overrides the default behavior when - symbolic links are compared.). - - Exit code: - 0 if no differences, 1 if differences found, 2 if error - - Examples of use: - 1) h5diff file1 file2 /g1/dset1 /g1/dset2 - Compares object '/g1/dset1' in file1 with '/g1/dset2' in file2 - - 2) h5diff file1 file2 /g1/dset1 - Compares object '/g1/dset1' in both files - - 3) h5diff file1 file2 - Compares all objects in both files - - Notes: - file1 and file2 can be the same file. - Use h5diff file1 file1 /g1/dset1 /g1/dset2 to compare - '/g1/dset1' and '/g1/dset2' in the same file - -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_623.txt b/tools/h5diff/testfiles/h5diff_623.txt deleted file mode 100644 index 4ab66a5..0000000 --- a/tools/h5diff/testfiles/h5diff_623.txt +++ /dev/null @@ -1,141 +0,0 @@ -<-n u> is not a valid option -usage: h5diff [OPTIONS] file1 file2 [obj1[ obj2]] - file1 File name of the first HDF5 file - file2 File name of the second HDF5 file - [obj1] Name of an HDF5 object, in absolute path - [obj2] Name of an HDF5 object, in absolute path - - OPTIONS - -h, --help - Print a usage message and exit. - -V, --version - Print version number and exit. - -r, --report - Report mode. Print differences. - -v --verbose - Verbose mode. Print differences information and list of objects. - -vN --verbose=N - Verbose mode with level. Print differences and list of objects. - Level of detail depends on value of N: - 0 : Identical to '-v' or '--verbose'. - 1 : All level 0 information plus one-line attribute - status summary. - 2 : All level 1 information plus extended attribute - status report. - -q, --quiet - Quiet mode. Do not produce output. - --follow-symlinks - Follow symbolic links (soft links and external links and compare the) - links' target objects. - If symbolic link(s) with the same name exist in the files being - compared, then determine whether the target of each link is an existing - object (dataset, group, or named datatype) or the link is a dangling - link (a soft or external link pointing to a target object that does - not yet exist). - - If both symbolic links are dangling links, they are treated as being - the same; by default, h5diff returns an exit code of 0. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If only one of the two links is a dangling link,they are treated as - being different and h5diff returns an exit code of 1. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If both symbolic links point to existing objects, h5diff compares the - two objects. - If any symbolic link specified in the call to h5diff does not exist, - h5diff treats it as an error and returns an exit code of 2. - --no-dangling-links - Must be used with --follow-symlinks option; otherwise, h5diff shows - error message and returns an exit code of 2. - Check for any symbolic links (soft links or external links) that do not - resolve to an existing object (dataset, group, or named datatype). - If any dangling link is found, this situation is treated as an error - and h5diff returns an exit code of 2. - -c, --compare - List objects that are not comparable - -N, --nan - Avoid NaNs detection - -n C, --count=C - Print differences up to C. C must be a positive integer. - -d D, --delta=D - Print difference if (|a-b| > D). D must be a positive number. - Can not use with '-p' or '--use-system-epsilon'. - -p R, --relative=R - Print difference if (|(a-b)/b| > R). R must be a positive number. - Can not use with '-d' or '--use-system-epsilon'. - --use-system-epsilon - Print difference if (|a-b| > EPSILON), EPSILON is system defined value. - If the system epsilon is not defined,one of the following predefined - values will be used: - FLT_EPSILON = 1.19209E-07 for floating-point type - DBL_EPSILON = 2.22045E-16 for double precision type - Can not use with '-p' or '-d'. - --exclude-path "path" - Exclude the specified path to an object when comparing files or groups. - If a group is excluded, all member objects will also be excluded. - The specified path is excluded wherever it occurs. - This flexibility enables the same option to exclude either objects that - exist only in one file or common objects that are known to differ. - - When comparing files, "path" is the absolute path to the excluded; - object; when comparing groups, "path" is similar to the relative - path from the group to the excluded object. This "path" can be - taken from the first section of the output of the --verbose option. - For example, if you are comparing the group /groupA in two files and - you want to exclude /groupA/groupB/groupC in both files, the exclude - option would read as follows: - --exclude-path "/groupB/groupC" - - If there are multiple paths to an object, only the specified path(s) - will be excluded; the comparison will include any path not explicitly - excluded. - This option can be used repeatedly to exclude multiple paths. - - Modes of output: - Default mode: print the number of differences found and where they occured - -r Report mode: print the above plus the differences - -v Verbose mode: print the above plus a list of objects and warnings - -q Quiet mode: do not print output - - File comparison: - If no objects [obj1[ obj2]] are specified, the h5diff comparison proceeds as - a comparison of the two files' root groups. That is, h5diff first compares - the names of root group members, generates a report of root group objects - that appear in only one file or in both files, and recursively compares - common objects. - - Object comparison: - 1) Groups - First compares the names of member objects (relative path, from the - specified group) and generates a report of objects that appear in only - one group or in both groups. Common objects are then compared recursively. - 2) Datasets - Array rank and dimensions, datatypes, and data values are compared. - 3) Datatypes - The comparison is based on the return value of H5Tequal. - 4) Symbolic links - The paths to the target objects are compared. - (The option --follow-symlinks overrides the default behavior when - symbolic links are compared.). - - Exit code: - 0 if no differences, 1 if differences found, 2 if error - - Examples of use: - 1) h5diff file1 file2 /g1/dset1 /g1/dset2 - Compares object '/g1/dset1' in file1 with '/g1/dset2' in file2 - - 2) h5diff file1 file2 /g1/dset1 - Compares object '/g1/dset1' in both files - - 3) h5diff file1 file2 - Compares all objects in both files - - Notes: - file1 and file2 can be the same file. - Use h5diff file1 file1 /g1/dset1 /g1/dset2 to compare - '/g1/dset1' and '/g1/dset2' in the same file - -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_624.txt b/tools/h5diff/testfiles/h5diff_624.txt deleted file mode 100644 index f5e7ee3..0000000 --- a/tools/h5diff/testfiles/h5diff_624.txt +++ /dev/null @@ -1,141 +0,0 @@ -<-n 0x1> is not a valid option -usage: h5diff [OPTIONS] file1 file2 [obj1[ obj2]] - file1 File name of the first HDF5 file - file2 File name of the second HDF5 file - [obj1] Name of an HDF5 object, in absolute path - [obj2] Name of an HDF5 object, in absolute path - - OPTIONS - -h, --help - Print a usage message and exit. - -V, --version - Print version number and exit. - -r, --report - Report mode. Print differences. - -v --verbose - Verbose mode. Print differences information and list of objects. - -vN --verbose=N - Verbose mode with level. Print differences and list of objects. - Level of detail depends on value of N: - 0 : Identical to '-v' or '--verbose'. - 1 : All level 0 information plus one-line attribute - status summary. - 2 : All level 1 information plus extended attribute - status report. - -q, --quiet - Quiet mode. Do not produce output. - --follow-symlinks - Follow symbolic links (soft links and external links and compare the) - links' target objects. - If symbolic link(s) with the same name exist in the files being - compared, then determine whether the target of each link is an existing - object (dataset, group, or named datatype) or the link is a dangling - link (a soft or external link pointing to a target object that does - not yet exist). - - If both symbolic links are dangling links, they are treated as being - the same; by default, h5diff returns an exit code of 0. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If only one of the two links is a dangling link,they are treated as - being different and h5diff returns an exit code of 1. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If both symbolic links point to existing objects, h5diff compares the - two objects. - If any symbolic link specified in the call to h5diff does not exist, - h5diff treats it as an error and returns an exit code of 2. - --no-dangling-links - Must be used with --follow-symlinks option; otherwise, h5diff shows - error message and returns an exit code of 2. - Check for any symbolic links (soft links or external links) that do not - resolve to an existing object (dataset, group, or named datatype). - If any dangling link is found, this situation is treated as an error - and h5diff returns an exit code of 2. - -c, --compare - List objects that are not comparable - -N, --nan - Avoid NaNs detection - -n C, --count=C - Print differences up to C. C must be a positive integer. - -d D, --delta=D - Print difference if (|a-b| > D). D must be a positive number. - Can not use with '-p' or '--use-system-epsilon'. - -p R, --relative=R - Print difference if (|(a-b)/b| > R). R must be a positive number. - Can not use with '-d' or '--use-system-epsilon'. - --use-system-epsilon - Print difference if (|a-b| > EPSILON), EPSILON is system defined value. - If the system epsilon is not defined,one of the following predefined - values will be used: - FLT_EPSILON = 1.19209E-07 for floating-point type - DBL_EPSILON = 2.22045E-16 for double precision type - Can not use with '-p' or '-d'. - --exclude-path "path" - Exclude the specified path to an object when comparing files or groups. - If a group is excluded, all member objects will also be excluded. - The specified path is excluded wherever it occurs. - This flexibility enables the same option to exclude either objects that - exist only in one file or common objects that are known to differ. - - When comparing files, "path" is the absolute path to the excluded; - object; when comparing groups, "path" is similar to the relative - path from the group to the excluded object. This "path" can be - taken from the first section of the output of the --verbose option. - For example, if you are comparing the group /groupA in two files and - you want to exclude /groupA/groupB/groupC in both files, the exclude - option would read as follows: - --exclude-path "/groupB/groupC" - - If there are multiple paths to an object, only the specified path(s) - will be excluded; the comparison will include any path not explicitly - excluded. - This option can be used repeatedly to exclude multiple paths. - - Modes of output: - Default mode: print the number of differences found and where they occured - -r Report mode: print the above plus the differences - -v Verbose mode: print the above plus a list of objects and warnings - -q Quiet mode: do not print output - - File comparison: - If no objects [obj1[ obj2]] are specified, the h5diff comparison proceeds as - a comparison of the two files' root groups. That is, h5diff first compares - the names of root group members, generates a report of root group objects - that appear in only one file or in both files, and recursively compares - common objects. - - Object comparison: - 1) Groups - First compares the names of member objects (relative path, from the - specified group) and generates a report of objects that appear in only - one group or in both groups. Common objects are then compared recursively. - 2) Datasets - Array rank and dimensions, datatypes, and data values are compared. - 3) Datatypes - The comparison is based on the return value of H5Tequal. - 4) Symbolic links - The paths to the target objects are compared. - (The option --follow-symlinks overrides the default behavior when - symbolic links are compared.). - - Exit code: - 0 if no differences, 1 if differences found, 2 if error - - Examples of use: - 1) h5diff file1 file2 /g1/dset1 /g1/dset2 - Compares object '/g1/dset1' in file1 with '/g1/dset2' in file2 - - 2) h5diff file1 file2 /g1/dset1 - Compares object '/g1/dset1' in both files - - 3) h5diff file1 file2 - Compares all objects in both files - - Notes: - file1 and file2 can be the same file. - Use h5diff file1 file1 /g1/dset1 /g1/dset2 to compare - '/g1/dset1' and '/g1/dset2' in the same file - -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_625.txt b/tools/h5diff/testfiles/h5diff_625.txt deleted file mode 100644 index 3bc194a..0000000 --- a/tools/h5diff/testfiles/h5diff_625.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -2 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_626.txt b/tools/h5diff/testfiles/h5diff_626.txt deleted file mode 100644 index 6494066..0000000 --- a/tools/h5diff/testfiles/h5diff_626.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -3 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_627.txt b/tools/h5diff/testfiles/h5diff_627.txt deleted file mode 100644 index db14532..0000000 --- a/tools/h5diff/testfiles/h5diff_627.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -6 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_628.txt b/tools/h5diff/testfiles/h5diff_628.txt deleted file mode 100644 index e11d8ee..0000000 --- a/tools/h5diff/testfiles/h5diff_628.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_629.txt b/tools/h5diff/testfiles/h5diff_629.txt deleted file mode 100644 index 962c2b0..0000000 --- a/tools/h5diff/testfiles/h5diff_629.txt +++ /dev/null @@ -1,2 +0,0 @@ -h5diff: : unable to open file -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_630.txt b/tools/h5diff/testfiles/h5diff_630.txt deleted file mode 100644 index aaf0148..0000000 --- a/tools/h5diff/testfiles/h5diff_630.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_631.txt b/tools/h5diff/testfiles/h5diff_631.txt deleted file mode 100644 index aaf0148..0000000 --- a/tools/h5diff/testfiles/h5diff_631.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_640.txt b/tools/h5diff/testfiles/h5diff_640.txt deleted file mode 100644 index 4c956a6..0000000 --- a/tools/h5diff/testfiles/h5diff_640.txt +++ /dev/null @@ -1,4 +0,0 @@ -h5diff error: -d, -p and --use-system-epsilon options are mutually-exclusive; -use no more than one. -Try '-h' or '--help' option for more information or see the h5diff entry in the 'HDF5 Reference Manual'. -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_641.txt b/tools/h5diff/testfiles/h5diff_641.txt deleted file mode 100644 index 4c956a6..0000000 --- a/tools/h5diff/testfiles/h5diff_641.txt +++ /dev/null @@ -1,4 +0,0 @@ -h5diff error: -d, -p and --use-system-epsilon options are mutually-exclusive; -use no more than one. -Try '-h' or '--help' option for more information or see the h5diff entry in the 'HDF5 Reference Manual'. -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_642.txt b/tools/h5diff/testfiles/h5diff_642.txt deleted file mode 100644 index 4c956a6..0000000 --- a/tools/h5diff/testfiles/h5diff_642.txt +++ /dev/null @@ -1,4 +0,0 @@ -h5diff error: -d, -p and --use-system-epsilon options are mutually-exclusive; -use no more than one. -Try '-h' or '--help' option for more information or see the h5diff entry in the 'HDF5 Reference Manual'. -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_643.txt b/tools/h5diff/testfiles/h5diff_643.txt deleted file mode 100644 index 4c956a6..0000000 --- a/tools/h5diff/testfiles/h5diff_643.txt +++ /dev/null @@ -1,4 +0,0 @@ -h5diff error: -d, -p and --use-system-epsilon options are mutually-exclusive; -use no more than one. -Try '-h' or '--help' option for more information or see the h5diff entry in the 'HDF5 Reference Manual'. -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_644.txt b/tools/h5diff/testfiles/h5diff_644.txt deleted file mode 100644 index 4c956a6..0000000 --- a/tools/h5diff/testfiles/h5diff_644.txt +++ /dev/null @@ -1,4 +0,0 @@ -h5diff error: -d, -p and --use-system-epsilon options are mutually-exclusive; -use no more than one. -Try '-h' or '--help' option for more information or see the h5diff entry in the 'HDF5 Reference Manual'. -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_645.txt b/tools/h5diff/testfiles/h5diff_645.txt deleted file mode 100644 index 4c956a6..0000000 --- a/tools/h5diff/testfiles/h5diff_645.txt +++ /dev/null @@ -1,4 +0,0 @@ -h5diff error: -d, -p and --use-system-epsilon options are mutually-exclusive; -use no more than one. -Try '-h' or '--help' option for more information or see the h5diff entry in the 'HDF5 Reference Manual'. -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_646.txt b/tools/h5diff/testfiles/h5diff_646.txt deleted file mode 100644 index 4c956a6..0000000 --- a/tools/h5diff/testfiles/h5diff_646.txt +++ /dev/null @@ -1,4 +0,0 @@ -h5diff error: -d, -p and --use-system-epsilon options are mutually-exclusive; -use no more than one. -Try '-h' or '--help' option for more information or see the h5diff entry in the 'HDF5 Reference Manual'. -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_70.txt b/tools/h5diff/testfiles/h5diff_70.txt deleted file mode 100644 index 0a6b0c0..0000000 --- a/tools/h5diff/testfiles/h5diff_70.txt +++ /dev/null @@ -1,2032 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset - x x /g1 - -group : and -0 differences found -attribute: > and > -size: [2] [2] -position VLstring of VLstring of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position VLstring2D of VLstring2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position VLstring3D of VLstring3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position array of array of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 0 ] 3 0 3 -[ 1 ] 4 0 4 -[ 1 ] 5 0 5 -[ 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [3x2] [3x2] -position array2D of array2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 0 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 0 1 ] 5 0 5 -[ 0 1 ] 6 0 6 -[ 1 0 ] 7 0 7 -[ 1 0 ] 8 0 8 -[ 1 0 ] 9 0 9 -[ 1 1 ] 10 0 10 -[ 1 1 ] 11 0 11 -[ 1 1 ] 12 0 12 -[ 2 0 ] 13 0 13 -[ 2 0 ] 14 0 14 -[ 2 0 ] 15 0 15 -[ 2 1 ] 16 0 16 -[ 2 1 ] 17 0 17 -[ 2 1 ] 18 0 18 -18 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position array3D of array3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 0 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 0 1 ] 5 0 5 -[ 0 0 1 ] 6 0 6 -[ 0 1 0 ] 7 0 7 -[ 0 1 0 ] 8 0 8 -[ 0 1 0 ] 9 0 9 -[ 0 1 1 ] 10 0 10 -[ 0 1 1 ] 11 0 11 -[ 0 1 1 ] 12 0 12 -[ 0 2 0 ] 13 0 13 -[ 0 2 0 ] 14 0 14 -[ 0 2 0 ] 15 0 15 -[ 0 2 1 ] 16 0 16 -[ 0 2 1 ] 17 0 17 -[ 0 2 1 ] 18 0 18 -[ 1 0 0 ] 19 0 19 -[ 1 0 0 ] 20 0 20 -[ 1 0 0 ] 21 0 21 -[ 1 0 1 ] 22 0 22 -[ 1 0 1 ] 23 0 23 -[ 1 0 1 ] 24 0 24 -[ 1 1 0 ] 25 0 25 -[ 1 1 0 ] 26 0 26 -[ 1 1 0 ] 27 0 27 -[ 1 1 1 ] 28 0 28 -[ 1 1 1 ] 29 0 29 -[ 1 1 1 ] 30 0 30 -[ 1 2 0 ] 31 0 31 -[ 1 2 0 ] 32 0 32 -[ 1 2 0 ] 33 0 33 -[ 1 2 1 ] 34 0 34 -[ 1 2 1 ] 35 0 35 -[ 1 2 1 ] 36 0 36 -[ 2 0 0 ] 37 0 37 -[ 2 0 0 ] 38 0 38 -[ 2 0 0 ] 39 0 39 -[ 2 0 1 ] 40 0 40 -[ 2 0 1 ] 41 0 41 -[ 2 0 1 ] 42 0 42 -[ 2 1 0 ] 43 0 43 -[ 2 1 0 ] 44 0 44 -[ 2 1 0 ] 45 0 45 -[ 2 1 1 ] 46 0 46 -[ 2 1 1 ] 47 0 47 -[ 2 1 1 ] 48 0 48 -[ 2 2 0 ] 49 0 49 -[ 2 2 0 ] 50 0 50 -[ 2 2 0 ] 51 0 51 -[ 2 2 1 ] 52 0 52 -[ 2 2 1 ] 53 0 53 -[ 2 2 1 ] 54 0 54 -[ 3 0 0 ] 55 0 55 -[ 3 0 0 ] 56 0 56 -[ 3 0 0 ] 57 0 57 -[ 3 0 1 ] 58 0 58 -[ 3 0 1 ] 59 0 59 -[ 3 0 1 ] 60 0 60 -[ 3 1 0 ] 61 0 61 -[ 3 1 0 ] 62 0 62 -[ 3 1 0 ] 63 0 63 -[ 3 1 1 ] 64 0 64 -[ 3 1 1 ] 65 0 65 -[ 3 1 1 ] 66 0 66 -[ 3 2 0 ] 67 0 67 -[ 3 2 0 ] 68 0 68 -[ 3 2 0 ] 69 0 69 -[ 3 2 1 ] 70 0 70 -[ 3 2 1 ] 71 0 71 -[ 3 2 1 ] 72 0 72 -72 differences found -attribute: > and > -size: [2] [2] -position bitfield of bitfield of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position bitfield2D of bitfield2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position bitfield3D of bitfield3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position compound of compound of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 1 ] 3 0 3 -[ 1 ] 4 0 4 -4 differences found -attribute: > and > -size: [3x2] [3x2] -position compound2D of compound2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 1 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 1 0 ] 5 0 5 -[ 1 0 ] 6 0 6 -[ 1 1 ] 7 0 7 -[ 1 1 ] 8 0 8 -[ 2 0 ] 9 0 9 -[ 2 0 ] 10 0 10 -[ 2 1 ] 11 0 11 -[ 2 1 ] 12 0 12 -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position compound3D of compound3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 1 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 1 0 ] 5 0 5 -[ 0 1 0 ] 6 0 6 -[ 0 1 1 ] 7 0 7 -[ 0 1 1 ] 8 0 8 -[ 0 2 0 ] 9 0 9 -[ 0 2 0 ] 10 0 10 -[ 0 2 1 ] 11 0 11 -[ 0 2 1 ] 12 0 12 -[ 1 0 0 ] 13 0 13 -[ 1 0 0 ] 14 0 14 -[ 1 0 1 ] 15 0 15 -[ 1 0 1 ] 16 0 16 -[ 1 1 0 ] 17 0 17 -[ 1 1 0 ] 18 0 18 -[ 1 1 1 ] 19 0 19 -[ 1 1 1 ] 20 0 20 -[ 1 2 0 ] 21 0 21 -[ 1 2 0 ] 22 0 22 -[ 1 2 1 ] 23 0 23 -[ 1 2 1 ] 24 0 24 -[ 2 0 0 ] 25 0 25 -[ 2 0 0 ] 26 0 26 -[ 2 0 1 ] 27 0 27 -[ 2 0 1 ] 28 0 28 -[ 2 1 0 ] 29 0 29 -[ 2 1 0 ] 30 0 30 -[ 2 1 1 ] 31 0 31 -[ 2 1 1 ] 32 0 32 -[ 2 2 0 ] 33 0 33 -[ 2 2 0 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 2 2 1 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 1 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 1 0 ] 41 0 41 -[ 3 1 0 ] 42 0 42 -[ 3 1 1 ] 43 0 43 -[ 3 1 1 ] 44 0 44 -[ 3 2 0 ] 45 0 45 -[ 3 2 0 ] 46 0 46 -[ 3 2 1 ] 47 0 47 -[ 3 2 1 ] 48 0 48 -48 differences found -attribute: > and > -size: [2] [2] -position enum of enum of difference ------------------------------------------------------------- -[ 0 ] RED GREEN -[ 1 ] RED GREEN -2 differences found -attribute: > and > -size: [3x2] [3x2] -position enum2D of enum2D of difference ------------------------------------------------------------- -[ 0 0 ] RED GREEN -[ 0 1 ] RED GREEN -[ 1 0 ] RED GREEN -[ 1 1 ] RED GREEN -[ 2 0 ] RED GREEN -[ 2 1 ] RED GREEN -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position enum3D of enum3D of difference ------------------------------------------------------------- -[ 0 0 0 ] GREEN RED -[ 0 0 1 ] GREEN RED -[ 0 1 0 ] GREEN RED -[ 0 1 1 ] GREEN RED -[ 0 2 0 ] GREEN RED -[ 0 2 1 ] GREEN RED -[ 1 0 0 ] GREEN RED -[ 1 0 1 ] GREEN RED -[ 1 1 0 ] GREEN RED -[ 1 1 1 ] GREEN RED -[ 1 2 0 ] GREEN RED -[ 1 2 1 ] GREEN RED -[ 2 0 0 ] GREEN RED -[ 2 0 1 ] GREEN RED -[ 2 1 0 ] GREEN RED -[ 2 1 1 ] GREEN RED -[ 2 2 0 ] GREEN RED -[ 2 2 1 ] GREEN RED -[ 3 0 0 ] GREEN RED -[ 3 0 1 ] GREEN RED -[ 3 1 0 ] GREEN RED -[ 3 1 1 ] GREEN RED -[ 3 2 0 ] GREEN RED -[ 3 2 1 ] GREEN RED -24 differences found -attribute: > and > -size: [2] [2] -position float of float of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position float2D of float2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position float3D of float3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position integer of integer of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position integer2D of integer2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position integer3D of integer3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position opaque of opaque of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position opaque2D of opaque2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position opaque3D of opaque3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position string of string of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position string2D of string2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position string3D of string3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position vlen of vlen of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -[ 1 ] 3 0 3 -3 differences found -attribute: > and > -size: [3x2] [3x2] -position vlen2D of vlen2D of difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 1 0 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 1 1 ] 5 0 5 -[ 2 0 ] 6 0 6 -[ 2 0 ] 7 0 7 -[ 2 0 ] 8 0 8 -[ 2 1 ] 9 0 9 -[ 2 1 ] 10 0 10 -[ 2 1 ] 11 0 11 -11 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position vlen3D of vlen3D of difference ------------------------------------------------------------- -[ 0 0 1 ] 1 0 1 -[ 0 1 0 ] 2 0 2 -[ 0 1 1 ] 3 0 3 -[ 0 2 0 ] 4 0 4 -[ 0 2 1 ] 5 0 5 -[ 1 0 0 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 0 1 ] 9 0 9 -[ 1 1 0 ] 10 0 10 -[ 1 1 0 ] 11 0 11 -[ 1 1 1 ] 12 0 12 -[ 1 1 1 ] 13 0 13 -[ 1 2 0 ] 14 0 14 -[ 1 2 0 ] 15 0 15 -[ 1 2 1 ] 16 0 16 -[ 1 2 1 ] 17 0 17 -[ 2 0 0 ] 18 0 18 -[ 2 0 0 ] 19 0 19 -[ 2 0 0 ] 20 0 20 -[ 2 0 1 ] 21 0 21 -[ 2 0 1 ] 22 0 22 -[ 2 0 1 ] 23 0 23 -[ 2 1 0 ] 24 0 24 -[ 2 1 0 ] 25 0 25 -[ 2 1 0 ] 26 0 26 -[ 2 1 1 ] 27 0 27 -[ 2 1 1 ] 28 0 28 -[ 2 1 1 ] 29 0 29 -[ 2 2 0 ] 30 0 30 -[ 2 2 0 ] 31 0 31 -[ 2 2 0 ] 32 0 32 -[ 2 2 1 ] 33 0 33 -[ 2 2 1 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 3 0 0 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 0 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 0 1 ] 41 0 41 -[ 3 0 1 ] 42 0 42 -[ 3 0 1 ] 43 0 43 -[ 3 1 0 ] 44 0 44 -[ 3 1 0 ] 45 0 45 -[ 3 1 0 ] 46 0 46 -[ 3 1 0 ] 47 0 47 -[ 3 1 1 ] 48 0 48 -[ 3 1 1 ] 49 0 49 -[ 3 1 1 ] 50 0 50 -[ 3 1 1 ] 51 0 51 -[ 3 2 0 ] 52 0 52 -[ 3 2 0 ] 53 0 53 -[ 3 2 0 ] 54 0 54 -[ 3 2 0 ] 55 0 55 -[ 3 2 1 ] 56 0 56 -[ 3 2 1 ] 57 0 57 -[ 3 2 1 ] 58 0 58 -[ 3 2 1 ] 59 0 59 -59 differences found -dataset: and -Not comparable: or is an empty dataset -0 differences found -attribute: > and > -size: [2] [2] -position VLstring of VLstring of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position VLstring2D of VLstring2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position VLstring3D of VLstring3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position array of array of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 0 ] 3 0 3 -[ 1 ] 4 0 4 -[ 1 ] 5 0 5 -[ 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [3x2] [3x2] -position array2D of array2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 0 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 0 1 ] 5 0 5 -[ 0 1 ] 6 0 6 -[ 1 0 ] 7 0 7 -[ 1 0 ] 8 0 8 -[ 1 0 ] 9 0 9 -[ 1 1 ] 10 0 10 -[ 1 1 ] 11 0 11 -[ 1 1 ] 12 0 12 -[ 2 0 ] 13 0 13 -[ 2 0 ] 14 0 14 -[ 2 0 ] 15 0 15 -[ 2 1 ] 16 0 16 -[ 2 1 ] 17 0 17 -[ 2 1 ] 18 0 18 -18 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position array3D of array3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 0 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 0 1 ] 5 0 5 -[ 0 0 1 ] 6 0 6 -[ 0 1 0 ] 7 0 7 -[ 0 1 0 ] 8 0 8 -[ 0 1 0 ] 9 0 9 -[ 0 1 1 ] 10 0 10 -[ 0 1 1 ] 11 0 11 -[ 0 1 1 ] 12 0 12 -[ 0 2 0 ] 13 0 13 -[ 0 2 0 ] 14 0 14 -[ 0 2 0 ] 15 0 15 -[ 0 2 1 ] 16 0 16 -[ 0 2 1 ] 17 0 17 -[ 0 2 1 ] 18 0 18 -[ 1 0 0 ] 19 0 19 -[ 1 0 0 ] 20 0 20 -[ 1 0 0 ] 21 0 21 -[ 1 0 1 ] 22 0 22 -[ 1 0 1 ] 23 0 23 -[ 1 0 1 ] 24 0 24 -[ 1 1 0 ] 25 0 25 -[ 1 1 0 ] 26 0 26 -[ 1 1 0 ] 27 0 27 -[ 1 1 1 ] 28 0 28 -[ 1 1 1 ] 29 0 29 -[ 1 1 1 ] 30 0 30 -[ 1 2 0 ] 31 0 31 -[ 1 2 0 ] 32 0 32 -[ 1 2 0 ] 33 0 33 -[ 1 2 1 ] 34 0 34 -[ 1 2 1 ] 35 0 35 -[ 1 2 1 ] 36 0 36 -[ 2 0 0 ] 37 0 37 -[ 2 0 0 ] 38 0 38 -[ 2 0 0 ] 39 0 39 -[ 2 0 1 ] 40 0 40 -[ 2 0 1 ] 41 0 41 -[ 2 0 1 ] 42 0 42 -[ 2 1 0 ] 43 0 43 -[ 2 1 0 ] 44 0 44 -[ 2 1 0 ] 45 0 45 -[ 2 1 1 ] 46 0 46 -[ 2 1 1 ] 47 0 47 -[ 2 1 1 ] 48 0 48 -[ 2 2 0 ] 49 0 49 -[ 2 2 0 ] 50 0 50 -[ 2 2 0 ] 51 0 51 -[ 2 2 1 ] 52 0 52 -[ 2 2 1 ] 53 0 53 -[ 2 2 1 ] 54 0 54 -[ 3 0 0 ] 55 0 55 -[ 3 0 0 ] 56 0 56 -[ 3 0 0 ] 57 0 57 -[ 3 0 1 ] 58 0 58 -[ 3 0 1 ] 59 0 59 -[ 3 0 1 ] 60 0 60 -[ 3 1 0 ] 61 0 61 -[ 3 1 0 ] 62 0 62 -[ 3 1 0 ] 63 0 63 -[ 3 1 1 ] 64 0 64 -[ 3 1 1 ] 65 0 65 -[ 3 1 1 ] 66 0 66 -[ 3 2 0 ] 67 0 67 -[ 3 2 0 ] 68 0 68 -[ 3 2 0 ] 69 0 69 -[ 3 2 1 ] 70 0 70 -[ 3 2 1 ] 71 0 71 -[ 3 2 1 ] 72 0 72 -72 differences found -attribute: > and > -size: [2] [2] -position bitfield of bitfield of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position bitfield2D of bitfield2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position bitfield3D of bitfield3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position compound of compound of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 1 ] 3 0 3 -[ 1 ] 4 0 4 -4 differences found -attribute: > and > -size: [3x2] [3x2] -position compound2D of compound2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 1 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 1 0 ] 5 0 5 -[ 1 0 ] 6 0 6 -[ 1 1 ] 7 0 7 -[ 1 1 ] 8 0 8 -[ 2 0 ] 9 0 9 -[ 2 0 ] 10 0 10 -[ 2 1 ] 11 0 11 -[ 2 1 ] 12 0 12 -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position compound3D of compound3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 1 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 1 0 ] 5 0 5 -[ 0 1 0 ] 6 0 6 -[ 0 1 1 ] 7 0 7 -[ 0 1 1 ] 8 0 8 -[ 0 2 0 ] 9 0 9 -[ 0 2 0 ] 10 0 10 -[ 0 2 1 ] 11 0 11 -[ 0 2 1 ] 12 0 12 -[ 1 0 0 ] 13 0 13 -[ 1 0 0 ] 14 0 14 -[ 1 0 1 ] 15 0 15 -[ 1 0 1 ] 16 0 16 -[ 1 1 0 ] 17 0 17 -[ 1 1 0 ] 18 0 18 -[ 1 1 1 ] 19 0 19 -[ 1 1 1 ] 20 0 20 -[ 1 2 0 ] 21 0 21 -[ 1 2 0 ] 22 0 22 -[ 1 2 1 ] 23 0 23 -[ 1 2 1 ] 24 0 24 -[ 2 0 0 ] 25 0 25 -[ 2 0 0 ] 26 0 26 -[ 2 0 1 ] 27 0 27 -[ 2 0 1 ] 28 0 28 -[ 2 1 0 ] 29 0 29 -[ 2 1 0 ] 30 0 30 -[ 2 1 1 ] 31 0 31 -[ 2 1 1 ] 32 0 32 -[ 2 2 0 ] 33 0 33 -[ 2 2 0 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 2 2 1 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 1 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 1 0 ] 41 0 41 -[ 3 1 0 ] 42 0 42 -[ 3 1 1 ] 43 0 43 -[ 3 1 1 ] 44 0 44 -[ 3 2 0 ] 45 0 45 -[ 3 2 0 ] 46 0 46 -[ 3 2 1 ] 47 0 47 -[ 3 2 1 ] 48 0 48 -48 differences found -attribute: > and > -size: [2] [2] -position enum of enum of difference ------------------------------------------------------------- -[ 0 ] RED GREEN -[ 1 ] RED GREEN -2 differences found -attribute: > and > -size: [3x2] [3x2] -position enum2D of enum2D of difference ------------------------------------------------------------- -[ 0 0 ] RED GREEN -[ 0 1 ] RED GREEN -[ 1 0 ] RED GREEN -[ 1 1 ] RED GREEN -[ 2 0 ] RED GREEN -[ 2 1 ] RED GREEN -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position enum3D of enum3D of difference ------------------------------------------------------------- -[ 0 0 0 ] GREEN RED -[ 0 0 1 ] GREEN RED -[ 0 1 0 ] GREEN RED -[ 0 1 1 ] GREEN RED -[ 0 2 0 ] GREEN RED -[ 0 2 1 ] GREEN RED -[ 1 0 0 ] GREEN RED -[ 1 0 1 ] GREEN RED -[ 1 1 0 ] GREEN RED -[ 1 1 1 ] GREEN RED -[ 1 2 0 ] GREEN RED -[ 1 2 1 ] GREEN RED -[ 2 0 0 ] GREEN RED -[ 2 0 1 ] GREEN RED -[ 2 1 0 ] GREEN RED -[ 2 1 1 ] GREEN RED -[ 2 2 0 ] GREEN RED -[ 2 2 1 ] GREEN RED -[ 3 0 0 ] GREEN RED -[ 3 0 1 ] GREEN RED -[ 3 1 0 ] GREEN RED -[ 3 1 1 ] GREEN RED -[ 3 2 0 ] GREEN RED -[ 3 2 1 ] GREEN RED -24 differences found -attribute: > and > -size: [2] [2] -position float of float of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position float2D of float2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position float3D of float3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position integer of integer of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position integer2D of integer2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position integer3D of integer3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position opaque of opaque of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position opaque2D of opaque2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position opaque3D of opaque3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -0 differences found -attribute: > and > -0 differences found -attribute: > and > -0 differences found -attribute: > and > -size: [2] [2] -position string of string of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position string2D of string2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position string3D of string3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position vlen of vlen of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -[ 1 ] 3 0 3 -3 differences found -attribute: > and > -size: [3x2] [3x2] -position vlen2D of vlen2D of difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 1 0 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 1 1 ] 5 0 5 -[ 2 0 ] 6 0 6 -[ 2 0 ] 7 0 7 -[ 2 0 ] 8 0 8 -[ 2 1 ] 9 0 9 -[ 2 1 ] 10 0 10 -[ 2 1 ] 11 0 11 -11 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position vlen3D of vlen3D of difference ------------------------------------------------------------- -[ 0 0 1 ] 1 0 1 -[ 0 1 0 ] 2 0 2 -[ 0 1 1 ] 3 0 3 -[ 0 2 0 ] 4 0 4 -[ 0 2 1 ] 5 0 5 -[ 1 0 0 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 0 1 ] 9 0 9 -[ 1 1 0 ] 10 0 10 -[ 1 1 0 ] 11 0 11 -[ 1 1 1 ] 12 0 12 -[ 1 1 1 ] 13 0 13 -[ 1 2 0 ] 14 0 14 -[ 1 2 0 ] 15 0 15 -[ 1 2 1 ] 16 0 16 -[ 1 2 1 ] 17 0 17 -[ 2 0 0 ] 18 0 18 -[ 2 0 0 ] 19 0 19 -[ 2 0 0 ] 20 0 20 -[ 2 0 1 ] 21 0 21 -[ 2 0 1 ] 22 0 22 -[ 2 0 1 ] 23 0 23 -[ 2 1 0 ] 24 0 24 -[ 2 1 0 ] 25 0 25 -[ 2 1 0 ] 26 0 26 -[ 2 1 1 ] 27 0 27 -[ 2 1 1 ] 28 0 28 -[ 2 1 1 ] 29 0 29 -[ 2 2 0 ] 30 0 30 -[ 2 2 0 ] 31 0 31 -[ 2 2 0 ] 32 0 32 -[ 2 2 1 ] 33 0 33 -[ 2 2 1 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 3 0 0 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 0 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 0 1 ] 41 0 41 -[ 3 0 1 ] 42 0 42 -[ 3 0 1 ] 43 0 43 -[ 3 1 0 ] 44 0 44 -[ 3 1 0 ] 45 0 45 -[ 3 1 0 ] 46 0 46 -[ 3 1 0 ] 47 0 47 -[ 3 1 1 ] 48 0 48 -[ 3 1 1 ] 49 0 49 -[ 3 1 1 ] 50 0 50 -[ 3 1 1 ] 51 0 51 -[ 3 2 0 ] 52 0 52 -[ 3 2 0 ] 53 0 53 -[ 3 2 0 ] 54 0 54 -[ 3 2 0 ] 55 0 55 -[ 3 2 1 ] 56 0 56 -[ 3 2 1 ] 57 0 57 -[ 3 2 1 ] 58 0 58 -[ 3 2 1 ] 59 0 59 -59 differences found -group : and -0 differences found -attribute: > and > -size: [2] [2] -position VLstring of VLstring of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position VLstring2D of VLstring2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position VLstring3D of VLstring3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position array of array of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 0 ] 3 0 3 -[ 1 ] 4 0 4 -[ 1 ] 5 0 5 -[ 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [3x2] [3x2] -position array2D of array2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 0 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 0 1 ] 5 0 5 -[ 0 1 ] 6 0 6 -[ 1 0 ] 7 0 7 -[ 1 0 ] 8 0 8 -[ 1 0 ] 9 0 9 -[ 1 1 ] 10 0 10 -[ 1 1 ] 11 0 11 -[ 1 1 ] 12 0 12 -[ 2 0 ] 13 0 13 -[ 2 0 ] 14 0 14 -[ 2 0 ] 15 0 15 -[ 2 1 ] 16 0 16 -[ 2 1 ] 17 0 17 -[ 2 1 ] 18 0 18 -18 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position array3D of array3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 0 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 0 1 ] 5 0 5 -[ 0 0 1 ] 6 0 6 -[ 0 1 0 ] 7 0 7 -[ 0 1 0 ] 8 0 8 -[ 0 1 0 ] 9 0 9 -[ 0 1 1 ] 10 0 10 -[ 0 1 1 ] 11 0 11 -[ 0 1 1 ] 12 0 12 -[ 0 2 0 ] 13 0 13 -[ 0 2 0 ] 14 0 14 -[ 0 2 0 ] 15 0 15 -[ 0 2 1 ] 16 0 16 -[ 0 2 1 ] 17 0 17 -[ 0 2 1 ] 18 0 18 -[ 1 0 0 ] 19 0 19 -[ 1 0 0 ] 20 0 20 -[ 1 0 0 ] 21 0 21 -[ 1 0 1 ] 22 0 22 -[ 1 0 1 ] 23 0 23 -[ 1 0 1 ] 24 0 24 -[ 1 1 0 ] 25 0 25 -[ 1 1 0 ] 26 0 26 -[ 1 1 0 ] 27 0 27 -[ 1 1 1 ] 28 0 28 -[ 1 1 1 ] 29 0 29 -[ 1 1 1 ] 30 0 30 -[ 1 2 0 ] 31 0 31 -[ 1 2 0 ] 32 0 32 -[ 1 2 0 ] 33 0 33 -[ 1 2 1 ] 34 0 34 -[ 1 2 1 ] 35 0 35 -[ 1 2 1 ] 36 0 36 -[ 2 0 0 ] 37 0 37 -[ 2 0 0 ] 38 0 38 -[ 2 0 0 ] 39 0 39 -[ 2 0 1 ] 40 0 40 -[ 2 0 1 ] 41 0 41 -[ 2 0 1 ] 42 0 42 -[ 2 1 0 ] 43 0 43 -[ 2 1 0 ] 44 0 44 -[ 2 1 0 ] 45 0 45 -[ 2 1 1 ] 46 0 46 -[ 2 1 1 ] 47 0 47 -[ 2 1 1 ] 48 0 48 -[ 2 2 0 ] 49 0 49 -[ 2 2 0 ] 50 0 50 -[ 2 2 0 ] 51 0 51 -[ 2 2 1 ] 52 0 52 -[ 2 2 1 ] 53 0 53 -[ 2 2 1 ] 54 0 54 -[ 3 0 0 ] 55 0 55 -[ 3 0 0 ] 56 0 56 -[ 3 0 0 ] 57 0 57 -[ 3 0 1 ] 58 0 58 -[ 3 0 1 ] 59 0 59 -[ 3 0 1 ] 60 0 60 -[ 3 1 0 ] 61 0 61 -[ 3 1 0 ] 62 0 62 -[ 3 1 0 ] 63 0 63 -[ 3 1 1 ] 64 0 64 -[ 3 1 1 ] 65 0 65 -[ 3 1 1 ] 66 0 66 -[ 3 2 0 ] 67 0 67 -[ 3 2 0 ] 68 0 68 -[ 3 2 0 ] 69 0 69 -[ 3 2 1 ] 70 0 70 -[ 3 2 1 ] 71 0 71 -[ 3 2 1 ] 72 0 72 -72 differences found -attribute: > and > -size: [2] [2] -position bitfield of bitfield of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position bitfield2D of bitfield2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position bitfield3D of bitfield3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position compound of compound of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 1 ] 3 0 3 -[ 1 ] 4 0 4 -4 differences found -attribute: > and > -size: [3x2] [3x2] -position compound2D of compound2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 1 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 1 0 ] 5 0 5 -[ 1 0 ] 6 0 6 -[ 1 1 ] 7 0 7 -[ 1 1 ] 8 0 8 -[ 2 0 ] 9 0 9 -[ 2 0 ] 10 0 10 -[ 2 1 ] 11 0 11 -[ 2 1 ] 12 0 12 -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position compound3D of compound3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 1 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 1 0 ] 5 0 5 -[ 0 1 0 ] 6 0 6 -[ 0 1 1 ] 7 0 7 -[ 0 1 1 ] 8 0 8 -[ 0 2 0 ] 9 0 9 -[ 0 2 0 ] 10 0 10 -[ 0 2 1 ] 11 0 11 -[ 0 2 1 ] 12 0 12 -[ 1 0 0 ] 13 0 13 -[ 1 0 0 ] 14 0 14 -[ 1 0 1 ] 15 0 15 -[ 1 0 1 ] 16 0 16 -[ 1 1 0 ] 17 0 17 -[ 1 1 0 ] 18 0 18 -[ 1 1 1 ] 19 0 19 -[ 1 1 1 ] 20 0 20 -[ 1 2 0 ] 21 0 21 -[ 1 2 0 ] 22 0 22 -[ 1 2 1 ] 23 0 23 -[ 1 2 1 ] 24 0 24 -[ 2 0 0 ] 25 0 25 -[ 2 0 0 ] 26 0 26 -[ 2 0 1 ] 27 0 27 -[ 2 0 1 ] 28 0 28 -[ 2 1 0 ] 29 0 29 -[ 2 1 0 ] 30 0 30 -[ 2 1 1 ] 31 0 31 -[ 2 1 1 ] 32 0 32 -[ 2 2 0 ] 33 0 33 -[ 2 2 0 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 2 2 1 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 1 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 1 0 ] 41 0 41 -[ 3 1 0 ] 42 0 42 -[ 3 1 1 ] 43 0 43 -[ 3 1 1 ] 44 0 44 -[ 3 2 0 ] 45 0 45 -[ 3 2 0 ] 46 0 46 -[ 3 2 1 ] 47 0 47 -[ 3 2 1 ] 48 0 48 -48 differences found -attribute: > and > -size: [2] [2] -position enum of enum of difference ------------------------------------------------------------- -[ 0 ] RED GREEN -[ 1 ] RED GREEN -2 differences found -attribute: > and > -size: [3x2] [3x2] -position enum2D of enum2D of difference ------------------------------------------------------------- -[ 0 0 ] RED GREEN -[ 0 1 ] RED GREEN -[ 1 0 ] RED GREEN -[ 1 1 ] RED GREEN -[ 2 0 ] RED GREEN -[ 2 1 ] RED GREEN -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position enum3D of enum3D of difference ------------------------------------------------------------- -[ 0 0 0 ] GREEN RED -[ 0 0 1 ] GREEN RED -[ 0 1 0 ] GREEN RED -[ 0 1 1 ] GREEN RED -[ 0 2 0 ] GREEN RED -[ 0 2 1 ] GREEN RED -[ 1 0 0 ] GREEN RED -[ 1 0 1 ] GREEN RED -[ 1 1 0 ] GREEN RED -[ 1 1 1 ] GREEN RED -[ 1 2 0 ] GREEN RED -[ 1 2 1 ] GREEN RED -[ 2 0 0 ] GREEN RED -[ 2 0 1 ] GREEN RED -[ 2 1 0 ] GREEN RED -[ 2 1 1 ] GREEN RED -[ 2 2 0 ] GREEN RED -[ 2 2 1 ] GREEN RED -[ 3 0 0 ] GREEN RED -[ 3 0 1 ] GREEN RED -[ 3 1 0 ] GREEN RED -[ 3 1 1 ] GREEN RED -[ 3 2 0 ] GREEN RED -[ 3 2 1 ] GREEN RED -24 differences found -attribute: > and > -size: [2] [2] -position float of float of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position float2D of float2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position float3D of float3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position integer of integer of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position integer2D of integer2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position integer3D of integer3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position opaque of opaque of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position opaque2D of opaque2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position opaque3D of opaque3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position string of string of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position string2D of string2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position string3D of string3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position vlen of vlen of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -[ 1 ] 3 0 3 -3 differences found -attribute: > and > -size: [3x2] [3x2] -position vlen2D of vlen2D of difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 1 0 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 1 1 ] 5 0 5 -[ 2 0 ] 6 0 6 -[ 2 0 ] 7 0 7 -[ 2 0 ] 8 0 8 -[ 2 1 ] 9 0 9 -[ 2 1 ] 10 0 10 -[ 2 1 ] 11 0 11 -11 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position vlen3D of vlen3D of difference ------------------------------------------------------------- -[ 0 0 1 ] 1 0 1 -[ 0 1 0 ] 2 0 2 -[ 0 1 1 ] 3 0 3 -[ 0 2 0 ] 4 0 4 -[ 0 2 1 ] 5 0 5 -[ 1 0 0 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 0 1 ] 9 0 9 -[ 1 1 0 ] 10 0 10 -[ 1 1 0 ] 11 0 11 -[ 1 1 1 ] 12 0 12 -[ 1 1 1 ] 13 0 13 -[ 1 2 0 ] 14 0 14 -[ 1 2 0 ] 15 0 15 -[ 1 2 1 ] 16 0 16 -[ 1 2 1 ] 17 0 17 -[ 2 0 0 ] 18 0 18 -[ 2 0 0 ] 19 0 19 -[ 2 0 0 ] 20 0 20 -[ 2 0 1 ] 21 0 21 -[ 2 0 1 ] 22 0 22 -[ 2 0 1 ] 23 0 23 -[ 2 1 0 ] 24 0 24 -[ 2 1 0 ] 25 0 25 -[ 2 1 0 ] 26 0 26 -[ 2 1 1 ] 27 0 27 -[ 2 1 1 ] 28 0 28 -[ 2 1 1 ] 29 0 29 -[ 2 2 0 ] 30 0 30 -[ 2 2 0 ] 31 0 31 -[ 2 2 0 ] 32 0 32 -[ 2 2 1 ] 33 0 33 -[ 2 2 1 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 3 0 0 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 0 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 0 1 ] 41 0 41 -[ 3 0 1 ] 42 0 42 -[ 3 0 1 ] 43 0 43 -[ 3 1 0 ] 44 0 44 -[ 3 1 0 ] 45 0 45 -[ 3 1 0 ] 46 0 46 -[ 3 1 0 ] 47 0 47 -[ 3 1 1 ] 48 0 48 -[ 3 1 1 ] 49 0 49 -[ 3 1 1 ] 50 0 50 -[ 3 1 1 ] 51 0 51 -[ 3 2 0 ] 52 0 52 -[ 3 2 0 ] 53 0 53 -[ 3 2 0 ] 54 0 54 -[ 3 2 0 ] 55 0 55 -[ 3 2 1 ] 56 0 56 -[ 3 2 1 ] 57 0 57 -[ 3 2 1 ] 58 0 58 -[ 3 2 1 ] 59 0 59 -59 differences found --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_700.txt b/tools/h5diff/testfiles/h5diff_700.txt deleted file mode 100644 index 1cf71dd..0000000 --- a/tools/h5diff/testfiles/h5diff_700.txt +++ /dev/null @@ -1,2038 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset - x x /g1 - - -group : and -0 differences found -Attributes status: 30 common, 0 only in obj1, 0 only in obj2 -attribute: > and > -size: [2] [2] -position VLstring of VLstring of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position VLstring2D of VLstring2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position VLstring3D of VLstring3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position array of array of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 0 ] 3 0 3 -[ 1 ] 4 0 4 -[ 1 ] 5 0 5 -[ 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [3x2] [3x2] -position array2D of array2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 0 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 0 1 ] 5 0 5 -[ 0 1 ] 6 0 6 -[ 1 0 ] 7 0 7 -[ 1 0 ] 8 0 8 -[ 1 0 ] 9 0 9 -[ 1 1 ] 10 0 10 -[ 1 1 ] 11 0 11 -[ 1 1 ] 12 0 12 -[ 2 0 ] 13 0 13 -[ 2 0 ] 14 0 14 -[ 2 0 ] 15 0 15 -[ 2 1 ] 16 0 16 -[ 2 1 ] 17 0 17 -[ 2 1 ] 18 0 18 -18 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position array3D of array3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 0 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 0 1 ] 5 0 5 -[ 0 0 1 ] 6 0 6 -[ 0 1 0 ] 7 0 7 -[ 0 1 0 ] 8 0 8 -[ 0 1 0 ] 9 0 9 -[ 0 1 1 ] 10 0 10 -[ 0 1 1 ] 11 0 11 -[ 0 1 1 ] 12 0 12 -[ 0 2 0 ] 13 0 13 -[ 0 2 0 ] 14 0 14 -[ 0 2 0 ] 15 0 15 -[ 0 2 1 ] 16 0 16 -[ 0 2 1 ] 17 0 17 -[ 0 2 1 ] 18 0 18 -[ 1 0 0 ] 19 0 19 -[ 1 0 0 ] 20 0 20 -[ 1 0 0 ] 21 0 21 -[ 1 0 1 ] 22 0 22 -[ 1 0 1 ] 23 0 23 -[ 1 0 1 ] 24 0 24 -[ 1 1 0 ] 25 0 25 -[ 1 1 0 ] 26 0 26 -[ 1 1 0 ] 27 0 27 -[ 1 1 1 ] 28 0 28 -[ 1 1 1 ] 29 0 29 -[ 1 1 1 ] 30 0 30 -[ 1 2 0 ] 31 0 31 -[ 1 2 0 ] 32 0 32 -[ 1 2 0 ] 33 0 33 -[ 1 2 1 ] 34 0 34 -[ 1 2 1 ] 35 0 35 -[ 1 2 1 ] 36 0 36 -[ 2 0 0 ] 37 0 37 -[ 2 0 0 ] 38 0 38 -[ 2 0 0 ] 39 0 39 -[ 2 0 1 ] 40 0 40 -[ 2 0 1 ] 41 0 41 -[ 2 0 1 ] 42 0 42 -[ 2 1 0 ] 43 0 43 -[ 2 1 0 ] 44 0 44 -[ 2 1 0 ] 45 0 45 -[ 2 1 1 ] 46 0 46 -[ 2 1 1 ] 47 0 47 -[ 2 1 1 ] 48 0 48 -[ 2 2 0 ] 49 0 49 -[ 2 2 0 ] 50 0 50 -[ 2 2 0 ] 51 0 51 -[ 2 2 1 ] 52 0 52 -[ 2 2 1 ] 53 0 53 -[ 2 2 1 ] 54 0 54 -[ 3 0 0 ] 55 0 55 -[ 3 0 0 ] 56 0 56 -[ 3 0 0 ] 57 0 57 -[ 3 0 1 ] 58 0 58 -[ 3 0 1 ] 59 0 59 -[ 3 0 1 ] 60 0 60 -[ 3 1 0 ] 61 0 61 -[ 3 1 0 ] 62 0 62 -[ 3 1 0 ] 63 0 63 -[ 3 1 1 ] 64 0 64 -[ 3 1 1 ] 65 0 65 -[ 3 1 1 ] 66 0 66 -[ 3 2 0 ] 67 0 67 -[ 3 2 0 ] 68 0 68 -[ 3 2 0 ] 69 0 69 -[ 3 2 1 ] 70 0 70 -[ 3 2 1 ] 71 0 71 -[ 3 2 1 ] 72 0 72 -72 differences found -attribute: > and > -size: [2] [2] -position bitfield of bitfield of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position bitfield2D of bitfield2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position bitfield3D of bitfield3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position compound of compound of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 1 ] 3 0 3 -[ 1 ] 4 0 4 -4 differences found -attribute: > and > -size: [3x2] [3x2] -position compound2D of compound2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 1 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 1 0 ] 5 0 5 -[ 1 0 ] 6 0 6 -[ 1 1 ] 7 0 7 -[ 1 1 ] 8 0 8 -[ 2 0 ] 9 0 9 -[ 2 0 ] 10 0 10 -[ 2 1 ] 11 0 11 -[ 2 1 ] 12 0 12 -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position compound3D of compound3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 1 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 1 0 ] 5 0 5 -[ 0 1 0 ] 6 0 6 -[ 0 1 1 ] 7 0 7 -[ 0 1 1 ] 8 0 8 -[ 0 2 0 ] 9 0 9 -[ 0 2 0 ] 10 0 10 -[ 0 2 1 ] 11 0 11 -[ 0 2 1 ] 12 0 12 -[ 1 0 0 ] 13 0 13 -[ 1 0 0 ] 14 0 14 -[ 1 0 1 ] 15 0 15 -[ 1 0 1 ] 16 0 16 -[ 1 1 0 ] 17 0 17 -[ 1 1 0 ] 18 0 18 -[ 1 1 1 ] 19 0 19 -[ 1 1 1 ] 20 0 20 -[ 1 2 0 ] 21 0 21 -[ 1 2 0 ] 22 0 22 -[ 1 2 1 ] 23 0 23 -[ 1 2 1 ] 24 0 24 -[ 2 0 0 ] 25 0 25 -[ 2 0 0 ] 26 0 26 -[ 2 0 1 ] 27 0 27 -[ 2 0 1 ] 28 0 28 -[ 2 1 0 ] 29 0 29 -[ 2 1 0 ] 30 0 30 -[ 2 1 1 ] 31 0 31 -[ 2 1 1 ] 32 0 32 -[ 2 2 0 ] 33 0 33 -[ 2 2 0 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 2 2 1 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 1 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 1 0 ] 41 0 41 -[ 3 1 0 ] 42 0 42 -[ 3 1 1 ] 43 0 43 -[ 3 1 1 ] 44 0 44 -[ 3 2 0 ] 45 0 45 -[ 3 2 0 ] 46 0 46 -[ 3 2 1 ] 47 0 47 -[ 3 2 1 ] 48 0 48 -48 differences found -attribute: > and > -size: [2] [2] -position enum of enum of difference ------------------------------------------------------------- -[ 0 ] RED GREEN -[ 1 ] RED GREEN -2 differences found -attribute: > and > -size: [3x2] [3x2] -position enum2D of enum2D of difference ------------------------------------------------------------- -[ 0 0 ] RED GREEN -[ 0 1 ] RED GREEN -[ 1 0 ] RED GREEN -[ 1 1 ] RED GREEN -[ 2 0 ] RED GREEN -[ 2 1 ] RED GREEN -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position enum3D of enum3D of difference ------------------------------------------------------------- -[ 0 0 0 ] GREEN RED -[ 0 0 1 ] GREEN RED -[ 0 1 0 ] GREEN RED -[ 0 1 1 ] GREEN RED -[ 0 2 0 ] GREEN RED -[ 0 2 1 ] GREEN RED -[ 1 0 0 ] GREEN RED -[ 1 0 1 ] GREEN RED -[ 1 1 0 ] GREEN RED -[ 1 1 1 ] GREEN RED -[ 1 2 0 ] GREEN RED -[ 1 2 1 ] GREEN RED -[ 2 0 0 ] GREEN RED -[ 2 0 1 ] GREEN RED -[ 2 1 0 ] GREEN RED -[ 2 1 1 ] GREEN RED -[ 2 2 0 ] GREEN RED -[ 2 2 1 ] GREEN RED -[ 3 0 0 ] GREEN RED -[ 3 0 1 ] GREEN RED -[ 3 1 0 ] GREEN RED -[ 3 1 1 ] GREEN RED -[ 3 2 0 ] GREEN RED -[ 3 2 1 ] GREEN RED -24 differences found -attribute: > and > -size: [2] [2] -position float of float of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position float2D of float2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position float3D of float3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position integer of integer of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position integer2D of integer2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position integer3D of integer3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position opaque of opaque of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position opaque2D of opaque2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position opaque3D of opaque3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position string of string of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position string2D of string2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position string3D of string3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position vlen of vlen of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -[ 1 ] 3 0 3 -3 differences found -attribute: > and > -size: [3x2] [3x2] -position vlen2D of vlen2D of difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 1 0 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 1 1 ] 5 0 5 -[ 2 0 ] 6 0 6 -[ 2 0 ] 7 0 7 -[ 2 0 ] 8 0 8 -[ 2 1 ] 9 0 9 -[ 2 1 ] 10 0 10 -[ 2 1 ] 11 0 11 -11 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position vlen3D of vlen3D of difference ------------------------------------------------------------- -[ 0 0 1 ] 1 0 1 -[ 0 1 0 ] 2 0 2 -[ 0 1 1 ] 3 0 3 -[ 0 2 0 ] 4 0 4 -[ 0 2 1 ] 5 0 5 -[ 1 0 0 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 0 1 ] 9 0 9 -[ 1 1 0 ] 10 0 10 -[ 1 1 0 ] 11 0 11 -[ 1 1 1 ] 12 0 12 -[ 1 1 1 ] 13 0 13 -[ 1 2 0 ] 14 0 14 -[ 1 2 0 ] 15 0 15 -[ 1 2 1 ] 16 0 16 -[ 1 2 1 ] 17 0 17 -[ 2 0 0 ] 18 0 18 -[ 2 0 0 ] 19 0 19 -[ 2 0 0 ] 20 0 20 -[ 2 0 1 ] 21 0 21 -[ 2 0 1 ] 22 0 22 -[ 2 0 1 ] 23 0 23 -[ 2 1 0 ] 24 0 24 -[ 2 1 0 ] 25 0 25 -[ 2 1 0 ] 26 0 26 -[ 2 1 1 ] 27 0 27 -[ 2 1 1 ] 28 0 28 -[ 2 1 1 ] 29 0 29 -[ 2 2 0 ] 30 0 30 -[ 2 2 0 ] 31 0 31 -[ 2 2 0 ] 32 0 32 -[ 2 2 1 ] 33 0 33 -[ 2 2 1 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 3 0 0 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 0 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 0 1 ] 41 0 41 -[ 3 0 1 ] 42 0 42 -[ 3 0 1 ] 43 0 43 -[ 3 1 0 ] 44 0 44 -[ 3 1 0 ] 45 0 45 -[ 3 1 0 ] 46 0 46 -[ 3 1 0 ] 47 0 47 -[ 3 1 1 ] 48 0 48 -[ 3 1 1 ] 49 0 49 -[ 3 1 1 ] 50 0 50 -[ 3 1 1 ] 51 0 51 -[ 3 2 0 ] 52 0 52 -[ 3 2 0 ] 53 0 53 -[ 3 2 0 ] 54 0 54 -[ 3 2 0 ] 55 0 55 -[ 3 2 1 ] 56 0 56 -[ 3 2 1 ] 57 0 57 -[ 3 2 1 ] 58 0 58 -[ 3 2 1 ] 59 0 59 -59 differences found - -dataset: and -Not comparable: or is an empty dataset -0 differences found -Attributes status: 33 common, 0 only in obj1, 0 only in obj2 -attribute: > and > -size: [2] [2] -position VLstring of VLstring of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position VLstring2D of VLstring2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position VLstring3D of VLstring3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position array of array of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 0 ] 3 0 3 -[ 1 ] 4 0 4 -[ 1 ] 5 0 5 -[ 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [3x2] [3x2] -position array2D of array2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 0 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 0 1 ] 5 0 5 -[ 0 1 ] 6 0 6 -[ 1 0 ] 7 0 7 -[ 1 0 ] 8 0 8 -[ 1 0 ] 9 0 9 -[ 1 1 ] 10 0 10 -[ 1 1 ] 11 0 11 -[ 1 1 ] 12 0 12 -[ 2 0 ] 13 0 13 -[ 2 0 ] 14 0 14 -[ 2 0 ] 15 0 15 -[ 2 1 ] 16 0 16 -[ 2 1 ] 17 0 17 -[ 2 1 ] 18 0 18 -18 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position array3D of array3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 0 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 0 1 ] 5 0 5 -[ 0 0 1 ] 6 0 6 -[ 0 1 0 ] 7 0 7 -[ 0 1 0 ] 8 0 8 -[ 0 1 0 ] 9 0 9 -[ 0 1 1 ] 10 0 10 -[ 0 1 1 ] 11 0 11 -[ 0 1 1 ] 12 0 12 -[ 0 2 0 ] 13 0 13 -[ 0 2 0 ] 14 0 14 -[ 0 2 0 ] 15 0 15 -[ 0 2 1 ] 16 0 16 -[ 0 2 1 ] 17 0 17 -[ 0 2 1 ] 18 0 18 -[ 1 0 0 ] 19 0 19 -[ 1 0 0 ] 20 0 20 -[ 1 0 0 ] 21 0 21 -[ 1 0 1 ] 22 0 22 -[ 1 0 1 ] 23 0 23 -[ 1 0 1 ] 24 0 24 -[ 1 1 0 ] 25 0 25 -[ 1 1 0 ] 26 0 26 -[ 1 1 0 ] 27 0 27 -[ 1 1 1 ] 28 0 28 -[ 1 1 1 ] 29 0 29 -[ 1 1 1 ] 30 0 30 -[ 1 2 0 ] 31 0 31 -[ 1 2 0 ] 32 0 32 -[ 1 2 0 ] 33 0 33 -[ 1 2 1 ] 34 0 34 -[ 1 2 1 ] 35 0 35 -[ 1 2 1 ] 36 0 36 -[ 2 0 0 ] 37 0 37 -[ 2 0 0 ] 38 0 38 -[ 2 0 0 ] 39 0 39 -[ 2 0 1 ] 40 0 40 -[ 2 0 1 ] 41 0 41 -[ 2 0 1 ] 42 0 42 -[ 2 1 0 ] 43 0 43 -[ 2 1 0 ] 44 0 44 -[ 2 1 0 ] 45 0 45 -[ 2 1 1 ] 46 0 46 -[ 2 1 1 ] 47 0 47 -[ 2 1 1 ] 48 0 48 -[ 2 2 0 ] 49 0 49 -[ 2 2 0 ] 50 0 50 -[ 2 2 0 ] 51 0 51 -[ 2 2 1 ] 52 0 52 -[ 2 2 1 ] 53 0 53 -[ 2 2 1 ] 54 0 54 -[ 3 0 0 ] 55 0 55 -[ 3 0 0 ] 56 0 56 -[ 3 0 0 ] 57 0 57 -[ 3 0 1 ] 58 0 58 -[ 3 0 1 ] 59 0 59 -[ 3 0 1 ] 60 0 60 -[ 3 1 0 ] 61 0 61 -[ 3 1 0 ] 62 0 62 -[ 3 1 0 ] 63 0 63 -[ 3 1 1 ] 64 0 64 -[ 3 1 1 ] 65 0 65 -[ 3 1 1 ] 66 0 66 -[ 3 2 0 ] 67 0 67 -[ 3 2 0 ] 68 0 68 -[ 3 2 0 ] 69 0 69 -[ 3 2 1 ] 70 0 70 -[ 3 2 1 ] 71 0 71 -[ 3 2 1 ] 72 0 72 -72 differences found -attribute: > and > -size: [2] [2] -position bitfield of bitfield of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position bitfield2D of bitfield2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position bitfield3D of bitfield3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position compound of compound of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 1 ] 3 0 3 -[ 1 ] 4 0 4 -4 differences found -attribute: > and > -size: [3x2] [3x2] -position compound2D of compound2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 1 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 1 0 ] 5 0 5 -[ 1 0 ] 6 0 6 -[ 1 1 ] 7 0 7 -[ 1 1 ] 8 0 8 -[ 2 0 ] 9 0 9 -[ 2 0 ] 10 0 10 -[ 2 1 ] 11 0 11 -[ 2 1 ] 12 0 12 -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position compound3D of compound3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 1 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 1 0 ] 5 0 5 -[ 0 1 0 ] 6 0 6 -[ 0 1 1 ] 7 0 7 -[ 0 1 1 ] 8 0 8 -[ 0 2 0 ] 9 0 9 -[ 0 2 0 ] 10 0 10 -[ 0 2 1 ] 11 0 11 -[ 0 2 1 ] 12 0 12 -[ 1 0 0 ] 13 0 13 -[ 1 0 0 ] 14 0 14 -[ 1 0 1 ] 15 0 15 -[ 1 0 1 ] 16 0 16 -[ 1 1 0 ] 17 0 17 -[ 1 1 0 ] 18 0 18 -[ 1 1 1 ] 19 0 19 -[ 1 1 1 ] 20 0 20 -[ 1 2 0 ] 21 0 21 -[ 1 2 0 ] 22 0 22 -[ 1 2 1 ] 23 0 23 -[ 1 2 1 ] 24 0 24 -[ 2 0 0 ] 25 0 25 -[ 2 0 0 ] 26 0 26 -[ 2 0 1 ] 27 0 27 -[ 2 0 1 ] 28 0 28 -[ 2 1 0 ] 29 0 29 -[ 2 1 0 ] 30 0 30 -[ 2 1 1 ] 31 0 31 -[ 2 1 1 ] 32 0 32 -[ 2 2 0 ] 33 0 33 -[ 2 2 0 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 2 2 1 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 1 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 1 0 ] 41 0 41 -[ 3 1 0 ] 42 0 42 -[ 3 1 1 ] 43 0 43 -[ 3 1 1 ] 44 0 44 -[ 3 2 0 ] 45 0 45 -[ 3 2 0 ] 46 0 46 -[ 3 2 1 ] 47 0 47 -[ 3 2 1 ] 48 0 48 -48 differences found -attribute: > and > -size: [2] [2] -position enum of enum of difference ------------------------------------------------------------- -[ 0 ] RED GREEN -[ 1 ] RED GREEN -2 differences found -attribute: > and > -size: [3x2] [3x2] -position enum2D of enum2D of difference ------------------------------------------------------------- -[ 0 0 ] RED GREEN -[ 0 1 ] RED GREEN -[ 1 0 ] RED GREEN -[ 1 1 ] RED GREEN -[ 2 0 ] RED GREEN -[ 2 1 ] RED GREEN -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position enum3D of enum3D of difference ------------------------------------------------------------- -[ 0 0 0 ] GREEN RED -[ 0 0 1 ] GREEN RED -[ 0 1 0 ] GREEN RED -[ 0 1 1 ] GREEN RED -[ 0 2 0 ] GREEN RED -[ 0 2 1 ] GREEN RED -[ 1 0 0 ] GREEN RED -[ 1 0 1 ] GREEN RED -[ 1 1 0 ] GREEN RED -[ 1 1 1 ] GREEN RED -[ 1 2 0 ] GREEN RED -[ 1 2 1 ] GREEN RED -[ 2 0 0 ] GREEN RED -[ 2 0 1 ] GREEN RED -[ 2 1 0 ] GREEN RED -[ 2 1 1 ] GREEN RED -[ 2 2 0 ] GREEN RED -[ 2 2 1 ] GREEN RED -[ 3 0 0 ] GREEN RED -[ 3 0 1 ] GREEN RED -[ 3 1 0 ] GREEN RED -[ 3 1 1 ] GREEN RED -[ 3 2 0 ] GREEN RED -[ 3 2 1 ] GREEN RED -24 differences found -attribute: > and > -size: [2] [2] -position float of float of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position float2D of float2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position float3D of float3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position integer of integer of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position integer2D of integer2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position integer3D of integer3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position opaque of opaque of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position opaque2D of opaque2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position opaque3D of opaque3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -0 differences found -attribute: > and > -0 differences found -attribute: > and > -0 differences found -attribute: > and > -size: [2] [2] -position string of string of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position string2D of string2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position string3D of string3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position vlen of vlen of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -[ 1 ] 3 0 3 -3 differences found -attribute: > and > -size: [3x2] [3x2] -position vlen2D of vlen2D of difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 1 0 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 1 1 ] 5 0 5 -[ 2 0 ] 6 0 6 -[ 2 0 ] 7 0 7 -[ 2 0 ] 8 0 8 -[ 2 1 ] 9 0 9 -[ 2 1 ] 10 0 10 -[ 2 1 ] 11 0 11 -11 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position vlen3D of vlen3D of difference ------------------------------------------------------------- -[ 0 0 1 ] 1 0 1 -[ 0 1 0 ] 2 0 2 -[ 0 1 1 ] 3 0 3 -[ 0 2 0 ] 4 0 4 -[ 0 2 1 ] 5 0 5 -[ 1 0 0 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 0 1 ] 9 0 9 -[ 1 1 0 ] 10 0 10 -[ 1 1 0 ] 11 0 11 -[ 1 1 1 ] 12 0 12 -[ 1 1 1 ] 13 0 13 -[ 1 2 0 ] 14 0 14 -[ 1 2 0 ] 15 0 15 -[ 1 2 1 ] 16 0 16 -[ 1 2 1 ] 17 0 17 -[ 2 0 0 ] 18 0 18 -[ 2 0 0 ] 19 0 19 -[ 2 0 0 ] 20 0 20 -[ 2 0 1 ] 21 0 21 -[ 2 0 1 ] 22 0 22 -[ 2 0 1 ] 23 0 23 -[ 2 1 0 ] 24 0 24 -[ 2 1 0 ] 25 0 25 -[ 2 1 0 ] 26 0 26 -[ 2 1 1 ] 27 0 27 -[ 2 1 1 ] 28 0 28 -[ 2 1 1 ] 29 0 29 -[ 2 2 0 ] 30 0 30 -[ 2 2 0 ] 31 0 31 -[ 2 2 0 ] 32 0 32 -[ 2 2 1 ] 33 0 33 -[ 2 2 1 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 3 0 0 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 0 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 0 1 ] 41 0 41 -[ 3 0 1 ] 42 0 42 -[ 3 0 1 ] 43 0 43 -[ 3 1 0 ] 44 0 44 -[ 3 1 0 ] 45 0 45 -[ 3 1 0 ] 46 0 46 -[ 3 1 0 ] 47 0 47 -[ 3 1 1 ] 48 0 48 -[ 3 1 1 ] 49 0 49 -[ 3 1 1 ] 50 0 50 -[ 3 1 1 ] 51 0 51 -[ 3 2 0 ] 52 0 52 -[ 3 2 0 ] 53 0 53 -[ 3 2 0 ] 54 0 54 -[ 3 2 0 ] 55 0 55 -[ 3 2 1 ] 56 0 56 -[ 3 2 1 ] 57 0 57 -[ 3 2 1 ] 58 0 58 -[ 3 2 1 ] 59 0 59 -59 differences found - -group : and -0 differences found -Attributes status: 30 common, 0 only in obj1, 0 only in obj2 -attribute: > and > -size: [2] [2] -position VLstring of VLstring of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position VLstring2D of VLstring2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position VLstring3D of VLstring3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position array of array of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 0 ] 3 0 3 -[ 1 ] 4 0 4 -[ 1 ] 5 0 5 -[ 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [3x2] [3x2] -position array2D of array2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 0 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 0 1 ] 5 0 5 -[ 0 1 ] 6 0 6 -[ 1 0 ] 7 0 7 -[ 1 0 ] 8 0 8 -[ 1 0 ] 9 0 9 -[ 1 1 ] 10 0 10 -[ 1 1 ] 11 0 11 -[ 1 1 ] 12 0 12 -[ 2 0 ] 13 0 13 -[ 2 0 ] 14 0 14 -[ 2 0 ] 15 0 15 -[ 2 1 ] 16 0 16 -[ 2 1 ] 17 0 17 -[ 2 1 ] 18 0 18 -18 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position array3D of array3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 0 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 0 1 ] 5 0 5 -[ 0 0 1 ] 6 0 6 -[ 0 1 0 ] 7 0 7 -[ 0 1 0 ] 8 0 8 -[ 0 1 0 ] 9 0 9 -[ 0 1 1 ] 10 0 10 -[ 0 1 1 ] 11 0 11 -[ 0 1 1 ] 12 0 12 -[ 0 2 0 ] 13 0 13 -[ 0 2 0 ] 14 0 14 -[ 0 2 0 ] 15 0 15 -[ 0 2 1 ] 16 0 16 -[ 0 2 1 ] 17 0 17 -[ 0 2 1 ] 18 0 18 -[ 1 0 0 ] 19 0 19 -[ 1 0 0 ] 20 0 20 -[ 1 0 0 ] 21 0 21 -[ 1 0 1 ] 22 0 22 -[ 1 0 1 ] 23 0 23 -[ 1 0 1 ] 24 0 24 -[ 1 1 0 ] 25 0 25 -[ 1 1 0 ] 26 0 26 -[ 1 1 0 ] 27 0 27 -[ 1 1 1 ] 28 0 28 -[ 1 1 1 ] 29 0 29 -[ 1 1 1 ] 30 0 30 -[ 1 2 0 ] 31 0 31 -[ 1 2 0 ] 32 0 32 -[ 1 2 0 ] 33 0 33 -[ 1 2 1 ] 34 0 34 -[ 1 2 1 ] 35 0 35 -[ 1 2 1 ] 36 0 36 -[ 2 0 0 ] 37 0 37 -[ 2 0 0 ] 38 0 38 -[ 2 0 0 ] 39 0 39 -[ 2 0 1 ] 40 0 40 -[ 2 0 1 ] 41 0 41 -[ 2 0 1 ] 42 0 42 -[ 2 1 0 ] 43 0 43 -[ 2 1 0 ] 44 0 44 -[ 2 1 0 ] 45 0 45 -[ 2 1 1 ] 46 0 46 -[ 2 1 1 ] 47 0 47 -[ 2 1 1 ] 48 0 48 -[ 2 2 0 ] 49 0 49 -[ 2 2 0 ] 50 0 50 -[ 2 2 0 ] 51 0 51 -[ 2 2 1 ] 52 0 52 -[ 2 2 1 ] 53 0 53 -[ 2 2 1 ] 54 0 54 -[ 3 0 0 ] 55 0 55 -[ 3 0 0 ] 56 0 56 -[ 3 0 0 ] 57 0 57 -[ 3 0 1 ] 58 0 58 -[ 3 0 1 ] 59 0 59 -[ 3 0 1 ] 60 0 60 -[ 3 1 0 ] 61 0 61 -[ 3 1 0 ] 62 0 62 -[ 3 1 0 ] 63 0 63 -[ 3 1 1 ] 64 0 64 -[ 3 1 1 ] 65 0 65 -[ 3 1 1 ] 66 0 66 -[ 3 2 0 ] 67 0 67 -[ 3 2 0 ] 68 0 68 -[ 3 2 0 ] 69 0 69 -[ 3 2 1 ] 70 0 70 -[ 3 2 1 ] 71 0 71 -[ 3 2 1 ] 72 0 72 -72 differences found -attribute: > and > -size: [2] [2] -position bitfield of bitfield of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position bitfield2D of bitfield2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position bitfield3D of bitfield3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position compound of compound of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 1 ] 3 0 3 -[ 1 ] 4 0 4 -4 differences found -attribute: > and > -size: [3x2] [3x2] -position compound2D of compound2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 1 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 1 0 ] 5 0 5 -[ 1 0 ] 6 0 6 -[ 1 1 ] 7 0 7 -[ 1 1 ] 8 0 8 -[ 2 0 ] 9 0 9 -[ 2 0 ] 10 0 10 -[ 2 1 ] 11 0 11 -[ 2 1 ] 12 0 12 -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position compound3D of compound3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 1 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 1 0 ] 5 0 5 -[ 0 1 0 ] 6 0 6 -[ 0 1 1 ] 7 0 7 -[ 0 1 1 ] 8 0 8 -[ 0 2 0 ] 9 0 9 -[ 0 2 0 ] 10 0 10 -[ 0 2 1 ] 11 0 11 -[ 0 2 1 ] 12 0 12 -[ 1 0 0 ] 13 0 13 -[ 1 0 0 ] 14 0 14 -[ 1 0 1 ] 15 0 15 -[ 1 0 1 ] 16 0 16 -[ 1 1 0 ] 17 0 17 -[ 1 1 0 ] 18 0 18 -[ 1 1 1 ] 19 0 19 -[ 1 1 1 ] 20 0 20 -[ 1 2 0 ] 21 0 21 -[ 1 2 0 ] 22 0 22 -[ 1 2 1 ] 23 0 23 -[ 1 2 1 ] 24 0 24 -[ 2 0 0 ] 25 0 25 -[ 2 0 0 ] 26 0 26 -[ 2 0 1 ] 27 0 27 -[ 2 0 1 ] 28 0 28 -[ 2 1 0 ] 29 0 29 -[ 2 1 0 ] 30 0 30 -[ 2 1 1 ] 31 0 31 -[ 2 1 1 ] 32 0 32 -[ 2 2 0 ] 33 0 33 -[ 2 2 0 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 2 2 1 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 1 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 1 0 ] 41 0 41 -[ 3 1 0 ] 42 0 42 -[ 3 1 1 ] 43 0 43 -[ 3 1 1 ] 44 0 44 -[ 3 2 0 ] 45 0 45 -[ 3 2 0 ] 46 0 46 -[ 3 2 1 ] 47 0 47 -[ 3 2 1 ] 48 0 48 -48 differences found -attribute: > and > -size: [2] [2] -position enum of enum of difference ------------------------------------------------------------- -[ 0 ] RED GREEN -[ 1 ] RED GREEN -2 differences found -attribute: > and > -size: [3x2] [3x2] -position enum2D of enum2D of difference ------------------------------------------------------------- -[ 0 0 ] RED GREEN -[ 0 1 ] RED GREEN -[ 1 0 ] RED GREEN -[ 1 1 ] RED GREEN -[ 2 0 ] RED GREEN -[ 2 1 ] RED GREEN -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position enum3D of enum3D of difference ------------------------------------------------------------- -[ 0 0 0 ] GREEN RED -[ 0 0 1 ] GREEN RED -[ 0 1 0 ] GREEN RED -[ 0 1 1 ] GREEN RED -[ 0 2 0 ] GREEN RED -[ 0 2 1 ] GREEN RED -[ 1 0 0 ] GREEN RED -[ 1 0 1 ] GREEN RED -[ 1 1 0 ] GREEN RED -[ 1 1 1 ] GREEN RED -[ 1 2 0 ] GREEN RED -[ 1 2 1 ] GREEN RED -[ 2 0 0 ] GREEN RED -[ 2 0 1 ] GREEN RED -[ 2 1 0 ] GREEN RED -[ 2 1 1 ] GREEN RED -[ 2 2 0 ] GREEN RED -[ 2 2 1 ] GREEN RED -[ 3 0 0 ] GREEN RED -[ 3 0 1 ] GREEN RED -[ 3 1 0 ] GREEN RED -[ 3 1 1 ] GREEN RED -[ 3 2 0 ] GREEN RED -[ 3 2 1 ] GREEN RED -24 differences found -attribute: > and > -size: [2] [2] -position float of float of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position float2D of float2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position float3D of float3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position integer of integer of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position integer2D of integer2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position integer3D of integer3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position opaque of opaque of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position opaque2D of opaque2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position opaque3D of opaque3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position string of string of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position string2D of string2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position string3D of string3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position vlen of vlen of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -[ 1 ] 3 0 3 -3 differences found -attribute: > and > -size: [3x2] [3x2] -position vlen2D of vlen2D of difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 1 0 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 1 1 ] 5 0 5 -[ 2 0 ] 6 0 6 -[ 2 0 ] 7 0 7 -[ 2 0 ] 8 0 8 -[ 2 1 ] 9 0 9 -[ 2 1 ] 10 0 10 -[ 2 1 ] 11 0 11 -11 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position vlen3D of vlen3D of difference ------------------------------------------------------------- -[ 0 0 1 ] 1 0 1 -[ 0 1 0 ] 2 0 2 -[ 0 1 1 ] 3 0 3 -[ 0 2 0 ] 4 0 4 -[ 0 2 1 ] 5 0 5 -[ 1 0 0 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 0 1 ] 9 0 9 -[ 1 1 0 ] 10 0 10 -[ 1 1 0 ] 11 0 11 -[ 1 1 1 ] 12 0 12 -[ 1 1 1 ] 13 0 13 -[ 1 2 0 ] 14 0 14 -[ 1 2 0 ] 15 0 15 -[ 1 2 1 ] 16 0 16 -[ 1 2 1 ] 17 0 17 -[ 2 0 0 ] 18 0 18 -[ 2 0 0 ] 19 0 19 -[ 2 0 0 ] 20 0 20 -[ 2 0 1 ] 21 0 21 -[ 2 0 1 ] 22 0 22 -[ 2 0 1 ] 23 0 23 -[ 2 1 0 ] 24 0 24 -[ 2 1 0 ] 25 0 25 -[ 2 1 0 ] 26 0 26 -[ 2 1 1 ] 27 0 27 -[ 2 1 1 ] 28 0 28 -[ 2 1 1 ] 29 0 29 -[ 2 2 0 ] 30 0 30 -[ 2 2 0 ] 31 0 31 -[ 2 2 0 ] 32 0 32 -[ 2 2 1 ] 33 0 33 -[ 2 2 1 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 3 0 0 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 0 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 0 1 ] 41 0 41 -[ 3 0 1 ] 42 0 42 -[ 3 0 1 ] 43 0 43 -[ 3 1 0 ] 44 0 44 -[ 3 1 0 ] 45 0 45 -[ 3 1 0 ] 46 0 46 -[ 3 1 0 ] 47 0 47 -[ 3 1 1 ] 48 0 48 -[ 3 1 1 ] 49 0 49 -[ 3 1 1 ] 50 0 50 -[ 3 1 1 ] 51 0 51 -[ 3 2 0 ] 52 0 52 -[ 3 2 0 ] 53 0 53 -[ 3 2 0 ] 54 0 54 -[ 3 2 0 ] 55 0 55 -[ 3 2 1 ] 56 0 56 -[ 3 2 1 ] 57 0 57 -[ 3 2 1 ] 58 0 58 -[ 3 2 1 ] 59 0 59 -59 differences found --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_701.txt b/tools/h5diff/testfiles/h5diff_701.txt deleted file mode 100644 index 405ab2f..0000000 --- a/tools/h5diff/testfiles/h5diff_701.txt +++ /dev/null @@ -1,2137 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset - x x /g1 - - -group : and -0 differences found - obj1 obj2 - -------------------------------------- - x x VLstring - x x VLstring2D - x x VLstring3D - x x array - x x array2D - x x array3D - x x bitfield - x x bitfield2D - x x bitfield3D - x x compound - x x compound2D - x x compound3D - x x enum - x x enum2D - x x enum3D - x x float - x x float2D - x x float3D - x x integer - x x integer2D - x x integer3D - x x opaque - x x opaque2D - x x opaque3D - x x string - x x string2D - x x string3D - x x vlen - x x vlen2D - x x vlen3D -Attributes status: 30 common, 0 only in obj1, 0 only in obj2 -attribute: > and > -size: [2] [2] -position VLstring of VLstring of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position VLstring2D of VLstring2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position VLstring3D of VLstring3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position array of array of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 0 ] 3 0 3 -[ 1 ] 4 0 4 -[ 1 ] 5 0 5 -[ 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [3x2] [3x2] -position array2D of array2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 0 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 0 1 ] 5 0 5 -[ 0 1 ] 6 0 6 -[ 1 0 ] 7 0 7 -[ 1 0 ] 8 0 8 -[ 1 0 ] 9 0 9 -[ 1 1 ] 10 0 10 -[ 1 1 ] 11 0 11 -[ 1 1 ] 12 0 12 -[ 2 0 ] 13 0 13 -[ 2 0 ] 14 0 14 -[ 2 0 ] 15 0 15 -[ 2 1 ] 16 0 16 -[ 2 1 ] 17 0 17 -[ 2 1 ] 18 0 18 -18 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position array3D of array3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 0 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 0 1 ] 5 0 5 -[ 0 0 1 ] 6 0 6 -[ 0 1 0 ] 7 0 7 -[ 0 1 0 ] 8 0 8 -[ 0 1 0 ] 9 0 9 -[ 0 1 1 ] 10 0 10 -[ 0 1 1 ] 11 0 11 -[ 0 1 1 ] 12 0 12 -[ 0 2 0 ] 13 0 13 -[ 0 2 0 ] 14 0 14 -[ 0 2 0 ] 15 0 15 -[ 0 2 1 ] 16 0 16 -[ 0 2 1 ] 17 0 17 -[ 0 2 1 ] 18 0 18 -[ 1 0 0 ] 19 0 19 -[ 1 0 0 ] 20 0 20 -[ 1 0 0 ] 21 0 21 -[ 1 0 1 ] 22 0 22 -[ 1 0 1 ] 23 0 23 -[ 1 0 1 ] 24 0 24 -[ 1 1 0 ] 25 0 25 -[ 1 1 0 ] 26 0 26 -[ 1 1 0 ] 27 0 27 -[ 1 1 1 ] 28 0 28 -[ 1 1 1 ] 29 0 29 -[ 1 1 1 ] 30 0 30 -[ 1 2 0 ] 31 0 31 -[ 1 2 0 ] 32 0 32 -[ 1 2 0 ] 33 0 33 -[ 1 2 1 ] 34 0 34 -[ 1 2 1 ] 35 0 35 -[ 1 2 1 ] 36 0 36 -[ 2 0 0 ] 37 0 37 -[ 2 0 0 ] 38 0 38 -[ 2 0 0 ] 39 0 39 -[ 2 0 1 ] 40 0 40 -[ 2 0 1 ] 41 0 41 -[ 2 0 1 ] 42 0 42 -[ 2 1 0 ] 43 0 43 -[ 2 1 0 ] 44 0 44 -[ 2 1 0 ] 45 0 45 -[ 2 1 1 ] 46 0 46 -[ 2 1 1 ] 47 0 47 -[ 2 1 1 ] 48 0 48 -[ 2 2 0 ] 49 0 49 -[ 2 2 0 ] 50 0 50 -[ 2 2 0 ] 51 0 51 -[ 2 2 1 ] 52 0 52 -[ 2 2 1 ] 53 0 53 -[ 2 2 1 ] 54 0 54 -[ 3 0 0 ] 55 0 55 -[ 3 0 0 ] 56 0 56 -[ 3 0 0 ] 57 0 57 -[ 3 0 1 ] 58 0 58 -[ 3 0 1 ] 59 0 59 -[ 3 0 1 ] 60 0 60 -[ 3 1 0 ] 61 0 61 -[ 3 1 0 ] 62 0 62 -[ 3 1 0 ] 63 0 63 -[ 3 1 1 ] 64 0 64 -[ 3 1 1 ] 65 0 65 -[ 3 1 1 ] 66 0 66 -[ 3 2 0 ] 67 0 67 -[ 3 2 0 ] 68 0 68 -[ 3 2 0 ] 69 0 69 -[ 3 2 1 ] 70 0 70 -[ 3 2 1 ] 71 0 71 -[ 3 2 1 ] 72 0 72 -72 differences found -attribute: > and > -size: [2] [2] -position bitfield of bitfield of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position bitfield2D of bitfield2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position bitfield3D of bitfield3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position compound of compound of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 1 ] 3 0 3 -[ 1 ] 4 0 4 -4 differences found -attribute: > and > -size: [3x2] [3x2] -position compound2D of compound2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 1 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 1 0 ] 5 0 5 -[ 1 0 ] 6 0 6 -[ 1 1 ] 7 0 7 -[ 1 1 ] 8 0 8 -[ 2 0 ] 9 0 9 -[ 2 0 ] 10 0 10 -[ 2 1 ] 11 0 11 -[ 2 1 ] 12 0 12 -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position compound3D of compound3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 1 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 1 0 ] 5 0 5 -[ 0 1 0 ] 6 0 6 -[ 0 1 1 ] 7 0 7 -[ 0 1 1 ] 8 0 8 -[ 0 2 0 ] 9 0 9 -[ 0 2 0 ] 10 0 10 -[ 0 2 1 ] 11 0 11 -[ 0 2 1 ] 12 0 12 -[ 1 0 0 ] 13 0 13 -[ 1 0 0 ] 14 0 14 -[ 1 0 1 ] 15 0 15 -[ 1 0 1 ] 16 0 16 -[ 1 1 0 ] 17 0 17 -[ 1 1 0 ] 18 0 18 -[ 1 1 1 ] 19 0 19 -[ 1 1 1 ] 20 0 20 -[ 1 2 0 ] 21 0 21 -[ 1 2 0 ] 22 0 22 -[ 1 2 1 ] 23 0 23 -[ 1 2 1 ] 24 0 24 -[ 2 0 0 ] 25 0 25 -[ 2 0 0 ] 26 0 26 -[ 2 0 1 ] 27 0 27 -[ 2 0 1 ] 28 0 28 -[ 2 1 0 ] 29 0 29 -[ 2 1 0 ] 30 0 30 -[ 2 1 1 ] 31 0 31 -[ 2 1 1 ] 32 0 32 -[ 2 2 0 ] 33 0 33 -[ 2 2 0 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 2 2 1 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 1 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 1 0 ] 41 0 41 -[ 3 1 0 ] 42 0 42 -[ 3 1 1 ] 43 0 43 -[ 3 1 1 ] 44 0 44 -[ 3 2 0 ] 45 0 45 -[ 3 2 0 ] 46 0 46 -[ 3 2 1 ] 47 0 47 -[ 3 2 1 ] 48 0 48 -48 differences found -attribute: > and > -size: [2] [2] -position enum of enum of difference ------------------------------------------------------------- -[ 0 ] RED GREEN -[ 1 ] RED GREEN -2 differences found -attribute: > and > -size: [3x2] [3x2] -position enum2D of enum2D of difference ------------------------------------------------------------- -[ 0 0 ] RED GREEN -[ 0 1 ] RED GREEN -[ 1 0 ] RED GREEN -[ 1 1 ] RED GREEN -[ 2 0 ] RED GREEN -[ 2 1 ] RED GREEN -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position enum3D of enum3D of difference ------------------------------------------------------------- -[ 0 0 0 ] GREEN RED -[ 0 0 1 ] GREEN RED -[ 0 1 0 ] GREEN RED -[ 0 1 1 ] GREEN RED -[ 0 2 0 ] GREEN RED -[ 0 2 1 ] GREEN RED -[ 1 0 0 ] GREEN RED -[ 1 0 1 ] GREEN RED -[ 1 1 0 ] GREEN RED -[ 1 1 1 ] GREEN RED -[ 1 2 0 ] GREEN RED -[ 1 2 1 ] GREEN RED -[ 2 0 0 ] GREEN RED -[ 2 0 1 ] GREEN RED -[ 2 1 0 ] GREEN RED -[ 2 1 1 ] GREEN RED -[ 2 2 0 ] GREEN RED -[ 2 2 1 ] GREEN RED -[ 3 0 0 ] GREEN RED -[ 3 0 1 ] GREEN RED -[ 3 1 0 ] GREEN RED -[ 3 1 1 ] GREEN RED -[ 3 2 0 ] GREEN RED -[ 3 2 1 ] GREEN RED -24 differences found -attribute: > and > -size: [2] [2] -position float of float of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position float2D of float2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position float3D of float3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position integer of integer of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position integer2D of integer2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position integer3D of integer3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position opaque of opaque of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position opaque2D of opaque2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position opaque3D of opaque3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position string of string of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position string2D of string2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position string3D of string3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position vlen of vlen of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -[ 1 ] 3 0 3 -3 differences found -attribute: > and > -size: [3x2] [3x2] -position vlen2D of vlen2D of difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 1 0 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 1 1 ] 5 0 5 -[ 2 0 ] 6 0 6 -[ 2 0 ] 7 0 7 -[ 2 0 ] 8 0 8 -[ 2 1 ] 9 0 9 -[ 2 1 ] 10 0 10 -[ 2 1 ] 11 0 11 -11 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position vlen3D of vlen3D of difference ------------------------------------------------------------- -[ 0 0 1 ] 1 0 1 -[ 0 1 0 ] 2 0 2 -[ 0 1 1 ] 3 0 3 -[ 0 2 0 ] 4 0 4 -[ 0 2 1 ] 5 0 5 -[ 1 0 0 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 0 1 ] 9 0 9 -[ 1 1 0 ] 10 0 10 -[ 1 1 0 ] 11 0 11 -[ 1 1 1 ] 12 0 12 -[ 1 1 1 ] 13 0 13 -[ 1 2 0 ] 14 0 14 -[ 1 2 0 ] 15 0 15 -[ 1 2 1 ] 16 0 16 -[ 1 2 1 ] 17 0 17 -[ 2 0 0 ] 18 0 18 -[ 2 0 0 ] 19 0 19 -[ 2 0 0 ] 20 0 20 -[ 2 0 1 ] 21 0 21 -[ 2 0 1 ] 22 0 22 -[ 2 0 1 ] 23 0 23 -[ 2 1 0 ] 24 0 24 -[ 2 1 0 ] 25 0 25 -[ 2 1 0 ] 26 0 26 -[ 2 1 1 ] 27 0 27 -[ 2 1 1 ] 28 0 28 -[ 2 1 1 ] 29 0 29 -[ 2 2 0 ] 30 0 30 -[ 2 2 0 ] 31 0 31 -[ 2 2 0 ] 32 0 32 -[ 2 2 1 ] 33 0 33 -[ 2 2 1 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 3 0 0 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 0 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 0 1 ] 41 0 41 -[ 3 0 1 ] 42 0 42 -[ 3 0 1 ] 43 0 43 -[ 3 1 0 ] 44 0 44 -[ 3 1 0 ] 45 0 45 -[ 3 1 0 ] 46 0 46 -[ 3 1 0 ] 47 0 47 -[ 3 1 1 ] 48 0 48 -[ 3 1 1 ] 49 0 49 -[ 3 1 1 ] 50 0 50 -[ 3 1 1 ] 51 0 51 -[ 3 2 0 ] 52 0 52 -[ 3 2 0 ] 53 0 53 -[ 3 2 0 ] 54 0 54 -[ 3 2 0 ] 55 0 55 -[ 3 2 1 ] 56 0 56 -[ 3 2 1 ] 57 0 57 -[ 3 2 1 ] 58 0 58 -[ 3 2 1 ] 59 0 59 -59 differences found - -dataset: and -Not comparable: or is an empty dataset -0 differences found - obj1 obj2 - -------------------------------------- - x x VLstring - x x VLstring2D - x x VLstring3D - x x array - x x array2D - x x array3D - x x bitfield - x x bitfield2D - x x bitfield3D - x x compound - x x compound2D - x x compound3D - x x enum - x x enum2D - x x enum3D - x x float - x x float2D - x x float3D - x x integer - x x integer2D - x x integer3D - x x opaque - x x opaque2D - x x opaque3D - x x reference - x x reference2D - x x reference3D - x x string - x x string2D - x x string3D - x x vlen - x x vlen2D - x x vlen3D -Attributes status: 33 common, 0 only in obj1, 0 only in obj2 -attribute: > and > -size: [2] [2] -position VLstring of VLstring of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position VLstring2D of VLstring2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position VLstring3D of VLstring3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position array of array of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 0 ] 3 0 3 -[ 1 ] 4 0 4 -[ 1 ] 5 0 5 -[ 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [3x2] [3x2] -position array2D of array2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 0 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 0 1 ] 5 0 5 -[ 0 1 ] 6 0 6 -[ 1 0 ] 7 0 7 -[ 1 0 ] 8 0 8 -[ 1 0 ] 9 0 9 -[ 1 1 ] 10 0 10 -[ 1 1 ] 11 0 11 -[ 1 1 ] 12 0 12 -[ 2 0 ] 13 0 13 -[ 2 0 ] 14 0 14 -[ 2 0 ] 15 0 15 -[ 2 1 ] 16 0 16 -[ 2 1 ] 17 0 17 -[ 2 1 ] 18 0 18 -18 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position array3D of array3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 0 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 0 1 ] 5 0 5 -[ 0 0 1 ] 6 0 6 -[ 0 1 0 ] 7 0 7 -[ 0 1 0 ] 8 0 8 -[ 0 1 0 ] 9 0 9 -[ 0 1 1 ] 10 0 10 -[ 0 1 1 ] 11 0 11 -[ 0 1 1 ] 12 0 12 -[ 0 2 0 ] 13 0 13 -[ 0 2 0 ] 14 0 14 -[ 0 2 0 ] 15 0 15 -[ 0 2 1 ] 16 0 16 -[ 0 2 1 ] 17 0 17 -[ 0 2 1 ] 18 0 18 -[ 1 0 0 ] 19 0 19 -[ 1 0 0 ] 20 0 20 -[ 1 0 0 ] 21 0 21 -[ 1 0 1 ] 22 0 22 -[ 1 0 1 ] 23 0 23 -[ 1 0 1 ] 24 0 24 -[ 1 1 0 ] 25 0 25 -[ 1 1 0 ] 26 0 26 -[ 1 1 0 ] 27 0 27 -[ 1 1 1 ] 28 0 28 -[ 1 1 1 ] 29 0 29 -[ 1 1 1 ] 30 0 30 -[ 1 2 0 ] 31 0 31 -[ 1 2 0 ] 32 0 32 -[ 1 2 0 ] 33 0 33 -[ 1 2 1 ] 34 0 34 -[ 1 2 1 ] 35 0 35 -[ 1 2 1 ] 36 0 36 -[ 2 0 0 ] 37 0 37 -[ 2 0 0 ] 38 0 38 -[ 2 0 0 ] 39 0 39 -[ 2 0 1 ] 40 0 40 -[ 2 0 1 ] 41 0 41 -[ 2 0 1 ] 42 0 42 -[ 2 1 0 ] 43 0 43 -[ 2 1 0 ] 44 0 44 -[ 2 1 0 ] 45 0 45 -[ 2 1 1 ] 46 0 46 -[ 2 1 1 ] 47 0 47 -[ 2 1 1 ] 48 0 48 -[ 2 2 0 ] 49 0 49 -[ 2 2 0 ] 50 0 50 -[ 2 2 0 ] 51 0 51 -[ 2 2 1 ] 52 0 52 -[ 2 2 1 ] 53 0 53 -[ 2 2 1 ] 54 0 54 -[ 3 0 0 ] 55 0 55 -[ 3 0 0 ] 56 0 56 -[ 3 0 0 ] 57 0 57 -[ 3 0 1 ] 58 0 58 -[ 3 0 1 ] 59 0 59 -[ 3 0 1 ] 60 0 60 -[ 3 1 0 ] 61 0 61 -[ 3 1 0 ] 62 0 62 -[ 3 1 0 ] 63 0 63 -[ 3 1 1 ] 64 0 64 -[ 3 1 1 ] 65 0 65 -[ 3 1 1 ] 66 0 66 -[ 3 2 0 ] 67 0 67 -[ 3 2 0 ] 68 0 68 -[ 3 2 0 ] 69 0 69 -[ 3 2 1 ] 70 0 70 -[ 3 2 1 ] 71 0 71 -[ 3 2 1 ] 72 0 72 -72 differences found -attribute: > and > -size: [2] [2] -position bitfield of bitfield of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position bitfield2D of bitfield2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position bitfield3D of bitfield3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position compound of compound of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 1 ] 3 0 3 -[ 1 ] 4 0 4 -4 differences found -attribute: > and > -size: [3x2] [3x2] -position compound2D of compound2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 1 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 1 0 ] 5 0 5 -[ 1 0 ] 6 0 6 -[ 1 1 ] 7 0 7 -[ 1 1 ] 8 0 8 -[ 2 0 ] 9 0 9 -[ 2 0 ] 10 0 10 -[ 2 1 ] 11 0 11 -[ 2 1 ] 12 0 12 -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position compound3D of compound3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 1 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 1 0 ] 5 0 5 -[ 0 1 0 ] 6 0 6 -[ 0 1 1 ] 7 0 7 -[ 0 1 1 ] 8 0 8 -[ 0 2 0 ] 9 0 9 -[ 0 2 0 ] 10 0 10 -[ 0 2 1 ] 11 0 11 -[ 0 2 1 ] 12 0 12 -[ 1 0 0 ] 13 0 13 -[ 1 0 0 ] 14 0 14 -[ 1 0 1 ] 15 0 15 -[ 1 0 1 ] 16 0 16 -[ 1 1 0 ] 17 0 17 -[ 1 1 0 ] 18 0 18 -[ 1 1 1 ] 19 0 19 -[ 1 1 1 ] 20 0 20 -[ 1 2 0 ] 21 0 21 -[ 1 2 0 ] 22 0 22 -[ 1 2 1 ] 23 0 23 -[ 1 2 1 ] 24 0 24 -[ 2 0 0 ] 25 0 25 -[ 2 0 0 ] 26 0 26 -[ 2 0 1 ] 27 0 27 -[ 2 0 1 ] 28 0 28 -[ 2 1 0 ] 29 0 29 -[ 2 1 0 ] 30 0 30 -[ 2 1 1 ] 31 0 31 -[ 2 1 1 ] 32 0 32 -[ 2 2 0 ] 33 0 33 -[ 2 2 0 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 2 2 1 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 1 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 1 0 ] 41 0 41 -[ 3 1 0 ] 42 0 42 -[ 3 1 1 ] 43 0 43 -[ 3 1 1 ] 44 0 44 -[ 3 2 0 ] 45 0 45 -[ 3 2 0 ] 46 0 46 -[ 3 2 1 ] 47 0 47 -[ 3 2 1 ] 48 0 48 -48 differences found -attribute: > and > -size: [2] [2] -position enum of enum of difference ------------------------------------------------------------- -[ 0 ] RED GREEN -[ 1 ] RED GREEN -2 differences found -attribute: > and > -size: [3x2] [3x2] -position enum2D of enum2D of difference ------------------------------------------------------------- -[ 0 0 ] RED GREEN -[ 0 1 ] RED GREEN -[ 1 0 ] RED GREEN -[ 1 1 ] RED GREEN -[ 2 0 ] RED GREEN -[ 2 1 ] RED GREEN -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position enum3D of enum3D of difference ------------------------------------------------------------- -[ 0 0 0 ] GREEN RED -[ 0 0 1 ] GREEN RED -[ 0 1 0 ] GREEN RED -[ 0 1 1 ] GREEN RED -[ 0 2 0 ] GREEN RED -[ 0 2 1 ] GREEN RED -[ 1 0 0 ] GREEN RED -[ 1 0 1 ] GREEN RED -[ 1 1 0 ] GREEN RED -[ 1 1 1 ] GREEN RED -[ 1 2 0 ] GREEN RED -[ 1 2 1 ] GREEN RED -[ 2 0 0 ] GREEN RED -[ 2 0 1 ] GREEN RED -[ 2 1 0 ] GREEN RED -[ 2 1 1 ] GREEN RED -[ 2 2 0 ] GREEN RED -[ 2 2 1 ] GREEN RED -[ 3 0 0 ] GREEN RED -[ 3 0 1 ] GREEN RED -[ 3 1 0 ] GREEN RED -[ 3 1 1 ] GREEN RED -[ 3 2 0 ] GREEN RED -[ 3 2 1 ] GREEN RED -24 differences found -attribute: > and > -size: [2] [2] -position float of float of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position float2D of float2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position float3D of float3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position integer of integer of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position integer2D of integer2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position integer3D of integer3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position opaque of opaque of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position opaque2D of opaque2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position opaque3D of opaque3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -0 differences found -attribute: > and > -0 differences found -attribute: > and > -0 differences found -attribute: > and > -size: [2] [2] -position string of string of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position string2D of string2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position string3D of string3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position vlen of vlen of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -[ 1 ] 3 0 3 -3 differences found -attribute: > and > -size: [3x2] [3x2] -position vlen2D of vlen2D of difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 1 0 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 1 1 ] 5 0 5 -[ 2 0 ] 6 0 6 -[ 2 0 ] 7 0 7 -[ 2 0 ] 8 0 8 -[ 2 1 ] 9 0 9 -[ 2 1 ] 10 0 10 -[ 2 1 ] 11 0 11 -11 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position vlen3D of vlen3D of difference ------------------------------------------------------------- -[ 0 0 1 ] 1 0 1 -[ 0 1 0 ] 2 0 2 -[ 0 1 1 ] 3 0 3 -[ 0 2 0 ] 4 0 4 -[ 0 2 1 ] 5 0 5 -[ 1 0 0 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 0 1 ] 9 0 9 -[ 1 1 0 ] 10 0 10 -[ 1 1 0 ] 11 0 11 -[ 1 1 1 ] 12 0 12 -[ 1 1 1 ] 13 0 13 -[ 1 2 0 ] 14 0 14 -[ 1 2 0 ] 15 0 15 -[ 1 2 1 ] 16 0 16 -[ 1 2 1 ] 17 0 17 -[ 2 0 0 ] 18 0 18 -[ 2 0 0 ] 19 0 19 -[ 2 0 0 ] 20 0 20 -[ 2 0 1 ] 21 0 21 -[ 2 0 1 ] 22 0 22 -[ 2 0 1 ] 23 0 23 -[ 2 1 0 ] 24 0 24 -[ 2 1 0 ] 25 0 25 -[ 2 1 0 ] 26 0 26 -[ 2 1 1 ] 27 0 27 -[ 2 1 1 ] 28 0 28 -[ 2 1 1 ] 29 0 29 -[ 2 2 0 ] 30 0 30 -[ 2 2 0 ] 31 0 31 -[ 2 2 0 ] 32 0 32 -[ 2 2 1 ] 33 0 33 -[ 2 2 1 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 3 0 0 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 0 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 0 1 ] 41 0 41 -[ 3 0 1 ] 42 0 42 -[ 3 0 1 ] 43 0 43 -[ 3 1 0 ] 44 0 44 -[ 3 1 0 ] 45 0 45 -[ 3 1 0 ] 46 0 46 -[ 3 1 0 ] 47 0 47 -[ 3 1 1 ] 48 0 48 -[ 3 1 1 ] 49 0 49 -[ 3 1 1 ] 50 0 50 -[ 3 1 1 ] 51 0 51 -[ 3 2 0 ] 52 0 52 -[ 3 2 0 ] 53 0 53 -[ 3 2 0 ] 54 0 54 -[ 3 2 0 ] 55 0 55 -[ 3 2 1 ] 56 0 56 -[ 3 2 1 ] 57 0 57 -[ 3 2 1 ] 58 0 58 -[ 3 2 1 ] 59 0 59 -59 differences found - -group : and -0 differences found - obj1 obj2 - -------------------------------------- - x x VLstring - x x VLstring2D - x x VLstring3D - x x array - x x array2D - x x array3D - x x bitfield - x x bitfield2D - x x bitfield3D - x x compound - x x compound2D - x x compound3D - x x enum - x x enum2D - x x enum3D - x x float - x x float2D - x x float3D - x x integer - x x integer2D - x x integer3D - x x opaque - x x opaque2D - x x opaque3D - x x string - x x string2D - x x string3D - x x vlen - x x vlen2D - x x vlen3D -Attributes status: 30 common, 0 only in obj1, 0 only in obj2 -attribute: > and > -size: [2] [2] -position VLstring of VLstring of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position VLstring2D of VLstring2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position VLstring3D of VLstring3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position array of array of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 0 ] 3 0 3 -[ 1 ] 4 0 4 -[ 1 ] 5 0 5 -[ 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [3x2] [3x2] -position array2D of array2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 0 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 0 1 ] 5 0 5 -[ 0 1 ] 6 0 6 -[ 1 0 ] 7 0 7 -[ 1 0 ] 8 0 8 -[ 1 0 ] 9 0 9 -[ 1 1 ] 10 0 10 -[ 1 1 ] 11 0 11 -[ 1 1 ] 12 0 12 -[ 2 0 ] 13 0 13 -[ 2 0 ] 14 0 14 -[ 2 0 ] 15 0 15 -[ 2 1 ] 16 0 16 -[ 2 1 ] 17 0 17 -[ 2 1 ] 18 0 18 -18 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position array3D of array3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 0 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 0 1 ] 5 0 5 -[ 0 0 1 ] 6 0 6 -[ 0 1 0 ] 7 0 7 -[ 0 1 0 ] 8 0 8 -[ 0 1 0 ] 9 0 9 -[ 0 1 1 ] 10 0 10 -[ 0 1 1 ] 11 0 11 -[ 0 1 1 ] 12 0 12 -[ 0 2 0 ] 13 0 13 -[ 0 2 0 ] 14 0 14 -[ 0 2 0 ] 15 0 15 -[ 0 2 1 ] 16 0 16 -[ 0 2 1 ] 17 0 17 -[ 0 2 1 ] 18 0 18 -[ 1 0 0 ] 19 0 19 -[ 1 0 0 ] 20 0 20 -[ 1 0 0 ] 21 0 21 -[ 1 0 1 ] 22 0 22 -[ 1 0 1 ] 23 0 23 -[ 1 0 1 ] 24 0 24 -[ 1 1 0 ] 25 0 25 -[ 1 1 0 ] 26 0 26 -[ 1 1 0 ] 27 0 27 -[ 1 1 1 ] 28 0 28 -[ 1 1 1 ] 29 0 29 -[ 1 1 1 ] 30 0 30 -[ 1 2 0 ] 31 0 31 -[ 1 2 0 ] 32 0 32 -[ 1 2 0 ] 33 0 33 -[ 1 2 1 ] 34 0 34 -[ 1 2 1 ] 35 0 35 -[ 1 2 1 ] 36 0 36 -[ 2 0 0 ] 37 0 37 -[ 2 0 0 ] 38 0 38 -[ 2 0 0 ] 39 0 39 -[ 2 0 1 ] 40 0 40 -[ 2 0 1 ] 41 0 41 -[ 2 0 1 ] 42 0 42 -[ 2 1 0 ] 43 0 43 -[ 2 1 0 ] 44 0 44 -[ 2 1 0 ] 45 0 45 -[ 2 1 1 ] 46 0 46 -[ 2 1 1 ] 47 0 47 -[ 2 1 1 ] 48 0 48 -[ 2 2 0 ] 49 0 49 -[ 2 2 0 ] 50 0 50 -[ 2 2 0 ] 51 0 51 -[ 2 2 1 ] 52 0 52 -[ 2 2 1 ] 53 0 53 -[ 2 2 1 ] 54 0 54 -[ 3 0 0 ] 55 0 55 -[ 3 0 0 ] 56 0 56 -[ 3 0 0 ] 57 0 57 -[ 3 0 1 ] 58 0 58 -[ 3 0 1 ] 59 0 59 -[ 3 0 1 ] 60 0 60 -[ 3 1 0 ] 61 0 61 -[ 3 1 0 ] 62 0 62 -[ 3 1 0 ] 63 0 63 -[ 3 1 1 ] 64 0 64 -[ 3 1 1 ] 65 0 65 -[ 3 1 1 ] 66 0 66 -[ 3 2 0 ] 67 0 67 -[ 3 2 0 ] 68 0 68 -[ 3 2 0 ] 69 0 69 -[ 3 2 1 ] 70 0 70 -[ 3 2 1 ] 71 0 71 -[ 3 2 1 ] 72 0 72 -72 differences found -attribute: > and > -size: [2] [2] -position bitfield of bitfield of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position bitfield2D of bitfield2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position bitfield3D of bitfield3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position compound of compound of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 1 ] 3 0 3 -[ 1 ] 4 0 4 -4 differences found -attribute: > and > -size: [3x2] [3x2] -position compound2D of compound2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 1 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 1 0 ] 5 0 5 -[ 1 0 ] 6 0 6 -[ 1 1 ] 7 0 7 -[ 1 1 ] 8 0 8 -[ 2 0 ] 9 0 9 -[ 2 0 ] 10 0 10 -[ 2 1 ] 11 0 11 -[ 2 1 ] 12 0 12 -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position compound3D of compound3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 1 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 1 0 ] 5 0 5 -[ 0 1 0 ] 6 0 6 -[ 0 1 1 ] 7 0 7 -[ 0 1 1 ] 8 0 8 -[ 0 2 0 ] 9 0 9 -[ 0 2 0 ] 10 0 10 -[ 0 2 1 ] 11 0 11 -[ 0 2 1 ] 12 0 12 -[ 1 0 0 ] 13 0 13 -[ 1 0 0 ] 14 0 14 -[ 1 0 1 ] 15 0 15 -[ 1 0 1 ] 16 0 16 -[ 1 1 0 ] 17 0 17 -[ 1 1 0 ] 18 0 18 -[ 1 1 1 ] 19 0 19 -[ 1 1 1 ] 20 0 20 -[ 1 2 0 ] 21 0 21 -[ 1 2 0 ] 22 0 22 -[ 1 2 1 ] 23 0 23 -[ 1 2 1 ] 24 0 24 -[ 2 0 0 ] 25 0 25 -[ 2 0 0 ] 26 0 26 -[ 2 0 1 ] 27 0 27 -[ 2 0 1 ] 28 0 28 -[ 2 1 0 ] 29 0 29 -[ 2 1 0 ] 30 0 30 -[ 2 1 1 ] 31 0 31 -[ 2 1 1 ] 32 0 32 -[ 2 2 0 ] 33 0 33 -[ 2 2 0 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 2 2 1 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 1 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 1 0 ] 41 0 41 -[ 3 1 0 ] 42 0 42 -[ 3 1 1 ] 43 0 43 -[ 3 1 1 ] 44 0 44 -[ 3 2 0 ] 45 0 45 -[ 3 2 0 ] 46 0 46 -[ 3 2 1 ] 47 0 47 -[ 3 2 1 ] 48 0 48 -48 differences found -attribute: > and > -size: [2] [2] -position enum of enum of difference ------------------------------------------------------------- -[ 0 ] RED GREEN -[ 1 ] RED GREEN -2 differences found -attribute: > and > -size: [3x2] [3x2] -position enum2D of enum2D of difference ------------------------------------------------------------- -[ 0 0 ] RED GREEN -[ 0 1 ] RED GREEN -[ 1 0 ] RED GREEN -[ 1 1 ] RED GREEN -[ 2 0 ] RED GREEN -[ 2 1 ] RED GREEN -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position enum3D of enum3D of difference ------------------------------------------------------------- -[ 0 0 0 ] GREEN RED -[ 0 0 1 ] GREEN RED -[ 0 1 0 ] GREEN RED -[ 0 1 1 ] GREEN RED -[ 0 2 0 ] GREEN RED -[ 0 2 1 ] GREEN RED -[ 1 0 0 ] GREEN RED -[ 1 0 1 ] GREEN RED -[ 1 1 0 ] GREEN RED -[ 1 1 1 ] GREEN RED -[ 1 2 0 ] GREEN RED -[ 1 2 1 ] GREEN RED -[ 2 0 0 ] GREEN RED -[ 2 0 1 ] GREEN RED -[ 2 1 0 ] GREEN RED -[ 2 1 1 ] GREEN RED -[ 2 2 0 ] GREEN RED -[ 2 2 1 ] GREEN RED -[ 3 0 0 ] GREEN RED -[ 3 0 1 ] GREEN RED -[ 3 1 0 ] GREEN RED -[ 3 1 1 ] GREEN RED -[ 3 2 0 ] GREEN RED -[ 3 2 1 ] GREEN RED -24 differences found -attribute: > and > -size: [2] [2] -position float of float of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position float2D of float2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position float3D of float3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position integer of integer of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position integer2D of integer2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position integer3D of integer3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position opaque of opaque of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position opaque2D of opaque2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position opaque3D of opaque3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position string of string of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position string2D of string2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position string3D of string3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position vlen of vlen of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -[ 1 ] 3 0 3 -3 differences found -attribute: > and > -size: [3x2] [3x2] -position vlen2D of vlen2D of difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 1 0 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 1 1 ] 5 0 5 -[ 2 0 ] 6 0 6 -[ 2 0 ] 7 0 7 -[ 2 0 ] 8 0 8 -[ 2 1 ] 9 0 9 -[ 2 1 ] 10 0 10 -[ 2 1 ] 11 0 11 -11 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position vlen3D of vlen3D of difference ------------------------------------------------------------- -[ 0 0 1 ] 1 0 1 -[ 0 1 0 ] 2 0 2 -[ 0 1 1 ] 3 0 3 -[ 0 2 0 ] 4 0 4 -[ 0 2 1 ] 5 0 5 -[ 1 0 0 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 0 1 ] 9 0 9 -[ 1 1 0 ] 10 0 10 -[ 1 1 0 ] 11 0 11 -[ 1 1 1 ] 12 0 12 -[ 1 1 1 ] 13 0 13 -[ 1 2 0 ] 14 0 14 -[ 1 2 0 ] 15 0 15 -[ 1 2 1 ] 16 0 16 -[ 1 2 1 ] 17 0 17 -[ 2 0 0 ] 18 0 18 -[ 2 0 0 ] 19 0 19 -[ 2 0 0 ] 20 0 20 -[ 2 0 1 ] 21 0 21 -[ 2 0 1 ] 22 0 22 -[ 2 0 1 ] 23 0 23 -[ 2 1 0 ] 24 0 24 -[ 2 1 0 ] 25 0 25 -[ 2 1 0 ] 26 0 26 -[ 2 1 1 ] 27 0 27 -[ 2 1 1 ] 28 0 28 -[ 2 1 1 ] 29 0 29 -[ 2 2 0 ] 30 0 30 -[ 2 2 0 ] 31 0 31 -[ 2 2 0 ] 32 0 32 -[ 2 2 1 ] 33 0 33 -[ 2 2 1 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 3 0 0 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 0 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 0 1 ] 41 0 41 -[ 3 0 1 ] 42 0 42 -[ 3 0 1 ] 43 0 43 -[ 3 1 0 ] 44 0 44 -[ 3 1 0 ] 45 0 45 -[ 3 1 0 ] 46 0 46 -[ 3 1 0 ] 47 0 47 -[ 3 1 1 ] 48 0 48 -[ 3 1 1 ] 49 0 49 -[ 3 1 1 ] 50 0 50 -[ 3 1 1 ] 51 0 51 -[ 3 2 0 ] 52 0 52 -[ 3 2 0 ] 53 0 53 -[ 3 2 0 ] 54 0 54 -[ 3 2 0 ] 55 0 55 -[ 3 2 1 ] 56 0 56 -[ 3 2 1 ] 57 0 57 -[ 3 2 1 ] 58 0 58 -[ 3 2 1 ] 59 0 59 -59 differences found --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_702.txt b/tools/h5diff/testfiles/h5diff_702.txt deleted file mode 100644 index 1cf71dd..0000000 --- a/tools/h5diff/testfiles/h5diff_702.txt +++ /dev/null @@ -1,2038 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset - x x /g1 - - -group : and -0 differences found -Attributes status: 30 common, 0 only in obj1, 0 only in obj2 -attribute: > and > -size: [2] [2] -position VLstring of VLstring of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position VLstring2D of VLstring2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position VLstring3D of VLstring3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position array of array of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 0 ] 3 0 3 -[ 1 ] 4 0 4 -[ 1 ] 5 0 5 -[ 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [3x2] [3x2] -position array2D of array2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 0 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 0 1 ] 5 0 5 -[ 0 1 ] 6 0 6 -[ 1 0 ] 7 0 7 -[ 1 0 ] 8 0 8 -[ 1 0 ] 9 0 9 -[ 1 1 ] 10 0 10 -[ 1 1 ] 11 0 11 -[ 1 1 ] 12 0 12 -[ 2 0 ] 13 0 13 -[ 2 0 ] 14 0 14 -[ 2 0 ] 15 0 15 -[ 2 1 ] 16 0 16 -[ 2 1 ] 17 0 17 -[ 2 1 ] 18 0 18 -18 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position array3D of array3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 0 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 0 1 ] 5 0 5 -[ 0 0 1 ] 6 0 6 -[ 0 1 0 ] 7 0 7 -[ 0 1 0 ] 8 0 8 -[ 0 1 0 ] 9 0 9 -[ 0 1 1 ] 10 0 10 -[ 0 1 1 ] 11 0 11 -[ 0 1 1 ] 12 0 12 -[ 0 2 0 ] 13 0 13 -[ 0 2 0 ] 14 0 14 -[ 0 2 0 ] 15 0 15 -[ 0 2 1 ] 16 0 16 -[ 0 2 1 ] 17 0 17 -[ 0 2 1 ] 18 0 18 -[ 1 0 0 ] 19 0 19 -[ 1 0 0 ] 20 0 20 -[ 1 0 0 ] 21 0 21 -[ 1 0 1 ] 22 0 22 -[ 1 0 1 ] 23 0 23 -[ 1 0 1 ] 24 0 24 -[ 1 1 0 ] 25 0 25 -[ 1 1 0 ] 26 0 26 -[ 1 1 0 ] 27 0 27 -[ 1 1 1 ] 28 0 28 -[ 1 1 1 ] 29 0 29 -[ 1 1 1 ] 30 0 30 -[ 1 2 0 ] 31 0 31 -[ 1 2 0 ] 32 0 32 -[ 1 2 0 ] 33 0 33 -[ 1 2 1 ] 34 0 34 -[ 1 2 1 ] 35 0 35 -[ 1 2 1 ] 36 0 36 -[ 2 0 0 ] 37 0 37 -[ 2 0 0 ] 38 0 38 -[ 2 0 0 ] 39 0 39 -[ 2 0 1 ] 40 0 40 -[ 2 0 1 ] 41 0 41 -[ 2 0 1 ] 42 0 42 -[ 2 1 0 ] 43 0 43 -[ 2 1 0 ] 44 0 44 -[ 2 1 0 ] 45 0 45 -[ 2 1 1 ] 46 0 46 -[ 2 1 1 ] 47 0 47 -[ 2 1 1 ] 48 0 48 -[ 2 2 0 ] 49 0 49 -[ 2 2 0 ] 50 0 50 -[ 2 2 0 ] 51 0 51 -[ 2 2 1 ] 52 0 52 -[ 2 2 1 ] 53 0 53 -[ 2 2 1 ] 54 0 54 -[ 3 0 0 ] 55 0 55 -[ 3 0 0 ] 56 0 56 -[ 3 0 0 ] 57 0 57 -[ 3 0 1 ] 58 0 58 -[ 3 0 1 ] 59 0 59 -[ 3 0 1 ] 60 0 60 -[ 3 1 0 ] 61 0 61 -[ 3 1 0 ] 62 0 62 -[ 3 1 0 ] 63 0 63 -[ 3 1 1 ] 64 0 64 -[ 3 1 1 ] 65 0 65 -[ 3 1 1 ] 66 0 66 -[ 3 2 0 ] 67 0 67 -[ 3 2 0 ] 68 0 68 -[ 3 2 0 ] 69 0 69 -[ 3 2 1 ] 70 0 70 -[ 3 2 1 ] 71 0 71 -[ 3 2 1 ] 72 0 72 -72 differences found -attribute: > and > -size: [2] [2] -position bitfield of bitfield of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position bitfield2D of bitfield2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position bitfield3D of bitfield3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position compound of compound of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 1 ] 3 0 3 -[ 1 ] 4 0 4 -4 differences found -attribute: > and > -size: [3x2] [3x2] -position compound2D of compound2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 1 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 1 0 ] 5 0 5 -[ 1 0 ] 6 0 6 -[ 1 1 ] 7 0 7 -[ 1 1 ] 8 0 8 -[ 2 0 ] 9 0 9 -[ 2 0 ] 10 0 10 -[ 2 1 ] 11 0 11 -[ 2 1 ] 12 0 12 -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position compound3D of compound3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 1 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 1 0 ] 5 0 5 -[ 0 1 0 ] 6 0 6 -[ 0 1 1 ] 7 0 7 -[ 0 1 1 ] 8 0 8 -[ 0 2 0 ] 9 0 9 -[ 0 2 0 ] 10 0 10 -[ 0 2 1 ] 11 0 11 -[ 0 2 1 ] 12 0 12 -[ 1 0 0 ] 13 0 13 -[ 1 0 0 ] 14 0 14 -[ 1 0 1 ] 15 0 15 -[ 1 0 1 ] 16 0 16 -[ 1 1 0 ] 17 0 17 -[ 1 1 0 ] 18 0 18 -[ 1 1 1 ] 19 0 19 -[ 1 1 1 ] 20 0 20 -[ 1 2 0 ] 21 0 21 -[ 1 2 0 ] 22 0 22 -[ 1 2 1 ] 23 0 23 -[ 1 2 1 ] 24 0 24 -[ 2 0 0 ] 25 0 25 -[ 2 0 0 ] 26 0 26 -[ 2 0 1 ] 27 0 27 -[ 2 0 1 ] 28 0 28 -[ 2 1 0 ] 29 0 29 -[ 2 1 0 ] 30 0 30 -[ 2 1 1 ] 31 0 31 -[ 2 1 1 ] 32 0 32 -[ 2 2 0 ] 33 0 33 -[ 2 2 0 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 2 2 1 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 1 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 1 0 ] 41 0 41 -[ 3 1 0 ] 42 0 42 -[ 3 1 1 ] 43 0 43 -[ 3 1 1 ] 44 0 44 -[ 3 2 0 ] 45 0 45 -[ 3 2 0 ] 46 0 46 -[ 3 2 1 ] 47 0 47 -[ 3 2 1 ] 48 0 48 -48 differences found -attribute: > and > -size: [2] [2] -position enum of enum of difference ------------------------------------------------------------- -[ 0 ] RED GREEN -[ 1 ] RED GREEN -2 differences found -attribute: > and > -size: [3x2] [3x2] -position enum2D of enum2D of difference ------------------------------------------------------------- -[ 0 0 ] RED GREEN -[ 0 1 ] RED GREEN -[ 1 0 ] RED GREEN -[ 1 1 ] RED GREEN -[ 2 0 ] RED GREEN -[ 2 1 ] RED GREEN -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position enum3D of enum3D of difference ------------------------------------------------------------- -[ 0 0 0 ] GREEN RED -[ 0 0 1 ] GREEN RED -[ 0 1 0 ] GREEN RED -[ 0 1 1 ] GREEN RED -[ 0 2 0 ] GREEN RED -[ 0 2 1 ] GREEN RED -[ 1 0 0 ] GREEN RED -[ 1 0 1 ] GREEN RED -[ 1 1 0 ] GREEN RED -[ 1 1 1 ] GREEN RED -[ 1 2 0 ] GREEN RED -[ 1 2 1 ] GREEN RED -[ 2 0 0 ] GREEN RED -[ 2 0 1 ] GREEN RED -[ 2 1 0 ] GREEN RED -[ 2 1 1 ] GREEN RED -[ 2 2 0 ] GREEN RED -[ 2 2 1 ] GREEN RED -[ 3 0 0 ] GREEN RED -[ 3 0 1 ] GREEN RED -[ 3 1 0 ] GREEN RED -[ 3 1 1 ] GREEN RED -[ 3 2 0 ] GREEN RED -[ 3 2 1 ] GREEN RED -24 differences found -attribute: > and > -size: [2] [2] -position float of float of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position float2D of float2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position float3D of float3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position integer of integer of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position integer2D of integer2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position integer3D of integer3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position opaque of opaque of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position opaque2D of opaque2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position opaque3D of opaque3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position string of string of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position string2D of string2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position string3D of string3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position vlen of vlen of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -[ 1 ] 3 0 3 -3 differences found -attribute: > and > -size: [3x2] [3x2] -position vlen2D of vlen2D of difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 1 0 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 1 1 ] 5 0 5 -[ 2 0 ] 6 0 6 -[ 2 0 ] 7 0 7 -[ 2 0 ] 8 0 8 -[ 2 1 ] 9 0 9 -[ 2 1 ] 10 0 10 -[ 2 1 ] 11 0 11 -11 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position vlen3D of vlen3D of difference ------------------------------------------------------------- -[ 0 0 1 ] 1 0 1 -[ 0 1 0 ] 2 0 2 -[ 0 1 1 ] 3 0 3 -[ 0 2 0 ] 4 0 4 -[ 0 2 1 ] 5 0 5 -[ 1 0 0 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 0 1 ] 9 0 9 -[ 1 1 0 ] 10 0 10 -[ 1 1 0 ] 11 0 11 -[ 1 1 1 ] 12 0 12 -[ 1 1 1 ] 13 0 13 -[ 1 2 0 ] 14 0 14 -[ 1 2 0 ] 15 0 15 -[ 1 2 1 ] 16 0 16 -[ 1 2 1 ] 17 0 17 -[ 2 0 0 ] 18 0 18 -[ 2 0 0 ] 19 0 19 -[ 2 0 0 ] 20 0 20 -[ 2 0 1 ] 21 0 21 -[ 2 0 1 ] 22 0 22 -[ 2 0 1 ] 23 0 23 -[ 2 1 0 ] 24 0 24 -[ 2 1 0 ] 25 0 25 -[ 2 1 0 ] 26 0 26 -[ 2 1 1 ] 27 0 27 -[ 2 1 1 ] 28 0 28 -[ 2 1 1 ] 29 0 29 -[ 2 2 0 ] 30 0 30 -[ 2 2 0 ] 31 0 31 -[ 2 2 0 ] 32 0 32 -[ 2 2 1 ] 33 0 33 -[ 2 2 1 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 3 0 0 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 0 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 0 1 ] 41 0 41 -[ 3 0 1 ] 42 0 42 -[ 3 0 1 ] 43 0 43 -[ 3 1 0 ] 44 0 44 -[ 3 1 0 ] 45 0 45 -[ 3 1 0 ] 46 0 46 -[ 3 1 0 ] 47 0 47 -[ 3 1 1 ] 48 0 48 -[ 3 1 1 ] 49 0 49 -[ 3 1 1 ] 50 0 50 -[ 3 1 1 ] 51 0 51 -[ 3 2 0 ] 52 0 52 -[ 3 2 0 ] 53 0 53 -[ 3 2 0 ] 54 0 54 -[ 3 2 0 ] 55 0 55 -[ 3 2 1 ] 56 0 56 -[ 3 2 1 ] 57 0 57 -[ 3 2 1 ] 58 0 58 -[ 3 2 1 ] 59 0 59 -59 differences found - -dataset: and -Not comparable: or is an empty dataset -0 differences found -Attributes status: 33 common, 0 only in obj1, 0 only in obj2 -attribute: > and > -size: [2] [2] -position VLstring of VLstring of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position VLstring2D of VLstring2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position VLstring3D of VLstring3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position array of array of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 0 ] 3 0 3 -[ 1 ] 4 0 4 -[ 1 ] 5 0 5 -[ 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [3x2] [3x2] -position array2D of array2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 0 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 0 1 ] 5 0 5 -[ 0 1 ] 6 0 6 -[ 1 0 ] 7 0 7 -[ 1 0 ] 8 0 8 -[ 1 0 ] 9 0 9 -[ 1 1 ] 10 0 10 -[ 1 1 ] 11 0 11 -[ 1 1 ] 12 0 12 -[ 2 0 ] 13 0 13 -[ 2 0 ] 14 0 14 -[ 2 0 ] 15 0 15 -[ 2 1 ] 16 0 16 -[ 2 1 ] 17 0 17 -[ 2 1 ] 18 0 18 -18 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position array3D of array3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 0 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 0 1 ] 5 0 5 -[ 0 0 1 ] 6 0 6 -[ 0 1 0 ] 7 0 7 -[ 0 1 0 ] 8 0 8 -[ 0 1 0 ] 9 0 9 -[ 0 1 1 ] 10 0 10 -[ 0 1 1 ] 11 0 11 -[ 0 1 1 ] 12 0 12 -[ 0 2 0 ] 13 0 13 -[ 0 2 0 ] 14 0 14 -[ 0 2 0 ] 15 0 15 -[ 0 2 1 ] 16 0 16 -[ 0 2 1 ] 17 0 17 -[ 0 2 1 ] 18 0 18 -[ 1 0 0 ] 19 0 19 -[ 1 0 0 ] 20 0 20 -[ 1 0 0 ] 21 0 21 -[ 1 0 1 ] 22 0 22 -[ 1 0 1 ] 23 0 23 -[ 1 0 1 ] 24 0 24 -[ 1 1 0 ] 25 0 25 -[ 1 1 0 ] 26 0 26 -[ 1 1 0 ] 27 0 27 -[ 1 1 1 ] 28 0 28 -[ 1 1 1 ] 29 0 29 -[ 1 1 1 ] 30 0 30 -[ 1 2 0 ] 31 0 31 -[ 1 2 0 ] 32 0 32 -[ 1 2 0 ] 33 0 33 -[ 1 2 1 ] 34 0 34 -[ 1 2 1 ] 35 0 35 -[ 1 2 1 ] 36 0 36 -[ 2 0 0 ] 37 0 37 -[ 2 0 0 ] 38 0 38 -[ 2 0 0 ] 39 0 39 -[ 2 0 1 ] 40 0 40 -[ 2 0 1 ] 41 0 41 -[ 2 0 1 ] 42 0 42 -[ 2 1 0 ] 43 0 43 -[ 2 1 0 ] 44 0 44 -[ 2 1 0 ] 45 0 45 -[ 2 1 1 ] 46 0 46 -[ 2 1 1 ] 47 0 47 -[ 2 1 1 ] 48 0 48 -[ 2 2 0 ] 49 0 49 -[ 2 2 0 ] 50 0 50 -[ 2 2 0 ] 51 0 51 -[ 2 2 1 ] 52 0 52 -[ 2 2 1 ] 53 0 53 -[ 2 2 1 ] 54 0 54 -[ 3 0 0 ] 55 0 55 -[ 3 0 0 ] 56 0 56 -[ 3 0 0 ] 57 0 57 -[ 3 0 1 ] 58 0 58 -[ 3 0 1 ] 59 0 59 -[ 3 0 1 ] 60 0 60 -[ 3 1 0 ] 61 0 61 -[ 3 1 0 ] 62 0 62 -[ 3 1 0 ] 63 0 63 -[ 3 1 1 ] 64 0 64 -[ 3 1 1 ] 65 0 65 -[ 3 1 1 ] 66 0 66 -[ 3 2 0 ] 67 0 67 -[ 3 2 0 ] 68 0 68 -[ 3 2 0 ] 69 0 69 -[ 3 2 1 ] 70 0 70 -[ 3 2 1 ] 71 0 71 -[ 3 2 1 ] 72 0 72 -72 differences found -attribute: > and > -size: [2] [2] -position bitfield of bitfield of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position bitfield2D of bitfield2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position bitfield3D of bitfield3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position compound of compound of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 1 ] 3 0 3 -[ 1 ] 4 0 4 -4 differences found -attribute: > and > -size: [3x2] [3x2] -position compound2D of compound2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 1 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 1 0 ] 5 0 5 -[ 1 0 ] 6 0 6 -[ 1 1 ] 7 0 7 -[ 1 1 ] 8 0 8 -[ 2 0 ] 9 0 9 -[ 2 0 ] 10 0 10 -[ 2 1 ] 11 0 11 -[ 2 1 ] 12 0 12 -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position compound3D of compound3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 1 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 1 0 ] 5 0 5 -[ 0 1 0 ] 6 0 6 -[ 0 1 1 ] 7 0 7 -[ 0 1 1 ] 8 0 8 -[ 0 2 0 ] 9 0 9 -[ 0 2 0 ] 10 0 10 -[ 0 2 1 ] 11 0 11 -[ 0 2 1 ] 12 0 12 -[ 1 0 0 ] 13 0 13 -[ 1 0 0 ] 14 0 14 -[ 1 0 1 ] 15 0 15 -[ 1 0 1 ] 16 0 16 -[ 1 1 0 ] 17 0 17 -[ 1 1 0 ] 18 0 18 -[ 1 1 1 ] 19 0 19 -[ 1 1 1 ] 20 0 20 -[ 1 2 0 ] 21 0 21 -[ 1 2 0 ] 22 0 22 -[ 1 2 1 ] 23 0 23 -[ 1 2 1 ] 24 0 24 -[ 2 0 0 ] 25 0 25 -[ 2 0 0 ] 26 0 26 -[ 2 0 1 ] 27 0 27 -[ 2 0 1 ] 28 0 28 -[ 2 1 0 ] 29 0 29 -[ 2 1 0 ] 30 0 30 -[ 2 1 1 ] 31 0 31 -[ 2 1 1 ] 32 0 32 -[ 2 2 0 ] 33 0 33 -[ 2 2 0 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 2 2 1 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 1 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 1 0 ] 41 0 41 -[ 3 1 0 ] 42 0 42 -[ 3 1 1 ] 43 0 43 -[ 3 1 1 ] 44 0 44 -[ 3 2 0 ] 45 0 45 -[ 3 2 0 ] 46 0 46 -[ 3 2 1 ] 47 0 47 -[ 3 2 1 ] 48 0 48 -48 differences found -attribute: > and > -size: [2] [2] -position enum of enum of difference ------------------------------------------------------------- -[ 0 ] RED GREEN -[ 1 ] RED GREEN -2 differences found -attribute: > and > -size: [3x2] [3x2] -position enum2D of enum2D of difference ------------------------------------------------------------- -[ 0 0 ] RED GREEN -[ 0 1 ] RED GREEN -[ 1 0 ] RED GREEN -[ 1 1 ] RED GREEN -[ 2 0 ] RED GREEN -[ 2 1 ] RED GREEN -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position enum3D of enum3D of difference ------------------------------------------------------------- -[ 0 0 0 ] GREEN RED -[ 0 0 1 ] GREEN RED -[ 0 1 0 ] GREEN RED -[ 0 1 1 ] GREEN RED -[ 0 2 0 ] GREEN RED -[ 0 2 1 ] GREEN RED -[ 1 0 0 ] GREEN RED -[ 1 0 1 ] GREEN RED -[ 1 1 0 ] GREEN RED -[ 1 1 1 ] GREEN RED -[ 1 2 0 ] GREEN RED -[ 1 2 1 ] GREEN RED -[ 2 0 0 ] GREEN RED -[ 2 0 1 ] GREEN RED -[ 2 1 0 ] GREEN RED -[ 2 1 1 ] GREEN RED -[ 2 2 0 ] GREEN RED -[ 2 2 1 ] GREEN RED -[ 3 0 0 ] GREEN RED -[ 3 0 1 ] GREEN RED -[ 3 1 0 ] GREEN RED -[ 3 1 1 ] GREEN RED -[ 3 2 0 ] GREEN RED -[ 3 2 1 ] GREEN RED -24 differences found -attribute: > and > -size: [2] [2] -position float of float of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position float2D of float2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position float3D of float3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position integer of integer of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position integer2D of integer2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position integer3D of integer3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position opaque of opaque of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position opaque2D of opaque2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position opaque3D of opaque3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -0 differences found -attribute: > and > -0 differences found -attribute: > and > -0 differences found -attribute: > and > -size: [2] [2] -position string of string of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position string2D of string2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position string3D of string3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position vlen of vlen of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -[ 1 ] 3 0 3 -3 differences found -attribute: > and > -size: [3x2] [3x2] -position vlen2D of vlen2D of difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 1 0 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 1 1 ] 5 0 5 -[ 2 0 ] 6 0 6 -[ 2 0 ] 7 0 7 -[ 2 0 ] 8 0 8 -[ 2 1 ] 9 0 9 -[ 2 1 ] 10 0 10 -[ 2 1 ] 11 0 11 -11 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position vlen3D of vlen3D of difference ------------------------------------------------------------- -[ 0 0 1 ] 1 0 1 -[ 0 1 0 ] 2 0 2 -[ 0 1 1 ] 3 0 3 -[ 0 2 0 ] 4 0 4 -[ 0 2 1 ] 5 0 5 -[ 1 0 0 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 0 1 ] 9 0 9 -[ 1 1 0 ] 10 0 10 -[ 1 1 0 ] 11 0 11 -[ 1 1 1 ] 12 0 12 -[ 1 1 1 ] 13 0 13 -[ 1 2 0 ] 14 0 14 -[ 1 2 0 ] 15 0 15 -[ 1 2 1 ] 16 0 16 -[ 1 2 1 ] 17 0 17 -[ 2 0 0 ] 18 0 18 -[ 2 0 0 ] 19 0 19 -[ 2 0 0 ] 20 0 20 -[ 2 0 1 ] 21 0 21 -[ 2 0 1 ] 22 0 22 -[ 2 0 1 ] 23 0 23 -[ 2 1 0 ] 24 0 24 -[ 2 1 0 ] 25 0 25 -[ 2 1 0 ] 26 0 26 -[ 2 1 1 ] 27 0 27 -[ 2 1 1 ] 28 0 28 -[ 2 1 1 ] 29 0 29 -[ 2 2 0 ] 30 0 30 -[ 2 2 0 ] 31 0 31 -[ 2 2 0 ] 32 0 32 -[ 2 2 1 ] 33 0 33 -[ 2 2 1 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 3 0 0 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 0 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 0 1 ] 41 0 41 -[ 3 0 1 ] 42 0 42 -[ 3 0 1 ] 43 0 43 -[ 3 1 0 ] 44 0 44 -[ 3 1 0 ] 45 0 45 -[ 3 1 0 ] 46 0 46 -[ 3 1 0 ] 47 0 47 -[ 3 1 1 ] 48 0 48 -[ 3 1 1 ] 49 0 49 -[ 3 1 1 ] 50 0 50 -[ 3 1 1 ] 51 0 51 -[ 3 2 0 ] 52 0 52 -[ 3 2 0 ] 53 0 53 -[ 3 2 0 ] 54 0 54 -[ 3 2 0 ] 55 0 55 -[ 3 2 1 ] 56 0 56 -[ 3 2 1 ] 57 0 57 -[ 3 2 1 ] 58 0 58 -[ 3 2 1 ] 59 0 59 -59 differences found - -group : and -0 differences found -Attributes status: 30 common, 0 only in obj1, 0 only in obj2 -attribute: > and > -size: [2] [2] -position VLstring of VLstring of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position VLstring2D of VLstring2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position VLstring3D of VLstring3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position array of array of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 0 ] 3 0 3 -[ 1 ] 4 0 4 -[ 1 ] 5 0 5 -[ 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [3x2] [3x2] -position array2D of array2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 0 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 0 1 ] 5 0 5 -[ 0 1 ] 6 0 6 -[ 1 0 ] 7 0 7 -[ 1 0 ] 8 0 8 -[ 1 0 ] 9 0 9 -[ 1 1 ] 10 0 10 -[ 1 1 ] 11 0 11 -[ 1 1 ] 12 0 12 -[ 2 0 ] 13 0 13 -[ 2 0 ] 14 0 14 -[ 2 0 ] 15 0 15 -[ 2 1 ] 16 0 16 -[ 2 1 ] 17 0 17 -[ 2 1 ] 18 0 18 -18 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position array3D of array3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 0 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 0 1 ] 5 0 5 -[ 0 0 1 ] 6 0 6 -[ 0 1 0 ] 7 0 7 -[ 0 1 0 ] 8 0 8 -[ 0 1 0 ] 9 0 9 -[ 0 1 1 ] 10 0 10 -[ 0 1 1 ] 11 0 11 -[ 0 1 1 ] 12 0 12 -[ 0 2 0 ] 13 0 13 -[ 0 2 0 ] 14 0 14 -[ 0 2 0 ] 15 0 15 -[ 0 2 1 ] 16 0 16 -[ 0 2 1 ] 17 0 17 -[ 0 2 1 ] 18 0 18 -[ 1 0 0 ] 19 0 19 -[ 1 0 0 ] 20 0 20 -[ 1 0 0 ] 21 0 21 -[ 1 0 1 ] 22 0 22 -[ 1 0 1 ] 23 0 23 -[ 1 0 1 ] 24 0 24 -[ 1 1 0 ] 25 0 25 -[ 1 1 0 ] 26 0 26 -[ 1 1 0 ] 27 0 27 -[ 1 1 1 ] 28 0 28 -[ 1 1 1 ] 29 0 29 -[ 1 1 1 ] 30 0 30 -[ 1 2 0 ] 31 0 31 -[ 1 2 0 ] 32 0 32 -[ 1 2 0 ] 33 0 33 -[ 1 2 1 ] 34 0 34 -[ 1 2 1 ] 35 0 35 -[ 1 2 1 ] 36 0 36 -[ 2 0 0 ] 37 0 37 -[ 2 0 0 ] 38 0 38 -[ 2 0 0 ] 39 0 39 -[ 2 0 1 ] 40 0 40 -[ 2 0 1 ] 41 0 41 -[ 2 0 1 ] 42 0 42 -[ 2 1 0 ] 43 0 43 -[ 2 1 0 ] 44 0 44 -[ 2 1 0 ] 45 0 45 -[ 2 1 1 ] 46 0 46 -[ 2 1 1 ] 47 0 47 -[ 2 1 1 ] 48 0 48 -[ 2 2 0 ] 49 0 49 -[ 2 2 0 ] 50 0 50 -[ 2 2 0 ] 51 0 51 -[ 2 2 1 ] 52 0 52 -[ 2 2 1 ] 53 0 53 -[ 2 2 1 ] 54 0 54 -[ 3 0 0 ] 55 0 55 -[ 3 0 0 ] 56 0 56 -[ 3 0 0 ] 57 0 57 -[ 3 0 1 ] 58 0 58 -[ 3 0 1 ] 59 0 59 -[ 3 0 1 ] 60 0 60 -[ 3 1 0 ] 61 0 61 -[ 3 1 0 ] 62 0 62 -[ 3 1 0 ] 63 0 63 -[ 3 1 1 ] 64 0 64 -[ 3 1 1 ] 65 0 65 -[ 3 1 1 ] 66 0 66 -[ 3 2 0 ] 67 0 67 -[ 3 2 0 ] 68 0 68 -[ 3 2 0 ] 69 0 69 -[ 3 2 1 ] 70 0 70 -[ 3 2 1 ] 71 0 71 -[ 3 2 1 ] 72 0 72 -72 differences found -attribute: > and > -size: [2] [2] -position bitfield of bitfield of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position bitfield2D of bitfield2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position bitfield3D of bitfield3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position compound of compound of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 1 ] 3 0 3 -[ 1 ] 4 0 4 -4 differences found -attribute: > and > -size: [3x2] [3x2] -position compound2D of compound2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 1 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 1 0 ] 5 0 5 -[ 1 0 ] 6 0 6 -[ 1 1 ] 7 0 7 -[ 1 1 ] 8 0 8 -[ 2 0 ] 9 0 9 -[ 2 0 ] 10 0 10 -[ 2 1 ] 11 0 11 -[ 2 1 ] 12 0 12 -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position compound3D of compound3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 1 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 1 0 ] 5 0 5 -[ 0 1 0 ] 6 0 6 -[ 0 1 1 ] 7 0 7 -[ 0 1 1 ] 8 0 8 -[ 0 2 0 ] 9 0 9 -[ 0 2 0 ] 10 0 10 -[ 0 2 1 ] 11 0 11 -[ 0 2 1 ] 12 0 12 -[ 1 0 0 ] 13 0 13 -[ 1 0 0 ] 14 0 14 -[ 1 0 1 ] 15 0 15 -[ 1 0 1 ] 16 0 16 -[ 1 1 0 ] 17 0 17 -[ 1 1 0 ] 18 0 18 -[ 1 1 1 ] 19 0 19 -[ 1 1 1 ] 20 0 20 -[ 1 2 0 ] 21 0 21 -[ 1 2 0 ] 22 0 22 -[ 1 2 1 ] 23 0 23 -[ 1 2 1 ] 24 0 24 -[ 2 0 0 ] 25 0 25 -[ 2 0 0 ] 26 0 26 -[ 2 0 1 ] 27 0 27 -[ 2 0 1 ] 28 0 28 -[ 2 1 0 ] 29 0 29 -[ 2 1 0 ] 30 0 30 -[ 2 1 1 ] 31 0 31 -[ 2 1 1 ] 32 0 32 -[ 2 2 0 ] 33 0 33 -[ 2 2 0 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 2 2 1 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 1 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 1 0 ] 41 0 41 -[ 3 1 0 ] 42 0 42 -[ 3 1 1 ] 43 0 43 -[ 3 1 1 ] 44 0 44 -[ 3 2 0 ] 45 0 45 -[ 3 2 0 ] 46 0 46 -[ 3 2 1 ] 47 0 47 -[ 3 2 1 ] 48 0 48 -48 differences found -attribute: > and > -size: [2] [2] -position enum of enum of difference ------------------------------------------------------------- -[ 0 ] RED GREEN -[ 1 ] RED GREEN -2 differences found -attribute: > and > -size: [3x2] [3x2] -position enum2D of enum2D of difference ------------------------------------------------------------- -[ 0 0 ] RED GREEN -[ 0 1 ] RED GREEN -[ 1 0 ] RED GREEN -[ 1 1 ] RED GREEN -[ 2 0 ] RED GREEN -[ 2 1 ] RED GREEN -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position enum3D of enum3D of difference ------------------------------------------------------------- -[ 0 0 0 ] GREEN RED -[ 0 0 1 ] GREEN RED -[ 0 1 0 ] GREEN RED -[ 0 1 1 ] GREEN RED -[ 0 2 0 ] GREEN RED -[ 0 2 1 ] GREEN RED -[ 1 0 0 ] GREEN RED -[ 1 0 1 ] GREEN RED -[ 1 1 0 ] GREEN RED -[ 1 1 1 ] GREEN RED -[ 1 2 0 ] GREEN RED -[ 1 2 1 ] GREEN RED -[ 2 0 0 ] GREEN RED -[ 2 0 1 ] GREEN RED -[ 2 1 0 ] GREEN RED -[ 2 1 1 ] GREEN RED -[ 2 2 0 ] GREEN RED -[ 2 2 1 ] GREEN RED -[ 3 0 0 ] GREEN RED -[ 3 0 1 ] GREEN RED -[ 3 1 0 ] GREEN RED -[ 3 1 1 ] GREEN RED -[ 3 2 0 ] GREEN RED -[ 3 2 1 ] GREEN RED -24 differences found -attribute: > and > -size: [2] [2] -position float of float of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position float2D of float2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position float3D of float3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position integer of integer of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position integer2D of integer2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position integer3D of integer3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position opaque of opaque of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position opaque2D of opaque2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position opaque3D of opaque3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position string of string of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position string2D of string2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position string3D of string3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position vlen of vlen of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -[ 1 ] 3 0 3 -3 differences found -attribute: > and > -size: [3x2] [3x2] -position vlen2D of vlen2D of difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 1 0 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 1 1 ] 5 0 5 -[ 2 0 ] 6 0 6 -[ 2 0 ] 7 0 7 -[ 2 0 ] 8 0 8 -[ 2 1 ] 9 0 9 -[ 2 1 ] 10 0 10 -[ 2 1 ] 11 0 11 -11 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position vlen3D of vlen3D of difference ------------------------------------------------------------- -[ 0 0 1 ] 1 0 1 -[ 0 1 0 ] 2 0 2 -[ 0 1 1 ] 3 0 3 -[ 0 2 0 ] 4 0 4 -[ 0 2 1 ] 5 0 5 -[ 1 0 0 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 0 1 ] 9 0 9 -[ 1 1 0 ] 10 0 10 -[ 1 1 0 ] 11 0 11 -[ 1 1 1 ] 12 0 12 -[ 1 1 1 ] 13 0 13 -[ 1 2 0 ] 14 0 14 -[ 1 2 0 ] 15 0 15 -[ 1 2 1 ] 16 0 16 -[ 1 2 1 ] 17 0 17 -[ 2 0 0 ] 18 0 18 -[ 2 0 0 ] 19 0 19 -[ 2 0 0 ] 20 0 20 -[ 2 0 1 ] 21 0 21 -[ 2 0 1 ] 22 0 22 -[ 2 0 1 ] 23 0 23 -[ 2 1 0 ] 24 0 24 -[ 2 1 0 ] 25 0 25 -[ 2 1 0 ] 26 0 26 -[ 2 1 1 ] 27 0 27 -[ 2 1 1 ] 28 0 28 -[ 2 1 1 ] 29 0 29 -[ 2 2 0 ] 30 0 30 -[ 2 2 0 ] 31 0 31 -[ 2 2 0 ] 32 0 32 -[ 2 2 1 ] 33 0 33 -[ 2 2 1 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 3 0 0 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 0 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 0 1 ] 41 0 41 -[ 3 0 1 ] 42 0 42 -[ 3 0 1 ] 43 0 43 -[ 3 1 0 ] 44 0 44 -[ 3 1 0 ] 45 0 45 -[ 3 1 0 ] 46 0 46 -[ 3 1 0 ] 47 0 47 -[ 3 1 1 ] 48 0 48 -[ 3 1 1 ] 49 0 49 -[ 3 1 1 ] 50 0 50 -[ 3 1 1 ] 51 0 51 -[ 3 2 0 ] 52 0 52 -[ 3 2 0 ] 53 0 53 -[ 3 2 0 ] 54 0 54 -[ 3 2 0 ] 55 0 55 -[ 3 2 1 ] 56 0 56 -[ 3 2 1 ] 57 0 57 -[ 3 2 1 ] 58 0 58 -[ 3 2 1 ] 59 0 59 -59 differences found --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_703.txt b/tools/h5diff/testfiles/h5diff_703.txt deleted file mode 100644 index 405ab2f..0000000 --- a/tools/h5diff/testfiles/h5diff_703.txt +++ /dev/null @@ -1,2137 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset - x x /g1 - - -group : and -0 differences found - obj1 obj2 - -------------------------------------- - x x VLstring - x x VLstring2D - x x VLstring3D - x x array - x x array2D - x x array3D - x x bitfield - x x bitfield2D - x x bitfield3D - x x compound - x x compound2D - x x compound3D - x x enum - x x enum2D - x x enum3D - x x float - x x float2D - x x float3D - x x integer - x x integer2D - x x integer3D - x x opaque - x x opaque2D - x x opaque3D - x x string - x x string2D - x x string3D - x x vlen - x x vlen2D - x x vlen3D -Attributes status: 30 common, 0 only in obj1, 0 only in obj2 -attribute: > and > -size: [2] [2] -position VLstring of VLstring of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position VLstring2D of VLstring2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position VLstring3D of VLstring3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position array of array of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 0 ] 3 0 3 -[ 1 ] 4 0 4 -[ 1 ] 5 0 5 -[ 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [3x2] [3x2] -position array2D of array2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 0 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 0 1 ] 5 0 5 -[ 0 1 ] 6 0 6 -[ 1 0 ] 7 0 7 -[ 1 0 ] 8 0 8 -[ 1 0 ] 9 0 9 -[ 1 1 ] 10 0 10 -[ 1 1 ] 11 0 11 -[ 1 1 ] 12 0 12 -[ 2 0 ] 13 0 13 -[ 2 0 ] 14 0 14 -[ 2 0 ] 15 0 15 -[ 2 1 ] 16 0 16 -[ 2 1 ] 17 0 17 -[ 2 1 ] 18 0 18 -18 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position array3D of array3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 0 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 0 1 ] 5 0 5 -[ 0 0 1 ] 6 0 6 -[ 0 1 0 ] 7 0 7 -[ 0 1 0 ] 8 0 8 -[ 0 1 0 ] 9 0 9 -[ 0 1 1 ] 10 0 10 -[ 0 1 1 ] 11 0 11 -[ 0 1 1 ] 12 0 12 -[ 0 2 0 ] 13 0 13 -[ 0 2 0 ] 14 0 14 -[ 0 2 0 ] 15 0 15 -[ 0 2 1 ] 16 0 16 -[ 0 2 1 ] 17 0 17 -[ 0 2 1 ] 18 0 18 -[ 1 0 0 ] 19 0 19 -[ 1 0 0 ] 20 0 20 -[ 1 0 0 ] 21 0 21 -[ 1 0 1 ] 22 0 22 -[ 1 0 1 ] 23 0 23 -[ 1 0 1 ] 24 0 24 -[ 1 1 0 ] 25 0 25 -[ 1 1 0 ] 26 0 26 -[ 1 1 0 ] 27 0 27 -[ 1 1 1 ] 28 0 28 -[ 1 1 1 ] 29 0 29 -[ 1 1 1 ] 30 0 30 -[ 1 2 0 ] 31 0 31 -[ 1 2 0 ] 32 0 32 -[ 1 2 0 ] 33 0 33 -[ 1 2 1 ] 34 0 34 -[ 1 2 1 ] 35 0 35 -[ 1 2 1 ] 36 0 36 -[ 2 0 0 ] 37 0 37 -[ 2 0 0 ] 38 0 38 -[ 2 0 0 ] 39 0 39 -[ 2 0 1 ] 40 0 40 -[ 2 0 1 ] 41 0 41 -[ 2 0 1 ] 42 0 42 -[ 2 1 0 ] 43 0 43 -[ 2 1 0 ] 44 0 44 -[ 2 1 0 ] 45 0 45 -[ 2 1 1 ] 46 0 46 -[ 2 1 1 ] 47 0 47 -[ 2 1 1 ] 48 0 48 -[ 2 2 0 ] 49 0 49 -[ 2 2 0 ] 50 0 50 -[ 2 2 0 ] 51 0 51 -[ 2 2 1 ] 52 0 52 -[ 2 2 1 ] 53 0 53 -[ 2 2 1 ] 54 0 54 -[ 3 0 0 ] 55 0 55 -[ 3 0 0 ] 56 0 56 -[ 3 0 0 ] 57 0 57 -[ 3 0 1 ] 58 0 58 -[ 3 0 1 ] 59 0 59 -[ 3 0 1 ] 60 0 60 -[ 3 1 0 ] 61 0 61 -[ 3 1 0 ] 62 0 62 -[ 3 1 0 ] 63 0 63 -[ 3 1 1 ] 64 0 64 -[ 3 1 1 ] 65 0 65 -[ 3 1 1 ] 66 0 66 -[ 3 2 0 ] 67 0 67 -[ 3 2 0 ] 68 0 68 -[ 3 2 0 ] 69 0 69 -[ 3 2 1 ] 70 0 70 -[ 3 2 1 ] 71 0 71 -[ 3 2 1 ] 72 0 72 -72 differences found -attribute: > and > -size: [2] [2] -position bitfield of bitfield of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position bitfield2D of bitfield2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position bitfield3D of bitfield3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position compound of compound of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 1 ] 3 0 3 -[ 1 ] 4 0 4 -4 differences found -attribute: > and > -size: [3x2] [3x2] -position compound2D of compound2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 1 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 1 0 ] 5 0 5 -[ 1 0 ] 6 0 6 -[ 1 1 ] 7 0 7 -[ 1 1 ] 8 0 8 -[ 2 0 ] 9 0 9 -[ 2 0 ] 10 0 10 -[ 2 1 ] 11 0 11 -[ 2 1 ] 12 0 12 -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position compound3D of compound3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 1 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 1 0 ] 5 0 5 -[ 0 1 0 ] 6 0 6 -[ 0 1 1 ] 7 0 7 -[ 0 1 1 ] 8 0 8 -[ 0 2 0 ] 9 0 9 -[ 0 2 0 ] 10 0 10 -[ 0 2 1 ] 11 0 11 -[ 0 2 1 ] 12 0 12 -[ 1 0 0 ] 13 0 13 -[ 1 0 0 ] 14 0 14 -[ 1 0 1 ] 15 0 15 -[ 1 0 1 ] 16 0 16 -[ 1 1 0 ] 17 0 17 -[ 1 1 0 ] 18 0 18 -[ 1 1 1 ] 19 0 19 -[ 1 1 1 ] 20 0 20 -[ 1 2 0 ] 21 0 21 -[ 1 2 0 ] 22 0 22 -[ 1 2 1 ] 23 0 23 -[ 1 2 1 ] 24 0 24 -[ 2 0 0 ] 25 0 25 -[ 2 0 0 ] 26 0 26 -[ 2 0 1 ] 27 0 27 -[ 2 0 1 ] 28 0 28 -[ 2 1 0 ] 29 0 29 -[ 2 1 0 ] 30 0 30 -[ 2 1 1 ] 31 0 31 -[ 2 1 1 ] 32 0 32 -[ 2 2 0 ] 33 0 33 -[ 2 2 0 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 2 2 1 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 1 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 1 0 ] 41 0 41 -[ 3 1 0 ] 42 0 42 -[ 3 1 1 ] 43 0 43 -[ 3 1 1 ] 44 0 44 -[ 3 2 0 ] 45 0 45 -[ 3 2 0 ] 46 0 46 -[ 3 2 1 ] 47 0 47 -[ 3 2 1 ] 48 0 48 -48 differences found -attribute: > and > -size: [2] [2] -position enum of enum of difference ------------------------------------------------------------- -[ 0 ] RED GREEN -[ 1 ] RED GREEN -2 differences found -attribute: > and > -size: [3x2] [3x2] -position enum2D of enum2D of difference ------------------------------------------------------------- -[ 0 0 ] RED GREEN -[ 0 1 ] RED GREEN -[ 1 0 ] RED GREEN -[ 1 1 ] RED GREEN -[ 2 0 ] RED GREEN -[ 2 1 ] RED GREEN -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position enum3D of enum3D of difference ------------------------------------------------------------- -[ 0 0 0 ] GREEN RED -[ 0 0 1 ] GREEN RED -[ 0 1 0 ] GREEN RED -[ 0 1 1 ] GREEN RED -[ 0 2 0 ] GREEN RED -[ 0 2 1 ] GREEN RED -[ 1 0 0 ] GREEN RED -[ 1 0 1 ] GREEN RED -[ 1 1 0 ] GREEN RED -[ 1 1 1 ] GREEN RED -[ 1 2 0 ] GREEN RED -[ 1 2 1 ] GREEN RED -[ 2 0 0 ] GREEN RED -[ 2 0 1 ] GREEN RED -[ 2 1 0 ] GREEN RED -[ 2 1 1 ] GREEN RED -[ 2 2 0 ] GREEN RED -[ 2 2 1 ] GREEN RED -[ 3 0 0 ] GREEN RED -[ 3 0 1 ] GREEN RED -[ 3 1 0 ] GREEN RED -[ 3 1 1 ] GREEN RED -[ 3 2 0 ] GREEN RED -[ 3 2 1 ] GREEN RED -24 differences found -attribute: > and > -size: [2] [2] -position float of float of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position float2D of float2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position float3D of float3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position integer of integer of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position integer2D of integer2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position integer3D of integer3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position opaque of opaque of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position opaque2D of opaque2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position opaque3D of opaque3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position string of string of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position string2D of string2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position string3D of string3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position vlen of vlen of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -[ 1 ] 3 0 3 -3 differences found -attribute: > and > -size: [3x2] [3x2] -position vlen2D of vlen2D of difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 1 0 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 1 1 ] 5 0 5 -[ 2 0 ] 6 0 6 -[ 2 0 ] 7 0 7 -[ 2 0 ] 8 0 8 -[ 2 1 ] 9 0 9 -[ 2 1 ] 10 0 10 -[ 2 1 ] 11 0 11 -11 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position vlen3D of vlen3D of difference ------------------------------------------------------------- -[ 0 0 1 ] 1 0 1 -[ 0 1 0 ] 2 0 2 -[ 0 1 1 ] 3 0 3 -[ 0 2 0 ] 4 0 4 -[ 0 2 1 ] 5 0 5 -[ 1 0 0 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 0 1 ] 9 0 9 -[ 1 1 0 ] 10 0 10 -[ 1 1 0 ] 11 0 11 -[ 1 1 1 ] 12 0 12 -[ 1 1 1 ] 13 0 13 -[ 1 2 0 ] 14 0 14 -[ 1 2 0 ] 15 0 15 -[ 1 2 1 ] 16 0 16 -[ 1 2 1 ] 17 0 17 -[ 2 0 0 ] 18 0 18 -[ 2 0 0 ] 19 0 19 -[ 2 0 0 ] 20 0 20 -[ 2 0 1 ] 21 0 21 -[ 2 0 1 ] 22 0 22 -[ 2 0 1 ] 23 0 23 -[ 2 1 0 ] 24 0 24 -[ 2 1 0 ] 25 0 25 -[ 2 1 0 ] 26 0 26 -[ 2 1 1 ] 27 0 27 -[ 2 1 1 ] 28 0 28 -[ 2 1 1 ] 29 0 29 -[ 2 2 0 ] 30 0 30 -[ 2 2 0 ] 31 0 31 -[ 2 2 0 ] 32 0 32 -[ 2 2 1 ] 33 0 33 -[ 2 2 1 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 3 0 0 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 0 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 0 1 ] 41 0 41 -[ 3 0 1 ] 42 0 42 -[ 3 0 1 ] 43 0 43 -[ 3 1 0 ] 44 0 44 -[ 3 1 0 ] 45 0 45 -[ 3 1 0 ] 46 0 46 -[ 3 1 0 ] 47 0 47 -[ 3 1 1 ] 48 0 48 -[ 3 1 1 ] 49 0 49 -[ 3 1 1 ] 50 0 50 -[ 3 1 1 ] 51 0 51 -[ 3 2 0 ] 52 0 52 -[ 3 2 0 ] 53 0 53 -[ 3 2 0 ] 54 0 54 -[ 3 2 0 ] 55 0 55 -[ 3 2 1 ] 56 0 56 -[ 3 2 1 ] 57 0 57 -[ 3 2 1 ] 58 0 58 -[ 3 2 1 ] 59 0 59 -59 differences found - -dataset: and -Not comparable: or is an empty dataset -0 differences found - obj1 obj2 - -------------------------------------- - x x VLstring - x x VLstring2D - x x VLstring3D - x x array - x x array2D - x x array3D - x x bitfield - x x bitfield2D - x x bitfield3D - x x compound - x x compound2D - x x compound3D - x x enum - x x enum2D - x x enum3D - x x float - x x float2D - x x float3D - x x integer - x x integer2D - x x integer3D - x x opaque - x x opaque2D - x x opaque3D - x x reference - x x reference2D - x x reference3D - x x string - x x string2D - x x string3D - x x vlen - x x vlen2D - x x vlen3D -Attributes status: 33 common, 0 only in obj1, 0 only in obj2 -attribute: > and > -size: [2] [2] -position VLstring of VLstring of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position VLstring2D of VLstring2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position VLstring3D of VLstring3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position array of array of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 0 ] 3 0 3 -[ 1 ] 4 0 4 -[ 1 ] 5 0 5 -[ 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [3x2] [3x2] -position array2D of array2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 0 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 0 1 ] 5 0 5 -[ 0 1 ] 6 0 6 -[ 1 0 ] 7 0 7 -[ 1 0 ] 8 0 8 -[ 1 0 ] 9 0 9 -[ 1 1 ] 10 0 10 -[ 1 1 ] 11 0 11 -[ 1 1 ] 12 0 12 -[ 2 0 ] 13 0 13 -[ 2 0 ] 14 0 14 -[ 2 0 ] 15 0 15 -[ 2 1 ] 16 0 16 -[ 2 1 ] 17 0 17 -[ 2 1 ] 18 0 18 -18 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position array3D of array3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 0 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 0 1 ] 5 0 5 -[ 0 0 1 ] 6 0 6 -[ 0 1 0 ] 7 0 7 -[ 0 1 0 ] 8 0 8 -[ 0 1 0 ] 9 0 9 -[ 0 1 1 ] 10 0 10 -[ 0 1 1 ] 11 0 11 -[ 0 1 1 ] 12 0 12 -[ 0 2 0 ] 13 0 13 -[ 0 2 0 ] 14 0 14 -[ 0 2 0 ] 15 0 15 -[ 0 2 1 ] 16 0 16 -[ 0 2 1 ] 17 0 17 -[ 0 2 1 ] 18 0 18 -[ 1 0 0 ] 19 0 19 -[ 1 0 0 ] 20 0 20 -[ 1 0 0 ] 21 0 21 -[ 1 0 1 ] 22 0 22 -[ 1 0 1 ] 23 0 23 -[ 1 0 1 ] 24 0 24 -[ 1 1 0 ] 25 0 25 -[ 1 1 0 ] 26 0 26 -[ 1 1 0 ] 27 0 27 -[ 1 1 1 ] 28 0 28 -[ 1 1 1 ] 29 0 29 -[ 1 1 1 ] 30 0 30 -[ 1 2 0 ] 31 0 31 -[ 1 2 0 ] 32 0 32 -[ 1 2 0 ] 33 0 33 -[ 1 2 1 ] 34 0 34 -[ 1 2 1 ] 35 0 35 -[ 1 2 1 ] 36 0 36 -[ 2 0 0 ] 37 0 37 -[ 2 0 0 ] 38 0 38 -[ 2 0 0 ] 39 0 39 -[ 2 0 1 ] 40 0 40 -[ 2 0 1 ] 41 0 41 -[ 2 0 1 ] 42 0 42 -[ 2 1 0 ] 43 0 43 -[ 2 1 0 ] 44 0 44 -[ 2 1 0 ] 45 0 45 -[ 2 1 1 ] 46 0 46 -[ 2 1 1 ] 47 0 47 -[ 2 1 1 ] 48 0 48 -[ 2 2 0 ] 49 0 49 -[ 2 2 0 ] 50 0 50 -[ 2 2 0 ] 51 0 51 -[ 2 2 1 ] 52 0 52 -[ 2 2 1 ] 53 0 53 -[ 2 2 1 ] 54 0 54 -[ 3 0 0 ] 55 0 55 -[ 3 0 0 ] 56 0 56 -[ 3 0 0 ] 57 0 57 -[ 3 0 1 ] 58 0 58 -[ 3 0 1 ] 59 0 59 -[ 3 0 1 ] 60 0 60 -[ 3 1 0 ] 61 0 61 -[ 3 1 0 ] 62 0 62 -[ 3 1 0 ] 63 0 63 -[ 3 1 1 ] 64 0 64 -[ 3 1 1 ] 65 0 65 -[ 3 1 1 ] 66 0 66 -[ 3 2 0 ] 67 0 67 -[ 3 2 0 ] 68 0 68 -[ 3 2 0 ] 69 0 69 -[ 3 2 1 ] 70 0 70 -[ 3 2 1 ] 71 0 71 -[ 3 2 1 ] 72 0 72 -72 differences found -attribute: > and > -size: [2] [2] -position bitfield of bitfield of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position bitfield2D of bitfield2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position bitfield3D of bitfield3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position compound of compound of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 1 ] 3 0 3 -[ 1 ] 4 0 4 -4 differences found -attribute: > and > -size: [3x2] [3x2] -position compound2D of compound2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 1 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 1 0 ] 5 0 5 -[ 1 0 ] 6 0 6 -[ 1 1 ] 7 0 7 -[ 1 1 ] 8 0 8 -[ 2 0 ] 9 0 9 -[ 2 0 ] 10 0 10 -[ 2 1 ] 11 0 11 -[ 2 1 ] 12 0 12 -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position compound3D of compound3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 1 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 1 0 ] 5 0 5 -[ 0 1 0 ] 6 0 6 -[ 0 1 1 ] 7 0 7 -[ 0 1 1 ] 8 0 8 -[ 0 2 0 ] 9 0 9 -[ 0 2 0 ] 10 0 10 -[ 0 2 1 ] 11 0 11 -[ 0 2 1 ] 12 0 12 -[ 1 0 0 ] 13 0 13 -[ 1 0 0 ] 14 0 14 -[ 1 0 1 ] 15 0 15 -[ 1 0 1 ] 16 0 16 -[ 1 1 0 ] 17 0 17 -[ 1 1 0 ] 18 0 18 -[ 1 1 1 ] 19 0 19 -[ 1 1 1 ] 20 0 20 -[ 1 2 0 ] 21 0 21 -[ 1 2 0 ] 22 0 22 -[ 1 2 1 ] 23 0 23 -[ 1 2 1 ] 24 0 24 -[ 2 0 0 ] 25 0 25 -[ 2 0 0 ] 26 0 26 -[ 2 0 1 ] 27 0 27 -[ 2 0 1 ] 28 0 28 -[ 2 1 0 ] 29 0 29 -[ 2 1 0 ] 30 0 30 -[ 2 1 1 ] 31 0 31 -[ 2 1 1 ] 32 0 32 -[ 2 2 0 ] 33 0 33 -[ 2 2 0 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 2 2 1 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 1 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 1 0 ] 41 0 41 -[ 3 1 0 ] 42 0 42 -[ 3 1 1 ] 43 0 43 -[ 3 1 1 ] 44 0 44 -[ 3 2 0 ] 45 0 45 -[ 3 2 0 ] 46 0 46 -[ 3 2 1 ] 47 0 47 -[ 3 2 1 ] 48 0 48 -48 differences found -attribute: > and > -size: [2] [2] -position enum of enum of difference ------------------------------------------------------------- -[ 0 ] RED GREEN -[ 1 ] RED GREEN -2 differences found -attribute: > and > -size: [3x2] [3x2] -position enum2D of enum2D of difference ------------------------------------------------------------- -[ 0 0 ] RED GREEN -[ 0 1 ] RED GREEN -[ 1 0 ] RED GREEN -[ 1 1 ] RED GREEN -[ 2 0 ] RED GREEN -[ 2 1 ] RED GREEN -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position enum3D of enum3D of difference ------------------------------------------------------------- -[ 0 0 0 ] GREEN RED -[ 0 0 1 ] GREEN RED -[ 0 1 0 ] GREEN RED -[ 0 1 1 ] GREEN RED -[ 0 2 0 ] GREEN RED -[ 0 2 1 ] GREEN RED -[ 1 0 0 ] GREEN RED -[ 1 0 1 ] GREEN RED -[ 1 1 0 ] GREEN RED -[ 1 1 1 ] GREEN RED -[ 1 2 0 ] GREEN RED -[ 1 2 1 ] GREEN RED -[ 2 0 0 ] GREEN RED -[ 2 0 1 ] GREEN RED -[ 2 1 0 ] GREEN RED -[ 2 1 1 ] GREEN RED -[ 2 2 0 ] GREEN RED -[ 2 2 1 ] GREEN RED -[ 3 0 0 ] GREEN RED -[ 3 0 1 ] GREEN RED -[ 3 1 0 ] GREEN RED -[ 3 1 1 ] GREEN RED -[ 3 2 0 ] GREEN RED -[ 3 2 1 ] GREEN RED -24 differences found -attribute: > and > -size: [2] [2] -position float of float of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position float2D of float2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position float3D of float3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position integer of integer of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position integer2D of integer2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position integer3D of integer3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position opaque of opaque of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position opaque2D of opaque2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position opaque3D of opaque3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -0 differences found -attribute: > and > -0 differences found -attribute: > and > -0 differences found -attribute: > and > -size: [2] [2] -position string of string of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position string2D of string2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position string3D of string3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position vlen of vlen of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -[ 1 ] 3 0 3 -3 differences found -attribute: > and > -size: [3x2] [3x2] -position vlen2D of vlen2D of difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 1 0 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 1 1 ] 5 0 5 -[ 2 0 ] 6 0 6 -[ 2 0 ] 7 0 7 -[ 2 0 ] 8 0 8 -[ 2 1 ] 9 0 9 -[ 2 1 ] 10 0 10 -[ 2 1 ] 11 0 11 -11 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position vlen3D of vlen3D of difference ------------------------------------------------------------- -[ 0 0 1 ] 1 0 1 -[ 0 1 0 ] 2 0 2 -[ 0 1 1 ] 3 0 3 -[ 0 2 0 ] 4 0 4 -[ 0 2 1 ] 5 0 5 -[ 1 0 0 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 0 1 ] 9 0 9 -[ 1 1 0 ] 10 0 10 -[ 1 1 0 ] 11 0 11 -[ 1 1 1 ] 12 0 12 -[ 1 1 1 ] 13 0 13 -[ 1 2 0 ] 14 0 14 -[ 1 2 0 ] 15 0 15 -[ 1 2 1 ] 16 0 16 -[ 1 2 1 ] 17 0 17 -[ 2 0 0 ] 18 0 18 -[ 2 0 0 ] 19 0 19 -[ 2 0 0 ] 20 0 20 -[ 2 0 1 ] 21 0 21 -[ 2 0 1 ] 22 0 22 -[ 2 0 1 ] 23 0 23 -[ 2 1 0 ] 24 0 24 -[ 2 1 0 ] 25 0 25 -[ 2 1 0 ] 26 0 26 -[ 2 1 1 ] 27 0 27 -[ 2 1 1 ] 28 0 28 -[ 2 1 1 ] 29 0 29 -[ 2 2 0 ] 30 0 30 -[ 2 2 0 ] 31 0 31 -[ 2 2 0 ] 32 0 32 -[ 2 2 1 ] 33 0 33 -[ 2 2 1 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 3 0 0 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 0 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 0 1 ] 41 0 41 -[ 3 0 1 ] 42 0 42 -[ 3 0 1 ] 43 0 43 -[ 3 1 0 ] 44 0 44 -[ 3 1 0 ] 45 0 45 -[ 3 1 0 ] 46 0 46 -[ 3 1 0 ] 47 0 47 -[ 3 1 1 ] 48 0 48 -[ 3 1 1 ] 49 0 49 -[ 3 1 1 ] 50 0 50 -[ 3 1 1 ] 51 0 51 -[ 3 2 0 ] 52 0 52 -[ 3 2 0 ] 53 0 53 -[ 3 2 0 ] 54 0 54 -[ 3 2 0 ] 55 0 55 -[ 3 2 1 ] 56 0 56 -[ 3 2 1 ] 57 0 57 -[ 3 2 1 ] 58 0 58 -[ 3 2 1 ] 59 0 59 -59 differences found - -group : and -0 differences found - obj1 obj2 - -------------------------------------- - x x VLstring - x x VLstring2D - x x VLstring3D - x x array - x x array2D - x x array3D - x x bitfield - x x bitfield2D - x x bitfield3D - x x compound - x x compound2D - x x compound3D - x x enum - x x enum2D - x x enum3D - x x float - x x float2D - x x float3D - x x integer - x x integer2D - x x integer3D - x x opaque - x x opaque2D - x x opaque3D - x x string - x x string2D - x x string3D - x x vlen - x x vlen2D - x x vlen3D -Attributes status: 30 common, 0 only in obj1, 0 only in obj2 -attribute: > and > -size: [2] [2] -position VLstring of VLstring of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position VLstring2D of VLstring2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position VLstring3D of VLstring3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position array of array of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 0 ] 3 0 3 -[ 1 ] 4 0 4 -[ 1 ] 5 0 5 -[ 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [3x2] [3x2] -position array2D of array2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 0 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 0 1 ] 5 0 5 -[ 0 1 ] 6 0 6 -[ 1 0 ] 7 0 7 -[ 1 0 ] 8 0 8 -[ 1 0 ] 9 0 9 -[ 1 1 ] 10 0 10 -[ 1 1 ] 11 0 11 -[ 1 1 ] 12 0 12 -[ 2 0 ] 13 0 13 -[ 2 0 ] 14 0 14 -[ 2 0 ] 15 0 15 -[ 2 1 ] 16 0 16 -[ 2 1 ] 17 0 17 -[ 2 1 ] 18 0 18 -18 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position array3D of array3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 0 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 0 1 ] 5 0 5 -[ 0 0 1 ] 6 0 6 -[ 0 1 0 ] 7 0 7 -[ 0 1 0 ] 8 0 8 -[ 0 1 0 ] 9 0 9 -[ 0 1 1 ] 10 0 10 -[ 0 1 1 ] 11 0 11 -[ 0 1 1 ] 12 0 12 -[ 0 2 0 ] 13 0 13 -[ 0 2 0 ] 14 0 14 -[ 0 2 0 ] 15 0 15 -[ 0 2 1 ] 16 0 16 -[ 0 2 1 ] 17 0 17 -[ 0 2 1 ] 18 0 18 -[ 1 0 0 ] 19 0 19 -[ 1 0 0 ] 20 0 20 -[ 1 0 0 ] 21 0 21 -[ 1 0 1 ] 22 0 22 -[ 1 0 1 ] 23 0 23 -[ 1 0 1 ] 24 0 24 -[ 1 1 0 ] 25 0 25 -[ 1 1 0 ] 26 0 26 -[ 1 1 0 ] 27 0 27 -[ 1 1 1 ] 28 0 28 -[ 1 1 1 ] 29 0 29 -[ 1 1 1 ] 30 0 30 -[ 1 2 0 ] 31 0 31 -[ 1 2 0 ] 32 0 32 -[ 1 2 0 ] 33 0 33 -[ 1 2 1 ] 34 0 34 -[ 1 2 1 ] 35 0 35 -[ 1 2 1 ] 36 0 36 -[ 2 0 0 ] 37 0 37 -[ 2 0 0 ] 38 0 38 -[ 2 0 0 ] 39 0 39 -[ 2 0 1 ] 40 0 40 -[ 2 0 1 ] 41 0 41 -[ 2 0 1 ] 42 0 42 -[ 2 1 0 ] 43 0 43 -[ 2 1 0 ] 44 0 44 -[ 2 1 0 ] 45 0 45 -[ 2 1 1 ] 46 0 46 -[ 2 1 1 ] 47 0 47 -[ 2 1 1 ] 48 0 48 -[ 2 2 0 ] 49 0 49 -[ 2 2 0 ] 50 0 50 -[ 2 2 0 ] 51 0 51 -[ 2 2 1 ] 52 0 52 -[ 2 2 1 ] 53 0 53 -[ 2 2 1 ] 54 0 54 -[ 3 0 0 ] 55 0 55 -[ 3 0 0 ] 56 0 56 -[ 3 0 0 ] 57 0 57 -[ 3 0 1 ] 58 0 58 -[ 3 0 1 ] 59 0 59 -[ 3 0 1 ] 60 0 60 -[ 3 1 0 ] 61 0 61 -[ 3 1 0 ] 62 0 62 -[ 3 1 0 ] 63 0 63 -[ 3 1 1 ] 64 0 64 -[ 3 1 1 ] 65 0 65 -[ 3 1 1 ] 66 0 66 -[ 3 2 0 ] 67 0 67 -[ 3 2 0 ] 68 0 68 -[ 3 2 0 ] 69 0 69 -[ 3 2 1 ] 70 0 70 -[ 3 2 1 ] 71 0 71 -[ 3 2 1 ] 72 0 72 -72 differences found -attribute: > and > -size: [2] [2] -position bitfield of bitfield of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position bitfield2D of bitfield2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position bitfield3D of bitfield3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position compound of compound of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 1 ] 3 0 3 -[ 1 ] 4 0 4 -4 differences found -attribute: > and > -size: [3x2] [3x2] -position compound2D of compound2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 1 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 1 0 ] 5 0 5 -[ 1 0 ] 6 0 6 -[ 1 1 ] 7 0 7 -[ 1 1 ] 8 0 8 -[ 2 0 ] 9 0 9 -[ 2 0 ] 10 0 10 -[ 2 1 ] 11 0 11 -[ 2 1 ] 12 0 12 -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position compound3D of compound3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 1 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 1 0 ] 5 0 5 -[ 0 1 0 ] 6 0 6 -[ 0 1 1 ] 7 0 7 -[ 0 1 1 ] 8 0 8 -[ 0 2 0 ] 9 0 9 -[ 0 2 0 ] 10 0 10 -[ 0 2 1 ] 11 0 11 -[ 0 2 1 ] 12 0 12 -[ 1 0 0 ] 13 0 13 -[ 1 0 0 ] 14 0 14 -[ 1 0 1 ] 15 0 15 -[ 1 0 1 ] 16 0 16 -[ 1 1 0 ] 17 0 17 -[ 1 1 0 ] 18 0 18 -[ 1 1 1 ] 19 0 19 -[ 1 1 1 ] 20 0 20 -[ 1 2 0 ] 21 0 21 -[ 1 2 0 ] 22 0 22 -[ 1 2 1 ] 23 0 23 -[ 1 2 1 ] 24 0 24 -[ 2 0 0 ] 25 0 25 -[ 2 0 0 ] 26 0 26 -[ 2 0 1 ] 27 0 27 -[ 2 0 1 ] 28 0 28 -[ 2 1 0 ] 29 0 29 -[ 2 1 0 ] 30 0 30 -[ 2 1 1 ] 31 0 31 -[ 2 1 1 ] 32 0 32 -[ 2 2 0 ] 33 0 33 -[ 2 2 0 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 2 2 1 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 1 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 1 0 ] 41 0 41 -[ 3 1 0 ] 42 0 42 -[ 3 1 1 ] 43 0 43 -[ 3 1 1 ] 44 0 44 -[ 3 2 0 ] 45 0 45 -[ 3 2 0 ] 46 0 46 -[ 3 2 1 ] 47 0 47 -[ 3 2 1 ] 48 0 48 -48 differences found -attribute: > and > -size: [2] [2] -position enum of enum of difference ------------------------------------------------------------- -[ 0 ] RED GREEN -[ 1 ] RED GREEN -2 differences found -attribute: > and > -size: [3x2] [3x2] -position enum2D of enum2D of difference ------------------------------------------------------------- -[ 0 0 ] RED GREEN -[ 0 1 ] RED GREEN -[ 1 0 ] RED GREEN -[ 1 1 ] RED GREEN -[ 2 0 ] RED GREEN -[ 2 1 ] RED GREEN -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position enum3D of enum3D of difference ------------------------------------------------------------- -[ 0 0 0 ] GREEN RED -[ 0 0 1 ] GREEN RED -[ 0 1 0 ] GREEN RED -[ 0 1 1 ] GREEN RED -[ 0 2 0 ] GREEN RED -[ 0 2 1 ] GREEN RED -[ 1 0 0 ] GREEN RED -[ 1 0 1 ] GREEN RED -[ 1 1 0 ] GREEN RED -[ 1 1 1 ] GREEN RED -[ 1 2 0 ] GREEN RED -[ 1 2 1 ] GREEN RED -[ 2 0 0 ] GREEN RED -[ 2 0 1 ] GREEN RED -[ 2 1 0 ] GREEN RED -[ 2 1 1 ] GREEN RED -[ 2 2 0 ] GREEN RED -[ 2 2 1 ] GREEN RED -[ 3 0 0 ] GREEN RED -[ 3 0 1 ] GREEN RED -[ 3 1 0 ] GREEN RED -[ 3 1 1 ] GREEN RED -[ 3 2 0 ] GREEN RED -[ 3 2 1 ] GREEN RED -24 differences found -attribute: > and > -size: [2] [2] -position float of float of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position float2D of float2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position float3D of float3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position integer of integer of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position integer2D of integer2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position integer3D of integer3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position opaque of opaque of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -attribute: > and > -size: [3x2] [3x2] -position opaque2D of opaque2D of difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position opaque3D of opaque3D of difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -attribute: > and > -size: [2] [2] -position string of string of difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -attribute: > and > -size: [3x2] [3x2] -position string2D of string2D of difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position string3D of string3D of difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -attribute: > and > -size: [2] [2] -position vlen of vlen of difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -[ 1 ] 3 0 3 -3 differences found -attribute: > and > -size: [3x2] [3x2] -position vlen2D of vlen2D of difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 1 0 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 1 1 ] 5 0 5 -[ 2 0 ] 6 0 6 -[ 2 0 ] 7 0 7 -[ 2 0 ] 8 0 8 -[ 2 1 ] 9 0 9 -[ 2 1 ] 10 0 10 -[ 2 1 ] 11 0 11 -11 differences found -attribute: > and > -size: [4x3x2] [4x3x2] -position vlen3D of vlen3D of difference ------------------------------------------------------------- -[ 0 0 1 ] 1 0 1 -[ 0 1 0 ] 2 0 2 -[ 0 1 1 ] 3 0 3 -[ 0 2 0 ] 4 0 4 -[ 0 2 1 ] 5 0 5 -[ 1 0 0 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 0 1 ] 9 0 9 -[ 1 1 0 ] 10 0 10 -[ 1 1 0 ] 11 0 11 -[ 1 1 1 ] 12 0 12 -[ 1 1 1 ] 13 0 13 -[ 1 2 0 ] 14 0 14 -[ 1 2 0 ] 15 0 15 -[ 1 2 1 ] 16 0 16 -[ 1 2 1 ] 17 0 17 -[ 2 0 0 ] 18 0 18 -[ 2 0 0 ] 19 0 19 -[ 2 0 0 ] 20 0 20 -[ 2 0 1 ] 21 0 21 -[ 2 0 1 ] 22 0 22 -[ 2 0 1 ] 23 0 23 -[ 2 1 0 ] 24 0 24 -[ 2 1 0 ] 25 0 25 -[ 2 1 0 ] 26 0 26 -[ 2 1 1 ] 27 0 27 -[ 2 1 1 ] 28 0 28 -[ 2 1 1 ] 29 0 29 -[ 2 2 0 ] 30 0 30 -[ 2 2 0 ] 31 0 31 -[ 2 2 0 ] 32 0 32 -[ 2 2 1 ] 33 0 33 -[ 2 2 1 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 3 0 0 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 0 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 0 1 ] 41 0 41 -[ 3 0 1 ] 42 0 42 -[ 3 0 1 ] 43 0 43 -[ 3 1 0 ] 44 0 44 -[ 3 1 0 ] 45 0 45 -[ 3 1 0 ] 46 0 46 -[ 3 1 0 ] 47 0 47 -[ 3 1 1 ] 48 0 48 -[ 3 1 1 ] 49 0 49 -[ 3 1 1 ] 50 0 50 -[ 3 1 1 ] 51 0 51 -[ 3 2 0 ] 52 0 52 -[ 3 2 0 ] 53 0 53 -[ 3 2 0 ] 54 0 54 -[ 3 2 0 ] 55 0 55 -[ 3 2 1 ] 56 0 56 -[ 3 2 1 ] 57 0 57 -[ 3 2 1 ] 58 0 58 -[ 3 2 1 ] 59 0 59 -59 differences found --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_704.txt b/tools/h5diff/testfiles/h5diff_704.txt deleted file mode 100644 index e752a01..0000000 --- a/tools/h5diff/testfiles/h5diff_704.txt +++ /dev/null @@ -1,28 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - - -group : and -0 differences found - obj1 obj2 - -------------------------------------- - x x float1 - x x integer1 -Attributes status: 2 common, 0 only in obj1, 0 only in obj2 -attribute: > and > -size: [2] [2] -position float1 of float1 of difference ------------------------------------------------------------- -[ 0 ] 1.1 2.1 1 -[ 1 ] 2.2 3.2 1 -2 differences found -attribute: > and > -size: [2] [2] -position integer1 of integer1 of difference ------------------------------------------------------------- -[ 0 ] 1 2 1 -[ 1 ] 2 3 1 -2 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_705.txt b/tools/h5diff/testfiles/h5diff_705.txt deleted file mode 100644 index 2e52f18..0000000 --- a/tools/h5diff/testfiles/h5diff_705.txt +++ /dev/null @@ -1,17 +0,0 @@ - -dataset: and -0 differences found - obj1 obj2 - -------------------------------------- - x float2 - x float3 - x x integer1 -Attributes status: 1 common, 1 only in obj1, 1 only in obj2 -attribute: > and > -size: [2] [2] -position integer1 of integer1 of difference ------------------------------------------------------------- -[ 0 ] 1 2 1 -[ 1 ] 2 3 1 -2 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_706.txt b/tools/h5diff/testfiles/h5diff_706.txt deleted file mode 100644 index 5825150..0000000 --- a/tools/h5diff/testfiles/h5diff_706.txt +++ /dev/null @@ -1,13 +0,0 @@ - -datatype: and -0 differences found - obj1 obj2 - -------------------------------------- - x float2 - x float3 - x float5 - x float6 - x integer1 - x integer4 -Attributes status: 0 common, 3 only in obj1, 3 only in obj2 -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_707.txt b/tools/h5diff/testfiles/h5diff_707.txt deleted file mode 100644 index 4d6378b..0000000 --- a/tools/h5diff/testfiles/h5diff_707.txt +++ /dev/null @@ -1,29 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - - -group : and -0 differences found - obj1 obj2 - -------------------------------------- - x x float2 - x float3 - x x integer1 -Attributes status: 2 common, 1 only in obj1, 0 only in obj2 -attribute: > and > -size: [2] [2] -position float2 of float2 of difference ------------------------------------------------------------- -[ 0 ] 1.1 2.1 1 -[ 1 ] 2.2 3.2 1 -2 differences found -attribute: > and > -size: [2] [2] -position integer1 of integer1 of difference ------------------------------------------------------------- -[ 0 ] 1 2 1 -[ 1 ] 2 3 1 -2 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_708.txt b/tools/h5diff/testfiles/h5diff_708.txt deleted file mode 100644 index a10a8b7..0000000 --- a/tools/h5diff/testfiles/h5diff_708.txt +++ /dev/null @@ -1,17 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - - -group : and -0 differences found - obj1 obj2 - -------------------------------------- - x float11 - x float12 - x float4 - x integer10 - x integer3 -Attributes status: 0 common, 3 only in obj1, 2 only in obj2 -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_709.txt b/tools/h5diff/testfiles/h5diff_709.txt deleted file mode 100644 index d0e68bf..0000000 --- a/tools/h5diff/testfiles/h5diff_709.txt +++ /dev/null @@ -1,12 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - - -group : and -0 differences found - obj1 obj2 - -------------------------------------- -Attributes status: 0 common, 0 only in obj1, 0 only in obj2 -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_710.txt b/tools/h5diff/testfiles/h5diff_710.txt deleted file mode 100644 index 10a8501..0000000 --- a/tools/h5diff/testfiles/h5diff_710.txt +++ /dev/null @@ -1,108 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset - x x /g - x x /g2 - x x /g3 - x x /g4 - x x /ntype - - -group : and -0 differences found - obj1 obj2 - -------------------------------------- -Attributes status: 0 common, 0 only in obj1, 0 only in obj2 - -dataset: and -0 differences found - obj1 obj2 - -------------------------------------- - x float2 - x float3 - x x integer1 -Attributes status: 1 common, 1 only in obj1, 1 only in obj2 -attribute: > and > -size: [2] [2] -position integer1 of integer1 of difference ------------------------------------------------------------- -[ 0 ] 1 2 1 -[ 1 ] 2 3 1 -2 differences found - -group : and -0 differences found - obj1 obj2 - -------------------------------------- - x x float1 - x x integer1 -Attributes status: 2 common, 0 only in obj1, 0 only in obj2 -attribute: > and > -size: [2] [2] -position float1 of float1 of difference ------------------------------------------------------------- -[ 0 ] 1.1 2.1 1 -[ 1 ] 2.2 3.2 1 -2 differences found -attribute: > and > -size: [2] [2] -position integer1 of integer1 of difference ------------------------------------------------------------- -[ 0 ] 1 2 1 -[ 1 ] 2 3 1 -2 differences found - -group : and -0 differences found - obj1 obj2 - -------------------------------------- - x x float2 - x float3 - x x integer1 -Attributes status: 2 common, 1 only in obj1, 0 only in obj2 -attribute: > and > -size: [2] [2] -position float2 of float2 of difference ------------------------------------------------------------- -[ 0 ] 1.1 2.1 1 -[ 1 ] 2.2 3.2 1 -2 differences found -attribute: > and > -size: [2] [2] -position integer1 of integer1 of difference ------------------------------------------------------------- -[ 0 ] 1 2 1 -[ 1 ] 2 3 1 -2 differences found - -group : and -0 differences found - obj1 obj2 - -------------------------------------- - x float11 - x float12 - x float4 - x integer10 - x integer3 -Attributes status: 0 common, 3 only in obj1, 2 only in obj2 - -group : and -0 differences found - obj1 obj2 - -------------------------------------- -Attributes status: 0 common, 0 only in obj1, 0 only in obj2 - -datatype: and -0 differences found - obj1 obj2 - -------------------------------------- - x float2 - x float3 - x float5 - x float6 - x integer1 - x integer4 -Attributes status: 0 common, 3 only in obj1, 3 only in obj2 -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_80.txt b/tools/h5diff/testfiles/h5diff_80.txt deleted file mode 100644 index 5957d72..0000000 --- a/tools/h5diff/testfiles/h5diff_80.txt +++ /dev/null @@ -1,881 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset - x x /dsetref - x x /g1 - x x /g1/VLstring - x x /g1/VLstring2D - x x /g1/VLstring3D - x x /g1/array - x x /g1/array2D - x x /g1/array3D - x x /g1/arrayd - x x /g1/bitfield - x x /g1/bitfield2D - x x /g1/bitfield3D - x x /g1/compound - x x /g1/compound2D - x x /g1/compound3D - x x /g1/enum - x x /g1/enum2D - x x /g1/enum3D - x x /g1/float - x x /g1/float2D - x x /g1/float3D - x x /g1/integer - x x /g1/integer2D - x x /g1/integer3D - x x /g1/opaque - x x /g1/opaque2D - x x /g1/opaque3D - x x /g1/reference - x x /g1/reference2D - x x /g1/reference3D - x x /g1/scalar - x x /g1/string - x x /g1/string2D - x x /g1/string3D - x x /g1/vlen - x x /g1/vlen2D - x x /g1/vlen3D - x x /refreg - -group : and -0 differences found -dataset: and -size: [2] [2] -position dset dset difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -size: [2] [2] -position VLstring VLstring difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -dataset: and -size: [3x2] [3x2] -position VLstring2D VLstring2D difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -dataset: and -size: [4x3x2] [4x3x2] -position VLstring3D VLstring3D difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -dataset: and -size: [2] [2] -position array array difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 0 ] 3 0 3 -[ 1 ] 4 0 4 -[ 1 ] 5 0 5 -[ 1 ] 6 0 6 -6 differences found -dataset: and -size: [3x2] [3x2] -position array2D array2D difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 0 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 0 1 ] 5 0 5 -[ 0 1 ] 6 0 6 -[ 1 0 ] 7 0 7 -[ 1 0 ] 8 0 8 -[ 1 0 ] 9 0 9 -[ 1 1 ] 10 0 10 -[ 1 1 ] 11 0 11 -[ 1 1 ] 12 0 12 -[ 2 0 ] 13 0 13 -[ 2 0 ] 14 0 14 -[ 2 0 ] 15 0 15 -[ 2 1 ] 16 0 16 -[ 2 1 ] 17 0 17 -[ 2 1 ] 18 0 18 -18 differences found -dataset: and -size: [4x3x2] [4x3x2] -position array3D array3D difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 0 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 0 1 ] 5 0 5 -[ 0 0 1 ] 6 0 6 -[ 0 1 0 ] 7 0 7 -[ 0 1 0 ] 8 0 8 -[ 0 1 0 ] 9 0 9 -[ 0 1 1 ] 10 0 10 -[ 0 1 1 ] 11 0 11 -[ 0 1 1 ] 12 0 12 -[ 0 2 0 ] 13 0 13 -[ 0 2 0 ] 14 0 14 -[ 0 2 0 ] 15 0 15 -[ 0 2 1 ] 16 0 16 -[ 0 2 1 ] 17 0 17 -[ 0 2 1 ] 18 0 18 -[ 1 0 0 ] 19 0 19 -[ 1 0 0 ] 20 0 20 -[ 1 0 0 ] 21 0 21 -[ 1 0 1 ] 22 0 22 -[ 1 0 1 ] 23 0 23 -[ 1 0 1 ] 24 0 24 -[ 1 1 0 ] 25 0 25 -[ 1 1 0 ] 26 0 26 -[ 1 1 0 ] 27 0 27 -[ 1 1 1 ] 28 0 28 -[ 1 1 1 ] 29 0 29 -[ 1 1 1 ] 30 0 30 -[ 1 2 0 ] 31 0 31 -[ 1 2 0 ] 32 0 32 -[ 1 2 0 ] 33 0 33 -[ 1 2 1 ] 34 0 34 -[ 1 2 1 ] 35 0 35 -[ 1 2 1 ] 36 0 36 -[ 2 0 0 ] 37 0 37 -[ 2 0 0 ] 38 0 38 -[ 2 0 0 ] 39 0 39 -[ 2 0 1 ] 40 0 40 -[ 2 0 1 ] 41 0 41 -[ 2 0 1 ] 42 0 42 -[ 2 1 0 ] 43 0 43 -[ 2 1 0 ] 44 0 44 -[ 2 1 0 ] 45 0 45 -[ 2 1 1 ] 46 0 46 -[ 2 1 1 ] 47 0 47 -[ 2 1 1 ] 48 0 48 -[ 2 2 0 ] 49 0 49 -[ 2 2 0 ] 50 0 50 -[ 2 2 0 ] 51 0 51 -[ 2 2 1 ] 52 0 52 -[ 2 2 1 ] 53 0 53 -[ 2 2 1 ] 54 0 54 -[ 3 0 0 ] 55 0 55 -[ 3 0 0 ] 56 0 56 -[ 3 0 0 ] 57 0 57 -[ 3 0 1 ] 58 0 58 -[ 3 0 1 ] 59 0 59 -[ 3 0 1 ] 60 0 60 -[ 3 1 0 ] 61 0 61 -[ 3 1 0 ] 62 0 62 -[ 3 1 0 ] 63 0 63 -[ 3 1 1 ] 64 0 64 -[ 3 1 1 ] 65 0 65 -[ 3 1 1 ] 66 0 66 -[ 3 2 0 ] 67 0 67 -[ 3 2 0 ] 68 0 68 -[ 3 2 0 ] 69 0 69 -[ 3 2 1 ] 70 0 70 -[ 3 2 1 ] 71 0 71 -[ 3 2 1 ] 72 0 72 -72 differences found -dataset: and -Not comparable: or is an empty dataset -0 differences found -dataset: and -size: [2] [2] -position bitfield bitfield difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -dataset: and -size: [3x2] [3x2] -position bitfield2D bitfield2D difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -dataset: and -size: [4x3x2] [4x3x2] -position bitfield3D bitfield3D difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -dataset: and -size: [2] [2] -position compound compound difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 0 ] 2 0 2 -[ 1 ] 3 0 3 -[ 1 ] 4 0 4 -4 differences found -dataset: and -size: [3x2] [3x2] -position compound2D compound2D difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 0 ] 2 0 2 -[ 0 1 ] 3 0 3 -[ 0 1 ] 4 0 4 -[ 1 0 ] 5 0 5 -[ 1 0 ] 6 0 6 -[ 1 1 ] 7 0 7 -[ 1 1 ] 8 0 8 -[ 2 0 ] 9 0 9 -[ 2 0 ] 10 0 10 -[ 2 1 ] 11 0 11 -[ 2 1 ] 12 0 12 -12 differences found -dataset: and -size: [4x3x2] [4x3x2] -position compound3D compound3D difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 0 ] 2 0 2 -[ 0 0 1 ] 3 0 3 -[ 0 0 1 ] 4 0 4 -[ 0 1 0 ] 5 0 5 -[ 0 1 0 ] 6 0 6 -[ 0 1 1 ] 7 0 7 -[ 0 1 1 ] 8 0 8 -[ 0 2 0 ] 9 0 9 -[ 0 2 0 ] 10 0 10 -[ 0 2 1 ] 11 0 11 -[ 0 2 1 ] 12 0 12 -[ 1 0 0 ] 13 0 13 -[ 1 0 0 ] 14 0 14 -[ 1 0 1 ] 15 0 15 -[ 1 0 1 ] 16 0 16 -[ 1 1 0 ] 17 0 17 -[ 1 1 0 ] 18 0 18 -[ 1 1 1 ] 19 0 19 -[ 1 1 1 ] 20 0 20 -[ 1 2 0 ] 21 0 21 -[ 1 2 0 ] 22 0 22 -[ 1 2 1 ] 23 0 23 -[ 1 2 1 ] 24 0 24 -[ 2 0 0 ] 25 0 25 -[ 2 0 0 ] 26 0 26 -[ 2 0 1 ] 27 0 27 -[ 2 0 1 ] 28 0 28 -[ 2 1 0 ] 29 0 29 -[ 2 1 0 ] 30 0 30 -[ 2 1 1 ] 31 0 31 -[ 2 1 1 ] 32 0 32 -[ 2 2 0 ] 33 0 33 -[ 2 2 0 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 2 2 1 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 1 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 1 0 ] 41 0 41 -[ 3 1 0 ] 42 0 42 -[ 3 1 1 ] 43 0 43 -[ 3 1 1 ] 44 0 44 -[ 3 2 0 ] 45 0 45 -[ 3 2 0 ] 46 0 46 -[ 3 2 1 ] 47 0 47 -[ 3 2 1 ] 48 0 48 -48 differences found -dataset: and -size: [2] [2] -position enum enum difference ------------------------------------------------------------- -[ 0 ] RED GREEN -1 differences found -dataset: and -Not comparable: or is an empty dataset -0 differences found -dataset: and -Not comparable: or is an empty dataset -0 differences found -dataset: and -size: [2] [2] -position float float difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -dataset: and -size: [3x2] [3x2] -position float2D float2D difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -dataset: and -size: [4x3x2] [4x3x2] -position float3D float3D difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -dataset: and -size: [2] [2] -position integer integer difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -dataset: and -size: [3x2] [3x2] -position integer2D integer2D difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -dataset: and -size: [4x3x2] [4x3x2] -position integer3D integer3D difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -dataset: and -size: [2] [2] -position opaque opaque difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -2 differences found -dataset: and -size: [3x2] [3x2] -position opaque2D opaque2D difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 2 0 ] 5 0 5 -[ 2 1 ] 6 0 6 -6 differences found -dataset: and -size: [4x3x2] [4x3x2] -position opaque3D opaque3D difference ------------------------------------------------------------- -[ 0 0 0 ] 1 0 1 -[ 0 0 1 ] 2 0 2 -[ 0 1 0 ] 3 0 3 -[ 0 1 1 ] 4 0 4 -[ 0 2 0 ] 5 0 5 -[ 0 2 1 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 1 0 ] 9 0 9 -[ 1 1 1 ] 10 0 10 -[ 1 2 0 ] 11 0 11 -[ 1 2 1 ] 12 0 12 -[ 2 0 0 ] 13 0 13 -[ 2 0 1 ] 14 0 14 -[ 2 1 0 ] 15 0 15 -[ 2 1 1 ] 16 0 16 -[ 2 2 0 ] 17 0 17 -[ 2 2 1 ] 18 0 18 -[ 3 0 0 ] 19 0 19 -[ 3 0 1 ] 20 0 20 -[ 3 1 0 ] 21 0 21 -[ 3 1 1 ] 22 0 22 -[ 3 2 0 ] 23 0 23 -[ 3 2 1 ] 24 0 24 -24 differences found -dataset: and -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -4 differences found -dataset: and -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -12 differences found -dataset: and -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -size: [2] [2] -position difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -48 differences found -dataset: and -size: H5S_SCALAR H5S_SCALAR -position scalar scalar difference ------------------------------------------------------------- - 2 1 1 -1 differences found -dataset: and -size: [2] [2] -position string string difference ------------------------------------------------------------- -[ 0 ] a z -[ 0 ] b z -[ 1 ] d z -[ 1 ] e z -4 differences found -dataset: and -size: [3x2] [3x2] -position string2D string2D difference ------------------------------------------------------------- -[ 0 0 ] a z -[ 0 0 ] b z -[ 0 1 ] c z -[ 0 1 ] d z -[ 1 0 ] e z -[ 1 0 ] f z -[ 1 1 ] g z -[ 1 1 ] h z -[ 2 0 ] i z -[ 2 0 ] j z -[ 2 1 ] k z -[ 2 1 ] l z -12 differences found -dataset: and -size: [4x3x2] [4x3x2] -position string3D string3D difference ------------------------------------------------------------- -[ 0 0 0 ] a z -[ 0 0 0 ] b z -[ 0 0 1 ] c z -[ 0 0 1 ] d z -[ 0 1 0 ] e z -[ 0 1 0 ] f z -[ 0 1 1 ] g z -[ 0 1 1 ] h z -[ 0 2 0 ] i z -[ 0 2 0 ] j z -[ 0 2 1 ] k z -[ 0 2 1 ] l z -[ 1 0 0 ] m z -[ 1 0 0 ] n z -[ 1 0 1 ] p z -[ 1 0 1 ] q z -[ 1 1 0 ] r z -[ 1 1 0 ] s z -[ 1 1 1 ] t z -[ 1 1 1 ] u z -[ 1 2 0 ] v z -[ 1 2 0 ] w z -[ 1 2 1 ] x z -[ 2 0 0 ] A z -[ 2 0 0 ] B z -[ 2 0 1 ] C z -[ 2 0 1 ] D z -[ 2 1 0 ] E z -[ 2 1 0 ] F z -[ 2 1 1 ] G z -[ 2 1 1 ] H z -[ 2 2 0 ] I z -[ 2 2 0 ] J z -[ 2 2 1 ] K z -[ 2 2 1 ] L z -[ 3 0 0 ] M z -[ 3 0 0 ] N z -[ 3 0 1 ] P z -[ 3 0 1 ] Q z -[ 3 1 0 ] R z -[ 3 1 0 ] S z -[ 3 1 1 ] T z -[ 3 1 1 ] U z -[ 3 2 0 ] V z -[ 3 2 0 ] W z -[ 3 2 1 ] X z -[ 3 2 1 ] Z z -47 differences found -dataset: and -size: [2] [2] -position vlen vlen difference ------------------------------------------------------------- -[ 0 ] 1 0 1 -[ 1 ] 2 0 2 -[ 1 ] 3 0 3 -3 differences found -dataset: and -size: [3x2] [3x2] -position vlen2D vlen2D difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 1 0 ] 2 0 2 -[ 1 0 ] 3 0 3 -[ 1 1 ] 4 0 4 -[ 1 1 ] 5 0 5 -[ 2 0 ] 6 0 6 -[ 2 0 ] 7 0 7 -[ 2 0 ] 8 0 8 -[ 2 1 ] 9 0 9 -[ 2 1 ] 10 0 10 -[ 2 1 ] 11 0 11 -11 differences found -dataset: and -size: [4x3x2] [4x3x2] -position vlen3D vlen3D difference ------------------------------------------------------------- -[ 0 0 1 ] 1 0 1 -[ 0 1 0 ] 2 0 2 -[ 0 1 1 ] 3 0 3 -[ 0 2 0 ] 4 0 4 -[ 0 2 1 ] 5 0 5 -[ 1 0 0 ] 6 0 6 -[ 1 0 0 ] 7 0 7 -[ 1 0 1 ] 8 0 8 -[ 1 0 1 ] 9 0 9 -[ 1 1 0 ] 10 0 10 -[ 1 1 0 ] 11 0 11 -[ 1 1 1 ] 12 0 12 -[ 1 1 1 ] 13 0 13 -[ 1 2 0 ] 14 0 14 -[ 1 2 0 ] 15 0 15 -[ 1 2 1 ] 16 0 16 -[ 1 2 1 ] 17 0 17 -[ 2 0 0 ] 18 0 18 -[ 2 0 0 ] 19 0 19 -[ 2 0 0 ] 20 0 20 -[ 2 0 1 ] 21 0 21 -[ 2 0 1 ] 22 0 22 -[ 2 0 1 ] 23 0 23 -[ 2 1 0 ] 24 0 24 -[ 2 1 0 ] 25 0 25 -[ 2 1 0 ] 26 0 26 -[ 2 1 1 ] 27 0 27 -[ 2 1 1 ] 28 0 28 -[ 2 1 1 ] 29 0 29 -[ 2 2 0 ] 30 0 30 -[ 2 2 0 ] 31 0 31 -[ 2 2 0 ] 32 0 32 -[ 2 2 1 ] 33 0 33 -[ 2 2 1 ] 34 0 34 -[ 2 2 1 ] 35 0 35 -[ 3 0 0 ] 36 0 36 -[ 3 0 0 ] 37 0 37 -[ 3 0 0 ] 38 0 38 -[ 3 0 0 ] 39 0 39 -[ 3 0 1 ] 40 0 40 -[ 3 0 1 ] 41 0 41 -[ 3 0 1 ] 42 0 42 -[ 3 0 1 ] 43 0 43 -[ 3 1 0 ] 44 0 44 -[ 3 1 0 ] 45 0 45 -[ 3 1 0 ] 46 0 46 -[ 3 1 0 ] 47 0 47 -[ 3 1 1 ] 48 0 48 -[ 3 1 1 ] 49 0 49 -[ 3 1 1 ] 50 0 50 -[ 3 1 1 ] 51 0 51 -[ 3 2 0 ] 52 0 52 -[ 3 2 0 ] 53 0 53 -[ 3 2 0 ] 54 0 54 -[ 3 2 0 ] 55 0 55 -[ 3 2 1 ] 56 0 56 -[ 3 2 1 ] 57 0 57 -[ 3 2 1 ] 58 0 58 -[ 3 2 1 ] 59 0 59 -59 differences found -dataset: and -Referenced dataset 10720 10720 ------------------------------------------------------------- -Region blocks -block #0 (2,2)-(7,7) (0,0)-(2,2) -Region points -point #1 (2,2) (3,3) -point #3 (1,6) (2,5) -point #4 (2,8) (1,7) -4 differences found --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_90.txt b/tools/h5diff/testfiles/h5diff_90.txt deleted file mode 100644 index 9965ab0..0000000 --- a/tools/h5diff/testfiles/h5diff_90.txt +++ /dev/null @@ -1,50 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /g1 - x x /g1/dset1 - x x /g1/dset2 - x x /g1/dset4 - x x /g2 - x x /g2/dset1 - x x /g2/dset2 - x x /g2/dset3 - x x /g2/dset4 - x x /g2/dset5 - x x /g2/dset6 - x x /g2/dset7 - x x /g2/dset8 - x x /g2/dset9 - -group : and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_attr1.h5 b/tools/h5diff/testfiles/h5diff_attr1.h5 deleted file mode 100644 index c44066b..0000000 Binary files a/tools/h5diff/testfiles/h5diff_attr1.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_attr2.h5 b/tools/h5diff/testfiles/h5diff_attr2.h5 deleted file mode 100644 index 5de3303..0000000 Binary files a/tools/h5diff/testfiles/h5diff_attr2.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_attr_v_level1.h5 b/tools/h5diff/testfiles/h5diff_attr_v_level1.h5 deleted file mode 100644 index 2b1d8a1..0000000 Binary files a/tools/h5diff/testfiles/h5diff_attr_v_level1.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_attr_v_level2.h5 b/tools/h5diff/testfiles/h5diff_attr_v_level2.h5 deleted file mode 100644 index 4588fca..0000000 Binary files a/tools/h5diff/testfiles/h5diff_attr_v_level2.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_basic1.h5 b/tools/h5diff/testfiles/h5diff_basic1.h5 deleted file mode 100644 index e1396be..0000000 Binary files a/tools/h5diff/testfiles/h5diff_basic1.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_basic2.h5 b/tools/h5diff/testfiles/h5diff_basic2.h5 deleted file mode 100644 index c0795b6..0000000 Binary files a/tools/h5diff/testfiles/h5diff_basic2.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_comp_vl_strs.h5 b/tools/h5diff/testfiles/h5diff_comp_vl_strs.h5 deleted file mode 100644 index 4ad6f19..0000000 Binary files a/tools/h5diff/testfiles/h5diff_comp_vl_strs.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_danglelinks1.h5 b/tools/h5diff/testfiles/h5diff_danglelinks1.h5 deleted file mode 100644 index b8be9bc..0000000 Binary files a/tools/h5diff/testfiles/h5diff_danglelinks1.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_danglelinks2.h5 b/tools/h5diff/testfiles/h5diff_danglelinks2.h5 deleted file mode 100644 index 3c3907c..0000000 Binary files a/tools/h5diff/testfiles/h5diff_danglelinks2.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_dset1.h5 b/tools/h5diff/testfiles/h5diff_dset1.h5 deleted file mode 100644 index 123e141..0000000 Binary files a/tools/h5diff/testfiles/h5diff_dset1.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_dset2.h5 b/tools/h5diff/testfiles/h5diff_dset2.h5 deleted file mode 100644 index 3ae6993..0000000 Binary files a/tools/h5diff/testfiles/h5diff_dset2.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_dset_zero_dim_size1.h5 b/tools/h5diff/testfiles/h5diff_dset_zero_dim_size1.h5 deleted file mode 100644 index cdc7644..0000000 Binary files a/tools/h5diff/testfiles/h5diff_dset_zero_dim_size1.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_dset_zero_dim_size2.h5 b/tools/h5diff/testfiles/h5diff_dset_zero_dim_size2.h5 deleted file mode 100644 index 4752ed1..0000000 Binary files a/tools/h5diff/testfiles/h5diff_dset_zero_dim_size2.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_dtypes.h5 b/tools/h5diff/testfiles/h5diff_dtypes.h5 deleted file mode 100644 index ffa5264..0000000 Binary files a/tools/h5diff/testfiles/h5diff_dtypes.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_empty.h5 b/tools/h5diff/testfiles/h5diff_empty.h5 deleted file mode 100644 index 3f0d1df..0000000 Binary files a/tools/h5diff/testfiles/h5diff_empty.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_enum_invalid_values.h5 b/tools/h5diff/testfiles/h5diff_enum_invalid_values.h5 deleted file mode 100644 index dd02db9..0000000 Binary files a/tools/h5diff/testfiles/h5diff_enum_invalid_values.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_exclude1-1.h5 b/tools/h5diff/testfiles/h5diff_exclude1-1.h5 deleted file mode 100644 index 8b675ea..0000000 Binary files a/tools/h5diff/testfiles/h5diff_exclude1-1.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_exclude1-2.h5 b/tools/h5diff/testfiles/h5diff_exclude1-2.h5 deleted file mode 100644 index 78854cd..0000000 Binary files a/tools/h5diff/testfiles/h5diff_exclude1-2.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_exclude2-1.h5 b/tools/h5diff/testfiles/h5diff_exclude2-1.h5 deleted file mode 100644 index 8923111..0000000 Binary files a/tools/h5diff/testfiles/h5diff_exclude2-1.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_exclude2-2.h5 b/tools/h5diff/testfiles/h5diff_exclude2-2.h5 deleted file mode 100644 index 9e42007..0000000 Binary files a/tools/h5diff/testfiles/h5diff_exclude2-2.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_exclude3-1.h5 b/tools/h5diff/testfiles/h5diff_exclude3-1.h5 deleted file mode 100644 index f9cc83d..0000000 Binary files a/tools/h5diff/testfiles/h5diff_exclude3-1.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_exclude3-2.h5 b/tools/h5diff/testfiles/h5diff_exclude3-2.h5 deleted file mode 100644 index f811905..0000000 Binary files a/tools/h5diff/testfiles/h5diff_exclude3-2.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_ext2softlink_src.h5 b/tools/h5diff/testfiles/h5diff_ext2softlink_src.h5 deleted file mode 100644 index 50b7d2b..0000000 Binary files a/tools/h5diff/testfiles/h5diff_ext2softlink_src.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_ext2softlink_trg.h5 b/tools/h5diff/testfiles/h5diff_ext2softlink_trg.h5 deleted file mode 100644 index 610e890..0000000 Binary files a/tools/h5diff/testfiles/h5diff_ext2softlink_trg.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_extlink_src.h5 b/tools/h5diff/testfiles/h5diff_extlink_src.h5 deleted file mode 100644 index cfc1066..0000000 Binary files a/tools/h5diff/testfiles/h5diff_extlink_src.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_extlink_trg.h5 b/tools/h5diff/testfiles/h5diff_extlink_trg.h5 deleted file mode 100644 index 3a322c9..0000000 Binary files a/tools/h5diff/testfiles/h5diff_extlink_trg.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_grp_recurse1.h5 b/tools/h5diff/testfiles/h5diff_grp_recurse1.h5 deleted file mode 100644 index cfd4e62..0000000 Binary files a/tools/h5diff/testfiles/h5diff_grp_recurse1.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_grp_recurse2.h5 b/tools/h5diff/testfiles/h5diff_grp_recurse2.h5 deleted file mode 100644 index 54bcdec..0000000 Binary files a/tools/h5diff/testfiles/h5diff_grp_recurse2.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_grp_recurse_ext1.h5 b/tools/h5diff/testfiles/h5diff_grp_recurse_ext1.h5 deleted file mode 100644 index 12a534a..0000000 Binary files a/tools/h5diff/testfiles/h5diff_grp_recurse_ext1.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_grp_recurse_ext2-1.h5 b/tools/h5diff/testfiles/h5diff_grp_recurse_ext2-1.h5 deleted file mode 100644 index 5bb02df..0000000 Binary files a/tools/h5diff/testfiles/h5diff_grp_recurse_ext2-1.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_grp_recurse_ext2-2.h5 b/tools/h5diff/testfiles/h5diff_grp_recurse_ext2-2.h5 deleted file mode 100644 index 312543e..0000000 Binary files a/tools/h5diff/testfiles/h5diff_grp_recurse_ext2-2.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_grp_recurse_ext2-3.h5 b/tools/h5diff/testfiles/h5diff_grp_recurse_ext2-3.h5 deleted file mode 100644 index 43ad156..0000000 Binary files a/tools/h5diff/testfiles/h5diff_grp_recurse_ext2-3.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_hyper1.h5 b/tools/h5diff/testfiles/h5diff_hyper1.h5 deleted file mode 100644 index ceeff80..0000000 Binary files a/tools/h5diff/testfiles/h5diff_hyper1.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_hyper2.h5 b/tools/h5diff/testfiles/h5diff_hyper2.h5 deleted file mode 100644 index 05a2eb1..0000000 Binary files a/tools/h5diff/testfiles/h5diff_hyper2.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_linked_softlink.h5 b/tools/h5diff/testfiles/h5diff_linked_softlink.h5 deleted file mode 100644 index 03c5dee..0000000 Binary files a/tools/h5diff/testfiles/h5diff_linked_softlink.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_links.h5 b/tools/h5diff/testfiles/h5diff_links.h5 deleted file mode 100644 index 8af66a6..0000000 Binary files a/tools/h5diff/testfiles/h5diff_links.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_softlinks.h5 b/tools/h5diff/testfiles/h5diff_softlinks.h5 deleted file mode 100644 index 67a843d..0000000 Binary files a/tools/h5diff/testfiles/h5diff_softlinks.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_tmp1.txt b/tools/h5diff/testfiles/h5diff_tmp1.txt deleted file mode 100644 index 40e3fb6..0000000 --- a/tools/h5diff/testfiles/h5diff_tmp1.txt +++ /dev/null @@ -1,5 +0,0 @@ --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects. -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_tmp2.txt b/tools/h5diff/testfiles/h5diff_tmp2.txt deleted file mode 100644 index a2d6da6..0000000 --- a/tools/h5diff/testfiles/h5diff_tmp2.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -1599 differences found -dataset: and -8 differences found -dataset: and -1845 differences found -dataset: and -10 differences found --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects. -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_types.h5 b/tools/h5diff/testfiles/h5diff_types.h5 deleted file mode 100644 index c835069..0000000 Binary files a/tools/h5diff/testfiles/h5diff_types.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_v1.txt b/tools/h5diff/testfiles/h5diff_v1.txt deleted file mode 100644 index 8210cf9..0000000 --- a/tools/h5diff/testfiles/h5diff_v1.txt +++ /dev/null @@ -1,18 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /vds_dset - -group : and -0 differences found -dataset: and -Warning: or is a virtual dataset -Not comparable: has rank 3, dimensions [5x18x8], max dimensions [18446744073709551615x18x8] -and has rank 3, dimensions [6x8x14], max dimensions [18446744073709551615x8x14] -0 differences found --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_v2.txt b/tools/h5diff/testfiles/h5diff_v2.txt deleted file mode 100644 index aa327b1..0000000 --- a/tools/h5diff/testfiles/h5diff_v2.txt +++ /dev/null @@ -1,7 +0,0 @@ -dataset: and -0 differences found --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects. -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_v3.txt b/tools/h5diff/testfiles/h5diff_v3.txt deleted file mode 100644 index 57af303..0000000 --- a/tools/h5diff/testfiles/h5diff_v3.txt +++ /dev/null @@ -1,4 +0,0 @@ -Warning: or is a virtual dataset -Not comparable: has rank 3, dimensions [5x18x8], max dimensions [18446744073709551615x18x8] -and has rank 3, dimensions [6x8x14], max dimensions [18446744073709551615x8x14] -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/non_comparables1.h5 b/tools/h5diff/testfiles/non_comparables1.h5 deleted file mode 100644 index 7dbb45d..0000000 Binary files a/tools/h5diff/testfiles/non_comparables1.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/non_comparables2.h5 b/tools/h5diff/testfiles/non_comparables2.h5 deleted file mode 100644 index a5e7014..0000000 Binary files a/tools/h5diff/testfiles/non_comparables2.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/tmpSingleSiteBethe.output.h5 b/tools/h5diff/testfiles/tmpSingleSiteBethe.output.h5 deleted file mode 100644 index bbcfb63..0000000 Binary files a/tools/h5diff/testfiles/tmpSingleSiteBethe.output.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/tmpSingleSiteBethe.reference.h5 b/tools/h5diff/testfiles/tmpSingleSiteBethe.reference.h5 deleted file mode 100644 index 6b19ed7..0000000 Binary files a/tools/h5diff/testfiles/tmpSingleSiteBethe.reference.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/tmptest.he5 b/tools/h5diff/testfiles/tmptest.he5 deleted file mode 100644 index edcfcd2..0000000 Binary files a/tools/h5diff/testfiles/tmptest.he5 and /dev/null differ diff --git a/tools/h5diff/testfiles/tmptest2.he5 b/tools/h5diff/testfiles/tmptest2.he5 deleted file mode 100644 index a6ab02b..0000000 Binary files a/tools/h5diff/testfiles/tmptest2.he5 and /dev/null differ diff --git a/tools/h5diff/testh5diff.sh.in b/tools/h5diff/testh5diff.sh.in deleted file mode 100644 index 0df9cb8..0000000 --- a/tools/h5diff/testh5diff.sh.in +++ /dev/null @@ -1,1160 +0,0 @@ -#! /bin/sh -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -# -# Tests for the h5diff tool -# -# Modification: -# Albert Cheng, 2005/08/17 -# Added the SKIP feature. -# Albert Cheng, 2005/2/3 -# Added -p option for parallel h5diff tests. -# Pedro Vicente Nunes: -# 10/25/2005: Added test #9 -# 11/27/2006: Added test #10, #11 -# Jonathan Kim: -# Improved to use single line -# Improved to check exit code (only serial mode, not necessary for parallel) -# Added test 400 - 425 (links with --follow-symlinks option) -# Added test 450 - 459 (dangling links) - -srcdir=@srcdir@ - -TESTNAME=h5diff -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -H5DIFF=h5diff # The tool name -H5DIFF_BIN=`pwd`/$H5DIFF # The path of the tool binary - -RM='rm -rf' -CMP='cmp -s' -DIFF='diff -c' -CP='cp' -DIRNAME='dirname' -LS='ls' -AWK='awk' - -nerrors=0 -verbose=yes -h5haveexitcode=yes # default is yes -pmode= # default to run h5diff tests -mydomainname=`domainname 2>/dev/null` - -# source dirs -SRC_TOOLS="$srcdir/.." -SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles" -# testfiles source dirs for tools -SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles" -SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles" -SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles" -SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles" -SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles" -SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles" - -TESTDIR=./testfiles -test -d $TESTDIR || mkdir $TESTDIR - -###################################################################### -# test files -# -------------------------------------------------------------------- -# All the test files copy from source directory to test directory -# NOTE: Keep this framework to add/remove test files. -# Any test files from other tools can be used in this framework. -# This list are also used for checking exist. -# Comment '#' without space can be used. -# -------------------------------------------------------------------- -LIST_HDF5_TEST_FILES=" -$SRC_H5DIFF_TESTFILES/h5diff_basic1.h5 -$SRC_H5DIFF_TESTFILES/h5diff_basic2.h5 -$SRC_H5DIFF_TESTFILES/h5diff_types.h5 -$SRC_H5DIFF_TESTFILES/h5diff_dtypes.h5 -$SRC_H5DIFF_TESTFILES/h5diff_attr1.h5 -$SRC_H5DIFF_TESTFILES/h5diff_attr2.h5 -$SRC_H5DIFF_TESTFILES/h5diff_dset1.h5 -$SRC_H5DIFF_TESTFILES/h5diff_dset2.h5 -$SRC_H5DIFF_TESTFILES/h5diff_hyper1.h5 -$SRC_H5DIFF_TESTFILES/h5diff_hyper2.h5 -$SRC_H5DIFF_TESTFILES/h5diff_empty.h5 -$SRC_H5DIFF_TESTFILES/h5diff_links.h5 -$SRC_H5DIFF_TESTFILES/h5diff_softlinks.h5 -$SRC_H5DIFF_TESTFILES/h5diff_linked_softlink.h5 -$SRC_H5DIFF_TESTFILES/h5diff_extlink_src.h5 -$SRC_H5DIFF_TESTFILES/h5diff_extlink_trg.h5 -$SRC_H5DIFF_TESTFILES/h5diff_ext2softlink_src.h5 -$SRC_H5DIFF_TESTFILES/h5diff_ext2softlink_trg.h5 -$SRC_H5DIFF_TESTFILES/h5diff_dset_zero_dim_size1.h5 -$SRC_H5DIFF_TESTFILES/h5diff_dset_zero_dim_size2.h5 -$SRC_H5DIFF_TESTFILES/h5diff_danglelinks1.h5 -$SRC_H5DIFF_TESTFILES/h5diff_danglelinks2.h5 -$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse1.h5 -$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse2.h5 -$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse_ext1.h5 -$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse_ext2-1.h5 -$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse_ext2-2.h5 -$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse_ext2-3.h5 -$SRC_H5DIFF_TESTFILES/h5diff_exclude1-1.h5 -$SRC_H5DIFF_TESTFILES/h5diff_exclude1-2.h5 -$SRC_H5DIFF_TESTFILES/h5diff_exclude2-1.h5 -$SRC_H5DIFF_TESTFILES/h5diff_exclude2-2.h5 -$SRC_H5DIFF_TESTFILES/h5diff_exclude3-1.h5 -$SRC_H5DIFF_TESTFILES/h5diff_exclude3-2.h5 -$SRC_H5DIFF_TESTFILES/h5diff_comp_vl_strs.h5 -$SRC_H5DIFF_TESTFILES/compounds_array_vlen1.h5 -$SRC_H5DIFF_TESTFILES/compounds_array_vlen2.h5 -$SRC_H5DIFF_TESTFILES/h5diff_attr_v_level1.h5 -$SRC_H5DIFF_TESTFILES/h5diff_attr_v_level2.h5 -$SRC_H5DIFF_TESTFILES/h5diff_enum_invalid_values.h5 -$SRC_H5DIFF_TESTFILES/non_comparables1.h5 -$SRC_H5DIFF_TESTFILES/non_comparables2.h5 -$SRC_H5DIFF_TESTFILES/tmptest.he5 -$SRC_H5DIFF_TESTFILES/tmptest2.he5 -$SRC_H5DIFF_TESTFILES/tmpSingleSiteBethe.reference.h5 -$SRC_H5DIFF_TESTFILES/tmpSingleSiteBethe.output.h5 -$SRC_TOOLS_TESTFILES/vds/1_a.h5 -$SRC_TOOLS_TESTFILES/vds/1_b.h5 -$SRC_TOOLS_TESTFILES/vds/1_c.h5 -$SRC_TOOLS_TESTFILES/vds/1_d.h5 -$SRC_TOOLS_TESTFILES/vds/1_e.h5 -$SRC_TOOLS_TESTFILES/vds/1_f.h5 -$SRC_TOOLS_TESTFILES/vds/1_vds.h5 -$SRC_TOOLS_TESTFILES/vds/2_a.h5 -$SRC_TOOLS_TESTFILES/vds/2_b.h5 -$SRC_TOOLS_TESTFILES/vds/2_c.h5 -$SRC_TOOLS_TESTFILES/vds/2_d.h5 -$SRC_TOOLS_TESTFILES/vds/2_e.h5 -$SRC_TOOLS_TESTFILES/vds/2_vds.h5 -$SRC_TOOLS_TESTFILES/vds/3_1_vds.h5 -$SRC_TOOLS_TESTFILES/vds/3_2_vds.h5 -$SRC_TOOLS_TESTFILES/vds/4_0.h5 -$SRC_TOOLS_TESTFILES/vds/4_1.h5 -$SRC_TOOLS_TESTFILES/vds/4_2.h5 -$SRC_TOOLS_TESTFILES/vds/4_vds.h5 -$SRC_TOOLS_TESTFILES/vds/5_a.h5 -$SRC_TOOLS_TESTFILES/vds/5_b.h5 -$SRC_TOOLS_TESTFILES/vds/5_c.h5 -$SRC_TOOLS_TESTFILES/vds/5_vds.h5 -" - -LIST_OTHER_TEST_FILES=" -$SRC_H5DIFF_TESTFILES/h5diff_10.txt -$SRC_H5DIFF_TESTFILES/h5diff_100.txt -$SRC_H5DIFF_TESTFILES/h5diff_101.txt -$SRC_H5DIFF_TESTFILES/h5diff_102.txt -$SRC_H5DIFF_TESTFILES/h5diff_103.txt -$SRC_H5DIFF_TESTFILES/h5diff_104.txt -$SRC_H5DIFF_TESTFILES/h5diff_11.txt -$SRC_H5DIFF_TESTFILES/h5diff_12.txt -$SRC_H5DIFF_TESTFILES/h5diff_13.txt -$SRC_H5DIFF_TESTFILES/h5diff_14.txt -$SRC_H5DIFF_TESTFILES/h5diff_15.txt -$SRC_H5DIFF_TESTFILES/h5diff_16_1.txt -$SRC_H5DIFF_TESTFILES/h5diff_16_2.txt -$SRC_H5DIFF_TESTFILES/h5diff_16_3.txt -$SRC_H5DIFF_TESTFILES/h5diff_17.txt -$SRC_H5DIFF_TESTFILES/h5diff_171.txt -$SRC_H5DIFF_TESTFILES/h5diff_172.txt -$SRC_H5DIFF_TESTFILES/h5diff_18_1.txt -$SRC_H5DIFF_TESTFILES/h5diff_18.txt -$SRC_H5DIFF_TESTFILES/h5diff_20.txt -$SRC_H5DIFF_TESTFILES/h5diff_200.txt -$SRC_H5DIFF_TESTFILES/h5diff_201.txt -$SRC_H5DIFF_TESTFILES/h5diff_202.txt -$SRC_H5DIFF_TESTFILES/h5diff_203.txt -$SRC_H5DIFF_TESTFILES/h5diff_204.txt -$SRC_H5DIFF_TESTFILES/h5diff_205.txt -$SRC_H5DIFF_TESTFILES/h5diff_206.txt -$SRC_H5DIFF_TESTFILES/h5diff_207.txt -$SRC_H5DIFF_TESTFILES/h5diff_208.txt -$SRC_H5DIFF_TESTFILES/h5diff_220.txt -$SRC_H5DIFF_TESTFILES/h5diff_221.txt -$SRC_H5DIFF_TESTFILES/h5diff_222.txt -$SRC_H5DIFF_TESTFILES/h5diff_223.txt -$SRC_H5DIFF_TESTFILES/h5diff_224.txt -$SRC_H5DIFF_TESTFILES/h5diff_21.txt -$SRC_H5DIFF_TESTFILES/h5diff_22.txt -$SRC_H5DIFF_TESTFILES/h5diff_23.txt -$SRC_H5DIFF_TESTFILES/h5diff_24.txt -$SRC_H5DIFF_TESTFILES/h5diff_25.txt -$SRC_H5DIFF_TESTFILES/h5diff_26.txt -$SRC_H5DIFF_TESTFILES/h5diff_27.txt -$SRC_H5DIFF_TESTFILES/h5diff_28.txt -$SRC_H5DIFF_TESTFILES/h5diff_30.txt -$SRC_H5DIFF_TESTFILES/h5diff_300.txt -$SRC_H5DIFF_TESTFILES/h5diff_400.txt -$SRC_H5DIFF_TESTFILES/h5diff_401.txt -$SRC_H5DIFF_TESTFILES/h5diff_402.txt -$SRC_H5DIFF_TESTFILES/h5diff_403.txt -$SRC_H5DIFF_TESTFILES/h5diff_404.txt -$SRC_H5DIFF_TESTFILES/h5diff_405.txt -$SRC_H5DIFF_TESTFILES/h5diff_406.txt -$SRC_H5DIFF_TESTFILES/h5diff_407.txt -$SRC_H5DIFF_TESTFILES/h5diff_408.txt -$SRC_H5DIFF_TESTFILES/h5diff_409.txt -$SRC_H5DIFF_TESTFILES/h5diff_410.txt -$SRC_H5DIFF_TESTFILES/h5diff_411.txt -$SRC_H5DIFF_TESTFILES/h5diff_412.txt -$SRC_H5DIFF_TESTFILES/h5diff_413.txt -$SRC_H5DIFF_TESTFILES/h5diff_414.txt -$SRC_H5DIFF_TESTFILES/h5diff_415.txt -$SRC_H5DIFF_TESTFILES/h5diff_416.txt -$SRC_H5DIFF_TESTFILES/h5diff_417.txt -$SRC_H5DIFF_TESTFILES/h5diff_418.txt -$SRC_H5DIFF_TESTFILES/h5diff_419.txt -$SRC_H5DIFF_TESTFILES/h5diff_420.txt -$SRC_H5DIFF_TESTFILES/h5diff_421.txt -$SRC_H5DIFF_TESTFILES/h5diff_422.txt -$SRC_H5DIFF_TESTFILES/h5diff_423.txt -$SRC_H5DIFF_TESTFILES/h5diff_424.txt -$SRC_H5DIFF_TESTFILES/h5diff_425.txt -$SRC_H5DIFF_TESTFILES/h5diff_450.txt -$SRC_H5DIFF_TESTFILES/h5diff_451.txt -$SRC_H5DIFF_TESTFILES/h5diff_452.txt -$SRC_H5DIFF_TESTFILES/h5diff_453.txt -$SRC_H5DIFF_TESTFILES/h5diff_454.txt -$SRC_H5DIFF_TESTFILES/h5diff_455.txt -$SRC_H5DIFF_TESTFILES/h5diff_456.txt -$SRC_H5DIFF_TESTFILES/h5diff_457.txt -$SRC_H5DIFF_TESTFILES/h5diff_458.txt -$SRC_H5DIFF_TESTFILES/h5diff_459.txt -$SRC_H5DIFF_TESTFILES/h5diff_465.txt -$SRC_H5DIFF_TESTFILES/h5diff_466.txt -$SRC_H5DIFF_TESTFILES/h5diff_467.txt -$SRC_H5DIFF_TESTFILES/h5diff_468.txt -$SRC_H5DIFF_TESTFILES/h5diff_469.txt -$SRC_H5DIFF_TESTFILES/h5diff_471.txt -$SRC_H5DIFF_TESTFILES/h5diff_472.txt -$SRC_H5DIFF_TESTFILES/h5diff_473.txt -$SRC_H5DIFF_TESTFILES/h5diff_474.txt -$SRC_H5DIFF_TESTFILES/h5diff_475.txt -$SRC_H5DIFF_TESTFILES/h5diff_480.txt -$SRC_H5DIFF_TESTFILES/h5diff_481.txt -$SRC_H5DIFF_TESTFILES/h5diff_482.txt -$SRC_H5DIFF_TESTFILES/h5diff_483.txt -$SRC_H5DIFF_TESTFILES/h5diff_484.txt -$SRC_H5DIFF_TESTFILES/h5diff_485.txt -$SRC_H5DIFF_TESTFILES/h5diff_486.txt -$SRC_H5DIFF_TESTFILES/h5diff_487.txt -$SRC_H5DIFF_TESTFILES/h5diff_50.txt -$SRC_H5DIFF_TESTFILES/h5diff_51.txt -$SRC_H5DIFF_TESTFILES/h5diff_52.txt -$SRC_H5DIFF_TESTFILES/h5diff_53.txt -$SRC_H5DIFF_TESTFILES/h5diff_54.txt -$SRC_H5DIFF_TESTFILES/h5diff_55.txt -$SRC_H5DIFF_TESTFILES/h5diff_56.txt -$SRC_H5DIFF_TESTFILES/h5diff_57.txt -$SRC_H5DIFF_TESTFILES/h5diff_58.txt -$SRC_H5DIFF_TESTFILES/h5diff_59.txt -$SRC_H5DIFF_TESTFILES/h5diff_500.txt -$SRC_H5DIFF_TESTFILES/h5diff_501.txt -$SRC_H5DIFF_TESTFILES/h5diff_502.txt -$SRC_H5DIFF_TESTFILES/h5diff_503.txt -$SRC_H5DIFF_TESTFILES/h5diff_504.txt -$SRC_H5DIFF_TESTFILES/h5diff_505.txt -$SRC_H5DIFF_TESTFILES/h5diff_506.txt -$SRC_H5DIFF_TESTFILES/h5diff_507.txt -$SRC_H5DIFF_TESTFILES/h5diff_508.txt -$SRC_H5DIFF_TESTFILES/h5diff_509.txt -$SRC_H5DIFF_TESTFILES/h5diff_510.txt -$SRC_H5DIFF_TESTFILES/h5diff_511.txt -$SRC_H5DIFF_TESTFILES/h5diff_512.txt -$SRC_H5DIFF_TESTFILES/h5diff_513.txt -$SRC_H5DIFF_TESTFILES/h5diff_514.txt -$SRC_H5DIFF_TESTFILES/h5diff_515.txt -$SRC_H5DIFF_TESTFILES/h5diff_516.txt -$SRC_H5DIFF_TESTFILES/h5diff_517.txt -$SRC_H5DIFF_TESTFILES/h5diff_518.txt -$SRC_H5DIFF_TESTFILES/h5diff_530.txt -$SRC_H5DIFF_TESTFILES/h5diff_540.txt -$SRC_H5DIFF_TESTFILES/h5diff_600.txt -$SRC_H5DIFF_TESTFILES/h5diff_601.txt -$SRC_H5DIFF_TESTFILES/h5diff_603.txt -$SRC_H5DIFF_TESTFILES/h5diff_604.txt -$SRC_H5DIFF_TESTFILES/h5diff_605.txt -$SRC_H5DIFF_TESTFILES/h5diff_606.txt -$SRC_H5DIFF_TESTFILES/h5diff_607.txt -$SRC_H5DIFF_TESTFILES/h5diff_608.txt -$SRC_H5DIFF_TESTFILES/h5diff_609.txt -$SRC_H5DIFF_TESTFILES/h5diff_610.txt -$SRC_H5DIFF_TESTFILES/h5diff_612.txt -$SRC_H5DIFF_TESTFILES/h5diff_613.txt -$SRC_H5DIFF_TESTFILES/h5diff_614.txt -$SRC_H5DIFF_TESTFILES/h5diff_615.txt -$SRC_H5DIFF_TESTFILES/h5diff_616.txt -$SRC_H5DIFF_TESTFILES/h5diff_617.txt -$SRC_H5DIFF_TESTFILES/h5diff_618.txt -$SRC_H5DIFF_TESTFILES/h5diff_619.txt -$SRC_H5DIFF_TESTFILES/h5diff_621.txt -$SRC_H5DIFF_TESTFILES/h5diff_622.txt -$SRC_H5DIFF_TESTFILES/h5diff_623.txt -$SRC_H5DIFF_TESTFILES/h5diff_624.txt -$SRC_H5DIFF_TESTFILES/h5diff_625.txt -$SRC_H5DIFF_TESTFILES/h5diff_626.txt -$SRC_H5DIFF_TESTFILES/h5diff_627.txt -$SRC_H5DIFF_TESTFILES/h5diff_628.txt -$SRC_H5DIFF_TESTFILES/h5diff_629.txt -$SRC_H5DIFF_TESTFILES/h5diff_630.txt -$SRC_H5DIFF_TESTFILES/h5diff_631.txt -$SRC_H5DIFF_TESTFILES/h5diff_640.txt -$SRC_H5DIFF_TESTFILES/h5diff_641.txt -$SRC_H5DIFF_TESTFILES/h5diff_642.txt -$SRC_H5DIFF_TESTFILES/h5diff_643.txt -$SRC_H5DIFF_TESTFILES/h5diff_644.txt -$SRC_H5DIFF_TESTFILES/h5diff_645.txt -$SRC_H5DIFF_TESTFILES/h5diff_646.txt -$SRC_H5DIFF_TESTFILES/h5diff_70.txt -$SRC_H5DIFF_TESTFILES/h5diff_700.txt -$SRC_H5DIFF_TESTFILES/h5diff_701.txt -$SRC_H5DIFF_TESTFILES/h5diff_702.txt -$SRC_H5DIFF_TESTFILES/h5diff_703.txt -$SRC_H5DIFF_TESTFILES/h5diff_704.txt -$SRC_H5DIFF_TESTFILES/h5diff_705.txt -$SRC_H5DIFF_TESTFILES/h5diff_706.txt -$SRC_H5DIFF_TESTFILES/h5diff_707.txt -$SRC_H5DIFF_TESTFILES/h5diff_708.txt -$SRC_H5DIFF_TESTFILES/h5diff_709.txt -$SRC_H5DIFF_TESTFILES/h5diff_710.txt -$SRC_H5DIFF_TESTFILES/h5diff_80.txt -$SRC_H5DIFF_TESTFILES/h5diff_90.txt -$SRC_H5DIFF_TESTFILES/h5diff_tmp1.txt -$SRC_H5DIFF_TESTFILES/h5diff_tmp2.txt -$SRC_H5DIFF_TESTFILES/h5diff_v1.txt -$SRC_H5DIFF_TESTFILES/h5diff_v2.txt -$SRC_H5DIFF_TESTFILES/h5diff_v3.txt -" - -# -# copy test files and expected output files from source dirs to test dir -# -COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES $LIST_HDF5_TEST_FILES_XML $LIST_OTHER_TEST_FILES_XML" - -COPY_TESTFILES_TO_TESTDIR() -{ - # copy test files. Used -f to make sure get a new copy - for tstfile in $COPY_TESTFILES - do - # ignore '#' comment - echo $tstfile | tr -d ' ' | grep '^#' > /dev/null - RET=$? - if [ $RET -eq 1 ]; then - # skip cp if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=`$DIRNAME $tstfile` - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $CP -f $tstfile $TESTDIR - if [ $? -ne 0 ]; then - echo "Error: FAILED to copy $tstfile ." - - # Comment out this to CREATE expected file - exit $EXIT_FAILURE - fi - fi - fi - done -} - -CLEAN_TESTFILES_AND_TESTDIR() -{ - # skip rm if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=$SRC_H5DIFF_TESTFILES - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $RM $TESTDIR - fi -} - -# Parse option -# -p run ph5diff tests -# -h print help page -while [ $# -gt 0 ]; do - case "$1" in - -p) # reset the tool name and bin to run ph5diff tests - TESTNAME=ph5diff - H5DIFF=ph5diff # The tool name - H5DIFF_BIN=`pwd`/$H5DIFF - pmode=yes - shift - ;; - -h) # print help page - echo "$0 [-p] [-h]" - echo " -p run ph5diff tests" - echo " -h print help page" - shift - exit 0 - ;; - *) # unknown option - echo "$0: Unknown option ($1)" - exit 1 - ;; - esac -done - -# RUNSERIAL is used. Check if it can return exit code from executalbe correctly. -if [ -n "$RUNSERIAL_NOEXITCODE" ]; then - echo "***Warning*** Serial Exit Code is not passed back to shell corretly." - echo "***Warning*** Exit code checking is skipped." - h5haveexitcode=no -fi - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Testing". -# -TESTING() { - SPACES=" " - echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Source in the output filter function definitions. -. $srcdir/../../bin/output_filter.sh - -# Run a test and print PASS or *FAIL*. If a test fails then increment -# the `nerrors' global variable and (if $verbose is set) display the -# difference between the actual output and the expected output. The -# expected output is given as the first argument to this function and -# the actual output file is calculated by replacing the `.ddl' with -# `.out'. The actual output is not removed if $HDF5_NOCLEANUP has a -# non-zero value. -# -# Need eval before the RUNCMD command because some machines like -# AIX, has RUNPARALLEL in the style as -# MP_PROCS=3 MP_TASKS_PER_NODE=3 poe ./a.out -# that throws the shell script off. -# -TOOLTEST() { - expect="$TESTDIR/$1" - actual="$TESTDIR/`basename $1 .txt`.out" - actual_err="$TESTDIR/`basename $1 .txt`.err" - actual_sav=${actual}-sav - actual_err_sav=${actual_err}-sav - shift - if test -n "$pmode"; then - RUNCMD=$RUNPARALLEL - else - RUNCMD=$RUNSERIAL - fi - - # Run test. - TESTING $H5DIFF $@ - ( - #echo "#############################" - #echo "Expected output for '$H5DIFF $@'" - #echo "#############################" - cd $TESTDIR - eval $RUNCMD $H5DIFF_BIN "$@" - ) >$actual 2>$actual_err - EXIT_CODE=$? - # save actual and actual_err in case they are needed later. - cp $actual $actual_sav - STDOUT_FILTER $actual - cp $actual_err $actual_err_sav - STDERR_FILTER $actual_err - cat $actual_err >> $actual - # don't add exit code check in pmode, as it causes failure. (exit code - # is from mpirun not tool) - # if any problem occurs relate to an exit code, it will be caught in - # serial mode, so the test is fullfilled. - if test $h5haveexitcode = 'yes' -a -z "$pmode"; then - echo "EXIT CODE: $EXIT_CODE" >> $actual - fi - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - echo " PASSED" - elif test $h5haveexitcode = 'yes' -a -z "$pmode"; then - echo "*FAILED*" - echo " Expected result ($expect) differs from actual result ($actual)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - else - # parallel mode output are often of different ordering from serial - # output. If the sorted expected and actual files compare the same, - # it is safe to assume the actual output match the expected file. - expect_sorted=expect_sorted - actual_sorted=actual_sorted - sort $expect -o $expect_sorted - sort $actual -o $actual_sorted - # remove "EXIT CODE:" line from expect file. test for exit code - # is done by serial mode. - grep -v "EXIT CODE:" $expect_sorted > $expect_sorted.noexit - mv $expect_sorted.noexit $expect_sorted - if $CMP $expect_sorted $actual_sorted; then - echo " PASSED" - else - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - if test yes = "$verbose"; then - echo "====Expected result ($expect_sorted) differs from actual result ($actual_sorted)" - $DIFF $expect_sorted $actual_sorted |sed 's/^/ /' - echo "====The actual output ($actual_sav)" - sed 's/^/ /' < $actual_sav - echo "====The actual stderr ($actual_err_sav)" - sed 's/^/ /' < $actual_err_sav - echo "====End of actual stderr ($actual_err_sav)" - echo "" - fi - fi - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err $actual_sav $actual_err_sav - rm -f $actual_sorted $expect_sorted - fi -} - - -# Print a "SKIP" message -SKIP() { - TESTING $H5DIFF $@ - echo " -SKIP-" -} - - - -############################################################################## -# The tests -# To avoid the printing of the complete full path of the test file, that hides -# all the other parameters for long paths, the printing of the command line -# is done first in -# TESTING with the name only of the test file $TOOL, not its full path $TESTFILE -############################################################################## -# prepare for test -COPY_TESTFILES_TO_TESTDIR - -# ############################################################################ -# # Common usage -# ############################################################################ - -# 1.0 -TOOLTEST h5diff_10.txt -h - -# 1.1 normal mode -TOOLTEST h5diff_11.txt h5diff_basic1.h5 h5diff_basic2.h5 - -# 1.2 normal mode with objects -TOOLTEST h5diff_12.txt h5diff_basic1.h5 h5diff_basic2.h5 g1/dset1 g1/dset2 - -# 1.3 report mode -TOOLTEST h5diff_13.txt -r h5diff_basic1.h5 h5diff_basic2.h5 - -# 1.4 report mode with objects -TOOLTEST h5diff_14.txt -r h5diff_basic1.h5 h5diff_basic2.h5 g1/dset1 g1/dset2 - -# 1.5 with -d -TOOLTEST h5diff_15.txt --report --delta=5 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 1.6.1 with -p (int) -TOOLTEST h5diff_16_1.txt -v -p 0.02 h5diff_basic1.h5 h5diff_basic1.h5 g1/dset5 g1/dset6 - -# 1.6.2 with -p (unsigned long_long) -TOOLTEST h5diff_16_2.txt --verbose --relative=0.02 h5diff_basic1.h5 h5diff_basic1.h5 g1/dset7 g1/dset8 - -# 1.6.3 with -p (double) -TOOLTEST h5diff_16_3.txt -v -p 0.02 h5diff_basic1.h5 h5diff_basic1.h5 g1/dset9 g1/dset10 - -# 1.7 verbose mode -TOOLTEST h5diff_17.txt -v h5diff_basic1.h5 h5diff_basic2.h5 - -# 1.7 test 32-bit INFINITY -TOOLTEST h5diff_171.txt -v h5diff_basic1.h5 h5diff_basic1.h5 /g1/fp19 /g1/fp19_COPY - -# 1.7 test 64-bit INFINITY -TOOLTEST h5diff_172.txt -v h5diff_basic1.h5 h5diff_basic1.h5 /g1/fp20 /g1/fp20_COPY - -# 1.8 quiet mode -TOOLTEST h5diff_18.txt -q h5diff_basic1.h5 h5diff_basic2.h5 - -# 1.8 -v and -q -TOOLTEST h5diff_18_1.txt -v -q h5diff_basic1.h5 h5diff_basic2.h5 - - -# ############################################################################## -# # not comparable types -# ############################################################################## - -# 2.0 -TOOLTEST h5diff_20.txt -v h5diff_types.h5 h5diff_types.h5 dset g1 - -# 2.1 -TOOLTEST h5diff_21.txt -v h5diff_types.h5 h5diff_types.h5 dset l1 - -# 2.2 -TOOLTEST h5diff_22.txt -v h5diff_types.h5 h5diff_types.h5 dset t1 - -# ############################################################################## -# # compare groups, types, links (no differences and differences) -# ############################################################################## - -# 2.3 -TOOLTEST h5diff_23.txt -v h5diff_types.h5 h5diff_types.h5 g1 g1 - -# 2.4 -TOOLTEST h5diff_24.txt -v h5diff_types.h5 h5diff_types.h5 t1 t1 - -# 2.5 -TOOLTEST h5diff_25.txt -v h5diff_types.h5 h5diff_types.h5 l1 l1 - -# 2.6 -TOOLTEST h5diff_26.txt -v h5diff_types.h5 h5diff_types.h5 g1 g2 - -# 2.7 -TOOLTEST h5diff_27.txt -v h5diff_types.h5 h5diff_types.h5 t1 t2 - -# 2.8 -TOOLTEST h5diff_28.txt -v h5diff_types.h5 h5diff_types.h5 l1 l2 - - -# ############################################################################## -# # Enum value tests (may become more comprehensive in the future) -# ############################################################################## - -# 3.0 -# test enum types which may have invalid values -TOOLTEST h5diff_30.txt -v h5diff_enum_invalid_values.h5 h5diff_enum_invalid_values.h5 dset1 dset2 - - - - -# ############################################################################## -# # Dataset datatypes -# ############################################################################## - -# 5.0 -TOOLTEST h5diff_50.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset0a dset0b - -# 5.1 -TOOLTEST h5diff_51.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset1a dset1b - -# 5.2 -TOOLTEST h5diff_52.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset2a dset2b - -# 5.3 -TOOLTEST h5diff_53.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset3a dset4b - -# 5.4 -TOOLTEST h5diff_54.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset4a dset4b - -# 5.5 -TOOLTEST h5diff_55.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset5a dset5b - -# 5.6 -TOOLTEST h5diff_56.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset6a dset6b - -# 5.7 -TOOLTEST h5diff_57.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset7a dset7b - -# 5.8 (region reference) -TOOLTEST h5diff_58.txt -v h5diff_dset1.h5 h5diff_dset2.h5 refreg - -# test for both dset and attr with same type but with different size -# ( HDDFV-7942 ) -TOOLTEST h5diff_59.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset11a dset11b - -# ############################################################################## -# # Error messages -# ############################################################################## - - -# 6.0: Check if the command line number of arguments is less than 3 -TOOLTEST h5diff_600.txt h5diff_basic1.h5 - -# 6.1: Check if non-exist object name is specified -TOOLTEST h5diff_601.txt h5diff_basic1.h5 h5diff_basic1.h5 nono_obj - - -# ############################################################################## -# # -d -# ############################################################################## - - -# 6.3: negative value -TOOLTEST h5diff_603.txt -d -4 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 6.4: zero -TOOLTEST h5diff_604.txt -d 0 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 6.5: non number -TOOLTEST h5diff_605.txt -d u h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 6.6: hexadecimal -TOOLTEST h5diff_606.txt -d 0x1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 6.7: string -TOOLTEST h5diff_607.txt -d "1" h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 6.8: use system epsilon -TOOLTEST h5diff_608.txt --use-system-epsilon h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 6.9: number larger than biggest difference -TOOLTEST h5diff_609.txt -d 200 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 6.10: number smaller than smallest difference -TOOLTEST h5diff_610.txt -d 1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - - -# ############################################################################## -# # -p -# ############################################################################## - - -# 6.12: negative value -TOOLTEST h5diff_612.txt -p -4 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 6.13: zero -TOOLTEST h5diff_613.txt -p 0 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 6.14: non number -TOOLTEST h5diff_614.txt -p u h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 6.15: hexadecimal -TOOLTEST h5diff_615.txt -p 0x1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 6.16: string -TOOLTEST h5diff_616.txt -p "0.21" h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 6.17: repeated option -TOOLTEST h5diff_617.txt -p 0.21 -p 0.22 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 6.18: number larger than biggest difference -TOOLTEST h5diff_618.txt -p 2 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 6.19: number smaller than smallest difference -TOOLTEST h5diff_619.txt -p 0.005 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - - - -# ############################################################################## -# # -n -# ############################################################################## - -# 6.21: negative value -TOOLTEST h5diff_621.txt -n -4 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 6.22: zero -TOOLTEST h5diff_622.txt -n 0 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 6.23: non number -TOOLTEST h5diff_623.txt -n u h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 6.24: hexadecimal -TOOLTEST h5diff_624.txt -n 0x1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 6.25: string -TOOLTEST h5diff_625.txt -n "2" h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 6.26: repeated option -TOOLTEST h5diff_626.txt -n 2 -n 3 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 6.27: number larger than biggest difference -TOOLTEST h5diff_627.txt --count=200 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# 6.28: number smaller than smallest difference -TOOLTEST h5diff_628.txt -n 1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 - -# Disabling this test as it hangs - LRK 20090618 -# 6.29 non valid files -#TOOLTEST h5diff_629.txt file1.h6 file2.h6 - -# ############################################################################## -# # NaN -# ############################################################################## -# 6.30: test (NaN == NaN) must be true based on our documentation -- XCAO -TOOLTEST h5diff_630.txt -v -d "0.0001" h5diff_basic1.h5 h5diff_basic1.h5 g1/fp18 g1/fp18_COPY -TOOLTEST h5diff_631.txt -v --use-system-epsilon h5diff_basic1.h5 h5diff_basic1.h5 g1/fp18 g1/fp18_COPY - - -# ############################################################################## -# 7. attributes -# ############################################################################## -TOOLTEST h5diff_70.txt -v h5diff_attr1.h5 h5diff_attr2.h5 -# temporary test to verify HDF5-8625 -TOOLTEST h5diff_tmp1.txt tmptest2.he5 tmptest.he5 -# temporary test to verify HDF5-8639 -TOOLTEST h5diff_tmp2.txt tmpSingleSiteBethe.output.h5 tmpSingleSiteBethe.reference.h5 - -# ################################################## -# attrs with verbose option level -# ################################################## - -TOOLTEST h5diff_700.txt -v1 h5diff_attr1.h5 h5diff_attr2.h5 -TOOLTEST h5diff_701.txt -v2 h5diff_attr1.h5 h5diff_attr2.h5 -TOOLTEST h5diff_702.txt --verbose=1 h5diff_attr1.h5 h5diff_attr2.h5 -TOOLTEST h5diff_703.txt --verbose=2 h5diff_attr1.h5 h5diff_attr2.h5 - -# same attr number , all same attr name -TOOLTEST h5diff_704.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /g - -# same attr number , some same attr name -TOOLTEST h5diff_705.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /dset - -# same attr number , all different attr name -TOOLTEST h5diff_706.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /ntype - -# different attr number , same attr name (intersected) -TOOLTEST h5diff_707.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /g2 - -# different attr number , all different attr name -TOOLTEST h5diff_708.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /g3 - -# when no attributes exist in both objects -TOOLTEST h5diff_709.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /g4 - -# file vs file -TOOLTEST h5diff_710.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 - -# ############################################################################## -# 8. all dataset datatypes -# ############################################################################## -TOOLTEST h5diff_80.txt -v h5diff_dset1.h5 h5diff_dset2.h5 - -# 9. compare a file with itself -TOOLTEST h5diff_90.txt -v h5diff_basic2.h5 h5diff_basic2.h5 - -# 10. read by hyperslab, print indexes -TOOLTEST h5diff_100.txt -v h5diff_hyper1.h5 h5diff_hyper2.h5 - -# 11. floating point comparison -# double value -TOOLTEST h5diff_101.txt -v h5diff_basic1.h5 h5diff_basic1.h5 g1/d1 g1/d2 - -# float value -TOOLTEST h5diff_102.txt -v h5diff_basic1.h5 h5diff_basic1.h5 g1/fp1 g1/fp2 - -# with --use-system-epsilon for double value -TOOLTEST h5diff_103.txt -v --use-system-epsilon h5diff_basic1.h5 h5diff_basic1.h5 g1/d1 g1/d2 - -# with --use-system-epsilon for float value -TOOLTEST h5diff_104.txt -v --use-system-epsilon h5diff_basic1.h5 h5diff_basic1.h5 g1/fp1 g1/fp2 - - -# not comparable -c flag -TOOLTEST h5diff_200.txt h5diff_basic2.h5 h5diff_basic2.h5 g2/dset1 g2/dset2 - -TOOLTEST h5diff_201.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset1 g2/dset2 - -TOOLTEST h5diff_202.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset2 g2/dset3 - -TOOLTEST h5diff_203.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset3 g2/dset4 - -TOOLTEST h5diff_204.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset4 g2/dset5 - -TOOLTEST h5diff_205.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset5 g2/dset6 - -# not comparable in compound -TOOLTEST h5diff_206.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset7 g2/dset8 - -TOOLTEST h5diff_207.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset8 g2/dset9 - -# not comparable in dataspace of zero dimension size -TOOLTEST h5diff_208.txt -c h5diff_dset_zero_dim_size1.h5 h5diff_dset_zero_dim_size2.h5 - -# non-comparable dataset with comparable attribute, and other comparable datasets. -# Also test non-compatible attributes with different type, dimention, rank. -# All the comparables should display differences. -TOOLTEST h5diff_220.txt -c non_comparables1.h5 non_comparables2.h5 /g1 - -# comparable dataset with non-comparable attribute and other comparable attributes. -# All the comparables should display differences. -TOOLTEST h5diff_221.txt -c non_comparables1.h5 non_comparables2.h5 /g2 - -# entire file -# All the comparables should display differences. -TOOLTEST h5diff_222.txt -c non_comparables1.h5 non_comparables2.h5 - -# non-comparable test for common objects (same name) with different object types -# (HDFFV-7644) -TOOLTEST h5diff_223.txt -c non_comparables1.h5 non_comparables2.h5 /diffobjtypes -# swap files -TOOLTEST h5diff_224.txt -c non_comparables2.h5 non_comparables1.h5 /diffobjtypes - -# ############################################################################## -# # Links compare without --follow-symlinks nor --no-dangling-links -# ############################################################################## -# test for bug1749 -TOOLTEST h5diff_300.txt -v h5diff_links.h5 h5diff_links.h5 /link_g1 /link_g2 - -# ############################################################################## -# # Links compare with --follow-symlinks Only -# ############################################################################## -# soft links file to file -TOOLTEST h5diff_400.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 - -# softlink vs dset" -TOOLTEST h5diff_401.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_dset1_1 /target_dset2 - -# dset vs softlink" -TOOLTEST h5diff_402.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 /target_dset2 /softlink_dset1_1 - -# softlink vs softlink" -TOOLTEST h5diff_403.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_dset1_1 /softlink_dset2 - -# extlink vs extlink (FILE)" -TOOLTEST h5diff_404.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 - -# extlink vs dset" -TOOLTEST h5diff_405.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_trg.h5 /ext_link_dset1 /target_group2/x_dset - -# dset vs extlink" -TOOLTEST h5diff_406.txt --follow-symlinks -v h5diff_extlink_trg.h5 h5diff_extlink_src.h5 /target_group2/x_dset /ext_link_dset1 - -# extlink vs extlink" -TOOLTEST h5diff_407.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset1 /ext_link_dset2 - -# softlink vs extlink" -TOOLTEST h5diff_408.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_extlink_src.h5 /softlink_dset1_1 /ext_link_dset2 - -# extlink vs softlink " -TOOLTEST h5diff_409.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_softlinks.h5 /ext_link_dset2 /softlink_dset1_1 - -# linked_softlink vs linked_softlink (FILE)" -TOOLTEST h5diff_410.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 - -# dset2 vs linked_softlink_dset1" -TOOLTEST h5diff_411.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /target_dset2 /softlink1_to_slink2 - -# linked_softlink_dset1 vs dset2" -TOOLTEST h5diff_412.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /softlink1_to_slink2 /target_dset2 - -# linked_softlink_to_dset1 vs linked_softlink_to_dset2" -TOOLTEST h5diff_413.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /softlink1_to_slink2 /softlink2_to_slink2 - -# group vs linked_softlink_group1" -TOOLTEST h5diff_414.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /target_group /softlink3_to_slink2 - -# linked_softlink_group1 vs group" -TOOLTEST h5diff_415.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /softlink3_to_slink2 /target_group - -# linked_softlink_to_group1 vs linked_softlink_to_group2" -TOOLTEST h5diff_416.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /softlink3_to_slink2 /softlink4_to_slink2 - -# non-exist-softlink vs softlink" -TOOLTEST h5diff_417.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_noexist /softlink_dset2 - -# softlink vs non-exist-softlink" -TOOLTEST h5diff_418.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_dset2 /softlink_noexist - -# non-exist-extlink_file vs extlink" -TOOLTEST h5diff_419.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_noexist2 /ext_link_dset2 - -# exlink vs non-exist-extlink_file" -TOOLTEST h5diff_420.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset2 /ext_link_noexist2 - -# extlink vs non-exist-extlink_obj" -TOOLTEST h5diff_421.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset2 /ext_link_noexist1 - -# non-exist-extlink_obj vs extlink" -TOOLTEST h5diff_422.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_noexist1 /ext_link_dset2 - -# extlink_to_softlink_to_dset1 vs dset2" -TOOLTEST h5diff_423.txt --follow-symlinks -v h5diff_ext2softlink_src.h5 h5diff_ext2softlink_trg.h5 /ext_link_to_slink1 /dset2 - -# dset2 vs extlink_to_softlink_to_dset1" -TOOLTEST h5diff_424.txt --follow-symlinks -v h5diff_ext2softlink_trg.h5 h5diff_ext2softlink_src.h5 /dset2 /ext_link_to_slink1 - -# extlink_to_softlink_to_dset1 vs extlink_to_softlink_to_dset2" -TOOLTEST h5diff_425.txt --follow-symlinks -v h5diff_ext2softlink_src.h5 h5diff_ext2softlink_src.h5 /ext_link_to_slink1 /ext_link_to_slink2 - - -# ############################################################################## -# # Dangling links compare (--follow-symlinks and --no-dangling-links) -# ############################################################################## -# dangling links --follow-symlinks (FILE to FILE) -TOOLTEST h5diff_450.txt --follow-symlinks -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 - -# dangling links --follow-symlinks and --no-dangling-links (FILE to FILE) -TOOLTEST h5diff_451.txt --follow-symlinks -v --no-dangling-links h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 - -# try --no-dangling-links without --follow-symlinks options -TOOLTEST h5diff_452.txt --no-dangling-links h5diff_softlinks.h5 h5diff_softlinks.h5 - -# dangling link found for soft links (FILE to FILE) -TOOLTEST h5diff_453.txt --follow-symlinks -v --no-dangling-links h5diff_softlinks.h5 h5diff_softlinks.h5 - -# dangling link found for soft links (obj to obj) -TOOLTEST h5diff_454.txt --follow-symlinks -v --no-dangling-links h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_dset2 /softlink_noexist - -# dangling link found for soft links (obj to obj) Both dangle links -TOOLTEST h5diff_455.txt --follow-symlinks -v --no-dangling-links h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_noexist /softlink_noexist - -# dangling link found for ext links (FILE to FILE) -TOOLTEST h5diff_456.txt --follow-symlinks -v --no-dangling-links h5diff_extlink_src.h5 h5diff_extlink_src.h5 - -# dangling link found for ext links (obj to obj). target file exist -TOOLTEST h5diff_457.txt --follow-symlinks -v --no-dangling-links h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset1 /ext_link_noexist1 - -# dangling link found for ext links (obj to obj). target file NOT exist -TOOLTEST h5diff_458.txt --follow-symlinks -v --no-dangling-links h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset1 /ext_link_noexist2 - -# dangling link found for ext links (obj to obj). Both dangle links -TOOLTEST h5diff_459.txt --follow-symlinks -v --no-dangling-links h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_noexist1 /ext_link_noexist2 - -# dangling link --follow-symlinks (obj vs obj) -# (HDFFV-7836) -TOOLTEST h5diff_465.txt --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1 -# (HDFFV-7835) -# soft dangling vs. soft dangling -TOOLTEST h5diff_466.txt -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1 -# soft link vs. soft dangling -TOOLTEST h5diff_467.txt -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link2 -# ext dangling vs. ext dangling -TOOLTEST h5diff_468.txt -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link4 -# ext link vs. ext dangling -TOOLTEST h5diff_469.txt -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link2 - -#---------------------------------------- -# dangling links without follow symlink -# (HDFFV-7998) -# test - soft dangle links (same and different paths), -# - external dangle links (same and different paths) -TOOLTEST h5diff_471.txt -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 -TOOLTEST h5diff_472.txt -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1 -TOOLTEST h5diff_473.txt -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link4 -TOOLTEST h5diff_474.txt -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link4 -TOOLTEST h5diff_475.txt -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link1 - -# ############################################################################## -# # test for group diff recursivly -# ############################################################################## -# root -TOOLTEST h5diff_500.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 / / -TOOLTEST h5diff_501.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 / / - -# root vs group -TOOLTEST h5diff_502.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 / /grp1/grp2/grp3 - -# group vs group (same name and structure) -TOOLTEST h5diff_503.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1 /grp1 - -# group vs group (different name and structure) -TOOLTEST h5diff_504.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1/grp2 /grp1/grp2/grp3 - -# groups vs soft-link -TOOLTEST h5diff_505.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1 /slink_grp1 -TOOLTEST h5diff_506.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1/grp2 /slink_grp2 - -# groups vs ext-link -TOOLTEST h5diff_507.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1 /elink_grp1 -TOOLTEST h5diff_508.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1 /elink_grp1 - -# soft-link vs ext-link -TOOLTEST h5diff_509.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /slink_grp1 /elink_grp1 -TOOLTEST h5diff_510.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /slink_grp1 /elink_grp1 - -# circled ext links -TOOLTEST h5diff_511.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp10 /grp11 -TOOLTEST h5diff_512.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp10 /grp11 - -# circled soft2ext-link vs soft2ext-link -TOOLTEST h5diff_513.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /slink_grp10 /slink_grp11 -TOOLTEST h5diff_514.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /slink_grp10 /slink_grp11 - -############################################################################### -# Test for group recursive diff via multi-linked external links -# With follow-symlinks, file h5diff_grp_recurse_ext1.h5 and h5diff_grp_recurse_ext2-1.h5 should -# be same with the external links. -############################################################################### -# file vs file -TOOLTEST h5diff_515.txt -v h5diff_grp_recurse_ext1.h5 h5diff_grp_recurse_ext2-1.h5 -TOOLTEST h5diff_516.txt -v --follow-symlinks h5diff_grp_recurse_ext1.h5 h5diff_grp_recurse_ext2-1.h5 -# group vs group -TOOLTEST h5diff_517.txt -v h5diff_grp_recurse_ext1.h5 h5diff_grp_recurse_ext2-1.h5 /g1 -TOOLTEST h5diff_518.txt -v --follow-symlinks h5diff_grp_recurse_ext1.h5 h5diff_grp_recurse_ext2-1.h5 /g1 - -# ############################################################################## -# # Exclude objects (--exclude-path) -# ############################################################################## -# -# Same structure, same names and different value. -# -# Exclude the object with different value. Expect return - same -TOOLTEST h5diff_480.txt -v --exclude-path /group1/dset3 h5diff_exclude1-1.h5 h5diff_exclude1-2.h5 -# Verify different by not excluding. Expect return - diff -TOOLTEST h5diff_481.txt -v h5diff_exclude1-1.h5 h5diff_exclude1-2.h5 - -# -# Different structure, different names. -# -# Exclude all the different objects. Expect return - same -TOOLTEST h5diff_482.txt -v --exclude-path "/group1" --exclude-path "/dset1" h5diff_exclude2-1.h5 h5diff_exclude2-2.h5 -# Exclude only some different objects. Expect return - diff -TOOLTEST h5diff_483.txt -v --exclude-path "/group1" h5diff_exclude2-1.h5 h5diff_exclude2-2.h5 - -# Exclude from group compare -TOOLTEST h5diff_484.txt -v --exclude-path "/dset3" h5diff_exclude1-1.h5 h5diff_exclude1-2.h5 /group1 - -# -# Only one file contains unique objs. Common objs are same. -# (HDFFV-7837) -# -TOOLTEST h5diff_485.txt -v --exclude-path "/group1" h5diff_exclude3-1.h5 h5diff_exclude3-2.h5 -TOOLTEST h5diff_486.txt -v --exclude-path "/group1" h5diff_exclude3-2.h5 h5diff_exclude3-1.h5 -TOOLTEST h5diff_487.txt -v --exclude-path "/group1/dset" h5diff_exclude3-1.h5 h5diff_exclude3-2.h5 - - -# ############################################################################## -# # diff various multiple vlen and fixed strings in a compound type dataset -# ############################################################################## -TOOLTEST h5diff_530.txt -v h5diff_comp_vl_strs.h5 h5diff_comp_vl_strs.h5 /group /group_copy - -# ############################################################################## -# # Test container types (array,vlen) with multiple nested compound types -# # Complex compound types in dataset and attribute -# ############################################################################## -TOOLTEST h5diff_540.txt -v compounds_array_vlen1.h5 compounds_array_vlen2.h5 - -# ############################################################################## -# # Test mutually exclusive options -# ############################################################################## -# Test with -d , -p and --use-system-epsilon. -TOOLTEST h5diff_640.txt -v -d 5 -p 0.05 --use-system-epsilon h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4 -TOOLTEST h5diff_641.txt -v -d 5 -p 0.05 h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4 -TOOLTEST h5diff_642.txt -v -p 0.05 -d 5 h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4 -TOOLTEST h5diff_643.txt -v -d 5 --use-system-epsilon h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4 -TOOLTEST h5diff_644.txt -v --use-system-epsilon -d 5 h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4 -TOOLTEST h5diff_645.txt -v -p 0.05 --use-system-epsilon h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4 -TOOLTEST h5diff_646.txt -v --use-system-epsilon -p 0.05 h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4 - -# ############################################################################## -# VDS tests -# ############################################################################## -TOOLTEST h5diff_v1.txt -v 1_vds.h5 2_vds.h5 -TOOLTEST h5diff_v2.txt -r 1_vds.h5 2_vds.h5 -TOOLTEST h5diff_v3.txt -c 1_vds.h5 2_vds.h5 - - -# ############################################################################## -# # END -# ############################################################################## - -# Clean up temporary files/directories -CLEAN_TESTFILES_AND_TESTDIR - -if test $nerrors -eq 0 ; then - echo "All $TESTNAME tests passed." - exit $EXIT_SUCCESS -else - echo "$TESTNAME tests failed with $nerrors errors." - exit $EXIT_FAILURE -fi diff --git a/tools/h5diff/testph5diff.sh.in b/tools/h5diff/testph5diff.sh.in deleted file mode 100644 index ca212a1..0000000 --- a/tools/h5diff/testph5diff.sh.in +++ /dev/null @@ -1,64 +0,0 @@ -#! /bin/sh -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -# - -srcdir=@srcdir@ - -TESTNAME=ph5diff -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -TOOL=testh5diff.sh - -nerrors=0 - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Testing". -# -TESTING() { - SPACES=" " - echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Run a test. If a test fails then increment the `nerrors' global variable. -# -TOOLTEST() { - # Run test. - echo $TOOL "$@" - /bin/sh $TOOL "$@" - - # Check if the command failed and increment nerrors if so. - if test $? -ne 0 ; then - nerrors="`expr $nerrors + 1`" - fi -} - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## - -# Invoke the regular h5diff testing script, with the -p parameter to indicate -# that it should run the parallel version of the tests -TOOLTEST -p - -# no need to print any message since this is just a shell to invoke -# testh5diff.sh which has already printed the result. Just exit. -if test $nerrors -eq 0 ; then - exit $EXIT_SUCCESS -else - exit $EXIT_FAILURE -fi diff --git a/tools/h5dump/CMakeLists.txt b/tools/h5dump/CMakeLists.txt deleted file mode 100644 index 91c9650..0000000 --- a/tools/h5dump/CMakeLists.txt +++ /dev/null @@ -1,66 +0,0 @@ -cmake_minimum_required (VERSION 3.1.0) -PROJECT (HDF5_TOOLS_H5DUMP) - -#----------------------------------------------------------------------------- -# Setup include Directories -#----------------------------------------------------------------------------- -INCLUDE_DIRECTORIES (${HDF5_TOOLS_DIR}/lib) - -# -------------------------------------------------------------------- -# Add the h5dump executables -# -------------------------------------------------------------------- -add_executable (h5dump - ${HDF5_TOOLS_H5DUMP_SOURCE_DIR}/h5dump.c - ${HDF5_TOOLS_H5DUMP_SOURCE_DIR}/h5dump_ddl.c - ${HDF5_TOOLS_H5DUMP_SOURCE_DIR}/h5dump_xml.c -) -TARGET_NAMING (h5dump STATIC) -TARGET_C_PROPERTIES (h5dump STATIC " " " ") -target_link_libraries (h5dump ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) -set_target_properties (h5dump PROPERTIES FOLDER tools) -set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5dump") - -set (H5_DEP_EXECUTABLES h5dump) - -if (BUILD_TESTING) - # -------------------------------------------------------------------- - # Add the h5dump test executable - # -------------------------------------------------------------------- - if (HDF5_BUILD_GENERATORS) - add_executable (h5dumpgentest ${HDF5_TOOLS_H5DUMP_SOURCE_DIR}/h5dumpgentest.c) - TARGET_NAMING (h5dumpgentest STATIC) - TARGET_C_PROPERTIES (h5dumpgentest STATIC " " " ") - target_link_libraries (h5dumpgentest ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) - set_target_properties (h5dumpgentest PROPERTIES FOLDER generator/tools) - - #add_test (NAME h5dumpgentest COMMAND $) - endif (HDF5_BUILD_GENERATORS) - - include (CMakeTests.cmake) - - include (CMakeTestsPBITS.cmake) - - include (CMakeTestsVDS.cmake) - - include (CMakeTestsXML.cmake) -endif (BUILD_TESTING) - -############################################################################## -############################################################################## -### I N S T A L L A T I O N ### -############################################################################## -############################################################################## - -#----------------------------------------------------------------------------- -# Rules for Installation of tools using make Install target -#----------------------------------------------------------------------------- - -#INSTALL_PROGRAM_PDB (h5dump ${HDF5_INSTALL_BIN_DIR} toolsapplications) - -install ( - TARGETS - h5dump - EXPORT - ${HDF5_EXPORTED_TARGETS} - RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications -) diff --git a/tools/h5dump/CMakeTests.cmake b/tools/h5dump/CMakeTests.cmake deleted file mode 100644 index 895855c..0000000 --- a/tools/h5dump/CMakeTests.cmake +++ /dev/null @@ -1,1412 +0,0 @@ - -############################################################################## -############################################################################## -### T E S T I N G ### -############################################################################## -############################################################################## - - # -------------------------------------------------------------------- - # Copy all the HDF5 files from the test directory into the source directory - # -------------------------------------------------------------------- - set (HDF5_REFERENCE_FILES - ${HDF5_TOOLS_DIR}/testfiles/charsets.ddl - ${HDF5_TOOLS_DIR}/testfiles/file_space.ddl - ${HDF5_TOOLS_DIR}/testfiles/filter_fail.ddl - ${HDF5_TOOLS_DIR}/testfiles/non_existing.ddl - ${HDF5_TOOLS_DIR}/testfiles/packedbits.ddl - ${HDF5_TOOLS_DIR}/testfiles/tall-1.ddl - ${HDF5_TOOLS_DIR}/testfiles/tall-2.ddl - ${HDF5_TOOLS_DIR}/testfiles/tall-2A.ddl - ${HDF5_TOOLS_DIR}/testfiles/tall-2A0.ddl - ${HDF5_TOOLS_DIR}/testfiles/tall-2B.ddl - ${HDF5_TOOLS_DIR}/testfiles/tall-3.ddl - ${HDF5_TOOLS_DIR}/testfiles/tall-4s.ddl - ${HDF5_TOOLS_DIR}/testfiles/tall-5s.ddl - ${HDF5_TOOLS_DIR}/testfiles/tall-6.ddl - ${HDF5_TOOLS_DIR}/testfiles/tall-7.ddl - ${HDF5_TOOLS_DIR}/testfiles/tall-7N.ddl - ${HDF5_TOOLS_DIR}/testfiles/tallfilters.ddl - ${HDF5_TOOLS_DIR}/testfiles/tarray1.ddl - ${HDF5_TOOLS_DIR}/testfiles/tarray1_big.ddl - ${HDF5_TOOLS_DIR}/testfiles/tarray2.ddl - ${HDF5_TOOLS_DIR}/testfiles/tarray3.ddl - ${HDF5_TOOLS_DIR}/testfiles/tarray4.ddl - ${HDF5_TOOLS_DIR}/testfiles/tarray5.ddl - ${HDF5_TOOLS_DIR}/testfiles/tarray6.ddl - ${HDF5_TOOLS_DIR}/testfiles/tarray7.ddl - ${HDF5_TOOLS_DIR}/testfiles/tarray8.ddl - ${HDF5_TOOLS_DIR}/testfiles/tattr-1.ddl - ${HDF5_TOOLS_DIR}/testfiles/tattr-2.ddl - ${HDF5_TOOLS_DIR}/testfiles/tattr-3.ddl - ${HDF5_TOOLS_DIR}/testfiles/tattr-4_be.ddl - ${HDF5_TOOLS_DIR}/testfiles/tattrcontents1.ddl - ${HDF5_TOOLS_DIR}/testfiles/tattrcontents2.ddl - ${HDF5_TOOLS_DIR}/testfiles/tattrintsize.ddl - ${HDF5_TOOLS_DIR}/testfiles/tattrreg.ddl - ${HDF5_TOOLS_DIR}/testfiles/tattrregR.ddl - ${HDF5_TOOLS_DIR}/testfiles/tbin1.ddl - ${HDF5_TOOLS_DIR}/testfiles/tbin1.ddl - ${HDF5_TOOLS_DIR}/testfiles/tbin2.ddl - ${HDF5_TOOLS_DIR}/testfiles/tbin3.ddl - ${HDF5_TOOLS_DIR}/testfiles/tbin4.ddl - ${HDF5_TOOLS_DIR}/testfiles/tbinregR.ddl - ${HDF5_TOOLS_DIR}/testfiles/tbigdims.ddl - ${HDF5_TOOLS_DIR}/testfiles/tbitnopaque.ddl - ${HDF5_TOOLS_DIR}/testfiles/tboot1.ddl - ${HDF5_TOOLS_DIR}/testfiles/tboot2.ddl - ${HDF5_TOOLS_DIR}/testfiles/tboot2A.ddl - ${HDF5_TOOLS_DIR}/testfiles/tboot2B.ddl - ${HDF5_TOOLS_DIR}/testfiles/tchar1.ddl - ${HDF5_TOOLS_DIR}/testfiles/tchunked.ddl - ${HDF5_TOOLS_DIR}/testfiles/tcmpdattrintsize.ddl - ${HDF5_TOOLS_DIR}/testfiles/tcmpdintarray.ddl - ${HDF5_TOOLS_DIR}/testfiles/tcmpdints.ddl - ${HDF5_TOOLS_DIR}/testfiles/tcmpdintsize.ddl - ${HDF5_TOOLS_DIR}/testfiles/tcompound_complex2.ddl - ${HDF5_TOOLS_DIR}/testfiles/tcomp-1.ddl - ${HDF5_TOOLS_DIR}/testfiles/tcomp-2.ddl - ${HDF5_TOOLS_DIR}/testfiles/tcomp-3.ddl - ${HDF5_TOOLS_DIR}/testfiles/tcomp-4.ddl - ${HDF5_TOOLS_DIR}/testfiles/tcompact.ddl - ${HDF5_TOOLS_DIR}/testfiles/tcontents.ddl - ${HDF5_TOOLS_DIR}/testfiles/tcontiguos.ddl - ${HDF5_TOOLS_DIR}/testfiles/tdatareg.ddl - ${HDF5_TOOLS_DIR}/testfiles/tdataregR.ddl - ${HDF5_TOOLS_DIR}/testfiles/tdeflate.ddl - ${HDF5_TOOLS_DIR}/testfiles/tdset-1.ddl - ${HDF5_TOOLS_DIR}/testfiles/tdset-2.ddl - ${HDF5_TOOLS_DIR}/testfiles/tdset-3s.ddl - ${HDF5_TOOLS_DIR}/testfiles/tempty.ddl - ${HDF5_TOOLS_DIR}/testfiles/texceedsubstart.ddl - ${HDF5_TOOLS_DIR}/testfiles/texceedsubcount.ddl - ${HDF5_TOOLS_DIR}/testfiles/texceedsubstride.ddl - ${HDF5_TOOLS_DIR}/testfiles/texceedsubblock.ddl - ${HDF5_TOOLS_DIR}/testfiles/texternal.ddl - ${HDF5_TOOLS_DIR}/testfiles/textlinksrc.ddl - ${HDF5_TOOLS_DIR}/testfiles/textlinkfar.ddl - ${HDF5_TOOLS_DIR}/testfiles/textlink.ddl - ${HDF5_TOOLS_DIR}/testfiles/tfamily.ddl - ${HDF5_TOOLS_DIR}/testfiles/tfill.ddl - ${HDF5_TOOLS_DIR}/testfiles/tfletcher32.ddl - ${HDF5_TOOLS_DIR}/testfiles/tfpformat.ddl - ${HDF5_TOOLS_DIR}/testfiles/tgroup-1.ddl - ${HDF5_TOOLS_DIR}/testfiles/tgroup-2.ddl - ${HDF5_TOOLS_DIR}/testfiles/tgrp_comments.ddl - ${HDF5_TOOLS_DIR}/testfiles/thlink-1.ddl - ${HDF5_TOOLS_DIR}/testfiles/thlink-2.ddl - ${HDF5_TOOLS_DIR}/testfiles/thlink-3.ddl - ${HDF5_TOOLS_DIR}/testfiles/thlink-4.ddl - ${HDF5_TOOLS_DIR}/testfiles/thlink-5.ddl - ${HDF5_TOOLS_DIR}/testfiles/thyperslab.ddl - ${HDF5_TOOLS_DIR}/testfiles/tindicesno.ddl - ${HDF5_TOOLS_DIR}/testfiles/tindicessub1.ddl - ${HDF5_TOOLS_DIR}/testfiles/tindicessub2.ddl - ${HDF5_TOOLS_DIR}/testfiles/tindicessub3.ddl - ${HDF5_TOOLS_DIR}/testfiles/tindicessub4.ddl - ${HDF5_TOOLS_DIR}/testfiles/tindicesyes.ddl - ${HDF5_TOOLS_DIR}/testfiles/tints4dims.ddl - ${HDF5_TOOLS_DIR}/testfiles/tints4dimsBlock2.ddl - ${HDF5_TOOLS_DIR}/testfiles/tints4dimsBlockEq.ddl - ${HDF5_TOOLS_DIR}/testfiles/tints4dimsCount2.ddl - ${HDF5_TOOLS_DIR}/testfiles/tints4dimsCountEq.ddl - ${HDF5_TOOLS_DIR}/testfiles/tints4dimsStride2.ddl - ${HDF5_TOOLS_DIR}/testfiles/tintsattrs.ddl - ${HDF5_TOOLS_DIR}/testfiles/tlarge_objname.ddl - #${HDF5_TOOLS_DIR}/testfiles/tldouble.ddl - ${HDF5_TOOLS_DIR}/testfiles/tlonglinks.ddl - ${HDF5_TOOLS_DIR}/testfiles/tloop-1.ddl - ${HDF5_TOOLS_DIR}/testfiles/tmulti.ddl - ${HDF5_TOOLS_DIR}/testfiles/tmultifile.ddl - #${HDF5_TOOLS_DIR}/testfiles/tqmarkfile.ddl - #${HDF5_TOOLS_DIR}/testfiles/tstarfile.ddl - ${HDF5_TOOLS_DIR}/testfiles/tnamed_dtype_attr.ddl - ${HDF5_TOOLS_DIR}/testfiles/tnestcomp-1.ddl - ${HDF5_TOOLS_DIR}/testfiles/tnestedcmpddt.ddl - ${HDF5_TOOLS_DIR}/testfiles/tnbit.ddl - ${HDF5_TOOLS_DIR}/testfiles/tnoattrdata.ddl - ${HDF5_TOOLS_DIR}/testfiles/tnoattrddl.ddl - ${HDF5_TOOLS_DIR}/testfiles/tnodata.ddl - ${HDF5_TOOLS_DIR}/testfiles/tnoddl.ddl - ${HDF5_TOOLS_DIR}/testfiles/tnoddlfile.ddl - ${HDF5_TOOLS_DIR}/testfiles/tno-subset.ddl - ${HDF5_TOOLS_DIR}/testfiles/tnullspace.ddl - ${HDF5_TOOLS_DIR}/testfiles/tordergr1.ddl - ${HDF5_TOOLS_DIR}/testfiles/tordergr2.ddl - ${HDF5_TOOLS_DIR}/testfiles/tordergr3.ddl - ${HDF5_TOOLS_DIR}/testfiles/tordergr4.ddl - ${HDF5_TOOLS_DIR}/testfiles/tordergr5.ddl - ${HDF5_TOOLS_DIR}/testfiles/torderattr1.ddl - ${HDF5_TOOLS_DIR}/testfiles/torderattr2.ddl - ${HDF5_TOOLS_DIR}/testfiles/torderattr3.ddl - ${HDF5_TOOLS_DIR}/testfiles/torderattr4.ddl - ${HDF5_TOOLS_DIR}/testfiles/tordercontents1.ddl - ${HDF5_TOOLS_DIR}/testfiles/tordercontents2.ddl - ${HDF5_TOOLS_DIR}/testfiles/torderlinks1.ddl - ${HDF5_TOOLS_DIR}/testfiles/torderlinks2.ddl - ${HDF5_TOOLS_DIR}/testfiles/tperror.ddl - ${HDF5_TOOLS_DIR}/testfiles/trawdatafile.ddl - ${HDF5_TOOLS_DIR}/testfiles/trawssetfile.ddl - ${HDF5_TOOLS_DIR}/testfiles/treadfilter.ddl - ${HDF5_TOOLS_DIR}/testfiles/treadintfilter.ddl - ${HDF5_TOOLS_DIR}/testfiles/treference.ddl - ${HDF5_TOOLS_DIR}/testfiles/tsaf.ddl - ${HDF5_TOOLS_DIR}/testfiles/tscalarattrintsize.ddl - ${HDF5_TOOLS_DIR}/testfiles/tscalarintattrsize.ddl - ${HDF5_TOOLS_DIR}/testfiles/tscalarintsize.ddl - ${HDF5_TOOLS_DIR}/testfiles/tscalarstring.ddl - ${HDF5_TOOLS_DIR}/testfiles/tscaleoffset.ddl - ${HDF5_TOOLS_DIR}/testfiles/tshuffle.ddl - ${HDF5_TOOLS_DIR}/testfiles/tslink-1.ddl - ${HDF5_TOOLS_DIR}/testfiles/tslink-2.ddl - ${HDF5_TOOLS_DIR}/testfiles/tslink-D.ddl - ${HDF5_TOOLS_DIR}/testfiles/tsplit_file.ddl - ${HDF5_TOOLS_DIR}/testfiles/tstr-1.ddl - ${HDF5_TOOLS_DIR}/testfiles/tstr-2.ddl - ${HDF5_TOOLS_DIR}/testfiles/tstring.ddl - ${HDF5_TOOLS_DIR}/testfiles/tstring2.ddl - ${HDF5_TOOLS_DIR}/testfiles/tstringe.ddl - ${HDF5_TOOLS_DIR}/testfiles/tszip.ddl - ${HDF5_TOOLS_DIR}/testfiles/tudlink-1.ddl - ${HDF5_TOOLS_DIR}/testfiles/tudlink-2.ddl - ${HDF5_TOOLS_DIR}/testfiles/tuserfilter.ddl - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes1.ddl - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes2.ddl - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes3.ddl - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes4.ddl - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes5.ddl - ${HDF5_TOOLS_DIR}/testfiles/tvlenstr_array.ddl - ${HDF5_TOOLS_DIR}/testfiles/tvlstr.ddl - ${HDF5_TOOLS_DIR}/testfiles/tvms.ddl - ${HDF5_TOOLS_DIR}/testfiles/twidedisplay.ddl - ${HDF5_TOOLS_DIR}/testfiles/twithddlfile.ddl - ${HDF5_TOOLS_DIR}/testfiles/h5dump-help.txt - ${HDF5_TOOLS_DIR}/testfiles/out3.h5import - ${HDF5_TOOLS_DIR}/testfiles/zerodim.ddl - ) - set (HDF5_REFERENCE_EXP_FILES - tall-6.exp - tnoddlfile.exp - trawdatafile.exp - trawssetfile.exp - tstr2bin2.exp - tstr2bin6.exp - twithddl.exp - twithddlfile.exp - ) - set (HDF5_REFERENCE_TEST_FILES - ${HDF5_TOOLS_DIR}/testfiles/charsets.h5 - ${HDF5_TOOLS_DIR}/testfiles/file_space.h5 - ${HDF5_TOOLS_DIR}/testfiles/filter_fail.h5 - ${HDF5_TOOLS_DIR}/testfiles/packedbits.h5 - ${HDF5_TOOLS_DIR}/testfiles/taindices.h5 - ${HDF5_TOOLS_DIR}/testfiles/tall.h5 - ${HDF5_TOOLS_DIR}/testfiles/tarray1.h5 - ${HDF5_TOOLS_DIR}/testfiles/tarray1_big.h5 - ${HDF5_TOOLS_DIR}/testfiles/tarray2.h5 - ${HDF5_TOOLS_DIR}/testfiles/tarray3.h5 - ${HDF5_TOOLS_DIR}/testfiles/tarray4.h5 - ${HDF5_TOOLS_DIR}/testfiles/tarray5.h5 - ${HDF5_TOOLS_DIR}/testfiles/tarray6.h5 - ${HDF5_TOOLS_DIR}/testfiles/tarray7.h5 - ${HDF5_TOOLS_DIR}/testfiles/tarray8.h5 - ${HDF5_TOOLS_DIR}/testfiles/tattr.h5 - ${HDF5_TOOLS_DIR}/testfiles/tattr2.h5 - ${HDF5_TOOLS_DIR}/testfiles/tattr4_be.h5 - ${HDF5_TOOLS_DIR}/testfiles/tattrintsize.h5 - ${HDF5_TOOLS_DIR}/testfiles/tattrreg.h5 - ${HDF5_TOOLS_DIR}/testfiles/tbigdims.h5 - ${HDF5_TOOLS_DIR}/testfiles/tbinary.h5 - ${HDF5_TOOLS_DIR}/testfiles/tbitnopaque.h5 - ${HDF5_TOOLS_DIR}/testfiles/tchar.h5 - ${HDF5_TOOLS_DIR}/testfiles/tcmpdattrintsize.h5 - ${HDF5_TOOLS_DIR}/testfiles/tcmpdintarray.h5 - ${HDF5_TOOLS_DIR}/testfiles/tcmpdints.h5 - ${HDF5_TOOLS_DIR}/testfiles/tcmpdintsize.h5 - ${HDF5_TOOLS_DIR}/testfiles/tcompound.h5 - ${HDF5_TOOLS_DIR}/testfiles/tcompound_complex.h5 - ${HDF5_TOOLS_DIR}/testfiles/tcompound_complex2.h5 - ${HDF5_TOOLS_DIR}/testfiles/tdatareg.h5 - ${HDF5_TOOLS_DIR}/testfiles/tdset.h5 - ${HDF5_TOOLS_DIR}/testfiles/tempty.h5 - ${HDF5_TOOLS_DIR}/testfiles/tsoftlinks.h5 - ${HDF5_TOOLS_DIR}/testfiles/textlinkfar.h5 - ${HDF5_TOOLS_DIR}/testfiles/textlinksrc.h5 - ${HDF5_TOOLS_DIR}/testfiles/textlinktar.h5 - ${HDF5_TOOLS_DIR}/testfiles/textlink.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfamily00000.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfamily00001.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfamily00002.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfamily00003.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfamily00004.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfamily00005.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfamily00006.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfamily00007.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfamily00008.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfamily00009.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfamily00010.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfcontents1.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfcontents2.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfilters.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfpformat.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfvalues.h5 - ${HDF5_TOOLS_DIR}/testfiles/tgroup.h5 - ${HDF5_TOOLS_DIR}/testfiles/tgrp_comments.h5 - ${HDF5_TOOLS_DIR}/testfiles/thlink.h5 - ${HDF5_TOOLS_DIR}/testfiles/thyperslab.h5 - ${HDF5_TOOLS_DIR}/testfiles/tints4dims.h5 - ${HDF5_TOOLS_DIR}/testfiles/tintsattrs.h5 - ${HDF5_TOOLS_DIR}/testfiles/tlarge_objname.h5 - #${HDF5_TOOLS_DIR}/testfiles/tldouble.h5 - ${HDF5_TOOLS_DIR}/testfiles/tlonglinks.h5 - ${HDF5_TOOLS_DIR}/testfiles/tloop.h5 - ${HDF5_TOOLS_DIR}/testfiles/tmulti-b.h5 - ${HDF5_TOOLS_DIR}/testfiles/tmulti-g.h5 - ${HDF5_TOOLS_DIR}/testfiles/tmulti-l.h5 - ${HDF5_TOOLS_DIR}/testfiles/tmulti-o.h5 - ${HDF5_TOOLS_DIR}/testfiles/tmulti-r.h5 - ${HDF5_TOOLS_DIR}/testfiles/tmulti-s.h5 - ${HDF5_TOOLS_DIR}/testfiles/tnamed_dtype_attr.h5 - ${HDF5_TOOLS_DIR}/testfiles/tnestedcomp.h5 - ${HDF5_TOOLS_DIR}/testfiles/tnestedcmpddt.h5 - ${HDF5_TOOLS_DIR}/testfiles/tno-subset.h5 - ${HDF5_TOOLS_DIR}/testfiles/tnullspace.h5 - ${HDF5_TOOLS_DIR}/testfiles/torderattr.h5 - ${HDF5_TOOLS_DIR}/testfiles/tordergr.h5 - ${HDF5_TOOLS_DIR}/testfiles/tsaf.h5 - ${HDF5_TOOLS_DIR}/testfiles/tscalarattrintsize.h5 - ${HDF5_TOOLS_DIR}/testfiles/tscalarintattrsize.h5 - ${HDF5_TOOLS_DIR}/testfiles/tscalarintsize.h5 - ${HDF5_TOOLS_DIR}/testfiles/tscalarstring.h5 - ${HDF5_TOOLS_DIR}/testfiles/tslink.h5 - ${HDF5_TOOLS_DIR}/testfiles/tsplit_file-m.h5 - ${HDF5_TOOLS_DIR}/testfiles/tsplit_file-r.h5 - ${HDF5_TOOLS_DIR}/testfiles/tstr.h5 - ${HDF5_TOOLS_DIR}/testfiles/tstr2.h5 - ${HDF5_TOOLS_DIR}/testfiles/tstr3.h5 - ${HDF5_TOOLS_DIR}/testfiles/tudlink.h5 - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes1.h5 - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes2.h5 - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes3.h5 - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes4.h5 - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes5.h5 - ${HDF5_TOOLS_DIR}/testfiles/tvlenstr_array.h5 - ${HDF5_TOOLS_DIR}/testfiles/tvlstr.h5 - ${HDF5_TOOLS_DIR}/testfiles/tvms.h5 - ${HDF5_TOOLS_DIR}/testfiles/zerodim.h5 - ) - set (HDF5_ERROR_REFERENCE_TEST_FILES - ${PROJECT_SOURCE_DIR}/errfiles/filter_fail.err - ${PROJECT_SOURCE_DIR}/errfiles/non_existing.err - ${PROJECT_SOURCE_DIR}/errfiles/tall-1.err - ${PROJECT_SOURCE_DIR}/errfiles/tall-2A.err - ${PROJECT_SOURCE_DIR}/errfiles/tall-2A0.err - ${PROJECT_SOURCE_DIR}/errfiles/tall-2B.err - ${PROJECT_SOURCE_DIR}/errfiles/tarray1_big.err - ${PROJECT_SOURCE_DIR}/errfiles/tattrregR.err - ${PROJECT_SOURCE_DIR}/errfiles/tattr-3.err - ${PROJECT_SOURCE_DIR}/errfiles/tcomp-3.err - ${PROJECT_SOURCE_DIR}/errfiles/tdataregR.err - ${PROJECT_SOURCE_DIR}/errfiles/tdset-2.err - ${PROJECT_SOURCE_DIR}/errfiles/texceedsubblock.err - ${PROJECT_SOURCE_DIR}/errfiles/texceedsubcount.err - ${PROJECT_SOURCE_DIR}/errfiles/texceedsubstart.err - ${PROJECT_SOURCE_DIR}/errfiles/texceedsubstride.err - ${PROJECT_SOURCE_DIR}/errfiles/textlink.err - ${PROJECT_SOURCE_DIR}/errfiles/textlinkfar.err - ${PROJECT_SOURCE_DIR}/errfiles/textlinksrc.err - ${PROJECT_SOURCE_DIR}/errfiles/torderlinks1.err - ${PROJECT_SOURCE_DIR}/errfiles/torderlinks2.err - ${PROJECT_SOURCE_DIR}/errfiles/tgroup-2.err - ${PROJECT_SOURCE_DIR}/errfiles/tperror.err - ${PROJECT_SOURCE_DIR}/errfiles/tslink-D.err - ) - - # make test dir - file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - - # - # copy test files from source dir to test dir - # - foreach (tst_h5_file ${HDF5_REFERENCE_TEST_FILES}) - get_filename_component (fname "${tst_h5_file}" NAME) - HDFTEST_COPY_FILE("${tst_h5_file}" "${PROJECT_BINARY_DIR}/testfiles/std/${fname}" "h5dump_std_files") - endforeach (tst_h5_file ${HDF5_REFERENCE_TEST_FILES}) - - foreach (tst_exp_file ${HDF5_REFERENCE_EXP_FILES}) - if (WIN32) - file (READ ${HDF5_TOOLS_SRC_DIR}/testfiles/${tst_exp_file} TEST_STREAM) - file (WRITE ${PROJECT_BINARY_DIR}/testfiles/std/${tst_exp_file} "${TEST_STREAM}") - else (WIN32) - HDFTEST_COPY_FILE("${HDF5_TOOLS_SRC_DIR}/testfiles/${tst_exp_file}" "${PROJECT_BINARY_DIR}/testfiles/std/${tst_exp_file}" "h5dump_std_files") - endif (WIN32) - endforeach (tst_exp_file ${HDF5_REFERENCE_EXP_FILES}) - - foreach (tst_other_file ${HDF5_REFERENCE_FILES}) - get_filename_component (fname "${tst_other_file}" NAME) - HDFTEST_COPY_FILE("${tst_other_file}" "${PROJECT_BINARY_DIR}/testfiles/std/${fname}" "h5dump_std_files") - endforeach (tst_other_file ${HDF5_REFERENCE_FILES}) - - foreach (tst_error_file ${HDF5_ERROR_REFERENCE_TEST_FILES}) - get_filename_component (fname "${tst_error_file}" NAME) - HDFTEST_COPY_FILE("${tst_error_file}" "${PROJECT_BINARY_DIR}/testfiles/std/${fname}" "h5dump_std_files") - endforeach (tst_error_file ${HDF5_ERROR_REFERENCE_TEST_FILES}) - - # -------------------------------------------------------------------- - # Special file handling - # -------------------------------------------------------------------- - HDFTEST_COPY_FILE("${HDF5_TOOLS_SOURCE_DIR}/testfiles/tbin1.ddl" "${PROJECT_BINARY_DIR}/testfiles/std/tbin1LE.ddl" "h5dump_std_files") - - if (WIN32) - file (READ ${HDF5_TOOLS_SRC_DIR}/testfiles/tbinregR.exp TEST_STREAM) - file (WRITE ${PROJECT_BINARY_DIR}/testfiles/std/tbinregR.exp "${TEST_STREAM}") - else (WIN32) - HDFTEST_COPY_FILE("${HDF5_TOOLS_SRC_DIR}/testfiles/tbinregR.exp" "${PROJECT_BINARY_DIR}/testfiles/std/tbinregR.exp" "h5dump_std_files") - endif (WIN32) - add_custom_target(h5dump_std_files ALL COMMENT "Copying files needed by h5dump_std tests" DEPENDS ${h5dump_std_files_list}) - -############################################################################## -############################################################################## -### T H E T E S T S M A C R O S ### -############################################################################## -############################################################################## - - MACRO (ADD_HELP_TEST testname resultcode) - # If using memchecker add tests without using scripts - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME H5DUMP-${testname} COMMAND $ ${ARGN}) - set_tests_properties (H5DUMP-${testname} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5DUMP-${testname} PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - set (last_test "H5DUMP-${testname}") - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5DUMP-h5dump-${testname} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles/std" - -D "TEST_OUTPUT=h5dump-${testname}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=h5dump-${testname}.txt" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_HELP_TEST) - - MACRO (ADD_SKIP_H5_TEST skipresultfile skipresultcode testtype) - if (${testtype} STREQUAL "SKIP") - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5DUMP-${skipresultfile}-SKIPPED - COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${skipresultfile} ${ARGN}" - ) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - else (${testtype} STREQUAL "SKIP") - ADD_H5_TEST (${skipresultfile} ${skipresultcode} ${ARGN}) - endif (${testtype} STREQUAL "SKIP") - ENDMACRO (ADD_SKIP_H5_TEST) - - MACRO (ADD_H5_TEST resultfile resultcode) - # If using memchecker add tests without using scripts - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME H5DUMP-${resultfile} COMMAND $ ${ARGN}) - set_tests_properties (H5DUMP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - if (NOT ${resultcode} STREQUAL "0") - set_tests_properties (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true") - endif (NOT ${resultcode} STREQUAL "0") - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5DUMP-${resultfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ${resultfile}.bin - ) - set_tests_properties (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - add_test ( - NAME H5DUMP-${resultfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles/std" - -D "TEST_OUTPUT=${resultfile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}.ddl" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects") - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_TEST file) - - MACRO (ADD_H5_TEST_N resultfile resultcode) - # If using memchecker add tests without using scripts - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME H5DUMP-N-${resultfile} COMMAND $ ${ARGN}) - set_tests_properties (H5DUMP-N-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - if (NOT ${resultcode} STREQUAL "0") - set_tests_properties (H5DUMP-N-${resultfile} PROPERTIES WILL_FAIL "true") - endif (NOT ${resultcode} STREQUAL "0") - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5DUMP-N-${resultfile} PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5DUMP-N-${resultfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ${resultfile}-N.bin - ) - set_tests_properties (H5DUMP-N-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - add_test ( - NAME H5DUMP-N-${resultfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles/std" - -D "TEST_OUTPUT=${resultfile}-N.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}.ddl" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5DUMP-N-${resultfile} PROPERTIES DEPENDS "H5DUMP-N-${resultfile}-clear-objects") - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_TEST_N file) - - MACRO (ADD_H5_TEST_EXPORT resultfile targetfile resultcode) - # If using memchecker add tests without using scripts - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME H5DUMP-${resultfile} COMMAND $ ${ARGN} ${resultfile}.txt ${targetfile}) - set_tests_properties (H5DUMP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - if (NOT ${resultcode} STREQUAL "0") - set_tests_properties (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true") - endif (NOT ${resultcode} STREQUAL "0") - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5DUMP-${resultfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ${resultfile}.txt - ) - set_tests_properties (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - add_test ( - NAME H5DUMP-${resultfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=${ARGN};${resultfile}.txt;${targetfile}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles/std" - -D "TEST_OUTPUT=${resultfile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}.ddl" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects") - add_test ( - NAME H5DUMP-${resultfile}-output-cmp - COMMAND ${CMAKE_COMMAND} - -E compare_files ${resultfile}.txt ${resultfile}.exp - ) - set_tests_properties (H5DUMP-${resultfile}-output-cmp PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - set_tests_properties (H5DUMP-${resultfile}-output-cmp PROPERTIES DEPENDS H5DUMP-${resultfile}) - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_TEST_EXPORT file) - - MACRO (ADD_H5_TEST_EXPORT_DDL resultfile targetfile resultcode ddlfile) - # If using memchecker add tests without using scripts - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME H5DUMP-${resultfile} COMMAND $ --ddl=${ddlfile}.txt ${ARGN} ${resultfile}.txt ${targetfile}) - set_tests_properties (H5DUMP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - if (NOT ${resultcode} STREQUAL "0") - set_tests_properties (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true") - endif (NOT ${resultcode} STREQUAL "0") - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5DUMP-${resultfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ${ddlfile}.txt ${resultfile}.txt - ) - set_tests_properties (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - add_test ( - NAME H5DUMP-${resultfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=--ddl=${ddlfile}.txt;${ARGN};${resultfile}.txt;${targetfile}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles/std" - -D "TEST_OUTPUT=${resultfile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}.ddl" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects") - add_test ( - NAME H5DUMP-${resultfile}-output-cmp - COMMAND ${CMAKE_COMMAND} - -E compare_files ${resultfile}.txt ${resultfile}.exp - ) - set_tests_properties (H5DUMP-${resultfile}-output-cmp PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - set_tests_properties (H5DUMP-${resultfile}-output-cmp PROPERTIES DEPENDS H5DUMP-${resultfile}) - add_test ( - NAME H5DUMP-${resultfile}-output-cmp-ddl - COMMAND ${CMAKE_COMMAND} - -E compare_files ${ddlfile}.txt ${ddlfile}.exp - ) - set_tests_properties (H5DUMP-${resultfile}-output-cmp-ddl PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - set_tests_properties (H5DUMP-${resultfile}-output-cmp-ddl PROPERTIES DEPENDS H5DUMP-${resultfile}-output-cmp) - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_TEST_EXPORT_DDL file) - - MACRO (ADD_H5_EXPORT_TEST resultfile targetfile resultcode) - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5DUMP-output-${resultfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ${resultfile}.txt - ) - set_tests_properties (H5DUMP-output-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - add_test ( - NAME H5DUMP-output-${resultfile} - COMMAND $ ${ARGN} ${resultfile}.txt ${targetfile} - ) - set_tests_properties (H5DUMP-output-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - set_tests_properties (H5DUMP-output-${resultfile} PROPERTIES DEPENDS H5DUMP-output-${resultfile}-clear-objects) - add_test ( - NAME H5DUMP-output-cmp-${resultfile} - COMMAND ${CMAKE_COMMAND} - -E compare_files ${resultfile}.txt ${resultfile}.exp - ) - set_tests_properties (H5DUMP-output-cmp-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - set_tests_properties (H5DUMP-output-cmp-${resultfile} PROPERTIES DEPENDS H5DUMP-output-${resultfile}) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_EXPORT_TEST file) - - MACRO (ADD_H5_MASK_TEST resultfile resultcode) - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5DUMP-${resultfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles/std" - -D "TEST_OUTPUT=${resultfile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}.ddl" - -D "TEST_MASK_ERROR=true" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_MASK_TEST file) - - MACRO (ADD_H5ERR_MASK_TEST resultfile resultcode) - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5DUMP-${resultfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles/std" - -D "TEST_OUTPUT=${resultfile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}.ddl" - -D "TEST_ERRREF=${resultfile}.err" - -D "TEST_MASK_ERROR=true" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5ERR_MASK_TEST file) - - MACRO (ADD_H5ERR_MASK_ENV_TEST resultfile resultcode envvar envval) - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5DUMP-${resultfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles/std" - -D "TEST_OUTPUT=${resultfile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}.ddl" - -D "TEST_ERRREF=${resultfile}.err" - -D "TEST_MASK_ERROR=true" - -D "TEST_ENV_VAR:STRING=${envvar}" - -D "TEST_ENV_VALUE:STRING=${envval}" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5ERR_MASK_ENV_TEST) - - MACRO (ADD_H5_TEST_IMPORT conffile resultfile testfile resultcode) - # If using memchecker add tests without using scripts - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5DUMP-IMPORT-${resultfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ${resultfile}.bin ${resultfile}.h5 - ) - set_tests_properties (H5DUMP-IMPORT-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - add_test ( - NAME H5DUMP-IMPORT-${resultfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=${ARGN};-o;${resultfile}.bin;${testfile}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles/std" - -D "TEST_OUTPUT=${conffile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${conffile}.ddl" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5DUMP-IMPORT-${resultfile} PROPERTIES DEPENDS "H5DUMP-IMPORT-${resultfile}-clear-objects") - add_test (NAME H5DUMP-IMPORT-h5import-${resultfile} COMMAND h5import ${resultfile}.bin -c ${conffile}.out -o ${resultfile}.h5) - set_tests_properties (H5DUMP-IMPORT-h5import-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - set_tests_properties (H5DUMP-IMPORT-h5import-${resultfile} PROPERTIES DEPENDS H5DUMP-IMPORT-${resultfile}) - add_test (NAME H5DUMP-IMPORT-h5diff-${resultfile} COMMAND h5diff ${testfile} ${resultfile}.h5 /integer /integer) - set_tests_properties (H5DUMP-IMPORT-h5diff-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - set_tests_properties (H5DUMP-IMPORT-h5diff-${resultfile} PROPERTIES DEPENDS H5DUMP-IMPORT-h5import-${resultfile}) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_TEST_IMPORT file) - -############################################################################## -############################################################################## -### T H E T E S T S HDF5_ENABLE_USING_MEMCHECKER ### -############################################################################## -############################################################################## - - if (HDF5_ENABLE_USING_MEMCHECKER) - # Remove any output file left over from previous test run - add_test ( - NAME H5DUMP-clearall-objects - COMMAND ${CMAKE_COMMAND} - -E remove - h5dump-help.out - charsets.out - charsets.out.err - file_space.out - file_space.out.err - filter_fail.out - filter_fail.out.err - non_existing.out - non_existing.out.err - packedbits.out - packedbits.out.err - tall-1.out - tall-1.out.err - tall-2.out - tall-2.out.err - tall-2A.out - tall-2A.out.err - tall-2A0.out - tall-2A0.out.err - tall-2B.out - tall-2B.out.err - tall-3.out - tall-3.out.err - tall-4s.out - tall-4s.out.err - tall-5s.out - tall-5s.out.err - tall-6.txt - tall-6.out - tall-6.out.err - tall-7.out - tall-7.out.err - tall-7N.out - tall-7N.out.err - tallfilters.out - tallfilters.out.err - tarray1.out - tarray1.out.err - tarray1_big.out - tarray1_big.out.err - tarray2.out - tarray2.out.err - tarray3.out - tarray3.out.err - tarray4.out - tarray4.out.err - tarray5.out - tarray5.out.err - tarray6.out - tarray6.out.err - tarray7.out - tarray7.out.err - tarray8.out - tarray8.out.err - tattr-1.out - tattr-1.out.err - tattr-2.out - tattr-2.out.err - tattr-3.out - tattr-3.out.err - tattr-4_be.out - tattr-4_be.out.err - tattrcontents1.out - tattrcontents1.out.err - tattrcontents2.out - tattrcontents2.out.err - tattrintsize.out - tattrintsize.out.err - tattrreg.out - tattrreg.out.err - tattrregR.out - tattrregR.out.err - tbin1LE.bin - tbinregR.txt - tbinregR.out - tbinregR.out.err - tbigdims.out - tbigdims.out.err - tbitnopaque.out - tbitnopaque.out.err - tboot1.out - tboot1.out.err - tboot2.out - tboot2.out.err - tboot2A.out - tboot2A.out.err - tboot2B.out - tboot2B.out.err - tchar1.out - tchar1.out.err - tchunked.out - tchunked.out.err - tcmpdattrintsize.out - tcmpdattrintsize.out.err - tcmpdintarray.out - tcmpdintarray.out.err - tcmpdints.out - tcmpdints.out.err - tcmpdintsize.out - tcmpdintsize.out.err - tcomp-1.out - tcomp-1.out.err - tcomp-2.out - tcomp-2.out.err - tcomp-3.out - tcomp-3.out.err - tcomp-4.out - tcomp-4.out.err - tcompact.out - tcompact.out.err - tcompound_complex.out - tcompound_complex.out.err - tcontents.out - tcontents.out.err - tcontiguos.out - tcontiguos.out.err - tdatareg.out - tdatareg.out.err - tdataregR.out - tdataregR.out.err - tdeflate.out - tdeflate.out.err - tdset-1.out - tdset-1.out.err - tdset-2.out - tdset-2.out.err - tdset-3s.out - tdset-3s.out.err - tempty.out - tempty.out.err - texternal.out - texternal.out.err - textlinksrc.out - textlinksrc.out.err - textlinkfar.out - textlinkfar.out.err - textlink.out - textlink.out.err - tfamily.out - tfamily.out.err - tfill.out - tfill.out.err - tfletcher32.out - tfletcher32.out.err - tfpformat.out - tfpformat.out.err - tgroup-1.out - tgroup-1.out.err - tgroup-2.out - tgroup-2.out.err - tgrp_comments.out - tgrp_comments.out.err - thlink-1.out - thlink-1.out.err - thlink-2.out - thlink-2.out.err - thlink-3.out - thlink-3.out.err - thlink-4.out - thlink-4.out.err - thlink-5.out - thlink-5.out.err - thyperslab.out - thyperslab.out.err - tindicesno.out - tindicesno.out.err - tindicessub1.out - tindicessub1.out.err - tindicessub2.out - tindicessub2.out.err - tindicessub3.out - tindicessub3.out.err - tindicessub4.out - tindicessub4.out.err - texceedsubstart.out - texceedsubstart.out.err - texceedsubcount.out - texceedsubcount.out.err - texceedsubstride.out - texceedsubstride.out.err - texceedsubblock.out - texceedsubblock.out.err - tindicesyes.out - tindicesyes.out.err - tints4dims.out - tints4dims.out.err - tints4dimsBlock2.out - tints4dimsBlock2.out.err - tints4dimsBlockEq.out - tints4dimsBlockEq.out.err - tints4dimsCount2.out - tints4dimsCount2.out.err - tints4dimsCountEq.out - tints4dimsCountEq.out.err - tints4dimsStride2.out - tints4dimsStride2.out.err - tintsattrs.out - tintsattrs.out.err - tlarge_objname.out - tlarge_objname.out.err - tldouble.out - tldouble.out.err - tlonglinks.out - tlonglinks.out.err - tloop-1.out - tloop-1.out.err - tmulti.out - tmulti.out.err - tmultifile.out - tmultifile.out.err -# tqmarkfile.out -# tqmarkfile.out.err -# tstarfile.out -# tstarfile.out.err - tnamed_dtype_attr.out - tnamed_dtype_attr.out.err - tnbit.out - tnbit.out.err - tnestcomp-1.out - tnestcomp-1.out.err - tnestedcmpddt.out - tnestedcmpddt.out.err - tnoattrdata.out - tnoattrdata.out.err - tnoattrddl.out - tnoattrddl.out.err - tnodata.out - tnodata.out.err - tnoddl.out - tnoddl.out.err - tnoddlfile.out - tnoddlfile.out.err - tno-subset.out - tno-subset.out.err - tnullspace.out - tnullspace.out.err - tordergr1.out - tordergr1.out.err - tordergr2.out - tordergr2.out.err - tordergr3.out - tordergr3.out.err - tordergr4.out - tordergr4.out.err - tordergr5.out - tordergr5.out.err - torderattr1.out - torderattr1.out.err - torderattr2.out - torderattr2.out.err - torderattr3.out - torderattr3.out.err - torderattr4.out - torderattr4.out.err - tordercontents1.out - tordercontents1.out.err - tordercontents2.out - tordercontents2.out.err - torderlinks1.out - torderlinks1.out.err - torderlinks2.out - torderlinks2.out.err - tperror.out - tperror.out.err - trawdatafile.out - trawdatafile.out.err - trawdatafile.txt - trawssetfile.out - trawssetfile.out.err - trawssetfile.txt - treadfilter.out - treadfilter.out.err - treadintfilter.out - treadintfilter.out.err - treference.out - treference.out.err - tsaf.out - tsaf.out.err - tscalarattrintsize.out - tscalarattrintsize.out.err - tscalarintattrsize.out - tscalarintattrsize.out.err - tscalarintsize.out - tscalarintsize.out.err - tscalarstring.out - tscalarstring.out.err - tscaleoffset.out - tscaleoffset.out.err - tshuffle.out - tshuffle.out.err - tslink-1.out - tslink-1.out.err - tslink-2.out - tslink-2.out.err - tslink-D.out - tslink-D.out.err - tsplit_file.out - tsplit_file.out.err - tstr-1.out - tstr-1.out.err - tstr-2.out - tstr-2.out.err - tstr2bin2.txt - tstr2bin6.txt - tstring.out - tstring.out.err - tstring2.out - tstring2.out.err - tstringe.out - tstringe.out.err - tszip.out - tszip.out.err - tudlink-1.out - tudlink-1.out.err - tudlink-2.out - tudlink-2.out.err - tuserfilter.out - tuserfilter.out.err - tvldtypes1.out - tvldtypes1.out.err - tvldtypes2.out - tvldtypes2.out.err - tvldtypes3.out - tvldtypes3.out.err - tvldtypes4.out - tvldtypes4.out.err - tvldtypes5.out - tvldtypes5.out.err - tvlenstr_array.out - tvlenstr_array.out.err - tvlstr.out - tvlstr.out.err - tvms.out - tvms.out.err - twidedisplay.out - twidedisplay.out.err - twithddl.txt - twithddlfile.out - twithddlfile.out.err - twithddlfile.txt - zerodim.out - zerodim.out.err - ) - set_tests_properties (H5DUMP-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std") - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5DUMP-clearall-objects PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - set (last_test "H5DUMP-clearall-objects") - endif (HDF5_ENABLE_USING_MEMCHECKER) - - ADD_HELP_TEST(help 0 -h) - - # test data output redirection - #ADD_H5_TEST (tnoddl 0 --enable-error-stack -O -y packedbits.h5) - ADD_H5_TEST (tnoddl 0 --enable-error-stack --ddl -y packedbits.h5) - #ADD_H5_TEST (tnodata 0 --enable-error-stack -o packedbits.h5) - ADD_H5_TEST (tnodata 0 --enable-error-stack --output packedbits.h5) - ADD_H5_TEST (tnoattrddl 0 --enable-error-stack -O -y tattr.h5) - ADD_H5_TEST (tnoattrdata 0 --enable-error-stack -A -o tattr.h5) - ADD_H5_TEST_EXPORT (trawdatafile packedbits.h5 0 --enable-error-stack -y -o) - ADD_H5_TEST_EXPORT (tnoddlfile packedbits.h5 0 --enable-error-stack -O -y -o) - ADD_H5_TEST_EXPORT (trawssetfile tdset.h5 0 --enable-error-stack -d "/dset1[1,1;;;]" -y -o) - - ADD_H5_TEST_EXPORT_DDL (twithddlfile packedbits.h5 0 twithddl --enable-error-stack --ddl=twithddl.txt -y -o) - - # test for maximum display datasets - ADD_H5_TEST (twidedisplay 0 --enable-error-stack -w0 packedbits.h5) - - # test for signed/unsigned datasets - ADD_H5_TEST (packedbits 0 --enable-error-stack packedbits.h5) - # test for compound signed/unsigned datasets - ADD_H5_TEST (tcmpdintarray 0 --enable-error-stack tcmpdintarray.h5) - ADD_H5_TEST (tcmpdints 0 --enable-error-stack tcmpdints.h5) - ADD_H5_TEST (tcmpdintsize 0 --enable-error-stack tcmpdintsize.h5) - # test for signed/unsigned scalar datasets - ADD_H5_TEST (tscalarintsize 0 --enable-error-stack tscalarintsize.h5) - # test for signed/unsigned attributes - ADD_H5_TEST (tattrintsize 0 --enable-error-stack tattrintsize.h5) - # test for compound signed/unsigned attributes - ADD_H5_TEST (tcmpdattrintsize 0 --enable-error-stack tcmpdattrintsize.h5) - # test for signed/unsigned scalar attributes - ADD_H5_TEST (tscalarattrintsize 0 --enable-error-stack tscalarattrintsize.h5) - # test for string scalar dataset and attribute - ADD_H5_TEST (tscalarstring 0 --enable-error-stack tscalarstring.h5) - # test for signed/unsigned scalar datasets with attributes - ADD_H5_TEST (tscalarintattrsize 0 --enable-error-stack tscalarintattrsize.h5) - # test for signed/unsigned datasets attributes - ADD_H5_TEST (tintsattrs 0 --enable-error-stack tintsattrs.h5) - # test for displaying groups - ADD_H5_TEST (tgroup-1 0 --enable-error-stack tgroup.h5) - # test for displaying the selected groups - ADD_H5ERR_MASK_TEST (tgroup-2 1 --enable-error-stack --group=/g2 --group / -g /y tgroup.h5) - - # test for displaying simple space datasets - ADD_H5_TEST (tdset-1 0 --enable-error-stack tdset.h5) - # test for displaying selected datasets - ADD_H5ERR_MASK_TEST (tdset-2 1 --enable-error-stack -H -d dset1 -d /dset2 --dataset=dset3 tdset.h5) - - # test for displaying attributes - ADD_H5_TEST (tattr-1 0 --enable-error-stack tattr.h5) - # test for displaying the selected attributes of string type and scalar space - ADD_H5_TEST (tattr-2 0 --enable-error-stack -a /\\\\/attr1 --attribute /attr4 --attribute=/attr5 tattr.h5) - ADD_H5_TEST_N (tattr-2 0 --enable-error-stack -N /\\\\/attr1 --any_path /attr4 --any_path=/attr5 tattr.h5) - # test for header and error messages - ADD_H5ERR_MASK_TEST (tattr-3 1 --enable-error-stack --header -a /attr2 --attribute=/attr tattr.h5) - # test for displaying at least 9 attributes on root from a be machine - ADD_H5_TEST (tattr-4_be 0 --enable-error-stack tattr4_be.h5) - # test for displaying attributes in shared datatype (also in group and dataset) - ADD_H5_TEST (tnamed_dtype_attr 0 --enable-error-stack tnamed_dtype_attr.h5) - - # test for displaying soft links and user-defined links - ADD_H5_TEST (tslink-1 0 --enable-error-stack tslink.h5) - ADD_H5_TEST (tudlink-1 0 --enable-error-stack tudlink.h5) - # test for displaying the selected link - ADD_H5_TEST (tslink-2 0 --enable-error-stack -l slink2 tslink.h5) - ADD_H5_TEST_N (tslink-2 0 --enable-error-stack -N slink2 tslink.h5) - ADD_H5_TEST (tudlink-2 0 --enable-error-stack -l udlink2 tudlink.h5) - # test for displaying dangling soft links - ADD_H5ERR_MASK_TEST (tslink-D 0 --enable-error-stack -d /slink1 tslink.h5) - - # tests for hard links - ADD_H5_TEST (thlink-1 0 --enable-error-stack thlink.h5) - ADD_H5_TEST (thlink-2 0 --enable-error-stack -d /g1/dset2 --dataset /dset1 --dataset=/g1/g1.1/dset3 thlink.h5) - ADD_H5_TEST (thlink-3 0 --enable-error-stack -d /g1/g1.1/dset3 --dataset /g1/dset2 --dataset=/dset1 thlink.h5) - ADD_H5_TEST (thlink-4 0 --enable-error-stack -g /g1 thlink.h5) - ADD_H5_TEST_N (thlink-4 0 --enable-error-stack -N /g1 thlink.h5) - ADD_H5_TEST (thlink-5 0 --enable-error-stack -d /dset1 -g /g2 -d /g1/dset2 thlink.h5) - ADD_H5_TEST_N (thlink-5 0 --enable-error-stack -N /dset1 -N /g2 -N /g1/dset2 thlink.h5) - - # tests for compound data types - ADD_H5_TEST (tcomp-1 0 --enable-error-stack tcompound.h5) - # test for named data types - ADD_H5_TEST (tcomp-2 0 --enable-error-stack -t /type1 --datatype /type2 --datatype=/group1/type3 tcompound.h5) - ADD_H5_TEST_N (tcomp-2 0 --enable-error-stack -N /type1 --any_path /type2 --any_path=/group1/type3 tcompound.h5) - # test for unamed type - ADD_H5ERR_MASK_TEST (tcomp-3 0 "--enable-error-stack;-t;/#6632;-g;/group2;tcompound.h5") - # test complicated compound datatype - ADD_H5_TEST (tcomp-4 0 --enable-error-stack tcompound_complex.h5) - ADD_H5_TEST (tcompound_complex2 0 --enable-error-stack tcompound_complex2.h5) - # tests for bitfields and opaque data types - ADD_H5_TEST (tbitnopaque 0 --enable-error-stack tbitnopaque.h5) - - #test for the nested compound type - ADD_H5_TEST (tnestcomp-1 0 --enable-error-stack tnestedcomp.h5) - ADD_H5_TEST (tnestedcmpddt 0 --enable-error-stack tnestedcmpddt.h5) - - # test for options - ADD_H5ERR_MASK_TEST (tall-1 0 --enable-error-stack tall.h5) - ADD_H5_TEST (tall-2 0 --enable-error-stack --header -g /g1/g1.1 -a attr2 tall.h5) - ADD_H5_TEST (tall-3 0 --enable-error-stack -d /g2/dset2.1 -l /g1/g1.2/g1.2.1/slink tall.h5) - ADD_H5_TEST_N (tall-3 0 --enable-error-stack -N /g2/dset2.1 -N /g1/g1.2/g1.2.1/slink tall.h5) - ADD_H5_TEST (tall-7 0 --enable-error-stack -a attr1 tall.h5) - ADD_H5_TEST (tall-7N 0 --enable-error-stack -N attr1 tall.h5) - - # test for loop detection - ADD_H5_TEST (tloop-1 0 --enable-error-stack tloop.h5) - - # test for string - ADD_H5_TEST (tstr-1 0 --enable-error-stack tstr.h5) - ADD_H5_TEST (tstr-2 0 --enable-error-stack tstr2.h5) - - # test for file created by Lib SAF team - ADD_H5_TEST (tsaf 0 --enable-error-stack tsaf.h5) - - # test for file with variable length data - ADD_H5_TEST (tvldtypes1 0 --enable-error-stack tvldtypes1.h5) - ADD_H5_TEST (tvldtypes2 0 --enable-error-stack tvldtypes2.h5) - ADD_H5_TEST (tvldtypes3 0 --enable-error-stack tvldtypes3.h5) - ADD_H5_TEST (tvldtypes4 0 --enable-error-stack tvldtypes4.h5) - ADD_H5_TEST (tvldtypes5 0 --enable-error-stack tvldtypes5.h5) - - #test for file with variable length string data - ADD_H5_TEST (tvlstr 0 --enable-error-stack tvlstr.h5) - ADD_H5_TEST (tvlenstr_array 0 --enable-error-stack tvlenstr_array.h5) - - # test for files with array data - ADD_H5_TEST (tarray1 0 --enable-error-stack tarray1.h5) - # # added for bug# 2092 - tarray1_big.h5 - ADD_H5ERR_MASK_TEST (tarray1_big 0 --enable-error-stack -R tarray1_big.h5) - ADD_H5_TEST (tarray2 0 --enable-error-stack tarray2.h5) - ADD_H5_TEST (tarray3 0 --enable-error-stack tarray3.h5) - ADD_H5_TEST (tarray4 0 --enable-error-stack tarray4.h5) - ADD_H5_TEST (tarray5 0 --enable-error-stack tarray5.h5) - ADD_H5_TEST (tarray6 0 --enable-error-stack tarray6.h5) - ADD_H5_TEST (tarray7 0 --enable-error-stack tarray7.h5) - ADD_H5_TEST (tarray8 0 --enable-error-stack tarray8.h5) - - # test for wildcards in filename (does not work with cmake) - #ADD_H5_MASK_TEST (tstarfile 0 --enable-error-stack -H -d Dataset1 tarr*.h5) - #ADD_H5_MASK_TEST (tqmarkfile 0 --enable-error-stack -H -d Dataset1 tarray?.h5) - ADD_H5_TEST (tmultifile 0 --enable-error-stack -H -d Dataset1 tarray2.h5 tarray3.h5 tarray4.h5 tarray5.h5 tarray6.h5 tarray7.h5) - - # test for files with empty data - ADD_H5_TEST (tempty 0 --enable-error-stack tempty.h5) - - # test for files with groups that have comments - ADD_H5_TEST (tgrp_comments 0 --enable-error-stack tgrp_comments.h5) - - # test the --filedriver flag - ADD_H5_TEST (tsplit_file 0 --enable-error-stack --filedriver=split tsplit_file) - ADD_H5_TEST (tfamily 0 --enable-error-stack --filedriver=family tfamily%05d.h5) - ADD_H5_TEST (tmulti 0 --enable-error-stack --filedriver=multi tmulti) - - # test for files with group names which reach > 1024 bytes in size - ADD_H5_TEST (tlarge_objname 0 --enable-error-stack -w157 tlarge_objname.h5) - - # test '-A' to suppress data but print attr's - ADD_H5ERR_MASK_TEST (tall-2A 0 --enable-error-stack -A tall.h5) - - # test '-A' to suppress attr's but print data - ADD_H5ERR_MASK_TEST (tall-2A0 0 --enable-error-stack -A 0 tall.h5) - - # test '-r' to print attributes in ASCII instead of decimal - ADD_H5ERR_MASK_TEST (tall-2B 0 --enable-error-stack -A -r tall.h5) - - # test Subsetting - ADD_H5_TEST (tall-4s 0 --enable-error-stack --dataset=/g1/g1.1/dset1.1.1 --start=1,1 --stride=2,3 --count=3,2 --block=1,1 tall.h5) - ADD_H5_TEST (tall-5s 0 --enable-error-stack -d "/g1/g1.1/dset1.1.2[0;2;10;]" tall.h5) - ADD_H5_TEST (tdset-3s 0 --enable-error-stack -d "/dset1[1,1;;;]" tdset.h5) - ADD_H5_TEST (tno-subset 0 --enable-error-stack --no-compact-subset -d "AHFINDERDIRECT::ah_centroid_t[0] it=0 tl=0" tno-subset.h5) - - ADD_H5_TEST (tints4dimsCount2 0 --enable-error-stack -d FourDimInts -s 0,0,0,0 -c 2,2,2,2 tints4dims.h5) - ADD_H5_TEST (tints4dimsBlock2 0 --enable-error-stack -d FourDimInts -s 0,0,0,0 -c 1,1,1,1 -k 2,2,2,2 tints4dims.h5) - ADD_H5_TEST (tints4dimsStride2 0 --enable-error-stack -d FourDimInts -s 0,0,0,0 -S 2,2,2,2 -c 2,2,2,2 tints4dims.h5) - ADD_H5_TEST (tints4dimsCountEq 0 --enable-error-stack -d FourDimInts -s 0,0,0,0 -S 2,2,1,1 -k 1,2,1,1 -c 2,2,4,4 tints4dims.h5) - ADD_H5_TEST (tints4dimsBlockEq 0 --enable-error-stack -d FourDimInts -s 0,0,0,0 -S 2,2,1,1 -c 2,2,1,1 -k 1,2,4,4 tints4dims.h5) - - # test printing characters in ASCII instead of decimal - ADD_H5_TEST (tchar1 0 --enable-error-stack -r tchar.h5) - - # test datatypes in ASCII and UTF8 - ADD_H5_TEST (charsets 0 --enable-error-stack charsets.h5) - - # rev. 2004 - # tests for super block - ADD_H5_TEST (tboot1 0 --enable-error-stack -H -B -d dset tfcontents1.h5) - ADD_H5_TEST (tboot2 0 --enable-error-stack -B tfcontents2.h5) - ADD_H5_TEST (tboot2A 0 --enable-error-stack --boot-block tfcontents2.h5) - ADD_H5_TEST (tboot2B 0 --enable-error-stack --superblock tfcontents2.h5) - ADD_H5_TEST (file_space 0 --enable-error-stack -B file_space.h5) - - # test -p with a non existing dataset - ADD_H5ERR_MASK_TEST (tperror 1 --enable-error-stack -p -d bogus tfcontents1.h5) - - # test for file contents - ADD_H5_TEST (tcontents 0 --enable-error-stack -n tfcontents1.h5) - ADD_H5_TEST (tordercontents1 0 --enable-error-stack -n --sort_by=name --sort_order=ascending tfcontents1.h5) - ADD_H5_TEST (tordercontents2 0 --enable-error-stack -n --sort_by=name --sort_order=descending tfcontents1.h5) - ADD_H5_TEST (tattrcontents1 0 --enable-error-stack -n 1 --sort_order=ascending tall.h5) - ADD_H5_TEST (tattrcontents2 0 --enable-error-stack -n 1 --sort_order=descending tall.h5) - - # tests for storage layout - # compact - ADD_H5_TEST (tcompact 0 --enable-error-stack -H -p -d compact tfilters.h5) - # contiguous - ADD_H5_TEST (tcontiguos 0 --enable-error-stack -H -p -d contiguous tfilters.h5) - # chunked - ADD_H5_TEST (tchunked 0 --enable-error-stack -H -p -d chunked tfilters.h5) - # external - ADD_H5_TEST (texternal 0 --enable-error-stack -H -p -d external tfilters.h5) - - # fill values - ADD_H5_TEST (tfill 0 --enable-error-stack -p tfvalues.h5) - - # several datatype, with references , print path - ADD_H5_TEST (treference 0 --enable-error-stack tattr2.h5) - - # escape/not escape non printable characters - ADD_H5_TEST (tstringe 0 --enable-error-stack -e tstr3.h5) - ADD_H5_TEST (tstring 0 --enable-error-stack tstr3.h5) - # char data as ASCII with non escape - ADD_H5_TEST (tstring2 0 --enable-error-stack -r -d str4 tstr3.h5) - - # array indices print/not print - ADD_H5_TEST (tindicesyes 0 --enable-error-stack taindices.h5) - ADD_H5_TEST (tindicesno 0 --enable-error-stack -y taindices.h5) - - ########## array indices with subsetting - # 1D case - ADD_H5_TEST (tindicessub1 0 --enable-error-stack -d 1d -s 1 -S 10 -c 2 -k 3 taindices.h5) - - # 2D case - ADD_H5_TEST (tindicessub2 0 --enable-error-stack -d 2d -s 1,2 -S 3,3 -c 3,2 -k 2,2 taindices.h5) - - # 3D case - ADD_H5_TEST (tindicessub3 0 --enable-error-stack -d 3d -s 0,1,2 -S 1,3,3 -c 2,2,2 -k 1,2,2 taindices.h5) - - # 4D case - ADD_H5_TEST (tindicessub4 0 --enable-error-stack -d 4d -s 0,0,1,2 -c 2,2,3,2 -S 1,1,3,3 -k 1,1,2,2 taindices.h5) - - # Exceed the dimensions for subsetting - ADD_H5_TEST (texceedsubstart 1 --enable-error-stack -d 1d -s 1,3 taindices.h5) - ADD_H5_TEST (texceedsubcount 1 --enable-error-stack -d 1d -c 1,3 taindices.h5) - ADD_H5_TEST (texceedsubstride 1 --enable-error-stack -d 1d -S 1,3 taindices.h5) - ADD_H5_TEST (texceedsubblock 1 --enable-error-stack -d 1d -k 1,3 taindices.h5) - - # tests for filters - # SZIP - ADD_H5_TEST (tszip 0 --enable-error-stack -H -p -d szip tfilters.h5) - - # deflate - ADD_H5_TEST (tdeflate 0 --enable-error-stack -H -p -d deflate tfilters.h5) - - # shuffle - ADD_H5_TEST (tshuffle 0 --enable-error-stack -H -p -d shuffle tfilters.h5) - - # fletcher32 - ADD_H5_TEST (tfletcher32 0 --enable-error-stack -H -p -d fletcher32 tfilters.h5) - - # nbit - ADD_H5_TEST (tnbit 0 --enable-error-stack -H -p -d nbit tfilters.h5) - - # scaleoffset - ADD_H5_TEST (tscaleoffset 0 --enable-error-stack -H -p -d scaleoffset tfilters.h5) - - # all - ADD_H5_TEST (tallfilters 0 --enable-error-stack -H -p -d all tfilters.h5) - - # user defined - ADD_H5_TEST (tuserfilter 0 --enable-error-stack -H -p -d myfilter tfilters.h5) - - -# See which filters are usable (and skip tests for filters we -# don't have). Do this by searching H5pubconf.h to see which -# filters are defined. - -# detect whether the encoder is present. - if (H5_HAVE_FILTER_DEFLATE) - set (USE_FILTER_DEFLATE "true") - endif (H5_HAVE_FILTER_DEFLATE) - - if (H5_HAVE_FILTER_SZIP) - set (USE_FILTER_SZIP "true") - endif (H5_HAVE_FILTER_SZIP) - - if (USE_FILTER_DEFLATE) - # data read internal filters - ADD_H5_TEST (treadintfilter 0 --enable-error-stack -d deflate -d shuffle -d fletcher32 -d nbit -d scaleoffset tfilters.h5) - if (HDF5_ENABLE_SZIP_SUPPORT) - # data read all filters - ADD_H5_TEST (treadfilter 0 --enable-error-stack -d all -d szip tfilters.h5) - endif (HDF5_ENABLE_SZIP_SUPPORT) - endif (USE_FILTER_DEFLATE) - - # test for displaying objects with very long names - ADD_H5_TEST (tlonglinks 0 --enable-error-stack tlonglinks.h5) - - # dimensions over 4GB, print boundary - ADD_H5_TEST (tbigdims 0 --enable-error-stack -d dset4gb -s 4294967284 -c 22 tbigdims.h5) - - # hyperslab read - ADD_H5_TEST (thyperslab 0 --enable-error-stack thyperslab.h5) - - # test for displaying dataset and attribute of null space - ADD_H5_TEST (tnullspace 0 --enable-error-stack tnullspace.h5) - - # test for displaying dataset and attribute of space with 0 dimension size - ADD_H5_TEST (zerodim 0 --enable-error-stack zerodim.h5) - - # test for long double (some systems do not have long double) - #ADD_H5_TEST (tldouble 0 --enable-error-stack tldouble.h5) - - # test for vms - ADD_H5_TEST (tvms 0 --enable-error-stack tvms.h5) - - # test for binary output - ADD_H5_TEST (tbin1LE 0 --enable-error-stack -d integer -o tbin1LE.bin -b LE tbinary.h5) - - # test for string binary output - ADD_H5_EXPORT_TEST (tstr2bin2 tstr2.h5 0 --enable-error-stack -d /g2/dset2 -b -o) - ADD_H5_EXPORT_TEST (tstr2bin6 tstr2.h5 0 --enable-error-stack -d /g6/dset6 -b -o) - - # NATIVE default. the NATIVE test can be validated with h5import/h5diff - ADD_H5_TEST_IMPORT (tbin1 out1D tbinary.h5 0 --enable-error-stack -d integer -b) - - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - ADD_H5_TEST (tbin2 0 --enable-error-stack -b BE -d float -o tbin2.bin tbinary.h5) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - - # the NATIVE test can be validated with h5import/h5diff - ADD_H5_TEST_IMPORT (tbin3 out3D tbinary.h5 0 --enable-error-stack -d integer -b NATIVE) - - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - ADD_H5_TEST (tbin4 0 --enable-error-stack -d double -b FILE -o tbin4.bin tbinary.h5) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - - # test for dataset region references - ADD_H5_TEST (tdatareg 0 --enable-error-stack tdatareg.h5) - ADD_H5ERR_MASK_TEST (tdataregR 0 --enable-error-stack -R tdatareg.h5) - ADD_H5_TEST (tattrreg 0 --enable-error-stack tattrreg.h5) - ADD_H5ERR_MASK_TEST (tattrregR 0 -R --enable-error-stack tattrreg.h5) - ADD_H5_EXPORT_TEST (tbinregR tdatareg.h5 0 --enable-error-stack -d /Dataset1 -s 0 -R -y -o) - - # tests for group creation order - # "1" tracked, "2" name, root tracked - ADD_H5_TEST (tordergr1 0 --enable-error-stack --group=1 --sort_by=creation_order --sort_order=ascending tordergr.h5) - ADD_H5_TEST (tordergr2 0 --enable-error-stack --group=1 --sort_by=creation_order --sort_order=descending tordergr.h5) - ADD_H5_TEST (tordergr3 0 --enable-error-stack -g 2 -q name -z ascending tordergr.h5) - ADD_H5_TEST (tordergr4 0 --enable-error-stack -g 2 -q name -z descending tordergr.h5) - ADD_H5_TEST (tordergr5 0 --enable-error-stack -q creation_order tordergr.h5) - - # tests for attribute order - ADD_H5_TEST (torderattr1 0 --enable-error-stack -H --sort_by=name --sort_order=ascending torderattr.h5) - ADD_H5_TEST (torderattr2 0 --enable-error-stack -H --sort_by=name --sort_order=descending torderattr.h5) - ADD_H5_TEST (torderattr3 0 --enable-error-stack -H --sort_by=creation_order --sort_order=ascending torderattr.h5) - ADD_H5_TEST (torderattr4 0 --enable-error-stack -H --sort_by=creation_order --sort_order=descending torderattr.h5) - - # tests for link references and order - ADD_H5ERR_MASK_TEST (torderlinks1 0 --enable-error-stack --sort_by=name --sort_order=ascending tfcontents1.h5) - ADD_H5ERR_MASK_TEST (torderlinks2 0 --enable-error-stack --sort_by=name --sort_order=descending tfcontents1.h5) - - # tests for floating point user defined printf format - ADD_H5_TEST (tfpformat 0 --enable-error-stack -m %.7f tfpformat.h5) - - # tests for traversal of external links - ADD_H5ERR_MASK_TEST (textlinksrc 0 --enable-error-stack textlinksrc.h5) - ADD_H5ERR_MASK_TEST (textlinkfar 0 --enable-error-stack textlinkfar.h5) - - # test for dangling external links - ADD_H5ERR_MASK_TEST (textlink 0 --enable-error-stack textlink.h5) - - # test for error stack display (BZ2048) - ADD_H5ERR_MASK_ENV_TEST (filter_fail 1 "HDF5_PLUGIN_PRELOAD" "::" --enable-error-stack filter_fail.h5) - - # test for -o -y for dataset with attributes - ADD_H5_TEST_EXPORT (tall-6 tall.h5 0 --enable-error-stack -d /g1/g1.1/dset1.1.1 -y -o) - - # test for non-existing file - ADD_H5_TEST (non_existing 1 --enable-error-stack tgroup.h5 non_existing.h5) diff --git a/tools/h5dump/CMakeTestsPBITS.cmake b/tools/h5dump/CMakeTestsPBITS.cmake deleted file mode 100644 index 681479a..0000000 --- a/tools/h5dump/CMakeTestsPBITS.cmake +++ /dev/null @@ -1,340 +0,0 @@ - -############################################################################## -############################################################################## -### T E S T I N G ### -############################################################################## -############################################################################## - - # -------------------------------------------------------------------- - # Packed Bits - # -------------------------------------------------------------------- - #-- Copy all the HDF5 files from the test directory into the source directory - set (HDF5_REFERENCE_PBITS - tnofilename-with-packed-bits.ddl - tpbitsArray.ddl - tpbitsCompound.ddl - tpbitsIncomplete.ddl - tpbitsLengthExceeded.ddl - tpbitsCharLengthExceeded.ddl - tpbitsIntLengthExceeded.ddl - tpbitsLongLengthExceeded.ddl - tpbitsLengthPositive.ddl - tpbitsMax.ddl - tpbitsMaxExceeded.ddl - tpbitsOffsetExceeded.ddl - tpbitsCharOffsetExceeded.ddl - tpbitsIntOffsetExceeded.ddl - tpbitsLongOffsetExceeded.ddl - tpbitsOffsetNegative.ddl - tpbitsOverlapped.ddl - tpbitsSigned.ddl - tpbitsUnsigned.ddl - tpbitsSignedInt.ddl - tpbitsUnsignedInt.ddl - tpbitsSignedLong.ddl - tpbitsUnsignedLong.ddl - tpbitsSignedLongLong.ddl - tpbitsUnsignedLongLong.ddl - tpbitsSignedWhole.ddl - tpbitsUnsignedWhole.ddl - tpbitsSignedIntWhole.ddl - tpbitsUnsignedIntWhole.ddl - tpbitsSignedLongWhole.ddl - tpbitsUnsignedLongWhole.ddl - tpbitsSignedLongLongWhole.ddl - tpbitsUnsignedLongLongWhole.ddl - tpbitsSignedLongLongWhole1.ddl - tpbitsUnsignedLongLongWhole1.ddl - tpbitsSignedLongLongWhole63.ddl - tpbitsUnsignedLongLongWhole63.ddl - tpbitsSigned4.ddl - tpbitsUnsigned4.ddl - tpbitsSignedInt8.ddl - tpbitsUnsignedInt8.ddl - tpbitsSignedLong16.ddl - tpbitsUnsignedLong16.ddl - tpbitsSignedLongLong32.ddl - tpbitsUnsignedLongLong32.ddl - tpbitsSigned2.ddl - tpbitsUnsigned2.ddl - tpbitsSignedInt4.ddl - tpbitsUnsignedInt4.ddl - tpbitsSignedLong8.ddl - tpbitsUnsignedLong8.ddl - tpbitsSignedLongLong16.ddl - tpbitsUnsignedLongLong16.ddl - ) - set (HDF5_REFERENCE_TEST_PBITS - ${HDF5_TOOLS_DIR}/testfiles/packedbits.h5 - ${HDF5_TOOLS_DIR}/testfiles/tarray1.h5 - ${HDF5_TOOLS_DIR}/testfiles/tcompound.h5 - ) - set (HDF5_ERROR_REFERENCE_PBITS - tnofilename-with-packed-bits.err - tpbitsCharLengthExceeded.err - tpbitsCharOffsetExceeded.err - tpbitsIncomplete.err - tpbitsIntLengthExceeded.err - tpbitsIntOffsetExceeded.err - tpbitsLengthExceeded.err - tpbitsLengthPositive.err - tpbitsLongLengthExceeded.err - tpbitsLongOffsetExceeded.err - tpbitsMaxExceeded.err - tpbitsOffsetExceeded.err - tpbitsOffsetNegative.err - ) - - foreach (pbits_h5_file ${HDF5_REFERENCE_TEST_PBITS}) - get_filename_component(fname "${pbits_h5_file}" NAME) - HDFTEST_COPY_FILE("${pbits_h5_file}" "${PROJECT_BINARY_DIR}/testfiles/pbits/${fname}" "h5dump_pbits_files") - endforeach (pbits_h5_file ${HDF5_REFERENCE_TEST_PBITS}) - - - foreach (ddl_pbits ${HDF5_REFERENCE_PBITS}) - get_filename_component(fname "${ddl_pbits}" NAME) - HDFTEST_COPY_FILE("${HDF5_TOOLS_SRC_DIR}/testfiles/pbits/${ddl_pbits}" "${PROJECT_BINARY_DIR}/testfiles/pbits/${fname}" "h5dump_pbits_files") - endforeach (ddl_pbits ${HDF5_REFERENCE_PBITS}) - - foreach (ddl_pbits ${HDF5_ERROR_REFERENCE_PBITS}) - get_filename_component(fname "${ddl_pbits}" NAME) - HDFTEST_COPY_FILE("${PROJECT_SOURCE_DIR}/errfiles/${ddl_pbits}" "${PROJECT_BINARY_DIR}/testfiles/pbits/${fname}" "h5dump_pbits_files") - endforeach (ddl_pbits ${HDF5_ERROR_REFERENCE_PBITS}) - add_custom_target(h5dump_pbits_files ALL COMMENT "Copying files needed by h5dump_pbits tests" DEPENDS ${h5dump_pbits_files_list}) - -############################################################################## -############################################################################## -### T H E T E S T S M A C R O S ### -############################################################################## -############################################################################## - - MACRO (ADD_H5_PBITS_TEST resultfile resultcode) - # If using memchecker add tests without using scripts - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME H5DUMP-${resultfile} COMMAND $ ${ARGN}) - set_tests_properties (H5DUMP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/pbits") - if (NOT ${resultcode} STREQUAL "0") - set_tests_properties (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true") - endif () - if (NOT "${last_pbits_test}" STREQUAL "") - set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS ${last_pbits_test}) - endif () - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5DUMP-${resultfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles/pbits" - -D "TEST_OUTPUT=${resultfile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}.ddl" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_PBITS_TEST file) - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## - - if (HDF5_ENABLE_USING_MEMCHECKER) - # Remove any output file left over from previous test run - add_test ( - NAME H5DUMP_PACKED_BITS-clearall-objects - COMMAND ${CMAKE_COMMAND} - -E remove - tnofilename-with-packed-bits.out - tnofilename-with-packed-bits.out.err - tpbitsArray.out - tpbitsArray.out.err - tpbitsCompound.out - tpbitsCompound.out.err - tpbitsIncomplete.out - tpbitsIncomplete.out.err - tpbitsLengthExceeded.out - tpbitsLengthExceeded.out.err - tpbitsCharLengthExceeded.out - tpbitsCharLengthExceeded.out.err - tpbitsIntLengthExceeded.out - tpbitsIntLengthExceeded.out.err - tpbitsLongLengthExceeded.out - tpbitsLongLengthExceeded.out.err - tpbitsLengthPositive.out - tpbitsLengthPositive.out.err - tpbitsMax.out - tpbitsMax.out.err - tpbitsMaxExceeded.out - tpbitsMaxExceeded.out.err - tpbitsOffsetExceeded.out - tpbitsOffsetExceeded.out.err - tpbitsCharOffsetExceeded.out - tpbitsCharOffsetExceeded.out.err - tpbitsIntOffsetExceeded.out - tpbitsIntOffsetExceeded.out.err - tpbitsLongOffsetExceeded.out - tpbitsLongOffsetExceeded.out.err - tpbitsOffsetNegative.out - tpbitsOffsetNegative.out.err - tpbitsOverlapped.out - tpbitsOverlapped.out.err - tpbitsSigned.out - tpbitsSigned.out.err - tpbitsUnsigned.out - tpbitsUnsigned.out.err - tpbitsSignedInt.out - tpbitsSignedInt.out.err - tpbitsUnsignedInt.out - tpbitsUnsignedInt.out.err - tpbitsSignedLong.out - tpbitsSignedLong.out.err - tpbitsUnsignedLong.out - tpbitsUnsignedLong.out.err - tpbitsSignedLongLong.out - tpbitsSignedLongLong.out.err - tpbitsUnsignedLongLong.out - tpbitsUnsignedLongLong.out.err - tpbitsSignedWhole.out - tpbitsSignedWhole.out.err - tpbitsUnsignedWhole.out - tpbitsUnsignedWhole.out.err - tpbitsSignedIntWhole.out - tpbitsSignedIntWhole.out.err - tpbitsUnsignedIntWhole.out - tpbitsUnsignedIntWhole.out.err - tpbitsSignedLongWhole.out - tpbitsSignedLongWhole.out.err - tpbitsUnsignedLongWhole.out - tpbitsUnsignedLongWhole.out.err - tpbitsSignedLongLongWhole.out - tpbitsSignedLongLongWhole.out.err - tpbitsUnsignedLongLongWhole.out - tpbitsUnsignedLongLongWhole.out.err - tpbitsSignedLongLongWhole1.out - tpbitsSignedLongLongWhole1.out.err - tpbitsUnsignedLongLongWhole1.out - tpbitsUnsignedLongLongWhole1.out.err - tpbitsSignedLongLongWhole63.out - tpbitsSignedLongLongWhole63.out.err - tpbitsUnsignedLongLongWhole63.out - tpbitsUnsignedLongLongWhole63.out.err - tpbitsSigned4.out - tpbitsSigned4.out.err - tpbitsUnsigned4.out - tpbitsUnsigned4.out.err - tpbitsSignedInt8.out - tpbitsSignedInt8.out.err - tpbitsUnsignedInt8.out - tpbitsUnsignedInt8.out.err - tpbitsSignedLong16.out - tpbitsSignedLong16.out.err - tpbitsUnsignedLong16.out - tpbitsUnsignedLong16.out.err - tpbitsSignedLongLong32.out - tpbitsSignedLongLong32.out.err - tpbitsUnsignedLongLong32.out - tpbitsUnsignedLongLong32.out.err - tpbitsSigned2.out - tpbitsSigned2.out.err - tpbitsUnsigned2.out - tpbitsUnsigned2.out.err - tpbitsSignedInt4.out - tpbitsSignedInt4.out.err - tpbitsUnsignedInt4.out - tpbitsUnsignedInt4.out.err - tpbitsSignedLong8.out - tpbitsSignedLong8.out.err - tpbitsUnsignedLong8.out - tpbitsUnsignedLong8.out.err - tpbitsSignedLongLong16.out - tpbitsSignedLongLong16.out.err - tpbitsUnsignedLongLong16.out - tpbitsUnsignedLongLong16.out.err - ) - set_tests_properties (H5DUMP_PACKED_BITS-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/pbits") - if (NOT "${last_pbits_test}" STREQUAL "") - set_tests_properties (H5DUMP_PACKED_BITS-clearall-objects PROPERTIES DEPENDS ${last_pbits_test}) - endif (NOT "${last_pbits_test}" STREQUAL "") - set (last_pbits_test "H5DUMP_PACKED_BITS-clearall-objects") - endif (HDF5_ENABLE_USING_MEMCHECKER) - - # test failure handling - # Missing file name - ADD_H5_PBITS_TEST (tnofilename-with-packed-bits 1 --enable-error-stack) - # Limits: - # Maximum number of packed bits is 8 (for now). - # Maximum integer size is 8*sizeof(long long). - # Maximun Offset is Maximum size - 1. - # Maximum Offset+Length is Maximum size. - # Tests: - # Normal operation on both signed and unsigned int datasets. - # Sanity check - # Their rawdata output should be the same. - ADD_H5_PBITS_TEST (tpbitsSignedWhole 0 --enable-error-stack -d /DS08BITS -M 0,8 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsUnsignedWhole 0 --enable-error-stack -d /DU08BITS -M 0,8 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsSignedIntWhole 0 --enable-error-stack -d /DS16BITS -M 0,16 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsUnsignedIntWhole 0 --enable-error-stack -d /DU16BITS -M 0,16 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsSignedLongWhole 0 --enable-error-stack -d /DS32BITS -M 0,32 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsUnsignedLongWhole 0 --enable-error-stack -d /DU32BITS -M 0,32 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsSignedLongLongWhole 0 --enable-error-stack -d /DS64BITS -M 0,64 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsUnsignedLongLongWhole 0 --enable-error-stack -d /DU64BITS -M 0,64 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsSignedLongLongWhole63 0 --enable-error-stack -d /DS64BITS -M 0,63 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsUnsignedLongLongWhole63 0 --enable-error-stack -d /DU64BITS -M 0,63 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsSignedLongLongWhole1 0 --enable-error-stack -d /DS64BITS -M 1,63 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsUnsignedLongLongWhole1 0 --enable-error-stack -d /DU64BITS -M 1,63 packedbits.h5) - # Half sections - ADD_H5_PBITS_TEST (tpbitsSigned4 0 --enable-error-stack -d /DS08BITS -M 0,4,4,4 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsUnsigned4 0 --enable-error-stack -d /DU08BITS -M 0,4,4,4 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsSignedInt8 0 --enable-error-stack -d /DS16BITS -M 0,8,8,8 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsUnsignedInt8 0 --enable-error-stack -d /DU16BITS -M 0,8,8,8 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsSignedLong16 0 --enable-error-stack -d /DS32BITS -M 0,16,16,16 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsUnsignedLong16 0 --enable-error-stack -d /DU32BITS -M 0,16,16,16 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsSignedLongLong32 0 --enable-error-stack -d /DS64BITS -M 0,32,32,32 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsUnsignedLongLong32 0 --enable-error-stack -d /DU64BITS -M 0,32,32,32 packedbits.h5) - # Quarter sections - ADD_H5_PBITS_TEST (tpbitsSigned2 0 --enable-error-stack -d /DS08BITS -M 0,2,2,2,4,2,6,2 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsUnsigned2 0 --enable-error-stack -d /DU08BITS -M 0,2,2,2,4,2,6,2 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsSignedInt4 0 --enable-error-stack -d /DS16BITS -M 0,4,4,4,8,4,12,4 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsUnsignedInt4 0 --enable-error-stack -d /DU16BITS -M 0,4,4,4,8,4,12,4 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsSignedLong8 0 --enable-error-stack -d /DS32BITS -M 0,8,8,8,16,8,24,8 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsUnsignedLong8 0 --enable-error-stack -d /DU32BITS -M 0,8,8,8,16,8,24,8 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsSignedLongLong16 0 --enable-error-stack -d /DS64BITS -M 0,16,16,16,32,16,48,16 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsUnsignedLongLong16 0 --enable-error-stack -d /DU64BITS -M 0,16,16,16,32,16,48,16 packedbits.h5) - # Begin and End - ADD_H5_PBITS_TEST (tpbitsSigned 0 --enable-error-stack -d /DS08BITS -M 0,2,2,6 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsUnsigned 0 --enable-error-stack -d /DU08BITS -M 0,2,2,6 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsSignedInt 0 --enable-error-stack -d /DS16BITS -M 0,2,10,6 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsUnsignedInt 0 --enable-error-stack -d /DU16BITS -M 0,2,10,6 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsSignedLong 0 --enable-error-stack -d /DS32BITS -M 0,2,26,6 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsUnsignedLong 0 --enable-error-stack -d /DU32BITS -M 0,2,26,6 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsSignedLongLong 0 --enable-error-stack -d /DS64BITS -M 0,2,58,6 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsUnsignedLongLong 0 --enable-error-stack -d /DU64BITS -M 0,2,58,6 packedbits.h5) - # Overlapped packed bits. - ADD_H5_PBITS_TEST (tpbitsOverlapped 0 --enable-error-stack -d /DS08BITS -M 0,1,1,1,2,1,0,3 packedbits.h5) - # Maximum number of packed bits. - ADD_H5_PBITS_TEST (tpbitsMax 0 --enable-error-stack -d /DS08BITS -M 0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1 packedbits.h5) - # Compound type. - ADD_H5_PBITS_TEST (tpbitsCompound 0 --enable-error-stack -d /dset1 -M 0,1,1,1 tcompound.h5) - # Array type. - ADD_H5_PBITS_TEST (tpbitsArray 0 --enable-error-stack -d /Dataset1 -M 0,1,1,1 tarray1.h5) - # Test Error handling. - # Too many packed bits requested. Max is 8 for now. - ADD_H5_PBITS_TEST (tpbitsMaxExceeded 1 --enable-error-stack -d /DS08BITS -M 0,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1 packedbits.h5) - # Offset too large. Max is 8*sizeof(long long. - ADD_H5_PBITS_TEST (tpbitsOffsetExceeded 1 --enable-error-stack -d /DS08BITS -M 64,1 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsCharOffsetExceeded 0 --enable-error-stack -d /DS08BITS -M 8,1 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsIntOffsetExceeded 0 --enable-error-stack -d /DS16BITS -M 16,1 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsLongOffsetExceeded 0 --enable-error-stack -d /DS32BITS -M 32,1 packedbits.h5) - # Bad offset, must not be negative. - ADD_H5_PBITS_TEST (tpbitsOffsetNegative 1 --enable-error-stack -d /DS08BITS -M -1,1 packedbits.h5) - # Bad length, must not be positive. - ADD_H5_PBITS_TEST (tpbitsLengthPositive 1 --enable-error-stack -d /DS08BITS -M 4,0 packedbits.h5) - # Offset+Length is too large. Max is 8*sizeof(long long). - ADD_H5_PBITS_TEST (tpbitsLengthExceeded 1 --enable-error-stack -d /DS08BITS -M 37,28 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsCharLengthExceeded 0 --enable-error-stack -d /DS08BITS -M 2,7 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsIntLengthExceeded 0 --enable-error-stack -d /DS16BITS -M 10,7 packedbits.h5) - ADD_H5_PBITS_TEST (tpbitsLongLengthExceeded 0 --enable-error-stack -d /DS32BITS -M 26,7 packedbits.h5) - # Incomplete pair of packed bits request. - ADD_H5_PBITS_TEST (tpbitsIncomplete 1 --enable-error-stack -d /DS08BITS -M 0,2,2,1,0,2,2, packedbits.h5) diff --git a/tools/h5dump/CMakeTestsVDS.cmake b/tools/h5dump/CMakeTestsVDS.cmake deleted file mode 100644 index 32056db..0000000 --- a/tools/h5dump/CMakeTestsVDS.cmake +++ /dev/null @@ -1,233 +0,0 @@ - -############################################################################## -############################################################################## -### T E S T I N G ### -############################################################################## -############################################################################## - - # -------------------------------------------------------------------- - # VDS - # -------------------------------------------------------------------- - #-- Copy all the HDF5 files from the test directory into the source directory - set (HDF5_REFERENCE_VDS - tvds-1.ddl - tvds-2.ddl - tvds-3_1.ddl - tvds-3_2.ddl - tvds-4.ddl - tvds-5.ddl - tvds_layout-1.ddl - tvds_layout-2.ddl - tvds_layout-3_1.ddl - tvds_layout-3_2.ddl - tvds_layout-4.ddl - tvds_layout-5.ddl - vds-first.ddl - vds-gap1.ddl - vds-gap2.ddl - vds_layout-eiger.ddl - vds_layout-maxmin.ddl - ) - set (HDF5_REFERENCE_TEST_VDS - 1_a.h5 - 1_b.h5 - 1_c.h5 - 1_d.h5 - 1_e.h5 - 1_f.h5 - 1_vds.h5 - 2_a.h5 - 2_b.h5 - 2_c.h5 - 2_d.h5 - 2_e.h5 - 2_vds.h5 - 3_1_vds.h5 - 3_2_vds.h5 - 4_0.h5 - 4_1.h5 - 4_2.h5 - 4_vds.h5 - 5_a.h5 - 5_b.h5 - 5_c.h5 - 5_vds.h5 - a.h5 - b.h5 - c.h5 - d.h5 - vds-percival-unlim-maxmin.h5 - f-0.h5 - f-3.h5 - vds-eiger.h5 - ) - set (HDF5_ERROR_REFERENCE_VDS - ) - - foreach (vds_h5_file ${HDF5_REFERENCE_TEST_VDS}) - get_filename_component(fname "${vds_h5_file}" NAME) - HDFTEST_COPY_FILE("${HDF5_TOOLS_SRC_DIR}/testfiles/vds/${vds_h5_file}" "${PROJECT_BINARY_DIR}/testfiles/vds/${fname}" "h5dump_vds_files") - endforeach (vds_h5_file ${HDF5_REFERENCE_TEST_VDS}) - - - foreach (ddl_vds ${HDF5_REFERENCE_VDS}) - get_filename_component(fname "${ddl_vds}" NAME) - HDFTEST_COPY_FILE("${HDF5_TOOLS_SRC_DIR}/testfiles/vds/${ddl_vds}" "${PROJECT_BINARY_DIR}/testfiles/vds/${fname}" "h5dump_vds_files") - endforeach (ddl_vds ${HDF5_REFERENCE_VDS}) - - foreach (ddl_vds ${HDF5_ERROR_REFERENCE_VDS}) - get_filename_component(fname "${ddl_vds}" NAME) - HDFTEST_COPY_FILE("${PROJECT_SOURCE_DIR}/errfiles/${ddl_vds}" "${PROJECT_BINARY_DIR}/testfiles/vds/${fname}" "h5dump_vds_files") - endforeach (ddl_vds ${HDF5_ERROR_REFERENCE_VDS}) - add_custom_target(h5dump_vds_files ALL COMMENT "Copying files needed by h5dump_vds tests" DEPENDS ${h5dump_vds_files_list}) - -############################################################################## -############################################################################## -### T H E T E S T S M A C R O S ### -############################################################################## -############################################################################## - - MACRO (ADD_H5_VDS_TEST resultfile resultcode) - # If using memchecker add tests without using scripts - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME H5DUMP-${resultfile} COMMAND $ ${ARGN}) - set_tests_properties (H5DUMP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/vds") - if (NOT ${resultcode} STREQUAL "0") - set_tests_properties (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true") - endif () - if (NOT "${last_vds_test}" STREQUAL "") - set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS ${last_VDS_test}) - endif () - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5DUMP-${resultfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles/vds" - -D "TEST_OUTPUT=${resultfile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}.ddl" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_VDS_TEST file) - - MACRO (ADD_H5_VDS_LAYOUT resultfile resultcode) - # If using memchecker add tests without using scripts - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME H5DUMP-${resultfile} COMMAND $ -p ${ARGN}) - set_tests_properties (H5DUMP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/vds") - if (NOT ${resultcode} STREQUAL "0") - set_tests_properties (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true") - endif () - if (NOT "${last_vds_test}" STREQUAL "") - set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS ${last_VDS_test}) - endif () - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5DUMP-${resultfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=-p;${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles/vds" - -D "TEST_OUTPUT=${resultfile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}.ddl" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects") - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_VDS_LAYOUT file) - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## - - if (HDF5_ENABLE_USING_MEMCHECKER) - # Remove any output file left over from previous test run - add_test ( - NAME H5DUMP_VDS-clearall-objects - COMMAND ${CMAKE_COMMAND} - -E remove - tvds-1.out - tvds-1.out.err - tvds-2.out - tvds-2.out.err - tvds-3_1.out - tvds-3_1.out.err - tvds-3_2.out - tvds-3_2.out.err - tvds-4.out - tvds-4.out.err - tvds-5.out - tvds-5.out.err - vds-first.out - vds-first.out.err - vds-gap1.out - vds-gap1.out.err - vds-gap2.out - vds-gap2.out.err - tvds_layout-1.out - tvds_layout-1.out.err - tvds_layout-2.out - tvds_layout-2.out.err - tvds_layout-3_1.out - tvds_layout-3_1.out.err - tvds_layout-3_2.out - tvds_layout-3_2.out.err - tvds_layout-4.out - tvds_layout-4.out.err - tvds_layout-5.out - tvds_layout-5.out.err - vds_layout-eiger.out - vds_layout-eiger.out.err - vds_layout-maxmin.out - vds_layout-maxmin.out.err - ) - set_tests_properties (H5DUMP_VDS-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/vds") - if (NOT "${last_vds_test}" STREQUAL "") - set_tests_properties (H5DUMP_VDS-clearall-objects PROPERTIES DEPENDS ${last_vds_test}) - endif (NOT "${last_vds_test}" STREQUAL "") - set (last_VDS_test "H5DUMP_VDS-clearall-objects") - endif (HDF5_ENABLE_USING_MEMCHECKER) - -# See which filters are usable (and skip tests for filters we -# don't have). Do this by searching H5pubconf.h to see which -# filters are defined. - -# detect whether the encoder is present. - if (H5_HAVE_FILTER_DEFLATE) - set (USE_FILTER_DEFLATE "true") - endif (H5_HAVE_FILTER_DEFLATE) - - if (H5_HAVE_FILTER_SZIP) - set (USE_FILTER_SZIP "true") - endif (H5_HAVE_FILTER_SZIP) - - # Data read - if (USE_FILTER_DEFLATE) - ADD_H5_VDS_TEST (tvds-1 0 --enable-error-stack 1_vds.h5) - ADD_H5_VDS_TEST (tvds-2 0 --enable-error-stack 2_vds.h5) - ADD_H5_VDS_TEST (tvds-3_1 0 --enable-error-stack 3_1_vds.h5) - ADD_H5_VDS_TEST (tvds-3_2 0 --enable-error-stack 3_2_vds.h5) - ADD_H5_VDS_TEST (tvds-4 0 --enable-error-stack 4_vds.h5) - ADD_H5_VDS_TEST (tvds-5 0 --enable-error-stack 5_vds.h5) - ADD_H5_VDS_TEST (vds-first 0 --vds-view-first-missing --enable-error-stack vds-percival-unlim-maxmin.h5) - ADD_H5_VDS_TEST (vds-gap1 0 -d /VDS-Eiger --vds-gap-size=1 --enable-error-stack vds-eiger.h5) - ADD_H5_VDS_TEST (vds-gap2 0 --vds-gap-size=2 --enable-error-stack vds-eiger.h5) - endif (USE_FILTER_DEFLATE) - - # Layout read - if (USE_FILTER_DEFLATE) - ADD_H5_VDS_LAYOUT (tvds_layout-1 0 --enable-error-stack 1_vds.h5) - ADD_H5_VDS_LAYOUT (tvds_layout-2 0 --enable-error-stack 2_vds.h5) - ADD_H5_VDS_LAYOUT (tvds_layout-3_1 0 --enable-error-stack 3_1_vds.h5) - ADD_H5_VDS_LAYOUT (tvds_layout-3_2 0 --enable-error-stack 3_2_vds.h5) - ADD_H5_VDS_LAYOUT (tvds_layout-4 0 --enable-error-stack 4_vds.h5) - ADD_H5_VDS_LAYOUT (tvds_layout-5 0 --enable-error-stack 5_vds.h5) - ADD_H5_VDS_LAYOUT (vds_layout-eiger 0 --enable-error-stack vds-eiger.h5) - ADD_H5_VDS_LAYOUT (vds_layout-maxmin 0 --enable-error-stack vds-percival-unlim-maxmin.h5) - endif (USE_FILTER_DEFLATE) diff --git a/tools/h5dump/CMakeTestsXML.cmake b/tools/h5dump/CMakeTestsXML.cmake deleted file mode 100644 index 79d3ff8..0000000 --- a/tools/h5dump/CMakeTestsXML.cmake +++ /dev/null @@ -1,414 +0,0 @@ - -############################################################################## -############################################################################## -### T E S T I N G ### -############################################################################## -############################################################################## - - # - # copy XML test files from source dir to test dir - # - set (HDF5_XML_REFERENCE_TEST_FILES - ${HDF5_TOOLS_DIR}/testfiles/tall.h5 - ${HDF5_TOOLS_DIR}/testfiles/tarray1.h5 - ${HDF5_TOOLS_DIR}/testfiles/tarray2.h5 - ${HDF5_TOOLS_DIR}/testfiles/tarray3.h5 - ${HDF5_TOOLS_DIR}/testfiles/tarray6.h5 - ${HDF5_TOOLS_DIR}/testfiles/tarray7.h5 - ${HDF5_TOOLS_DIR}/testfiles/tattr.h5 - ${HDF5_TOOLS_DIR}/testfiles/tbitfields.h5 - ${HDF5_TOOLS_DIR}/testfiles/tcompound.h5 - ${HDF5_TOOLS_DIR}/testfiles/tcompound2.h5 - ${HDF5_TOOLS_DIR}/testfiles/tcompound_complex.h5 - ${HDF5_TOOLS_DIR}/testfiles/tdatareg.h5 - ${HDF5_TOOLS_DIR}/testfiles/tdset.h5 - ${HDF5_TOOLS_DIR}/testfiles/tdset2.h5 - ${HDF5_TOOLS_DIR}/testfiles/tempty.h5 - ${HDF5_TOOLS_DIR}/testfiles/tenum.h5 - ${HDF5_TOOLS_DIR}/testfiles/textlink.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfpformat.h5 - ${HDF5_TOOLS_DIR}/testfiles/tgroup.h5 - ${HDF5_TOOLS_DIR}/testfiles/thlink.h5 - ${HDF5_TOOLS_DIR}/testfiles/tloop.h5 - ${HDF5_TOOLS_DIR}/testfiles/tloop2.h5 - ${HDF5_TOOLS_DIR}/testfiles/tmany.h5 - ${HDF5_TOOLS_DIR}/testfiles/tname-amp.h5 - ${HDF5_TOOLS_DIR}/testfiles/tname-apos.h5 - ${HDF5_TOOLS_DIR}/testfiles/tname-gt.h5 - ${HDF5_TOOLS_DIR}/testfiles/tname-lt.h5 - ${HDF5_TOOLS_DIR}/testfiles/tname-quot.h5 - ${HDF5_TOOLS_DIR}/testfiles/tname-sp.h5 - ${HDF5_TOOLS_DIR}/testfiles/tnamed_dtype_attr.h5 - ${HDF5_TOOLS_DIR}/testfiles/tnestedcomp.h5 - ${HDF5_TOOLS_DIR}/testfiles/tnodata.h5 - ${HDF5_TOOLS_DIR}/testfiles/tobjref.h5 - ${HDF5_TOOLS_DIR}/testfiles/topaque.h5 - ${HDF5_TOOLS_DIR}/testfiles/torderattr.h5 - ${HDF5_TOOLS_DIR}/testfiles/tref.h5 - ${HDF5_TOOLS_DIR}/testfiles/tref-escapes.h5 - ${HDF5_TOOLS_DIR}/testfiles/tref-escapes-at.h5 - ${HDF5_TOOLS_DIR}/testfiles/tsaf.h5 - ${HDF5_TOOLS_DIR}/testfiles/tslink.h5 - ${HDF5_TOOLS_DIR}/testfiles/tstring.h5 - ${HDF5_TOOLS_DIR}/testfiles/tstring-at.h5 - ${HDF5_TOOLS_DIR}/testfiles/tstr.h5 - ${HDF5_TOOLS_DIR}/testfiles/tstr2.h5 - ${HDF5_TOOLS_DIR}/testfiles/tudlink.h5 - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes1.h5 - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes2.h5 - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes3.h5 - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes4.h5 - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes5.h5 - ${HDF5_TOOLS_DIR}/testfiles/tvlstr.h5 - ) - set (HDF5_XML_REFERENCE_FILES - ${HDF5_TOOLS_DIR}/testfiles/tall.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tall-2A.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tarray1.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tarray2.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tarray3.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tarray6.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tarray7.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tattr.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tbitfields.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tcompound_complex.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tcompound.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tcompound2.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tdatareg.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tdset.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tdset2.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tempty.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tempty-dtd.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tempty-dtd-2.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tempty-dtd-uri.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tempty-nons.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tempty-nons-2.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tempty-nons-uri.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tempty-ns.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tempty-ns-2.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tenum.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/textlink.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tfpformat.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tgroup.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/thlink.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tloop.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tloop2.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tmany.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tname-amp.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tname-apos.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tnamed_dtype_attr.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tname-gt.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tname-lt.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tname-quot.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tname-sp.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tnestedcomp.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tnodata.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tobjref.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/topaque.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/torderattr1.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/torderattr2.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/torderattr3.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/torderattr4.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tref.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tref-escapes.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tref-escapes-at.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tsaf.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tslink.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tstr.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tstr2.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tstring.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tstring-at.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tudlink.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes1.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes2.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes3.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes4.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes5.h5.xml - ${HDF5_TOOLS_DIR}/testfiles/tvlstr.h5.xml - ) - - foreach (tst_xml_h5_file ${HDF5_XML_REFERENCE_TEST_FILES}) - get_filename_component(fname "${tst_xml_h5_file}" NAME) - HDFTEST_COPY_FILE("${tst_xml_h5_file}" "${PROJECT_BINARY_DIR}/testfiles/xml/${fname}" "h5dump_xml_files") - endforeach (tst_xml_h5_file ${HDF5_XML_REFERENCE_TEST_FILES}) - - foreach (tst_xml_other_file ${HDF5_XML_REFERENCE_FILES}) - get_filename_component(fname "${tst_xml_other_file}" NAME) - HDFTEST_COPY_FILE("${tst_xml_other_file}" "${PROJECT_BINARY_DIR}/testfiles/xml/${fname}" "h5dump_xml_files") - endforeach (tst_xml_other_file ${HDF5_XML_REFERENCE_FILES}) - add_custom_target(h5dump_xml_files ALL COMMENT "Copying files needed by h5dump_xml tests" DEPENDS ${h5dump_xml_files_list}) - -############################################################################## -############################################################################## -### T H E T E S T S M A C R O S ### -############################################################################## -############################################################################## - - MACRO (ADD_XML_SKIP_H5_TEST skipresultfile skipresultcode testtype) - if (${testtype} STREQUAL "SKIP") - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5DUMP-XML-${skipresultfile}-SKIPPED - COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${skipresultfile}.xml --xml ${ARGN}" - ) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - else (${testtype} STREQUAL "SKIP") - ADD_XML_H5_TEST (${skipresultfile} ${skipresultcode} ${ARGN}) - endif (${testtype} STREQUAL "SKIP") - ENDMACRO (ADD_XML_SKIP_H5_TEST) - - MACRO (ADD_XML_H5_TEST resultfile resultcode) - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME H5DUMP-XML-${resultfile} COMMAND $ --xml ${ARGN}) - set_tests_properties (H5DUMP-XML-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/xml") - if (NOT ${resultcode} STREQUAL "0") - set_tests_properties (H5DUMP-XML-${resultfile} PROPERTIES WILL_FAIL "true") - endif () - if (NOT "${last_xml_test}" STREQUAL "") - set_tests_properties (H5DUMP-XML-${resultfile} PROPERTIES DEPENDS ${last_xml_test}) - endif () - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5DUMP-XML-${resultfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=--xml;${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles/xml" - -D "TEST_OUTPUT=${resultfile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}.xml" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_XML_H5_TEST file) - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## - - if (HDF5_ENABLE_USING_MEMCHECKER) - # Remove any output file left over from previous test run - add_test ( - NAME H5DUMP-XML-clearall-objects - COMMAND ${CMAKE_COMMAND} - -E remove - tall.h5.out - tall.h5.out.err - tall-2A.h5.out - tall-2A.h5.out.err - tarray1.h5.out - tarray1.h5.out.err - tarray2.h5.out - tarray2.h5.out.err - tarray3.h5.out - tarray3.h5.out.err - tarray6.h5.out - tarray6.h5.out.err - tarray7.h5.out - tarray7.h5.out.err - tattr.h5.out - tattr.h5.out.err - tbitfields.h5.out - tbitfields.h5.out.err - tcompound.h5.out - tcompound.h5.out.err - tcompound2.h5.out - tcompound2.h5.out.err - tcompound_complex.h5.out - tcompound_complex.h5.out.err - tdatareg.h5.out - tdatareg.h5.out.err - tdset.h5.out - tdset.h5.out.err - tdset2.h5.out - tdset2.h5.out.err - tempty-dtd-2.h5.out - tempty-dtd-2.h5.out.err - tempty-dtd-uri.h5.out - tempty-dtd-uri.h5.out.err - tempty-dtd.h5.out - tempty-dtd.h5.out.err - tempty-nons-2.h5.out - tempty-nons-2.h5.out.err - tempty-nons-uri.h5.out - tempty-nons-uri.h5.out.err - tempty-nons.h5.out - tempty-nons.h5.out.err - tempty-ns-2.h5.out - tempty-ns-2.h5.out.err - tempty-ns.h5.out - tempty-ns.h5.out.err - tempty.h5.out - tempty.h5.out.err - tenum.h5.out - tenum.h5.out.err - textlink.h5.out - textlink.h5.out.err - tfpformat.h5.out - tfpformat.h5.out.err - tgroup.h5.out - tgroup.h5.out.err - thlink.h5.out - thlink.h5.out.err - tloop.h5.out - tloop.h5.out.err - tloop2.h5.out - tloop2.h5.out.err - tmany.h5.out - tmany.h5.out.err - tname-amp.h5.out - tname-amp.h5.out.err - tname-apos.h5.out - tname-apos.h5.out.err - tname-gt.h5.out - tname-gt.h5.out.err - tname-lt.h5.out - tname-lt.h5.out.err - tname-quot.h5.out - tname-quot.h5.out.err - tname-sp.h5.out - tname-sp.h5.out.err - tnamed_dtype_attr.h5.out - tnamed_dtype_attr.h5.out.err - tnestedcomp.h5.out - tnestedcomp.h5.out.err - tnodata.h5.out - tnodata.h5.out.err - tnoname.h5.out - tnoname.h5.out.err - tobjref.h5.out - tobjref.h5.out.err - topaque.h5.out - topaque.h5.out.err - torderattr1.h5.out - torderattr1.h5.out.err - torderattr2.h5.out - torderattr2.h5.out.err - torderattr3.h5.out - torderattr3.h5.out.err - torderattr4.h5.out - torderattr4.h5.out.err - tref-escapes-at.h5.out - tref-escapes-at.h5.out.err - tref-escapes.h5.out - tref-escapes.h5.out.err - tref.h5.out - tref.h5.out.err - tsaf.h5.out - tsaf.h5.out.err - tslink.h5.out - tslink.h5.out.err - tstr.h5.out - tstr.h5.out.err - tstr2.h5.out - tstr2.h5.out.err - tstring.h5.out - tstring.h5.out.err - tstring-at.h5.out - tstring-at.h5.out.err - tudlink.h5.out - tudlink.h5.out.err - tvldtypes1.h5.out - tvldtypes1.h5.out.err - tvldtypes2.h5.out - tvldtypes2.h5.out.err - tvldtypes3.h5.out - tvldtypes3.h5.out.err - tvldtypes4.h5.out - tvldtypes4.h5.out.err - tvldtypes5.h5.out - tvldtypes5.h5.out.err - tvlstr.h5.out - tvlstr.h5.out.err - ) - set_tests_properties (H5DUMP-XML-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/xml") - if (NOT "${last_xml_test}" STREQUAL "") - set_tests_properties (H5DUMP-XML-clearall-objects PROPERTIES DEPENDS ${last_xml_test}) - endif (NOT "${last_xml_test}" STREQUAL "") - set (last_test "H5DUMP-XML-clearall-objects") - endif (HDF5_ENABLE_USING_MEMCHECKER) - - ########## test XML - ADD_XML_H5_TEST (tall.h5 0 tall.h5) - ADD_XML_H5_TEST (tattr.h5 0 tattr.h5) - ADD_XML_H5_TEST (tbitfields.h5 0 tbitfields.h5) - ADD_XML_H5_TEST (tcompound.h5 0 tcompound.h5) - ADD_XML_H5_TEST (tcompound2.h5 0 tcompound2.h5) - ADD_XML_H5_TEST (tdatareg.h5 0 tdatareg.h5) - ADD_XML_H5_TEST (tdset.h5 0 tdset.h5) - ADD_XML_H5_TEST (tdset2.h5 0 tdset2.h5) - ADD_XML_H5_TEST (tenum.h5 0 tenum.h5) - ADD_XML_H5_TEST (tgroup.h5 0 tgroup.h5) - ADD_XML_H5_TEST (thlink.h5 0 thlink.h5) - ADD_XML_H5_TEST (tloop.h5 0 tloop.h5) - ADD_XML_H5_TEST (tloop2.h5 0 tloop2.h5) - ADD_XML_H5_TEST (tmany.h5 0 tmany.h5) - ADD_XML_H5_TEST (tnestedcomp.h5 0 tnestedcomp.h5) - ADD_XML_H5_TEST (tcompound_complex.h5 0 tcompound_complex.h5) - ADD_XML_H5_TEST (tobjref.h5 0 tobjref.h5) - ADD_XML_H5_TEST (topaque.h5 0 topaque.h5) - ADD_XML_H5_TEST (tslink.h5 0 tslink.h5) - ADD_XML_H5_TEST (tudlink.h5 0 tudlink.h5) - ADD_XML_H5_TEST (textlink.h5 0 textlink.h5) - ADD_XML_H5_TEST (tstr.h5 0 tstr.h5) - ADD_XML_H5_TEST (tstr2.h5 0 tstr2.h5) - ADD_XML_H5_TEST (tref.h5 0 tref.h5) - ADD_XML_H5_TEST (tname-amp.h5 0 tname-amp.h5) - ADD_XML_H5_TEST (tname-apos.h5 0 tname-apos.h5) - ADD_XML_H5_TEST (tname-gt.h5 0 tname-gt.h5) - ADD_XML_H5_TEST (tname-lt.h5 0 tname-lt.h5) - ADD_XML_H5_TEST (tname-quot.h5 0 tname-quot.h5) - ADD_XML_H5_TEST (tname-sp.h5 0 tname-sp.h5) - ADD_XML_H5_TEST (tstring.h5 0 tstring.h5) - ADD_XML_H5_TEST (tstring-at.h5 0 tstring-at.h5) - ADD_XML_H5_TEST (tref-escapes.h5 0 tref-escapes.h5) - ADD_XML_H5_TEST (tref-escapes-at.h5 0 tref-escapes-at.h5) - ADD_XML_H5_TEST (tnodata.h5 0 tnodata.h5) - ADD_XML_H5_TEST (tarray1.h5 0 tarray1.h5) - ADD_XML_H5_TEST (tarray2.h5 0 tarray2.h5) - ADD_XML_H5_TEST (tarray3.h5 0 tarray3.h5) - ADD_XML_H5_TEST (tarray6.h5 0 tarray6.h5) - ADD_XML_H5_TEST (tarray7.h5 0 tarray7.h5) - ADD_XML_H5_TEST (tvldtypes1.h5 0 tvldtypes1.h5) - ADD_XML_H5_TEST (tvldtypes2.h5 0 tvldtypes2.h5) - ADD_XML_H5_TEST (tvldtypes3.h5 0 tvldtypes3.h5) - ADD_XML_H5_TEST (tvldtypes4.h5 0 tvldtypes4.h5) - ADD_XML_H5_TEST (tvldtypes5.h5 0 tvldtypes5.h5) - ADD_XML_H5_TEST (tvlstr.h5 0 tvlstr.h5) - ADD_XML_H5_TEST (tsaf.h5 0 tsaf.h5) - ADD_XML_H5_TEST (tempty.h5 0 tempty.h5) - ADD_XML_H5_TEST (tnamed_dtype_attr.h5 0 tnamed_dtype_attr.h5) - ##Test dataset and attribute of null space. Commented out: - ## wait until the XML schema is updated for null space. - ## ADD_XML_H5_TEST (tnullspace.h5 0 tnulspace.h5) - ## So is dataspace with 0 dimension size. - ## ADD_XML_H5_TEST (zerodim.h5 0 zerodim.h5) - - # other options for xml - - ADD_XML_H5_TEST (tempty-dtd.h5 0 --use-dtd tempty.h5) - ADD_XML_H5_TEST (tempty-dtd-2.h5 0 -u tempty.h5) - - ADD_XML_H5_TEST (tempty-nons-2.h5 0 --xml-ns=: tempty.h5) - - ## Some of these combinations are syntactically correct but - ## the URLs are dummies - ADD_XML_H5_TEST (tempty-ns.h5 0 -X thing: tempty.h5) - ADD_XML_H5_TEST (tempty-ns-2.h5 0 --xml-ns=thing: tempty.h5) - ADD_XML_H5_TEST (tempty-nons-uri.h5 0 --xml-ns=: --xml-dtd=http://somewhere.net tempty.h5) - ADD_XML_H5_TEST (tempty-dtd-uri.h5 0 --use-dtd --xml-dtd=http://somewhere.net tempty.h5) - - ADD_XML_H5_TEST (tall-2A.h5 0 -A tall.h5) - - - # tests for attribute order - ADD_XML_H5_TEST (torderattr1.h5 0 -H --sort_by=name --sort_order=ascending torderattr.h5) - ADD_XML_H5_TEST (torderattr2.h5 0 -H --sort_by=name --sort_order=descending torderattr.h5) - ADD_XML_H5_TEST (torderattr3.h5 0 -H --sort_by=creation_order --sort_order=ascending torderattr.h5) - ADD_XML_H5_TEST (torderattr4.h5 0 -H --sort_by=creation_order --sort_order=descending torderattr.h5) - - # tests for floating point user defined printf format - ADD_XML_H5_TEST (tfpformat.h5 0 -u -m %.7f tfpformat.h5) - diff --git a/tools/h5dump/Makefile.am b/tools/h5dump/Makefile.am deleted file mode 100644 index 93ba195..0000000 --- a/tools/h5dump/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -## -## Makefile.am -## Run automake to generate a Makefile.in from this file. -# -# HDF5 Library Makefile(.in) -# - -include $(top_srcdir)/config/commence.am - -# Include files in /src directory and /tools/lib directory -AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib - -# Test programs and scripts -TEST_PROG=h5dumpgentest -TEST_SCRIPT=testh5dump.sh testh5dumppbits.sh testh5dumpvds.sh testh5dumpxml.sh - -check_PROGRAMS=$(TEST_PROG) binread -check_SCRIPTS=$(TEST_SCRIPT) -SCRIPT_DEPEND=h5dump$(EXEEXT) - -# Our main target, the h5dump tool. -bin_PROGRAMS=h5dump - -# Add h5dump specific linker flags here -h5dump_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) - -# All the programs depend on the hdf5 and h5tools libraries -LDADD=$(LIBH5TOOLS) $(LIBHDF5) - -# Source files for the program -h5dump_SOURCES=h5dump.c h5dump_ddl.c h5dump_xml.c - -# Temporary files. *.h5 are generated by h5dumpgentest. They should -# copied to the testfiles/ directory if update is required. -CHECK_CLEANFILES+=*.h5 *.bin -DISTCLEANFILES=testh5dump.sh testh5dumppbits.sh testh5dumpxml.sh - -include $(top_srcdir)/config/conclude.am diff --git a/tools/h5dump/binread.c b/tools/h5dump/binread.c deleted file mode 100644 index 74db92c..0000000 --- a/tools/h5dump/binread.c +++ /dev/null @@ -1,97 +0,0 @@ - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include -#include -#include - -/* - This program reads binary output from h5dump (-b option). - To use change the following 3 symbols accordingly. - For example, to read 2 elements of a float type , define - - #define NELMTS 2 - #define TYPE float - #define FORMAT "%f " - -*/ - -#define NELMTS 6 -#define TYPE int -#define FORMAT "%d " - -/*------------------------------------------------------------------------- - * Function: usage - * - * Purpose: Prints a usage message on stderr and then returns. - * - * Return: void - * - * Programmer: Pedro Vicente Nunes - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -usage (void) -{ - fprintf(stderr, "usage: binread FILE_NAME\n"); -} - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: main program. - * - *------------------------------------------------------------------------- - */ - -int -main (int argc, const char *argv[]) -{ - FILE *stream; - size_t numread; - TYPE buf[NELMTS]; - size_t i, nelmts = NELMTS; - char *fname=NULL; - - if (argc != 2) { - usage(); - exit(1); - } - - fname = strdup(argv[1]); - - if((stream = fopen(fname, "rb")) != NULL) { - numread = fread(buf, sizeof( TYPE ), nelmts, stream); - printf("Number of items read = %llu\n", (unsigned long long)numread); - - for (i = 0; i < nelmts; i++) { - printf(FORMAT,buf[i]); - } - printf("\n"); - - fclose(stream); - } - else - printf("File %s could not be opened\n", fname); - - free(fname); - - return 0; -} - diff --git a/tools/h5dump/errfiles/filter_fail.err b/tools/h5dump/errfiles/filter_fail.err deleted file mode 100644 index db21044..0000000 --- a/tools/h5dump/errfiles/filter_fail.err +++ /dev/null @@ -1,24 +0,0 @@ -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Dread(): can't read data - major: Dataset - minor: Read failed - #001: (file name) line (number) in H5D__read(): can't read data - major: Dataset - minor: Read failed - #002: (file name) line (number) in H5D__chunk_read(): unable to read raw data chunk - major: Low-level I/O - minor: Read failed - #003: (file name) line (number) in H5D__chunk_lock(): data pipeline read failed - major: Data filters - minor: Filter operation failed - #004: (file name) line (number) in H5Z_pipeline(): required filter 'filter_fail_test' is not registered - major: Data filters - minor: Read failed - #005: (file name) line (number) in H5PL_load(): required dynamically loaded plugin filter '312' is not available - major: Plugin for dynamically loaded library - minor: Unable to load metadata into cache -h5dump error: unable to print data -H5tools-DIAG: Error detected in HDF5:tools (version (number)) thread (IDs): - #000: (file name) line (number) in h5tools_dump_simple_dset(): H5Dread failed - major: Failure in tools library - minor: error in function diff --git a/tools/h5dump/errfiles/non_existing.err b/tools/h5dump/errfiles/non_existing.err deleted file mode 100644 index f7e3afa..0000000 --- a/tools/h5dump/errfiles/non_existing.err +++ /dev/null @@ -1 +0,0 @@ -h5dump error: unable to open file "non_existing.h5" diff --git a/tools/h5dump/errfiles/tall-1.err b/tools/h5dump/errfiles/tall-1.err deleted file mode 100644 index ab9dbe3..0000000 --- a/tools/h5dump/errfiles/tall-1.err +++ /dev/null @@ -1,25 +0,0 @@ -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Oopen(): unable to open object - major: Object header - minor: Can't open object - #001: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #002: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #003: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #007: (file name) line (number) in H5L_extern_traverse(): unable to open external file, external link file name = 'somefile', temp_file_name = 'somefile' - major: Links - minor: Unable to open file diff --git a/tools/h5dump/errfiles/tall-2A.err b/tools/h5dump/errfiles/tall-2A.err deleted file mode 100644 index ab9dbe3..0000000 --- a/tools/h5dump/errfiles/tall-2A.err +++ /dev/null @@ -1,25 +0,0 @@ -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Oopen(): unable to open object - major: Object header - minor: Can't open object - #001: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #002: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #003: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #007: (file name) line (number) in H5L_extern_traverse(): unable to open external file, external link file name = 'somefile', temp_file_name = 'somefile' - major: Links - minor: Unable to open file diff --git a/tools/h5dump/errfiles/tall-2A0.err b/tools/h5dump/errfiles/tall-2A0.err deleted file mode 100644 index ab9dbe3..0000000 --- a/tools/h5dump/errfiles/tall-2A0.err +++ /dev/null @@ -1,25 +0,0 @@ -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Oopen(): unable to open object - major: Object header - minor: Can't open object - #001: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #002: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #003: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #007: (file name) line (number) in H5L_extern_traverse(): unable to open external file, external link file name = 'somefile', temp_file_name = 'somefile' - major: Links - minor: Unable to open file diff --git a/tools/h5dump/errfiles/tall-2B.err b/tools/h5dump/errfiles/tall-2B.err deleted file mode 100644 index ab9dbe3..0000000 --- a/tools/h5dump/errfiles/tall-2B.err +++ /dev/null @@ -1,25 +0,0 @@ -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Oopen(): unable to open object - major: Object header - minor: Can't open object - #001: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #002: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #003: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #007: (file name) line (number) in H5L_extern_traverse(): unable to open external file, external link file name = 'somefile', temp_file_name = 'somefile' - major: Links - minor: Unable to open file diff --git a/tools/h5dump/errfiles/tarray1_big.err b/tools/h5dump/errfiles/tarray1_big.err deleted file mode 100644 index 7a0fd7b..0000000 --- a/tools/h5dump/errfiles/tarray1_big.err +++ /dev/null @@ -1,31 +0,0 @@ -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Rdereference2(): unable to dereference object - major: References - minor: Unable to initialize object - #001: (file name) line (number) in H5R_dereference(): Undefined reference pointer - major: Invalid arguments to routine - minor: Bad value -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Rdereference2(): unable to dereference object - major: References - minor: Unable to initialize object - #001: (file name) line (number) in H5R_dereference(): Undefined reference pointer - major: Invalid arguments to routine - minor: Bad value -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Rdereference2(): unable to dereference object - major: References - minor: Unable to initialize object - #001: (file name) line (number) in H5R_dereference(): Undefined reference pointer - major: Invalid arguments to routine - minor: Bad value -H5tools-DIAG: Error detected in HDF5:tools (version (number)) thread (IDs): - #000: (file name) line (number) in h5tools_dump_simple_data(): H5Rdereference failed - major: Failure in tools library - minor: error in function - #001: (file name) line (number) in h5tools_dump_simple_data(): H5Rdereference failed - major: Failure in tools library - minor: error in function - #002: (file name) line (number) in h5tools_dump_simple_data(): H5Rdereference failed - major: Failure in tools library - minor: error in function diff --git a/tools/h5dump/errfiles/tattr-3.err b/tools/h5dump/errfiles/tattr-3.err deleted file mode 100644 index ce8ddda..0000000 --- a/tools/h5dump/errfiles/tattr-3.err +++ /dev/null @@ -1,8 +0,0 @@ -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Aopen(): unable to load attribute info from object header for attribute: 'attr' - major: Attribute - minor: Unable to initialize object - #001: (file name) line (number) in H5O_attr_open_by_name(): can't locate attribute: 'attr' - major: Attribute - minor: Object not found -h5dump error: unable to open attribute "attr" diff --git a/tools/h5dump/errfiles/tattrregR.err b/tools/h5dump/errfiles/tattrregR.err deleted file mode 100644 index 9449a6d..0000000 --- a/tools/h5dump/errfiles/tattrregR.err +++ /dev/null @@ -1,21 +0,0 @@ -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Rdereference2(): unable to dereference object - major: References - minor: Unable to initialize object - #001: (file name) line (number) in H5R_dereference(): Undefined reference pointer - major: Invalid arguments to routine - minor: Bad value -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Rdereference2(): unable to dereference object - major: References - minor: Unable to initialize object - #001: (file name) line (number) in H5R_dereference(): Undefined reference pointer - major: Invalid arguments to routine - minor: Bad value -H5tools-DIAG: Error detected in HDF5:tools (version (number)) thread (IDs): - #000: (file name) line (number) in h5tools_dump_simple_data(): H5Rdereference failed - major: Failure in tools library - minor: error in function - #001: (file name) line (number) in h5tools_dump_simple_data(): H5Rdereference failed - major: Failure in tools library - minor: error in function diff --git a/tools/h5dump/errfiles/tcomp-3.err b/tools/h5dump/errfiles/tcomp-3.err deleted file mode 100644 index ee47ee5..0000000 --- a/tools/h5dump/errfiles/tcomp-3.err +++ /dev/null @@ -1,16 +0,0 @@ -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Topen2(): not found - major: Datatype - minor: Object not found - #001: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #002: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #003: (file name) line (number) in H5G_traverse_real(): traversal operator failed - major: Symbol table - minor: Callback failed - #004: (file name) line (number) in H5G_loc_find_cb(): object '#6632' doesn't exist - major: Symbol table - minor: Object not found diff --git a/tools/h5dump/errfiles/tdataregR.err b/tools/h5dump/errfiles/tdataregR.err deleted file mode 100644 index 9449a6d..0000000 --- a/tools/h5dump/errfiles/tdataregR.err +++ /dev/null @@ -1,21 +0,0 @@ -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Rdereference2(): unable to dereference object - major: References - minor: Unable to initialize object - #001: (file name) line (number) in H5R_dereference(): Undefined reference pointer - major: Invalid arguments to routine - minor: Bad value -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Rdereference2(): unable to dereference object - major: References - minor: Unable to initialize object - #001: (file name) line (number) in H5R_dereference(): Undefined reference pointer - major: Invalid arguments to routine - minor: Bad value -H5tools-DIAG: Error detected in HDF5:tools (version (number)) thread (IDs): - #000: (file name) line (number) in h5tools_dump_simple_data(): H5Rdereference failed - major: Failure in tools library - minor: error in function - #001: (file name) line (number) in h5tools_dump_simple_data(): H5Rdereference failed - major: Failure in tools library - minor: error in function diff --git a/tools/h5dump/errfiles/tdset-2.err b/tools/h5dump/errfiles/tdset-2.err deleted file mode 100644 index e594c1b..0000000 --- a/tools/h5dump/errfiles/tdset-2.err +++ /dev/null @@ -1,36 +0,0 @@ -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Dopen2(): unable to open dataset - major: Dataset - minor: Can't open object - #001: (file name) line (number) in H5D__open_name(): not found - major: Dataset - minor: Object not found - #002: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #003: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #004: (file name) line (number) in H5G_traverse_real(): traversal operator failed - major: Symbol table - minor: Callback failed - #005: (file name) line (number) in H5G_loc_find_cb(): object 'dset3' doesn't exist - major: Symbol table - minor: Object not found -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Lget_info(): unable to get link info - major: Links - minor: Object not found - #001: (file name) line (number) in H5L_get_info(): name doesn't exist - major: Symbol table - minor: Object already exists - #002: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #003: (file name) line (number) in H5G_traverse_real(): traversal operator failed - major: Symbol table - minor: Callback failed - #004: (file name) line (number) in H5L_get_info_cb(): name doesn't exist - major: Symbol table - minor: Object not found -h5dump error: unable to get link info from "dset3" diff --git a/tools/h5dump/errfiles/texceedsubblock.err b/tools/h5dump/errfiles/texceedsubblock.err deleted file mode 100644 index 4c87ab9..0000000 --- a/tools/h5dump/errfiles/texceedsubblock.err +++ /dev/null @@ -1 +0,0 @@ -h5dump error: number of block dims (2) exceed dataset dims (1) diff --git a/tools/h5dump/errfiles/texceedsubcount.err b/tools/h5dump/errfiles/texceedsubcount.err deleted file mode 100644 index de1c9d1..0000000 --- a/tools/h5dump/errfiles/texceedsubcount.err +++ /dev/null @@ -1 +0,0 @@ -h5dump error: number of count dims (2) exceed dataset dims (1) diff --git a/tools/h5dump/errfiles/texceedsubstart.err b/tools/h5dump/errfiles/texceedsubstart.err deleted file mode 100644 index 4555224..0000000 --- a/tools/h5dump/errfiles/texceedsubstart.err +++ /dev/null @@ -1 +0,0 @@ -h5dump error: number of start dims (2) exceed dataset dims (1) diff --git a/tools/h5dump/errfiles/texceedsubstride.err b/tools/h5dump/errfiles/texceedsubstride.err deleted file mode 100644 index 32d5725..0000000 --- a/tools/h5dump/errfiles/texceedsubstride.err +++ /dev/null @@ -1 +0,0 @@ -h5dump error: number of stride dims (2) exceed dataset dims (1) diff --git a/tools/h5dump/errfiles/textlink.err b/tools/h5dump/errfiles/textlink.err deleted file mode 100644 index 95556db..0000000 --- a/tools/h5dump/errfiles/textlink.err +++ /dev/null @@ -1,50 +0,0 @@ -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Oopen(): unable to open object - major: Object header - minor: Can't open object - #001: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #002: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #003: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #007: (file name) line (number) in H5L_extern_traverse(): unable to open external file, external link file name = 'filename', temp_file_name = 'filename' - major: Links - minor: Unable to open file -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Oopen(): unable to open object - major: Object header - minor: Can't open object - #001: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #002: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #003: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #007: (file name) line (number) in H5L_extern_traverse(): unable to open external file, external link file name = 'anotherfile', temp_file_name = 'anotherfile' - major: Links - minor: Unable to open file diff --git a/tools/h5dump/errfiles/textlinkfar.err b/tools/h5dump/errfiles/textlinkfar.err deleted file mode 100644 index 5aa7f87..0000000 --- a/tools/h5dump/errfiles/textlinkfar.err +++ /dev/null @@ -1,243 +0,0 @@ -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Oopen(): unable to open object - major: Object header - minor: Can't open object - #001: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #002: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #003: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #007: (file name) line (number) in H5L_extern_traverse(): unable to open object - major: Symbol table - minor: Can't open object - #008: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #009: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #010: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #011: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #012: (file name) line (number) in H5G__traverse_special(): symbolic link traversal failed - major: Links - minor: Link traversal failure - #013: (file name) line (number) in H5G_traverse_slink(): unable to follow symbolic link - major: Symbol table - minor: Object not found - #014: (file name) line (number) in H5G_traverse_real(): traversal operator failed - major: Symbol table - minor: Callback failed - #015: (file name) line (number) in H5G_traverse_slink_cb(): component not found - major: Symbol table - minor: Object not found -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #001: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #002: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #003: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #004: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #005: (file name) line (number) in H5L_extern_traverse(): unable to open object - major: Symbol table - minor: Can't open object - #006: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #007: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #008: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #009: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #010: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #011: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #012: (file name) line (number) in H5L_extern_traverse(): unable to open object - major: Symbol table - minor: Can't open object - #013: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #014: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #015: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #016: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #017: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #018: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #019: (file name) line (number) in H5L_extern_traverse(): unable to open object - major: Symbol table - minor: Can't open object - #020: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #021: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #022: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #023: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #024: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #025: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #026: (file name) line (number) in H5L_extern_traverse(): unable to open object - major: Symbol table - minor: Can't open object - #027: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #028: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #029: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #030: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #031: (file name) line (number) in H5G__traverse_special(): too many links - major: Links - minor: Too many soft links in path -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #001: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #002: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #003: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #004: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #005: (file name) line (number) in H5L_extern_traverse(): unable to open object - major: Symbol table - minor: Can't open object - #006: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #007: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #008: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #009: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #010: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #011: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #012: (file name) line (number) in H5L_extern_traverse(): unable to open object - major: Symbol table - minor: Can't open object - #013: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #014: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #015: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #016: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #017: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #018: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #019: (file name) line (number) in H5L_extern_traverse(): unable to open object - major: Symbol table - minor: Can't open object - #020: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #021: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #022: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #023: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #024: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #025: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #026: (file name) line (number) in H5L_extern_traverse(): unable to open object - major: Symbol table - minor: Can't open object - #027: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #028: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #029: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #030: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #031: (file name) line (number) in H5G__traverse_special(): too many links - major: Links - minor: Too many soft links in path diff --git a/tools/h5dump/errfiles/textlinksrc.err b/tools/h5dump/errfiles/textlinksrc.err deleted file mode 100644 index 5aa7f87..0000000 --- a/tools/h5dump/errfiles/textlinksrc.err +++ /dev/null @@ -1,243 +0,0 @@ -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Oopen(): unable to open object - major: Object header - minor: Can't open object - #001: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #002: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #003: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #007: (file name) line (number) in H5L_extern_traverse(): unable to open object - major: Symbol table - minor: Can't open object - #008: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #009: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #010: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #011: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #012: (file name) line (number) in H5G__traverse_special(): symbolic link traversal failed - major: Links - minor: Link traversal failure - #013: (file name) line (number) in H5G_traverse_slink(): unable to follow symbolic link - major: Symbol table - minor: Object not found - #014: (file name) line (number) in H5G_traverse_real(): traversal operator failed - major: Symbol table - minor: Callback failed - #015: (file name) line (number) in H5G_traverse_slink_cb(): component not found - major: Symbol table - minor: Object not found -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #001: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #002: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #003: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #004: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #005: (file name) line (number) in H5L_extern_traverse(): unable to open object - major: Symbol table - minor: Can't open object - #006: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #007: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #008: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #009: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #010: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #011: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #012: (file name) line (number) in H5L_extern_traverse(): unable to open object - major: Symbol table - minor: Can't open object - #013: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #014: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #015: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #016: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #017: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #018: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #019: (file name) line (number) in H5L_extern_traverse(): unable to open object - major: Symbol table - minor: Can't open object - #020: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #021: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #022: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #023: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #024: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #025: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #026: (file name) line (number) in H5L_extern_traverse(): unable to open object - major: Symbol table - minor: Can't open object - #027: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #028: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #029: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #030: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #031: (file name) line (number) in H5G__traverse_special(): too many links - major: Links - minor: Too many soft links in path -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #001: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #002: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #003: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #004: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #005: (file name) line (number) in H5L_extern_traverse(): unable to open object - major: Symbol table - minor: Can't open object - #006: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #007: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #008: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #009: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #010: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #011: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #012: (file name) line (number) in H5L_extern_traverse(): unable to open object - major: Symbol table - minor: Can't open object - #013: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #014: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #015: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #016: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #017: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #018: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #019: (file name) line (number) in H5L_extern_traverse(): unable to open object - major: Symbol table - minor: Can't open object - #020: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #021: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #022: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #023: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #024: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #025: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #026: (file name) line (number) in H5L_extern_traverse(): unable to open object - major: Symbol table - minor: Can't open object - #027: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #028: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #029: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #030: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #031: (file name) line (number) in H5G__traverse_special(): too many links - major: Links - minor: Too many soft links in path diff --git a/tools/h5dump/errfiles/tgroup-2.err b/tools/h5dump/errfiles/tgroup-2.err deleted file mode 100644 index 3659b5c..0000000 --- a/tools/h5dump/errfiles/tgroup-2.err +++ /dev/null @@ -1,20 +0,0 @@ -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Gopen2(): unable to open group - major: Symbol table - minor: Can't open object - #001: (file name) line (number) in H5G__open_name(): group not found - major: Symbol table - minor: Object not found - #002: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #003: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #004: (file name) line (number) in H5G_traverse_real(): traversal operator failed - major: Symbol table - minor: Callback failed - #005: (file name) line (number) in H5G_loc_find_cb(): object 'y' doesn't exist - major: Symbol table - minor: Object not found -h5dump error: unable to open group "/y" diff --git a/tools/h5dump/errfiles/tnofilename-with-packed-bits.err b/tools/h5dump/errfiles/tnofilename-with-packed-bits.err deleted file mode 100644 index 84a7011..0000000 --- a/tools/h5dump/errfiles/tnofilename-with-packed-bits.err +++ /dev/null @@ -1 +0,0 @@ -h5dump error: missing file name diff --git a/tools/h5dump/errfiles/torderlinks1.err b/tools/h5dump/errfiles/torderlinks1.err deleted file mode 100644 index e665f03..0000000 --- a/tools/h5dump/errfiles/torderlinks1.err +++ /dev/null @@ -1,25 +0,0 @@ -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Oopen(): unable to open object - major: Object header - minor: Can't open object - #001: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #002: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #003: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #007: (file name) line (number) in H5L_extern_traverse(): unable to open external file, external link file name = 'fname', temp_file_name = 'fname' - major: Links - minor: Unable to open file diff --git a/tools/h5dump/errfiles/torderlinks2.err b/tools/h5dump/errfiles/torderlinks2.err deleted file mode 100644 index e665f03..0000000 --- a/tools/h5dump/errfiles/torderlinks2.err +++ /dev/null @@ -1,25 +0,0 @@ -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Oopen(): unable to open object - major: Object header - minor: Can't open object - #001: (file name) line (number) in H5O_open_name(): object not found - major: Object header - minor: Object not found - #002: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #003: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed - major: Links - minor: Link traversal failure - #006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID - major: Symbol table - minor: Unable to find atom information (already closed?) - #007: (file name) line (number) in H5L_extern_traverse(): unable to open external file, external link file name = 'fname', temp_file_name = 'fname' - major: Links - minor: Unable to open file diff --git a/tools/h5dump/errfiles/tpbitsCharLengthExceeded.err b/tools/h5dump/errfiles/tpbitsCharLengthExceeded.err deleted file mode 100644 index e5854ea..0000000 --- a/tools/h5dump/errfiles/tpbitsCharLengthExceeded.err +++ /dev/null @@ -1 +0,0 @@ -h5dump error: Packed Bit offset+length value(9) too large. Max is 8 diff --git a/tools/h5dump/errfiles/tpbitsCharOffsetExceeded.err b/tools/h5dump/errfiles/tpbitsCharOffsetExceeded.err deleted file mode 100644 index e5854ea..0000000 --- a/tools/h5dump/errfiles/tpbitsCharOffsetExceeded.err +++ /dev/null @@ -1 +0,0 @@ -h5dump error: Packed Bit offset+length value(9) too large. Max is 8 diff --git a/tools/h5dump/errfiles/tpbitsIncomplete.err b/tools/h5dump/errfiles/tpbitsIncomplete.err deleted file mode 100644 index e0abee5..0000000 --- a/tools/h5dump/errfiles/tpbitsIncomplete.err +++ /dev/null @@ -1 +0,0 @@ -h5dump error: Bad mask list(0,2,2,1,0,2,2,) diff --git a/tools/h5dump/errfiles/tpbitsIntLengthExceeded.err b/tools/h5dump/errfiles/tpbitsIntLengthExceeded.err deleted file mode 100644 index 7dd88ed..0000000 --- a/tools/h5dump/errfiles/tpbitsIntLengthExceeded.err +++ /dev/null @@ -1 +0,0 @@ -h5dump error: Packed Bit offset+length value(17) too large. Max is 16 diff --git a/tools/h5dump/errfiles/tpbitsIntOffsetExceeded.err b/tools/h5dump/errfiles/tpbitsIntOffsetExceeded.err deleted file mode 100644 index 7dd88ed..0000000 --- a/tools/h5dump/errfiles/tpbitsIntOffsetExceeded.err +++ /dev/null @@ -1 +0,0 @@ -h5dump error: Packed Bit offset+length value(17) too large. Max is 16 diff --git a/tools/h5dump/errfiles/tpbitsLengthExceeded.err b/tools/h5dump/errfiles/tpbitsLengthExceeded.err deleted file mode 100644 index d4673f2..0000000 --- a/tools/h5dump/errfiles/tpbitsLengthExceeded.err +++ /dev/null @@ -1 +0,0 @@ -h5dump error: Packed Bit offset+length value(65) too large. Max is 64 diff --git a/tools/h5dump/errfiles/tpbitsLengthPositive.err b/tools/h5dump/errfiles/tpbitsLengthPositive.err deleted file mode 100644 index 4928007..0000000 --- a/tools/h5dump/errfiles/tpbitsLengthPositive.err +++ /dev/null @@ -1 +0,0 @@ -h5dump error: Packed Bit length value(0) must be positive. diff --git a/tools/h5dump/errfiles/tpbitsLongLengthExceeded.err b/tools/h5dump/errfiles/tpbitsLongLengthExceeded.err deleted file mode 100644 index 0318f79..0000000 --- a/tools/h5dump/errfiles/tpbitsLongLengthExceeded.err +++ /dev/null @@ -1 +0,0 @@ -h5dump error: Packed Bit offset+length value(33) too large. Max is 32 diff --git a/tools/h5dump/errfiles/tpbitsLongOffsetExceeded.err b/tools/h5dump/errfiles/tpbitsLongOffsetExceeded.err deleted file mode 100644 index 0318f79..0000000 --- a/tools/h5dump/errfiles/tpbitsLongOffsetExceeded.err +++ /dev/null @@ -1 +0,0 @@ -h5dump error: Packed Bit offset+length value(33) too large. Max is 32 diff --git a/tools/h5dump/errfiles/tpbitsMaxExceeded.err b/tools/h5dump/errfiles/tpbitsMaxExceeded.err deleted file mode 100644 index a8d12fc..0000000 --- a/tools/h5dump/errfiles/tpbitsMaxExceeded.err +++ /dev/null @@ -1 +0,0 @@ -h5dump error: Too many masks requested (max. 8). Mask list(0,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1) diff --git a/tools/h5dump/errfiles/tpbitsOffsetExceeded.err b/tools/h5dump/errfiles/tpbitsOffsetExceeded.err deleted file mode 100644 index b7d6dad..0000000 --- a/tools/h5dump/errfiles/tpbitsOffsetExceeded.err +++ /dev/null @@ -1 +0,0 @@ -h5dump error: Packed Bit offset value(64) must be between 0 and 63 diff --git a/tools/h5dump/errfiles/tpbitsOffsetNegative.err b/tools/h5dump/errfiles/tpbitsOffsetNegative.err deleted file mode 100644 index 8a027c1..0000000 --- a/tools/h5dump/errfiles/tpbitsOffsetNegative.err +++ /dev/null @@ -1 +0,0 @@ -h5dump error: Bad mask list(-1,1) diff --git a/tools/h5dump/errfiles/tperror.err b/tools/h5dump/errfiles/tperror.err deleted file mode 100644 index b469029..0000000 --- a/tools/h5dump/errfiles/tperror.err +++ /dev/null @@ -1,36 +0,0 @@ -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Dopen2(): unable to open dataset - major: Dataset - minor: Can't open object - #001: (file name) line (number) in H5D__open_name(): not found - major: Dataset - minor: Object not found - #002: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #003: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #004: (file name) line (number) in H5G_traverse_real(): traversal operator failed - major: Symbol table - minor: Callback failed - #005: (file name) line (number) in H5G_loc_find_cb(): object 'bogus' doesn't exist - major: Symbol table - minor: Object not found -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Lget_info(): unable to get link info - major: Links - minor: Object not found - #001: (file name) line (number) in H5L_get_info(): name doesn't exist - major: Symbol table - minor: Object already exists - #002: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #003: (file name) line (number) in H5G_traverse_real(): traversal operator failed - major: Symbol table - minor: Callback failed - #004: (file name) line (number) in H5L_get_info_cb(): name doesn't exist - major: Symbol table - minor: Object not found -h5dump error: unable to get link info from "bogus" diff --git a/tools/h5dump/errfiles/tqmarkfile.err b/tools/h5dump/errfiles/tqmarkfile.err deleted file mode 100644 index 06519fb..0000000 --- a/tools/h5dump/errfiles/tqmarkfile.err +++ /dev/null @@ -1,33 +0,0 @@ -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Dopen2(): not found - major: Dataset - minor: Object not found - #001: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #002: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #003: (file name) line (number) in H5G_traverse_real(): traversal operator failed - major: Symbol table - minor: Callback failed - #004: (file name) line (number) in H5G_loc_find_cb(): object 'Dataset1' doesn't exist - major: Symbol table - minor: Object not found -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Lget_info(): unable to get link info - major: Symbol table - minor: Object not found - #001: (file name) line (number) in H5L_get_info(): name doesn't exist - major: Symbol table - minor: Object already exists - #002: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #003: (file name) line (number) in H5G_traverse_real(): traversal operator failed - major: Symbol table - minor: Callback failed - #004: (file name) line (number) in H5L_get_info_cb(): name doesn't exist - major: Symbol table - minor: Object not found -h5dump error: unable to get link info from "Dataset1" diff --git a/tools/h5dump/errfiles/tslink-D.err b/tools/h5dump/errfiles/tslink-D.err deleted file mode 100644 index 924e9cf..0000000 --- a/tools/h5dump/errfiles/tslink-D.err +++ /dev/null @@ -1,28 +0,0 @@ -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Dopen2(): unable to open dataset - major: Dataset - minor: Can't open object - #001: (file name) line (number) in H5D__open_name(): not found - major: Dataset - minor: Object not found - #002: (file name) line (number) in H5G_loc_find(): can't find object - major: Symbol table - minor: Object not found - #003: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #004: (file name) line (number) in H5G_traverse_real(): special link traversal failed - major: Links - minor: Link traversal failure - #005: (file name) line (number) in H5G__traverse_special(): symbolic link traversal failed - major: Links - minor: Link traversal failure - #006: (file name) line (number) in H5G_traverse_slink(): unable to follow symbolic link - major: Symbol table - minor: Object not found - #007: (file name) line (number) in H5G_traverse_real(): traversal operator failed - major: Symbol table - minor: Callback failed - #008: (file name) line (number) in H5G_traverse_slink_cb(): component not found - major: Symbol table - minor: Object not found diff --git a/tools/h5dump/h5dump.c b/tools/h5dump/h5dump.c deleted file mode 100644 index 562cfd5..0000000 --- a/tools/h5dump/h5dump.c +++ /dev/null @@ -1,1802 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -#include -#include - -#include "h5dump.h" -#include "h5dump_ddl.h" -#include "h5dump_xml.h" - -/* Name of tool */ -#define PROGRAMNAME "h5dump" - -static const char *driver = NULL; /* The driver to open the file with. */ -const char *outfname=NULL; -static int doxml = 0; -static int useschema = 1; -static const char *xml_dtd_uri = NULL; - -/* module-scoped variables for XML option */ -#define DEFAULT_XSD "http://www.hdfgroup.org/HDF5/XML/schema/HDF5-File.xsd" -#define DEFAULT_DTD "http://www.hdfgroup.org/HDF5/XML/DTD/HDF5-File.dtd" - -/* Standard DDL output */ -static const dump_functions ddl_function_table = { - dump_group, - dump_named_datatype, - dump_dataset, - dump_dataspace, - dump_datatype, - dump_attr_cb, - dump_data -}; - -/* XML output */ -static const dump_functions xml_function_table = { - xml_dump_group, - xml_dump_named_datatype, - xml_dump_dataset, - xml_dump_dataspace, - xml_dump_datatype, - xml_dump_attr, - xml_dump_data -}; - -/* internal functions */ -static void init_prefix(char **prfx, size_t prfx_len); - -/* a structure for handling the order command-line parameters come in */ -struct handler_t { - void (*func)(hid_t, const char *, void *, int, const char *); - char *obj; - struct subset_t *subset_info; -}; - -/* - * Command-line options: The user can specify short or long-named - * parameters. The long-named ones can be partially spelled. When - * adding more, make sure that they don't clash with each other. - */ -/* The following initialization makes use of C language cancatenating */ -/* "xxx" "yyy" into "xxxyyy". */ -static const char *s_opts = "hn*peyBHirVa:c:d:f:g:k:l:t:w:xD:uX:o*b*F:s:S:A*q:z:m:RECM:O*N:vG:"; -static struct long_options l_opts[] = { - { "help", no_arg, 'h' }, - { "hel", no_arg, 'h' }, - { "contents", optional_arg, 'n' }, - { "properties", no_arg, 'p' }, - { "superblock", no_arg, 'B' }, - { "boot-block", no_arg, 'B' }, - { "boot-bloc", no_arg, 'B' }, - { "boot-blo", no_arg, 'B' }, - { "boot-bl", no_arg, 'B' }, - { "boot-b", no_arg, 'B' }, - { "boot", no_arg, 'B' }, - { "boo", no_arg, 'B' }, - { "bo", no_arg, 'B' }, - { "header", no_arg, 'H' }, - { "heade", no_arg, 'H' }, - { "head", no_arg, 'H' }, - { "hea", no_arg, 'H' }, - { "object-ids", no_arg, 'i' }, - { "object-id", no_arg, 'i' }, - { "object-i", no_arg, 'i' }, - { "object", no_arg, 'i' }, - { "objec", no_arg, 'i' }, - { "obje", no_arg, 'i' }, - { "obj", no_arg, 'i' }, - { "ob", no_arg, 'i' }, - { "version", no_arg, 'V' }, - { "versio", no_arg, 'V' }, - { "versi", no_arg, 'V' }, - { "vers", no_arg, 'V' }, - { "ver", no_arg, 'V' }, - { "ve", no_arg, 'V' }, - { "attribute", require_arg, 'a' }, - { "attribut", require_arg, 'a' }, - { "attribu", require_arg, 'a' }, - { "attrib", require_arg, 'a' }, - { "attri", require_arg, 'a' }, - { "attr", require_arg, 'a' }, - { "att", require_arg, 'a' }, - { "at", require_arg, 'a' }, - { "block", require_arg, 'k' }, - { "bloc", require_arg, 'k' }, - { "blo", require_arg, 'k' }, - { "bl", require_arg, 'k' }, - { "count", require_arg, 'c' }, - { "coun", require_arg, 'c' }, - { "cou", require_arg, 'c' }, - { "co", require_arg, 'c' }, - { "dataset", require_arg, 'd' }, - { "datase", require_arg, 'd' }, - { "datas", require_arg, 'd' }, - { "datatype", require_arg, 't' }, - { "datatyp", require_arg, 't' }, - { "dataty", require_arg, 't' }, - { "datat", require_arg, 't' }, - { "filedriver", require_arg, 'f' }, - { "filedrive", require_arg, 'f' }, - { "filedriv", require_arg, 'f' }, - { "filedri", require_arg, 'f' }, - { "filedr", require_arg, 'f' }, - { "filed", require_arg, 'f' }, - { "file", require_arg, 'f' }, - { "fil", require_arg, 'f' }, - { "fi", require_arg, 'f' }, - { "group", require_arg, 'g' }, - { "grou", require_arg, 'g' }, - { "gro", require_arg, 'g' }, - { "gr", require_arg, 'g' }, - { "output", optional_arg, 'o' }, - { "outpu", optional_arg, 'o' }, - { "outp", optional_arg, 'o' }, - { "out", optional_arg, 'o' }, - { "ou", optional_arg, 'o' }, - { "soft-link", require_arg, 'l' }, - { "soft-lin", require_arg, 'l' }, - { "soft-li", require_arg, 'l' }, - { "soft-l", require_arg, 'l' }, - { "soft", require_arg, 'l' }, - { "sof", require_arg, 'l' }, - { "start", require_arg, 's' }, - { "star", require_arg, 's' }, - { "sta", require_arg, 's' }, - { "stride", require_arg, 'S' }, - { "strid", require_arg, 'S' }, - { "string", no_arg, 'r' }, - { "strin", no_arg, 'r' }, - { "use-dtd", no_arg, 'u' }, - { "use-dt", no_arg, 'u' }, - { "use-d", no_arg, 'u' }, - { "use-", no_arg, 'u' }, - { "use", no_arg, 'u' }, - { "us", no_arg, 'u' }, - { "u", no_arg, 'u' }, - { "width", require_arg, 'w' }, - { "widt", require_arg, 'w' }, - { "wid", require_arg, 'w' }, - { "wi", require_arg, 'w' }, - { "xml-dtd", require_arg, 'D' }, - { "xml-dt", require_arg, 'D' }, - { "xml-d", require_arg, 'D' }, - { "xml-ns", require_arg, 'X' }, - { "xml-n", require_arg, 'X' }, - { "xml", no_arg, 'x' }, - { "xm", no_arg, 'x' }, - { "onlyattr", optional_arg, 'A' }, - { "escape", no_arg, 'e' }, - { "noindex", no_arg, 'y' }, - { "binary", optional_arg, 'b' }, - { "form", require_arg, 'F' }, - { "sort_by", require_arg, 'q' }, - { "sort_order", require_arg, 'z' }, - { "format", require_arg, 'm' }, - { "region", no_arg, 'R' }, - { "enable-error-stack", no_arg, 'E' }, - { "packed-bits", require_arg, 'M' }, - { "no-compact-subset", no_arg, 'C' }, - { "ddl", optional_arg, 'O' }, - { "any_path", require_arg, 'N' }, - { "vds-view-first-missing", no_arg, 'v' }, - { "vds-gap-size", require_arg, 'G' }, - { NULL, 0, '\0' } -}; - - -/*------------------------------------------------------------------------- - * Function: leave - * - * Purpose: Shutdown MPI & HDF5 and call exit() - * - * Return: Does not return - * - * Programmer: Quincey Koziol - * Saturday, 31. January 2004 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -leave(int ret) -{ - h5tools_close(); - - HDexit(ret); -} - - -/*------------------------------------------------------------------------- - * Function: usage - * - * Purpose: Print the usage message about dumper - * - * Return: void - *------------------------------------------------------------------------- - */ -static void -usage(const char *prog) -{ - FLUSHSTREAM(rawoutstream); - PRINTSTREAM(rawoutstream, "usage: %s [OPTIONS] files\n", prog); - PRINTVALSTREAM(rawoutstream, " OPTIONS\n"); - PRINTVALSTREAM(rawoutstream, " -h, --help Print a usage message and exit\n"); - PRINTVALSTREAM(rawoutstream, " -V, --version Print version number and exit\n"); - PRINTVALSTREAM(rawoutstream, "--------------- File Options ---------------\n"); - PRINTVALSTREAM(rawoutstream, " -n, --contents Print a list of the file contents and exit\n"); - PRINTVALSTREAM(rawoutstream, " Optional value 1 also prints attributes.\n"); - PRINTVALSTREAM(rawoutstream, " -B, --superblock Print the content of the super block\n"); - PRINTVALSTREAM(rawoutstream, " -H, --header Print the header only; no data is displayed\n"); - PRINTVALSTREAM(rawoutstream, " -f D, --filedriver=D Specify which driver to open the file with\n"); - PRINTVALSTREAM(rawoutstream, " -o F, --output=F Output raw data into file F\n"); - PRINTVALSTREAM(rawoutstream, " -b B, --binary=B Binary file output, of form B\n"); - PRINTVALSTREAM(rawoutstream, " -O F, --ddl=F Output ddl text into file F\n"); - PRINTVALSTREAM(rawoutstream, " Use blank(empty) filename F to suppress ddl display\n"); - PRINTVALSTREAM(rawoutstream, "--------------- Object Options ---------------\n"); - PRINTVALSTREAM(rawoutstream, " -a P, --attribute=P Print the specified attribute\n"); - PRINTVALSTREAM(rawoutstream, " If an attribute name contains a slash (/), escape the\n"); - PRINTVALSTREAM(rawoutstream, " slash with a preceding backslash (\\).\n"); - PRINTVALSTREAM(rawoutstream, " (See example section below.)\n"); - PRINTVALSTREAM(rawoutstream, " -d P, --dataset=P Print the specified dataset\n"); - PRINTVALSTREAM(rawoutstream, " -g P, --group=P Print the specified group and all members\n"); - PRINTVALSTREAM(rawoutstream, " -l P, --soft-link=P Print the value(s) of the specified soft link\n"); - PRINTVALSTREAM(rawoutstream, " -t P, --datatype=P Print the specified named datatype\n"); - PRINTVALSTREAM(rawoutstream, " -N P, --any_path=P Print any attribute, dataset, group, datatype, or link that matches P\n"); - PRINTVALSTREAM(rawoutstream, " P can be the absolute path or just a relative path.\n"); - PRINTVALSTREAM(rawoutstream, " -A, --onlyattr Print the header and value of attributes\n"); - PRINTVALSTREAM(rawoutstream, " Optional value 0 suppresses printing attributes.\n"); - PRINTVALSTREAM(rawoutstream, " --vds-view-first-missing Set the VDS bounds to first missing mapped elements.\n"); - PRINTVALSTREAM(rawoutstream, " --vds-gap-size=N Set the missing file gap size, N=non-negative integers\n"); - PRINTVALSTREAM(rawoutstream, "--------------- Object Property Options ---------------\n"); - PRINTVALSTREAM(rawoutstream, " -i, --object-ids Print the object ids\n"); - PRINTVALSTREAM(rawoutstream, " -p, --properties Print dataset filters, storage layout and fill value\n"); - PRINTVALSTREAM(rawoutstream, " -M L, --packedbits=L Print packed bits as unsigned integers, using mask\n"); - PRINTVALSTREAM(rawoutstream, " format L for an integer dataset specified with\n"); - PRINTVALSTREAM(rawoutstream, " option -d. L is a list of offset,length values,\n"); - PRINTVALSTREAM(rawoutstream, " separated by commas. Offset is the beginning bit in\n"); - PRINTVALSTREAM(rawoutstream, " the data value and length is the number of bits of\n"); - PRINTVALSTREAM(rawoutstream, " the mask.\n"); - PRINTVALSTREAM(rawoutstream, " -R, --region Print dataset pointed by region references\n"); - PRINTVALSTREAM(rawoutstream, "--------------- Formatting Options ---------------\n"); - PRINTVALSTREAM(rawoutstream, " -e, --escape Escape non printing characters\n"); - PRINTVALSTREAM(rawoutstream, " -r, --string Print 1-byte integer datasets as ASCII\n"); - PRINTVALSTREAM(rawoutstream, " -y, --noindex Do not print array indices with the data\n"); - PRINTVALSTREAM(rawoutstream, " -m T, --format=T Set the floating point output format\n"); - PRINTVALSTREAM(rawoutstream, " -q Q, --sort_by=Q Sort groups and attributes by index Q\n"); - PRINTVALSTREAM(rawoutstream, " -z Z, --sort_order=Z Sort groups and attributes by order Z\n"); - PRINTVALSTREAM(rawoutstream, " --enable-error-stack Prints messages from the HDF5 error stack as they\n"); - PRINTVALSTREAM(rawoutstream, " occur.\n"); - PRINTVALSTREAM(rawoutstream, " --no-compact-subset Disable compact form of subsetting and allow the use\n"); - PRINTVALSTREAM(rawoutstream, " of \"[\" in dataset names.\n"); - PRINTVALSTREAM(rawoutstream, " -w N, --width=N Set the number of columns of output. A value of 0 (zero)\n"); - PRINTVALSTREAM(rawoutstream, " sets the number of columns to the maximum (65535).\n"); - PRINTVALSTREAM(rawoutstream, " Default width is 80 columns.\n"); - PRINTVALSTREAM(rawoutstream, "--------------- XML Options ---------------\n"); - PRINTVALSTREAM(rawoutstream, " -x, --xml Output in XML using Schema\n"); - PRINTVALSTREAM(rawoutstream, " -u, --use-dtd Output in XML using DTD\n"); - PRINTVALSTREAM(rawoutstream, " -D U, --xml-dtd=U Use the DTD or schema at U\n"); - PRINTVALSTREAM(rawoutstream, " -X S, --xml-ns=S (XML Schema) Use qualified names n the XML\n"); - PRINTVALSTREAM(rawoutstream, " \":\": no namespace, default: \"hdf5:\"\n"); - PRINTVALSTREAM(rawoutstream, " E.g., to dump a file called `-f', use h5dump -- -f\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, "--------------- Subsetting Options ---------------\n"); - PRINTVALSTREAM(rawoutstream, " Subsetting is available by using the following options with a dataset\n"); - PRINTVALSTREAM(rawoutstream, " option. Subsetting is done by selecting a hyperslab from the data.\n"); - PRINTVALSTREAM(rawoutstream, " Thus, the options mirror those for performing a hyperslab selection.\n"); - PRINTVALSTREAM(rawoutstream, " One of the START, COUNT, STRIDE, or BLOCK parameters are mandatory if you do subsetting.\n"); - PRINTVALSTREAM(rawoutstream, " The STRIDE, COUNT, and BLOCK parameters are optional and will default to 1 in\n"); - PRINTVALSTREAM(rawoutstream, " each dimension. START is optional and will default to 0 in each dimension.\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " -s START, --start=START Offset of start of subsetting selection\n"); - PRINTVALSTREAM(rawoutstream, " -S STRIDE, --stride=STRIDE Hyperslab stride\n"); - PRINTVALSTREAM(rawoutstream, " -c COUNT, --count=COUNT Number of blocks to include in selection\n"); - PRINTVALSTREAM(rawoutstream, " -k BLOCK, --block=BLOCK Size of block in hyperslab\n"); - PRINTVALSTREAM(rawoutstream, " START, COUNT, STRIDE, and BLOCK - is a list of integers the number of which are equal to the\n"); - PRINTVALSTREAM(rawoutstream, " number of dimensions in the dataspace being queried\n"); - PRINTVALSTREAM(rawoutstream, " (Alternate compact form of subsetting is described in the Reference Manual)\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, "--------------- Option Argument Conventions ---------------\n"); - PRINTVALSTREAM(rawoutstream, " D - is the file driver to use in opening the file. Acceptable values\n"); - PRINTVALSTREAM(rawoutstream, " are \"sec2\", \"family\", \"split\", \"multi\", \"direct\", and \"stream\". Without\n"); - PRINTVALSTREAM(rawoutstream, " the file driver flag, the file will be opened with each driver in\n"); - PRINTVALSTREAM(rawoutstream, " turn and in the order specified above until one driver succeeds\n"); - PRINTVALSTREAM(rawoutstream, " in opening the file.\n"); - PRINTVALSTREAM(rawoutstream, " See examples below for family, split, and multi driver special file name usage.\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " F - is a filename.\n"); - PRINTVALSTREAM(rawoutstream, " P - is the full path from the root group to the object.\n"); - PRINTVALSTREAM(rawoutstream, " N - is an integer greater than 1.\n"); - PRINTVALSTREAM(rawoutstream, " T - is a string containing the floating point format, e.g '%%.3f'\n"); - PRINTVALSTREAM(rawoutstream, " U - is a URI reference (as defined in [IETF RFC 2396],\n"); - PRINTVALSTREAM(rawoutstream, " updated by [IETF RFC 2732])\n"); - PRINTVALSTREAM(rawoutstream, " B - is the form of binary output: NATIVE for a memory type, FILE for the\n"); - PRINTVALSTREAM(rawoutstream, " file type, LE or BE for pre-existing little or big endian types.\n"); - PRINTVALSTREAM(rawoutstream, " Must be used with -o (output file) and it is recommended that\n"); - PRINTVALSTREAM(rawoutstream, " -d (dataset) is used. B is an optional argument, defaults to NATIVE\n"); - PRINTVALSTREAM(rawoutstream, " Q - is the sort index type. It can be \"creation_order\" or \"name\" (default)\n"); - PRINTVALSTREAM(rawoutstream, " Z - is the sort order type. It can be \"descending\" or \"ascending\" (default)\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, "--------------- Examples ---------------\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " 1) Attribute foo of the group /bar_none in file quux.h5\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " h5dump -a /bar_none/foo quux.h5\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " Attribute \"high/low\" of the group /bar_none in the file quux.h5\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " h5dump -a \"/bar_none/high\\/low\" quux.h5\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " 2) Selecting a subset from dataset /foo in file quux.h5\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " h5dump -d /foo -s \"0,1\" -S \"1,1\" -c \"2,3\" -k \"2,2\" quux.h5\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " 3) Saving dataset 'dset' in file quux.h5 to binary file 'out.bin'\n"); - PRINTVALSTREAM(rawoutstream, " using a little-endian type\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " h5dump -d /dset -b LE -o out.bin quux.h5\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " 4) Display two packed bits (bits 0-1 and bits 4-6) in the dataset /dset\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " h5dump -d /dset -M 0,1,4,3 quux.h5\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " 5) Dataset foo in files file1.h5 file2.h5 file3.h5\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " h5dump -d /foo file1.h5 file2.h5 file3.h5\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " 6) Dataset foo in split files splitfile-m.h5 splitfile-r.h5\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " h5dump -d /foo -f split splitfile\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " 7) Dataset foo in multi files mf-s.h5, mf-b.h5, mf-r.h5, mf-g.h5, mf-l.h5 and mf-o.h5\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " h5dump -d /foo -f multi mf\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " 8) Dataset foo in family files fam00000.h5 fam00001.h5 and fam00002.h5\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " h5dump -d /foo -f family fam%%05d.h5\n"); - PRINTVALSTREAM(rawoutstream, "\n"); -} - - -/*------------------------------------------------------------------------- - * Function: table_list_add - * - * Purpose: Add a new set of tables - * - * Return: index of added table on success, -1 on failure - * - * Programmer: Neil Fortner, nfortne2@hdfgroup.org - * Adapted from trav_addr_add in h5trav.c by Quincey Koziol - * - * Date: October 13, 2008 - * - *------------------------------------------------------------------------- - */ -ssize_t -table_list_add(hid_t oid, unsigned long file_no) -{ - size_t idx; /* Index of table to use */ - find_objs_t info; - - /* Allocate space if necessary */ - if(table_list.nused == table_list.nalloc) { - h5dump_table_items_t *tmp_ptr; - - table_list.nalloc = MAX(1, table_list.nalloc * 2); - if(NULL == (tmp_ptr = (h5dump_table_items_t *)HDrealloc(table_list.tables, table_list.nalloc * sizeof(table_list.tables[0])))) - return -1; - table_list.tables = tmp_ptr; - } /* end if */ - - /* Append it */ - idx = table_list.nused++; - table_list.tables[idx].fileno = file_no; - table_list.tables[idx].oid = oid; - if(H5Iinc_ref(oid) < 0) { - table_list.nused--; - return -1; - } - if(init_objs(oid, &info, &table_list.tables[idx].group_table, - &table_list.tables[idx].dset_table, &table_list.tables[idx].type_table) < 0) { - H5Idec_ref(oid); - table_list.nused--; - return -1; - } - -#ifdef H5DUMP_DEBUG - dump_tables(&info); -#endif /* H5DUMP_DEBUG */ - - return((ssize_t) idx); -} /* end table_list_add() */ - - -/*------------------------------------------------------------------------- - * Function: table_list_visited - * - * Purpose: Check if a table already exists for the specified fileno - * - * Return: The index of the matching table, or -1 if no matches found - * - * Programmer: Neil Fortner, nfortne2@hdfgroup.org - * Adapted from trav_addr_visited in h5trav.c by Quincey Koziol - * - * Date: October 13, 2008 - * - *------------------------------------------------------------------------- - */ -H5_ATTR_PURE ssize_t -table_list_visited(unsigned long file_no) -{ - size_t u; /* Local index variable */ - - /* Look for table */ - for(u = 0; u < table_list.nused; u++) - /* Check for fileno value already in array */ - if(table_list.tables[u].fileno == file_no) - return((ssize_t) u); - - /* Didn't find table */ - return(-1); -} /* end table_list_visited() */ - - -/*------------------------------------------------------------------------- - * Function: table_list_free - * - * Purpose: Frees the table list - * - * Return: void - * - * Programmer: Neil Fortner, nfortne2@hdfgroup.org - * - * Date: October 13, 2008 - * - *------------------------------------------------------------------------- - */ -static void -table_list_free(void) -{ - size_t u; /* Local index variable */ - - /* Iterate over tables */ - for(u = 0; u < table_list.nused; u++) { - /* Release object id */ - if(H5Idec_ref(table_list.tables[u].oid) < 0) - h5tools_setstatus(EXIT_FAILURE); - - /* Free each table */ - free_table(table_list.tables[u].group_table); - HDfree(table_list.tables[u].group_table); - free_table(table_list.tables[u].dset_table); - HDfree(table_list.tables[u].dset_table); - free_table(table_list.tables[u].type_table); - HDfree(table_list.tables[u].type_table); - } - - /* Free the table list */ - HDfree(table_list.tables); - table_list.tables = NULL; - table_list.nalloc = table_list.nused = 0; -} /* end table_list_free() */ - -/*------------------------------------------------------------------------- - * Function: set_binary_form - * - * Purpose: set the binary form of output by translating from a string input - * parameter to a integer return value - * - * Return: integer form of binary output or -1 if none found - * - * Programmer: Pedro Vicente Nunes - * June 28, 2006 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static int -set_binary_form(const char *form) -{ - int bform = -1; - - if (HDstrcmp(form,"NATIVE") == 0 || HDstrcmp(form,"MEMORY") == 0) { - /* native form */ - bform = 0; - } - else if (HDstrcmp(form,"FILE") == 0) /* file type form */ - bform = 1; - else if (HDstrcmp(form,"LE") == 0) /* convert to little endian */ - bform = 2; - else if (HDstrcmp(form,"BE") == 0) /* convert to big endian */ - bform = 3; - - return bform; -} - -/*------------------------------------------------------------------------- - * Function: set_sort_by - * - * Purpose: set the "by" form of sorting by translating from a string input - * parameter to a H5_index_t return value - * current sort values are [creation_order | name] - * - * Return: H5_index_t form of sort or H5_INDEX_UNKNOWN if none found - * - * Programmer: Pedro Vicente Nunes - * October 1, 2007 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static H5_index_t -set_sort_by(const char *form) -{ - H5_index_t idx_type = H5_INDEX_UNKNOWN; - - if (HDstrcmp(form,"name")==0) /* H5_INDEX_NAME */ - idx_type = H5_INDEX_NAME; - else if (HDstrcmp(form,"creation_order")==0) /* H5_INDEX_CRT_ORDER */ - idx_type = H5_INDEX_CRT_ORDER; - - return idx_type; -} - -/*------------------------------------------------------------------------- - * Function: set_sort_order - * - * Purpose: set the order of sorting by translating from a string input - * parameter to a H5_iter_order_t return value - * current order values are [ascending | descending ] - * - * Return: H5_iter_order_t form of order or H5_ITER_UNKNOWN if none found - * - * Programmer: Pedro Vicente Nunes - * October 1, 2007 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static H5_iter_order_t -set_sort_order(const char *form) -{ - H5_iter_order_t iter_order = H5_ITER_UNKNOWN; - - if (HDstrcmp(form,"ascending")==0) /* H5_ITER_INC */ - iter_order = H5_ITER_INC; - else if (HDstrcmp(form,"descending")==0) /* H5_ITER_DEC */ - iter_order = H5_ITER_DEC; - - return iter_order; -} - -/*------------------------------------------------------------------------- - * Function: parse_hsize_list - * - * Purpose: Parse a list of comma or space separated integers and return - * them in a list. The string being passed into this function - * should be at the start of the list you want to parse. You are - * responsible for freeing the array returned from here. - * - * Lists in the so-called "terse" syntax are separated by - * semicolons (;). The lists themselves can be separated by - * either commas (,) or white spaces. - * - * Return: - * - * Programmer: Bill Wendling - * Tuesday, 6. February 2001 - * - *------------------------------------------------------------------------- - */ -static void -parse_hsize_list(const char *h_list, subset_d *d) -{ - hsize_t *p_list; - const char *ptr; - unsigned int size_count = 0; - unsigned int i = 0; - unsigned int last_digit = 0; - - if (!h_list || !*h_list || *h_list == ';') - return; - - /* count how many integers do we have */ - for (ptr = h_list; ptr && *ptr && *ptr != ';' && *ptr != ']'; ptr++) - if (HDisdigit(*ptr)) { - if (!last_digit) - /* the last read character wasn't a digit */ - size_count++; - - last_digit = 1; - } - else - last_digit = 0; - - if (size_count == 0) - /* there aren't any integers to read */ - return; - - /* allocate an array for the integers in the list */ - p_list = (hsize_t *)HDcalloc(size_count, sizeof(hsize_t)); - - for (ptr = h_list; i < size_count && ptr && *ptr && *ptr != ';' && *ptr != ']'; ptr++) - if(HDisdigit(*ptr)) { - /* we should have an integer now */ - p_list[i++] = (hsize_t)HDstrtoull(ptr, NULL, 0); - - while (HDisdigit(*ptr)) - /* scroll to end of integer */ - ptr++; - } - d->data = p_list; - d->len = size_count; -} - -/*------------------------------------------------------------------------- - * Function: parse_subset_params - * - * Purpose: Parse the so-called "terse" syntax for specifying subsetting - * parameters. - * - * Return: Success: struct subset_t object - * Failure: NULL - * - * Programmer: Bill Wendling - * Tuesday, 6. February 2001 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static struct subset_t * -parse_subset_params(char *dset) -{ - struct subset_t *s = NULL; - char *brace; - - if (!disable_compact_subset && ((brace = HDstrrchr(dset, '[')) != NULL)) { - *brace++ = '\0'; - - s = (struct subset_t *)HDcalloc(1, sizeof(struct subset_t)); - parse_hsize_list(brace, &s->start); - - while (*brace && *brace != ';') - brace++; - - if (*brace) brace++; - - parse_hsize_list(brace, &s->stride); - - while (*brace && *brace != ';') - brace++; - - if (*brace) brace++; - - parse_hsize_list(brace, &s->count); - - while (*brace && *brace != ';') - brace++; - - if (*brace) brace++; - - parse_hsize_list(brace, &s->block); - } - - return s; -} - -/*------------------------------------------------------------------------- - * Function: parse_mask_list - * - * Purpose: Parse a list of comma or space separated integers and fill - * the packed_bits list and counter. The string being passed into this function - * should be at the start of the list you want to parse. - * - * Return: Success: SUCCEED - * - * Failure: FAIL - * - *------------------------------------------------------------------------- - */ -static int -parse_mask_list(const char *h_list) -{ - int soffset_value; - unsigned offset_value; - int slength_value; - unsigned length_value; - unsigned long long temp_mask; - const char *ptr = NULL; - - /* sanity check */ - HDassert(h_list); - - HDmemset(packed_mask,0,sizeof(packed_mask)); - - packed_bits_num = 0; - /* scan in pair of offset,length separated by commas. */ - ptr = h_list; - while (*ptr) { - /* scan for an offset which is an unsigned int */ - if (!HDisdigit(*ptr)) { - error_msg("Bad mask list(%s)\n", h_list); - return FAIL; - } - soffset_value = HDatoi(ptr); - offset_value = (unsigned)soffset_value; - if (soffset_value < 0 || offset_value >= PACKED_BITS_SIZE_MAX) { - error_msg("Packed Bit offset value(%d) must be between 0 and %u\n", - soffset_value, (unsigned)(PACKED_BITS_SIZE_MAX - 1)); - return FAIL; - } - - /* skip to end of integer */ - while (HDisdigit(*++ptr)) - ; - /* Look for the common separator */ - if (*ptr++ != ',') { - error_msg("Bad mask list(%s), missing expected comma separator.\n", h_list); - return FAIL; - } - - /* scan for a length which is a positive int */ - if (!HDisdigit(*ptr)) { - error_msg("Bad mask list(%s)\n", h_list); - return FAIL; - } - slength_value = HDatoi(ptr); - if (slength_value <= 0) { - error_msg("Packed Bit length value(%d) must be positive.\n", slength_value); - return FAIL; - } - length_value = (unsigned)slength_value; - if ((offset_value + length_value) > PACKED_BITS_SIZE_MAX) { - error_msg("Packed Bit offset+length value(%u) too large. Max is %u\n", - offset_value+length_value, (unsigned)PACKED_BITS_SIZE_MAX); - return FAIL; - } - - /* skip to end of int */ - while (HDisdigit(*++ptr)) - ; - - /* store the offset,length pair */ - if (packed_bits_num >= PACKED_BITS_MAX) { - /* too many requests */ - error_msg("Too many masks requested (max. %d). Mask list(%s)\n", PACKED_BITS_MAX, h_list); - return FAIL; - } - packed_offset[packed_bits_num] = offset_value; - packed_length[packed_bits_num] = length_value; - /* create the bit mask by left shift 1's by length, then negate it. */ - /* After packed_mask is calculated, packed_length is not needed but */ - /* keep it for debug purpose. */ - temp_mask = ~0ULL; - if(length_value < (int)(8 *sizeof(unsigned long long))) { - temp_mask = temp_mask << length_value; - packed_mask[packed_bits_num] = ~temp_mask; - } - else - packed_mask[packed_bits_num] = temp_mask; - packed_bits_num++; - - /* skip a possible comma separator */ - if (*ptr == ',') { - if (!(*++ptr)) { - /* unexpected end of string */ - error_msg("Bad mask list(%s), unexpected end of string.\n", h_list); - return FAIL; - } - } - } - HDassert(packed_bits_num <= PACKED_BITS_MAX); - if (packed_bits_num == 0) { - /* got no masks! */ - error_msg("Bad mask list(%s)\n", h_list); - return FAIL; - } - return SUCCEED; -} - - -/*------------------------------------------------------------------------- - * Function: free_handler - * - * Purpose: Convenience function to free the handler_t structures. Needs a - * length variable (LEN) to know how many in the array it needs - * to free - * - * Return: Nothing - * - * Programmer: Bill Wendling - * Tuesday, 20. February 2001 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -free_handler(struct handler_t *hand, int len) -{ - int i; - - if(hand) { - for (i = 0; i < len; i++) { - if(hand[i].obj) { - HDfree(hand[i].obj); - hand[i].obj=NULL; - } - - if (hand[i].subset_info) { - if(hand[i].subset_info->start.data) - HDfree(hand[i].subset_info->start.data); - if(hand[i].subset_info->stride.data) - HDfree(hand[i].subset_info->stride.data); - if(hand[i].subset_info->count.data) - HDfree(hand[i].subset_info->count.data); - if(hand[i].subset_info->block.data) - HDfree(hand[i].subset_info->block.data); - - HDfree(hand[i].subset_info); - hand[i].subset_info=NULL; - } - } - - HDfree(hand); - } -} - - -/*------------------------------------------------------------------------- - * Function: parse_command_line - * - * Purpose: Parse the command line for the h5dumper. - * - * Return: Success: A pointer to an array of handler_t structures. - * These contain all the information needed to dump - * the necessary object. - * - * Failure: Exits program with EXIT_FAILURE value. - * - * Programmer: Bill Wendling - * Tuesday, 20. February 2001 - * - * Modifications: - * pvn June, 1, 2006. Add a switch for binary output - * - *------------------------------------------------------------------------- - */ -static struct handler_t * -parse_command_line(int argc, const char *argv[]) -{ - struct handler_t *hand = NULL; - struct handler_t *last_dset = NULL; - int i; - int opt; - int last_was_dset = FALSE; - - /* no arguments */ - if (argc == 1) { - usage(h5tools_getprogname()); - goto error; - } - - /* this will be plenty big enough to hold the info */ - if((hand = (struct handler_t *)HDcalloc((size_t)argc, sizeof(struct handler_t)))==NULL) { - goto error; - } - - /* parse command line options */ - while ((opt = get_option(argc, argv, s_opts, l_opts)) != EOF) { -parse_start: - switch ((char)opt) { - case 'R': - display_region = TRUE; - region_output = TRUE; - break; - case 'B': - display_bb = TRUE; - last_was_dset = FALSE; - break; - case 'n': - display_fi = TRUE; - last_was_dset = FALSE; - if ( opt_arg != NULL) { - h5trav_set_verbose(HDatoi(opt_arg)); - } - break; - case 'p': - display_dcpl = TRUE; - break; - case 'y': - display_ai = FALSE; - break; - case 'e': - display_escape = TRUE; - break; - case 'H': - display_data = FALSE; - display_attr_data = FALSE; - last_was_dset = FALSE; - break; - case 'A': - if ( opt_arg != NULL) { - if(0 == HDatoi(opt_arg)) include_attrs = FALSE; - } - else { - display_data = FALSE; - display_attr_data = TRUE; - last_was_dset = FALSE; - } - break; - case 'i': - display_oid = TRUE; - last_was_dset = FALSE; - break; - case 'r': - display_char = TRUE; - break; - case 'V': - print_version(h5tools_getprogname()); - free_handler(hand, argc); - hand = NULL; - h5tools_setstatus(EXIT_SUCCESS); - goto done; - break; - case 'w': - { - int sh5tools_nCols = HDatoi(opt_arg); - - if (sh5tools_nCols <= 0) - h5tools_nCols = 65535; - else - h5tools_nCols = (unsigned)sh5tools_nCols; - last_was_dset = FALSE; - } - break; - case 'N': - display_all = 0; - - for (i = 0; i < argc; i++) - if (!hand[i].func) { - hand[i].func = handle_paths; - hand[i].obj = HDstrdup(opt_arg); - break; - } - - last_was_dset = FALSE; - break; - case 'a': - display_all = 0; - - for (i = 0; i < argc; i++) - if (!hand[i].func) { - hand[i].func = handle_attributes; - hand[i].obj = HDstrdup(opt_arg); - break; - } - - last_was_dset = FALSE; - break; - case 'd': - display_all = 0; - - for (i = 0; i < argc; i++) - if (!hand[i].func) { - hand[i].func = handle_datasets; - hand[i].obj = HDstrdup(opt_arg); - hand[i].subset_info = parse_subset_params(hand[i].obj); - last_dset = &hand[i]; - break; - } - - last_was_dset = TRUE; - break; - case 'f': - driver = opt_arg; - break; - case 'g': - display_all = 0; - - for (i = 0; i < argc; i++) - if (!hand[i].func) { - hand[i].func = handle_groups; - hand[i].obj = HDstrdup(opt_arg); - break; - } - - last_was_dset = FALSE; - break; - case 'l': - display_all = 0; - - for (i = 0; i < argc; i++) - if (!hand[i].func) { - hand[i].func = handle_links; - hand[i].obj = HDstrdup(opt_arg); - break; - } - - last_was_dset = FALSE; - break; - case 't': - display_all = 0; - - for (i = 0; i < argc; i++) - if (!hand[i].func) { - hand[i].func = handle_datatypes; - hand[i].obj = HDstrdup(opt_arg); - break; - } - - last_was_dset = FALSE; - break; - - case 'O': - if (h5tools_set_output_file(opt_arg, 0) < 0) { - usage(h5tools_getprogname()); - goto error; - } - break; - - case 'o': - if ( bin_output ) { - if (h5tools_set_data_output_file(opt_arg, 1) < 0) { - usage(h5tools_getprogname()); - goto error; - } - } - else { - if(display_attr_data && !display_data) { - if (h5tools_set_attr_output_file(opt_arg, 0) < 0) { - usage(h5tools_getprogname()); - goto error; - } - } - if(display_data || display_all) { - if (h5tools_set_data_output_file(opt_arg, 0) < 0) { - usage(h5tools_getprogname()); - goto error; - } - } - } - - usingdasho = TRUE; - last_was_dset = FALSE; - outfname = opt_arg; - break; - - case 'b': - if ( opt_arg != NULL) { - if ( ( bin_form = set_binary_form(opt_arg)) < 0) { - /* failed to set binary form */ - usage(h5tools_getprogname()); - goto error; - } - } - bin_output = TRUE; - if (outfname!=NULL) { - if (h5tools_set_data_output_file(outfname, 1) < 0) { - /* failed to set output file */ - usage(h5tools_getprogname()); - goto error; - } - - last_was_dset = FALSE; - } - break; - - case 'q': - if ( ( sort_by = set_sort_by(opt_arg)) < 0) { - /* failed to set "sort by" form */ - usage(h5tools_getprogname()); - goto error; - } - break; - - case 'z': - if ( ( sort_order = set_sort_order(opt_arg)) < 0) { - /* failed to set "sort order" form */ - usage(h5tools_getprogname()); - goto error; - } - break; - - case 'M': - if (!last_was_dset) { - error_msg("option `-%c' can only be used after --dataset option\n", opt); - goto error; - } - if (parse_mask_list(opt_arg) != SUCCEED){ - usage(h5tools_getprogname()); - goto error; - } - display_packed_bits = TRUE; - break; - case 'v': - display_vds_first = TRUE; - break; - case 'G': - vds_gap_size = HDatoi(opt_arg); - if (vds_gap_size < 0) { - usage(h5tools_getprogname()); - goto error; - } - break; - - /** begin XML parameters **/ - case 'x': - /* select XML output */ - doxml = TRUE; - useschema = TRUE; - h5tools_dump_header_format = NULL; - dump_function_table = &xml_function_table; - h5tools_nCols = 0; - break; - case 'u': - doxml = TRUE; - useschema = FALSE; - xmlnsprefix = ""; - h5tools_dump_header_format = NULL; - dump_function_table = &xml_function_table; - h5tools_nCols = 0; - break; - case 'D': - /* specify alternative XML DTD or schema */ - /* To Do: check format of this value? */ - xml_dtd_uri = opt_arg; - h5tools_nCols = 0; - break; - - case 'm': - /* specify alternative floating point printing format */ - fp_format = opt_arg; - h5tools_nCols = 0; - break; - - case 'X': - /* specify XML namespace (default="hdf5:"), or none */ - /* To Do: check format of this value? */ - if (!useschema) { - usage(h5tools_getprogname()); - goto error; - } - if (HDstrcmp(opt_arg,":") == 0) - xmlnsprefix = ""; - else - xmlnsprefix = opt_arg; - h5tools_nCols = 0; - break; - /** end XML parameters **/ - - /** begin subsetting parameters **/ - case 's': - case 'S': - case 'c': - case 'k': { - struct subset_t *s; - - if (!last_was_dset) { - error_msg("option `-%c' can only be used after --dataset option\n", opt); - goto error; - } - - if (last_dset->subset_info) { - /* - * This overrides the "terse" syntax if they actually mixed - * the two. - */ - s = last_dset->subset_info; - } - else { - last_dset->subset_info = s = (struct subset_t *)HDcalloc(1, sizeof(struct subset_t)); - } - - /* - * slightly convoluted, but...we are only interested in options - * for subsetting: "--start", "--stride", "--count", and "--block" - * which can come in any order. If we run out of parameters (EOF) - * or run into one which isn't a subsetting parameter (NOT s, S, - * c, or K), then we exit the do-while look, set the subset_info - * to the structure we've been filling. If we've reached the end - * of the options, we exit the parsing (goto parse_end) otherwise, - * since we've "read" the next option, we need to parse it. So we - * jump to the beginning of the switch statement (goto parse_start). - */ - do { - switch ((char)opt) { - case 's': - if (s->start.data) { - HDfree(s->start.data); - s->start.data = NULL; - } - parse_hsize_list(opt_arg, &s->start); - break; - case 'S': - if (s->stride.data) { - HDfree(s->stride.data); - s->stride.data = NULL; - } - parse_hsize_list(opt_arg, &s->stride); - break; - case 'c': - if (s->count.data) { - HDfree(s->count.data); - s->count.data = NULL; - } - parse_hsize_list(opt_arg, &s->count); - break; - case 'k': - if (s->block.data) { - HDfree(s->block.data); - s->block.data = NULL; - } - parse_hsize_list(opt_arg, &s->block); - break; - default: - goto end_collect; - } - } while ((opt = get_option(argc, argv, s_opts, l_opts)) != EOF); - -end_collect: - last_was_dset = FALSE; - - if (opt != EOF) - goto parse_start; - else - goto parse_end; - } - /** end subsetting parameters **/ - - case 'E': - enable_error_stack = TRUE; - break; - case 'C': - disable_compact_subset = TRUE; - break; - case 'h': - usage(h5tools_getprogname()); - free_handler(hand, argc); - hand = NULL; - h5tools_setstatus(EXIT_SUCCESS); - goto done; - case '?': - default: - usage(h5tools_getprogname()); - goto error; - } - } - -parse_end: - /* check for file name to be processed */ - if (argc <= opt_ind) { - error_msg("missing file name\n"); - usage(h5tools_getprogname()); - goto error; - } -done: - return hand; - -error: - if (hand) { - free_handler(hand, argc); - hand = NULL; - } - h5tools_setstatus(EXIT_FAILURE); - - return hand; -} - - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: HDF5 dumper - * - * Return: Success: 0 - * Failure: 1 - * - * Programmer: Ruey-Hsia Li - * - * Modifications: - * Albert Cheng - * 30. September 2000 - * Add the -o option--output file for datasets raw data - * - * REMcG - * November 2000 - * Changes to support XML. - * - * Bill Wendling - * Wednesday, 10. January 2001 - * Modified the way command line parameters are interpreted. They go - * through one function call now (get_option). - * - * Bill Wendling - * Tuesday, 20. February 2001 - * Moved command line parsing to separate function. Made various - * "display_*" flags global. - * - * REMcG - * August 2003 - * Major upgrade to XML support. - * - * Pedro Vicente - * September 2007 - * list objects in requested order (creation order or alphabetically) - * - *------------------------------------------------------------------------- - */ -int -main(int argc, const char *argv[]) -{ - hid_t fid = -1; - hid_t gid = -1; - H5E_auto2_t func; - H5E_auto2_t tools_func; - H5O_info_t oi; - struct handler_t *hand = NULL; - int i; - unsigned u; - void *edata; - void *tools_edata; - char *fname = NULL; - - h5tools_setprogname(PROGRAMNAME); - h5tools_setstatus(EXIT_SUCCESS); - h5tools_dump_header_format = &h5tools_standardformat; - dump_function_table = &ddl_function_table; - dump_indent = 0; - - /* Disable error reporting */ - H5Eget_auto2(H5E_DEFAULT, &func, &edata); - H5Eset_auto2(H5E_DEFAULT, NULL, NULL); - - /* Initialize h5tools lib */ - h5tools_init(); - - /* Disable tools error reporting */ - H5Eget_auto2(H5tools_ERR_STACK_g, &tools_func, &tools_edata); - H5Eset_auto2(H5tools_ERR_STACK_g, NULL, NULL); - - if((hand = parse_command_line(argc, argv))==NULL) { - goto done; - } - - if (bin_output && outfname == NULL) { - error_msg("binary output requires a file name, use -o \n"); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - - if (enable_error_stack) { - H5Eset_auto2(H5E_DEFAULT, func, edata); - H5Eset_auto2(H5tools_ERR_STACK_g, tools_func, tools_edata); - } - - /* Check for conflicting options */ - if (doxml) { - if (!display_all) { - error_msg("option \"%s\" not available for XML\n", - "to display selected objects"); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - else if (display_bb) { - error_msg("option \"%s\" not available for XML\n", "--boot-block"); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - else if (display_oid == 1) { - error_msg("option \"%s\" not available for XML\n", "--object-ids"); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - else if (display_char == TRUE) { - error_msg("option \"%s\" not available for XML\n", "--string"); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - else if (usingdasho) { - error_msg("option \"%s\" not available for XML\n", "--output"); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - } - else { - if (xml_dtd_uri) { - warn_msg("option \"%s\" only applies with XML: %s\n", "--xml-dtd", xml_dtd_uri); - } - } - - if (argc <= opt_ind) { - error_msg("missing file name\n"); - usage(h5tools_getprogname()); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - /* Initialize indexing options */ - h5trav_set_index(sort_by, sort_order); - - while(opt_ind < argc) { - fname = HDstrdup(argv[opt_ind++]); - - fid = h5tools_fopen(fname, H5F_ACC_RDONLY, H5P_DEFAULT, driver, NULL, 0); - - if (fid < 0) { - error_msg("unable to open file \"%s\"\n", fname); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - - /* allocate and initialize internal data structure */ - init_prefix(&prefix, prefix_len); - - /* Prepare to find objects that might be targets of a reference */ - fill_ref_path_table(fid); - - if(doxml) { - /* initialize XML */ - /* reset prefix! */ - HDstrcpy(prefix, ""); - - /* make sure the URI is initialized to something */ - if (xml_dtd_uri == NULL) { - if (useschema) { - xml_dtd_uri = DEFAULT_XSD; - } - else { - xml_dtd_uri = DEFAULT_DTD; - xmlnsprefix = ""; - } - } - else { - if (useschema && HDstrcmp(xmlnsprefix,"")) { - error_msg("Cannot set Schema URL for a qualified namespace--use -X or -U option with -D \n"); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - } - } - - /* Get object info for root group */ - if(H5Oget_info_by_name(fid, "/", &oi, H5P_DEFAULT) < 0) { - error_msg("internal error (file %s:line %d)\n", __FILE__, __LINE__); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - - /* Initialize object tables */ - if(table_list_add(fid, oi.fileno) < 0) { - error_msg("internal error (file %s:line %d)\n", __FILE__, __LINE__); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - group_table = table_list.tables[0].group_table; - dset_table = table_list.tables[0].dset_table; - type_table = table_list.tables[0].type_table; - - /* does there exist unamed committed datatype */ - for (u = 0; u < type_table->nobjs; u++) - if (!type_table->objs[u].recorded) { - unamedtype = 1; - break; - } /* end if */ - - /* start to dump - display file header information */ - if (!doxml) { - begin_obj(h5tools_dump_header_format->filebegin, fname, h5tools_dump_header_format->fileblockbegin); - } - else { - PRINTVALSTREAM(rawoutstream, "\n"); - - /* alternative first element, depending on schema or DTD. */ - if (useschema) { - if (HDstrcmp(xmlnsprefix,"") == 0) { - PRINTSTREAM(rawoutstream, "\n", - xml_dtd_uri); - } - else { - /* TO DO: make -url option work in this case (may need new option) */ - char *ns; - char *indx; - - ns = HDstrdup(xmlnsprefix); - indx = HDstrrchr(ns,(int)':'); - if (indx) *indx = '\0'; - - PRINTSTREAM(rawoutstream, "<%sHDF5-File xmlns:%s=\"http://hdfgroup.org/HDF5/XML/schema/HDF5-File.xsd\" " - "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " - "xsi:schemaLocation=\"http://hdfgroup.org/HDF5/XML/schema/HDF5-File " - "http://www.hdfgroup.org/HDF5/XML/schema/HDF5-File.xsd\">\n",xmlnsprefix,ns); - HDfree(ns); - } - } - else { - PRINTSTREAM(rawoutstream, "\n", xml_dtd_uri); - PRINTVALSTREAM(rawoutstream, "\n"); - } - } - - if (!doxml) { - if (display_fi) { - PRINTVALSTREAM(rawoutstream, "\n"); - dump_fcontents(fid); - end_obj(h5tools_dump_header_format->fileend,h5tools_dump_header_format->fileblockend); - PRINTVALSTREAM(rawoutstream, "\n"); - goto done; - } - - if (display_bb) - dump_fcpl(fid); - } - - if(display_all) { - if((gid = H5Gopen2(fid, "/", H5P_DEFAULT)) < 0) { - error_msg("unable to open root group\n"); - h5tools_setstatus(EXIT_FAILURE); - } - else { - if (!doxml) - dump_indent += COL; - dump_function_table->dump_group_function(gid, "/" ); - if (!doxml) - dump_indent -= COL; - PRINTVALSTREAM(rawoutstream, "\n"); - } - - if(H5Gclose(gid) < 0) { - error_msg("unable to close root group\n"); - h5tools_setstatus(EXIT_FAILURE); - } - - } - else { - /* Note: this option is not supported for XML */ - if(doxml) { - error_msg("internal error (file %s:line %d)\n", __FILE__, __LINE__); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } /* end if */ - - for(i = 0; i < argc; i++) { - if(hand[i].func) { - hand[i].func(fid, hand[i].obj, hand[i].subset_info, 1, NULL); - } - } - PRINTVALSTREAM(rawoutstream, "\n"); - } - - if (!doxml) { - end_obj(h5tools_dump_header_format->fileend, h5tools_dump_header_format->fileblockend); - PRINTVALSTREAM(rawoutstream, "\n"); - } - else { - PRINTSTREAM(rawoutstream, "\n", xmlnsprefix); - } - /* Free tables for objects */ - table_list_free(); - - if(fid >=0) - if (H5Fclose(fid) < 0) - h5tools_setstatus(EXIT_FAILURE); - - if(prefix) { - HDfree(prefix); - prefix = NULL; - } - if(fname) { - HDfree(fname); - fname = NULL; - } - } /* end while */ - - if(hand) - free_handler(hand, argc); - - /* To Do: clean up XML table */ - - leave(h5tools_getstatus()); - -done: - /* Free tables for objects */ - table_list_free(); - - if(fid >=0) - if (H5Fclose(fid) < 0) - h5tools_setstatus(EXIT_FAILURE); - - if(prefix) { - HDfree(prefix); - prefix = NULL; - } - if(fname) { - HDfree(fname); - fname = NULL; - } - - if(hand) - free_handler(hand, argc); - - /* To Do: clean up XML table */ - - H5Eset_auto2(H5E_DEFAULT, func, edata); - - leave(h5tools_getstatus()); -} - -/*------------------------------------------------------------------------- - * Function: h5_fileaccess - * - * Purpose: Returns a file access template which is the default template - * but with a file driver set according to the constant or - * environment variable HDF5_DRIVER - * - * Return: Success: A file access property list - * - * Failure: -1 - * - * Programmer: Robb Matzke - * Thursday, November 19, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -hid_t -h5_fileaccess(void) -{ - static const char *multi_letters = "msbrglo"; - const char *val = NULL; - const char *name; - char s[1024]; - hid_t fapl = -1; - - /* First use the environment variable, then the constant */ - val = HDgetenv("HDF5_DRIVER"); -#ifdef HDF5_DRIVER - if (!val) val = HDF5_DRIVER; -#endif - - if ((fapl=H5Pcreate(H5P_FILE_ACCESS))<0) return -1; - if (!val || !*val) return fapl; /*use default*/ - - HDstrncpy(s, val, sizeof s); - s[sizeof(s)-1] = '\0'; - if (NULL==(name=HDstrtok(s, " \t\n\r"))) return fapl; - - if (!HDstrcmp(name, "sec2")) { - /* Unix read() and write() system calls */ - if (H5Pset_fapl_sec2(fapl)<0) return -1; - } - else if (!HDstrcmp(name, "stdio")) { - /* Standard C fread() and fwrite() system calls */ - if (H5Pset_fapl_stdio(fapl)<0) return -1; - } - else if (!HDstrcmp(name, "core")) { - /* In-core temporary file with 1MB increment */ - if (H5Pset_fapl_core(fapl, 1024*1024, FALSE)<0) return -1; - } - else if (!HDstrcmp(name, "split")) { - /* Split meta data and raw data each using default driver */ - if (H5Pset_fapl_split(fapl, "-m.h5", H5P_DEFAULT, "-r.h5", H5P_DEFAULT) < 0) - return -1; - } - else if (!HDstrcmp(name, "multi")) { - /* Multi-file driver, general case of the split driver */ - H5FD_mem_t memb_map[H5FD_MEM_NTYPES]; - hid_t memb_fapl[H5FD_MEM_NTYPES]; - const char *memb_name[H5FD_MEM_NTYPES]; - char sv[H5FD_MEM_NTYPES][1024]; - haddr_t memb_addr[H5FD_MEM_NTYPES]; - H5FD_mem_t mt; - - HDmemset(memb_map, 0, sizeof memb_map); - HDmemset(memb_fapl, 0, sizeof memb_fapl); - HDmemset(memb_name, 0, sizeof memb_name); - HDmemset(memb_addr, 0, sizeof memb_addr); - - HDassert(HDstrlen(multi_letters)==H5FD_MEM_NTYPES); - for (mt=H5FD_MEM_DEFAULT; mt 0); - *prfx = (char *)HDcalloc(prfx_len, 1); -} - - -/*------------------------------------------------------------------------- - * Function: add_prefix - * - * Purpose: Add object to prefix - * - * Return: void - * - *------------------------------------------------------------------------- - */ -void -add_prefix(char **prfx, size_t *prfx_len, const char *name) -{ - size_t new_len = HDstrlen(*prfx) + HDstrlen(name) + 2; - - /* Check if we need more space */ - if(*prfx_len <= new_len) { - *prfx_len = new_len + 1; - *prfx = (char *)HDrealloc(*prfx, *prfx_len); - } - - /* Append object name to prefix */ - HDstrcat(HDstrcat(*prfx, "/"), name); -} /* end add_prefix */ - diff --git a/tools/h5dump/h5dump.h b/tools/h5dump/h5dump.h deleted file mode 100644 index 8224c02..0000000 --- a/tools/h5dump/h5dump.h +++ /dev/null @@ -1,115 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -#ifndef H5DUMP_H__ -#define H5DUMP_H__ - -#include "hdf5.h" -#include "H5private.h" -#include "h5tools.h" -#include "h5tools_utils.h" -#include "h5tools_ref.h" -#include "h5trav.h" -#include "h5dump_defines.h" - -/** - ** This is the global dispatch table for the dump functions. - **/ -/* the table of dump functions */ -typedef struct dump_functions_t { - void (*dump_group_function) (hid_t, const char *); - void (*dump_named_datatype_function) (hid_t, const char *); - void (*dump_dataset_function) (hid_t, const char *, struct subset_t *); - void (*dump_dataspace_function) (hid_t); - void (*dump_datatype_function) (hid_t); - herr_t (*dump_attribute_function) (hid_t, const char *, const H5A_info_t *, void *); - void (*dump_data_function) (hid_t, int, struct subset_t *, int); -} dump_functions; - -/* List of table structures. There is one table structure for each file */ -typedef struct h5dump_table_items_t { - unsigned long fileno; /* File number that these tables refer to */ - hid_t oid; /* ID of an object in this file, held open so fileno is consistent */ - table_t *group_table; /* Table of groups */ - table_t *dset_table; /* Table of datasets */ - table_t *type_table; /* Table of datatypes */ -} h5dump_table_items_t; -typedef struct h5dump_table_list_t { - size_t nalloc; - size_t nused; - h5dump_table_items_t *tables; -} h5dump_table_list_t; - -h5dump_table_list_t table_list = {0, 0, NULL}; -table_t *group_table = NULL, *dset_table = NULL, *type_table = NULL; -unsigned dump_indent = 0; /*how far in to indent the line */ - -int unamedtype = 0; /* shared datatype with no name */ -hbool_t hit_elink = FALSE; /* whether we have traversed an external link */ -size_t prefix_len = 1024; -char *prefix = NULL; -const char *fp_format = NULL; - -/* things to display or which are set via command line parameters */ -int display_all = TRUE; -int display_oid = FALSE; -int display_data = TRUE; -int display_attr_data = TRUE; -int display_char = FALSE; /*print 1-byte numbers as ASCII */ -int usingdasho = FALSE; -int display_bb = FALSE; /*superblock */ -int display_dcpl = FALSE; /*dcpl */ -int display_fi = FALSE; /*file index */ -int display_ai = TRUE; /*array index */ -int display_escape = FALSE; /*escape non printable characters */ -int display_region = FALSE; /*print region reference data */ -int disable_compact_subset= FALSE; /* disable compact form of subset notation */ -int display_packed_bits = FALSE; /*print 1-8 byte numbers as packed bits*/ -int include_attrs = TRUE; /* Display attributes */ -int display_vds_first = FALSE; /* vds display to all by default*/ -int vds_gap_size = 0; /* vds skip missing files default is none */ - -/* sort parameters */ -H5_index_t sort_by = H5_INDEX_NAME; /*sort_by [creation_order | name] */ -H5_iter_order_t sort_order = H5_ITER_INC; /*sort_order [ascending | descending] */ - -#define PACKED_BITS_MAX 8 /* Maximum number of packed-bits to display */ -#define PACKED_BITS_SIZE_MAX (8*sizeof(long long)) /* Maximum bits size of integer types of packed-bits */ -/* mask list for packed bits */ -unsigned long long packed_mask[PACKED_BITS_MAX]; /* packed bits are restricted to 8*sizeof(llong) bytes */ - -/* packed bits display parameters */ -unsigned packed_offset[PACKED_BITS_MAX]; -unsigned packed_length[PACKED_BITS_MAX]; - -/* - * The global table is set to either ddl_function_table or - * xml_function_table in the initialization. - */ -const dump_functions *dump_function_table; - -#ifdef __cplusplus -"C" { -#endif - -void add_prefix(char **prfx, size_t *prfx_len, const char *name); -hid_t h5_fileaccess(void); -ssize_t table_list_add(hid_t oid, unsigned long file_no); -ssize_t table_list_visited(unsigned long file_no); - -#ifdef __cplusplus -} -#endif - -#endif /* !H5DUMP_H__ */ diff --git a/tools/h5dump/h5dump_ddl.c b/tools/h5dump/h5dump_ddl.c deleted file mode 100644 index 182d570..0000000 --- a/tools/h5dump/h5dump_ddl.c +++ /dev/null @@ -1,2178 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -#include -#include - -#include "H5private.h" -#include "h5tools.h" -#include "h5tools_dump.h" -#include "h5tools_utils.h" -#include "h5tools_ref.h" -#include "h5trav.h" -#include "h5dump_extern.h" -#include "h5dump_ddl.h" - -typedef struct { - hid_t fid; /* File ID being traversed */ - const char *op_name; /* Object name wanted */ -} trav_handle_udata_t; - -typedef struct { - const char *path; /* Path of object being searched */ - const char *op_name; /* Object name wanted */ -} trav_attr_udata_t; - -/* callback function used by H5Literate() */ -static herr_t dump_all_cb(hid_t group, const char *name, const H5L_info_t *linfo, void *op_data); -static int dump_extlink(hid_t group, const char *linkname, const char *objname); - -/*------------------------------------------------------------------------- - * Function: dump_datatype - * - * Purpose: Dump the datatype. Datatype can be HDF5 predefined - * atomic datatype or committed/transient datatype. - * - * Return: void - * - * Programmer: Ruey-Hsia Li - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -void -dump_datatype(hid_t type) -{ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &h5tools_dataformat; - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - h5dump_type_table = type_table; - h5tools_dump_datatype(rawoutstream, outputformat, &ctx, type); - h5dump_type_table = NULL; -} - -/*------------------------------------------------------------------------- - * Function: dump_dataspace - * - * Purpose: Dump the dataspace. Dataspace can be named dataspace, - * array, or others. - * - * Return: void - * - * Programmer: Ruey-Hsia Li - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -void -dump_dataspace(hid_t space) -{ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &h5tools_dataformat; - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - h5tools_dump_dataspace(rawoutstream, outputformat, &ctx, space); -} - - -/*------------------------------------------------------------------------- - * Function: dump_attr_cb - * - * Purpose: attribute function callback called by H5Aiterate2, displays the attribute - * - * Return: Success: SUCCEED - * - * Failure: FAIL - * - * Programmer: Ruey-Hsia Li - * - * Modifications: Pedro Vicente, October 4, 2007 - * Added H5A_info_t parameter to conform with H5Aiterate2 - * - *------------------------------------------------------------------------- - */ -herr_t -dump_attr_cb(hid_t oid, const char *attr_name, const H5A_info_t H5_ATTR_UNUSED *info, void H5_ATTR_UNUSED *_op_data) -{ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &h5tools_dataformat; - h5tool_format_t string_dataformat; - - hid_t attr_id; - herr_t ret = SUCCEED; - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - attr_id = H5Aopen(oid, attr_name, H5P_DEFAULT); - oid_output = display_oid; - data_output = display_data; - attr_data_output = display_attr_data; - - string_dataformat = *outputformat; - - if (fp_format) { - string_dataformat.fmt_double = fp_format; - string_dataformat.fmt_float = fp_format; - } - - if (h5tools_nCols == 0) { - string_dataformat.line_ncols = 65535; - string_dataformat.line_per_line = 1; - } - else - string_dataformat.line_ncols = h5tools_nCols; - - string_dataformat.do_escape = display_escape; - outputformat = &string_dataformat; - - h5dump_type_table = type_table; - h5tools_dump_attribute(rawoutstream, outputformat, &ctx, attr_name, attr_id, display_ai, display_char); - h5dump_type_table = NULL; - - if(attr_id < 0) { - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - } - - return ret; -} - - -/*------------------------------------------------------------------------- - * Function: dump_all_cb - * - * Purpose: function callback called by H5Literate, - * displays everything in the specified object - * - * Return: Success: SUCCEED - * - * Failure: FAIL - * - * Programmer: Ruey-Hsia Li - * - * Modifications: - * RMcG, November 2000 - * Added XML support. Also, optionally checks the op_data argument - * - * PVN, May 2008 - * Dump external links - * - *------------------------------------------------------------------------- - */ -static herr_t -dump_all_cb(hid_t group, const char *name, const H5L_info_t *linfo, void H5_ATTR_UNUSED *op_data) -{ - hid_t obj; - hid_t dapl_id = H5P_DEFAULT; /* dataset access property list ID */ - herr_t ret = SUCCEED; - char *obj_path = NULL; /* Full path of object */ - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &h5tools_dataformat; - h5tool_format_t string_dataformat; - hsize_t curr_pos = 0; /* total data element position */ - - /* setup */ - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - string_dataformat = *outputformat; - - if (fp_format) { - string_dataformat.fmt_double = fp_format; - string_dataformat.fmt_float = fp_format; - } - - if (h5tools_nCols == 0) { - string_dataformat.line_ncols = 65535; - string_dataformat.line_per_line = 1; - } - else - string_dataformat.line_ncols = h5tools_nCols; - - string_dataformat.do_escape = display_escape; - outputformat = &string_dataformat; - - /* Build the object's path name */ - obj_path = (char *)HDmalloc(HDstrlen(prefix) + HDstrlen(name) + 2); - if(!obj_path) { - ret = FAIL; - goto done; - } - - HDstrcpy(obj_path, prefix); - HDstrcat(obj_path, "/"); - HDstrcat(obj_path, name); - - if(linfo->type == H5L_TYPE_HARD) { - H5O_info_t oinfo; - - /* Stat the object */ - if(H5Oget_info_by_name(group, name, &oinfo, H5P_DEFAULT) < 0) { - error_msg("unable to get object information for \"%s\"\n", name); - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - goto done; - } /* end if */ - - switch(oinfo.type) { - case H5O_TYPE_GROUP: - if((obj = H5Gopen2(group, name, H5P_DEFAULT)) < 0) { - error_msg("unable to dump group \"%s\"\n", name); - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - } - else { - char *old_prefix; /* Pointer to previous prefix */ - - /* Keep copy of prefix before iterating into group */ - old_prefix = HDstrdup(prefix); - HDassert(old_prefix); - - /* Append group name to prefix */ - add_prefix(&prefix, &prefix_len, name); - - /* Iterate into group */ - dump_function_table->dump_group_function(obj, name); - - /* Restore old prefix name */ - HDstrcpy(prefix, old_prefix); - HDfree(old_prefix); - - /* Close group */ - H5Gclose(obj); - } - break; - - case H5O_TYPE_DATASET: - if(display_data) { - if ((dapl_id = H5Pcreate(H5P_DATASET_ACCESS)) < 0) { - error_msg("error in creating default access property list ID\n"); - } - if (display_vds_first) { - if(H5Pset_virtual_view(dapl_id, H5D_VDS_FIRST_MISSING) < 0) - error_msg("error in setting access property list ID, virtual_view\n"); - } - if (vds_gap_size > 0) { - if(H5Pset_virtual_printf_gap(dapl_id, (hsize_t)vds_gap_size) < 0) - error_msg("error in setting access property list ID, virtual_printf_gap\n"); - } - } - if((obj = H5Dopen2(group, name, dapl_id)) >= 0) { - if(oinfo.rc > 1 || hit_elink) { - obj_t *found_obj; /* Found object */ - - found_obj = search_obj(dset_table, oinfo.addr); - - if(found_obj == NULL) { - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "%s \"%s\" %s", - h5tools_dump_header_format->datasetbegin, name, - h5tools_dump_header_format->datasetblockbegin); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - error_msg("internal error (file %s:line %d)\n", __FILE__, __LINE__); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - if(HDstrlen(h5tools_dump_header_format->datasetblockend)) { - h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->datasetblockend); - if(HDstrlen(h5tools_dump_header_format->datasetend)) - h5tools_str_append(&buffer, " "); - } - if(HDstrlen(h5tools_dump_header_format->datasetend)) - h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->datasetend); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level--; - - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - if (dapl_id != H5P_DEFAULT) - H5Pclose(dapl_id); - H5Dclose(obj); - goto done; - } - else if(found_obj->displayed) { - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "%s \"%s\" %s", - h5tools_dump_header_format->datasetbegin, name, - h5tools_dump_header_format->datasetblockbegin); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level++; - - ctx.need_prefix = TRUE; - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "%s \"%s\"", HARDLINK, found_obj->objname); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - if(HDstrlen(h5tools_dump_header_format->datasetblockend)) { - h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->datasetblockend); - if(HDstrlen(h5tools_dump_header_format->datasetend)) - h5tools_str_append(&buffer, " "); - } - if(HDstrlen(h5tools_dump_header_format->datasetend)) - h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->datasetend); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - if (dapl_id != H5P_DEFAULT) - H5Pclose(dapl_id); - H5Dclose(obj); - goto done; - } - else { - found_obj->displayed = TRUE; - } - } /* end if */ - - dump_function_table->dump_dataset_function(obj, name, NULL); - if (dapl_id != H5P_DEFAULT) - H5Pclose(dapl_id); - H5Dclose(obj); - } - else { - if (dapl_id != H5P_DEFAULT) - H5Pclose(dapl_id); - error_msg("unable to dump dataset \"%s\"\n", name); - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - } - break; - - case H5O_TYPE_NAMED_DATATYPE: - if((obj = H5Topen2(group, name, H5P_DEFAULT)) < 0) { - error_msg("unable to dump datatype \"%s\"\n", name); - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - } - else { - dump_function_table->dump_named_datatype_function(obj, name); - H5Tclose(obj); - } - break; - - case H5O_TYPE_UNKNOWN: - case H5O_TYPE_NTYPES: - default: - error_msg("unknown object \"%s\"\n", name); - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - } - } /* end if */ - else { - char *targbuf; - - switch(linfo->type) { - case H5L_TYPE_SOFT: - targbuf = (char *)HDmalloc(linfo->u.val_size); - HDassert(targbuf); - - ctx.need_prefix = TRUE; - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "%s \"%s\" %s", - h5tools_dump_header_format->softlinkbegin, name, - h5tools_dump_header_format->softlinkblockbegin); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level++; - - if(H5Lget_val(group, name, targbuf, linfo->u.val_size, H5P_DEFAULT) < 0) { - error_msg("unable to get link value\n"); - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - } - else { - /* print the value of a soft link */ - /* Standard DDL: no modification */ - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "LINKTARGET \"%s\"", targbuf); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - if(HDstrlen(h5tools_dump_header_format->softlinkblockend)) { - h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->softlinkblockend); - if(HDstrlen(h5tools_dump_header_format->softlinkend)) - h5tools_str_append(&buffer, " "); - } - if(HDstrlen(h5tools_dump_header_format->softlinkend)) - h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->softlinkend); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - HDfree(targbuf); - break; - - case H5L_TYPE_EXTERNAL: - targbuf = (char *)HDmalloc(linfo->u.val_size); - HDassert(targbuf); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "%s \"%s\" %s", - h5tools_dump_header_format->extlinkbegin, name, - h5tools_dump_header_format->extlinkblockbegin); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - if(H5Lget_val(group, name, targbuf, linfo->u.val_size, H5P_DEFAULT) < 0) { - indentation(dump_indent); - error_msg("unable to get external link value\n"); - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - } /* end if */ - else { - const char *filename; - const char *targname; - - if(H5Lunpack_elink_val(targbuf, linfo->u.val_size, NULL, &filename, &targname) < 0) { - indentation(dump_indent); - error_msg("unable to unpack external link value\n"); - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - } /* end if */ - else { - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "TARGETFILE \"%s\"", filename); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "TARGETPATH \"%s\"", targname); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - /* dump the external link */ - dump_extlink(group, name, targname); - ctx.indent_level--; - } /* end else */ - } /* end else */ - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - if(HDstrlen(h5tools_dump_header_format->extlinkblockend)) { - h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->extlinkblockend); - if(HDstrlen(h5tools_dump_header_format->extlinkend)) - h5tools_str_append(&buffer, " "); - } - if(HDstrlen(h5tools_dump_header_format->extlinkend)) - h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->extlinkend); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - HDfree(targbuf); - break; - - case H5L_TYPE_ERROR: - case H5L_TYPE_MAX: - HDassert(0); - /* fall through */ - case H5L_TYPE_HARD: - default: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "%s \"%s\" %s", - h5tools_dump_header_format->udlinkbegin, name, - h5tools_dump_header_format->udlinkblockbegin); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "LINKCLASS %d", linfo->type); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - /* Render the element */ - h5tools_str_reset(&buffer); - if(HDstrlen(h5tools_dump_header_format->udlinkblockend)) { - h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->udlinkblockend); - if(HDstrlen(h5tools_dump_header_format->udlinkend)) - h5tools_str_append(&buffer, " "); - } - if(HDstrlen(h5tools_dump_header_format->udlinkend)) - h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->udlinkend); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - break; - } /* end switch */ - } /* end else */ - -done: - - h5tools_str_close(&buffer); - - if(obj_path) - HDfree(obj_path); - return ret; -} - -/*------------------------------------------------------------------------- - * Function: attr_iteration - * - * Purpose: Iterate and display attributes within the specified group - * - * Return: void - * - *------------------------------------------------------------------------- - */ -void -attr_iteration(hid_t gid, unsigned attr_crt_order_flags) -{ - /* attribute iteration: if there is a request to do H5_INDEX_CRT_ORDER and tracking order is set - in the group for attributes, then, sort by creation order, otherwise by name */ - if(include_attrs) { - if((sort_by == H5_INDEX_CRT_ORDER) && (attr_crt_order_flags & H5P_CRT_ORDER_TRACKED)) { - if(H5Aiterate2(gid, sort_by, sort_order, NULL, dump_attr_cb, NULL) < 0) { - error_msg("error getting attribute information\n"); - h5tools_setstatus(EXIT_FAILURE); - } /* end if */ - } /* end if */ - else { - if(H5Aiterate2(gid, H5_INDEX_NAME, sort_order, NULL, dump_attr_cb, NULL) < 0) { - error_msg("error getting attribute information\n"); - h5tools_setstatus(EXIT_FAILURE); - } /* end if */ - } /* end else */ - } -} - -/*------------------------------------------------------------------------- - * Function: link_iteration - * - * Purpose: Iterate and display links within the specified group - * - * Return: void - * - *------------------------------------------------------------------------- - */ -void -link_iteration(hid_t gid, unsigned crt_order_flags) -{ - - /* if there is a request to do H5_INDEX_CRT_ORDER and tracking order is set - in the group, then, sort by creation order, otherwise by name */ - if((sort_by == H5_INDEX_CRT_ORDER) && (crt_order_flags & H5P_CRT_ORDER_TRACKED)) - H5Literate(gid, sort_by, sort_order, NULL, dump_all_cb, NULL); - else - H5Literate(gid, H5_INDEX_NAME, sort_order, NULL, dump_all_cb, NULL); -} - -/*------------------------------------------------------------------------- - * Function: dump_named_datatype - * - * Purpose: Dump named datatype - * - * Return: void - * - * Programmer: Ruey-Hsia Li - * - * Modifications: - * Pedro Vicente, March 27, 2006 - * added display of attributes - * Pedro Vicente, October 4, 2007, added parameters to H5Aiterate2() to allow for - * other iteration orders - * - *------------------------------------------------------------------------- - */ -void -dump_named_datatype(hid_t tid, const char *name) -{ - H5O_info_t oinfo; - unsigned attr_crt_order_flags; - hid_t tcpl_id = -1; /* datatype creation property list ID */ - hsize_t curr_pos = 0; /* total data element position */ - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &h5tools_dataformat; - h5tool_format_t string_dataformat; - - /* setup */ - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - string_dataformat = *outputformat; - - if (fp_format) { - string_dataformat.fmt_double = fp_format; - string_dataformat.fmt_float = fp_format; - } - - if (h5tools_nCols == 0) { - string_dataformat.line_ncols = 65535; - string_dataformat.line_per_line = 1; - } - else - string_dataformat.line_ncols = h5tools_nCols; - - string_dataformat.do_escape = display_escape; - outputformat = &string_dataformat; - - if ((tcpl_id = H5Tget_create_plist(tid)) < 0) { - error_msg("error in getting creation property list ID\n"); - h5tools_setstatus(EXIT_FAILURE); - } - - /* query the creation properties for attributes */ - if (H5Pget_attr_creation_order(tcpl_id, &attr_crt_order_flags) < 0) { - error_msg("error in getting creation properties\n"); - h5tools_setstatus(EXIT_FAILURE); - } - - if(H5Pclose(tcpl_id) < 0) { - error_msg("error in closing creation property list ID\n"); - h5tools_setstatus(EXIT_FAILURE); - } - - ctx.need_prefix = TRUE; - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "%s \"%s\" %s", - h5tools_dump_header_format->datatypebegin, name, - h5tools_dump_header_format->datatypeblockbegin); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - H5Oget_info(tid, &oinfo); - - /* Must check for uniqueness of all objects if we've traversed an elink, - * otherwise only check if the reference count > 1. - */ - if(oinfo.rc > 1 || hit_elink) { - obj_t *found_obj; /* Found object */ - - found_obj = search_obj(type_table, oinfo.addr); - - if (found_obj == NULL) { - error_msg("internal error (file %s:line %d)\n", __FILE__, __LINE__); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - else if (found_obj->displayed) { - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "%s \"%s\"", HARDLINK, found_obj->objname); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - goto done; - } - else - found_obj->displayed = TRUE; - } /* end if */ - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_print_datatype(rawoutstream, &buffer, outputformat, &ctx, tid, FALSE); - - if(H5Tget_class(tid) != H5T_COMPOUND) { - h5tools_str_append(&buffer, ";"); - } - - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - /* print attributes */ - dump_indent += COL; - - attr_iteration(tid, attr_crt_order_flags); - - dump_indent -= COL; - -done: - /* Render the element */ - h5tools_str_reset(&buffer); - if(HDstrlen(h5tools_dump_header_format->datatypeblockend)) { - h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->datatypeblockend); - if(HDstrlen(h5tools_dump_header_format->datatypeend)) - h5tools_str_append(&buffer, " "); - } - if(HDstrlen(h5tools_dump_header_format->datatypeend)) - h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->datatypeend); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - h5tools_str_close(&buffer); -} - -/*------------------------------------------------------------------------- - * Function: dump_group - * - * Purpose: Dump everything within the specified group - * - * Return: void - * - * Programmer: Ruey-Hsia Li - * - * Modifications: - * - * Call to dump_all_cb -- add parameter to select everything. - * - * Pedro Vicente, October 1, 2007 - * handle several iteration orders for attributes and groups - * - *------------------------------------------------------------------------- - */ -void -dump_group(hid_t gid, const char *name) -{ - H5O_info_t oinfo; - hid_t dset; - hid_t type; - hid_t gcpl_id; - unsigned crt_order_flags; - unsigned attr_crt_order_flags; - char type_name[1024]; - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &h5tools_dataformat; - h5tool_format_t string_dataformat; - hsize_t curr_pos = 0; /* total data element position */ - - if ((gcpl_id = H5Gget_create_plist(gid)) < 0) { - error_msg("error in getting group creation property list ID\n"); - h5tools_setstatus(EXIT_FAILURE); - } - - /* query the group creation properties for attributes */ - if (H5Pget_attr_creation_order(gcpl_id, &attr_crt_order_flags) < 0) { - error_msg("error in getting group creation properties\n"); - h5tools_setstatus(EXIT_FAILURE); - } - - /* query the group creation properties */ - if(H5Pget_link_creation_order(gcpl_id, &crt_order_flags) < 0) { - error_msg("error in getting group creation properties\n"); - h5tools_setstatus(EXIT_FAILURE); - } - - if(H5Pclose(gcpl_id) < 0) { - error_msg("error in closing group creation property list ID\n"); - h5tools_setstatus(EXIT_FAILURE); - } - - /* setup */ - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - string_dataformat = *outputformat; - - if (fp_format) { - string_dataformat.fmt_double = fp_format; - string_dataformat.fmt_float = fp_format; - } - - if (h5tools_nCols == 0) { - string_dataformat.line_ncols = 65535; - string_dataformat.line_per_line = 1; - } - else - string_dataformat.line_ncols = h5tools_nCols; - - string_dataformat.do_escape = display_escape; - outputformat = &string_dataformat; - - ctx.need_prefix = TRUE; - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "%s \"%s\" %s", - h5tools_dump_header_format->groupbegin, name, - h5tools_dump_header_format->groupblockbegin); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level++; - dump_indent += COL; - - if(!HDstrcmp(name, "/") && unamedtype) { - unsigned u; /* Local index variable */ - - /* dump unamed type in root group */ - for(u = 0; u < type_table->nobjs; u++) - if(!type_table->objs[u].recorded) { - dset = H5Dopen2(gid, type_table->objs[u].objname, H5P_DEFAULT); - type = H5Dget_type(dset); - sprintf(type_name, "#"H5_PRINTF_HADDR_FMT, type_table->objs[u].objno); - dump_function_table->dump_named_datatype_function(type, type_name); - H5Tclose(type); - H5Dclose(dset); - } - } /* end if */ - - if(display_oid) - h5tools_dump_oid(rawoutstream, outputformat, &ctx, gid); - - h5tools_dump_comment(rawoutstream, outputformat, &ctx, gid); - - H5Oget_info(gid, &oinfo); - - /* Must check for uniqueness of all objects if we've traversed an elink, - * otherwise only check if the reference count > 1. - */ - if(oinfo.rc > 1 || hit_elink) { - obj_t *found_obj; /* Found object */ - - found_obj = search_obj(group_table, oinfo.addr); - - if (found_obj == NULL) { - error_msg("internal error (file %s:line %d)\n", __FILE__, __LINE__); - h5tools_setstatus(EXIT_FAILURE); - } - else if (found_obj->displayed) { - ctx.need_prefix = TRUE; - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "%s \"%s\"", HARDLINK, found_obj->objname); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - else { - found_obj->displayed = TRUE; - attr_iteration(gid, attr_crt_order_flags); - link_iteration(gid, crt_order_flags); - } - } - else { - attr_iteration(gid, attr_crt_order_flags); - link_iteration(gid, crt_order_flags); - } - - dump_indent -= COL; - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - if(HDstrlen(h5tools_dump_header_format->groupblockend)) { - h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->groupblockend); - if(HDstrlen(h5tools_dump_header_format->groupend)) - h5tools_str_append(&buffer, " "); - } - if(HDstrlen(h5tools_dump_header_format->groupend)) - h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->groupend); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - h5tools_str_close(&buffer); -} - -/*------------------------------------------------------------------------- - * Function: dump_dataset - * - * Purpose: Dump the specified data set - * - * Return: void - * - * Programmer: Ruey-Hsia Li - * - * Modifications: - * Pedro Vicente, 2004, added dataset creation property list display - * Pedro Vicente, October 4, 2007, added parameters to H5Aiterate2() to allow for - * other iteration orders - * - *------------------------------------------------------------------------- - */ -void -dump_dataset(hid_t did, const char *name, struct subset_t *sset) -{ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &h5tools_dataformat; - h5tool_format_t string_dataformat; - hid_t type, space; - unsigned attr_crt_order_flags; - hid_t dcpl_id; /* dataset creation property list ID */ - h5tools_str_t buffer; /* string into which to render */ - hsize_t curr_pos = 0; /* total data element position */ - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - string_dataformat = *outputformat; - - if (fp_format) { - string_dataformat.fmt_double = fp_format; - string_dataformat.fmt_float = fp_format; - } - - if (h5tools_nCols == 0) { - string_dataformat.line_ncols = 65535; - string_dataformat.line_per_line = 1; - } - else - string_dataformat.line_ncols = h5tools_nCols; - - string_dataformat.do_escape = display_escape; - outputformat = &string_dataformat; - - if ((dcpl_id = H5Dget_create_plist(did)) < 0) { - error_msg("error in getting creation property list ID\n"); - h5tools_setstatus(EXIT_FAILURE); - } - - /* query the creation properties for attributes */ - if (H5Pget_attr_creation_order(dcpl_id, &attr_crt_order_flags) < 0) { - error_msg("error in getting creation properties\n"); - h5tools_setstatus(EXIT_FAILURE); - } - - /* setup */ - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "%s \"%s\" %s", - h5tools_dump_header_format->datasetbegin, name, - h5tools_dump_header_format->datasetblockbegin); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - h5tools_dump_comment(rawoutstream, outputformat, &ctx, did); - - dump_indent += COL; - ctx.indent_level++; - - type = H5Dget_type(did); - h5dump_type_table = type_table; - h5tools_dump_datatype(rawoutstream, outputformat, &ctx, type); - h5dump_type_table = NULL; - - space = H5Dget_space(did); - h5tools_dump_dataspace(rawoutstream, outputformat, &ctx, space); - H5Sclose(space); - - if(display_oid) { - h5tools_dump_oid(rawoutstream, outputformat, &ctx, did); - } - - if(display_dcpl) { - h5dump_type_table = type_table; - h5tools_dump_dcpl(rawoutstream, outputformat, &ctx, dcpl_id, type, did); - h5dump_type_table = NULL; - } - H5Pclose(dcpl_id); - - if(display_data) { - unsigned data_loop = 1; - unsigned u; - - if(display_packed_bits) - data_loop = packed_bits_num; - for(u = 0; u < data_loop; u++) { - if(display_packed_bits) { - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - /* Render the element */ - h5tools_str_reset(&buffer); - packed_data_mask = packed_mask[u]; - packed_data_offset = packed_offset[u]; - packed_data_length = packed_length[u]; - h5tools_print_packed_bits(&buffer, type); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - switch(H5Tget_class(type)) { - case H5T_TIME: - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "DATA{ not yet implemented.}"); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level--; - break; - - case H5T_INTEGER: - case H5T_FLOAT: - case H5T_STRING: - case H5T_BITFIELD: - case H5T_OPAQUE: - case H5T_COMPOUND: - case H5T_REFERENCE: - case H5T_ENUM: - case H5T_VLEN: - case H5T_ARRAY: - { - h5tools_dump_data(rawoutstream, outputformat, &ctx, did, TRUE, sset, display_ai, display_char); - } - break; - - case H5T_NO_CLASS: - case H5T_NCLASSES: - default: - HDassert(0); - break; - } /* end switch */ - } /* for(u=0; udatasetblockend)) { - h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->datasetblockend); - if(HDstrlen(h5tools_dump_header_format->datasetend)) - h5tools_str_append(&buffer, " "); - } - if(HDstrlen(h5tools_dump_header_format->datasetend)) - h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->datasetend); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - h5tools_str_close(&buffer); -} - -/*------------------------------------------------------------------------- - * Function: dump_data - * - * Purpose: Dump attribute or dataset data - * - * Return: void - * - * Programmer: Ruey-Hsia Li - * - * Modifications: pvn, print the matrix indices - * Albert Cheng, 2004/11/18 - * Add --string printing for attributes too. - * - *------------------------------------------------------------------------- - */ -void -dump_data(hid_t obj_id, int obj_data, struct subset_t *sset, int display_index) -{ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &h5tools_dataformat; - h5tool_format_t string_dataformat; - int print_dataset = FALSE; - - string_dataformat = *outputformat; - - if (fp_format) { - string_dataformat.fmt_double = fp_format; - string_dataformat.fmt_float = fp_format; - } - - if (h5tools_nCols == 0) { - string_dataformat.line_ncols = 65535; - string_dataformat.line_per_line = 1; - } - else - string_dataformat.line_ncols = h5tools_nCols; - - string_dataformat.do_escape = display_escape; - outputformat = &string_dataformat; - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - if(obj_data == DATASET_DATA) - print_dataset = TRUE; - h5tools_dump_data(rawoutstream, outputformat, &ctx, obj_id, print_dataset, sset, display_index, display_char); -} - - -/*------------------------------------------------------------------------- - * Function: dump_fcpl - * - * Purpose: prints file creation property list information - * - * Return: void - * - * Programmer: pvn - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -void -dump_fcpl(hid_t fid) -{ - hid_t fcpl; /* file creation property list ID */ - hsize_t userblock; /* userblock size retrieved from FCPL */ - size_t off_size; /* size of offsets in the file */ - size_t len_size; /* size of lengths in the file */ - H5F_file_space_type_t fs_strategy; /* file space strategy */ - hsize_t fs_threshold; /* free-space section threshold */ - H5F_info2_t finfo; /* file information */ -#ifdef SHOW_FILE_DRIVER - hid_t fapl; /* file access property list ID */ - hid_t fdriver; /* file driver */ - char dname[32]; /* buffer to store driver name */ -#endif - unsigned sym_lk; /* symbol table B-tree leaf 'K' value */ - unsigned sym_ik; /* symbol table B-tree internal 'K' value */ - unsigned istore_ik; /* indexed storage B-tree internal 'K' value */ - - fcpl=H5Fget_create_plist(fid); - H5Fget_info2(fid, &finfo); - H5Pget_userblock(fcpl,&userblock); - H5Pget_sizes(fcpl,&off_size,&len_size); - H5Pget_sym_k(fcpl,&sym_ik,&sym_lk); - H5Pget_istore_k(fcpl,&istore_ik); - H5Pget_file_space(fcpl, &fs_strategy, &fs_threshold); - H5Pclose(fcpl); -#ifdef SHOW_FILE_DRIVER - fapl=h5_fileaccess(); - fdriver=H5Pget_driver(fapl); - H5Pclose(fapl); -#endif - - /*------------------------------------------------------------------------- - * SUPER_BLOCK - *------------------------------------------------------------------------- - */ - PRINTSTREAM(rawoutstream, "\n%s %s\n",SUPER_BLOCK, BEGIN); - indentation(dump_indent + COL); - PRINTSTREAM(rawoutstream, "%s %u\n","SUPERBLOCK_VERSION", finfo.super.version); - indentation(dump_indent + COL); - PRINTSTREAM(rawoutstream, "%s %u\n","FREELIST_VERSION", finfo.free.version); - indentation(dump_indent + COL); - PRINTSTREAM(rawoutstream, "%s %u\n","SYMBOLTABLE_VERSION", 0); /* Retain this for backward compatibility, for now (QAK) */ - indentation(dump_indent + COL); - PRINTSTREAM(rawoutstream, "%s %u\n","OBJECTHEADER_VERSION", finfo.sohm.version); - indentation(dump_indent + COL); - PRINTSTREAM(rawoutstream,"%s %zu\n","OFFSET_SIZE", off_size); - indentation(dump_indent + COL); - PRINTSTREAM(rawoutstream,"%s %zu\n","LENGTH_SIZE", len_size); - indentation(dump_indent + COL); - PRINTSTREAM(rawoutstream, "%s %u\n","BTREE_RANK", sym_ik); - indentation(dump_indent + COL); - PRINTSTREAM(rawoutstream, "%s %d\n","BTREE_LEAF", sym_lk); - -#ifdef SHOW_FILE_DRIVER - if(H5FD_CORE==fdriver) - HDstrcpy(dname,"H5FD_CORE"); -#ifdef H5_HAVE_DIRECT - else if(H5FD_DIRECT==fdriver) - HDstrcpy(dname,"H5FD_DIRECT"); -#endif - else if(H5FD_FAMILY==fdriver) - HDstrcpy(dname,"H5FD_FAMILY"); - else if(H5FD_LOG==fdriver) - HDstrcpy(dname,"H5FD_LOG"); - else if(H5FD_MPIO==fdriver) - HDstrcpy(dname,"H5FD_MPIO"); - else if(H5FD_MULTI==fdriver) - HDstrcpy(dname,"H5FD_MULTI"); - else if(H5FD_SEC2==fdriver) - HDstrcpy(dname,"H5FD_SEC2"); - else if(H5FD_STDIO==fdriver) - HDstrcpy(dname,"H5FD_STDIO"); - else - HDstrcpy(dname,"Unknown driver"); - - /* Take out this because the driver used can be different from the - * standard output. */ - /*indentation(dump_indent + COL); - PRINTSTREAM(rawoutstream, "%s %s\n","FILE_DRIVER", dname);*/ -#endif - indentation(dump_indent + COL); - PRINTSTREAM(rawoutstream, "%s %u\n","ISTORE_K", istore_ik); - - indentation(dump_indent + COL); - if(fs_strategy == H5F_FILE_SPACE_ALL_PERSIST) { - PRINTSTREAM(rawoutstream, "%s %s\n", "FILE_SPACE_STRATEGY", "H5F_FILE_SPACE_ALL_PERSIST"); - } else if(fs_strategy == H5F_FILE_SPACE_ALL) { - PRINTSTREAM(rawoutstream, "%s %s\n", "FILE_SPACE_STRATEGY", "H5F_FILE_SPACE_ALL"); - } else if(fs_strategy == H5F_FILE_SPACE_AGGR_VFD) { - PRINTSTREAM(rawoutstream, "%s %s\n", "FILE_SPACE_STRATEGY", "H5F_FILE_SPACE_AGGR_VFD"); - } else if(fs_strategy == H5F_FILE_SPACE_VFD) { - PRINTSTREAM(rawoutstream, "%s %s\n", "FILE_SPACE_STRATEGY", "H5F_FILE_SPACE_VFD"); - } else - PRINTSTREAM(rawoutstream, "%s %s\n", "FILE_SPACE_STRATEGY", "Unknown strategy"); - indentation(dump_indent + COL); - PRINTSTREAM(rawoutstream, "%s %Hu\n","FREE_SPACE_THRESHOLD", fs_threshold); - - /*------------------------------------------------------------------------- - * USER_BLOCK - *------------------------------------------------------------------------- - */ - indentation(dump_indent + COL); - PRINTSTREAM(rawoutstream, "USER_BLOCK %s\n",BEGIN); - indentation(dump_indent + COL + COL); - PRINTSTREAM(rawoutstream,"%s %Hu\n","USERBLOCK_SIZE", userblock); - indentation(dump_indent + COL); - PRINTSTREAM(rawoutstream, "%s\n",END); - - PRINTSTREAM(rawoutstream, "%s",END); -} - -/*------------------------------------------------------------------------- - * Function: dump_fcontents - * - * Purpose: prints all objects - * - * Return: void - * - * Programmer: pvn - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -void -dump_fcontents(hid_t fid) -{ - PRINTSTREAM(rawoutstream, "%s %s\n",FILE_CONTENTS, BEGIN); - - /* special case of unamed types in root group */ - if (unamedtype) { - unsigned u; - - for (u = 0; u < type_table->nobjs; u++) { - if (!type_table->objs[u].recorded) - PRINTSTREAM(rawoutstream, " %-10s /#"H5_PRINTF_HADDR_FMT"\n", "datatype", type_table->objs[u].objno); - } - } - - /* print objects in the files */ - h5trav_print(fid); - - PRINTSTREAM(rawoutstream, " %s\n",END); -} - -static herr_t -attr_search(hid_t oid, const char *attr_name, const H5A_info_t H5_ATTR_UNUSED *ainfo, void *_op_data) -{ - herr_t ret = SUCCEED; - int j; - char *obj_op_name; - char *obj_name; - trav_attr_udata_t *attr_data = (trav_attr_udata_t*)_op_data; - const char *buf = attr_data->path; - const char *op_name = attr_data->op_name; - - j = (int)HDstrlen(op_name) - 1; - /* find the last / */ - while(j >= 0) { - if(op_name[j] == '/' && (j == 0 || (j > 0 && op_name[j - 1] != '\\'))) - break; - j--; - } - - obj_op_name = h5tools_str_replace(op_name + j + 1, "\\/", "/"); - - if(obj_op_name == NULL) { - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - } - else { - if(HDstrcmp(attr_name, obj_op_name)==0) { - size_t u, v, w; - - /* object name */ - u = HDstrlen(buf); - v = HDstrlen(op_name); - w = u + 1 + v + 1 + 2; - obj_name = (char *)HDmalloc(w); - if(obj_name == NULL) { - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - } - else { - HDmemset(obj_name, '\0', w); - if(op_name[0] != '/') { - HDstrncat(obj_name, buf, u + 1); - if(buf[u - 1] != '/') - HDstrncat(obj_name, "/", (size_t)2); - } - HDstrncat(obj_name, op_name, v + 1); - - handle_attributes(oid, obj_name, NULL, 0, NULL); - HDfree(obj_name); - } - } - HDfree(obj_op_name); - } - return ret; -} /* end attr_search() */ - -static herr_t -obj_search(const char *path, const H5O_info_t *oi, const char H5_ATTR_UNUSED *already_visited, void *_op_data) -{ - trav_handle_udata_t *handle_data = (trav_handle_udata_t*)_op_data; - const char *op_name = handle_data->op_name; - trav_attr_udata_t attr_data; - - attr_data.path = path; - attr_data.op_name = op_name; - H5Aiterate_by_name(handle_data->fid, path, H5_INDEX_NAME, H5_ITER_INC, NULL, attr_search, (void*)&attr_data, H5P_DEFAULT); - - if(HDstrcmp(path, op_name) == 0) { - switch(oi->type) { - case H5O_TYPE_GROUP: - handle_groups(handle_data->fid, path, NULL, 0, NULL); - break; - - case H5O_TYPE_DATASET: - handle_datasets(handle_data->fid, path, NULL, 0, NULL); - break; - - case H5O_TYPE_NAMED_DATATYPE: - handle_datatypes(handle_data->fid, path, NULL, 0, NULL); - break; - - case H5O_TYPE_UNKNOWN: - case H5O_TYPE_NTYPES: - default: - error_msg("unknown object type value\n"); - h5tools_setstatus(EXIT_FAILURE); - } /* end switch */ - } - - return 0; -} /* end obj_search() */ - -static herr_t -lnk_search(const char *path, const H5L_info_t *li, void *_op_data) -{ - size_t search_len; - size_t k; - char *search_name; - trav_handle_udata_t *handle_data = (trav_handle_udata_t*)_op_data; - const char *op_name = handle_data->op_name; - - search_len = HDstrlen(op_name); - if(search_len > 0 && op_name[0] != '/') - k = 2; - else - k = 1; - search_name = (char *)HDmalloc(search_len + k); - if(search_name == NULL) { - error_msg("creating temporary link\n"); - h5tools_setstatus(EXIT_FAILURE); - } - else { - if (k == 2) { - HDstrcpy(search_name, "/"); - HDstrncat(search_name, op_name, search_len + 1); - } - else - HDstrncpy(search_name, op_name, search_len + 1); - search_name[search_len + k - 1] = '\0'; - - if(HDstrcmp(path, search_name) == 0) { - switch(li->type) { - case H5L_TYPE_SOFT: - case H5L_TYPE_EXTERNAL: - handle_links(handle_data->fid, op_name, NULL, 0, NULL); - break; - - case H5L_TYPE_HARD: - case H5L_TYPE_MAX: - case H5L_TYPE_ERROR: - default: - error_msg("unknown link type value\n"); - h5tools_setstatus(EXIT_FAILURE); - break; - } /* end switch() */ - } - HDfree(search_name); - } - return 0; -} /* end lnk_search() */ - -/*------------------------------------------------------------------------- - * Function: handle_paths - * - * Purpose: Handle objects from the command. - * - * Return: void - * - *------------------------------------------------------------------------- - */ -void -handle_paths(hid_t fid, const char *path_name, void H5_ATTR_UNUSED * data, int H5_ATTR_UNUSED pe, const char H5_ATTR_UNUSED *display_name) -{ - hid_t gid = -1; - - if((gid = H5Gopen2(fid, "/", H5P_DEFAULT)) < 0) { - error_msg("unable to open root group\n"); - h5tools_setstatus(EXIT_FAILURE); - } - else { - hid_t gcpl_id; - unsigned crt_order_flags; - unsigned attr_crt_order_flags; - trav_handle_udata_t handle_udata; /* User data for traversal */ - - if ((gcpl_id = H5Gget_create_plist(gid)) < 0) { - error_msg("error in getting group creation property list ID\n"); - h5tools_setstatus(EXIT_FAILURE); - } - - /* query the group creation properties for attributes */ - if (H5Pget_attr_creation_order(gcpl_id, &attr_crt_order_flags) < 0) { - error_msg("error in getting group creation properties\n"); - h5tools_setstatus(EXIT_FAILURE); - } - - /* query the group creation properties */ - if(H5Pget_link_creation_order(gcpl_id, &crt_order_flags) < 0) { - error_msg("error in getting group creation properties\n"); - h5tools_setstatus(EXIT_FAILURE); - } - - if(H5Pclose(gcpl_id) < 0) { - error_msg("error in closing group creation property list ID\n"); - h5tools_setstatus(EXIT_FAILURE); - } - - handle_udata.fid = fid; - handle_udata.op_name = path_name; - if(h5trav_visit(fid, "/", TRUE, TRUE, obj_search, lnk_search, &handle_udata) < 0) { - error_msg("error traversing information\n"); - h5tools_setstatus(EXIT_FAILURE); - } - } -} - -/*------------------------------------------------------------------------- - * Function: handle_attributes - * - * Purpose: Handle the attributes from the command. - * - * Return: void - * - * Programmer: Bill Wendling - * Tuesday, 9. January 2001 - * - * Modifications: - * - * PVN, May 2008 - * add an extra parameter PE, to allow printing/not printing of error messages - * - *------------------------------------------------------------------------- - */ -void -handle_attributes(hid_t fid, const char *attr, void H5_ATTR_UNUSED * data, int H5_ATTR_UNUSED pe, const char H5_ATTR_UNUSED *display_name) -{ - hid_t oid = -1; - hid_t attr_id = -1; - char *obj_name = NULL; - char *attr_name = NULL; - int j; - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &h5tools_dataformat; - h5tool_format_t string_dataformat; - hsize_t curr_pos = 0; /* total data element position */ - - j = (int)HDstrlen(attr) - 1; - obj_name = (char *)HDmalloc((size_t)j + 2); - if(obj_name == NULL) - goto error; - - /* find the last / */ - while(j >= 0) { - if (attr[j] == '/' && (j==0 || (j>0 && attr[j-1]!='\\'))) - break; - j--; - } - - /* object name */ - if(j == -1) - HDstrcpy(obj_name, "/"); - else { - HDstrncpy(obj_name, attr, (size_t)j + 1); - obj_name[j + 1] = '\0'; - } /* end else */ - - dump_indent += COL; - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - string_dataformat = *outputformat; - - if (fp_format) { - string_dataformat.fmt_double = fp_format; - string_dataformat.fmt_float = fp_format; - } - - if (h5tools_nCols == 0) { - string_dataformat.line_ncols = 65535; - string_dataformat.line_per_line = 1; - } - else - string_dataformat.line_ncols = h5tools_nCols; - - string_dataformat.do_escape = display_escape; - outputformat = &string_dataformat; - - attr_name = h5tools_str_replace(attr + j + 1, "\\/", "/"); - - /* handle error case: cannot open the object with the attribute */ - if((oid = H5Oopen(fid, obj_name, H5P_DEFAULT)) < 0) { - /* setup */ - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "%s \"%s\" %s", - h5tools_dump_header_format->attributebegin, attr, - h5tools_dump_header_format->attributeblockbegin); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - error_msg("unable to open object \"%s\"\n", obj_name); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - /* Render the element */ - h5tools_str_reset(&buffer); - if(HDstrlen(h5tools_dump_header_format->attributeblockend)) { - h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->attributeblockend); - if(HDstrlen(h5tools_dump_header_format->attributeend)) - h5tools_str_append(&buffer, " "); - } - if(HDstrlen(h5tools_dump_header_format->attributeend)) - h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->attributeend); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - h5tools_str_close(&buffer); - - goto error; - } /* end if */ - - attr_id = H5Aopen(oid, attr_name, H5P_DEFAULT); - oid_output = display_oid; - data_output = display_data; - attr_data_output = display_attr_data; - - h5dump_type_table = type_table; - h5tools_dump_attribute(rawoutstream, outputformat, &ctx, attr_name, attr_id, display_ai, display_char); - h5dump_type_table = NULL; - - if(attr_id < 0) { - goto error; - } - - /* Close object */ - if(H5Oclose(oid) < 0) { - goto error; - } /* end if */ - - HDfree(obj_name); - HDfree(attr_name); - dump_indent -= COL; - return; - -error: - h5tools_setstatus(EXIT_FAILURE); - if(obj_name) - HDfree(obj_name); - - if (attr_name) - HDfree(attr_name); - - H5E_BEGIN_TRY { - H5Oclose(oid); - H5Aclose(attr_id); - } H5E_END_TRY; - dump_indent -= COL; -} - -/*------------------------------------------------------------------------- - * Function: handle_datasets - * - * Purpose: Handle the datasets from the command. - * - * Return: void - * - * Programmer: Bill Wendling - * Tuesday, 9. January 2001 - * - * Modifications: - * Pedro Vicente, Tuesday, January 15, 2008 - * check for block overlap\ - * - * Pedro Vicente, May 8, 2008 - * added a flag PE that prints/not prints error messages - * added for cases of external links not found, to avoid printing of - * objects not found, since external links are dumped on a trial error basis - * - *------------------------------------------------------------------------- - */ -void -handle_datasets(hid_t fid, const char *dset, void *data, int pe, const char *display_name) -{ - H5O_info_t oinfo; - hid_t dsetid; - hid_t dapl_id = H5P_DEFAULT; /* dataset access property list ID */ - struct subset_t *sset = (struct subset_t *)data; - const char *real_name = display_name ? display_name : dset; - - if(display_data) { - if ((dapl_id = H5Pcreate(H5P_DATASET_ACCESS)) < 0) { - error_msg("error in creating default access property list ID\n"); - } - if (display_vds_first) { - if(H5Pset_virtual_view(dapl_id, H5D_VDS_FIRST_MISSING) < 0) - error_msg("error in setting access property list ID, virtual_view\n"); - } - if (vds_gap_size > 0) { - if(H5Pset_virtual_printf_gap(dapl_id, (hsize_t)vds_gap_size) < 0) - error_msg("error in setting access property list ID, virtual_printf_gap\n"); - } - } - if((dsetid = H5Dopen2(fid, dset, dapl_id)) < 0) { - if (pe) - handle_links(fid, dset, data, pe, display_name); - return; - } /* end if */ - - if(sset) { - unsigned int i; - unsigned int ndims; - hid_t sid = H5Dget_space(dsetid); - int ndims_res = H5Sget_simple_extent_ndims(sid); - - H5Sclose(sid); - if(ndims_res < 0) { - error_msg("H5Sget_simple_extent_ndims failed\n"); - h5tools_setstatus(EXIT_FAILURE); - return; - } - ndims = (unsigned)ndims_res; - - if(!sset->start.data || !sset->stride.data || !sset->count.data || !sset->block.data) { - /* they didn't specify a ``stride'' or ``block''. default to 1 in all - * dimensions */ - if(!sset->start.data) { - /* default to (0, 0, ...) for the start coord */ - sset->start.data = (hsize_t *)HDcalloc((size_t)ndims, sizeof(hsize_t)); - sset->start.len = ndims; - } - - if(!sset->stride.data) { - sset->stride.data = (hsize_t *)HDcalloc((size_t)ndims, sizeof(hsize_t)); - sset->stride.len = ndims; - for (i = 0; i < ndims; i++) - sset->stride.data[i] = 1; - } - - if(!sset->count.data) { - sset->count.data = (hsize_t *)HDcalloc((size_t)ndims, sizeof(hsize_t)); - sset->count.len = ndims; - for (i = 0; i < ndims; i++) - sset->count.data[i] = 1; - } - - if(!sset->block.data) { - sset->block.data = (hsize_t *)HDcalloc((size_t)ndims, sizeof(hsize_t)); - sset->block.len = ndims; - for (i = 0; i < ndims; i++) - sset->block.data[i] = 1; - } - } - - /*------------------------------------------------------------------------- - * check for dimension overflow - *------------------------------------------------------------------------- - */ - if(sset->start.len > ndims) { - error_msg("number of start dims (%u) exceed dataset dims (%u)\n", sset->start.len, ndims); - h5tools_setstatus(EXIT_FAILURE); - return; - } - if(sset->stride.len > ndims) { - error_msg("number of stride dims (%u) exceed dataset dims (%u)\n", sset->stride.len, ndims); - h5tools_setstatus(EXIT_FAILURE); - return; - } - if(sset->count.len > ndims) { - error_msg("number of count dims (%u) exceed dataset dims (%u)\n", sset->count.len, ndims); - h5tools_setstatus(EXIT_FAILURE); - return; - } - if(sset->block.len > ndims) { - error_msg("number of block dims (%u) exceed dataset dims (%u)\n", sset->block.len, ndims); - h5tools_setstatus(EXIT_FAILURE); - return; - } - - /*------------------------------------------------------------------------- - * check for block overlap - *------------------------------------------------------------------------- - */ - for(i = 0; i < ndims; i++) { - if(sset->count.data[i] > 1) { - if(sset->stride.data[i] < sset->block.data[i]) { - error_msg("wrong subset selection; blocks overlap\n"); - h5tools_setstatus(EXIT_FAILURE); - return; - } /* end if */ - } /* end if */ - } /* end for */ - } /* end if */ - - - H5Oget_info(dsetid, &oinfo); - if(oinfo.rc > 1 || hit_elink) { - obj_t *found_obj; /* Found object */ - - found_obj = search_obj(dset_table, oinfo.addr); - - if(found_obj) { - if (found_obj->displayed) { - PRINTVALSTREAM(rawoutstream, "\n"); - indentation(dump_indent); - begin_obj(h5tools_dump_header_format->datasetbegin, real_name, h5tools_dump_header_format->datasetblockbegin); - PRINTVALSTREAM(rawoutstream, "\n"); - indentation(dump_indent + COL); - PRINTSTREAM(rawoutstream, "%s \"%s\"\n", HARDLINK, found_obj->objname); - indentation(dump_indent); - end_obj(h5tools_dump_header_format->datasetend, h5tools_dump_header_format->datasetblockend); - } - else { - found_obj->displayed = TRUE; - dump_indent += COL; - dump_dataset(dsetid, real_name, sset); - dump_indent -= COL; - } - } - else - h5tools_setstatus(EXIT_FAILURE); - } - else { - dump_indent += COL; - dump_dataset(dsetid, real_name, sset); - dump_indent -= COL; - } - if (dapl_id != H5P_DEFAULT) - H5Pclose(dapl_id); - if(H5Dclose(dsetid) < 0) - h5tools_setstatus(EXIT_FAILURE); -} - -/*------------------------------------------------------------------------- - * Function: handle_groups - * - * Purpose: Handle the groups from the command. - * - * Return: void - * - * Programmer: Bill Wendling - * Tuesday, 9. January 2001 - * - * Modifications: Pedro Vicente, September 26, 2007 - * handle creation order - * - * Pedro Vicente, May 8, 2008 - * added a flag PE that prints/not prints error messages - * added for cases of external links not found, to avoid printing of - * objects not found, since external links are dumped on a trial error basis - * - *------------------------------------------------------------------------- - */ -void -handle_groups(hid_t fid, const char *group, void H5_ATTR_UNUSED *data, int pe, const char *display_name) -{ - hid_t gid; - const char *real_name = display_name ? display_name : group; - - if((gid = H5Gopen2(fid, group, H5P_DEFAULT)) < 0) { - if (pe) { - PRINTVALSTREAM(rawoutstream, "\n"); - begin_obj(h5tools_dump_header_format->groupbegin, real_name, h5tools_dump_header_format->groupblockbegin); - PRINTVALSTREAM(rawoutstream, "\n"); - indentation(COL); - error_msg("unable to open group \"%s\"\n", real_name); - end_obj(h5tools_dump_header_format->groupend, h5tools_dump_header_format->groupblockend); - h5tools_setstatus(EXIT_FAILURE); - } - } - else { - size_t new_len = HDstrlen(group) + 1; - - if(prefix_len <= new_len) { - prefix_len = new_len; - prefix = (char *)HDrealloc(prefix, prefix_len); - } /* end if */ - - HDstrcpy(prefix, group); - - dump_indent += COL; - dump_group(gid, real_name); - dump_indent -= COL; - - if(H5Gclose(gid) < 0) - h5tools_setstatus(EXIT_FAILURE); - } /* end else */ -} /* end handle_groups() */ - -/*------------------------------------------------------------------------- - * Function: handle_links - * - * Purpose: Handle soft or UD links from the command. - * - * Return: void - * - * Programmer: Bill Wendling - * Tuesday, 9. January 2001 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -void -handle_links(hid_t fid, const char *links, void H5_ATTR_UNUSED * data, int H5_ATTR_UNUSED pe, const char H5_ATTR_UNUSED *display_name) -{ - H5L_info_t linfo; - - if(H5Lget_info(fid, links, &linfo, H5P_DEFAULT) < 0) { - error_msg("unable to get link info from \"%s\"\n", links); - h5tools_setstatus(EXIT_FAILURE); - } - else if(linfo.type == H5L_TYPE_HARD) { - error_msg("\"%s\" is a hard link\n", links); - h5tools_setstatus(EXIT_FAILURE); - } - else { - char *buf = (char *)HDmalloc(linfo.u.val_size); - PRINTVALSTREAM(rawoutstream, "\n"); - - switch(linfo.type) { - case H5L_TYPE_SOFT: /* Soft link */ - begin_obj(h5tools_dump_header_format->softlinkbegin, links, h5tools_dump_header_format->softlinkblockbegin); - PRINTVALSTREAM(rawoutstream, "\n"); - indentation(COL); - if(H5Lget_val(fid, links, buf, linfo.u.val_size, H5P_DEFAULT) >= 0) { - PRINTSTREAM(rawoutstream, "LINKTARGET \"%s\"\n", buf); - } - else { - error_msg("h5dump error: unable to get link value for \"%s\"\n", links); - h5tools_setstatus(EXIT_FAILURE); - } - end_obj(h5tools_dump_header_format->softlinkend, h5tools_dump_header_format->softlinkblockend); - break; - - case H5L_TYPE_EXTERNAL: - begin_obj(h5tools_dump_header_format->udlinkbegin, links, h5tools_dump_header_format->udlinkblockbegin); - PRINTVALSTREAM(rawoutstream, "\n"); - indentation(COL); - begin_obj(h5tools_dump_header_format->extlinkbegin, links, h5tools_dump_header_format->extlinkblockbegin); - PRINTVALSTREAM(rawoutstream, "\n"); - if(H5Lget_val(fid, links, buf, linfo.u.val_size, H5P_DEFAULT) >= 0) { - const char *elink_file; - const char *elink_path; - - if(H5Lunpack_elink_val(buf, linfo.u.val_size, NULL, &elink_file, &elink_path)>=0) { - indentation(COL); - PRINTSTREAM(rawoutstream, "LINKCLASS %d\n", linfo.type); - indentation(COL); - PRINTSTREAM(rawoutstream, "TARGETFILE \"%s\"\n", elink_file); - indentation(COL); - PRINTSTREAM(rawoutstream, "TARGETPATH \"%s\"\n", elink_path); - } - else { - error_msg("h5dump error: unable to unpack external link value for \"%s\"\n", links); - h5tools_setstatus(EXIT_FAILURE); - } - } - else { - error_msg("h5dump error: unable to get external link value for \"%s\"\n", links); - h5tools_setstatus(EXIT_FAILURE); - } - end_obj(h5tools_dump_header_format->extlinkend, h5tools_dump_header_format->extlinkblockend); - break; - - case H5L_TYPE_ERROR: - case H5L_TYPE_MAX: - HDassert(0); - /* fall through */ - case H5L_TYPE_HARD: - default: - begin_obj(h5tools_dump_header_format->udlinkbegin, links, h5tools_dump_header_format->udlinkblockbegin); - PRINTVALSTREAM(rawoutstream, "\n"); - indentation(COL); - begin_obj(h5tools_dump_header_format->udlinkbegin, links, h5tools_dump_header_format->udlinkblockbegin); - PRINTVALSTREAM(rawoutstream, "\n"); - indentation(COL); - PRINTSTREAM(rawoutstream, "LINKCLASS %d\n", linfo.type); - end_obj(h5tools_dump_header_format->udlinkend, h5tools_dump_header_format->udlinkblockend); - break; - } /* end switch */ - HDfree(buf); - } /* end else */ -} - -/*------------------------------------------------------------------------- - * Function: handle_datatypes - * - * Purpose: Handle the datatypes from the command. - * - * Return: void - * - * Programmer: Bill Wendling - * Tuesday, 9. January 2001 - * - * Modifications: - * - * Pedro Vicente, May 8, 2008 - * added a flag PE that prints/not prints error messages - * added for cases of external links not found, to avoid printing of - * objects not found, since external links are dumped on a trial error basis - * - *------------------------------------------------------------------------- - */ -void -handle_datatypes(hid_t fid, const char *type, void H5_ATTR_UNUSED * data, int pe, const char *display_name) -{ - hid_t type_id; - const char *real_name = display_name ? display_name : type; - - if((type_id = H5Topen2(fid, type, H5P_DEFAULT)) < 0) { - /* check if type is unamed datatype */ - unsigned idx = 0; - - while(idx < type_table->nobjs ) { - char name[128]; - - if(!type_table->objs[idx].recorded) { - /* unamed datatype */ - sprintf(name, "/#"H5_PRINTF_HADDR_FMT, type_table->objs[idx].objno); - - if(!HDstrcmp(name, real_name)) - break; - } /* end if */ - - idx++; - } /* end while */ - - if(idx == type_table->nobjs) { - if (pe) { - /* unknown type */ - PRINTVALSTREAM(rawoutstream, "\n"); - begin_obj(h5tools_dump_header_format->datatypebegin, real_name, h5tools_dump_header_format->datatypeblockbegin); - PRINTVALSTREAM(rawoutstream, "\n"); - indentation(COL); - error_msg("unable to open datatype \"%s\"\n", real_name); - end_obj(h5tools_dump_header_format->datatypeend, h5tools_dump_header_format->datatypeblockend); - h5tools_setstatus(EXIT_FAILURE); - } - } - else { - hid_t dsetid = H5Dopen2(fid, type_table->objs[idx].objname, H5P_DEFAULT); - type_id = H5Dget_type(dsetid); - - dump_indent += COL; - dump_named_datatype(type_id, real_name); - dump_indent -= COL; - - H5Tclose(type_id); - H5Dclose(dsetid); - } - } - else { - dump_indent += COL; - dump_named_datatype(type_id, real_name); - dump_indent -= COL; - - if(H5Tclose(type_id) < 0) - h5tools_setstatus(EXIT_FAILURE); - } -} - - -/*------------------------------------------------------------------------- - * Function: dump_extlink - * - * made by: PVN - * - * Purpose: Dump an external link - * Since external links are soft links, they are dumped on a trial error - * basis, attempting to dump as a dataset, as a group and as a named datatype - * Error messages are supressed - * - * Modifications: - * Neil Fortner - * 13 October 2008 - * Function basically rewritten. No longer directly opens the target file, - * now initializes a new set of tables for the external file. No longer - * dumps on a trial and error basis, but errors are still suppressed. - * - *------------------------------------------------------------------------- - */ -static int -dump_extlink(hid_t group, const char *linkname, const char *objname) -{ - hid_t oid; - H5O_info_t oi; - table_t *old_group_table = group_table; - table_t *old_dset_table = dset_table; - table_t *old_type_table = type_table; - hbool_t old_hit_elink; - ssize_t idx; - - /* Open target object */ - if ((oid = H5Oopen(group, linkname, H5P_DEFAULT)) < 0) - goto fail; - - /* Get object info */ - if (H5Oget_info(oid, &oi) < 0) { - H5Oclose(oid); - goto fail; - } - - /* Check if we have visited this file already */ - if ((idx = table_list_visited(oi.fileno)) < 0) { - /* We have not visited this file, build object tables */ - if ((idx = table_list_add(oid, oi.fileno)) < 0) { - H5Oclose(oid); - goto fail; - } - } - - /* Do not recurse through an external link into the original file (idx=0) */ - if (idx) { - /* Update table pointers */ - group_table = table_list.tables[idx].group_table; - dset_table = table_list.tables[idx].dset_table; - type_table = table_list.tables[idx].type_table; - - /* We will now traverse the external link, set this global to indicate this */ - old_hit_elink = hit_elink; - hit_elink = TRUE; - - /* add some indentation to distinguish that these objects are external */ - dump_indent += COL; - - /* Recurse into the external file */ - switch (oi.type) { - case H5O_TYPE_GROUP: - handle_groups(group, linkname, NULL, 0, objname); - break; - - case H5O_TYPE_DATASET: - handle_datasets(group, linkname, NULL, 0, objname); - break; - - case H5O_TYPE_NAMED_DATATYPE: - handle_datatypes(group, linkname, NULL, 0, objname); - break; - - case H5O_TYPE_UNKNOWN: - case H5O_TYPE_NTYPES: - default: - h5tools_setstatus(EXIT_FAILURE); - } - - dump_indent -= COL; - - /* Reset table pointers */ - group_table = old_group_table; - dset_table = old_dset_table; - type_table = old_type_table; - - /* Reset hit_elink */ - hit_elink = old_hit_elink; - } /* end if */ - - if (H5Idec_ref(oid) < 0) - h5tools_setstatus(EXIT_FAILURE); - - return SUCCEED; - -fail: - return FAIL; -} - diff --git a/tools/h5dump/h5dump_ddl.h b/tools/h5dump/h5dump_ddl.h deleted file mode 100644 index 2b3f61e..0000000 --- a/tools/h5dump/h5dump_ddl.h +++ /dev/null @@ -1,52 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#ifndef H5DUMP_DDL_H__ -#define H5DUMP_DDL_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* The dump functions of the dump_function_table */ -/* standard format: no change */ -void dump_group(hid_t, const char *); -void dump_named_datatype(hid_t, const char *); -void dump_dataset(hid_t, const char *, struct subset_t *); -void dump_dataspace(hid_t space); -void dump_datatype(hid_t type); -void dump_data(hid_t, int, struct subset_t *, int); -void dump_fcpl(hid_t fid); -void dump_fcontents(hid_t fid); - -/* callback function used by H5Aiterate2() */ -herr_t dump_attr_cb(hid_t loc_id, const char *attr_name, const H5A_info_t *info, void *_op_data); - -/* other iteration functions */ -void link_iteration(hid_t gid, unsigned crt_order_flags); -void attr_iteration(hid_t gid, unsigned attr_crt_order_flags); - -void handle_paths(hid_t fid, const char *path_name, void *data, int pe, const char *display_name); -void handle_datasets(hid_t fid, const char *dset, void *data, int pe, const char *display_name); -void handle_attributes(hid_t fid, const char *attr, void H5_ATTR_UNUSED * data, int H5_ATTR_UNUSED pe, const char H5_ATTR_UNUSED *display_name); -void handle_groups(hid_t fid, const char *group, void H5_ATTR_UNUSED *data, int pe, const char *display_name); -void handle_links(hid_t fid, const char *links, void H5_ATTR_UNUSED * data, int H5_ATTR_UNUSED pe, const char H5_ATTR_UNUSED *display_name); -void handle_datatypes(hid_t fid, const char *type, void H5_ATTR_UNUSED * data, int pe, const char *display_name); - -#ifdef __cplusplus -} -#endif - -#endif /* !H5DUMP_DDL_H__ */ diff --git a/tools/h5dump/h5dump_defines.h b/tools/h5dump/h5dump_defines.h deleted file mode 100644 index 2be2dcc..0000000 --- a/tools/h5dump/h5dump_defines.h +++ /dev/null @@ -1,56 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -#ifndef H5DUMP_DEFINES_H__ -#define H5DUMP_DEFINES_H__ - -#define H5DUMP_MAX_RANK H5S_MAX_RANK - -#define ATTRIBUTE_DATA 0 -#define DATASET_DATA 1 -#define ENUM_DATA 2 -#define COL 3 - -/* Macros for displaying objects */ -#define begin_obj(obj,name,begin) \ - do { \ - if ((name)) { \ - PRINTSTREAM(rawoutstream, "%s \"%s\" %s", (obj), (name), (begin)); \ - } \ - else { \ - PRINTSTREAM(rawoutstream, "%s %s", (obj), (begin)); \ - } \ - } while(0); - -#define end_obj(obj,end) \ - do { \ - if(HDstrlen(end)) { \ - PRINTSTREAM(rawoutstream, "%s", end); \ - if(HDstrlen(obj)) \ - PRINTVALSTREAM(rawoutstream, " "); \ - } \ - if(HDstrlen(obj)) \ - PRINTSTREAM(rawoutstream, "%s", obj); \ - } while(0); - - -/* 3 private values: can't be set, but can be read. - Note: these are defined in H5Zprivate, they are - duplicated here. - */ -#define H5_SZIP_LSB_OPTION_MASK 8 -#define H5_SZIP_MSB_OPTION_MASK 16 -#define H5_SZIP_RAW_OPTION_MASK 128 - -#endif /* !H5DUMP_DEFINES_H__ */ diff --git a/tools/h5dump/h5dump_extern.h b/tools/h5dump/h5dump_extern.h deleted file mode 100644 index 8fef1b9..0000000 --- a/tools/h5dump/h5dump_extern.h +++ /dev/null @@ -1,114 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -#ifndef H5DUMP_EXTERN_H__ -#define H5DUMP_EXTERN_H__ - -#include "hdf5.h" -#include "H5private.h" -#include "h5tools.h" -#include "h5tools_utils.h" -#include "h5tools_ref.h" -#include "h5trav.h" -#include "h5dump_defines.h" - -/** - ** This is the global dispatch table for the dump functions. - **/ -/* the table of dump functions */ -typedef struct dump_functions_t { - void (*dump_group_function) (hid_t, const char *); - void (*dump_named_datatype_function) (hid_t, const char *); - void (*dump_dataset_function) (hid_t, const char *, struct subset_t *); - void (*dump_dataspace_function) (hid_t); - void (*dump_datatype_function) (hid_t); - herr_t (*dump_attribute_function) (hid_t, const char *, const H5A_info_t *, void *); - void (*dump_data_function) (hid_t, int, struct subset_t *, int); -} dump_functions; - -/* List of table structures. There is one table structure for each file */ -typedef struct h5dump_table_list_t { - size_t nalloc; - size_t nused; - struct { - unsigned long fileno; /* File number that these tables refer to */ - hid_t oid; /* ID of an object in this file, held open so fileno is consistent */ - table_t *group_table; /* Table of groups */ - table_t *dset_table; /* Table of datasets */ - table_t *type_table; /* Table of datatypes */ - } *tables; -} h5dump_table_list_t; - -extern h5dump_table_list_t table_list; -extern table_t *group_table, *dset_table, *type_table; -extern unsigned dump_indent; /*how far in to indent the line */ - -extern int unamedtype; /* shared datatype with no name */ -extern hbool_t hit_elink; /* whether we have traversed an external link */ -extern size_t prefix_len; -extern char *prefix; -extern const char *fp_format; - -/* things to display or which are set via command line parameters */ -extern int display_all; -extern int display_oid; -extern int display_data; -extern int display_attr_data; -extern int display_char; /*print 1-byte numbers as ASCII */ -extern int usingdasho; -extern int display_bb; /*superblock */ -extern int display_dcpl; /*dcpl */ -extern int display_fi; /*file index */ -extern int display_ai; /*array index */ -extern int display_escape; /*escape non printable characters */ -extern int display_region; /*print region reference data */ -extern int disable_compact_subset; /* disable compact form of subset notation */ -extern int display_packed_bits; /*print 1-8 byte numbers as packed bits*/ -extern int include_attrs; /* Display attributes */ -extern int display_vds_first; /* vds display to first missing */ -extern int vds_gap_size; /* vds skip missing files */ - -/* sort parameters */ -extern H5_index_t sort_by; /*sort_by [creation_order | name] */ -extern H5_iter_order_t sort_order; /*sort_order [ascending | descending] */ - -#define PACKED_BITS_MAX 8 /* Maximum number of packed-bits to display */ -#define PACKED_BITS_SIZE_MAX 8*sizeof(long long) /* Maximum bits size of integer types of packed-bits */ -/* mask list for packed bits */ -extern unsigned long long packed_mask[PACKED_BITS_MAX]; /* packed bits are restricted to 8*sizeof(llong) bytes */ - -/* packed bits display parameters */ -extern unsigned packed_offset[PACKED_BITS_MAX]; -extern unsigned packed_length[PACKED_BITS_MAX]; - -/* - * The global table is set to either ddl_function_table or - * xml_function_table in the initialization. - */ -extern const dump_functions *dump_function_table; - -#ifdef __cplusplus -extern "C" { -#endif - -void add_prefix(char **prfx, size_t *prfx_len, const char *name); -hid_t h5_fileaccess(void); -ssize_t table_list_add(hid_t oid, unsigned long file_no); -ssize_t table_list_visited(unsigned long file_no); - -#ifdef __cplusplus -} -#endif - -#endif /* !H5DUMP_EXTERN_H__ */ diff --git a/tools/h5dump/h5dump_xml.c b/tools/h5dump/h5dump_xml.c deleted file mode 100644 index 41f3914..0000000 --- a/tools/h5dump/h5dump_xml.c +++ /dev/null @@ -1,4567 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -#include -#include - -#include "H5private.h" -#include "h5tools.h" -#include "h5tools_dump.h" -#include "h5tools_utils.h" -#include "h5tools_ref.h" -#include "h5trav.h" -#include "h5dump_extern.h" -#include "h5dump_xml.h" - -const char *xmlnsprefix="hdf5:"; - -/* - * Alternative formating for data dumped to XML - * In general, the numbers are the same, but separators - * except spaces are not used. - * - * Some of these are not used, as some kinds of data are - * dumped in completely new subroutines. - * - * Some of this formatting may yet need to change. - * - * This table only affects XML output. - */ -static h5tool_format_t xml_dataformat = { - 0, /*raw */ - - "", /*fmt_raw */ - "%d", /*fmt_int */ - "%u", /*fmt_uint */ - "%hhd", /*fmt_schar */ - "%u", /*fmt_uchar */ - "%d", /*fmt_short */ - "%u", /*fmt_ushort */ - "%ld", /*fmt_long */ - "%lu", /*fmt_ulong */ - NULL, /*fmt_llong */ - NULL, /*fmt_ullong */ - "%g", /*fmt_double */ - "%g", /*fmt_float */ - - 0, /*ascii */ - 0, /*str_locale */ - 0, /*str_repeat */ - - "", /*arr_pre */ - "", /*arr_sep */ - "", /*arr_suf */ - 1, /*arr_linebreak */ - - "", /*cmpd_name */ - "", /*cmpd_sep */ - "", /*cmpd_pre */ - "", /*cmpd_suf */ - "", /*cmpd_end */ - - " ", /*vlen_sep */ - " ", /*vlen_pre */ - "", /*vlen_suf */ - "", /*vlen_end */ - - "%s", /*elmt_fmt */ - "", /*elmt_suf1 */ - " ", /*elmt_suf2 */ - - "", /*idx_n_fmt */ - "", /*idx_sep */ - "", /*idx_fmt */ - - 80, /*line_ncols *//*standard default columns */ - 0, /*line_per_line */ - "", /*line_pre */ - "%s", /*line_1st */ - "%s", /*line_cont */ - "", /*line_suf */ - "", /*line_sep */ - 1, /*line_multi_new */ - " ", /*line_indent */ - - 1, /*skip_first */ - - 1, /*obj_hidefileno */ - " "H5_PRINTF_HADDR_FMT, /*obj_format */ - - 1, /*dset_hidefileno */ - "DATASET %s ", /*dset_format */ - "%s", /*dset_blockformat_pre */ - "%s", /*dset_ptformat_pre */ - "%s", /*dset_ptformat */ - 0, /*array indices */ - 0 /*escape non printable characters */ -}; - - -/* internal functions */ -static int xml_name_to_XID(const char *, char *, int , int ); - -/* internal functions used by XML option */ -static void xml_print_datatype(hid_t, unsigned); -static void xml_print_enum(hid_t); -static int xml_print_refs(hid_t, int); -static int xml_print_strs(hid_t, int); -static char *xml_escape_the_string(const char *, int); -static char *xml_escape_the_name(const char *); - -/*------------------------------------------------------------------------- - * Function: xml_dump_all_cb - * - * Purpose: function callback called by H5Literate, - * displays everything in the specified object - * - * Return: Success: SUCCEED - * - * Failure: FAIL - * - * Programmer: Ruey-Hsia Li - * - * Modifications: - * RMcG, November 2000 - * Added XML support. Also, optionally checks the op_data argument - * - * PVN, May 2008 - * Dump external links - * - *------------------------------------------------------------------------- - */ -static herr_t -xml_dump_all_cb(hid_t group, const char *name, const H5L_info_t *linfo, void H5_ATTR_UNUSED *op_data) -{ - hid_t obj; - herr_t ret = SUCCEED; - char *obj_path = NULL; /* Full path of object */ - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &xml_dataformat; - h5tool_format_t string_dataformat; - hsize_t curr_pos = 0; /* total data element position */ - - /* setup */ - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - string_dataformat = *outputformat; - - if (fp_format) { - string_dataformat.fmt_double = fp_format; - string_dataformat.fmt_float = fp_format; - } - - if (h5tools_nCols==0) { - string_dataformat.line_ncols = 65535; - string_dataformat.line_per_line = 1; - } - else - string_dataformat.line_ncols = h5tools_nCols; - - string_dataformat.do_escape = display_escape; - outputformat = &string_dataformat; - - /* Build the object's path name */ - obj_path = (char *)HDmalloc(HDstrlen(prefix) + HDstrlen(name) + 2); - if(!obj_path) { - ret = FAIL; - goto done; - } - - HDstrcpy(obj_path, prefix); - HDstrcat(obj_path, "/"); - HDstrcat(obj_path, name); - - if(linfo->type == H5L_TYPE_HARD) { - H5O_info_t oinfo; - - /* Stat the object */ - if(H5Oget_info_by_name(group, name, &oinfo, H5P_DEFAULT) < 0) { - error_msg("unable to get object information for \"%s\"\n", name); - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - goto done; - } /* end if */ - - switch(oinfo.type) { - case H5O_TYPE_GROUP: - if((obj = H5Gopen2(group, name, H5P_DEFAULT)) < 0) { - error_msg("unable to dump group \"%s\"\n", name); - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - } - else { - char *old_prefix; /* Pointer to previous prefix */ - - /* Keep copy of prefix before iterating into group */ - old_prefix = HDstrdup(prefix); - HDassert(old_prefix); - - /* Append group name to prefix */ - add_prefix(&prefix, &prefix_len, name); - - /* Iterate into group */ - dump_function_table->dump_group_function(obj, name); - - /* Restore old prefix name */ - HDstrcpy(prefix, old_prefix); - HDfree(old_prefix); - - /* Close group */ - H5Gclose(obj); - } - break; - - case H5O_TYPE_DATASET: - if((obj = H5Dopen2(group, name, H5P_DEFAULT)) >= 0) { - if(oinfo.rc > 1 || hit_elink) { - obj_t *found_obj; /* Found object */ - - found_obj = search_obj(dset_table, oinfo.addr); - - if(found_obj == NULL) { - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "%s \"%s\" %s", - h5tools_dump_header_format->datasetbegin, name, - h5tools_dump_header_format->datasetblockbegin); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - error_msg("internal error (file %s:line %d)\n", __FILE__, __LINE__); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - if(HDstrlen(h5tools_dump_header_format->datasetblockend)) { - h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->datasetblockend); - if(HDstrlen(h5tools_dump_header_format->datasetend)) - h5tools_str_append(&buffer, " "); - } - if(HDstrlen(h5tools_dump_header_format->datasetend)) - h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->datasetend); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level--; - - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - H5Dclose(obj); - goto done; - } - else if(found_obj->displayed) { - /* the XML version */ - char *t_obj_path = xml_escape_the_name(obj_path); - char *t_prefix = xml_escape_the_name(HDstrcmp(prefix,"") ? prefix : "/"); - char *t_name = xml_escape_the_name(name); - char *t_objname = xml_escape_the_name(found_obj->objname); - char dsetxid[100]; - char parentxid[100]; - char pointerxid[100]; - - /* Create OBJ-XIDs for the parent and object */ - xml_name_to_XID(obj_path, dsetxid, (int)sizeof(dsetxid), 1); - xml_name_to_XID(prefix, parentxid, (int)sizeof(parentxid), 1); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDataset Name=\"%s\" OBJ-XID=\"%s-%d\" " - "H5Path=\"%s\" Parents=\"%s\" " - "H5ParentPaths=\"%s\">", - xmlnsprefix, - t_name, /* Dataset Name */ - dsetxid, get_next_xid(), /* OBJ-XID */ - t_obj_path, /* H5Path */ - parentxid, /* Parents */ - t_prefix); /* H5ParentPaths */ - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - xml_name_to_XID(found_obj->objname, pointerxid, (int)sizeof(pointerxid), 1); - - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDatasetPtr OBJ-XID=\"%s\" H5Path=\"%s\"/>", - xmlnsprefix, - pointerxid,t_objname); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - HDfree(t_name); - HDfree(t_obj_path); - HDfree(t_prefix); - HDfree(t_objname); - - H5Dclose(obj); - goto done; - } - else - found_obj->displayed = TRUE; - } /* end if */ - - dump_function_table->dump_dataset_function(obj, name, NULL); - H5Dclose(obj); - } - else { - error_msg("unable to dump dataset \"%s\"\n", name); - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - } - break; - - case H5O_TYPE_NAMED_DATATYPE: - if((obj = H5Topen2(group, name, H5P_DEFAULT)) < 0) { - error_msg("unable to dump datatype \"%s\"\n", name); - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - } - else { - dump_function_table->dump_named_datatype_function(obj, name); - H5Tclose(obj); - } - break; - - case H5O_TYPE_UNKNOWN: - case H5O_TYPE_NTYPES: - default: - error_msg("unknown object \"%s\"\n", name); - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - } - } /* end if */ - else { - char *targbuf; - - switch(linfo->type) { - case H5L_TYPE_SOFT: - targbuf = (char *)HDmalloc(linfo->u.val_size); - HDassert(targbuf); - - if(H5Lget_val(group, name, targbuf, linfo->u.val_size, H5P_DEFAULT) < 0) { - error_msg("unable to get link value\n"); - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - } - else { - /* print the value of a soft link */ - /* XML */ - char linkxid[100]; - char parentxid[100]; - char targetxid[100]; - char *t_prefix = xml_escape_the_name(HDstrcmp(prefix,"") ? prefix : "/"); - char *t_name = xml_escape_the_name(name); - char *t_targbuf = xml_escape_the_name(targbuf); - char *t_obj_path = xml_escape_the_name(obj_path); - char *t_link_path; - int res; - - t_link_path = (char *)HDmalloc(HDstrlen(prefix) + linfo->u.val_size + 1); - if(targbuf[0] == '/') - HDstrcpy(t_link_path, targbuf); - else { - HDstrcpy(t_link_path, prefix); - HDstrcat(HDstrcat(t_link_path, "/"), targbuf); - } /* end else */ - - /* Create OBJ-XIDs for the parent and object */ - xml_name_to_XID(t_obj_path, linkxid, (int)sizeof(linkxid), 1); - xml_name_to_XID(prefix, parentxid, (int)sizeof(parentxid), 1); - - /* Try to create an OBJ-XID for the object pointed to */ - res = xml_name_to_XID(t_link_path, targetxid, (int)sizeof(targetxid), 0); - if (res == 0) { - /* target obj found */ - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sSoftLink LinkName=\"%s\" " - "OBJ-XID=\"%s\" " - "H5SourcePath=\"%s\" " - "TargetPath=\"%s\" TargetObj=\"%s\" " - "Parents=\"%s\" H5ParentPaths=\"%s\" />", - xmlnsprefix, - t_name, /* LinkName */ - linkxid, /* OBJ-XID */ - t_obj_path, /* H5SourcePath */ - t_targbuf, /* TargetPath */ - targetxid, /* TargetObj */ - parentxid, /* Parents */ - t_prefix); /* H5ParentPaths */ - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - else { - /* dangling link -- omit from xml attributes */ - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sSoftLink LinkName=\"%s\" " - "OBJ-XID=\"%s\" " - "H5SourcePath=\"%s\" " - "TargetPath=\"%s\" " - "Parents=\"%s\" H5ParentPaths=\"%s\" />", - xmlnsprefix, - t_name, /* LinkName */ - linkxid, /* OBJ-XID */ - t_obj_path, /* H5SourcePath */ - t_targbuf, /* TargetPath */ - parentxid, /* Parents */ - t_prefix); /* H5ParentPaths */ - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - - HDfree(t_prefix); - HDfree(t_name); - HDfree(t_targbuf); - HDfree(t_obj_path); - HDfree(t_link_path); - } - - HDfree(targbuf); - break; - - case H5L_TYPE_EXTERNAL: - targbuf = (char *)HDmalloc(linfo->u.val_size); - HDassert(targbuf); - - if(H5Lget_val(group, name, targbuf, linfo->u.val_size, H5P_DEFAULT) < 0) { - error_msg("unable to get external link value\n"); - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - } /* end if */ - else { - const char *filename; - const char *targname; - - if(H5Lunpack_elink_val(targbuf, linfo->u.val_size, NULL, &filename, &targname) < 0) { - error_msg("unable to unpack external link value\n"); - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - } /* end if */ - else { - char linkxid[100]; - char parentxid[100]; - char *t_name = xml_escape_the_name(name); - char *t_prefix = xml_escape_the_name(HDstrcmp(prefix,"") ? prefix : "/"); - char *t_obj_path = xml_escape_the_name(obj_path); - char *t_filename = xml_escape_the_name(filename); - char *t_targname = xml_escape_the_name(targname); - - /* Create OBJ-XIDs for the parent and object */ - xml_name_to_XID(t_obj_path, linkxid, (int)sizeof(linkxid), 1); - xml_name_to_XID(prefix, parentxid, (int)sizeof(parentxid), 1); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sExternalLink LinkName=\"%s\" " - "OBJ-XID=\"%s\" " - "H5SourcePath=\"%s\" " - "TargetFilename=\"%s\" " - "TargetPath=\"%s\" " - "Parents=\"%s\" H5ParentPaths=\"%s\" />", - xmlnsprefix, - t_name, /* LinkName */ - linkxid, /* OBJ-XID */ - t_obj_path, /* H5SourcePath */ - filename, /* TargetFilename */ - targname, /* TargetPath*/ - parentxid, /* Parents */ - t_prefix); /* H5ParentPaths */ - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - HDfree(t_prefix); - HDfree(t_name); - HDfree(t_filename); - HDfree(t_targname); - HDfree(t_obj_path); - } /* end else */ - } /* end else */ - HDfree(targbuf); - break; - - case H5L_TYPE_ERROR: - case H5L_TYPE_MAX: - HDassert(0); - /* fall through */ - case H5L_TYPE_HARD: - default: - { - char linkxid[100]; - char parentxid[100]; - char *t_name = xml_escape_the_name(name); - char *t_prefix = xml_escape_the_name(HDstrcmp(prefix,"") ? prefix : "/"); - char *t_obj_path = xml_escape_the_name(obj_path); - - /* Create OBJ-XIDs for the parent and object */ - xml_name_to_XID(t_obj_path, linkxid, (int)sizeof(linkxid), 1); - xml_name_to_XID(prefix, parentxid, (int)sizeof(parentxid), 1); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sUserDefined LinkName=\"%s\" " - "OBJ-XID=\"%s\" " - "H5SourcePath=\"%s\" " - "LinkClass=\"%d\" " - "Parents=\"%s\" H5ParentPaths=\"%s\" />", - xmlnsprefix, - t_name, /* LinkName */ - linkxid, /* OBJ-XID */ - t_obj_path, /* H5SourcePath */ - linfo->type, /* LinkClass */ - parentxid, /* Parents */ - t_prefix); /* H5ParentPaths */ - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - HDfree(t_prefix); - HDfree(t_name); - HDfree(t_obj_path); - } - break; - - } /* end switch */ - } /* end else */ - -done: - - h5tools_str_close(&buffer); - - if(obj_path) - HDfree(obj_path); - return ret; -} - -/* - * create a string suitable for and XML NCNAME. Uses the - * object reference to create the string. - * - * 'gen'; 0 - return null if not found - * 1 - generate a fake entry and return fake id. - */ -int -xml_name_to_XID(const char *str , char *outstr, int outlen, int gen) -{ - haddr_t objno; /* Object ID for object at path */ - - if (outlen < 22) return 1; - - objno = ref_path_table_lookup(str); - if (objno == HADDR_UNDEF) { - if (HDstrlen(str) == 0) { - objno = ref_path_table_lookup("/"); - if (objno == HADDR_UNDEF) { - if (gen) { - objno = ref_path_table_gen_fake(str); - sprintf(outstr, "xid_"H5_PRINTF_HADDR_FMT, objno); - return 0; - } - else { - return 1; - } - } - } - else { - if (gen) { - objno = ref_path_table_gen_fake(str); - sprintf(outstr, "xid_"H5_PRINTF_HADDR_FMT, objno); - return 0; - } - else { - return 1; - } - } - } - - sprintf(outstr, "xid_"H5_PRINTF_HADDR_FMT, objno); - - return(0); -} - -static const char *quote = """; -static const char *amp = "&"; -static const char *lt = "<"; -static const char *gt = ">"; -static const char *apos = "'"; - -/*------------------------------------------------------------------------- - * Function: xml_escape_the_name - * - * Purpose: Escape XML reserved chars in a name, so HDF5 strings - * and paths can be correctly read back in XML element. - * - * Return: The revised string. - * - * Programmer: REMcG - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static char * -xml_escape_the_name(const char *str) -{ - size_t extra; - size_t len; - size_t i; - const char *cp; - char *ncp; - char *rcp; - size_t ncp_len; - - if (!str) - return NULL; - - cp = str; - len = HDstrlen(str); - extra = 0; - - for (i = 0; i < len; i++) { - if (*cp == '\"') - extra += (HDstrlen(quote) - 1); - else if (*cp == '\'') - extra += (HDstrlen(apos) - 1); - else if (*cp == '<') - extra += (HDstrlen(lt) - 1); - else if (*cp == '>') - extra += (HDstrlen(gt) - 1); - else if (*cp == '&') - extra += (HDstrlen(amp) - 1); - - cp++; - } - - if (extra == 0) - return HDstrdup(str); - - cp = str; - ncp_len = len + extra + 1; - rcp = ncp = (char *)HDmalloc(ncp_len); - - if (!ncp) - return NULL; /* ?? */ - - for (i = 0; i < len; i++) { - size_t esc_len; - - HDassert(ncp_len); - if (*cp == '\'') { - HDstrncpy(ncp, apos, ncp_len); - esc_len = HDstrlen(apos); - } - else if (*cp == '<') { - HDstrncpy(ncp, lt, ncp_len); - esc_len = HDstrlen(lt); - } - else if (*cp == '>') { - HDstrncpy(ncp, gt, ncp_len); - esc_len = HDstrlen(gt); - } - else if (*cp == '\"') { - HDstrncpy(ncp, quote, ncp_len); - esc_len = HDstrlen(quote); - } - else if (*cp == '&') { - HDstrncpy(ncp, amp, ncp_len); - esc_len = HDstrlen(amp); - } - else { - *ncp = *cp; - esc_len = 1; - } - ncp += esc_len; - ncp_len -= esc_len; - cp++; - } - - *ncp = '\0'; - return rcp; -} - -/*------------------------------------------------------------------------- - * Function: xml_escape_the_string - * - * Purpose: Escape XML reserved chars in a string, so HDF5 strings - * and paths can be correctly read back in XML CDATA. - * - * Return: The revised string. - * - * Programmer: REMcG - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static char * -xml_escape_the_string(const char *str, int slen) -{ - size_t extra; - size_t len; - size_t i; - const char *cp; - char *ncp; - char *rcp; - size_t ncp_len; - - if (!str) - return NULL; - - cp = str; - - if (slen < 0) - len = HDstrlen(str); - else - len = (size_t)slen; - - extra = 0; - - for (i = 0; i < len; i++) { - if (*cp == '\\') - extra++; - else if (*cp == '\"') - extra++; - else if (*cp == '\'') - extra += (HDstrlen(apos) - 1); - else if (*cp == '<') - extra += (HDstrlen(lt) - 1); - else if (*cp == '>') - extra += (HDstrlen(gt) - 1); - else if (*cp == '&') - extra += (HDstrlen(amp) - 1); - cp++; - } - - cp = str; - ncp_len = len + extra + 1; - rcp = ncp = (char *) HDcalloc(ncp_len, sizeof(char)); - - if (ncp == NULL) - return NULL; /* ?? */ - - for (i = 0; i < len; i++) { - size_t esc_len; - - HDassert(ncp_len); - if (*cp == '\\') { - *ncp++ = '\\'; - *ncp = *cp; - esc_len = 1; - } - else if (*cp == '\"') { - *ncp++ = '\\'; - *ncp = *cp; - esc_len = 1; - } - else if (*cp == '\'') { - HDstrncpy(ncp, apos, ncp_len); - esc_len = HDstrlen(apos); - } - else if (*cp == '<') { - HDstrncpy(ncp, lt, ncp_len); - esc_len = HDstrlen(lt); - } - else if (*cp == '>') { - HDstrncpy(ncp, gt, ncp_len); - esc_len = HDstrlen(gt); - } - else if (*cp == '&') { - HDstrncpy(ncp, amp, ncp_len); - esc_len = HDstrlen(amp); - } - else { - *ncp = *cp; - esc_len = 1; - } - ncp += esc_len; - ncp_len -= esc_len; - cp++; - } - - *ncp = '\0'; - return rcp; -} - -/** - ** XML print functions--these replace some functions in the - ** h5tools.c suite. - **/ - -/*------------------------------------------------------------------------- - * Function: xml_print_datatype - * - * Purpose: Print description of a datatype in XML. - * Note: this is called inside a element. - * - * Return: void - * - * Programmer: REMcG - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -xml_print_datatype(hid_t type, unsigned in_group) -{ - char *mname; - hid_t mtype; - unsigned nmembers; - unsigned ndims; - unsigned i; - size_t size; - hsize_t dims[H5DUMP_MAX_RANK]; - H5T_str_t str_pad; - H5T_cset_t cset; - hid_t super; - H5T_order_t ord; - H5T_sign_t sgn; - size_t sz; - size_t spos; - size_t epos; - size_t esize; - size_t mpos; - size_t msize; - int nmembs; - htri_t is_vlstr=FALSE; - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &xml_dataformat; - h5tool_format_t string_dataformat; - hsize_t curr_pos = 0; /* total data element position */ - - /* setup */ - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - string_dataformat = *outputformat; - - if (fp_format) { - string_dataformat.fmt_double = fp_format; - string_dataformat.fmt_float = fp_format; - } - - if (h5tools_nCols==0) { - string_dataformat.line_ncols = 65535; - string_dataformat.line_per_line = 1; - } - else - string_dataformat.line_ncols = h5tools_nCols; - - string_dataformat.do_escape = display_escape; - outputformat = &string_dataformat; - - if(!in_group && H5Tcommitted(type) > 0) { - H5O_info_t oinfo; - obj_t *found_obj; /* Found object */ - - /* detect a shared datatype, output only once */ - H5Oget_info(type, &oinfo); - found_obj = search_obj(type_table, oinfo.addr); - - if(found_obj) { - /* This should be defined somewhere else */ - /* These 2 cases are handled the same right now, but - probably will have something different eventually */ - char * dtxid = (char *)HDmalloc((size_t)100); - - xml_name_to_XID(found_obj->objname, dtxid, 100, 1); - if (!found_obj->recorded) { - /* 'anonymous' NDT. Use it's object num. - as it's name. */ - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNamedDataTypePtr OBJ-XID=\"/%s\"/>", - xmlnsprefix, dtxid); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - else { - /* point to the NDT by name */ - char *t_objname = xml_escape_the_name(found_obj->objname); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNamedDataTypePtr OBJ-XID=\"%s\" H5Path=\"%s\"/>", - xmlnsprefix, dtxid, t_objname); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - HDfree(t_objname); - } - HDfree(dtxid); - } - else { - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, ""); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - h5tools_setstatus(EXIT_FAILURE); - } - } - else { - switch (H5Tget_class(type)) { - case H5T_INTEGER: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sAtomicType>",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level++; - - /* */ - ord = H5Tget_order(type); - sgn = H5Tget_sign(type); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sIntegerType ByteOrder=\"",xmlnsprefix); - switch (ord) { - case H5T_ORDER_LE: - h5tools_str_append(&buffer, "LE"); - break; - case H5T_ORDER_BE: - h5tools_str_append(&buffer, "BE"); - break; - case H5T_ORDER_VAX: - case H5T_ORDER_MIXED: - case H5T_ORDER_NONE: - case H5T_ORDER_ERROR: - default: - h5tools_str_append(&buffer, "ERROR_UNKNOWN"); - break; - } /* end switch */ - - h5tools_str_append(&buffer, "\" Sign=\""); - - switch (sgn) { - case H5T_SGN_NONE: - h5tools_str_append(&buffer, "false"); - break; - case H5T_SGN_2: - h5tools_str_append(&buffer, "true"); - break; - case H5T_SGN_ERROR: - case H5T_NSGN: - default: - h5tools_str_append(&buffer, "ERROR_UNKNOWN"); - break; - } /* end switch */ - - h5tools_str_append(&buffer, "\" Size=\""); - sz = H5Tget_size(type); - h5tools_str_append(&buffer, "%lu", (unsigned long)sz); - h5tools_str_append(&buffer, "\" />"); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - - case H5T_FLOAT: - /* */ - ord = H5Tget_order(type); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sAtomicType>",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sFloatType ByteOrder=\"",xmlnsprefix); - - switch (ord) { - case H5T_ORDER_LE: - h5tools_str_append(&buffer, "LE"); - break; - case H5T_ORDER_BE: - h5tools_str_append(&buffer, "BE"); - break; - case H5T_ORDER_VAX: - h5tools_str_append(&buffer, "VAX"); - break; - case H5T_ORDER_MIXED: - case H5T_ORDER_NONE: - case H5T_ORDER_ERROR: - default: - h5tools_str_append(&buffer, "ERROR_UNKNOWN"); - } /* end switch */ - - h5tools_str_append(&buffer, "\" Size=\""); - sz = H5Tget_size(type); - h5tools_str_append(&buffer, "%lu", (unsigned long)sz); - H5Tget_fields(type, &spos, &epos, &esize, &mpos, &msize); - h5tools_str_append(&buffer, "\" SignBitLocation=\"%lu\" ", (unsigned long)spos); - h5tools_str_append(&buffer, "ExponentBits=\"%lu\" ExponentLocation=\"%lu\" ", (unsigned long)esize, (unsigned long)epos); - h5tools_str_append(&buffer, "MantissaBits=\"%lu\" MantissaLocation=\"%lu\" />", (unsigned long)msize, (unsigned long)mpos); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - - case H5T_TIME: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sAtomicType>",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sTimeType />",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - h5tools_str_append(&buffer, ""); - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - - case H5T_STRING: - /* */ - size = H5Tget_size(type); - str_pad = H5Tget_strpad(type); - cset = H5Tget_cset(type); - is_vlstr = H5Tis_variable_str(type); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sAtomicType>",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sStringType Cset=\"",xmlnsprefix); - - if (cset == H5T_CSET_ASCII) - h5tools_str_append(&buffer, "H5T_CSET_ASCII\" "); - else - h5tools_str_append(&buffer, "unknown_cset\" "); - - if(is_vlstr) - h5tools_str_append(&buffer, "StrSize=\"H5T_VARIABLE\" StrPad=\""); - else - h5tools_str_append(&buffer, "StrSize=\"%d\" StrPad=\"", (int) size); - - if (str_pad == H5T_STR_NULLTERM) - h5tools_str_append(&buffer, "H5T_STR_NULLTERM\"/>"); - else if (str_pad == H5T_STR_NULLPAD) - h5tools_str_append(&buffer, "H5T_STR_NULLPAD\"/>"); - else if (str_pad == H5T_STR_SPACEPAD) - h5tools_str_append(&buffer, "H5T_STR_SPACEPAD\"/>"); - else - h5tools_str_append(&buffer, "H5T_STR_ERROR\"/>"); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - - case H5T_BITFIELD: - /* */ - ord = H5Tget_order(type); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sAtomicType>",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sBitfieldType ByteOrder=\"",xmlnsprefix); - - switch (ord) { - case H5T_ORDER_LE: - h5tools_str_append(&buffer, "LE"); - break; - case H5T_ORDER_BE: - h5tools_str_append(&buffer, "BE"); - break; - case H5T_ORDER_VAX: - case H5T_ORDER_MIXED: - case H5T_ORDER_NONE: - case H5T_ORDER_ERROR: - default: - h5tools_str_append(&buffer, "ERROR_UNKNOWN"); - } /* end switch */ - - size = H5Tget_size(type); - h5tools_str_append(&buffer, "\" Size=\"%lu\"/>", (unsigned long)size); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - - case H5T_OPAQUE: - /* */ - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sAtomicType>",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level++; - mname = H5Tget_tag(type); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sOpaqueType Tag=\"%s\" ",xmlnsprefix, mname); - H5free_memory(mname); - size = H5Tget_size(type); - h5tools_str_append(&buffer, "Size=\"%lu\"/>", (unsigned long)size); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - - case H5T_COMPOUND: - /* recursively describe the components of a compound datatype */ - - /* type of a dataset */ - nmembers = (unsigned)H5Tget_nmembers(type); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sCompoundType>",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - /* List each member Field of the type */ - /* */ - /* */ - ctx.indent_level++; - dump_indent += COL; - for (i = 0; i < nmembers; i++) { - char *t_fname; - - mname = H5Tget_member_name(type, i); - mtype = H5Tget_member_type(type, i); - t_fname = xml_escape_the_name(mname); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sField FieldName=\"%s\">",xmlnsprefix, t_fname); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - H5free_memory(mname); - HDfree(t_fname); - dump_indent += COL; - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDataType>",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level++; - dump_indent += COL; - xml_print_datatype(mtype,0); - dump_indent -= COL; - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - dump_indent -= COL; - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - dump_indent -= COL; - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - - case H5T_REFERENCE: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sAtomicType>",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level++; - /* Only Object references supported at this time */ - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sReferenceType>",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sObjectReferenceType />",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - - case H5T_ENUM: - /* list Name, values of enum */ - nmembs = H5Tget_nmembers(type); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sAtomicType>",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - dump_indent += COL; - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sEnumType Nelems=\"%d\">",xmlnsprefix, nmembs); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - xml_print_enum(type); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - dump_indent -= COL; - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - - case H5T_VLEN: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sVLType>",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - super = H5Tget_super(type); - dump_indent += COL; - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDataType>",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - dump_indent += COL; - ctx.indent_level++; - xml_print_datatype(super,0); - dump_indent -= COL; - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - dump_indent -= COL; - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - H5Tclose(super); - - break; - - case H5T_ARRAY: - /* Get array base type */ - super = H5Tget_super(type); - - /* Print lead-in */ - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sArrayType Ndims=\"",xmlnsprefix); - ndims = (unsigned)H5Tget_array_ndims(type); - h5tools_str_append(&buffer, "%u\">", ndims); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - /* Get array information */ - H5Tget_array_dims2(type, dims); - - /* list of dimensions */ - ctx.indent_level++; - for (i = 0; i < ndims; i++) { - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sArrayDimension DimSize=\"%u\"/>", xmlnsprefix, (int) dims[i]); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - ctx.indent_level--; - - dump_indent += COL; - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDataType>",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - dump_indent += COL; - ctx.indent_level++; - xml_print_datatype(super,0); - dump_indent -= COL; - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - dump_indent -= COL; - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - /* Close array base type */ - H5Tclose(super); - break; - - case H5T_NO_CLASS: - case H5T_NCLASSES: - HDassert(0); - /* fall through */ - default: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, ""); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - h5tools_setstatus(EXIT_FAILURE); - break; - } - } /* end else */ - - h5tools_str_close(&buffer); -} - -/*------------------------------------------------------------------------- - * Function: xml_dump_datatype - * - * Purpose: Dump description of a datatype in XML. - * - * Return: void - * - * Programmer: REMcG - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -void -xml_dump_datatype(hid_t type) -{ - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &xml_dataformat; - h5tool_format_t string_dataformat; - hsize_t curr_pos = 0; /* total data element position */ - - /* setup */ - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - string_dataformat = *outputformat; - - if (fp_format) { - string_dataformat.fmt_double = fp_format; - string_dataformat.fmt_float = fp_format; - } - - if (h5tools_nCols == 0) { - string_dataformat.line_ncols = 65535; - string_dataformat.line_per_line = 1; - } - else - string_dataformat.line_ncols = h5tools_nCols; - - string_dataformat.do_escape = display_escape; - outputformat = &string_dataformat; - - ctx.indent_level++; - dump_indent += COL; - - if(H5Tcommitted(type) > 0) { - H5O_info_t oinfo; - obj_t *found_obj; /* Found object */ - - /* Datatype is a shared or named datatype */ - H5Oget_info(type, &oinfo); - found_obj = search_obj(type_table, oinfo.addr); - - if(found_obj) { - /* Shared datatype, must be entered as an object */ - /* These 2 cases are the same now, but may change */ - char *dtxid = (char *)HDmalloc((size_t)100); - - xml_name_to_XID(found_obj->objname, dtxid, 100, 1); - if (!found_obj->recorded) { - /* anonymous stored datatype: - following the dumper's current - practice: - use it's object ref as its name - */ - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNamedDataTypePtr OBJ-XID=\"%s\"/>", - xmlnsprefix, dtxid); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - else { - /* pointer to a named datatype already in XML */ - char *t_objname = xml_escape_the_name(found_obj->objname); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNamedDataTypePtr OBJ-XID=\"%s\" H5Path=\"%s\" />", - xmlnsprefix, dtxid, t_objname); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - HDfree(t_objname); - } - HDfree(dtxid); - } - else { - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, ""); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - } - else { - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDataType>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level++; - dump_indent += COL; - xml_print_datatype(type, 0); - ctx.indent_level--; - dump_indent -= COL; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - ctx.indent_level--; - dump_indent -= COL; - - h5tools_str_close(&buffer); -} - -/*------------------------------------------------------------------------- - * Function: xml_dump_dataspace - * - * Purpose: Dump description of a dataspace in XML. - * - * Return: void - * - * Programmer: REMcG - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -void -xml_dump_dataspace(hid_t space) -{ - hsize_t size[H5DUMP_MAX_RANK]; - hsize_t maxsize[H5DUMP_MAX_RANK]; - int i; - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &xml_dataformat; - h5tool_format_t string_dataformat; - hsize_t curr_pos = 0; /* total data element position */ - - int ndims = H5Sget_simple_extent_dims(space, size, maxsize); - H5S_class_t space_type = H5Sget_simple_extent_type(space); - - /* setup */ - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - string_dataformat = *outputformat; - - if (fp_format) { - string_dataformat.fmt_double = fp_format; - string_dataformat.fmt_float = fp_format; - } - - if (h5tools_nCols == 0) { - string_dataformat.line_ncols = 65535; - string_dataformat.line_per_line = 1; - } - else - string_dataformat.line_ncols = h5tools_nCols; - - string_dataformat.do_escape = display_escape; - outputformat = &string_dataformat; - - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDataspace>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level++; - - switch (space_type) { - case H5S_SCALAR: - /* scalar dataspace (just a tag, no XML attrs. defined */ - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sScalarDataspace />",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - - case H5S_SIMPLE: - /* simple dataspace */ - /* */ - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sSimpleDataspace Ndims=\"%d\">",xmlnsprefix, ndims); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - /* print the elements */ - ctx.indent_level++; - for (i = 0; i < ndims; i++) { - if (maxsize[i] == H5S_UNLIMITED) { - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDimension DimSize=\"%" H5_PRINTF_LL_WIDTH "u\" MaxDimSize=\"UNLIMITED\"/>", - xmlnsprefix,size[i]); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - else if (maxsize[i] == (hsize_t) 0) { - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDimension DimSize=\"%" H5_PRINTF_LL_WIDTH "u\" MaxDimSize=\"%" H5_PRINTF_LL_WIDTH "u\"/>", - xmlnsprefix,size[i], size[i]); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - else { - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDimension DimSize=\"%" H5_PRINTF_LL_WIDTH "u\" MaxDimSize=\"%" H5_PRINTF_LL_WIDTH "u\"/>", - xmlnsprefix, size[i], maxsize[i]); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - } - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix ); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - -#ifdef TMP - /* Commented out: wait until the schema is updated first */ - case H5S_NULL: - /* null dataspace (just a tag, no XML attrs. defined */ - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNullDataspace />",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; -#endif /* TMP */ - - case H5S_NULL: - case H5S_NO_CLASS: - default: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, ""); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - - h5tools_str_close(&buffer); -} - -/*------------------------------------------------------------------------- - * Function: xml_dump_data - * - * Purpose: Dump description of data in XML. - * Note that this calls the h5dump_xxx calls in - * the h5tools library. - * - * Return: void - * - * Programmer: REMcG - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -void -xml_dump_data(hid_t obj_id, int obj_data, struct subset_t H5_ATTR_UNUSED * sset, int H5_ATTR_UNUSED pindex) -{ - hid_t space = -1; - hid_t type = -1; - hid_t p_type = -1; - hsize_t size[64]; - hsize_t nelmts = 1; - int ndims; - int i; - int status = -1; - void *buf = NULL; - hsize_t curr_pos = 0; /* total data element position */ - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &xml_dataformat; - h5tool_format_t string_dataformat; - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - /* Print all the values. */ - /* setup */ - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - string_dataformat = *outputformat; - - if (fp_format) { - string_dataformat.fmt_double = fp_format; - string_dataformat.fmt_float = fp_format; - } - - if (h5tools_nCols == 0) { - string_dataformat.line_ncols = 65535; - string_dataformat.line_per_line = 1; - } - else - string_dataformat.line_ncols = h5tools_nCols; - string_dataformat.cmpd_sep = " "; - string_dataformat.cmpd_pre = ""; - string_dataformat.cmpd_suf = ""; - string_dataformat.cmpd_end = ""; - string_dataformat.arr_linebreak = 0; - string_dataformat.arr_pre = ""; - outputformat = &string_dataformat; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sData>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDataFromFile>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level--; - - dump_indent += COL; - ctx.indent_level++; - - if (obj_data == DATASET_DATA) { - type = H5Dget_type(obj_id); - if (H5Tget_class(type) == H5T_REFERENCE) - status = xml_print_refs(obj_id, DATASET_DATA); - else if (H5Tget_class(type) == H5T_STRING) - status = xml_print_strs(obj_id, DATASET_DATA); - else { - h5tools_context_t datactx; - HDmemset(&datactx, 0, sizeof(datactx)); - datactx.need_prefix = TRUE; - datactx.indent_level = ctx.indent_level; - datactx.cur_column = ctx.cur_column; - status = h5tools_dump_dset(rawoutstream, outputformat, &datactx, obj_id, NULL); - } - } - else { - /* Attribute data */ - type = H5Aget_type(obj_id); - - if (H5Tget_class(type) == H5T_REFERENCE) { - /* references are done differently than - the standard output: - XML dumps a path to the object - referenced. - */ - status = xml_print_refs(obj_id, ATTRIBUTE_DATA); - H5Tclose(type); - } - else if (H5Tget_class(type) == H5T_STRING) { - status = xml_print_strs(obj_id, ATTRIBUTE_DATA); - } - else { /* all other data */ - /* VL data special information */ - unsigned int vl_data = 0; /* contains VL datatypes */ - - p_type = h5tools_get_native_type(type); - - /* Check if we have VL data in the dataset's datatype */ - if (h5tools_detect_vlen(p_type) == TRUE) - vl_data = TRUE; - - H5Tclose(type); - - space = H5Aget_space(obj_id); - - ndims = H5Sget_simple_extent_dims(space, size, NULL); - - for (i = 0; i < ndims; i++) - nelmts *= size[i]; - - buf = HDmalloc((size_t)(nelmts * MAX(H5Tget_size(type), H5Tget_size(p_type)))); - HDassert(buf); - - if (H5Aread(obj_id, p_type, buf) >= 0) { - h5tools_context_t datactx; - HDmemset(&datactx, 0, sizeof(datactx)); - datactx.need_prefix = TRUE; - datactx.indent_level = ctx.indent_level; - datactx.cur_column = ctx.cur_column; - status = h5tools_dump_mem(rawoutstream, outputformat, &datactx, obj_id, p_type, space, buf); - } - /* Reclaim any VL memory, if necessary */ - if (vl_data) - H5Dvlen_reclaim(p_type, space, H5P_DEFAULT, buf); - - HDfree(buf); - H5Tclose(p_type); - H5Sclose(space); - H5Tclose(type); - } - } - - if (status == FAIL) { - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "Unable to print data."); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level--; - - status = 1; - } - ctx.indent_level--; - dump_indent -= COL; - - ctx.indent_level++; - - ctx.need_prefix = TRUE; - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - h5tools_str_close(&buffer); -} - -/*------------------------------------------------------------------------- - * Function: xml_dump_attr - * - * Purpose: Dump a description of an HDF5 attribute in XML. - * - * Return: herr_t - * - * Programmer: REMcG - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -herr_t -xml_dump_attr(hid_t attr, const char *attr_name, const H5A_info_t H5_ATTR_UNUSED *info, - void H5_ATTR_UNUSED * op_data) -{ - hid_t attr_id = -1; - hid_t type = -1; - hid_t space = -1; - H5S_class_t space_type; - hsize_t curr_pos = 0; /* total data element position */ - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &xml_dataformat; - h5tool_format_t string_dataformat; - - char *t_aname = xml_escape_the_name(attr_name); - - /* setup */ - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - string_dataformat = *outputformat; - - if (fp_format) { - string_dataformat.fmt_double = fp_format; - string_dataformat.fmt_float = fp_format; - } - - if (h5tools_nCols == 0) { - string_dataformat.line_ncols = 65535; - string_dataformat.line_per_line = 1; - } - else - string_dataformat.line_ncols = h5tools_nCols; - - string_dataformat.do_escape = display_escape; - outputformat = &string_dataformat; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sAttribute Name=\"%s\">", xmlnsprefix, t_aname); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - HDfree(t_aname); - - if ((attr_id = H5Aopen(attr, attr_name, H5P_DEFAULT)) >= 0) { - type = H5Aget_type(attr_id); - space = H5Aget_space(attr_id); - space_type = H5Sget_simple_extent_type(space); - - dump_function_table->dump_dataspace_function(space); - dump_function_table->dump_datatype_function(type); - - ctx.indent_level++; - dump_indent += COL; - - if (display_attr_data && space_type != H5S_NULL) { - switch (H5Tget_class(type)) { - case H5T_INTEGER: - case H5T_FLOAT: - case H5T_STRING: - case H5T_BITFIELD: - case H5T_OPAQUE: - case H5T_ENUM: - case H5T_ARRAY: - dump_function_table->dump_data_function(attr_id, ATTRIBUTE_DATA, NULL, 0); - break; - - case H5T_TIME: - ctx.indent_level++; - dump_indent += COL; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sData>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, ""); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNoData/>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, ""); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level--; - dump_indent -= COL; - break; - - case H5T_COMPOUND: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, ""); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - dump_function_table->dump_data_function(attr_id, ATTRIBUTE_DATA, NULL, 0); - break; - - case H5T_REFERENCE: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sData>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - if (!H5Tequal(type, H5T_STD_REF_OBJ)) { - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, ""); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNoData />", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - else { - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDataFromFile>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - xml_print_refs(attr_id, ATTRIBUTE_DATA); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - - case H5T_VLEN: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, ""); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - dump_function_table->dump_data_function(attr_id, ATTRIBUTE_DATA, NULL, 0); - break; - case H5T_NO_CLASS: - case H5T_NCLASSES: - HDassert(0); - /* fall through */ - default: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sData>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", H5Tget_class(type)); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNoData/>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - } - } - else { - /* The case of an attribute never yet written ?? - * Or dataspace is H5S_NULL. */ - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sData>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNoData/>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - ctx.indent_level--; - dump_indent -= COL; - - H5Tclose(type); - H5Sclose(space); - H5Aclose(attr_id); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - h5tools_str_close(&buffer); - return SUCCEED; - } - else { - /* ?? failed */ - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, ""); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - h5tools_str_close(&buffer); - - h5tools_setstatus(EXIT_FAILURE); - return FAIL; - } -} - -/*------------------------------------------------------------------------- - * Function: xml_dump_named_datatype - * - * Purpose: Dump a description of an HDF5 NDT in XML. - * - * Return: herr_t - * - * Programmer: REMcG - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -void -xml_dump_named_datatype(hid_t type, const char *name) -{ - hsize_t curr_pos = 0; /* total data element position */ - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &xml_dataformat; - h5tool_format_t string_dataformat; - char *tmp; - char *dtxid; - char *parentxid; - char *t_tmp; - char *t_prefix; - char *t_name; - - tmp = (char *)HDmalloc(HDstrlen(prefix) + HDstrlen(name) + 2); - HDstrcpy(tmp, prefix); - HDstrcat(tmp, "/"); - HDstrcat(tmp, name); - - /* setup */ - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - string_dataformat = *outputformat; - - if (fp_format) { - string_dataformat.fmt_double = fp_format; - string_dataformat.fmt_float = fp_format; - } - - if (h5tools_nCols == 0) { - string_dataformat.line_ncols = 65535; - string_dataformat.line_per_line = 1; - } - else - string_dataformat.line_ncols = h5tools_nCols; - - string_dataformat.do_escape = display_escape; - outputformat = &string_dataformat; - - dtxid = (char *)HDmalloc((size_t)100); - parentxid = (char *)HDmalloc((size_t)100); - t_tmp = xml_escape_the_name(tmp); - t_prefix = xml_escape_the_name(prefix); - t_name = xml_escape_the_name(name); - - xml_name_to_XID(tmp, dtxid, 100, 1); - xml_name_to_XID(prefix, parentxid, 100, 1); - if(HDstrncmp(name, "#", (size_t)1) == 0) { - /* Special: this is an 'anonymous' NDT, deleted but - still in use. - We follow the dumper's undocumented practice, and - use its object id as its name. - Exactly the same as normal, but a separate case - in the event we want to do something else in - the future. - */ - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNamedDataType Name=\"%s\" OBJ-XID=\"%s\" " - "Parents=\"%s\" H5ParentPaths=\"%s\">", - xmlnsprefix, - name, dtxid, - parentxid, HDstrcmp(prefix,"") ? t_prefix : "/"); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - else { - H5O_info_t oinfo; /* Object info */ - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNamedDataType Name=\"%s\" OBJ-XID=\"%s\" " - "H5Path=\"%s\" Parents=\"%s\" H5ParentPaths=\"%s\">", - xmlnsprefix, - t_name, dtxid, - t_tmp, parentxid, (HDstrcmp(prefix, "") ? t_prefix : "/")); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - /* Check uniqueness of named datatype */ - H5Oget_info(type, &oinfo); - if(oinfo.rc > 1) { - obj_t *found_obj; /* Found object */ - - /* Group with more than one link to it... */ - found_obj = search_obj(type_table, oinfo.addr); - - if (found_obj == NULL) { - indentation(dump_indent); - error_msg("internal error (file %s:line %d)\n", __FILE__, __LINE__); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - else if(found_obj->displayed) { - /* We have already printed this named datatype, print it as a - * NamedDatatypePtr - */ - char pointerxid[100]; - char *t_objname = xml_escape_the_name(found_obj->objname); - - ctx.indent_level++; - - xml_name_to_XID(found_obj->objname, pointerxid, (int)sizeof(pointerxid), 1); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNamedDatatypePtr OBJ-XID=\"%s\" H5Path=\"%s\"/>", xmlnsprefix, pointerxid, t_objname); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - HDfree(t_objname); - goto done; - } - else - found_obj->displayed = TRUE; - } - } - - ctx.indent_level++; - dump_indent += COL; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDataType>",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level++; - dump_indent += COL; - xml_print_datatype(type,1); - ctx.indent_level--; - dump_indent -= COL; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level--; - dump_indent -= COL; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - -done: - - h5tools_str_close(&buffer); - - HDfree(dtxid); - HDfree(parentxid); - HDfree(t_tmp); - HDfree(t_prefix); - HDfree(t_name); - HDfree(tmp); -} - -/*------------------------------------------------------------------------- - * Function: xml_dump_group - * - * Purpose: Dump a description of an HDF5 Group (and its members) in XML. - * - * Return: void - * - * Programmer: REMcG - * - * Modifications: - * Pedro Vicente, October 9, 2007 - * added parameters to H5A(L)iterate to allow for other iteration orders - * - *------------------------------------------------------------------------- - */ -void -xml_dump_group(hid_t gid, const char *name) -{ - H5O_info_t oinfo; - hid_t gcpl_id; - hid_t dset, type; - unsigned crt_order_flags; - unsigned attr_crt_order_flags; - int isRoot = 0; - char type_name[1024]; - char *t_objname = NULL; - char *par_name = NULL; - char *cp = NULL; - char *tmp = NULL; - char *par = NULL; - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &xml_dataformat; - h5tool_format_t string_dataformat; - hsize_t curr_pos = 0; /* total data element position */ - - if ((gcpl_id = H5Gget_create_plist(gid)) < 0) { - error_msg("error in getting group creation property list ID\n"); - h5tools_setstatus(EXIT_FAILURE); - } - - /* query the group creation properties for attributes */ - if (H5Pget_attr_creation_order(gcpl_id, &attr_crt_order_flags) < 0) { - error_msg("error in getting group creation properties\n"); - h5tools_setstatus(EXIT_FAILURE); - } - - /* query the group creation properties */ - if(H5Pget_link_creation_order(gcpl_id, &crt_order_flags) < 0) { - error_msg("error in getting group creation properties\n"); - h5tools_setstatus(EXIT_FAILURE); - } - - if(H5Pclose(gcpl_id) < 0) { - error_msg("error in closing group creation property list ID\n"); - h5tools_setstatus(EXIT_FAILURE); - } - - /* setup */ - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - string_dataformat = *outputformat; - - if (fp_format) { - string_dataformat.fmt_double = fp_format; - string_dataformat.fmt_float = fp_format; - } - - if (h5tools_nCols == 0) { - string_dataformat.line_ncols = 65535; - string_dataformat.line_per_line = 1; - } - else - string_dataformat.line_ncols = h5tools_nCols; - - string_dataformat.do_escape = display_escape; - outputformat = &string_dataformat; - - if(HDstrcmp(name, "/") == 0) { - isRoot = 1; - tmp = HDstrdup("/"); - } - else { - tmp = (char *)HDmalloc(HDstrlen(prefix) + HDstrlen(name) + 2); - HDstrcpy(tmp, prefix); - par = HDstrdup(tmp); - cp = HDstrrchr(par, '/'); - if(cp) { - if((cp == par) && HDstrlen(par) > 1) - *(cp + 1) = '\0'; - else - *cp = '\0'; - } - } - - H5Oget_info(gid, &oinfo); - - if(oinfo.rc > 1) { - obj_t *found_obj; /* Found object */ - - /* Group with more than one link to it... */ - found_obj = search_obj(group_table, oinfo.addr); - - if (found_obj == NULL) { - indentation(dump_indent); - error_msg("internal error (file %s:line %d)\n", __FILE__, __LINE__); - h5tools_setstatus(EXIT_FAILURE); - } - else { - char *t_name = xml_escape_the_name(name); - char *grpxid = (char *)HDmalloc((size_t)100); - char *parentxid = (char *)HDmalloc((size_t)100); - - if(found_obj->displayed) { - char *ptrstr = (char *)HDmalloc((size_t)100); - - /* already seen: enter a groupptr */ - if(isRoot) { - /* probably can't happen! */ - xml_name_to_XID("/", grpxid, 100, 1); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sRootGroup OBJ-XID=\"%s\" H5Path=\"%s\">", - xmlnsprefix, grpxid, "/"); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - else { - t_objname = xml_escape_the_name(found_obj->objname); - par_name = xml_escape_the_name(par); - xml_name_to_XID(tmp, grpxid, 100, 1); - xml_name_to_XID(par, parentxid, 100, 1); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sGroup Name=\"%s\" OBJ-XID=\"%s-%d\" H5Path=\"%s\" " - "Parents=\"%s\" H5ParentPaths=\"%s\">", - xmlnsprefix,t_name, grpxid, get_next_xid(), - t_objname, parentxid, par_name); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - HDfree(t_objname); - HDfree(par_name); - - ctx.indent_level++; - - t_objname = xml_escape_the_name(found_obj->objname);/* point to the NDT by name */ - par_name = xml_escape_the_name(par); - xml_name_to_XID(found_obj->objname, ptrstr, 100, 1); - xml_name_to_XID(par, parentxid, 100, 1); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sGroupPtr OBJ-XID=\"%s\" H5Path=\"%s\" " - "Parents=\"%s\" H5ParentPaths=\"%s\" />", - xmlnsprefix, - ptrstr, t_objname, parentxid, par_name); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level--; - - HDfree(t_objname); - HDfree(par_name); - } - HDfree(ptrstr); - } - else { - - /* first time this group has been seen -- describe it */ - if(isRoot) { - xml_name_to_XID("/", grpxid, 100, 1); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sRootGroup OBJ-XID=\"%s\" H5Path=\"%s\">", - xmlnsprefix, grpxid, "/"); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - else { - char *t_tmp = xml_escape_the_name(tmp); - - par_name = xml_escape_the_name(par); - xml_name_to_XID(tmp, grpxid, 100, 1); - xml_name_to_XID(par, parentxid, 100, 1); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sGroup Name=\"%s\" OBJ-XID=\"%s\" H5Path=\"%s\" " - "Parents=\"%s\" H5ParentPaths=\"%s\" >", - xmlnsprefix,t_name, grpxid, t_tmp, parentxid, par_name); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - HDfree(t_tmp); - HDfree(par_name); - } - found_obj->displayed = TRUE; - - /* 1. do all the attributes of the group */ - - ctx.indent_level++; - dump_indent += COL; - - if((sort_by == H5_INDEX_CRT_ORDER) && (attr_crt_order_flags & H5P_CRT_ORDER_TRACKED)) { - if(H5Aiterate2(gid, sort_by, sort_order, NULL, dump_function_table->dump_attribute_function, NULL) < 0) { - error_msg("error getting attribute information\n"); - h5tools_setstatus(EXIT_FAILURE); - } /* end if */ - } /* end if */ - else { - if(H5Aiterate2(gid, H5_INDEX_NAME, sort_order, NULL, dump_function_table->dump_attribute_function, NULL) < 0) { - error_msg("error getting attribute information\n"); - h5tools_setstatus(EXIT_FAILURE); - } /* end if */ - } /* end else */ - - if(isRoot && unamedtype) { - unsigned u; - - /* Very special case: dump unamed type in root group */ - for(u = 0; u < type_table->nobjs; u++) { - if(!type_table->objs[u].recorded) { - dset = H5Dopen2(gid, type_table->objs[u].objname, H5P_DEFAULT); - type = H5Dget_type(dset); - sprintf(type_name, "#"H5_PRINTF_HADDR_FMT, type_table->objs[u].objno); - dump_function_table->dump_named_datatype_function(type, type_name); - H5Tclose(type); - H5Dclose(dset); - } - } - } - - /* iterate through all the links */ - - if((sort_by == H5_INDEX_CRT_ORDER) && (crt_order_flags & H5P_CRT_ORDER_TRACKED)) - H5Literate(gid, sort_by, sort_order, NULL, xml_dump_all_cb, NULL); - else - H5Literate(gid, H5_INDEX_NAME, sort_order, NULL, xml_dump_all_cb, NULL); - - dump_indent -= COL; - ctx.indent_level--; - } - HDfree(t_name); - HDfree(grpxid); - HDfree(parentxid); - } - } - else { - /* only link -- must be first time! */ - char *t_name = xml_escape_the_name(name); - char *grpxid = (char *)HDmalloc((size_t)100); - char *parentxid = (char *)HDmalloc((size_t)100); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - - if(isRoot) { - xml_name_to_XID("/", grpxid, 100, 1); - h5tools_str_append(&buffer, "<%sRootGroup OBJ-XID=\"%s\" H5Path=\"%s\">", xmlnsprefix, grpxid, "/"); - } - else { - char *t_tmp = xml_escape_the_name(tmp); - - par_name = xml_escape_the_name(par); - xml_name_to_XID(tmp, grpxid, 100, 1); - xml_name_to_XID(par, parentxid, 100, 1); - h5tools_str_append(&buffer, "<%sGroup Name=\"%s\" OBJ-XID=\"%s\" H5Path=\"%s\" " - "Parents=\"%s\" H5ParentPaths=\"%s\" >", - xmlnsprefix, t_name, grpxid, t_tmp, parentxid, par_name); - HDfree(t_tmp); - HDfree(par_name); - } - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - HDfree(t_name); - HDfree(grpxid); - HDfree(parentxid); - - /* 1. do all the attributes of the group */ - - ctx.indent_level++; - dump_indent += COL; - - if((sort_by == H5_INDEX_CRT_ORDER) && (attr_crt_order_flags & H5P_CRT_ORDER_TRACKED)) { - if(H5Aiterate2(gid, sort_by, sort_order, NULL, dump_function_table->dump_attribute_function, NULL) < 0) { - error_msg("error getting attribute information\n"); - h5tools_setstatus(EXIT_FAILURE); - } /* end if */ - } /* end if */ - else { - if(H5Aiterate2(gid, H5_INDEX_NAME, sort_order, NULL, dump_function_table->dump_attribute_function, NULL) < 0) { - error_msg("error getting attribute information\n"); - h5tools_setstatus(EXIT_FAILURE); - } /* end if */ - } /* end else */ - - if(isRoot && unamedtype) { - unsigned u; - - /* Very special case: dump unamed type in root group */ - for(u = 0; u < type_table->nobjs; u++) { - if(!type_table->objs[u].recorded) { - dset = H5Dopen2(gid, type_table->objs[u].objname, H5P_DEFAULT); - type = H5Dget_type(dset); - sprintf(type_name, "#"H5_PRINTF_HADDR_FMT, type_table->objs[u].objno); - dump_function_table->dump_named_datatype_function(type, type_name); - H5Tclose(type); - H5Dclose(dset); - } - } - } - - /* iterate through all the links */ - - if((sort_by == H5_INDEX_CRT_ORDER) && (crt_order_flags & H5P_CRT_ORDER_TRACKED)) - H5Literate(gid, sort_by, sort_order, NULL, xml_dump_all_cb, NULL); - else - H5Literate(gid, H5_INDEX_NAME, sort_order, NULL, xml_dump_all_cb, NULL); - - dump_indent -= COL; - ctx.indent_level--; - } - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - if(isRoot) - h5tools_str_append(&buffer, "", xmlnsprefix); - else - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - h5tools_str_close(&buffer); - - if(par) - HDfree(par); - if(tmp) - HDfree(tmp); -} - -/*------------------------------------------------------------------------- - * Function: xml_print_refs - * - * Purpose: Print a path to the objects referenced by HDF5 Referneces. - * - * Return: void - * - * Programmer: REMcG - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static int -xml_print_refs(hid_t did, int source) -{ - herr_t e; - hid_t type = -1; - hid_t space = -1; - hssize_t ssiz = -1; - hsize_t i; - size_t tsiz; - hobj_ref_t *refbuf = NULL; - char *buf = NULL; - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &xml_dataformat; - h5tool_format_t string_dataformat; - hsize_t curr_pos = 0; /* total data element position */ - - if (source == DATASET_DATA) { - type = H5Dget_type(did); - } - else if (source == ATTRIBUTE_DATA) { - type = H5Aget_type(did); - } - else { - /* return an error */ - return FAIL; - } - if (H5Tget_class(type) != H5T_REFERENCE) { - /* return an error */ - goto error; - } - if (!H5Tequal(type, H5T_STD_REF_OBJ)) { - /* region ref not supported yet... */ - /* return an error */ - goto error; - } - if (source == DATASET_DATA) { - space = H5Dget_space(did); - if ((ssiz = H5Sget_simple_extent_npoints(space)) < 0) - goto error; - if ((tsiz = H5Tget_size(type)) == 0) - goto error; - - buf = (char *) HDcalloc((size_t)ssiz, tsiz); - if (buf == NULL) - goto error; - e = H5Dread(did, H5T_STD_REF_OBJ, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - /* need to check result here */ - if (e < 0) - goto error; - } - else if (source == ATTRIBUTE_DATA) { - space = H5Aget_space(did); - if ((ssiz = H5Sget_simple_extent_npoints(space)) < 0) - goto error; - if ((tsiz = H5Tget_size(type)) == 0) - goto error; - - buf = (char *) HDcalloc((size_t)ssiz, tsiz); - if (buf == NULL) - goto error; - e = H5Aread(did, H5T_STD_REF_OBJ, buf); - /* need to check the result here */ - if (e < 0) - goto error; - } - - refbuf = (hobj_ref_t *) buf; - - /* setup */ - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - string_dataformat = *outputformat; - - if (fp_format) { - string_dataformat.fmt_double = fp_format; - string_dataformat.fmt_float = fp_format; - } - - if (h5tools_nCols == 0) { - string_dataformat.line_ncols = 65535; - string_dataformat.line_per_line = 1; - } - else - string_dataformat.line_ncols = h5tools_nCols; - - string_dataformat.do_escape = display_escape; - outputformat = &string_dataformat; - - for (i = 0; i < (hsize_t)ssiz; i++) { - const char *path = lookup_ref_path(*refbuf); - ctx.indent_level++; - - if (!path) { - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "\"%s\"", "NULL"); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - else { - char *t_path = xml_escape_the_string(path, -1); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "\"%s\"", t_path); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - HDfree(t_path); - } - ctx.indent_level--; - - refbuf++; - } - - h5tools_str_close(&buffer); - - HDfree(buf); - H5Tclose(type); - H5Sclose(space); - return SUCCEED; - -error: - if(buf) - HDfree(buf); - - H5E_BEGIN_TRY { - H5Tclose(type); - H5Sclose(space); - } H5E_END_TRY; - return FAIL; -} - -/*------------------------------------------------------------------------- - * Function: xml_print_strs - * - * Purpose: Print strings. - * - * Return: void - * - * Programmer: REMcG - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static int -xml_print_strs(hid_t did, int source) -{ - herr_t e; - hid_t type = -1; - hid_t space = -1; - hssize_t ssiz = -1; - htri_t is_vlstr = FALSE; - size_t tsiz = 0; - hsize_t i; - size_t str_size = 0; - char *bp = NULL; - char *onestring = NULL; - void *buf = NULL; - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &xml_dataformat; - h5tool_format_t string_dataformat; - hsize_t curr_pos = 0; /* total data element position */ - - if (source == DATASET_DATA) - type = H5Dget_type(did); - else if (source == ATTRIBUTE_DATA) - type = H5Aget_type(did); - else - /* return an error */ - return FAIL; - if (H5Tget_class(type) != H5T_STRING) - /* return an error */ - goto error; - /* Check if we have VL data in the dataset's datatype */ - is_vlstr = H5Tis_variable_str(type); - - if (source == DATASET_DATA) { - space = H5Dget_space(did); - if((ssiz = H5Sget_simple_extent_npoints(space)) < 0) - goto error; - if((tsiz = H5Tget_size(type)) == 0) - goto error; - - buf = HDmalloc((size_t)ssiz * tsiz); - if (buf == NULL) - goto error; - - e = H5Dread(did, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - if (e < 0) - goto error; - } - else if (source == ATTRIBUTE_DATA) { - space = H5Aget_space(did); - if((ssiz = H5Sget_simple_extent_npoints(space)) < 0) - goto error; - if((tsiz = H5Tget_size(type)) == 0) - goto error; - - buf = HDmalloc((size_t)ssiz * tsiz); - if (buf == NULL) - goto error; - - e = H5Aread(did, type, buf); - if (e < 0) - goto error; - } - - bp = (char*) buf; - if (!is_vlstr) - onestring = (char *) HDcalloc(tsiz, sizeof(char)); - - /* setup */ - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - string_dataformat = *outputformat; - - if (fp_format) { - string_dataformat.fmt_double = fp_format; - string_dataformat.fmt_float = fp_format; - } - - if (h5tools_nCols == 0) { - string_dataformat.line_ncols = 65535; - string_dataformat.line_per_line = 1; - } - else - string_dataformat.line_ncols = h5tools_nCols; - - string_dataformat.do_escape = display_escape; - outputformat = &string_dataformat; - - for (i = 0; i < (hsize_t)ssiz; i++) { - if (is_vlstr) { - onestring = *(char **) bp; - if (onestring) - str_size = HDstrlen(onestring); - } - else { - HDstrncpy(onestring, bp, tsiz); - str_size = tsiz; - } - - if (!onestring) { - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "NULL"); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - else { - char *t_onestring = xml_escape_the_string(onestring, (int)str_size); - if (t_onestring) { - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "\"%s\"", t_onestring); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - HDfree(t_onestring); - } - } - bp += tsiz; - } - - h5tools_str_close(&buffer); - - /* Reclaim any VL memory, if necessary */ - if (!is_vlstr) - if (onestring) - HDfree(onestring); - if (buf) { - if (is_vlstr) - H5Dvlen_reclaim(type, space, H5P_DEFAULT, buf); - HDfree(buf); - } - H5Tclose(type); - H5Sclose(space); - return SUCCEED; - -error: - if(buf) - HDfree(buf); - - H5E_BEGIN_TRY { - H5Tclose(type); - H5Sclose(space); - } H5E_END_TRY; - return FAIL; -} - -/*------------------------------------------------------------------------- - * Function: check_filters - * - * Purpose: private function to check for the filters and - * put tags in the XML. - * - * Return: void - * - * Programmer: REMcG - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -check_filters(hid_t dcpl) -{ - int nfilt; - int i; - H5Z_filter_t filter; - char namebuf[120]; - size_t cd_nelmts = 20; - unsigned int cd_values[20]; - unsigned int flags; - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &xml_dataformat; - h5tool_format_t string_dataformat; - hsize_t curr_pos = 0; /* total data element position */ - - /* setup */ - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - string_dataformat = *outputformat; - - if (fp_format) { - string_dataformat.fmt_double = fp_format; - string_dataformat.fmt_float = fp_format; - } - - if (h5tools_nCols == 0) { - string_dataformat.line_ncols = 65535; - string_dataformat.line_per_line = 1; - } - else - string_dataformat.line_ncols = h5tools_nCols; - - string_dataformat.do_escape = display_escape; - outputformat = &string_dataformat; - - nfilt = H5Pget_nfilters(dcpl); - if (nfilt <= 0) - return; - for (i = 0; i < nfilt; i++) { - filter = H5Pget_filter2(dcpl, (unsigned) i, &flags, (size_t *) &cd_nelmts, cd_values, (size_t)120, namebuf, NULL); - if (filter == H5Z_FILTER_DEFLATE) { - ctx.indent_level++; - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDeflate Level=\"", xmlnsprefix); - if (cd_nelmts < 1) { - /* not sure what this means? */ - h5tools_str_append(&buffer, "6"); - } - else { - h5tools_str_append(&buffer, "%d", cd_values[0]); - } - h5tools_str_append(&buffer, "\"/>"); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - } - else if (filter == H5Z_FILTER_FLETCHER32) { - ctx.indent_level++; - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sFletcher32 />", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - } - else if (filter == H5Z_FILTER_SHUFFLE) { - ctx.indent_level++; - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sShuffle />", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - } - else if (filter == H5Z_FILTER_SZIP) { - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sSZIP ", xmlnsprefix); - if (cd_nelmts < 2) { - /* no pixels ? */ - h5tools_str_append(&buffer, "Pixels_per_block=\"-1\" "); - } - else { - h5tools_str_append(&buffer, "Pixels_per_block=\"%d\" ", cd_values[1]); - } - /* analyse the options mask */ - if (cd_values[0] & H5_SZIP_CHIP_OPTION_MASK) { - h5tools_str_append(&buffer, "Mode =\"Hardware\" "); - } - else if (cd_values[0] & H5_SZIP_ALLOW_K13_OPTION_MASK) { - h5tools_str_append(&buffer, "Mode =\"K13\" "); - } - h5tools_str_append(&buffer, "Coding=\""); - if (cd_values[0] & H5_SZIP_EC_OPTION_MASK) { - h5tools_str_append(&buffer, "Entropy"); - } - else if (cd_values[0] & H5_SZIP_NN_OPTION_MASK) { - h5tools_str_append(&buffer, "NN"); - } - h5tools_str_append(&buffer, "\" "); - - h5tools_str_append(&buffer, "ByteOrder=\""); - if (cd_values[0] & H5_SZIP_LSB_OPTION_MASK) { - h5tools_str_append(&buffer, "LSB"); - } - else if (cd_values[0] & H5_SZIP_MSB_OPTION_MASK) { - h5tools_str_append(&buffer, "MSB"); - } - h5tools_str_append(&buffer, "\" "); - - if (cd_values[0] & H5_SZIP_RAW_OPTION_MASK) { - h5tools_str_append(&buffer, "Header=\"Raw\""); - } - h5tools_str_append(&buffer, "/>"); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - } - else { - /* unknown option */ - } - } - - h5tools_str_close(&buffer); -} - -static void -xml_dump_fill_value(hid_t dcpl, hid_t type) -{ - size_t sz; - size_t i; - hsize_t space; - void *buf; - char *name; - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &xml_dataformat; - h5tool_format_t string_dataformat; - hsize_t curr_pos = 0; /* total data element position */ - - /* setup */ - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - string_dataformat = *outputformat; - - if (fp_format) { - string_dataformat.fmt_double = fp_format; - string_dataformat.fmt_float = fp_format; - } - - if (h5tools_nCols == 0) { - string_dataformat.line_ncols = 65535; - string_dataformat.line_per_line = 1; - } - else - string_dataformat.line_ncols = h5tools_nCols; - - string_dataformat.do_escape = display_escape; - outputformat = &string_dataformat; - - ctx.indent_level++; - dump_indent += COL; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sData>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level++; - dump_indent += COL; - - space = H5Tget_size(type); - buf = HDmalloc((size_t) space); - - H5Pget_fill_value(dcpl, type, buf); - - if (H5Tget_class(type) == H5T_REFERENCE) { - const char * path = lookup_ref_path(*(hobj_ref_t *) buf); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDataFromFile>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - if (!path) { - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "\"%s\"", "NULL"); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - else { - char *t_path = xml_escape_the_string(path, -1); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "\"%s\"", t_path); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - HDfree(t_path); - } - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - else if (H5Tget_class(type) == H5T_STRING) { - /* ????? */ - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, ""); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNoData />", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - else { - /* all other data */ - switch (H5Tget_class(type)) { - case H5T_INTEGER: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDataFromFile>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "\"%d\"", *(int *) buf); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - case H5T_FLOAT: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDataFromFile>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "\"%f\"", (double)*(float *)buf); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - case H5T_BITFIELD: - case H5T_OPAQUE: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDataFromFile>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - sz = H5Tget_size(type); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "\""); - for (i = 0; i < sz; i++) { - h5tools_str_append(&buffer, "%x ", *(unsigned int *) buf); - buf = (char *) buf + sizeof(unsigned int); - } - h5tools_str_append(&buffer, "\""); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - case H5T_ENUM: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDataFromFile>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - name = H5Tget_member_name(type, *(unsigned *) buf); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "\"%s\"", name); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - if(name) - H5free_memory(name); - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - case H5T_ARRAY: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, ""); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNoData />", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - case H5T_TIME: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, ""); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNoData />", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - case H5T_COMPOUND: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, ""); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNoData />", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - case H5T_VLEN: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, ""); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNoData />", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - case H5T_NO_CLASS: - case H5T_NCLASSES: - HDassert(0); - /* fall through */ - case H5T_STRING: - case H5T_REFERENCE: - default: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", H5Tget_class(type)); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNoData/>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - } - } - HDfree(buf); - ctx.indent_level--; - dump_indent -= COL; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - dump_indent -= COL; - - h5tools_str_close(&buffer); -} - -/*------------------------------------------------------------------------- - * Function: xml_dump_dataset - * - * Purpose: Dump a description of an HDF5 dataset in XML. - * - * Return: void - * - * Programmer: REMcG - * - * Modifications: - * Pedro Vicente, October 9, 2007 - * added parameters to H5Aiterate2 to allow for other iteration orders - * - *------------------------------------------------------------------------- - */ -void -xml_dump_dataset(hid_t did, const char *name, struct subset_t H5_ATTR_UNUSED * sset) -{ - hid_t type; - hid_t space; - hid_t dcpl; - H5D_fill_value_t fvstatus; - int maxdims; - hsize_t *chsize; - int ndims; - int i; - H5D_alloc_time_t at; - H5D_fill_time_t ft; - hsize_t tempi; - char *tmp; - char *t_name; - char *t_tmp; - char *t_prefix; - unsigned attr_crt_order_flags; - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &xml_dataformat; - h5tool_format_t string_dataformat; - hsize_t curr_pos = 0; /* total data element position */ - - char *rstr = (char*) HDmalloc((size_t)100); - char *pstr = (char*) HDmalloc((size_t)100); - - tmp = (char*) HDmalloc(HDstrlen(prefix) + HDstrlen(name) + 2); - HDstrcpy(tmp, prefix); - HDstrcat(tmp, "/"); - HDstrcat(tmp, name); - - /* setup */ - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - t_name = xml_escape_the_name(name); - t_tmp = xml_escape_the_name(tmp); - t_prefix = xml_escape_the_name(prefix); - - string_dataformat = *outputformat; - - if (fp_format) { - string_dataformat.fmt_double = fp_format; - string_dataformat.fmt_float = fp_format; - } - - if (h5tools_nCols == 0) { - string_dataformat.line_ncols = 65535; - string_dataformat.line_per_line = 1; - } - else - string_dataformat.line_ncols = h5tools_nCols; - - string_dataformat.do_escape = display_escape; - outputformat = &string_dataformat; - - xml_name_to_XID(tmp, rstr, 100, 1); - xml_name_to_XID(prefix, pstr, 100, 1); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDataset Name=\"%s\" OBJ-XID=\"%s\" H5Path= \"%s\" Parents=\"%s\" H5ParentPaths=\"%s\">", - xmlnsprefix, t_name, rstr, t_tmp, pstr, - strcmp(prefix, "") ? t_prefix : "/"); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - HDfree(t_name); - HDfree(t_tmp); - HDfree(t_prefix); - HDfree(rstr); - HDfree(pstr); - HDfree(tmp); - - dcpl = H5Dget_create_plist(did); - type = H5Dget_type(did); - space = H5Dget_space(did); - - /* query the creation properties for attributes */ - H5Pget_attr_creation_order(dcpl, &attr_crt_order_flags); - - /* Print information about storage layout */ - if (H5D_CHUNKED == H5Pget_layout(dcpl)) { - maxdims = H5Sget_simple_extent_ndims(space); - HDassert(maxdims >= 0); - chsize = (hsize_t *)HDmalloc((size_t)maxdims * sizeof(hsize_t)); - ctx.indent_level++; - dump_indent += COL; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sStorageLayout>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level++; - dump_indent += COL; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sChunkedLayout ", xmlnsprefix); - ndims = H5Pget_chunk(dcpl, maxdims, chsize); - h5tools_str_append(&buffer, "Ndims=\"%d\">", ndims); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level++; - dump_indent += COL; - - for (i = 0; i < ndims; i++) { - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sChunkDimension DimSize=\"%" H5_PRINTF_LL_WIDTH "u\" />", xmlnsprefix, chsize[i]); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sRequiredFilter>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level++; - dump_indent += COL; - check_filters(dcpl); - ctx.indent_level--; - dump_indent -= COL; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level--; - dump_indent -= COL; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - dump_indent -= COL; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - dump_indent -= COL; - HDfree(chsize); - } - else if (H5D_CONTIGUOUS == H5Pget_layout(dcpl)) { - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sStorageLayout>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sContiguousLayout/>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - } - else if (H5D_COMPACT == H5Pget_layout(dcpl)) { - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sStorageLayout>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sCompactLayout/>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - } - /* and check for external.... ?? */ - - /* fill value */ - - ctx.indent_level++; - dump_indent += COL; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sFillValueInfo ", xmlnsprefix); - H5Pget_fill_time(dcpl, &ft); - h5tools_str_append(&buffer, "FillTime=\""); - switch (ft) { - case H5D_FILL_TIME_ALLOC: - h5tools_str_append(&buffer, "FillOnAlloc"); - break; - case H5D_FILL_TIME_NEVER: - h5tools_str_append(&buffer, "FillNever"); - break; - case H5D_FILL_TIME_IFSET: - h5tools_str_append(&buffer, "FillIfSet"); - break; - case H5D_FILL_TIME_ERROR: - HDassert(0); - /* fall through */ - default: - h5tools_str_append(&buffer, "?"); - break; - } /* end switch */ - h5tools_str_append(&buffer, "\" "); - H5Pget_alloc_time(dcpl, &at); - h5tools_str_append(&buffer, "AllocationTime=\""); - switch (at) { - case H5D_ALLOC_TIME_EARLY: - h5tools_str_append(&buffer, "Early"); - break; - case H5D_ALLOC_TIME_INCR: - h5tools_str_append(&buffer, "Incremental"); - break; - case H5D_ALLOC_TIME_LATE: - h5tools_str_append(&buffer, "Late"); - break; - case H5D_ALLOC_TIME_DEFAULT: - case H5D_ALLOC_TIME_ERROR: - HDassert(0); - /* fall through */ - default: - h5tools_str_append(&buffer, "?"); - break; - } /* end switch */ - h5tools_str_append(&buffer, "\""); - h5tools_str_append(&buffer, ">"); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level++; - dump_indent += COL; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sFillValue>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - H5Pfill_value_defined(dcpl, &fvstatus); - if (fvstatus == H5D_FILL_VALUE_UNDEFINED || (fvstatus == H5D_FILL_VALUE_DEFAULT && ft == H5D_FILL_TIME_IFSET)) { - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNoFill/>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - } - else { - xml_dump_fill_value(dcpl, type); - } - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level--; - dump_indent -= COL; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level--; - dump_indent -= COL; - - dump_function_table->dump_dataspace_function(space); - dump_function_table->dump_datatype_function(type); - - ctx.indent_level++; - dump_indent += COL; - - if ((sort_by == H5_INDEX_CRT_ORDER) && (attr_crt_order_flags & H5P_CRT_ORDER_TRACKED)) { - if (H5Aiterate2(did, sort_by, sort_order, NULL, dump_function_table->dump_attribute_function, NULL) < 0) { - error_msg("error getting attribute information\n"); - h5tools_setstatus(EXIT_FAILURE); - } /* end if */ - } /* end if */ - else { - if (H5Aiterate2(did, H5_INDEX_NAME, sort_order, NULL, dump_function_table->dump_attribute_function, NULL) < 0) { - error_msg("error getting attribute information\n"); - h5tools_setstatus(EXIT_FAILURE); - } /* end if */ - } /* end else */ - - ctx.indent_level--; - dump_indent -= COL; - tempi = H5Dget_storage_size(did); - - if (display_data && (tempi > 0)) { - switch (H5Tget_class(type)) { - case H5T_INTEGER: - case H5T_FLOAT: - case H5T_STRING: - case H5T_BITFIELD: - case H5T_OPAQUE: - case H5T_ENUM: - case H5T_ARRAY: - ctx.indent_level++; - dump_indent += COL; - dump_function_table->dump_data_function(did, DATASET_DATA, NULL, 0); - ctx.indent_level--; - dump_indent -= COL; - break; - - case H5T_TIME: - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sData>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, ""); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNoData />", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sData>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level--; - break; - - case H5T_COMPOUND: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, ""); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.indent_level++; - dump_indent += COL; - dump_function_table->dump_data_function(did, DATASET_DATA, NULL, 0); - ctx.indent_level--; - dump_indent -= COL; - break; - - case H5T_REFERENCE: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sData>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - if (!H5Tequal(type, H5T_STD_REF_OBJ)) { - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, ""); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNoData />", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - else { - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDataFromFile>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - xml_print_refs(did, DATASET_DATA); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - - case H5T_VLEN: - ctx.indent_level--; - dump_indent -= COL; - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, ""); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level++; - dump_indent += COL; - - ctx.indent_level++; - dump_indent += COL; - dump_function_table->dump_data_function(did, DATASET_DATA, NULL, 0); - ctx.indent_level--; - dump_indent -= COL; - break; - case H5T_NO_CLASS: - case H5T_NCLASSES: - HDassert(0); - /* fall through */ - - default: - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sData>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", H5Tget_class(type)); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNoData/>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - break; - } - } - else { - /* no data written */ - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sData>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level++; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sNoData/>", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - } - - H5Tclose(type); - H5Sclose(space); - H5Pclose(dcpl); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "", xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - h5tools_str_close(&buffer); -} - -/*------------------------------------------------------------------------- - * Function: xml_print_enum - * - * Purpose: Print the values of an HDF5 ENUM in XML. - * Very similar to regular DDL output. - * - * Return: void - * - * Programmer: REMcG - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -xml_print_enum(hid_t type) -{ - char **name = NULL; /*member names */ - unsigned char *value = NULL; /*value array */ - unsigned nmembs; /*number of members */ - hid_t super; /*enum base integer type */ - hid_t native = -1; /*native integer datatype */ - size_t dst_size; /*destination value type size */ - unsigned i; /*miscellaneous counters */ - size_t j; - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *outputformat = &xml_dataformat; - h5tool_format_t string_dataformat; - hsize_t curr_pos = 0; /* total data element position */ - - /* setup */ - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - HDmemset(&ctx, 0, sizeof(ctx)); - ctx.indent_level = dump_indent / COL; - ctx.cur_column = dump_indent; - - string_dataformat = *outputformat; - - if (fp_format) { - string_dataformat.fmt_double = fp_format; - string_dataformat.fmt_float = fp_format; - } - - if (h5tools_nCols == 0) { - string_dataformat.line_ncols = 65535; - string_dataformat.line_per_line = 1; - } - else - string_dataformat.line_ncols = h5tools_nCols; - - string_dataformat.do_escape = display_escape; - outputformat = &string_dataformat; - - nmembs = (unsigned)H5Tget_nmembers(type); - super = H5Tget_super(type); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sDataType>",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - xml_print_datatype(super,0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - /* - * Determine what datatype to use for the native values. To simplify - * things we entertain three possibilities: - * 1. long long -- the largest native signed integer - * 2. unsigned long long -- the largest native unsigned integer - * 3. raw format - */ - if (H5Tget_size(type) <= sizeof(long long)) { - dst_size = sizeof(long long); - - if (H5T_SGN_NONE == H5Tget_sign(type)) { - native = H5T_NATIVE_ULLONG; - } - else { - native = H5T_NATIVE_LLONG; - } - } - else { - dst_size = H5Tget_size(type); - } - - /* Get the names and raw values of all members */ - name = (char **)HDcalloc((size_t)nmembs, sizeof(char *)); - value = (unsigned char *)HDcalloc((size_t)nmembs, MAX(H5Tget_size(type), dst_size)); - - for (i = 0; i < nmembs; i++) { - name[i] = H5Tget_member_name(type, i); - H5Tget_member_value(type, i, value + i * H5Tget_size(type)); - } - - /* Convert values to native datatype */ - if (native > 0) - H5Tconvert(super, native, (size_t)nmembs, value, NULL, H5P_DEFAULT); - - /* Sort members by increasing value */ - /*not implemented yet */ - - /* Print members */ - ctx.indent_level++; - dump_indent += COL; - for (i = 0; i < nmembs; i++) { - char *t_name = xml_escape_the_name(name[i]); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sEnumElement>",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level++; - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "%s", t_name); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - HDfree(t_name); - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "<%sEnumValue>",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level++; - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - if (native < 0) { - h5tools_str_append(&buffer, "0x"); - - for (j = 0; j < dst_size; j++) - h5tools_str_append(&buffer, "%02x", value[i * dst_size + j]); - } - else if (H5T_SGN_NONE == H5Tget_sign(native)) { - h5tools_str_append(&buffer,"%" H5_PRINTF_LL_WIDTH "u", *((unsigned long long *) - ((void *) (value + i * dst_size)))); - } - else { - h5tools_str_append(&buffer,"%" H5_PRINTF_LL_WIDTH "d", - *((long long *) ((void *) (value + i * dst_size)))); - } - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.indent_level--; - - ctx.need_prefix = TRUE; - h5tools_simple_prefix(rawoutstream, outputformat, &ctx, (hsize_t)0, 0); - - /* Render the element */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "",xmlnsprefix); - h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); - } - ctx.indent_level--; - dump_indent -= COL; - - h5tools_str_close(&buffer); - - /* Release resources */ - for (i = 0; i < nmembs; i++) - H5free_memory(name[i]); - - HDfree(name); - HDfree(value); - H5Tclose(super); -} - diff --git a/tools/h5dump/h5dump_xml.h b/tools/h5dump/h5dump_xml.h deleted file mode 100644 index c1d6c62..0000000 --- a/tools/h5dump/h5dump_xml.h +++ /dev/null @@ -1,39 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -#ifndef H5DUMP_XML_H__ -#define H5DUMP_XML_H__ - -extern const char *xmlnsprefix; - -#ifdef __cplusplus -extern "C" { -#endif - -/* The dump functions of the dump_function_table */ -/* XML format: same interface, alternative output */ - -void xml_dump_group(hid_t, const char *); -void xml_dump_named_datatype(hid_t, const char *); -void xml_dump_dataset(hid_t, const char *, struct subset_t *); -void xml_dump_dataspace(hid_t space); -void xml_dump_datatype(hid_t type); -herr_t xml_dump_attr(hid_t, const char *, const H5A_info_t *, void *); -void xml_dump_data(hid_t, int, struct subset_t *, int); - -#ifdef __cplusplus -} -#endif - -#endif /* !H5DUMP_XML_H__ */ diff --git a/tools/h5dump/h5dumpgentest.c b/tools/h5dump/h5dumpgentest.c deleted file mode 100644 index bbec813..0000000 --- a/tools/h5dump/h5dumpgentest.c +++ /dev/null @@ -1,10388 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * Generate the binary hdf5 files for the h5dump tests. - * Usage: just execute the program without any arguments will - * generate all the binary hdf5 files in the local directory. - * - * If you regenerate the test files (e.g., changing some code, - * trying it on a new platform, ...), you need to verify the correctness - * of the expected output and update the corresponding *.ddl files. - */ -#include - -#include "hdf5.h" -#include "H5private.h" -#include "h5tools.h" - -#define FILE1 "tgroup.h5" -#define FILE2 "tdset.h5" -#define FILE3 "tattr.h5" -#define FILE4 "tslink.h5" -#define FILE4_1 "tsoftlinks.h5" -#define FILE5 "thlink.h5" -#define FILE6 "tcompound.h5" -#define FILE7 "tall.h5" -#define FILE8 "tdset2.h5" -#define FILE9 "tcompound2.h5" -#define FILE10 "tloop.h5" -#define FILE11 "tloop2.h5" -#define FILE12 "tmany.h5" -#define FILE13 "tstr.h5" -#define FILE14 "tstr2.h5" -#define FILE15 "tenum.h5" -#define FILE16 "tobjref.h5" -#define FILE17 "tdatareg.h5" -#define FILE18 "tnestedcomp.h5" -#define FILE19 "topaque.h5" -#define FILE20 "tbitfields.h5" -#define FILE21 "tvldtypes1.h5" -#define FILE22 "tvldtypes2.h5" -#define FILE23 "tvldtypes3.h5" -#define FILE24 "tvldtypes4.h5" -#define FILE25 "tarray1.h5" -#define FILE25_BIG "tarray1_big.h5" -#define FILE26 "tarray2.h5" -#define FILE27 "tarray3.h5" -#define FILE28 "tarray4.h5" -#define FILE29 "tarray5.h5" -#define FILE30 "tarray6.h5" -#define FILE31 "tarray7.h5" -#define FILE32 "tempty.h5" -#define FILE33 "tgrp_comments.h5" -#define FILE34 "tsplit_file" -#define FILE35 "tfamily%05d.h5" -#define FILE36 "tmulti" -#define FILE37 "tlarge_objname.h5" -#define FILE38 "tvlstr.h5" -#define FILE39 "tchar.h5" -#define FILE40 "tattr2.h5" -#define FILE41 "tcompound_complex.h5" -#define FILE42 "tnamed_dtype_attr.h5" -#define FILE43 "tvldtypes5.h5" -#define FILE44 "tfilters.h5" -#define FILE45 "tnullspace.h5" -#define FILE46 "tfcontents1.h5" -#define FILE47 "tfcontents2.h5" -#define FILE48 "tfvalues.h5" -#define FILE49 "tstr3.h5" -#define FILE50 "taindices.h5" -#define FILE51 "tlonglinks.h5" -#define FILE52 "tldouble.h5" -#define FILE53 "textlink.h5" -#define FILE54 "tudlink.h5" -#define FILE55 "tbinary.h5" -#define FILE56 "tbigdims.h5" -#define FILE57 "thyperslab.h5" -#define FILE58 "tordergr.h5" -#define FILE59 "torderattr.h5" -#define FILE60 "tfpformat.h5" -#define FILE61 "textlinksrc.h5" -#define FILE62 "textlinktar.h5" -#define FILE63 "textlinkfar.h5" -#define FILE64 "tattrreg.h5" -#define FILE65 "file_space.h5" -#define FILE66 "packedbits.h5" -#define FILE67 "zerodim.h5" -#define FILE68 "charsets.h5" -#define FILE68a "tdset_idx.h5" -#define FILE69 "tattrintsize.h5" -#define FILE70 "tcmpdintsize.h5" -#define FILE71 "tcmpdattrintsize.h5" -#define FILE72 "tnestedcmpddt.h5" -#define FILE73 "tscalarintsize.h5" -#define FILE74 "tscalarattrintsize.h5" -#define FILE75 "tscalarstring.h5" -#define FILE76 "tcmpdintarray.h5" -#define FILE77 "tcmpdints.h5" -#define FILE78 "tscalarintattrsize.h5" -#define FILE79 "tintsattrs.h5" -#define FILE80 "tbitnopaque.h5" -#define FILE81 "tints4dims.h5" -#define FILE82 "tcompound_complex2.h5" -#define FILE83 "tvlenstr_array.h5" - -/*------------------------------------------------------------------------- - * prototypes - *------------------------------------------------------------------------- - */ - -/* utility functions */ -static int -make_dset(hid_t loc_id, const char *name, hid_t sid, hid_t tid, hid_t dcpl, void *buf); -static int -write_attr(hid_t loc_id, int rank, hsize_t *dims, const char *attr_name, - hid_t tid, void *buf); -static int -write_dset( hid_t loc_id, int rank, hsize_t *dims, const char *dset_name, - hid_t tid, void *buf ); - -/* a filter operation callback function */ -static size_t -myfilter(unsigned int H5_ATTR_UNUSED flags, size_t H5_ATTR_UNUSED cd_nelmts, - const unsigned int H5_ATTR_UNUSED *cd_values, size_t nbytes, - size_t H5_ATTR_UNUSED *buf_size, void H5_ATTR_UNUSED **buf); - -/* a "set local" callback */ -static herr_t -set_local_myfilter(hid_t dcpl_id, hid_t tid, hid_t H5_ATTR_UNUSED sid); - -#define MYFILTER_ID 405 - -/* This message derives from H5Z */ -const H5Z_class2_t H5Z_MYFILTER[1] = {{ - H5Z_CLASS_T_VERS, - MYFILTER_ID, /* Filter id number */ - 1, 1, - "myfilter", /* Filter name for debugging */ - NULL, /* The "can apply" callback */ - set_local_myfilter, /* The "set local" callback */ - myfilter, /* The actual filter function */ -}}; - - -/* A UD link traversal function. Shouldn't actually be called. */ -static hid_t UD_traverse(H5_ATTR_UNUSED const char * link_name, H5_ATTR_UNUSED hid_t cur_group, - H5_ATTR_UNUSED const void * udata, H5_ATTR_UNUSED size_t udata_size, H5_ATTR_UNUSED hid_t lapl_id) -{ - return -1; -} - -#define MY_LINKCLASS 187 - -const H5L_class_t UD_link_class[1] = {{ - H5L_LINK_CLASS_T_VERS, /* H5L_class_t version */ - (H5L_type_t)MY_LINKCLASS, /* Link type id number */ - "UD link class", /* name for debugging */ - NULL, /* Creation callback */ - NULL, /* Move/rename callback */ - NULL, /* Copy callback */ - UD_traverse, /* The actual traversal function */ - NULL, /* Deletion callback */ - NULL /* Query callback */ -}}; - - -#define LENSTR 50 -#define LENSTR2 11 - -#define SPACE2_RANK 2 -#define SPACE2_DIM1 10 -#define SPACE2_DIM2 10 - -#define SPACE1_RANK 1 -#define SPACE1_DIM1 4 - -#define DIM1 20 -#define DIM2 10 -#define CDIM1 DIM1/2 -#define CDIM2 DIM2/2 -#define RANK 2 - -/* Dataspace of 0 dimension size */ -#define SPACE3_RANK 2 -#define SPACE3_DIM1 0 -#define SPACE3_DIM2 0 - -/* Element selection information */ -#define POINT1_NPOINTS 10 - -typedef enum{ - RED, - GREEN, - BLUE, - WHITE, - BLACK -} enumtype; - -/* Compound datatype */ -typedef struct s1_t { - unsigned int a; - unsigned int b; - float c; -} s1_t; - - -/* 1-D array datatype */ -#define ARRAY1_RANK 1 -#define ARRAY1_DIM1 4 - -/* 3-D array datatype */ -#define ARRAY2_RANK 3 -#define ARRAY2_DIM1 3 -#define ARRAY2_DIM2 4 -#define ARRAY2_DIM3 5 - -/* 2-D array datatype */ -#define ARRAY3_RANK 2 -#define ARRAY3_DIM1 6 -#define ARRAY3_DIM2 3 - -/* VL string datatype name */ -/* TODO remove complier error not used, remove the link when everything is OK */ -/* #define VLSTR_TYPE "vl_string_type" */ - -/* "File 41" macros */ -/* Name of dataset to create in datafile */ -#define F41_DATASETNAME "CompoundComplex" -/* Dataset dimensions */ -#define F41_LENGTH 6 -#define F41_RANK 1 -#define F41_ARRAY_RANK 1 -#define F41_ARRAY_RANKd 2 -#define F41_DIMb 4 -#define F41_ARRAY_DIMc 6 -#define F41_ARRAY_DIMd1 5 -#define F41_ARRAY_DIMd2 6 -#define F41_ARRAY_DIMf 10 - -/* "File 42" macros */ -/* Name of dataset to create in datafile */ -#define F42_DSETNAME "Dataset" -#define F42_TYPENAME "Datatype" -#define F42_ATTRNAME "Attribute" -#define F42_LINKNAME "Link_to_Datatype" - -/* "File 43" macros */ -/* Name of dataset to create in datafile */ -#define F43_DSETNAME "Dataset" - -/* "File 51" macros */ -#define F51_MAX_NAME_LEN ((64*1024)+1024) - -/* "File 64" macros */ -#define F64_FILE "tarray8.h5" -#define F64_DATASET "DS1" -#define F64_DIM0 1 -#define F64_ARRAY_BUF_LEN (4*1024) -#define F64_DIM1 (F64_ARRAY_BUF_LEN / sizeof(int) + 1) - -/* File 65 macros */ -#define STRATEGY H5F_FILE_SPACE_AGGR_VFD /* File space handling strategy */ -#define THRESHOLD10 10 /* Free space section threshold */ - -/* "FILE66" macros and for FILE69 */ -#define F66_XDIM 8 -#define F66_DATASETU08 "DU08BITS" -#define F66_DATASETS08 "DS08BITS" -#define F66_YDIM8 8 -#define F66_DATASETU16 "DU16BITS" -#define F66_DATASETS16 "DS16BITS" -#define F66_YDIM16 16 -#define F66_DATASETU32 "DU32BITS" -#define F66_DATASETS32 "DS32BITS" -#define F66_YDIM32 32 -#define F66_DATASETU64 "DU64BITS" -#define F66_DATASETS64 "DS64BITS" -#define F66_YDIM64 64 -#define F66_DUMMYDBL "DummyDBL" - -/* Declarations for gent_dataset_idx() for "FILE68a" */ -#define F68a_DSET_FIXED "dset_fixed" -#define F68a_DSET_FIXED_FILTER "dset_filter" -#define F68a_DSET_BTREE "dset_btree" -#define F68a_DIM200 200 -#define F68a_DIM100 100 -#define F68a_DIM20 20 -#define F68a_DIM10 10 -#define F68a_CHUNK 5 - -/* "FILE70" macros and for FILE71 */ -/* Name of dataset to create in datafile */ -#define F70_DATASETNAME "CompoundIntSize" -#define F70_LENGTH 4 -#define F70_RANK 1 -#define F70_ARRAY_RANK 2 -#define F70_XDIM 8 -#define F70_DATASETU08 "DU08BITS" -#define F70_DATASETS08 "DS08BITS" -#define F70_YDIM8 8 -#define F70_DATASETU16 "DU16BITS" -#define F70_DATASETS16 "DS16BITS" -#define F70_YDIM16 16 -#define F70_DATASETU32 "DU32BITS" -#define F70_DATASETS32 "DS32BITS" -#define F70_YDIM32 32 -#define F70_DATASETU64 "DU64BITS" -#define F70_DATASETS64 "DS64BITS" -#define F70_YDIM64 64 -#define F70_DUMMYDBL "DummyDBL" -/* Name of dataset to create in datafile */ -#define F71_DATASETNAME "CompoundAttrIntSize" - -/* "FILE73" macros and for FILE69 and FILE78 */ -#define F73_ARRAY_RANK 2 -#define F73_XDIM 8 -#define F73_DATASETU08 "DU08BITS" -#define F73_DATASETS08 "DS08BITS" -#define F73_YDIM8 8 -#define F73_DATASETU16 "DU16BITS" -#define F73_DATASETS16 "DS16BITS" -#define F73_YDIM16 16 -#define F73_DATASETU32 "DU32BITS" -#define F73_DATASETS32 "DS32BITS" -#define F73_YDIM32 32 -#define F73_DATASETU64 "DU64BITS" -#define F73_DATASETS64 "DS64BITS" -#define F73_YDIM64 64 -#define F73_DUMMYDBL "DummyDBL" - -/* "FILE76 and FILE77 */ -/* Name of dataset to create in datafile */ -#define F76_DATASETNAME "CompoundIntArray" -#define F76_LENGTH 4 -#define F76_RANK 1 -#define F76_ARRAY_RANK 1 -#define F76_DATASETU08 "DU08BITS" -#define F76_DATASETS08 "DS08BITS" -#define F76_DIM8 8 -#define F76_DATASETU16 "DU16BITS" -#define F76_DATASETS16 "DS16BITS" -#define F76_DIM16 16 -#define F76_DATASETU32 "DU32BITS" -#define F76_DATASETS32 "DS32BITS" -#define F76_DIM32 32 -#define F76_DATASETU64 "DU64BITS" -#define F76_DATASETS64 "DS64BITS" -#define F76_DIM64 64 -#define F76_DUMMYDBL "DummyDBL" -/* Name of dataset to create in datafile */ -#define F77_DATASETNAME1 "CompoundInts" -#define F77_DATASETNAME2 "CompoundRInts" -#define F77_LENGTH 64 - -#define F80_DIM32 32 - -#define F81_DATASETNAME "FourDimInts" -#define F81_RANK 4 -#define F81_WDIM 10 -#define F81_XDIM 8 -#define F81_YDIM 6 -#define F81_ZDIM 4 - -/* "File 82" macros */ -/* Name of dataset to create in datafile */ -#define F82_DATASETNAME "CompoundComplex1D" -/* Dataset dimensions */ -#define F82_DIM32 32 -#define F82_RANK 1 -//#define F82_RANK2 2 -//#define F82_RANK3 3 -//#define F82_RANK4 4 - -/* "File 83" macros */ -/* Name of dataset to create in datafile */ -#define F83_DATASETNAME "ScalarArrayOfVlenStr" -#define F83_DATASETNAME2 "CompoundArrayOfVlenStr" -/* Dataset dimensions */ -#define F83_DIM 5 -#define F83_RANK 1 -#define F83_ARRAYDIM 3 - -static void -gent_group(void) -{ - hid_t fid, group; - - fid = H5Fcreate(FILE1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* / */ - group = H5Gcreate2(fid, "/g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - group = H5Gcreate2(fid, "/g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - group = H5Gcreate2(fid, "/g3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - /* /g1 */ - group = H5Gcreate2(fid, "/g1/g1.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - group = H5Gcreate2(fid, "/g1/g1.2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - /* /g2 */ - group = H5Gcreate2(fid, "/g2/g2.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - /* /g3 */ - group = H5Gcreate2(fid, "/g3/g3.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - group = H5Gcreate2(fid, "/g3/g3.2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - group = H5Gcreate2(fid, "/g3/g3.3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - group = H5Gcreate2(fid, "/g3/g3.4", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - /* /g2/g2.1 */ - group = H5Gcreate2(fid, "/g2/g2.1/g2.1.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - group = H5Gcreate2(fid, "/g2/g2.1/g2.1.2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - group = H5Gcreate2(fid, "/g2/g2.1/g2.1.3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - H5Fclose(fid); -} - -static void -gent_dataset(void) -{ - hid_t fid, dataset, space; - hsize_t dims[2]; - int dset1[10][20]; - double dset2[30][20]; - int i, j; - - fid = H5Fcreate(FILE2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* dset1 */ - dims[0] = 10; dims[1] = 20; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, "/dset1", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - for(i = 0; i < 10; i++) - for(j = 0; j < 20; j++) - dset1[i][j] = j + i; - - H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset1); - H5Sclose(space); - H5Dclose(dataset); - - /* dset2 */ - dims[0] = 30; dims[1] = 20; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, "/dset2", H5T_IEEE_F64BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - for(i = 0; i < 30; i++) - for(j = 0; j < 20; j++) - dset2[i][j] = 0.0001F * (float)j + (float)i; - - H5Dwrite(dataset, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2); - - H5Sclose(space); - H5Dclose(dataset); - H5Fclose(fid); -} - -static void -gent_dataset2(void) -{ - hid_t fid, dataset, space, create_plist; - hsize_t dims[2]; - hsize_t maxdims[2]; - int dset1[10][20]; - double dset2[30][10]; - int i, j; - - fid = H5Fcreate(FILE8, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - create_plist = H5Pcreate(H5P_DATASET_CREATE); - dims[0] = 5; dims[1] = 5; - H5Pset_chunk(create_plist, 2, dims); - - /* dset1 */ - dims[0] = 10; dims[1] = 20; - maxdims[0] = H5S_UNLIMITED; maxdims[1] = 20; - space = H5Screate_simple(2, dims, maxdims); - dataset = H5Dcreate2(fid, "/dset1", H5T_STD_I32BE, space, H5P_DEFAULT, create_plist, H5P_DEFAULT); - - for(i = 0; i < 10; i++) - for(j = 0; j < 20; j++) - dset1[i][j] = j; - - H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset1); - H5Sclose(space); - H5Dclose(dataset); - - /* dset2 */ - dims[0] = 30; dims[1] = 10; - maxdims[0] = 30; maxdims[1] = H5S_UNLIMITED; - space = H5Screate_simple(2, dims, maxdims); - dataset = H5Dcreate2(fid, "/dset2", H5T_IEEE_F64BE, space, H5P_DEFAULT, create_plist, H5P_DEFAULT); - - for(i = 0; i < 30; i++) - for(j = 0; j < 10; j++) - dset2[i][j] = j; - - H5Dwrite(dataset, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2); - - H5Sclose(space); - H5Dclose(dataset); - H5Pclose(create_plist); - H5Fclose(fid); -} - -static void -gent_attribute(void) -{ - hid_t fid, root, space, attr, type; - hsize_t dims[2]; - char buf[60]; - int i, data[10]; - double d[10]; - char string[]= "string attribute"; - int point = 100; - - fid = H5Fcreate(FILE3, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - root = H5Gopen2(fid, "/", H5P_DEFAULT); - - /* attribute 1 */ - dims[0] = 24; - space = H5Screate_simple(1, dims, NULL); - attr = H5Acreate2(root, "/attr1", H5T_STD_I8BE, space, H5P_DEFAULT, H5P_DEFAULT); - sprintf(buf, "attribute of root group"); - H5Awrite(attr, H5T_NATIVE_SCHAR, buf); - H5Sclose(space); - H5Aclose(attr); - - /* attribute 2 */ - dims[0] = 10; - space = H5Screate_simple(1, dims, NULL); - attr = H5Acreate2(root, "attr2", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT); - - for(i = 0; i < 10; i++) data[i] = i+1; - - H5Awrite(attr, H5T_NATIVE_INT, data); - H5Sclose(space); - H5Aclose(attr); - - /* attribute 3 */ - dims[0] = 10; - space = H5Screate_simple(1, dims, NULL); - attr = H5Acreate2(root, "attr3", H5T_IEEE_F64BE, space, H5P_DEFAULT, H5P_DEFAULT); - - for(i = 0; i < 10; i++) d[i] = 0.1F * (float)i; - - H5Awrite(attr, H5T_NATIVE_DOUBLE, d); - H5Sclose(space); - H5Aclose(attr); - - /* attribute 4 */ - space = H5Screate(H5S_SCALAR); - attr = H5Acreate2(root, "attr4", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, H5T_NATIVE_INT, &point); - H5Sclose(space); - H5Aclose(attr); - - /* attribute 5 */ - space = H5Screate(H5S_SCALAR); - type = H5Tcopy(H5T_C_S1); - H5Tset_size(type, 17); - attr = H5Acreate2(root, "attr5", type, space, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, type, string); - - H5Tclose(type); - H5Sclose(space); - H5Aclose(attr); - H5Gclose(root); - H5Fclose(fid); -} - -static void gent_softlink(void) -{ - hid_t fid, root; - - fid = H5Fcreate(FILE4, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - root = H5Gopen2(fid, "/", H5P_DEFAULT); - H5Lcreate_soft("somevalue", root, "slink1", H5P_DEFAULT, H5P_DEFAULT); - H5Lcreate_soft("linkvalue", root, "slink2", H5P_DEFAULT, H5P_DEFAULT); - - H5Gclose(root); - H5Fclose(fid); -} - -/*------------------------------------------------------------------------- - * Function: gent_softlink2 - * - * Purpose: Create soft links to various objects. - * Return: - * SUCCEED - * FAIL - * Programmer: Jonathan Kim - * Date: May 26, 2010 - *-------------------------------------------------------------------------*/ -#define NX 4 -#define NY 2 -static int gent_softlink2(void) -{ - hid_t fileid1 = -1; - hid_t gid1 = -1, gid2 = -1; - hid_t datatype = -1; - hid_t dset1 = -1, dset2 = -1; - hid_t dataspace = -1; - hsize_t dimsf[2]; /* dataset dimensions */ - int data1[NX][NY] = {{0,0},{1,1},{2,2},{3,3}}; - int data2[NX][NY] = {{0,0},{0,1},{0,2},{3,3}}; - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * FILE - *------------------------------------------------------------------------*/ - /* Create a new file */ - fileid1 = H5Fcreate(FILE4_1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fileid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", FILE4_1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Groups - *------------------------------------------------------------------------*/ - gid1 = H5Gcreate2(fileid1, "group1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", FILE4_1); - status = FAIL; - goto out; - } - - gid2 = H5Gcreate2(fileid1, "group_empty", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", FILE4_1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Named datatype - *------------------------------------------------------------------------*/ - datatype = H5Tcopy(H5T_NATIVE_INT); - status = H5Tcommit2(fileid1, "dtype", datatype, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Tcommit2 failed.\n", FILE4_1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Datasets - *------------------------------------------------------------------------*/ - /* - * Describe the size of the array and create the data space for fixed - * size dataset. - */ - dimsf[0] = NX; - dimsf[1] = NY; - dataspace = H5Screate_simple(2, dimsf, NULL); - - /* - * We will store little endian INT numbers. - */ - - /*--------------- - * dset1 - */ - /* Create a new dataset as sample object */ - dset1 = H5Dcreate2(fileid1, "/dset1", H5T_NATIVE_INT, dataspace, - H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (dset1 < 0) - { - fprintf(stderr, "Error: %s> H5Dcreate2 failed.\n", FILE4_1); - status = FAIL; - goto out; - } - - status = H5Dwrite(dset1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data1); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", FILE4_1); - status = FAIL; - goto out; - } - - /*--------------- - * dset2 - */ - /* Create a new dataset as sample object */ - dset2 = H5Dcreate2(fileid1, "/dset2", H5T_NATIVE_INT, dataspace, - H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (dset2 < 0) - { - fprintf(stderr, "Error: %s> H5Dcreate2 failed.\n", FILE4_1); - status = FAIL; - goto out; - } - - status = H5Dwrite(dset2, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data2); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", FILE4_1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Soft links - *------------------------------------------------------------------------*/ - /* - * create various soft links under '/' root - */ - /* link to dset1 */ - status = H5Lcreate_soft("/dset1", fileid1, "soft_dset1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", FILE4_1); - status = FAIL; - goto out; - } - - /* link to data type */ - status = H5Lcreate_soft("/dtype", fileid1, "soft_dtype", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", FILE4_1); - status = FAIL; - goto out; - } - - /* link to group1 */ - status = H5Lcreate_soft("/group1", fileid1, "soft_group1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", FILE4_1); - status = FAIL; - goto out; - } - - /* link to empty group */ - status = H5Lcreate_soft("/group_empty", fileid1, "soft_empty_grp", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", FILE4_1); - status = FAIL; - goto out; - } - - /* dangling link */ - status = H5Lcreate_soft("not_yet", fileid1, "soft_dangle", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", FILE4_1); - status = FAIL; - goto out; - } - - /*----------------------------------------- - * create various soft links under a group - */ - /* link to dset1 */ - status = H5Lcreate_soft("/dset1", gid1, "soft_dset1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", FILE4_1); - status = FAIL; - goto out; - } - - /* link to dset2 */ - status = H5Lcreate_soft("/dset2", gid1, "soft_dset2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", FILE4_1); - status = FAIL; - goto out; - } - - /* link to data type */ - status = H5Lcreate_soft("/dtype", gid1, "soft_dtype", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", FILE4_1); - status = FAIL; - goto out; - } - - /* link to empty group */ - status = H5Lcreate_soft("/group_empty", gid1, "soft_empty_grp", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", FILE4_1); - status = FAIL; - goto out; - } - - /* dangling link */ - status = H5Lcreate_soft("not_yet", gid1, "soft_dangle", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", FILE4_1); - status = FAIL; - goto out; - } - - out: - /* - * Close/release resources. - */ - if(dataspace >= 0 && H5Sclose(dataspace) < 0) { - fprintf(stderr, "Error: %s> H5Sclose failed.\n", FILE4_1); - status = FAIL; - } - if(gid1 >= 0 && H5Gclose(gid1) < 0) { - fprintf(stderr, "Error: %s> H5Gclose failed.\n", FILE4_1); - status = FAIL; - } - if(gid2 >= 0 && H5Gclose(gid2) < 0) { - fprintf(stderr, "Error: %s> H5Gclose failed.\n", FILE4_1); - status = FAIL; - } - if(datatype >= 0 && H5Tclose(datatype) < 0) { - fprintf(stderr, "Error: %s> H5Tclose failed.\n", FILE4_1); - status = FAIL; - } - if(dset1 >= 0 && H5Dclose(dset1) < 0) { - fprintf(stderr, "Error: %s> H5Dclose failed.\n", FILE4_1); - status = FAIL; - } - if(dset2 >= 0 && H5Dclose(dset2) < 0) { - fprintf(stderr, "Error: %s> H5Dclose failed.\n", FILE4_1); - status = FAIL; - } - if(fileid1 >= 0 && H5Fclose(fileid1) < 0) { - fprintf(stderr, "Error: %s> H5Fclose failed.\n", FILE4_1); - status = FAIL; - } - - return status; -} - -/* - / - - / | \ the dataset is hardlinked to three names - /dset1, /g1/dset2, and /g1/g1.1/dset3 - dset1 g1 g2 - /g2 and /g1/g1.1 are hardlinked to the same object. - / \ - dset2 g1.1 - | - dset3 - */ - -static void gent_hardlink(void) -{ - hid_t fid, group, dataset, space; - hsize_t dim = 5; - int i, dset[5]; - - fid = H5Fcreate(FILE5, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - space = H5Screate_simple(1, &dim, NULL); - dataset = H5Dcreate2(fid, "/dset1", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - for(i = 0; i < 5; i++) dset[i] = i; - - H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset); - H5Sclose(space); - H5Dclose(dataset); - - group = H5Gcreate2(fid, "/g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Lcreate_hard(group, "/dset1", H5L_SAME_LOC, "dset2", H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - group = H5Gcreate2(fid, "/g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Lcreate_hard(group, "/dset1", H5L_SAME_LOC, "dset3", H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - group = H5Gopen2(fid, "/g1", H5P_DEFAULT); - H5Lcreate_hard(group, "/g2", H5L_SAME_LOC, "g1.1", H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - /* create a link to the root group */ - H5Lcreate_hard(fid, "/", H5L_SAME_LOC, "g3", H5P_DEFAULT, H5P_DEFAULT); - H5Fclose(fid); -} - -static void gent_extlink(void) -{ - hid_t fid; - - /* This external link will dangle, but that's okay */ - fid = H5Fcreate(FILE53, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - H5Lcreate_external("filename", "objname", fid, "extlink1", H5P_DEFAULT, H5P_DEFAULT); - H5Lcreate_external("anotherfile", "anotherobj", fid, "extlink2", H5P_DEFAULT, H5P_DEFAULT); - - H5Fclose(fid); -} - -static void gent_udlink(void) -{ - hid_t fid; - char buf[4]; - - H5Lregister(UD_link_class); - - /* This ud link will dangle, but that's okay */ - fid = H5Fcreate(FILE54, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - H5Lcreate_ud(fid, "udlink1", (H5L_type_t)MY_LINKCLASS, NULL, 0, H5P_DEFAULT, H5P_DEFAULT); - strcpy(buf, "foo"); - H5Lcreate_ud(fid, "udlink2", (H5L_type_t)MY_LINKCLASS, buf, 4, H5P_DEFAULT, H5P_DEFAULT); - - H5Fclose(fid); -} - - -/* - / - / | \ \ - dset1 group1 type1 type2 - | - dset2 - - */ -static void gent_compound_dt(void) { /* test compound data type */ - hid_t fid, group, dataset, space, space3, type, type2; - hid_t array_dt; - typedef struct { - int a; - float b; - double c; - } dset1_t; - dset1_t dset1[5]; - - typedef struct { - int a; - float b; - } dset2_t; - dset2_t dset2[5]; - - typedef struct { - int a[4]; - float b[5][6]; - } dset3_t; - dset3_t dset3[3][6]; - - typedef struct { - int a; - float b; - } dset4_t; - dset4_t dset4[5]; - - typedef struct { - int a; - float b; - } dset5_t; - dset5_t dset5[5]; - - int i, j, k, l; - unsigned ndims; - hsize_t dim[2]; - - hsize_t sdim = 5; - hsize_t dset3_dim[2]; - - - for(i = 0; i < (int)sdim; i++) { - dset1[i].a = i; - dset1[i].b = (float)(i*i); - dset1[i].c = (float)(1.0F/(float)(i+1)); - - dset2[i].a = i; - dset2[i].b = (float)((float)i+ (float)i*0.1F); - - dset4[i].a = i; - dset4[i].b = (float)(i+3); - - dset5[i].a = i; - dset5[i].b = (float)((float)i*0.1F); - } - - - fid = H5Fcreate(FILE6, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - space = H5Screate_simple(1, &sdim, NULL); - - type = H5Tcreate (H5T_COMPOUND, sizeof(dset1[0])); - type2 = H5Tcreate(H5T_COMPOUND, sizeof(dset1[0])); - H5Tinsert(type, "a_name", HOFFSET(dset1_t, a), H5T_STD_I32BE); - H5Tinsert(type, "b_name", HOFFSET(dset1_t, b), H5T_IEEE_F32BE); - H5Tinsert(type, "c_name", HOFFSET(dset1_t, c), H5T_IEEE_F64BE); - H5Tinsert(type2, "a_name", HOFFSET(dset1_t, a), H5T_NATIVE_INT); - H5Tinsert(type2, "b_name", HOFFSET(dset1_t, b), H5T_NATIVE_FLOAT); - H5Tinsert(type2, "c_name", HOFFSET(dset1_t, c), H5T_NATIVE_DOUBLE); - dataset = H5Dcreate2(fid, "/dset1", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Dwrite(dataset, type2, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset1); - H5Tclose(type2); - H5Tclose(type); - H5Dclose(dataset); - - /* shared data type 1 */ - type = H5Tcreate (H5T_COMPOUND, sizeof(dset2_t)); - H5Tinsert(type, "int_name", HOFFSET(dset2_t, a), H5T_STD_I32BE); - H5Tinsert(type, "float_name", HOFFSET(dset2_t, b), H5T_IEEE_F32BE); - H5Tcommit2(fid, "type1", type, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - type2 = H5Tcreate (H5T_COMPOUND, sizeof(dset2_t)); - H5Tinsert(type2, "int_name", HOFFSET(dset2_t, a), H5T_NATIVE_INT); - H5Tinsert(type2, "float_name", HOFFSET(dset2_t, b), H5T_NATIVE_FLOAT); - group = H5Gcreate2(fid, "/group1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - dataset = H5Dcreate2(group, "dset2", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Dwrite(dataset, type2, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2); - H5Tclose(type2); - H5Tclose(type); - H5Dclose(dataset); - - - /* shared data type 2 */ - type = H5Tcreate (H5T_COMPOUND, sizeof(dset3_t)); - type2 = H5Tcreate (H5T_COMPOUND, sizeof(dset3_t)); - - ndims = 1; dim[0] = 4; - - array_dt = H5Tarray_create2(H5T_STD_I32BE, ndims, dim); - H5Tinsert(type, "int_array", HOFFSET(dset3_t, a), array_dt); - H5Tclose(array_dt); - - array_dt = H5Tarray_create2(H5T_NATIVE_INT, ndims, dim); - H5Tinsert(type2, "int_array", HOFFSET(dset3_t, a), array_dt); - H5Tclose(array_dt); - - ndims = 2; dim[0] = 5; dim[1] = 6; - - array_dt = H5Tarray_create2(H5T_IEEE_F32BE, ndims, dim); - H5Tinsert(type, "float_array", HOFFSET(dset3_t, b), array_dt); - H5Tclose(array_dt); - - array_dt = H5Tarray_create2(H5T_NATIVE_FLOAT, ndims, dim); - H5Tinsert(type2, "float_array", HOFFSET(dset3_t, b), array_dt); - H5Tclose(array_dt); - - H5Tcommit2(fid, "type2", type, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - - dset3_dim[0] = 3; dset3_dim[1] = 6; - space3 = H5Screate_simple(2, dset3_dim, NULL); - dataset = H5Dcreate2(group, "dset3", type, space3, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - for(i = 0; i < (int)dset3_dim[0]; i++) - for(j = 0; j < (int)dset3_dim[1]; j++) { - for(k = 0; k < 4; k++) - dset3[i][j].a[k] = k + j + i; - for(k = 0; k < 5; k++) - for(l = 0; l < 6; l++) - dset3[i][j].b[k][l] = (float)((k + 1) + l + j + i); - } - H5Dwrite(dataset, type2, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset3); - H5Sclose(space3); - H5Tclose(type); - H5Tclose(type2); - H5Dclose(dataset); - - /* shared data type 3 */ - type = H5Tcreate (H5T_COMPOUND, sizeof(dset4_t)); - type2 = H5Tcreate (H5T_COMPOUND, sizeof(dset4_t)); - H5Tinsert(type, "int", HOFFSET(dset4_t, a), H5T_STD_I32BE); - H5Tinsert(type, "float", HOFFSET(dset4_t, b), H5T_IEEE_F32BE); - H5Tcommit2(group, "type3", type, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Tinsert(type2, "int", HOFFSET(dset4_t, a), H5T_NATIVE_INT); - H5Tinsert(type2, "float", HOFFSET(dset4_t, b), H5T_NATIVE_FLOAT); - dataset = H5Dcreate2(group, "dset4", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Dwrite(dataset, type2, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset4); - - H5Tclose(type); - H5Tclose(type2); - H5Dclose(dataset); - H5Gclose(group); - - - /* unamed data type */ - group = H5Gcreate2(fid, "/group2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - type = H5Tcreate(H5T_COMPOUND, sizeof(dset5_t)); - H5Tinsert(type, "int", HOFFSET(dset5_t, a), H5T_STD_I32BE); - H5Tinsert(type, "float", HOFFSET(dset5_t, b), H5T_IEEE_F32BE); - H5Tcommit2(group, "type4", type, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - type2 = H5Tcreate(H5T_COMPOUND, sizeof(dset5_t)); - H5Tinsert(type2, "int", HOFFSET(dset5_t, a), H5T_NATIVE_INT); - H5Tinsert(type2, "float", HOFFSET(dset5_t, b), H5T_NATIVE_FLOAT); - dataset = H5Dcreate2(group, "dset5", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Dwrite(dataset, type2, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset5); - - H5Ldelete(group, "type4", H5P_DEFAULT); - - H5Tclose(type); - H5Tclose(type2); - H5Dclose(dataset); - H5Sclose(space); - H5Gclose(group); - - H5Fclose(fid); -} - -/* - / - / | \ \ - dset1 group1 type1 type2 - | - dset2 - - */ -static void gent_compound_dt2(void) { /* test compound data type */ - hid_t fid, group, dataset, space, type, create_plist, type2; - hid_t array_dt; - - typedef struct { - int a; - float b; - double c; - } dset1_t; - dset1_t dset1[10]; - - typedef struct { - int a; - float b; - } dset2_t; - dset2_t dset2[10]; - - typedef struct { - int a[4]; - float b[5][6]; - } dset3_t; - - typedef struct { - int a; - float b; - } dset4_t; - dset4_t dset4[10]; - - typedef struct { - int a; - float b; - } dset5_t; - dset5_t dset5[10]; - - int i; - unsigned ndims; - hsize_t dim[2]; - - hsize_t sdim, maxdim; - - sdim = 10; - for(i = 0; i < (int)sdim; i++) { - dset1[i].a = i; - dset1[i].b = (float)(i*i); - dset1[i].c = (float)(1.0F / (float)(i+ 1)); - - dset2[i].a = i; - dset2[i].b = (float)((float)i + (float)i * 0.1F); - - dset4[i].a = i; - dset4[i].b = (float)((float)i * 1.0F); - - dset5[i].a = i; - dset5[i].b = (float)((float)i * 1.0F); - } - - fid = H5Fcreate(FILE9, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - create_plist = H5Pcreate(H5P_DATASET_CREATE); - - sdim = 2; - H5Pset_chunk(create_plist, 1, &sdim); - - sdim = 6; - maxdim = H5S_UNLIMITED; - - space = H5Screate_simple(1, &sdim, &maxdim); - - type = H5Tcreate (H5T_COMPOUND, sizeof(dset1[0])); - - H5Tinsert(type, "a_name", HOFFSET(dset1_t, a), H5T_STD_I32BE); - H5Tinsert(type, "b_name", HOFFSET(dset1_t, b), H5T_IEEE_F32BE); - H5Tinsert(type, "c_name", HOFFSET(dset1_t, c), H5T_IEEE_F64BE); - - dataset = H5Dcreate2(fid, "/dset1", type, space, H5P_DEFAULT, create_plist, H5P_DEFAULT); - - type2 = H5Tcreate (H5T_COMPOUND, sizeof(dset1[0])); - - H5Tinsert(type2, "a_name", HOFFSET(dset1_t, a), H5T_NATIVE_INT); - H5Tinsert(type2, "b_name", HOFFSET(dset1_t, b), H5T_NATIVE_FLOAT); - H5Tinsert(type2, "c_name", HOFFSET(dset1_t, c), H5T_NATIVE_DOUBLE); - - H5Dwrite(dataset, type2, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset1); - - H5Tclose(type); - H5Tclose(type2); - H5Sclose(space); - H5Dclose(dataset); - - sdim = 6; - maxdim = 10; - - space = H5Screate_simple(1, &sdim, &maxdim); - - /* shared data type 1 */ - type = H5Tcreate(H5T_COMPOUND, sizeof(dset2_t)); - H5Tinsert(type, "int_name", HOFFSET(dset2_t, a), H5T_STD_I32BE); - H5Tinsert(type, "float_name", HOFFSET(dset2_t, b), H5T_IEEE_F32BE); - H5Tcommit2(fid, "type1", type, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - group = H5Gcreate2(fid, "/group1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - dataset = H5Dcreate2(group, "dset2", type, space, H5P_DEFAULT, create_plist, H5P_DEFAULT); - - type2 = H5Tcreate (H5T_COMPOUND, sizeof(dset2_t)); - H5Tinsert(type2, "int_name", HOFFSET(dset2_t, a), H5T_NATIVE_INT); - H5Tinsert(type2, "float_name", HOFFSET(dset2_t, b), H5T_NATIVE_FLOAT); - H5Dwrite(dataset, type2, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2); - - H5Tclose(type); - H5Tclose(type2); - H5Dclose(dataset); - - - /* shared data type 2 */ - type = H5Tcreate (H5T_COMPOUND, sizeof(dset3_t)); - - ndims = 1; dim[0] = 4; - array_dt = H5Tarray_create2(H5T_STD_I32BE, ndims, dim); - H5Tinsert(type, "int_array", HOFFSET(dset3_t, a), array_dt); - H5Tclose(array_dt); - - ndims = 2; dim[0] = 5; dim[1] = 6; - array_dt = H5Tarray_create2(H5T_IEEE_F32BE, ndims, dim); - H5Tinsert(type, "float_array", HOFFSET(dset3_t, b), array_dt); - H5Tclose(array_dt); - - H5Tcommit2(fid, "type2", type, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Tclose(type); - - /* shared data type 3 */ - type = H5Tcreate(H5T_COMPOUND, sizeof(dset4_t)); - H5Tinsert(type, "int", HOFFSET(dset4_t, a), H5T_STD_I32BE); - H5Tinsert(type, "float", HOFFSET(dset4_t, b), H5T_IEEE_F32BE); - H5Tcommit2(group, "type3", type, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - dataset = H5Dcreate2(group, "dset4", type, space, H5P_DEFAULT, create_plist, H5P_DEFAULT); - - type2 = H5Tcreate (H5T_COMPOUND, sizeof(dset4_t)); - H5Tinsert(type2, "int", HOFFSET(dset4_t, a), H5T_NATIVE_INT); - H5Tinsert(type2, "float", HOFFSET(dset4_t, b), H5T_NATIVE_FLOAT); - H5Dwrite(dataset, type2, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset4); - - H5Tclose(type); - H5Tclose(type2); - H5Dclose(dataset); - H5Gclose(group); - - - /* unamed data type */ - group = H5Gcreate2(fid, "/group2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - type = H5Tcreate(H5T_COMPOUND, sizeof(dset5_t)); - H5Tinsert(type, "int", HOFFSET(dset5_t, a), H5T_STD_I32BE); - H5Tinsert(type, "float", HOFFSET(dset5_t, b), H5T_IEEE_F32BE); - H5Tcommit2(group, "type4", type, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - dataset = H5Dcreate2(group, "dset5", type, space, H5P_DEFAULT, create_plist, H5P_DEFAULT); - type2 = H5Tcreate(H5T_COMPOUND, sizeof(dset5_t)); - H5Tinsert(type2, "int", HOFFSET(dset5_t, a), H5T_NATIVE_INT); - H5Tinsert(type2, "float", HOFFSET(dset5_t, b), H5T_NATIVE_FLOAT); - H5Dwrite(dataset, type2, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset5); - - H5Ldelete(group, "type4", H5P_DEFAULT); - - H5Tclose(type); - H5Tclose(type2); - H5Dclose(dataset); - H5Sclose(space); - H5Gclose(group); - H5Pclose(create_plist); - - H5Fclose(fid); - -} - - -/* - -/ : g1 g2 attr1 attr2 -g1 : g1.1 g1.2 -g1.1 : dset1.1.1(attr1, attr2) dset1.1.2 -g1.2 : g1.2.1 extlink -g1.2.1 : slink -g2 : dset2.1 dset2.2 udlink - - */ - -static void gent_all(void) -{ - hid_t fid, group, attr, dataset, space; - hsize_t dims[2]; - int data[2][2], dset1[10][10], dset2[20]; - char buf[60]; - int i, j; - float dset2_1[10], dset2_2[3][5]; - - fid = H5Fcreate(FILE7, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* create groups */ - group = H5Gcreate2(fid, "/g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - group = H5Gcreate2(fid, "/g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - group = H5Gcreate2(fid, "/g1/g1.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - group = H5Gcreate2(fid, "/g1/g1.2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - group = H5Gcreate2(fid, "/g1/g1.2/g1.2.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - /* root attributes */ - group = H5Gopen2(fid, "/", H5P_DEFAULT); - - dims[0] = 10; - space = H5Screate_simple(1, dims, NULL); - attr = H5Acreate2(group, "attr1", H5T_STD_I8BE, space, H5P_DEFAULT, H5P_DEFAULT); - sprintf(buf, "abcdefghi"); - H5Awrite(attr, H5T_NATIVE_SCHAR, buf); - H5Sclose(space); - H5Aclose(attr); - - dims[0] = 2; dims[1] = 2; - space = H5Screate_simple(2, dims, NULL); - attr = H5Acreate2(group, "attr2", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT); - data[0][0] = 0; data[0][1] = 1; data[1][0] = 2; data[1][1] = 3; - H5Awrite(attr, H5T_NATIVE_INT, data); - H5Sclose(space); - H5Aclose(attr); - - H5Gclose(group); - - group = H5Gopen2(fid, "/g1/g1.1", H5P_DEFAULT); - - /* dset1.1.1 */ - dims[0] = 10; dims[1] = 10; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(group, "dset1.1.1", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - for(i = 0; i < 10; i++) - for(j = 0; j < 10; j++) - dset1[i][j] = j * i; - H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset1); - H5Sclose(space); - - /* attributes of dset1.1.1 */ - dims[0] = 27; - space = H5Screate_simple(1, dims, NULL); - attr = H5Acreate2(dataset, "attr1", H5T_STD_I8BE, space, H5P_DEFAULT, H5P_DEFAULT); - sprintf(buf, "1st attribute of dset1.1.1"); - H5Awrite(attr, H5T_NATIVE_SCHAR, buf); - H5Sclose(space); - H5Aclose(attr); - - dims[0] = 27; - space = H5Screate_simple(1, dims, NULL); - attr = H5Acreate2(dataset, "attr2", H5T_STD_I8BE, space, H5P_DEFAULT, H5P_DEFAULT); - sprintf(buf, "2nd attribute of dset1.1.1"); - H5Awrite(attr, H5T_NATIVE_SCHAR, buf); - H5Sclose(space); - H5Aclose(attr); - - H5Dclose(dataset); - - /* dset1.1.2 */ - dims[0] = 20; - space = H5Screate_simple(1, dims, NULL); - dataset = H5Dcreate2(group, "dset1.1.2", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - for(i = 0; i < 20; i++) - dset2[i] = i; - H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2); - H5Sclose(space); - H5Dclose(dataset); - - H5Gclose(group); - - /* external link */ - H5Lcreate_external("somefile", "somepath", fid, "/g1/g1.2/extlink", H5P_DEFAULT, H5P_DEFAULT); - - /* soft link */ - group = H5Gopen2(fid, "/g1/g1.2/g1.2.1", H5P_DEFAULT); - H5Lcreate_soft("somevalue", group, "slink", H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - group = H5Gopen2(fid, "/g2", H5P_DEFAULT); - - /* dset2.1 */ - dims[0] = 10; - space = H5Screate_simple(1, dims, NULL); - dataset = H5Dcreate2(group, "dset2.1", H5T_IEEE_F32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - for(i = 0; i < 10; i++) - dset2_1[i] = (float)((float)i * 0.1F + 1); - H5Dwrite(dataset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2_1); - H5Sclose(space); - H5Dclose(dataset); - - /* dset2.2 */ - dims[0] = 3; dims[1] = 5; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(group, "dset2.2", H5T_IEEE_F32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - for(i = 0; i < 3; i++) - for(j = 0; j < 5; j++) - dset2_2[i][j] = (float)((float)(i + 1) * (float)j * 0.1F); - H5Dwrite(dataset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2_2); - H5Sclose(space); - H5Dclose(dataset); - - H5Gclose(group); - - /* user-defined link */ - H5Lregister(UD_link_class); - H5Lcreate_ud(fid, "/g2/udlink", (H5L_type_t)MY_LINKCLASS, NULL, 0, H5P_DEFAULT, H5P_DEFAULT); - - H5Fclose(fid); -} - -/* - o - /___\ - g1 o/ \o g2 - \___/ - - -o - group objects - - */ - -static void gent_loop(void) { - hid_t fid, group; - - fid = H5Fcreate(FILE10, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - group = H5Gcreate2(fid, "/g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - group = H5Gcreate2(fid, "/g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - H5Lcreate_hard(fid, "/g2", H5L_SAME_LOC, "/g1/g1.1", H5P_DEFAULT, H5P_DEFAULT); - H5Lcreate_hard(fid, "/g1", H5L_SAME_LOC, "/g2/g2.1", H5P_DEFAULT, H5P_DEFAULT); - - H5Fclose(fid); -} - -static void gent_loop2(void) -{ - hid_t fid, group; - - fid = H5Fcreate(FILE11, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* create group object g1 and implcit path from root object */ - group = H5Gcreate2(fid, "/g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - /* create group object g2 and implcit path from root object */ - group = H5Gcreate2(fid, "/g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - /* create path from object at /g1 to object at /g2 and name it g1.1 */ - H5Lcreate_hard(fid, "/g2", H5L_SAME_LOC, "/g1/g1.1", H5P_DEFAULT, H5P_DEFAULT); - - /* create path from object at /g2 to object at /g1 and name it g2.1 */ - H5Lcreate_soft("/g1", fid, "/g2/g2.1", H5P_DEFAULT, H5P_DEFAULT); - - H5Fclose(fid); -} - -/* - / - | | | \ \ \ \ \ - g1 g2 g3 g4 g5 g6 g7 g8 - / \ | | \ \ \ \ \ - g1.1 g1.2 slink2 link3 dset2 slink4 dset3 slink5 elink - | | (g1) (dset2) (dset3) (elink) udlink - dset1 link1 slink6 - (dset1) (udlink) - */ - -static void -gent_many(void) -{ - hid_t fid, group, attr, dataset, space, space2, type, create_plist, type2; - hid_t array_dt; - hsize_t dims[2]; - int data[2][2], dset2[10][10], dset3[10][10]; - double d[10]; - - char buf[60]; - int i, j; - int i0, i1, i2, i3; - hsize_t sdim, maxdim; - - typedef struct { /* compound type has members with rank > 1 */ - int a[2][2][2][2]; /* arrays are 2x2x2x2 */ - double b[2][2][2][2]; - double c[2][2][2][2]; - } dset1_t; - dset1_t dset1[6]; - - hsize_t dim[4]; - herr_t ret; - - fid = H5Fcreate(FILE12, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - group = H5Gcreate2(fid, "/g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - create_plist = H5Pcreate(H5P_DATASET_CREATE); - - sdim = 2; - H5Pset_chunk(create_plist, 1, &sdim); - - group = H5Gcreate2(fid, "/g1/g1.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - type = H5Tcreate (H5T_COMPOUND, sizeof(dset1[0])); - - dim[0] = dim[1] = dim[2] = dim[3] = 2; - array_dt = H5Tarray_create2(H5T_STD_I32BE, 4, dim); - H5Tinsert(type, "a_array", HOFFSET(dset1_t, a), array_dt); - H5Tclose(array_dt); - - array_dt = H5Tarray_create2(H5T_IEEE_F64BE, 4, dim); - H5Tinsert(type, "b_array", HOFFSET(dset1_t, b), array_dt); - H5Tclose(array_dt); - - array_dt = H5Tarray_create2(H5T_IEEE_F64BE, 4, dim); - H5Tinsert(type, "c_array", HOFFSET(dset1_t, c), array_dt); - H5Tclose(array_dt); - - type2 = H5Tcreate (H5T_COMPOUND, sizeof(dset1[0])); - - array_dt = H5Tarray_create2(H5T_NATIVE_INT, 4, dim); - H5Tinsert(type2, "a_array", HOFFSET(dset1_t, a), array_dt); - H5Tclose(array_dt); - - array_dt = H5Tarray_create2(H5T_NATIVE_DOUBLE, 4, dim); - H5Tinsert(type2, "b_array", HOFFSET(dset1_t, b), array_dt); - H5Tclose(array_dt); - - array_dt = H5Tarray_create2(H5T_NATIVE_DOUBLE, 4, dim); - H5Tinsert(type2, "c_array", HOFFSET(dset1_t, c), array_dt); - H5Tclose(array_dt); - - - /* dset1 */ - sdim = 6; - maxdim = H5S_UNLIMITED; - space = H5Screate_simple(1, &sdim, &maxdim); - dataset = H5Dcreate2(group, "dset1", type, space, H5P_DEFAULT, create_plist, H5P_DEFAULT); - - /* add attributes to dset1 */ - dims[0] = 10; - space2 = H5Screate_simple(1, dims, NULL); - attr = H5Acreate2(dataset, "attr1", H5T_STD_I8BE, space2, H5P_DEFAULT, H5P_DEFAULT); - sprintf(buf, "abcdefghi"); - H5Awrite(attr, H5T_NATIVE_CHAR, buf); - H5Sclose(space2); - H5Aclose(attr); - - dims[0] = 2; dims[1] = 2; - space2 = H5Screate_simple(2, dims, NULL); - attr = H5Acreate2(dataset, "attr2", H5T_STD_I32BE, space2, H5P_DEFAULT, H5P_DEFAULT); - data[0][0] = 0; data[0][1] = 1; data[1][0] = 2; data[1][1] = 3; - H5Awrite(attr, H5T_NATIVE_INT, data); - H5Sclose(space2); - H5Aclose(attr); - - dims[0] = 10; - space2 = H5Screate_simple(1, dims, NULL); - attr = H5Acreate2(dataset, "attr3", H5T_IEEE_F64BE, space2, H5P_DEFAULT, H5P_DEFAULT); - for(i = 0; i < 10; i++) - d[i] = 0.1F * (float)i; - H5Awrite(attr, H5T_NATIVE_DOUBLE, d); - H5Sclose(space2); - H5Aclose(attr); - - for(j=0; j<(int)sdim; j++) { - for(i3 = 0; i3 < 2; i3++) { - for(i2 = 0; i2 < 2; i2++) { - for(i1 = 0; i1 < 2; i1++) { - for(i0 = 0; i0 < 2; i0++) { - dset1[j].a[i3][i2][i1][i0] = i0 + j; - dset1[j].b[i3][i2][i1][i0] = (double)(i0 + j); - dset1[j].c[i3][i2][i1][i0] = (double)((hsize_t)i0 + (hsize_t)j + sdim); - } - } - } - } - } - - H5Dwrite(dataset, type2, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset1); - - H5Dclose(dataset); - H5Sclose(space); - - H5Tclose(type); - H5Tclose(type2); - H5Gclose(group); - - group = H5Gcreate2(fid, "/g1/g1.2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Lcreate_hard(group, "/g1/g1.1/dset1", H5L_SAME_LOC, "link1", H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - group = H5Gcreate2(fid, "/g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Lcreate_soft("/g1", group, "slink2", H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - group = H5Gcreate2(fid, "/g3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - group = H5Gcreate2(fid, "/g4", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* dset2 */ - dims[0] = 10; dims[1] = 10; - space = H5Screate_simple(2, dims, NULL); - - dataset = H5Dcreate2(group, "dset2", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - for(i = 0; i < 10; i++) - for(j = 0; j < 10; j++) - dset2[i][j] = j; - H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2); - - H5Dclose(dataset); - - H5Sclose(space); - H5Gclose(group); - - group = H5Gopen2(fid, "/g3", H5P_DEFAULT); - H5Lcreate_hard(group, "/g4/dset2", H5L_SAME_LOC, "link3", H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - group = H5Gcreate2(fid, "/g5", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - group = H5Gcreate2(fid, "/g6", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - /* dset3 */ - dims[0] = 10; dims[1] = 10; - space = H5Screate_simple(2, dims, NULL); - - dataset = H5Dcreate2(group, "dset3", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - for(i = 0; i < 10; i++) - for(j = 0; j < 10; j++) - dset3[i][j] = i; - H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset3); - - H5Dclose(dataset); - - H5Sclose(space); - H5Gclose(group); - - group = H5Gopen2(fid, "/g5", H5P_DEFAULT); - H5Lcreate_soft("/g6/dset3", group, "slink4", H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - H5Pclose(create_plist); - - group = H5Gcreate2(fid, "/g7", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - group = H5Gcreate2(fid, "/g8", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - /* Create dangling external and UD links */ - H5Lcreate_external("somefile", "somepath", fid, "/g8/elink", H5P_DEFAULT, H5P_DEFAULT); - H5Lregister(UD_link_class); - H5Lcreate_ud(fid, "/g8/udlink", (H5L_type_t)MY_LINKCLASS, NULL, 0, H5P_DEFAULT, H5P_DEFAULT); - - /* Create links to external and UD links */ - ret = H5Lcreate_soft("/g8/elink", fid, "/g7/slink5", H5P_DEFAULT, H5P_DEFAULT); - HDassert(ret >= 0); - ret = H5Lcreate_soft("/g8/udlink", fid, "/g7/slink6", H5P_DEFAULT, H5P_DEFAULT); - HDassert(ret >= 0); - - H5Fclose(fid); -} - -static hid_t mkstr(int size, H5T_str_t pad) { - hid_t type; - - if((type=H5Tcopy(H5T_C_S1)) < 0) return -1; - if(H5Tset_size(type, (size_t)size) < 0) return -1; - if(H5Tset_strpad(type, pad) < 0) return -1; - - return type; -} - -static void gent_str(void) { - hid_t fid, dataset, space, f_type, m_type, str_type, f_type2; - hid_t array_dt; - - hsize_t dims1[] = { 3, 4}; - char string1[12][3] = {"s1","s2","s3","s4","s5","s6","s7","s8","s9", - "s0","s1","s2"}; - - hsize_t dims2[]={20}; - char string2[20][10] = {"ab cd ef1", "ab cd ef2", "ab cd ef3", "ab cd ef4", - "ab cd ef5", "ab cd ef6", "ab cd ef7", "ab cd ef8", - "ab cd ef9", "ab cd ef0", "ab cd ef1", "ab cd ef2", - "ab cd ef3", "ab cd ef4", "ab cd ef5", "ab cd ef6", - "ab cd ef7", "ab cd ef8", "ab cd ef9", "ab cd ef0"}; - - hsize_t dims3[] = { 27}; - char string3[27][6] = {"abcd0", "abcd1", "abcd2", "abcd3", - "abcd4", "abcd5", "abcd6", "abcd7", - "abcd8", "abcd9", "abcd0", "abcd1", - "abcd2", "abcd3", "abcd4", "abcd5", - "abcd6", "abcd7", "abcd8", "abcd9", - "abcd0", "abcd1", "abcd2", "abcd3", - "abcd4", "abcd5", "abcd6"}; - - int i, j, k, l; - - hsize_t dims4[] = { 3 }; - char string4[3][21] = { "s1234567890123456789", "s1234567890123456789", - "s1234567890123456789"}; - - hsize_t dims5[] = { 3, 6}; - typedef struct { - int a[8][10]; - char s[12][33]; - } compound_t; - compound_t comp1[3][6]; - hsize_t mdims[2]; - - fid = H5Fcreate(FILE13, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* string 1 : nullterm string */ - space = H5Screate_simple(2, dims1, NULL); - f_type = mkstr(5, H5T_STR_NULLTERM); - m_type = mkstr(3, H5T_STR_NULLTERM); - dataset = H5Dcreate2(fid, "/string1", f_type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Dwrite(dataset, m_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, string1); - H5Tclose(m_type); - H5Tclose(f_type); - H5Sclose(space); - H5Dclose(dataset); - - /* string 2 : space pad string */ - space = H5Screate_simple(1, dims2, NULL); - f_type = mkstr(11, H5T_STR_SPACEPAD); - m_type = mkstr(10, H5T_STR_NULLTERM); - dataset = H5Dcreate2(fid, "/string2", f_type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Dwrite(dataset, m_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, string2); - H5Tclose(m_type); - H5Tclose(f_type); - H5Sclose(space); - H5Dclose(dataset); - - /* string 3 : null pad string */ - space = H5Screate_simple(1, dims3, NULL); - f_type = mkstr(8, H5T_STR_NULLPAD); - m_type = mkstr(6, H5T_STR_NULLTERM); - dataset = H5Dcreate2(fid, "/string3", f_type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Dwrite(dataset, m_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, string3); - H5Tclose(m_type); - H5Tclose(f_type); - H5Sclose(space); - H5Dclose(dataset); - - /* string 4 : space pad long string */ - space = H5Screate_simple(1, dims4, NULL); - f_type = mkstr(168, H5T_STR_SPACEPAD); - m_type = mkstr(21, H5T_STR_NULLTERM); - dataset = H5Dcreate2(fid, "/string4", f_type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Dwrite(dataset, m_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, string4); - H5Tclose(m_type); - H5Tclose(f_type); - H5Sclose(space); - H5Dclose(dataset); - - /* compound data */ - space = H5Screate_simple(2, dims5, NULL); - f_type = H5Tcreate (H5T_COMPOUND, sizeof(compound_t)); - f_type2 = H5Tcreate (H5T_COMPOUND, sizeof(compound_t)); - - mdims[0] = 8; mdims[1] = 10; - - array_dt = H5Tarray_create2(H5T_STD_I32BE, 2, mdims); - H5Tinsert(f_type, "int_array", HOFFSET(compound_t, a), array_dt); - H5Tclose(array_dt); - - array_dt = H5Tarray_create2(H5T_NATIVE_INT, 2, mdims); - H5Tinsert(f_type2, "int_array", HOFFSET(compound_t, a), array_dt); - H5Tclose(array_dt); - - mdims[0] = 3; mdims[1] = 4; - - str_type = mkstr(32, H5T_STR_SPACEPAD); - array_dt = H5Tarray_create2(str_type, 2, mdims); - H5Tinsert(f_type, "string", HOFFSET(compound_t, s), array_dt); - H5Tclose(array_dt); - H5Tclose(str_type); - - str_type = mkstr(33, H5T_STR_NULLTERM); - array_dt = H5Tarray_create2(str_type, 2, mdims); - H5Tinsert(f_type2, "string", HOFFSET(compound_t, s), array_dt); - H5Tclose(array_dt); - H5Tclose(str_type); - - for(i = 0; i < 3; i++) - for(j = 0; j < 6; j++) { - for(k = 0 ; k < 8; k++) - for(l = 0; l < 10; l++) - comp1[i][j].a[k][l] = (l + j + k) * (l + j + k); - for(k = 0 ; k < 12; k++) - strcpy(comp1[i][j].s[k], "abcdefgh12345678abcdefgh12345678"); - } - - dataset = H5Dcreate2(fid, "/comp1", f_type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Dwrite(dataset, f_type2, H5S_ALL, H5S_ALL, H5P_DEFAULT, comp1); - - H5Tclose(f_type); - H5Tclose(f_type2); - H5Sclose(space); - H5Dclose(dataset); - - H5Fclose(fid); -} - -/* - / - / / | \ \ \ - g1 g2 g3 g4 g5 g6 - | | | | \ \ - string1 string3 string5 - string2 string4 string6 - */ - -static void gent_str2(void) -{ - hid_t fid, group, attr, dataset, space, space2, mem_space, hyper_space; - hid_t fxdlenstr, fxdlenstr2, memtype; - hsize_t dims[1], size[1], stride[1], count[1], block[1]; - hsize_t start[1]; - - - int i; - char buf[LENSTR+10]; - char buf2[3*LENSTR2]; - hsize_t sdim; - - fid = H5Fcreate(FILE14, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - fxdlenstr = H5Tcopy(H5T_C_S1); - H5Tset_size(fxdlenstr, LENSTR); - H5Tset_cset(fxdlenstr, H5T_CSET_ASCII); - H5Tset_strpad(fxdlenstr, H5T_STR_NULLTERM); - - memtype = H5Tcopy(H5T_C_S1); - H5Tset_size(memtype, LENSTR); - H5Tset_cset(memtype, H5T_CSET_ASCII); - H5Tset_strpad(memtype, H5T_STR_NULLTERM); - - sdim = 10; - size[0] = sdim; - space = H5Screate_simple(1, size, NULL); - size[0] = 1; - mem_space = H5Screate_simple(1,size,NULL); - hyper_space = H5Scopy(space); - - /* dset1 */ - - group = H5Gcreate2(fid, "/g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - dataset = H5Dcreate2(group, "dset1", fxdlenstr, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* add attributes to dset1 */ - - fxdlenstr2 = H5Tcopy(H5T_C_S1); - H5Tset_size(fxdlenstr2, LENSTR2); - H5Tset_cset(fxdlenstr2, H5T_CSET_ASCII); - H5Tset_strpad(fxdlenstr2, H5T_STR_NULLTERM); - - dims[0] = 3; - space2 = H5Screate_simple(1, dims, NULL); - attr = H5Acreate2(dataset, "attr1", fxdlenstr2, space2, H5P_DEFAULT, H5P_DEFAULT); - sprintf(&(buf2[0*LENSTR2]), "0123456789"); - sprintf(&(buf2[1*LENSTR2]), "abcdefghij"); - sprintf(&(buf2[2*LENSTR2]), "ABCDEFGHIJ"); - H5Awrite(attr, fxdlenstr2, buf2); - H5Sclose(space2); - H5Tclose(fxdlenstr2); - H5Aclose(attr); - - stride[0]=1; - count[0]=1; - block[0]=1; - - for(i = 0; (hsize_t)i < sdim; i++) { - start[0] = (hsize_t)i; - sprintf(buf, "This is row %1d of type H5T_STR_NULLTERM of", i); - H5Tset_size(memtype, HDstrlen(buf)+1); - H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block); - H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf); - } - H5Dclose(dataset); - H5Gclose(group); - - group = H5Gcreate2(fid, "/g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - dataset = H5Dcreate2(group, "dset2", fxdlenstr, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - for(i = 0; (hsize_t)i < sdim; i++) { - start[0] = (hsize_t)i; - sprintf(buf, "This is row %1d of type H5T_STR_NULLTERM of string array", i); - H5Tset_size(memtype, HDstrlen(buf)+1); - H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block); - H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf); - } - H5Dclose(dataset); - H5Gclose(group); - - - H5Tclose(fxdlenstr); - fxdlenstr = H5Tcopy(H5T_C_S1); - H5Tset_size(fxdlenstr, LENSTR); - H5Tset_cset(fxdlenstr, H5T_CSET_ASCII); - H5Tset_strpad(fxdlenstr, H5T_STR_NULLPAD); - - group = H5Gcreate2(fid, "/g3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - dataset = H5Dcreate2(group, "dset3", fxdlenstr, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - for(i = 0;(hsize_t) i < sdim; i++) { - start[0] = (hsize_t)i; - sprintf(buf, "This is row %1d of type H5T_STR_NULLPAD of", i); - H5Tset_size(memtype, HDstrlen(buf)+1); - H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block); - H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf); - } - H5Dclose(dataset); - H5Gclose(group); - - - group = H5Gcreate2(fid, "/g4", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - dataset = H5Dcreate2(group, "dset4", fxdlenstr, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - for(i = 0; (hsize_t)i < sdim; i++) { - start[0] = (hsize_t)i; - sprintf(buf, "This is row %1d of type H5T_STR_NULLPAD of string array", i); - H5Tset_size(memtype, HDstrlen(buf)+1); - H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block); - H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf); - } - H5Dclose(dataset); - H5Gclose(group); - - H5Tclose(fxdlenstr); - fxdlenstr = H5Tcopy(H5T_C_S1); - H5Tset_size(fxdlenstr, LENSTR); - H5Tset_cset(fxdlenstr, H5T_CSET_ASCII); - H5Tset_strpad(fxdlenstr, H5T_STR_SPACEPAD); - - group = H5Gcreate2(fid, "/g5", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - dataset = H5Dcreate2(group, "dset5", fxdlenstr, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - for(i = 0; (hsize_t)i < sdim; i++) { - start[0] = (hsize_t)i; - sprintf(buf, "This is row %1d of type H5T_STR_SPACEPAD of", i); - H5Tset_size(memtype, HDstrlen(buf) + 1); - H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block); - H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf); - } - H5Dclose(dataset); - H5Gclose(group); - - - group = H5Gcreate2(fid, "/g6", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - dataset = H5Dcreate2(group, "dset6", fxdlenstr, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - for(i = 0; (hsize_t)i < sdim; i++) { - start[0] = (hsize_t)i; - sprintf(buf, "This is row %1d of type H5T_STR_SPACEPAD of string array", i); - H5Tset_size(memtype, HDstrlen(buf) + 1); - H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block); - H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf); - } - - H5Dclose(dataset); - H5Gclose(group); - H5Tclose(fxdlenstr); - H5Tclose(memtype); - H5Sclose(mem_space); - H5Sclose(hyper_space); - H5Sclose(space); - H5Fclose(fid); -} - -static void gent_enum(void) -{ - /*some code is taken from enum.c in the test dir */ - hid_t file, type, space, dset; - int val; - enumtype data[] = {RED, GREEN, BLUE, GREEN, WHITE, - WHITE, BLACK, GREEN, BLUE, RED, - RED, BLUE, GREEN, BLACK, WHITE, - RED, WHITE, GREEN, GREEN, BLUE}; - hsize_t size[1] = {NELMTS(data)}; - - file = H5Fcreate(FILE15,H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* Try to test names with special characters */ - type = H5Tcreate(H5T_ENUM, sizeof(enumtype)); - H5Tenum_insert(type, "RED", (val = 0, &val)); - H5Tenum_insert(type, "GREEN\ngreen", (val = 1, &val)); - H5Tenum_insert(type, "BLUE blue", (val = 2, &val)); - H5Tenum_insert(type, "WHITE \"white\"", (val = 3, &val)); - H5Tenum_insert(type, "BLACK \'black\'", (val = 4, &val)); - H5Tcommit2(file, "enum normal", type, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - space = H5Screate_simple(1,size,NULL); - dset = H5Dcreate2(file,"table",type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Dwrite(dset, type, space, space, H5P_DEFAULT, data); - - H5Dclose(dset); - H5Sclose(space); - H5Fclose(file); -} - -static void gent_objref(void) -{ - /*some code is taken from enum.c in the test dir */ - hid_t fid1; /* HDF5 File IDs */ - hid_t dataset; /* Dataset ID */ - - hid_t group; /* Group ID */ - hid_t sid1; /* Dataspace ID */ - hid_t tid1; /* Datatype ID */ - hsize_t dims1[] = {SPACE1_DIM1}; - hobj_ref_t *wbuf, /* buffer to write to disk */ - *rbuf, /* buffer read from disk */ - *tbuf; /* temp. buffer read from disk */ - uint32_t *tu32; /* Temporary pointer to uint32 data */ - int i; /* counting variables */ - const char *write_comment = "Foo!"; /* Comments for group */ - - /* Allocate write & read buffers */ - wbuf = (hobj_ref_t*) HDmalloc(sizeof(hobj_ref_t) * SPACE1_DIM1); - rbuf = (hobj_ref_t*) HDmalloc(sizeof(hobj_ref_t) * SPACE1_DIM1); - tbuf = (hobj_ref_t*) HDmalloc(sizeof(hobj_ref_t) * SPACE1_DIM1); - - /* Create file */ - fid1 = H5Fcreate(FILE16, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* Create dataspace for datasets */ - sid1 = H5Screate_simple(SPACE1_RANK, dims1, NULL); - - /* Create a group */ - group = H5Gcreate2(fid1, "Group1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Set group's comment */ - H5Oset_comment(group, write_comment); - - /* Create a dataset (inside Group1) */ - dataset = H5Dcreate2(group, "Dataset1", H5T_STD_U32BE, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - for(tu32 = (uint32_t *)((void*)wbuf), i = 0; i < SPACE1_DIM1; i++) - *tu32++ = (uint32_t)(i * 3); - - /* Write selection to disk */ - H5Dwrite(dataset, H5T_NATIVE_UINT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wbuf); - - /* Close Dataset */ - H5Dclose(dataset); - - /* Create another dataset (inside Group1) */ - dataset = H5Dcreate2(group, "Dataset2", H5T_STD_U8BE, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Close Dataset */ - H5Dclose(dataset); - - /* Create a datatype to refer to */ - tid1 = H5Tcreate(H5T_COMPOUND, sizeof(s1_t)); - - /* Insert fields */ - H5Tinsert(tid1, "a", HOFFSET(s1_t,a), H5T_STD_I32BE); - - H5Tinsert(tid1, "b", HOFFSET(s1_t,b), H5T_IEEE_F32BE); - - H5Tinsert(tid1, "c", HOFFSET(s1_t,c), H5T_IEEE_F32BE); - - /* Save datatype for later */ - H5Tcommit2(group, "Datatype1", tid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Close datatype */ - H5Tclose(tid1); - - /* Close group */ - H5Gclose(group); - - /* Create a dataset */ - dataset = H5Dcreate2(fid1, "Dataset3", H5T_STD_REF_OBJ, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Create reference to dataset */ - H5Rcreate(&wbuf[0], fid1, "/Group1/Dataset1", H5R_OBJECT, (hid_t)-1); - - /* Create reference to dataset */ - H5Rcreate(&wbuf[1], fid1, "/Group1/Dataset2", H5R_OBJECT, (hid_t)-1); - - /* Create reference to group */ - H5Rcreate(&wbuf[2], fid1, "/Group1", H5R_OBJECT, (hid_t)-1); - - /* Create reference to named datatype */ - H5Rcreate(&wbuf[3], fid1, "/Group1/Datatype1", H5R_OBJECT, (hid_t)-1); - - /* Write selection to disk */ - H5Dwrite(dataset, H5T_STD_REF_OBJ, H5S_ALL, H5S_ALL, H5P_DEFAULT, wbuf); - - /* Close disk dataspace */ - H5Sclose(sid1); - - /* Close Dataset */ - H5Dclose(dataset); - - /* Close file */ - H5Fclose(fid1); - - /* Free memory buffers */ - HDfree(wbuf); - HDfree(rbuf); - HDfree(tbuf); -} - -static void gent_datareg(void) -{ - /*some code is taken from enum.c in the test dir */ - - hid_t fid1; /* HDF5 File IDs */ - hid_t dset1, /* Dataset ID */ - dset2; /* Dereferenced dataset ID */ - hid_t sid1, /* Dataspace ID #1 */ - sid2; /* Dataspace ID #2 */ - hsize_t dims1[] = {SPACE1_DIM1}, - dims2[] = {SPACE2_DIM1, SPACE2_DIM2}; - hsize_t start[SPACE2_RANK]; /* Starting location of hyperslab */ - hsize_t stride[SPACE2_RANK]; /* Stride of hyperslab */ - hsize_t count[SPACE2_RANK]; /* Element count of hyperslab */ - hsize_t block[SPACE2_RANK]; /* Block size of hyperslab */ - hsize_t coord1[POINT1_NPOINTS][SPACE2_RANK]; /* Coordinates for point selection */ - hdset_reg_ref_t *wbuf, /* buffer to write to disk */ - *rbuf; /* buffer read from disk */ - uint8_t *dwbuf, /* Buffer for writing numeric data to disk */ - *drbuf; /* Buffer for reading numeric data from disk */ - uint8_t *tu8; /* Temporary pointer to uint8 data */ - int i; /* counting variables */ - - /* Allocate write & read buffers */ - wbuf = (hdset_reg_ref_t*) HDcalloc(sizeof(hdset_reg_ref_t), SPACE1_DIM1); - rbuf = (hdset_reg_ref_t*) HDmalloc(sizeof(hdset_reg_ref_t)*SPACE1_DIM1); - dwbuf = (uint8_t*) HDmalloc(sizeof(uint8_t)*SPACE2_DIM1*SPACE2_DIM2); - drbuf = (uint8_t*) HDcalloc(sizeof(uint8_t),SPACE2_DIM1*SPACE2_DIM2); - - /* Create file */ - fid1 = H5Fcreate(FILE17, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* Create dataspace for datasets */ - sid2 = H5Screate_simple(SPACE2_RANK, dims2, NULL); - - /* Create a dataset */ - dset2 = H5Dcreate2(fid1, "Dataset2", H5T_STD_U8BE, sid2, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - for(tu8 = dwbuf, i = 0; i < SPACE2_DIM1 * SPACE2_DIM2; i++) - *tu8++ = (uint8_t)(i * 3); - - /* Write selection to disk */ - H5Dwrite(dset2, H5T_NATIVE_UCHAR, H5S_ALL, H5S_ALL, H5P_DEFAULT, dwbuf); - - /* Close Dataset */ - H5Dclose(dset2); - - /* Create dataspace for the reference dataset */ - sid1 = H5Screate_simple(SPACE1_RANK, dims1, NULL); - - /* Create a dataset */ - dset1 = H5Dcreate2(fid1, "Dataset1", H5T_STD_REF_DSETREG, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Create references */ - - /* Select 6x6 hyperslab for first reference */ - start[0] = 2; start[1] = 2; - stride[0] = 1; stride[1] = 1; - count[0] = 6; count[1] = 6; - block[0] = 1; block[1] = 1; - H5Sselect_hyperslab(sid2, H5S_SELECT_SET, start, stride, count, block); - - H5Sget_select_npoints(sid2); - - /* Store first dataset region */ - H5Rcreate(&wbuf[0], fid1, "/Dataset2", H5R_DATASET_REGION, sid2); - - /* Select sequence of ten points for second reference */ - coord1[0][0]=6; coord1[0][1]=9; - coord1[1][0]=2; coord1[1][1]=2; - coord1[2][0]=8; coord1[2][1]=4; - coord1[3][0]=1; coord1[3][1]=6; - coord1[4][0]=2; coord1[4][1]=8; - coord1[5][0]=3; coord1[5][1]=2; - coord1[6][0]=0; coord1[6][1]=4; - coord1[7][0]=9; coord1[7][1]=0; - coord1[8][0]=7; coord1[8][1]=1; - coord1[9][0]=3; coord1[9][1]=3; - H5Sselect_elements(sid2,H5S_SELECT_SET,POINT1_NPOINTS,(hsize_t *)coord1); - - H5Sget_select_npoints(sid2); - - /* Store second dataset region */ - H5Rcreate(&wbuf[1],fid1,"/Dataset2",H5R_DATASET_REGION,sid2); - - /* Write selection to disk */ - H5Dwrite(dset1,H5T_STD_REF_DSETREG,H5S_ALL,H5S_ALL,H5P_DEFAULT,wbuf); - - /* Close disk dataspace */ - H5Sclose(sid1); - - /* Close Dataset */ - H5Dclose(dset1); - - /* Close uint8 dataset dataspace */ - H5Sclose(sid2); - - /* Close file */ - H5Fclose(fid1); - - /* Free memory buffers */ - HDfree(wbuf); - HDfree(rbuf); - HDfree(dwbuf); - HDfree(drbuf); -} - -static void gent_attrreg(void) -{ - /*some code is taken from enum.c in the test dir */ - - hid_t fid1; /* HDF5 File IDs */ - hid_t dset1; /* Dataset ID */ - hid_t dset2; /* Dereferenced dataset ID */ - hid_t sid1; /* Dataspace ID #1 */ - hid_t sid2; /* Dataspace ID #2 */ - hid_t sid3; /* Dataspace ID #3 */ - hid_t attr1; /* Attribute ID */ - hsize_t dims1[] = {SPACE1_DIM1}; - hsize_t dims2[] = {SPACE2_DIM1, SPACE2_DIM2}; - hsize_t start[SPACE2_RANK]; /* Starting location of hyperslab */ - hsize_t stride[SPACE2_RANK]; /* Stride of hyperslab */ - hsize_t count[SPACE2_RANK]; /* Element count of hyperslab */ - hsize_t block[SPACE2_RANK]; /* Block size of hyperslab */ - hsize_t coord1[POINT1_NPOINTS][SPACE2_RANK]; /* Coordinates for point selection */ - hdset_reg_ref_t *wbuf; /* buffer to write to disk */ - hdset_reg_ref_t *rbuf; /* buffer read from disk */ - uint8_t *dwbuf; /* Buffer for writing numeric data to disk */ - uint8_t *drbuf; /* Buffer for reading numeric data from disk */ - uint8_t *tu8; /* Temporary pointer to uint8 data */ - int i; /* counting variables */ - - /* Allocate write & read buffers */ - wbuf = (hdset_reg_ref_t*) HDcalloc(sizeof(hdset_reg_ref_t), SPACE1_DIM1); - rbuf = (hdset_reg_ref_t*) HDmalloc(sizeof(hdset_reg_ref_t)*SPACE1_DIM1); - dwbuf = (uint8_t*) HDmalloc(sizeof(uint8_t)*SPACE2_DIM1*SPACE2_DIM2); - drbuf = (uint8_t*) HDcalloc(sizeof(uint8_t),SPACE2_DIM1*SPACE2_DIM2); - - /* Create file */ - fid1 = H5Fcreate(FILE64, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* Create dataspace for datasets */ - sid2 = H5Screate_simple(SPACE2_RANK, dims2, NULL); - - /* Create a dataset */ - dset2 = H5Dcreate2(fid1, "Dataset2", H5T_STD_U8BE, sid2, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - for(tu8 = dwbuf, i = 0; i < SPACE2_DIM1 * SPACE2_DIM2; i++) - *tu8++ = (uint8_t)(i * 3); - - /* Write selection to disk */ - H5Dwrite(dset2, H5T_NATIVE_UCHAR, H5S_ALL, H5S_ALL, H5P_DEFAULT, dwbuf); - - /* Close Dataset */ - H5Dclose(dset2); - - /* - * Create dataset with a null dataspace to serve as the parent for - * the attribute. - */ - sid1 = H5Screate (H5S_NULL); - dset1 = H5Dcreate2 (fid1, "Dataset1", H5T_STD_I32LE, sid1, H5P_DEFAULT, - H5P_DEFAULT, H5P_DEFAULT); - H5Sclose (sid1); - - /* Create references */ - - /* Select 6x6 hyperslab for first reference */ - start[0] = 2; start[1] = 2; - stride[0] = 1; stride[1] = 1; - count[0] = 6; count[1] = 6; - block[0] = 1; block[1] = 1; - H5Sselect_hyperslab(sid2, H5S_SELECT_SET, start, stride, count, block); - - H5Sget_select_npoints(sid2); - - /* Store first dataset region */ - H5Rcreate(&wbuf[0], fid1, "/Dataset2", H5R_DATASET_REGION, sid2); - - /* Select sequence of ten points for second reference */ - coord1[0][0]=6; coord1[0][1]=9; - coord1[1][0]=2; coord1[1][1]=2; - coord1[2][0]=8; coord1[2][1]=4; - coord1[3][0]=1; coord1[3][1]=6; - coord1[4][0]=2; coord1[4][1]=8; - coord1[5][0]=3; coord1[5][1]=2; - coord1[6][0]=0; coord1[6][1]=4; - coord1[7][0]=9; coord1[7][1]=0; - coord1[8][0]=7; coord1[8][1]=1; - coord1[9][0]=3; coord1[9][1]=3; - H5Sselect_elements(sid2,H5S_SELECT_SET,POINT1_NPOINTS,(hsize_t *)coord1); - - H5Sget_select_npoints(sid2); - - /* Store second dataset region */ - H5Rcreate(&wbuf[1],fid1,"/Dataset2",H5R_DATASET_REGION,sid2); - - /* Create dataspace for the attribute */ - sid3 = H5Screate_simple(SPACE1_RANK, dims1, NULL); - - /* Create the attribute and write the region references to it. */ - attr1 = H5Acreate2 (dset1, "Attribute1", H5T_STD_REF_DSETREG, sid3, H5P_DEFAULT, - H5P_DEFAULT); - H5Awrite (attr1, H5T_STD_REF_DSETREG, wbuf); - - /* Close attribute dataspace */ - H5Sclose(sid3); - - /* Close attribute */ - H5Aclose (attr1); - - /* Close Dataset */ - H5Dclose(dset1); - - /* Close uint8 dataset dataspace */ - H5Sclose(sid2); - - /* Close file */ - H5Fclose(fid1); - - /* Free memory buffers */ - HDfree(wbuf); - HDfree(rbuf); - HDfree(dwbuf); - HDfree(drbuf); -} - -/*taken from Elena's compound test file*/ -static void gent_nestcomp(void) -{ - /* Compound memeber of the compound datatype*/ - typedef struct cmp_t { - char a; - float b[2]; - } cmp_t; - - /* First structure and dataset*/ - typedef struct s1_t { - int a; - float b; - double c; - cmp_t d; - } s2_t; - hid_t cmp_tid; /* Handle for the compound datatype */ - hid_t char_id; /* Handle for the string datatype */ - hid_t array_dt; - hsize_t array_dims[] = {2}; /* Dataspace dimensions */ - unsigned ndims = 1; /* Number of dimensions in the array field */ - - s2_t s1[10]; - hid_t s2_tid; /* File datatype identifier */ - - int i; - hid_t file, dataset, space; /* Handles */ - herr_t status; - hsize_t dim[] = {10}; /* Dataspace dimensions */ - - char datasetname[] = "ArrayOfStructures"; - - - /* - * Initialize the data - */ - for(i = 0; i< 10; i++) { - s1[i].a = i; - s1[i].b = (float)(i*i); - s1[i].c = 1.0F/(float)(i + 1); - s1[i].d.a = (char)(65 + i); - s1[i].d.b[0] = -100.0F; - s1[i].d.b[1] = 100.0F; - } - - /* - * Create the data space. - */ - space = H5Screate_simple(1, dim, NULL); - - /* - * Create the file. - */ - file = H5Fcreate(FILE18, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* - * Create the memory data type. - */ - /* - * Create a datatype for compound field first. - */ - cmp_tid = H5Tcreate (H5T_COMPOUND, sizeof(cmp_t)); - - /* We are using C string of length one to represent "real" character */ - char_id = H5Tcopy(H5T_C_S1); - H5Tset_strpad(char_id, H5T_STR_NULLTERM); - H5Tinsert(cmp_tid, "char_name", HOFFSET(cmp_t, a), char_id); - - array_dt = H5Tarray_create2(H5T_NATIVE_FLOAT, ndims, array_dims); - H5Tinsert(cmp_tid, "array_name", HOFFSET(cmp_t, b), array_dt); - H5Tclose(array_dt); - - s2_tid = H5Tcreate (H5T_COMPOUND, sizeof(s2_t)); - H5Tinsert(s2_tid, "a_name", HOFFSET(s2_t, a), H5T_NATIVE_INT); - H5Tinsert(s2_tid, "c_name", HOFFSET(s2_t, c), H5T_NATIVE_DOUBLE); - H5Tinsert(s2_tid, "b_name", HOFFSET(s2_t, b), H5T_NATIVE_FLOAT); - - /* Insert compound memeber created above */ - H5Tinsert(s2_tid, "d_name", HOFFSET(s2_t, d), cmp_tid); - - /* - * Create the dataset. - */ - dataset = H5Dcreate2(file, datasetname, s2_tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* - * Wtite data to the dataset; - */ - status = H5Dwrite(dataset, s2_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s1); - if(status < 0) - fprintf(stderr, "gent_nestcomp H5Dwrite failed\n"); - - /* - * Release resources - */ - H5Tclose(s2_tid); - H5Tclose(cmp_tid); - H5Tclose(char_id); - H5Sclose(space); - H5Dclose(dataset); - H5Fclose(file); -} - -static void gent_opaque(void) -{ - hid_t file, type, dataset, space; - char test[100][2]; - int x; - hsize_t dim = 2; - - for(x = 0; x < 100; x++){ - test[x][0] = (char)x; - test[x][1] = (char)(99 - x); - } - - /* - * Create the data space. - */ - space = H5Screate_simple(1, &dim, NULL); - - /* - * Create the file. - */ - file = H5Fcreate(FILE19, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* - * Create the memory datatype. - */ - type = H5Tcreate(H5T_OPAQUE, sizeof(char) * 100 * 2); - H5Tset_tag(type, "test opaque type"); - - /* - * Create the dataset. - */ - dataset = H5Dcreate2(file, "opaque test", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* - * Write data to the dataset; - */ - H5Dwrite(dataset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, test); - - H5Tclose(type); - H5Sclose(space); - H5Dclose(dataset); - H5Fclose(file); -} - -static void gent_bitfields(void) -{ - hid_t file, grp=-1, type=-1, space=-1, dset=-1; - size_t i; - hsize_t nelmts; - unsigned char buf[32]; - - file = H5Fcreate(FILE20, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - if((grp = H5Gcreate2(file, "typetests", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) goto error; - - /* bitfield_1 */ - nelmts = sizeof(buf); - if((type = H5Tcopy(H5T_STD_B8LE)) < 0 || - (space = H5Screate_simple(1, &nelmts, NULL)) < 0 || - (dset = H5Dcreate2(grp, "bitfield_1", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - - for(i = 0; i < sizeof buf; i++) - buf[i] = (unsigned char)0xff ^ (unsigned char)i; - if(H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto error; - if(H5Sclose(space) < 0) goto error; - if(H5Tclose(type) < 0) goto error; - if(H5Dclose(dset) < 0) goto error; - - /* bitfield_2 */ - nelmts = sizeof(buf)/2; - if((type = H5Tcopy(H5T_STD_B16LE)) < 0 || - (space = H5Screate_simple(1, &nelmts, NULL)) < 0 || - (dset = H5Dcreate2(grp, "bitfield_2", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - for(i = 0; i < sizeof buf; i++) - buf[i] = (unsigned char)0xff ^ (unsigned char)i; - if(H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto error; - if(H5Sclose(space) < 0) goto error; - if(H5Tclose(type) < 0) goto error; - if(H5Dclose(dset) < 0) goto error; - if(H5Gclose(grp) < 0) goto error; - H5Fclose(file); - - error: - H5E_BEGIN_TRY { - H5Gclose(grp); - H5Tclose(type); - H5Sclose(space); - H5Dclose(dset); - } H5E_END_TRY; -} - -static void gent_vldatatypes(void) -{ - hvl_t adata, wdata[SPACE1_DIM1]; - hid_t file, dset, space, type; - hsize_t dims[] = { SPACE1_DIM1 }; - int i; - herr_t ret=0; - - file = H5Fcreate(FILE21, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* Allocate and initialize VL dataset to write */ - for(i = 0; i < SPACE1_DIM1; i++) { - int j; - - wdata[i].p = HDmalloc((size_t)(i + 1) * sizeof(int)); - wdata[i].len = (size_t)(i + 1); - - for(j = 0; j < i + 1; j++) - ((int *)wdata[i].p)[j] = i * 10 + j; - } - - /* write out the integers in little-endian format */ - space = H5Screate_simple(SPACE1_RANK, dims, NULL); - type = H5Tvlen_create(H5T_NATIVE_INT); - dset = H5Dcreate2(file, "Dataset1.0", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - ret = H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - HDassert(ret >= 0); - ret = H5Dvlen_reclaim(type, space, H5P_DEFAULT, wdata); - HDassert(ret >= 0); - - ret = H5Dclose(dset); - HDassert(ret >= 0); - ret = H5Tclose(type); - HDassert(ret >= 0); - ret = H5Sclose(space); - HDassert(ret >= 0); - - /* Allocate and initialize VL dataset to write */ - for(i = 0; i < SPACE1_DIM1; i++) { - int j; - - wdata[i].p = HDmalloc((size_t)(i + 1) * sizeof(float)); - wdata[i].len = (size_t)(i + 1); - - for(j = 0; j < i + 1; j++) - ((float *)wdata[i].p)[j] = (float)((float)(i * 10) + ((float)j) / 10.0F); - } /* end for */ - - /* write out the floats in little-endian format */ - space = H5Screate_simple(SPACE1_RANK, dims, NULL); - type = H5Tvlen_create(H5T_NATIVE_FLOAT); - dset = H5Dcreate2(file, "Dataset2.0", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - ret = H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - HDassert(ret >= 0); - ret = H5Dvlen_reclaim(type, space, H5P_DEFAULT, wdata); - HDassert(ret >= 0); - - ret = H5Dclose(dset); - HDassert(ret >= 0); - ret = H5Tclose(type); - HDassert(ret >= 0); - ret = H5Sclose(space); - HDassert(ret >= 0); - - /* Allocate and initialize a scalar VL dataset to write */ - adata.p = HDmalloc(37 * sizeof(int)); - adata.len = 37; - - for(i = 0; i < 37; i++) - ((int *)adata.p)[i] = i * 2; - - /* write out scalar VL dataset in little-endian format */ - space = H5Screate_simple(0, NULL, NULL); - type = H5Tvlen_create(H5T_NATIVE_INT); - dset = H5Dcreate2(file, "Dataset3.0", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - ret = H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, &adata); - HDassert(ret >= 0); - ret = H5Dvlen_reclaim(type, space, H5P_DEFAULT, &adata); - HDassert(ret >= 0); - - ret = H5Dclose(dset); - HDassert(ret >= 0); - ret = H5Tclose(type); - HDassert(ret >= 0); - ret = H5Sclose(space); - HDassert(ret >= 0); - ret = H5Fclose(file); - HDassert(ret >= 0); -} - -static void -gent_vldatatypes2(void) -{ - hvl_t wdata[SPACE1_DIM1]; /* Information to write */ - hvl_t *t1; /* Temporary pointer to VL information */ - hid_t fid1; /* HDF5 File IDs */ - hid_t dataset; /* Dataset ID */ - hid_t sid1; /* Dataspace ID */ - hid_t tid1, tid2; /* Datatype IDs */ - hsize_t dims1[] = {SPACE1_DIM1}; - unsigned i,j,k; /* counting variables */ - herr_t ret; /* Generic return value */ - - /* Allocate and initialize VL data to write */ - for(i = 0; i < SPACE1_DIM1; i++) { - wdata[i].p = (hvl_t *)HDmalloc((i + 1) * sizeof(hvl_t)); - if(wdata[i].p == NULL) { - printf("Cannot allocate memory for VL data! i=%u\n", i); - return; - } /* end if */ - wdata[i].len = i + 1; - for(t1 = (hvl_t *)wdata[i].p, j = 0; j < (i + 1); j++, t1++) { - t1->p = (unsigned *)HDmalloc((j + 1) * sizeof(unsigned)); - if(t1->p == NULL) { - printf("Cannot allocate memory for VL data! i=%u, j=%u\n",i,j); - return; - } /* end if */ - t1->len=j+1; - for(k=0; k<(j+1); k++) - ((unsigned int *)t1->p)[k]=i*100+j*10+k; - } /* end for */ - } /* end for */ - - /* Create file */ - fid1 = H5Fcreate(FILE22, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* Create dataspace for datasets */ - sid1 = H5Screate_simple(SPACE1_RANK, dims1, NULL); - - /* Create a VL datatype to refer to */ - tid1 = H5Tvlen_create(H5T_NATIVE_UINT); - - /* Create the base VL type */ - tid2 = H5Tvlen_create(tid1); - - /* Create a dataset */ - dataset = H5Dcreate2(fid1, "Dataset1", tid2, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write dataset to disk */ - ret = H5Dwrite(dataset, tid2, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - HDassert(ret >= 0); - - /* Reclaim the write VL data */ - ret = H5Dvlen_reclaim(tid2, sid1, H5P_DEFAULT, wdata); - HDassert(ret >= 0); - - /* Close Dataset */ - ret = H5Dclose(dataset); - HDassert(ret >= 0); - ret = H5Tclose(tid2); - HDassert(ret >= 0); - ret = H5Tclose(tid1); - HDassert(ret >= 0); - ret = H5Sclose(sid1); - HDassert(ret >= 0); - ret = H5Fclose(fid1); - HDassert(ret >= 0); - -} - -static void gent_vldatatypes3(void) -{ - typedef struct { /* Struct that the VL sequences are composed of */ - int i; - float f; - hvl_t v; - } s1; - s1 wdata[SPACE1_DIM1]; /* Information to write */ - hid_t fid1; /* HDF5 File IDs */ - hid_t dataset; /* Dataset ID */ - hid_t sid1; /* Dataspace ID */ - hid_t tid1, tid2; /* Datatype IDs */ - hsize_t dims1[] = {SPACE1_DIM1}; - unsigned i,j; /* counting variables */ - herr_t ret; /* Generic return value */ - - /* Allocate and initialize VL data to write */ - for(i=0; i= 0); - ret = H5Tinsert(tid2, "f", HOFFSET(s1, f), H5T_NATIVE_FLOAT); - HDassert(ret >= 0); - ret = H5Tinsert(tid2, "v", HOFFSET(s1, v), tid1); - HDassert(ret >= 0); - - /* Create a dataset */ - dataset = H5Dcreate2(fid1, "Dataset1", tid2, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write dataset to disk */ - ret = H5Dwrite(dataset, tid2, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - HDassert(ret >= 0); - - /* Reclaim the write VL data */ - ret = H5Dvlen_reclaim(tid2, sid1, H5P_DEFAULT, wdata); - HDassert(ret >= 0); - - /* Close Dataset */ - ret = H5Dclose(dataset); - HDassert(ret >= 0); - ret = H5Tclose(tid2); - HDassert(ret >= 0); - ret = H5Tclose(tid1); - HDassert(ret >= 0); - ret = H5Sclose(sid1); - HDassert(ret >= 0); - ret = H5Fclose(fid1); - HDassert(ret >= 0); -} - -static void gent_vldatatypes4(void) -{ - typedef struct { /* Struct that the VL sequences are composed of */ - int i; - float f; - } s1; - hvl_t wdata[SPACE1_DIM1]; /* Information to write */ - hid_t fid1; /* HDF5 File IDs */ - hid_t dataset; /* Dataset ID */ - hid_t sid1; /* Dataspace ID */ - hid_t tid1, tid2; /* Datatype IDs */ - hsize_t dims1[] = {SPACE1_DIM1}; - unsigned i,j; /* counting variables */ - herr_t ret; /* Generic return value */ - - /* Allocate and initialize VL data to write */ - for(i=0; i= 0); - ret = H5Tinsert(tid2, "f", HOFFSET(s1, f), H5T_NATIVE_FLOAT); - HDassert(ret >= 0); - - /* Create a datatype to refer to */ - tid1 = H5Tvlen_create(tid2); - - /* Create a dataset */ - dataset = H5Dcreate2(fid1, "Dataset1", tid1, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write dataset to disk */ - ret = H5Dwrite(dataset, tid1, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - HDassert(ret >= 0); - - /* Reclaim the write VL data */ - ret = H5Dvlen_reclaim(tid1, sid1, H5P_DEFAULT, wdata); - HDassert(ret >= 0); - - /* Close Dataset */ - ret = H5Dclose(dataset); - HDassert(ret >= 0); - ret = H5Tclose(tid1); - HDassert(ret >= 0); - ret = H5Tclose(tid2); - HDassert(ret >= 0); - ret = H5Sclose(sid1); - HDassert(ret >= 0); - ret = H5Fclose(fid1); - HDassert(ret >= 0); -} - -/* Generate a variable-length dataset with NULL values in it */ -static void gent_vldatatypes5(void) -{ - hvl_t wdata [SPACE1_DIM1]; - hid_t fid1; - hid_t dataset; - hid_t sid1; - hid_t tid1; - hsize_t dims1[] = {SPACE1_DIM1}; - int i,j; /* counting variable */ - herr_t ret; /* Generic return value */ - - /* initialize data for dataset */ - for(i=0; i0); - - /* Create dataspace for datasets */ - sid1 = H5Screate_simple(SPACE1_RANK, dims1, NULL); - HDassert(sid1>0); - - /* Create a datatype to refer to */ - tid1 = H5Tvlen_create(H5T_NATIVE_UINT); - HDassert(tid1>0); - - /* Create a dataset */ - dataset = H5Dcreate2(fid1, F43_DSETNAME, tid1, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - HDassert(dataset>0); - - ret = H5Dwrite(dataset, tid1, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - HDassert(ret >= 0); - - ret = H5Dclose(dataset); - HDassert(ret >= 0); - - ret = H5Dvlen_reclaim(tid1, sid1, H5P_DEFAULT, wdata); - HDassert(ret >= 0); - - ret = H5Tclose(tid1); - HDassert(ret >= 0); - - ret = H5Sclose (sid1); - HDassert(ret >= 0); - - ret = H5Fclose (fid1); - HDassert(ret >= 0); -} - -/* This is big enough to make h5dump to use hyperslap to read - from file and display portion by portion. This also prints out array indices - via region reference for testing refion reference output. - Note: this was added originally prepared for bug2092. before the fix h5dump didn't - display array indices every 262 x N (N > 0) based on 2000x1000 dims. - */ -#define SPACE_ARRAY1BIG_DIM 2000 -#define ARRAY1BIG_DIM 1000 - -static void gent_array1_big(void) -{ - int *wdata; /* Information to write */ - hid_t fid1; /* HDF5 File IDs */ - hid_t dataset; /* Dataset ID */ - hid_t sid1; /* Dataspace ID */ - hid_t tid1; /* Datatype ID */ - hsize_t sdims1[] = {SPACE_ARRAY1BIG_DIM}; - hsize_t tdims1[] = {ARRAY1BIG_DIM}; - int i,j; /* counting variables */ - herr_t ret; /* Generic return value */ - - - /* for region reference dataset */ - hid_t dset2; - hid_t sid2; - hsize_t dims2[] = {SPACE1_DIM1}; - hsize_t start[SPACE1_RANK]; /* Starting location of hyperslab */ - hsize_t stride[SPACE1_RANK]; /* Stride of hyperslab */ - hsize_t count[SPACE1_RANK]; /* Element count of hyperslab */ - hsize_t block[SPACE1_RANK]; /* Block size of hyperslab */ - hdset_reg_ref_t *wbuf; /* buffer to write to disk */ - - start[0] = 0; - stride[0] = 1; - count[0] = 999; - block[0] = 1; - - /* Allocate write & read buffers */ - wbuf = (hdset_reg_ref_t*) HDcalloc(sizeof(hdset_reg_ref_t), SPACE1_DIM1); - wdata = (int *)HDmalloc(sizeof(int) * (size_t)(SPACE_ARRAY1BIG_DIM * ARRAY1BIG_DIM)); - - /* Allocate and initialize array data to write */ - for(i = 0; i < SPACE_ARRAY1BIG_DIM; i++) - for(j = 0; j < ARRAY1BIG_DIM; j++) - *(wdata + (i * ARRAY1BIG_DIM) + j) = i * 1; - - /* Create file */ - fid1 = H5Fcreate(FILE25_BIG, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /*------------------------- - * Array type dataset - */ - /* Create dataspace for datasets */ - sid1 = H5Screate_simple(SPACE1_RANK, sdims1, NULL); - - /* Create a datatype to refer to */ - tid1 = H5Tarray_create2(H5T_NATIVE_INT, ARRAY1_RANK, tdims1); - - /* Create a dataset */ - dataset = H5Dcreate2(fid1, "Dataset1", tid1, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write dataset to disk */ - ret = H5Dwrite(dataset, tid1, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - HDassert(ret >= 0); - - /*--------------------------- - * Region Reference dataset - */ - /* Create dataspace for the reference dataset */ - sid2 = H5Screate_simple(SPACE1_RANK, dims2, NULL); - - /* Create a dataset */ - dset2 = H5Dcreate2(fid1, "Dataset2", H5T_STD_REF_DSETREG, sid2, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Create references */ - H5Sselect_hyperslab(sid1, H5S_SELECT_SET, start, stride, count, block); - - H5Sget_select_npoints(sid1); - - /* Create Dataset1 region */ - H5Rcreate(&wbuf[0], fid1, "/Dataset1", H5R_DATASET_REGION, sid1); - - /* Write selection to disk */ - H5Dwrite(dset2,H5T_STD_REF_DSETREG,H5S_ALL,H5S_ALL,H5P_DEFAULT,wbuf); - - /* Close Dataset */ - ret = H5Dclose(dataset); - HDassert(ret >= 0); - ret = H5Tclose(tid1); - HDassert(ret >= 0); - ret = H5Sclose(sid1); - HDassert(ret >= 0); - ret = H5Fclose(fid1); - HDassert(ret >= 0); - - /* Release memory */ - HDfree(wbuf); - HDfree(wdata); -} - -static void gent_array1(void) -{ - int wdata[SPACE1_DIM1][ARRAY1_DIM1]; /* Information to write */ - hid_t fid1; /* HDF5 File IDs */ - hid_t dataset; /* Dataset ID */ - hid_t sid1; /* Dataspace ID */ - hid_t tid1; /* Datatype ID */ - hsize_t sdims1[] = {SPACE1_DIM1}; - hsize_t tdims1[] = {ARRAY1_DIM1}; - int i,j; /* counting variables */ - herr_t ret; /* Generic return value */ - - /* Allocate and initialize array data to write */ - for(i=0; i= 0); - - /* Close Dataset */ - ret = H5Dclose(dataset); - HDassert(ret >= 0); - ret = H5Tclose(tid1); - HDassert(ret >= 0); - ret = H5Sclose(sid1); - HDassert(ret >= 0); - ret = H5Fclose(fid1); - HDassert(ret >= 0); -} - -static void gent_array2(void) -{ - int wdata[SPACE1_DIM1][ARRAY2_DIM1][ARRAY2_DIM2][ARRAY2_DIM3]; /* Information to write */ - hid_t fid; /* HDF5 File IDs */ - hid_t dataset; /* Dataset ID */ - hid_t sid; /* Dataspace ID */ - hid_t tid; /* Datatype ID */ - hsize_t sdims1[] = {SPACE1_DIM1}; - hsize_t tdims2[] = {ARRAY2_DIM1,ARRAY2_DIM2,ARRAY2_DIM3}; - int i,j,k,l; /* counting variables */ - herr_t ret; /* Generic return value */ - - /* Allocate and initialize array data to write */ - for(i=0; i= 0); - - /* Close Dataset */ - ret = H5Dclose(dataset); - HDassert(ret >= 0); - ret = H5Tclose(tid); - HDassert(ret >= 0); - ret = H5Sclose(sid); - HDassert(ret >= 0); - ret = H5Fclose(fid); - HDassert(ret >= 0); -} - -static void gent_array3(void) -{ - int wdata[SPACE1_DIM1][ARRAY1_DIM1][ARRAY3_DIM1][ARRAY3_DIM2]; /* Information to write */ - hid_t fid; /* HDF5 File IDs */ - hid_t dataset; /* Dataset ID */ - hid_t sid; /* Dataspace ID */ - hid_t tid1; /* 1-D array Datatype ID */ - hid_t tid2; /* 2-D array Datatype ID */ - hsize_t sdims1[] = {SPACE1_DIM1}; - hsize_t tdims1[] = {ARRAY1_DIM1}; - hsize_t tdims2[] = {ARRAY3_DIM1,ARRAY3_DIM2}; - int i,j,k,l; /* counting variables */ - herr_t ret; /* Generic return value */ - - /* Allocate and initialize array data to write */ - for(i=0; i= 0); - - /* Close Dataset */ - ret = H5Dclose(dataset); - HDassert(ret >= 0); - ret = H5Tclose(tid1); - HDassert(ret >= 0); - ret = H5Tclose(tid2); - HDassert(ret >= 0); - ret = H5Sclose(sid); - HDassert(ret >= 0); - ret = H5Fclose(fid); - HDassert(ret >= 0); -} - -static void gent_array4(void) -{ - typedef struct { /* Typedef for compound datatype */ - int i; - float f; - } s2_t; - s2_t wdata[SPACE1_DIM1][ARRAY1_DIM1]; /* Information to write */ - hid_t fid1; /* HDF5 File IDs */ - hid_t dataset; /* Dataset ID */ - hid_t sid1; /* Dataspace ID */ - hid_t tid1; /* Array Datatype ID */ - hid_t tid2; /* Compound Datatype ID */ - hsize_t sdims1[] = {SPACE1_DIM1}; - hsize_t tdims1[] = {ARRAY1_DIM1}; - int i,j; /* counting variables */ - herr_t ret; /* Generic return value */ - - /* Initialize array data to write */ - for(i=0; i= 0); - - /* Insert float field */ - ret = H5Tinsert(tid2, "f", HOFFSET(s2_t, f), H5T_NATIVE_FLOAT); - HDassert(ret >= 0); - - /* Create an array datatype to refer to */ - tid1 = H5Tarray_create2(tid2, ARRAY1_RANK, tdims1); - - /* Close compound datatype */ - ret = H5Tclose(tid2); - HDassert(ret >= 0); - - /* Create a dataset */ - dataset = H5Dcreate2(fid1, "Dataset1", tid1, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write dataset to disk */ - ret = H5Dwrite(dataset, tid1, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - HDassert(ret >= 0); - - /* Close Dataset */ - ret = H5Dclose(dataset); - HDassert(ret >= 0); - ret = H5Tclose(tid1); - HDassert(ret >= 0); - ret = H5Sclose(sid1); - HDassert(ret >= 0); - ret = H5Fclose(fid1); - HDassert(ret >= 0); -} - -static void gent_array5(void) -{ - typedef struct { /* Typedef for compound datatype */ - int i; - float f[ARRAY1_DIM1]; - } s2_t; - s2_t wdata[SPACE1_DIM1][ARRAY1_DIM1]; /* Information to write */ - hid_t fid1; /* HDF5 File IDs */ - hid_t dataset; /* Dataset ID */ - hid_t sid1; /* Dataspace ID */ - hid_t tid1; /* Array Datatype ID */ - hid_t tid2; /* Compound Datatype ID */ - hid_t tid3; /* Nested Array Datatype ID */ - hsize_t sdims1[] = {SPACE1_DIM1}; - hsize_t tdims1[] = {ARRAY1_DIM1}; - int i,j,k; /* counting variables */ - herr_t ret; /* Generic return value */ - - /* Initialize array data to write */ - for(i=0; i= 0); - - /* Create an array of floats datatype */ - tid3 = H5Tarray_create2(H5T_NATIVE_FLOAT, ARRAY1_RANK, tdims1); - - /* Insert float array field */ - ret = H5Tinsert (tid2, "f", HOFFSET(s2_t,f), tid3); - HDassert(ret >= 0); - - /* Close array of floats field datatype */ - ret = H5Tclose(tid3); - HDassert(ret >= 0); - - /* Create an array datatype to refer to */ - tid1 = H5Tarray_create2(tid2, ARRAY1_RANK, tdims1); - - /* Close compound datatype */ - ret = H5Tclose(tid2); - HDassert(ret >= 0); - - /* Create a dataset */ - dataset = H5Dcreate2(fid1, "Dataset1", tid1, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write dataset to disk */ - ret = H5Dwrite(dataset, tid1, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - HDassert(ret >= 0); - - /* Close Dataset */ - ret = H5Dclose(dataset); - HDassert(ret >= 0); - ret = H5Tclose(tid1); - HDassert(ret >= 0); - ret = H5Sclose(sid1); - HDassert(ret >= 0); - ret = H5Fclose(fid1); - HDassert(ret >= 0); -} - -static void gent_array6(void) -{ - hvl_t wdata[SPACE1_DIM1][ARRAY1_DIM1]; /* Information to write */ - hid_t fid1; /* HDF5 File IDs */ - hid_t dataset; /* Dataset ID */ - hid_t sid1; /* Dataspace ID */ - hid_t tid1; /* Array Datatype ID */ - hid_t tid2; /* VL Datatype ID */ - hsize_t sdims1[] = {SPACE1_DIM1}; - hsize_t tdims1[] = {ARRAY1_DIM1}; - int i,j,k; /* counting variables */ - herr_t ret; /* Generic return value */ - - /* Initialize array data to write */ - for(i=0; i= 0); - - /* Create a dataset */ - dataset = H5Dcreate2(fid1, "Dataset1", tid1, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write dataset to disk */ - ret = H5Dwrite(dataset, tid1, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - HDassert(ret >= 0); - - /* Reclaim the write VL data */ - ret = H5Dvlen_reclaim(tid1, sid1, H5P_DEFAULT, wdata); - HDassert(ret >= 0); - - /* Close Dataset */ - ret = H5Dclose(dataset); - HDassert(ret >= 0); - ret = H5Tclose(tid1); - HDassert(ret >= 0); - ret = H5Sclose(sid1); - HDassert(ret >= 0); - ret = H5Fclose(fid1); - HDassert(ret >= 0); -} - -static void gent_array7(void) -{ - hvl_t wdata[SPACE1_DIM1][ARRAY1_DIM1]; /* Information to write */ - hid_t fid1; /* HDF5 File IDs */ - hid_t dataset; /* Dataset ID */ - hid_t sid1; /* Dataspace ID */ - hid_t tid1; /* Array Datatype ID */ - hid_t tid2; /* VL Datatype ID */ - hid_t tid3; /* Nested Array Datatype ID */ - hsize_t sdims1[] = {SPACE1_DIM1}; - hsize_t tdims1[] = {ARRAY1_DIM1}; - int i,j,k,l; /* Index variables */ - herr_t ret; /* Generic return value */ - - /* Initialize array data to write */ - for(i=0; i= 0); - - /* Create an array datatype to refer to */ - tid1 = H5Tarray_create2(tid2, ARRAY1_RANK, tdims1); - - /* Close VL datatype */ - ret = H5Tclose(tid2); - HDassert(ret >= 0); - - /* Create a dataset */ - dataset = H5Dcreate2(fid1, "Dataset1", tid1, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write dataset to disk */ - ret = H5Dwrite(dataset, tid1, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - HDassert(ret >= 0); - - /* Reclaim the write VL data */ - ret = H5Dvlen_reclaim(tid1, sid1, H5P_DEFAULT, wdata); - HDassert(ret >= 0); - - /* Close Dataset */ - ret = H5Dclose(dataset); - HDassert(ret >= 0); - ret = H5Tclose(tid1); - HDassert(ret >= 0); - ret = H5Sclose(sid1); - HDassert(ret >= 0); - ret = H5Fclose(fid1); - HDassert(ret >= 0); -} - -/* Test the boundary of the display output buffer at the reallocation event */ -static void gent_array8(void) -{ - hid_t file = -1; /* Handles */ - hid_t filetype = -1; /* Handles */ - hid_t space = -1; /* Handles */ - hid_t dset = -1; /* Handles */ - herr_t status = -1; - hsize_t sdims[] = {F64_DIM0}; - hsize_t tdims[] = {F64_DIM1}; - int *wdata; /* Write buffer */ - unsigned int i; - - /* Allocate data buffer */ - wdata = HDmalloc(F64_DIM1 * sizeof(int)); - HDassert(wdata); - - /* - * Initialize data. i is the element in the dataspace, j and k the - * elements within the array datatype. - */ - for (i = 0; i < F64_DIM1; i++) - wdata[i] = (int)i; - - /* - * Create a new file using the default properties. - */ - file = H5Fcreate (F64_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* - * Create array datatypes for file and memory. - */ - filetype = H5Tarray_create2 (H5T_NATIVE_INT, 1, tdims); - - /* - * Create dataspace. Setting maximum size to NULL sets the maximum - * size to be the current size. - */ - space = H5Screate_simple (1, sdims, NULL); - - /* - * Create the dataset and write the array data to it. - */ - if(file>=0 && filetype>=0 && space>=0) { - dset = H5Dcreate2 (file, F64_DATASET, filetype, space, H5P_DEFAULT, H5P_DEFAULT, - H5P_DEFAULT); - if(dset>=0) - status = H5Dwrite (dset, filetype, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - HDassert(status >= 0); - } - - /* - * Close and release resources. - */ - status = H5Dclose (dset); - HDassert(status >= 0); - status = H5Sclose (space); - HDassert(status >= 0); - status = H5Tclose (filetype); - HDassert(status >= 0); - status = H5Fclose (file); - HDassert(status >= 0); - HDfree(wdata); -} - -static void gent_empty(void) -{ - typedef struct { - int a; - float b; - char c; - } empty_struct; - hid_t file, dset, space, type; - hsize_t dims[] = { SPACE1_DIM1 }; - herr_t ret=0; - - file = H5Fcreate(FILE32, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - space = H5Screate_simple(SPACE1_RANK, dims, NULL); - - /* write out an empty vlen dataset */ - type = H5Tvlen_create(H5T_NATIVE_INT); - dset = H5Dcreate2(file, "Dataset1.0", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - /* Don't write any data */ - ret = H5Dclose(dset); - HDassert(ret >= 0); - ret = H5Tclose(type); - HDassert(ret >= 0); - - /* write out an empty native integer dataset dataset */ - dset = H5Dcreate2(file, "Dataset2.0", H5T_NATIVE_INT, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - /* Don't write any data */ - ret = H5Dclose(dset); - HDassert(ret >= 0); - - /* write out an empty native floating-point dataset dataset */ - dset = H5Dcreate2(file, "Dataset3.0", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - /* Don't write any data */ - ret = H5Dclose(dset); - HDassert(ret >= 0); - - /* write out an empty array dataset */ - type = H5Tarray_create2(H5T_NATIVE_INT, SPACE1_RANK, dims); - dset = H5Dcreate2(file, "Dataset4.0", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - /* Don't write any data */ - ret = H5Dclose(dset); - HDassert(ret >= 0); - ret = H5Tclose(type); - HDassert(ret >= 0); - - /* write out an empty compound dataset */ - type = H5Tcreate(H5T_COMPOUND,sizeof(empty_struct)); - H5Tinsert(type, "a", HOFFSET(empty_struct, a),H5T_NATIVE_INT); - H5Tinsert(type, "b", HOFFSET(empty_struct, b),H5T_NATIVE_FLOAT); - H5Tinsert(type, "c", HOFFSET(empty_struct, c),H5T_NATIVE_CHAR); - dset = H5Dcreate2(file, "Dataset5.0", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - /* Don't write any data */ - ret = H5Dclose(dset); - HDassert(ret >= 0); - ret = H5Tclose(type); - HDassert(ret >= 0); - - ret = H5Sclose(space); - HDassert(ret >= 0); - - ret = H5Fclose(file); - HDassert(ret >= 0); -} - -static void -gent_group_comments(void) -{ - hid_t fid, group; - - fid = H5Fcreate(FILE33, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* / */ - group = H5Gcreate2(fid, "/g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Oset_comment_by_name(group, "/g1", "Comment for group /g1", H5P_DEFAULT); - H5Gclose(group); - group = H5Gcreate2(fid, "/g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Oset_comment_by_name(group, "/g2", "Comment for group /g2", H5P_DEFAULT); - H5Gclose(group); - group = H5Gcreate2(fid, "/g3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Oset_comment_by_name(group, "/g3", "Comment for group /g3", H5P_DEFAULT); - H5Gclose(group); - - /* /g1 */ - group = H5Gcreate2(fid, "/g1/g1.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Oset_comment_by_name(group, "/g1/g1.1", "Comment for group /g1/g1.1", H5P_DEFAULT); - H5Gclose(group); - group = H5Gcreate2(fid, "/g1/g1.2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Oset_comment_by_name(group, "/g1/g1.2", "Comment for group /g1/g1.2", H5P_DEFAULT); - H5Gclose(group); - - /* /g2 */ - group = H5Gcreate2(fid, "/g2/g2.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Oset_comment_by_name(group, "/g2/g2.1", "Comment for group /g2/g2.1", H5P_DEFAULT); - H5Gclose(group); - - /* /g3 */ - group = H5Gcreate2(fid, "/g3/g3.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Oset_comment_by_name(group, "/g3/g3.1", "Comment for group /g3/g3.1", H5P_DEFAULT); - H5Gclose(group); - group = H5Gcreate2(fid, "/g3/g3.2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Oset_comment_by_name(group, "/g3/g3.2", "Comment for group /g3/g3.2", H5P_DEFAULT); - H5Gclose(group); - group = H5Gcreate2(fid, "/g3/g3.3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Oset_comment_by_name(group, "/g3/g3.3", "Comment for group /g3/g3.3", H5P_DEFAULT); - H5Gclose(group); - group = H5Gcreate2(fid, "/g3/g3.4", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Oset_comment_by_name(group, "/g3/g3.4", "Comment for group /g3/g3.4", H5P_DEFAULT); - H5Gclose(group); - - /* /g2/g2.1 */ - group = H5Gcreate2(fid, "/g2/g2.1/g2.1.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Oset_comment_by_name(group, "/g2/g2.1/g2.1.1", "Comment for group /g2/g2.1/g2.1.1", H5P_DEFAULT); - H5Gclose(group); - group = H5Gcreate2(fid, "/g2/g2.1/g2.1.2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Oset_comment_by_name(group, "/g2/g2.1/g2.1.2", "Comment for group /g2/g2.1/g2.1.2", H5P_DEFAULT); - H5Gclose(group); - group = H5Gcreate2(fid, "/g2/g2.1/g2.1.3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Oset_comment_by_name(group, "/g2/g2.1/g2.1.3", "Comment for group /g2/g2.1/g2.1.3", H5P_DEFAULT); - H5Gclose(group); - - /* /glongcomment */ - group = H5Gcreate2(fid, "/glongcomment", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Oset_comment_by_name(group, "/glongcomment", "Comment for group /glongcomment with a really, really, really long, long, long comment", H5P_DEFAULT); - H5Gclose(group); - - H5Fclose(fid); -} - -static -void gent_split_file(void) -{ - hid_t fapl, fid, root, attr, space, dataset, atype; - char meta[] = "this is some metadata on this file"; - hsize_t dims[2]; - int i, j, dset[10][15]; - - fapl = H5Pcreate(H5P_FILE_ACCESS); - H5Pset_fapl_split(fapl, "-m.h5", H5P_DEFAULT, "-r.h5", H5P_DEFAULT); - fid = H5Fcreate(FILE34, H5F_ACC_TRUNC, H5P_DEFAULT, fapl); - root = H5Gopen2(fid, "/", H5P_DEFAULT); - - atype = H5Tcopy(H5T_C_S1); - H5Tset_size(atype, HDstrlen(meta) + 1); - H5Tset_strpad(atype, H5T_STR_NULLTERM); - - dims[0] = 1; - space = H5Screate_simple(1, dims, NULL); - attr = H5Acreate2(root, "Metadata", atype, space, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, atype, meta); - H5Tclose(atype); - H5Sclose(space); - H5Aclose(attr); - - /* create dataset */ - dims[0] = 10; - dims[1] = 15; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, "/dset1", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - for(i = 0; i < 10; i++) - for(j = 0; j < 15; j++) - dset[i][j] = i + j; - - H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset); - H5Sclose(space); - H5Dclose(dataset); - H5Gclose(root); - H5Fclose(fid); - H5Pclose(fapl); -} - -static -void gent_family(void) -{ - hid_t fapl, fid, space, dataset; - hsize_t dims[2]; - int i, j, dset[10][15]; - -#define FAMILY_SIZE 256 - - fapl = H5Pcreate(H5P_FILE_ACCESS); - H5Pset_fapl_family(fapl, (hsize_t)FAMILY_SIZE, H5P_DEFAULT); - - fid = H5Fcreate(FILE35, H5F_ACC_TRUNC, H5P_DEFAULT, fapl); - - /* create dataset */ - dims[0] = 10; - dims[1] = 15; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, "/dset1", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - for(i = 0; i < 10; i++) - for(j = 0; j < 15; j++) - dset[i][j] = i + j; - - H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset); - H5Sclose(space); - H5Dclose(dataset); - H5Fclose(fid); - H5Pclose(fapl); -} - -static const char *multi_letters = "msbrglo"; - -static -void gent_multi(void) -{ - hid_t fapl, fid, space, dataset; - hsize_t dims[2]; - int i, j, dset[10][15]; - - /* Multi-file driver, general case of the split driver */ - H5FD_mem_t mt, memb_map[H5FD_MEM_NTYPES]; - hid_t memb_fapl[H5FD_MEM_NTYPES]; - const char *memb_name[H5FD_MEM_NTYPES]; - char sv[H5FD_MEM_NTYPES][1024]; - haddr_t memb_addr[H5FD_MEM_NTYPES]; - - fapl = H5Pcreate(H5P_FILE_ACCESS); - - HDmemset(memb_map, 0, sizeof memb_map); - HDmemset(memb_fapl, 0, sizeof memb_fapl); - HDmemset(memb_name, 0, sizeof memb_name); - HDmemset(memb_addr, 0, sizeof memb_addr); - - HDassert(HDstrlen(multi_letters) == H5FD_MEM_NTYPES); - - for(mt = H5FD_MEM_DEFAULT; mt < H5FD_MEM_NTYPES; H5_INC_ENUM(H5FD_mem_t,mt)) { - memb_fapl[mt] = H5P_DEFAULT; - memb_map[mt] = mt; - sprintf(sv[mt], "%%s-%c.h5", multi_letters[mt]); - memb_name[mt] = sv[mt]; - /*printf("memb_name[%d]=%s, memb_map[%d]=%d; ", mt, memb_name[mt], mt, memb_map[mt]);*/ - memb_addr[mt] = (haddr_t)MAX(mt - 1, 0) * (HADDR_MAX / 10); - } - memb_map[H5FD_MEM_DEFAULT] = H5FD_MEM_SUPER; - - H5Pset_fapl_multi(fapl, memb_map, memb_fapl, memb_name, - memb_addr, FALSE); - - fid = H5Fcreate(FILE36, H5F_ACC_TRUNC, H5P_DEFAULT, fapl); - - /* create dataset */ - dims[0] = 10; - dims[1] = 15; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, "/dset1", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - for(i = 0; i < 10; i++) - for(j = 0; j < 15; j++) - dset[i][j] = i + j; - - H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset); - - H5Sclose(space); - H5Dclose(dataset); - H5Fclose(fid); - H5Pclose(fapl); -} - -static void gent_large_objname(void) -{ - hid_t fid, group, group2; - char grp_name[128]; - register int i; - - fid = H5Fcreate(FILE37, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - group = H5Gcreate2(fid, "this_is_a_large_group_name", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - for(i = 0; i < 50; ++i) { - sprintf(grp_name, "this_is_a_large_group_name%d", i); - group2 = H5Gcreate2(group, grp_name, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group2); - } - - H5Gclose(group); - H5Fclose(fid); -} - -static void gent_vlstr(void) -{ - const char *wdata[SPACE1_DIM1]= { - "Four score and seven years ago our forefathers brought forth on this continent a new nation,", - "conceived in liberty and dedicated to the proposition that all men are created equal.", - "", - NULL - }; /* Information to write */ - const char *string_att= "This is the string for the attribute"; - hid_t fid1; /* HDF5 File IDs */ - hid_t dataset, root; /* Dataset ID */ - hid_t sid1, dataspace;/* Dataspace ID */ - hid_t tid1, att; /* Datatype ID */ - hsize_t dims1[] = {SPACE1_DIM1}; - - /* Create file */ - fid1 = H5Fcreate(FILE38, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - sid1 = H5Screate_simple(SPACE1_RANK, dims1, NULL); - - /* Create a VL string datatype to refer to */ - tid1 = H5Tcopy (H5T_C_S1); - H5Tset_size (tid1, H5T_VARIABLE); - - /* Create a dataset and write VL string to it. */ - dataset = H5Dcreate2(fid1, "Dataset1", tid1, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Dwrite(dataset, tid1, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - H5Dclose(dataset); - - /* Create a named VL string type. Change padding of datatype */ - H5Tset_strpad(tid1, H5T_STR_NULLPAD); - H5Tcommit2(fid1, "vl_string_type", tid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Create an group attribute of VL string type */ - root = H5Gopen2(fid1, "/", H5P_DEFAULT); - dataspace = H5Screate(H5S_SCALAR); - - att = H5Acreate2(root, "test_scalar", tid1, dataspace, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(att, tid1, &string_att); - - /* Close */ - H5Tclose(tid1); - H5Sclose(sid1); - H5Sclose(dataspace); - H5Aclose(att); - H5Gclose(root); - H5Fclose(fid1); -} - -static void gent_char(void) -{ - const char *wdata = - "Four score and seven years ago our forefathers brought " - "forth on this continent a new nation, conceived in " - "liberty and dedicated to the proposition that all " - "men are created equal. Now we are engaged in a great " - "civil war, testing whether that nation or any nation " - "so conceived and so dedicated can long endure."; - hid_t fid1; /* HDF5 File IDs */ - hid_t dataset; /* Dataset ID */ - hid_t sid1; /* Dataspace ID */ - hsize_t dims1[1]; - - dims1[0] = HDstrlen(wdata); - - /* Create file */ - fid1 = H5Fcreate(FILE39, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - sid1 = H5Screate_simple(1, dims1, NULL); - - /* Create a dataset */ - dataset = H5Dcreate2(fid1, "Dataset1", H5T_NATIVE_CHAR, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write some characters to it. */ - H5Dwrite(dataset, H5T_NATIVE_CHAR, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - - /* Close */ - H5Dclose(dataset); - H5Sclose(sid1); - H5Fclose(fid1); -} - - - -/*------------------------------------------------------------------------- - * Function: write_attr_in - * - * Purpose: write attributes in LOC_ID (dataset, group, named datatype) - * - * Return: void - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: May 28, 2003 - * - *------------------------------------------------------------------------- - */ - -static void write_attr_in(hid_t loc_id, - const char* dset_name, /* for saving reference to dataset*/ - hid_t fid) -{ - /* Compound datatype */ - typedef struct s_t - { - char a; - double b; - } s_t; - - typedef enum - { - E_RED, - E_GREEN - } e_t; - - hid_t aid; - hid_t sid; - hid_t tid; - herr_t status; - int val, i, j, k, n; - float f; - - /* create 1D attributes with dimension [2], 2 elements */ - hsize_t dims[1]={2}; - char buf1[2][3]= {"ab","de"}; /* string */ - char buf2[2]= {1,2}; /* bitfield, opaque */ - s_t buf3[2]= {{1,2},{3,4}}; /* compound */ - hobj_ref_t buf4[2]; /* reference */ - hvl_t buf5[2]; /* vlen */ - hsize_t dimarray[1]={3}; /* array dimension */ - int buf6[2][3]= {{1,2,3},{4,5,6}}; /* array */ - int buf7[2]= {1,2}; /* integer */ - float buf8[2]= {1,2}; /* float */ - - /* create 2D attributes with dimension [3][2], 6 elements */ - hsize_t dims2[2]={3,2}; - char buf12[6][3]= {"ab","cd","ef","gh","ij","kl"}; /* string */ - char buf22[3][2]= {{1,2},{3,4},{5,6}}; /* bitfield, opaque */ - s_t buf32[6]= {{1,2},{3,4},{5,6},{7,8},{9,10},{11,12}}; /* compound */ - hobj_ref_t buf42[3][2]; /* reference */ - hvl_t buf52[3][2]; /* vlen */ - int buf62[6][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15},{16,17,18}}; /* array */ - int buf72[3][2]= {{1,2},{3,4},{5,6}}; /* integer */ - float buf82[3][2]= {{1,2},{3,4},{5,6}}; /* float */ - - /* create 3D attributes with dimension [4][3][2], 24 elements */ - hsize_t dims3[3]={4,3,2}; - char buf13[24][3]= {"ab","cd","ef","gh","ij","kl","mn","pq", - "rs","tu","vw","xz","AB","CD","EF","GH", - "IJ","KL","MN","PQ","RS","TU","VW","XZ"}; /* string */ - char buf23[4][3][2]; /* bitfield, opaque */ - s_t buf33[4][3][2]; /* compound */ - hobj_ref_t buf43[4][3][2]; /* reference */ - hvl_t buf53[4][3][2]; /* vlen */ - int buf63[24][3]; /* array */ - int buf73[4][3][2]; /* integer */ - float buf83[4][3][2]; /* float */ - - - /*------------------------------------------------------------------------- - * 1D attributes - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, 2); - write_attr(loc_id,1,dims,"string",tid,buf1); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - tid = H5Tcopy(H5T_STD_B8LE); - write_attr(loc_id,1,dims,"bitfield",tid,buf2); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - tid = H5Tcreate(H5T_OPAQUE, 1); - status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */ - write_attr(loc_id,1,dims,"opaque",tid,buf2); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t)); - H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR); - H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE); - write_attr(loc_id,1,dims,"compound",tid,buf3); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_REFERENCE - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if(dset_name) - { - status=H5Rcreate(&buf4[0],fid,dset_name,H5R_OBJECT,(hid_t)-1); - status=H5Rcreate(&buf4[1],fid,dset_name,H5R_OBJECT,(hid_t)-1); - write_attr(loc_id,1,dims,"reference",H5T_STD_REF_OBJ,buf4); - } - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - tid = H5Tcreate(H5T_ENUM, sizeof(e_t)); - H5Tenum_insert(tid, "RED", (val = 0, &val)); - H5Tenum_insert(tid, "GREEN", (val = 1, &val)); - write_attr(loc_id,1,dims,"enum",tid,0); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - - buf5[0].len = 1; - buf5[0].p = HDmalloc(1 * sizeof(int)); - ((int *)buf5[0].p)[0] = 1; - buf5[1].len = 2; - buf5[1].p = HDmalloc(2 * sizeof(int)); - ((int *)buf5[1].p)[0] = 2; - ((int *)buf5[1].p)[1] = 3; - - sid = H5Screate_simple(1, dims, NULL); - tid = H5Tvlen_create(H5T_NATIVE_INT); - aid = H5Acreate2(loc_id, "vlen", tid, sid, H5P_DEFAULT, H5P_DEFAULT); - status = H5Awrite(aid, tid, buf5); - HDassert(status >= 0); - status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf5); - HDassert(status >= 0); - status = H5Aclose(aid); - status = H5Tclose(tid); - status = H5Sclose(sid); - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray); - write_attr(loc_id, 1, dims, "array", tid, buf6); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_INTEGER and H5T_FLOAT - *------------------------------------------------------------------------- - */ - write_attr(loc_id, 1, dims, "integer", H5T_NATIVE_INT, buf7); - write_attr(loc_id, 1, dims, "float", H5T_NATIVE_FLOAT, buf8); - - - /*------------------------------------------------------------------------- - * 2D attributes - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, 2); - write_attr(loc_id,2,dims2,"string2D",tid,buf12); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - tid = H5Tcopy(H5T_STD_B8LE); - write_attr(loc_id,2,dims2,"bitfield2D",tid,buf22); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - tid = H5Tcreate(H5T_OPAQUE, 1); - status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */ - write_attr(loc_id,2,dims2,"opaque2D",tid,buf22); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t)); - H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR); - H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE); - write_attr(loc_id,2,dims2,"compound2D",tid,buf32); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_REFERENCE - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if(dset_name) - { - for(i = 0; i < 3; i++) { - for(j = 0; j < 2; j++) { - status=H5Rcreate(&buf42[i][j],fid,dset_name,H5R_OBJECT,(hid_t)-1); - } - } - write_attr(loc_id,2,dims2,"reference2D",H5T_STD_REF_OBJ,buf42); - } - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - tid = H5Tcreate(H5T_ENUM, sizeof(e_t)); - H5Tenum_insert(tid, "RED", (val = 0, &val)); - H5Tenum_insert(tid, "GREEN", (val = 1, &val)); - write_attr(loc_id,2,dims2,"enum2D",tid,0); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - n=0; - for(i = 0; i < 3; i++) { - for(j = 0; j < 2; j++) { - int l; - - buf52[i][j].p = HDmalloc((size_t)(i + 1) * sizeof(int)); - buf52[i][j].len = (size_t)(i + 1); - for(l = 0; l < i + 1; l++) - ((int *)buf52[i][j].p)[l] = n++; - } - } - - sid = H5Screate_simple(2, dims2, NULL); - tid = H5Tvlen_create(H5T_NATIVE_INT); - aid = H5Acreate2(loc_id, "vlen2D", tid, sid, H5P_DEFAULT, H5P_DEFAULT); - status = H5Awrite(aid, tid, buf52); - HDassert(status >= 0); - status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf52); - HDassert(status >= 0); - status = H5Aclose(aid); - status = H5Tclose(tid); - status = H5Sclose(sid); - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray); - write_attr(loc_id, 2, dims2, "array2D", tid, buf62); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_INTEGER and H5T_FLOAT - *------------------------------------------------------------------------- - */ - write_attr(loc_id, 2, dims2, "integer2D", H5T_NATIVE_INT, buf72); - write_attr(loc_id, 2, dims2, "float2D", H5T_NATIVE_FLOAT, buf82); - - - /*------------------------------------------------------------------------- - * 3D attributes - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, 2); - write_attr(loc_id,3,dims3,"string3D",tid,buf13); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - - n=1; - for(i = 0; i < 4; i++) { - for(j = 0; j < 3; j++) { - for(k = 0; k < 2; k++) { - buf23[i][j][k] = (char)n++; - } - } - } - tid = H5Tcopy(H5T_STD_B8LE); - write_attr(loc_id,3,dims3,"bitfield3D",tid,buf23); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - tid = H5Tcreate(H5T_OPAQUE, 1); - status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */ - write_attr(loc_id,3,dims3,"opaque3D",tid,buf23); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - - n=1; - for(i = 0; i < 4; i++) { - for(j = 0; j < 3; j++) { - for(k = 0; k < 2; k++) { - buf33[i][j][k].a = (char)n++; - buf33[i][j][k].b=n++; - } - } - } - tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t)); - H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR); - H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE); - write_attr(loc_id,3,dims3,"compound3D",tid,buf33); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_REFERENCE - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if(dset_name) - { - for(i = 0; i < 4; i++) { - for(j = 0; j < 3; j++) { - for(k = 0; k < 2; k++) - status=H5Rcreate(&buf43[i][j][k],fid,dset_name,H5R_OBJECT,(hid_t)-1); - } - } - write_attr(loc_id,3,dims3,"reference3D",H5T_STD_REF_OBJ,buf43); - } - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - tid = H5Tcreate(H5T_ENUM, sizeof(e_t)); - H5Tenum_insert(tid, "RED", (val = 0, &val)); - H5Tenum_insert(tid, "GREEN", (val = 1, &val)); - write_attr(loc_id,3,dims3,"enum3D",tid,0); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - n = 0; - for(i = 0; i < 4; i++) { - for(j = 0; j < 3; j++) { - for(k = 0; k < 2; k++) { - int l; - - buf53[i][j][k].p = HDmalloc((size_t)(i + 1) * sizeof(int)); - buf53[i][j][k].len = (size_t)(i + 1); - for(l = 0; l < i + 1; l++) - ((int *)buf53[i][j][k].p)[l] = n++; - } - } - } - - sid = H5Screate_simple(3, dims3, NULL); - tid = H5Tvlen_create(H5T_NATIVE_INT); - aid = H5Acreate2(loc_id, "vlen3D", tid, sid, H5P_DEFAULT, H5P_DEFAULT); - status = H5Awrite(aid, tid, buf53); - HDassert(status >= 0); - status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf53); - HDassert(status >= 0); - status = H5Aclose(aid); - status = H5Tclose(tid); - status = H5Sclose(sid); - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - n = 1; - for(i = 0; i < 24; i++) - for(j = 0; j < (int)dimarray[0]; j++) - buf63[i][j] = n++; - - tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray); - write_attr(loc_id, 3, dims3, "array3D", tid, buf63); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_INTEGER and H5T_FLOAT - *------------------------------------------------------------------------- - */ - n=1; f=1; - for(i = 0; i < 4; i++) { - for(j = 0; j < 3; j++) { - for(k = 0; k < 2; k++) { - buf73[i][j][k]=n++; - buf83[i][j][k]=f++; - } - } - } - write_attr(loc_id,3,dims3,"integer3D",H5T_NATIVE_INT,buf73); - write_attr(loc_id,3,dims3,"float3D",H5T_NATIVE_FLOAT,buf83); -} - - - -/*------------------------------------------------------------------------- - * Function: write_dset_in - * - * Purpose: write datasets in LOC_ID - * - * Return: void - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: May 28, 2003 - * - *------------------------------------------------------------------------- - */ - -static void write_dset_in(hid_t loc_id, - const char* dset_name, /* for saving reference to dataset*/ - hid_t fid) -{ - /* Compound datatype */ - typedef struct s_t - { - char a; - double b; - } s_t; - - typedef enum - { - E_RED, - E_GREEN - } e_t; - - hid_t did; - hid_t sid; - hid_t tid; - hid_t plist_id; - herr_t status; - int val, i, j, k, n; - float f; - int fillvalue=2; - - /* create 1D attributes with dimension [2], 2 elements */ - hsize_t dims[1]={2}; - char buf1[2][3]= {"ab","de"}; /* string */ - char buf2[2]= {1,2}; /* bitfield, opaque */ - s_t buf3[2]= {{1,2},{3,4}}; /* compound */ - hobj_ref_t buf4[2]; /* reference */ - hvl_t buf5[2]; /* vlen */ - hsize_t dimarray[1]={3}; /* array dimension */ - int buf6[2][3]= {{1,2,3},{4,5,6}}; /* array */ - int buf7[2]= {1,2}; /* integer */ - float buf8[2]= {1,2}; /* float */ - - /* create 2D attributes with dimension [3][2], 6 elements */ - hsize_t dims2[2]={3,2}; - char buf12[6][3]= {"ab","cd","ef","gh","ij","kl"}; /* string */ - char buf22[3][2]= {{1,2},{3,4},{5,6}}; /* bitfield, opaque */ - s_t buf32[6]= {{1,2},{3,4},{5,6},{7,8},{9,10},{11,12}}; /* compound */ - hobj_ref_t buf42[3][2]; /* reference */ - hvl_t buf52[3][2]; /* vlen */ - int buf62[6][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15},{16,17,18}}; /* array */ - int buf72[3][2]= {{1,2},{3,4},{5,6}}; /* integer */ - float buf82[3][2]= {{1,2},{3,4},{5,6}}; /* float */ - - /* create 3D attributes with dimension [4][3][2], 24 elements */ - hsize_t dims3[3]={4,3,2}; - char buf13[24][3]= {"ab","cd","ef","gh","ij","kl","mn","pq", - "rs","tu","vw","xz","AB","CD","EF","GH", - "IJ","KL","MN","PQ","RS","TU","VW","XZ"}; /* string */ - char buf23[4][3][2]; /* bitfield, opaque */ - s_t buf33[4][3][2]; /* compound */ - hobj_ref_t buf43[4][3][2]; /* reference */ - hvl_t buf53[4][3][2]; /* vlen */ - int buf63[24][3]; /* array */ - int buf73[4][3][2]; /* integer */ - float buf83[4][3][2]; /* float */ - - - /*------------------------------------------------------------------------- - * 1D - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, 2); - write_dset(loc_id,1,dims,"string",tid,buf1); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - tid = H5Tcopy(H5T_STD_B8LE); - write_dset(loc_id,1,dims,"bitfield",tid,buf2); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - tid = H5Tcreate(H5T_OPAQUE, 1); - status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */ - write_dset(loc_id,1,dims,"opaque",tid,buf2); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t)); - H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR); - H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE); - write_dset(loc_id,1,dims,"compound",tid,buf3); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_REFERENCE - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if(dset_name) - { - status=H5Rcreate(&buf4[0],fid,dset_name,H5R_OBJECT,(hid_t)-1); - status=H5Rcreate(&buf4[1],fid,dset_name,H5R_OBJECT,(hid_t)-1); - write_dset(loc_id,1,dims,"reference",H5T_STD_REF_OBJ,buf4); - } - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - tid = H5Tcreate(H5T_ENUM, sizeof(e_t)); - H5Tenum_insert(tid, "RED", (val = 0, &val)); - H5Tenum_insert(tid, "GREEN", (val = 1, &val)); - write_dset(loc_id,1,dims,"enum",tid,0); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - - buf5[0].len = 1; - buf5[0].p = HDmalloc( 1 * sizeof(int)); - ((int *)buf5[0].p)[0]=1; - buf5[1].len = 2; - buf5[1].p = HDmalloc( 2 * sizeof(int)); - ((int *)buf5[1].p)[0]=2; - ((int *)buf5[1].p)[1]=3; - - sid = H5Screate_simple(1, dims, NULL); - tid = H5Tvlen_create(H5T_NATIVE_INT); - did = H5Dcreate2(loc_id, "vlen", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf5); - HDassert(status >= 0); - status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf5); - HDassert(status >= 0); - status = H5Dclose(did); - status = H5Tclose(tid); - status = H5Sclose(sid); - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray); - write_dset(loc_id, 1, dims, "array", tid, buf6); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_INTEGER and H5T_FLOAT - *------------------------------------------------------------------------- - */ - write_dset(loc_id,1,dims,"integer",H5T_NATIVE_INT,buf7); - write_dset(loc_id,1,dims,"float",H5T_NATIVE_FLOAT,buf8); - - - /*------------------------------------------------------------------------- - * 2D - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, 2); - write_dset(loc_id,2,dims2,"string2D",tid,buf12); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - tid = H5Tcopy(H5T_STD_B8LE); - write_dset(loc_id,2,dims2,"bitfield2D",tid,buf22); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - tid = H5Tcreate(H5T_OPAQUE, 1); - status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */ - write_dset(loc_id,2,dims2,"opaque2D",tid,buf22); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t)); - H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR); - H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE); - write_dset(loc_id,2,dims2,"compound2D",tid,buf32); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_REFERENCE - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if(dset_name) - { - for(i = 0; i < 3; i++) { - for(j = 0; j < 2; j++) { - status=H5Rcreate(&buf42[i][j],fid,dset_name,H5R_OBJECT,(hid_t)-1); - } - } - write_dset(loc_id,2,dims2,"reference2D",H5T_STD_REF_OBJ,buf42); - } - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - tid = H5Tcreate(H5T_ENUM, sizeof(e_t)); - H5Tenum_insert(tid, "RED", (val = 0, &val)); - H5Tenum_insert(tid, "GREEN", (val = 1, &val)); - write_dset(loc_id,2,dims2,"enum2D",tid,0); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - n=0; - for(i = 0; i < 3; i++) - for(j = 0; j < 2; j++) { - int l; - - buf52[i][j].p = HDmalloc((size_t)(i + 1) * sizeof(int)); - buf52[i][j].len = (size_t)(i + 1); - for(l = 0; l < i + 1; l++) - ((int *)buf52[i][j].p)[l] = n++; - } - - sid = H5Screate_simple(2, dims2, NULL); - tid = H5Tvlen_create(H5T_NATIVE_INT); - did = H5Dcreate2(loc_id, "vlen2D", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf52); - HDassert(status >= 0); - status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf52); - HDassert(status >= 0); - status = H5Dclose(did); - status = H5Tclose(tid); - status = H5Sclose(sid); - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray); - write_dset(loc_id, 2, dims2, "array2D", tid, buf62); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_INTEGER, write a fill value - *------------------------------------------------------------------------- - */ - plist_id = H5Pcreate(H5P_DATASET_CREATE); - status = H5Pset_fill_value(plist_id, H5T_NATIVE_INT, &fillvalue); - sid = H5Screate_simple(2, dims2, NULL); - did = H5Dcreate2(loc_id, "integer2D", H5T_NATIVE_INT, sid, H5P_DEFAULT, plist_id, H5P_DEFAULT); - status = H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf72); - status = H5Pclose(plist_id); - status = H5Dclose(did); - status = H5Sclose(sid); - - /*------------------------------------------------------------------------- - * H5T_FLOAT - *------------------------------------------------------------------------- - */ - - write_dset(loc_id, 2, dims2, "float2D", H5T_NATIVE_FLOAT, buf82); - - - /*------------------------------------------------------------------------- - * 3D - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, 2); - write_dset(loc_id,3,dims3,"string3D",tid,buf13); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - - n=1; - for(i = 0; i < 4; i++) - for(j = 0; j < 3; j++) - for(k = 0; k < 2; k++) - buf23[i][j][k] = (char)n++; - tid = H5Tcopy(H5T_STD_B8LE); - write_dset(loc_id,3,dims3,"bitfield3D",tid,buf23); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - tid = H5Tcreate(H5T_OPAQUE, 1); - status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */ - write_dset(loc_id,3,dims3,"opaque3D",tid,buf23); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - - n=1; - for(i = 0; i < 4; i++) - for(j = 0; j < 3; j++) - for(k = 0; k < 2; k++) { - buf33[i][j][k].a = (char)n++; - buf33[i][j][k].b = n++; - } - tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t)); - H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR); - H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE); - write_dset(loc_id,3,dims3,"compound3D",tid,buf33); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_REFERENCE - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if(dset_name) - { - for(i = 0; i < 4; i++) { - for(j = 0; j < 3; j++) { - for(k = 0; k < 2; k++) - status=H5Rcreate(&buf43[i][j][k],fid,dset_name,H5R_OBJECT,(hid_t)-1); - } - } - write_dset(loc_id,3,dims3,"reference3D",H5T_STD_REF_OBJ,buf43); - } - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - tid = H5Tcreate(H5T_ENUM, sizeof(e_t)); - H5Tenum_insert(tid, "RED", (val = 0, &val)); - H5Tenum_insert(tid, "GREEN", (val = 1, &val)); - write_dset(loc_id,3,dims3,"enum3D",tid,0); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - n = 0; - for(i = 0; i < 4; i++) - for(j = 0; j < 3; j++) - for(k = 0; k < 2; k++) { - int l; - - buf53[i][j][k].p = HDmalloc(((size_t)i + 1) * sizeof(int)); - buf53[i][j][k].len = (size_t)(i + 1); - for(l = 0; l < i + 1; l++) - ((int *)buf53[i][j][k].p)[l] = n++; - } - - sid = H5Screate_simple(3, dims3, NULL); - tid = H5Tvlen_create(H5T_NATIVE_INT); - did = H5Dcreate2(loc_id, "vlen3D", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf53); - HDassert(status >= 0); - status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf53); - HDassert(status >= 0); - status = H5Dclose(did); - status = H5Tclose(tid); - status = H5Sclose(sid); - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - n=1; - for(i = 0; i < 24; i++) { - for(j = 0; j < (int)dimarray[0]; j++) { - buf63[i][j]=n++; - } - } - - tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray); - write_dset(loc_id, 3, dims3, "array3D", tid, buf63); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_INTEGER and H5T_FLOAT - *------------------------------------------------------------------------- - */ - n=1; f=1; - for(i = 0; i < 4; i++) { - for(j = 0; j < 3; j++) { - for(k = 0; k < 2; k++) { - buf73[i][j][k]=n++; - buf83[i][j][k]=f++; - } - } - } - write_dset(loc_id,3,dims3,"integer3D",H5T_NATIVE_INT,buf73); - write_dset(loc_id,3,dims3,"float3D",H5T_NATIVE_FLOAT,buf83); -} - - - - -/*------------------------------------------------------------------------- - * Function: gent_attr_all - * - * Purpose: generate all datatype attributes - * - * Return: void - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: May 19, 2003 - * - *------------------------------------------------------------------------- - */ - -static void gent_attr_all(void) -{ - hid_t fid; - hid_t did; - hid_t group_id; - hid_t group2_id; - hid_t root_id; - hid_t sid; - hsize_t dims[1] = {2}; - herr_t status; - - /* Create a file and a dataset */ - fid = H5Fcreate(FILE40, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* Create a 1D dataset */ - sid = H5Screate_simple(1,dims,NULL); - did = H5Dcreate2(fid, "dset", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Sclose(sid); - HDassert(status >= 0); - - /* Create groups */ - group_id = H5Gcreate2(fid, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - group2_id = H5Gcreate2(fid, "g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - root_id = H5Gopen2(fid, "/", H5P_DEFAULT); - - /*------------------------------------------------------------------------- - * write a series of attributes on the dataset, group - *------------------------------------------------------------------------- - */ - - write_attr_in(did,"dset",fid); - write_attr_in(group_id,NULL,(hid_t)0); - write_attr_in(root_id,NULL,(hid_t)0); - - /*------------------------------------------------------------------------- - * write a series of datasets on group 2 - *------------------------------------------------------------------------- - */ - - write_dset_in(group2_id,"/dset",fid); - - /* Close */ - status = H5Dclose(did); - HDassert(status >= 0); - status = H5Gclose(group_id); - HDassert(status >= 0); - status = H5Gclose(group2_id); - HDassert(status >= 0); - status = H5Gclose(root_id); - HDassert(status >= 0); - - /* Close file */ - status = H5Fclose(fid); - HDassert(status >= 0); -} - - -/*------------------------------------------------------------------------- - * Function: write_attr - * - * Purpose: utility function to write an attribute - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: May 19, 2003 - * - *------------------------------------------------------------------------- - */ - -static -int write_attr(hid_t loc_id, int rank, hsize_t *dims, const char *attr_name, - hid_t tid, void *buf) -{ - hid_t aid; - hid_t sid; - herr_t status; - - /* Create a buf space */ - sid = H5Screate_simple(rank, dims, NULL); - - /* Create the attribute */ - aid = H5Acreate2(loc_id, attr_name, tid, sid, H5P_DEFAULT, H5P_DEFAULT); - - /* Write the buf */ - if(buf) - status = H5Awrite(aid, tid, buf); - - /* Close */ - status = H5Aclose(aid); - status = H5Sclose(sid); - - return status; -} - -/*------------------------------------------------------------------------- - * Function: write_dset - * - * Purpose: utility function to create and write a dataset in LOC_ID - * - * Return: - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: May 27, 2003 - * - *------------------------------------------------------------------------- - */ - -static -int write_dset( hid_t loc_id, int rank, hsize_t *dims, const char *dset_name, - hid_t tid, void *buf ) -{ - hid_t did; - hid_t sid; - herr_t status; - - /* Create a buf space */ - sid = H5Screate_simple(rank, dims, NULL); - - /* Create a dataset */ - did = H5Dcreate2(loc_id, dset_name, tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write the buf */ - if(buf) - status = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - - /* Close */ - status = H5Dclose(did); - status = H5Sclose(sid); - - return status; -} - - -static void gent_compound_complex(void) -{ - /* Structure and array for compound types */ - typedef struct Array1Struct { - int a; - const char *b[F41_DIMb]; - char c[F41_ARRAY_DIMc]; - short d[F41_ARRAY_DIMd1][F41_ARRAY_DIMd2]; - float e; - double f[F41_ARRAY_DIMf]; - char g; - } Array1Struct; - Array1Struct Array1[F41_LENGTH]; - - /* Define the value of the string array */ - const char *quote [F41_DIMb] = { - "A fight is a contract that takes two people to honor.", - "A combative stance means that you've accepted the contract.", - "In which case, you deserve what you get.", - " -- Professor Cheng Man-ch'ing" - }; - - /* Define the value of the character array */ - char chararray [F41_ARRAY_DIMc] = {'H', 'e', 'l', 'l', 'o', '!'}; - - - hid_t Array1Structid; /* File datatype identifier */ - hid_t array_tid; /* Array datatype handle */ - hid_t array1_tid; /* Array datatype handle */ - hid_t array2_tid; /* Array datatype handle */ - hid_t array4_tid; /* Array datatype handle */ - hid_t datafile, dataset; /* Datafile/dataset handles */ - hid_t dataspace; /* Dataspace handle */ - herr_t status; /* Error checking variable */ - hsize_t dim[] = {F41_LENGTH}; /* Dataspace dimensions */ - hsize_t array_dimb[] = {F41_DIMb}; /* Array dimensions */ - hsize_t array_dimd[]={F41_ARRAY_DIMd1,F41_ARRAY_DIMd2}; /* Array dimensions */ - hsize_t array_dimf[]={F41_ARRAY_DIMf}; /* Array dimensions */ - hid_t str_array_id; - - int m, n, o; /* Array init loop vars */ - - /* Initialize the data in the arrays/datastructure */ - for(m = 0; m< F41_LENGTH; m++) { - Array1[m].a = m; - - for(n = 0; n < F41_DIMb; n++) - Array1[m].b[n] = quote[n]; - - for(n = 0; n < F41_ARRAY_DIMc; n++) - Array1[m].c[n] = chararray[n]; - - for(n = 0; n < F41_ARRAY_DIMd1; n++) - for(o = 0; o < F41_ARRAY_DIMd2; o++) - Array1[m].d[n][o] = (short)(m + n + o); - - Array1[m].e = (float)((float)m * 0.96F ); - - for(n = 0; n < F41_ARRAY_DIMf; n++) - Array1[m].f[n] = ((float)m * 1024.9637F ); - - Array1[m].g = 'm'; - } - - /* Create the dataspace */ - dataspace = H5Screate_simple(F41_RANK, dim, NULL); - HDassert(dataspace >= 0); - - /* Create the file */ - datafile = H5Fcreate(FILE41, H5F_ACC_TRUNC, H5P_DEFAULT, - H5P_DEFAULT); - HDassert(datafile >= 0); - - /* Copy the array data type for the string array */ - array_tid = H5Tcopy (H5T_C_S1); - HDassert(array_tid >= 0); - - /* Set the string array size to Variable */ - status = H5Tset_size (array_tid,H5T_VARIABLE); - HDassert(status >= 0); - - /* Create the array data type for the string array */ - str_array_id = H5Tarray_create2(array_tid, F41_ARRAY_RANK, array_dimb); - HDassert(str_array_id >= 0); - - /* Copy the array data type for the character array */ - array1_tid = H5Tcopy (H5T_C_S1); - HDassert(array1_tid >= 0); - - /* Set the character array size */ - status = H5Tset_size (array1_tid, F41_ARRAY_DIMc); - HDassert(status >= 0); - - /* Create the array data type for the character array */ - array2_tid = H5Tarray_create2(H5T_NATIVE_SHORT, F41_ARRAY_RANKd, array_dimd); - HDassert(array2_tid >= 0); - - /* Create the array data type for the character array */ - array4_tid = H5Tarray_create2(H5T_NATIVE_DOUBLE, F41_ARRAY_RANK, array_dimf); - HDassert(array4_tid >= 0); - - /* Create the memory data type */ - Array1Structid = H5Tcreate (H5T_COMPOUND, sizeof(Array1Struct)); - HDassert(Array1Structid >= 0); - - /* Insert the arrays and variables into the structure */ - status = H5Tinsert(Array1Structid, "a_name", - HOFFSET(Array1Struct, a), H5T_NATIVE_INT); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, "b_name", - HOFFSET(Array1Struct, b), str_array_id); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, "c_name", - HOFFSET(Array1Struct, c), array1_tid); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, "d_name", - HOFFSET(Array1Struct, d), array2_tid); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, "e_name", - HOFFSET(Array1Struct, e), H5T_NATIVE_FLOAT); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, "f_name", - HOFFSET(Array1Struct, f), array4_tid); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, "g_name", - HOFFSET(Array1Struct, g), H5T_NATIVE_CHAR); - HDassert(status >= 0); - - /* Create the dataset */ - dataset = H5Dcreate2(datafile, F41_DATASETNAME, Array1Structid, - dataspace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write data to the dataset */ - status = H5Dwrite(dataset, Array1Structid, H5S_ALL, H5S_ALL, - H5P_DEFAULT, Array1); - HDassert(status >= 0); - - /* Release resources */ - status = H5Tclose(Array1Structid); - HDassert(status >= 0); - - status = H5Tclose(array_tid); - HDassert(status >= 0); - - status = H5Tclose(array1_tid); - HDassert(status >= 0); - - status = H5Tclose(array2_tid); - HDassert(status >= 0); - - status = H5Tclose(array4_tid); - HDassert(status >= 0); - - status = H5Tclose(str_array_id); - HDassert(status >= 0); - - status = H5Sclose(dataspace); - HDassert(status >= 0); - - status = H5Dclose(dataset); - HDassert(status >= 0); - - status = H5Fclose(datafile); - HDassert(status >= 0); -} - - -static void gent_named_dtype_attr(void) -{ - hid_t fid; - hid_t did; - hid_t sid; - hid_t tid; - hid_t aid; - hid_t gid; - int data=8; - herr_t ret; - - /* Create a file */ - fid=H5Fcreate(FILE42, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - HDassert(fid>0); - - /*------------------------------------------------------------------------- - * datatype - *------------------------------------------------------------------------- - */ - - /* Create a datatype to commit and use */ - tid=H5Tcopy(H5T_NATIVE_INT); - HDassert(tid>0); - - /* Commit datatype to file */ - ret = H5Tcommit2(fid, F42_TYPENAME, tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - HDassert(ret >= 0); - - /* Create a hard link to the datatype */ - ret = H5Lcreate_hard(fid, F42_TYPENAME, fid, F42_LINKNAME, H5P_DEFAULT, H5P_DEFAULT); - HDassert(ret >= 0); - - /* Create a scalar dataspace used for all objects */ - sid = H5Screate(H5S_SCALAR); - HDassert(sid > 0); - - /* Create attribute on commited datatype */ - aid = H5Acreate2(tid, F42_ATTRNAME, H5T_STD_I32LE, sid, H5P_DEFAULT, H5P_DEFAULT); - HDassert(aid > 0); - - /* Write data into the attribute */ - ret = H5Awrite(aid, H5T_NATIVE_INT, &data); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * dataset - *------------------------------------------------------------------------- - */ - - /* Create dataset */ - did = H5Dcreate2(fid, F42_DSETNAME, tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - HDassert(did > 0); - - /* Create attribute on dataset */ - aid = H5Acreate2(did, F42_ATTRNAME, tid, sid, H5P_DEFAULT, H5P_DEFAULT); - HDassert(aid > 0); - - /* Write data into the attribute */ - ret = H5Awrite(aid, H5T_NATIVE_INT, &data); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * group - *------------------------------------------------------------------------- - */ - - /* Create a group */ - gid = H5Gcreate2(fid, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - HDassert(gid > 0); - - /* Create attribute on group */ - aid = H5Acreate2(gid, F42_ATTRNAME, tid, sid, H5P_DEFAULT, H5P_DEFAULT); - HDassert(aid > 0); - - /* Write data into the attribute */ - ret = H5Awrite(aid, H5T_NATIVE_INT, &data); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * close - *------------------------------------------------------------------------- - */ - - /* Close attribute */ - ret = H5Aclose(aid); - HDassert(ret >= 0); - - /* Close dataset */ - ret = H5Dclose(did); - HDassert(ret >= 0); - - /* Close dataspace */ - ret = H5Sclose(sid); - HDassert(ret >= 0); - - /* Close datatype */ - ret = H5Tclose(tid); - HDassert(ret >= 0); - - /* Close file */ - ret = H5Fclose(fid); - HDassert(ret >= 0); -} - - -/*------------------------------------------------------------------------- - * Function: gent_null_space - * - * Purpose: generates dataset and attribute of null dataspace - *------------------------------------------------------------------------- - */ -static void gent_null_space(void) -{ - hid_t fid, root, dataset, space, attr; - int dset_buf = 10; - int point = 4; - - fid = H5Fcreate(FILE45, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - root = H5Gopen2(fid, "/", H5P_DEFAULT); - - /* null space */ - space = H5Screate(H5S_NULL); - - /* dataset */ - dataset = H5Dcreate2(fid, "dset", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - /* nothing should be written */ - H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &dset_buf); - - /* attribute */ - attr = H5Acreate2(root, "attr", H5T_NATIVE_UINT, space, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, H5T_NATIVE_INT, &point); /* Nothing can be written */ - - H5Dclose(dataset); - H5Aclose(attr); - H5Gclose(root); - H5Sclose(space); - H5Fclose(fid); -} - -/*------------------------------------------------------------------------- - * Function: gent_zero_dim_size - * - * Purpose: generates dataset and attribute with dataspace of 0 dimension size - *------------------------------------------------------------------------- - */ -static void gent_zero_dim_size(void) -{ - hid_t fid, root, dataset, space, attr; - hsize_t dims1[] = {SPACE3_DIM1, SPACE3_DIM2}; - int dset_buf = 10; - int point = 4; - - fid = H5Fcreate(FILE67, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - root = H5Gopen2(fid, "/", H5P_DEFAULT); - - /* dataspace of 0 dimension size */ - space = H5Screate_simple(SPACE3_RANK, dims1, NULL); - - /* dataset */ - dataset = H5Dcreate2(fid, "dset of 0 dimension size", H5T_STD_I32BE, space, H5P_DEFAULT, - H5P_DEFAULT, H5P_DEFAULT); - /* nothing should be written */ - H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &dset_buf); - - /* attribute */ - attr = H5Acreate2(root, "attr of 0 dimension size", H5T_NATIVE_UINT, space, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, H5T_NATIVE_INT, &point); /* Nothing can be written */ - - H5Dclose(dataset); - H5Aclose(attr); - H5Gclose(root); - H5Sclose(space); - H5Fclose(fid); -} - -/*------------------------------------------------------------------------- - * Function: make_dset - * - * Purpose: utility function to create and write a dataset in LOC_ID - * - *------------------------------------------------------------------------- - */ -static -int make_dset(hid_t loc_id, - const char *name, - hid_t sid, - hid_t tid, - hid_t dcpl, - void *buf) -{ - hid_t dsid; - - /* create the dataset */ - if((dsid = H5Dcreate2(loc_id, name, tid, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - return -1; - - /* write */ - if(H5Dwrite(dsid, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto out; - - /* close */ - if(H5Dclose(dsid) < 0) - return -1; - - return 0; - - out: - H5E_BEGIN_TRY { - H5Dclose(dsid); - } H5E_END_TRY; - return -1; -} - - - -/*------------------------------------------------------------------------- - * Function: make_external - * - * Purpose: make a dataset with external storage - * - *------------------------------------------------------------------------- - */ -static void -make_external(hid_t fid) -{ - hid_t dcpl; /*dataset creation property list */ - hid_t sid; /*dataspace ID */ - hid_t dsid; /*dataset ID */ - hsize_t cur_size[1]; /*data space current size */ - hsize_t max_size[1]; /*data space maximum size */ - hsize_t size; /*bytes reserved for data in the external file*/ - int ret; - - cur_size[0] = max_size[0] = 100; - size = (max_size[0]*sizeof(int)/2); - - dcpl = H5Pcreate(H5P_DATASET_CREATE); - ret = H5Pset_external(dcpl, "ext1.bin", (off_t)0, size); - HDassert(ret >= 0); - - ret = H5Pset_external(dcpl, "ext2.bin", (off_t)0, size); - HDassert(ret >= 0); - - sid = H5Screate_simple(1, cur_size, max_size); - HDassert(ret >= 0); - - dsid = H5Dcreate2(fid, "external", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT); - HDassert(ret >= 0); - - H5Dclose(dsid); - HDassert(ret >= 0); - - H5Sclose(sid); - HDassert(ret >= 0); - - H5Pclose(dcpl); - HDassert(ret >= 0); -} - -/*------------------------------------------------------------------------- - * Function: gent_filters - * - * Purpose: make several datasets with filters, external dataset - * - *------------------------------------------------------------------------- - */ -static void gent_filters(void) -{ - hid_t fid; /* file id */ - hid_t dcpl; /* dataset creation property list */ - hid_t sid; /* dataspace ID */ - hid_t tid; /* datatype ID */ -#ifdef H5_HAVE_FILTER_SZIP - unsigned szip_options_mask=H5_SZIP_ALLOW_K13_OPTION_MASK|H5_SZIP_NN_OPTION_MASK; - unsigned szip_pixels_per_block=4; -#endif /* H5_HAVE_FILTER_SZIP */ - hsize_t dims1[RANK] = {DIM1,DIM2}; - hsize_t chunk_dims[RANK] = {CDIM1,CDIM2}; - int buf1[DIM1][DIM2]; - int i, j, n, ret; - - for(i=n=0; i=0); - - /* create a space */ - sid = H5Screate_simple(SPACE2_RANK, dims1, NULL); - - /* create a dataset creation property list; the same DCPL is used for all dsets */ - dcpl = H5Pcreate(H5P_DATASET_CREATE); - - /*------------------------------------------------------------------------- - * create a compact and contiguous storage layout dataset - * add a comment to the datasets - *------------------------------------------------------------------------- - */ - ret = H5Pset_layout(dcpl, H5D_COMPACT); - HDassert(ret >= 0); - - ret=make_dset(fid,"compact",sid,H5T_NATIVE_INT,dcpl,buf1); - HDassert(ret >= 0); - - ret = H5Oset_comment_by_name(fid, "compact", "This is a dataset with compact storage", H5P_DEFAULT); - HDassert(ret >= 0); - - ret = H5Pset_layout(dcpl, H5D_CONTIGUOUS); - HDassert(ret >= 0); - - ret=make_dset(fid,"contiguous",sid,H5T_NATIVE_INT,dcpl,buf1); - HDassert(ret >= 0); - - ret = H5Oset_comment_by_name(fid, "contiguous", "This is a dataset with contiguous storage", H5P_DEFAULT); - HDassert(ret >= 0); - - ret = H5Pset_layout(dcpl, H5D_CHUNKED); - HDassert(ret >= 0); - - ret = H5Pset_chunk(dcpl, SPACE2_RANK, chunk_dims); - HDassert(ret >= 0); - - ret=make_dset(fid,"chunked",sid,H5T_NATIVE_INT,dcpl,buf1); - HDassert(ret >= 0); - - ret = H5Oset_comment_by_name(fid, "chunked", "This is a dataset with chunked storage", H5P_DEFAULT); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * make several dataset with filters - *------------------------------------------------------------------------- - */ - - /* set up chunk */ - ret = H5Pset_chunk(dcpl, SPACE2_RANK, chunk_dims); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * SZIP - *------------------------------------------------------------------------- - */ -#ifdef H5_HAVE_FILTER_SZIP - if(h5tools_can_encode(H5Z_FILTER_SZIP) == 1) { - /* remove the filters from the dcpl */ - ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL); - HDassert(ret >= 0); - - /* set szip data */ - ret = H5Pset_szip (dcpl,szip_options_mask,szip_pixels_per_block); - HDassert(ret >= 0); - - ret=make_dset(fid,"szip",sid,H5T_NATIVE_INT,dcpl,buf1); - HDassert(ret >= 0); - } -#endif /* H5_HAVE_FILTER_SZIP */ - - /*------------------------------------------------------------------------- - * GZIP - *------------------------------------------------------------------------- - */ -#if defined (H5_HAVE_FILTER_DEFLATE) - /* remove the filters from the dcpl */ - ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL); - HDassert(ret >= 0); - - /* set deflate data */ - ret = H5Pset_deflate(dcpl, 9); - HDassert(ret >= 0); - - ret=make_dset(fid,"deflate",sid,H5T_NATIVE_INT,dcpl,buf1); - HDassert(ret >= 0); -#endif - - - /*------------------------------------------------------------------------- - * shuffle - *------------------------------------------------------------------------- - */ - - /* remove the filters from the dcpl */ - ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL); - HDassert(ret >= 0); - - /* set the shuffle filter */ - ret = H5Pset_shuffle(dcpl); - HDassert(ret >= 0); - - ret=make_dset(fid,"shuffle",sid,H5T_NATIVE_INT,dcpl,buf1); - HDassert(ret >= 0); - - - /*------------------------------------------------------------------------- - * checksum - *------------------------------------------------------------------------- - */ - - /* remove the filters from the dcpl */ - ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL); - HDassert(ret >= 0); - - /* set the checksum filter */ - ret = H5Pset_fletcher32(dcpl); - HDassert(ret >= 0); - - ret=make_dset(fid,"fletcher32",sid,H5T_NATIVE_INT,dcpl,buf1); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * nbit - *------------------------------------------------------------------------- - */ - - /* remove the filters from the dcpl */ - ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL); - HDassert(ret >= 0); - - /* set the checksum filter */ - ret = H5Pset_nbit(dcpl); - HDassert(ret >= 0); - - tid=H5Tcopy(H5T_NATIVE_INT); - H5Tset_precision(tid,H5Tget_size(tid)-1); - ret=make_dset(fid,"nbit",sid,tid,dcpl,buf1); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * scaleoffset - *------------------------------------------------------------------------- - */ - - /* remove the filters from the dcpl */ - ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL); - HDassert(ret >= 0); - - /* set the scaleoffset filter */ - ret = H5Pset_scaleoffset(dcpl,H5Z_SO_INT,(int)H5Tget_size(H5T_NATIVE_INT)); - HDassert(ret >= 0); - - ret=make_dset(fid,"scaleoffset",sid,H5T_NATIVE_INT,dcpl,buf1); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * all filters - *------------------------------------------------------------------------- - */ - /* remove the filters from the dcpl */ - ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL); - HDassert(ret >= 0); - - /* set the shuffle filter */ - ret = H5Pset_shuffle(dcpl); - HDassert(ret >= 0); - -#ifdef H5_HAVE_FILTER_SZIP - if(h5tools_can_encode(H5Z_FILTER_SZIP) == 1) { - szip_options_mask=H5_SZIP_CHIP_OPTION_MASK | H5_SZIP_EC_OPTION_MASK; - /* set szip data */ - ret = H5Pset_szip (dcpl,szip_options_mask,szip_pixels_per_block); - HDassert(ret >= 0); - } -#endif /* H5_HAVE_FILTER_SZIP */ - -#if defined (H5_HAVE_FILTER_DEFLATE) - /* set deflate data */ - ret = H5Pset_deflate(dcpl, 5); - HDassert(ret >= 0); -#endif - - /* set the checksum filter */ - ret = H5Pset_fletcher32(dcpl); - HDassert(ret >= 0); - - /* set the nbit filter */ - ret = H5Pset_nbit(dcpl); - HDassert(ret >= 0); - - ret=make_dset(fid,"all",sid,H5T_NATIVE_INT,dcpl,buf1); - HDassert(ret >= 0); - - - /*------------------------------------------------------------------------- - * user defined filter - *------------------------------------------------------------------------- - */ - /* remove the filters from the dcpl */ - ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL); - HDassert(ret >= 0); - - ret = H5Zregister (H5Z_MYFILTER); - HDassert(ret >= 0); - - ret = H5Pset_filter (dcpl, MYFILTER_ID, 0, 0, NULL); - HDassert(ret >= 0); - - ret=make_dset(fid,"myfilter",sid,H5T_NATIVE_INT,dcpl,buf1); - HDassert(ret >= 0); - - /* remove the filters from the dcpl */ - ret = H5Premove_filter(dcpl,H5Z_FILTER_ALL); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * make an external dataset - *------------------------------------------------------------------------- - */ - make_external(fid); - - /*------------------------------------------------------------------------- - * H5D_ALLOC_TIME_EARLY - *------------------------------------------------------------------------- - */ - ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_EARLY); - HDassert(ret >= 0); - ret=make_dset(fid,"alloc_time_early",sid,H5T_NATIVE_INT,dcpl,buf1); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * H5D_ALLOC_TIME_INCR - *------------------------------------------------------------------------- - */ - ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_INCR); - HDassert(ret >= 0); - ret=make_dset(fid,"alloc_time_incr",sid,H5T_NATIVE_INT,dcpl,buf1); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * H5D_ALLOC_TIME_LATE - *------------------------------------------------------------------------- - */ - ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_LATE); - HDassert(ret >= 0); - ret=make_dset(fid,"alloc_time_late",sid,H5T_NATIVE_INT,dcpl,buf1); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * commit a H5G_TYPE type with a comment - *------------------------------------------------------------------------- - */ - tid = H5Tcopy(H5T_STD_B8LE); - ret = H5Tcommit2(fid, "mytype", tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - HDassert(ret >= 0); - - ret = H5Oset_comment_by_name(fid, "mytype", "This is a commited datatype", H5P_DEFAULT); - HDassert(ret >= 0); - - ret = H5Tclose(tid); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * close - *------------------------------------------------------------------------- - */ - ret = H5Sclose(sid); - HDassert(ret >= 0); - - ret = H5Pclose(dcpl); - HDassert(ret >= 0); - - ret = H5Fclose(fid); - HDassert(ret >= 0); -} - - -/*------------------------------------------------------------------------- - * Function: myfilter - * - * Purpose: filter operation callback function; the filter does nothing - * - *------------------------------------------------------------------------- - */ -static size_t -myfilter(unsigned int H5_ATTR_UNUSED flags, size_t H5_ATTR_UNUSED cd_nelmts, - const unsigned int H5_ATTR_UNUSED *cd_values, size_t nbytes, - size_t H5_ATTR_UNUSED *buf_size, void H5_ATTR_UNUSED **buf) -{ - return nbytes; -} - - -/*------------------------------------------------------------------------- - * Function: set_local_myfilter - * - * Purpose: filter operation "set local" callback - * - *------------------------------------------------------------------------- - */ - -static herr_t -set_local_myfilter(hid_t dcpl_id, hid_t H5_ATTR_UNUSED tid, hid_t H5_ATTR_UNUSED sid) -{ - unsigned flags; /* Filter flags */ - size_t cd_nelmts = 0; /* Number of filter parameters */ - unsigned cd_values[2] = {5, 6}; /* Filter parameters */ - - /* Get the filter's current parameters */ - if(H5Pget_filter_by_id2(dcpl_id, MYFILTER_ID, &flags, &cd_nelmts, cd_values, 0, NULL, NULL) < 0) - return(FAIL); - - cd_nelmts = 2; - - /* Modify the filter's parameters for this dataset */ - if(H5Pmodify_filter(dcpl_id, MYFILTER_ID, flags, cd_nelmts, cd_values) < 0) - return(FAIL); - - return(SUCCEED); -} - -/*------------------------------------------------------------------------- - * Function: gent_fcontents - * - * Purpose: generate several files to list its contents - * - *------------------------------------------------------------------------- - */ -static void gent_fcontents(void) -{ - hid_t fid; /* file id */ - hid_t gid1; /* group ID */ - hid_t tid; /* datatype ID */ - hsize_t dims[1]={4}; - int buf[4]={1,2,3,4}; - int ret; - - - /* create a file */ - fid = H5Fcreate(FILE46, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - HDassert(fid>=0); - - - write_dset(fid,1,dims,"dset",H5T_NATIVE_INT,buf); - - - /*------------------------------------------------------------------------- - * links - *------------------------------------------------------------------------- - */ - - - /* hard link to "dset" */ - gid1 = H5Gcreate2(fid, "/g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Lcreate_hard(gid1, "/dset", H5L_SAME_LOC, "dset1", H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(gid1); - - - /* hard link to "dset" */ - gid1 = H5Gcreate2(fid, "/g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Lcreate_hard(gid1, "/dset", H5L_SAME_LOC, "dset2", H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(gid1); - - - /* hard link to "g2" */ - gid1 = H5Gopen2(fid, "/g1", H5P_DEFAULT); - H5Lcreate_hard(gid1, "/g2", H5L_SAME_LOC, "g1.1", H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(gid1); - - - /* hard link to "dset" */ - ret = H5Lcreate_hard(fid, "/dset", H5L_SAME_LOC, "dset3", H5P_DEFAULT, H5P_DEFAULT); - HDassert(ret >= 0); - - - /* hard link to "dset" */ - ret = H5Lcreate_hard(fid, "/dset", H5L_SAME_LOC, "dset4", H5P_DEFAULT, H5P_DEFAULT); - HDassert(ret >= 0); - - - /* soft link to itself */ - ret = H5Lcreate_soft("mylink", fid, "mylink", H5P_DEFAULT, H5P_DEFAULT); - HDassert(ret >= 0); - - - /* soft link to "dset" */ - ret = H5Lcreate_soft("/dset", fid, "softlink", H5P_DEFAULT, H5P_DEFAULT); - HDassert(ret >= 0); - - /* dangling external link */ - ret = H5Lcreate_external("fname", "oname", fid, "extlink", H5P_DEFAULT, H5P_DEFAULT); - HDassert(ret >= 0); - - /* dangling udlink */ - ret = H5Lcreate_ud(fid, "udlink", (H5L_type_t)MY_LINKCLASS, NULL, 0, H5P_DEFAULT, H5P_DEFAULT); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * datatypes - *------------------------------------------------------------------------- - */ - tid = H5Tcopy(H5T_NATIVE_INT); - ret = H5Tcommit2(fid, "mytype", tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - HDassert(ret >= 0); - ret = H5Tclose(tid); - HDassert(ret >= 0); - - - /* no name datatype */ - tid = H5Tcopy(H5T_NATIVE_INT); - ret = H5Tcommit2(fid, "mytype2", tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - HDassert(ret >= 0); - write_dset(fid, 1, dims, "dsetmytype2", tid, buf); - ret = H5Ldelete(fid, "mytype2", H5P_DEFAULT); - HDassert(ret >= 0); - ret = H5Tclose(tid); - HDassert(ret >= 0); - - - /*------------------------------------------------------------------------- - * close - *------------------------------------------------------------------------- - */ - - - ret = H5Fclose(fid); - HDassert(ret >= 0); - - - /* create a file for the bootblock test */ - fid = H5Fcreate(FILE47, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - HDassert(fid>=0); - - - ret = H5Fclose(fid); - HDassert(ret >= 0); -} - -/*------------------------------------------------------------------------- - * Function: gent_fvalues - * - * Purpose: generate a file for the fill values test - * - *------------------------------------------------------------------------- - */ -static void gent_fvalues(void) -{ - /* compound datatype */ - typedef struct c_t - { - char a; - double b; - } c_t; - - - hid_t fid; /* file id */ - hid_t dcpl; /* dataset creation property list */ - hid_t sid; /* dataspace ID */ - hid_t tid; /* datatype ID */ - hid_t did; /* datasetID */ - hsize_t dims[1]={2}; - int buf[2]={1,2}; /* integer */ - int fillval1=-99; /* integer fill value */ - c_t buf2[2]={{1,2},{3,4}}; /* compound */ - c_t fillval2[1]={{1,2}}; /* compound fill value */ - hvl_t buf3[2]; /* vlen */ - hvl_t fillval3; /* vlen fill value */ - hsize_t dimarray[1]={3}; /* array dimension */ - int buf4[2][3]= {{1,2,3},{4,5,6}}; /* array */ - int ret; - - /* create a file */ - fid = H5Fcreate(FILE48, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - HDassert(fid>=0); - - /* create a space */ - sid = H5Screate_simple(1, dims, NULL); - - /* create a dataset creation property list */ - dcpl = H5Pcreate(H5P_DATASET_CREATE); - - /*------------------------------------------------------------------------- - * make datasets with fill value combinations - * H5D_FILL_TIME_IFSET - *------------------------------------------------------------------------- - */ - ret = H5Pset_fill_time(dcpl, H5D_FILL_TIME_IFSET); - HDassert(ret >= 0); - - ret = H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillval1); - HDassert(ret >= 0); - - ret=make_dset(fid,"fill_time_ifset",sid,H5T_NATIVE_INT,dcpl,buf); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * H5D_FILL_TIME_NEVER - *------------------------------------------------------------------------- - */ - ret = H5Pset_fill_time(dcpl, H5D_FILL_TIME_NEVER); - HDassert(ret >= 0); - - ret = H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillval1); - HDassert(ret >= 0); - - ret=make_dset(fid,"fill_time_never",sid,H5T_NATIVE_INT,dcpl,buf); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * H5D_FILL_TIME_ALLOC - *------------------------------------------------------------------------- - */ - ret = H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC); - HDassert(ret >= 0); - - ret = H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillval1); - HDassert(ret >= 0); - - ret=make_dset(fid,"fill_time_alloc",sid,H5T_NATIVE_INT,dcpl,buf); - HDassert(ret >= 0); - - ret = H5Pclose(dcpl); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * dataset with no fill value - *------------------------------------------------------------------------- - */ - write_dset(fid,1,dims,"no_fill",H5T_NATIVE_INT,buf); - - /*------------------------------------------------------------------------- - * dataset with a H5T_COMPOUND fill value - *------------------------------------------------------------------------- - */ - dcpl = H5Pcreate(H5P_DATASET_CREATE); - tid = H5Tcreate (H5T_COMPOUND, sizeof(c_t)); - H5Tinsert(tid, "a", HOFFSET(c_t, a), H5T_NATIVE_CHAR); - H5Tinsert(tid, "b", HOFFSET(c_t, b), H5T_NATIVE_DOUBLE); - ret = H5Pset_fill_value(dcpl, tid, &fillval2); - HDassert(ret >= 0); - ret=make_dset(fid,"fill_compound",sid,tid,dcpl,buf2); - HDassert(ret >= 0); - ret = H5Tclose(tid); - HDassert(ret >= 0); - ret = H5Pclose(dcpl); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * dataset with a H5T_VLEN fill value - *------------------------------------------------------------------------- - */ - buf3[0].len = 1; - buf3[0].p = HDmalloc( 1 * sizeof(int)); - ((int *)buf3[0].p)[0]=1; - buf3[1].len = 2; - buf3[1].p = HDmalloc(2 * sizeof(int)); - ((int *)buf3[1].p)[0] = 2; - ((int *)buf3[1].p)[1] = 3; - - tid = H5Tvlen_create(H5T_NATIVE_INT); - dcpl = H5Pcreate(H5P_DATASET_CREATE); - - fillval3.p=NULL; fillval3.len=0; - ret = H5Pset_fill_value(dcpl, tid, &fillval3); - HDassert(ret >= 0); - - did = H5Dcreate2(fid, "fill_vlen", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - ret = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf3); - HDassert(ret >= 0); - ret = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf3); - HDassert(ret >= 0); - ret = H5Dclose(did); - ret = H5Tclose(tid); - ret = H5Pclose(dcpl); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * dataset with a H5T_ARRAY fill value - *------------------------------------------------------------------------- - */ - tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray); - write_dset(fid, 1, dims, "fill_array", tid, buf4); - ret = H5Tclose(tid); - - - /*------------------------------------------------------------------------- - * close - *------------------------------------------------------------------------- - */ - ret = H5Sclose(sid); - HDassert(ret >= 0); - ret = H5Fclose(fid); - HDassert(ret >= 0); -} - - -/*------------------------------------------------------------------------- - * Function: gent_string - * - * Purpose: make several datasets for the string with escape/not escape test - * - *------------------------------------------------------------------------- - */ -static void gent_string(void) -{ - /* compound datatype */ - typedef struct c_t - { - int a; - char str[255]; - } c_t; - - hid_t fid; /* file id */ - hid_t sid; /* dataspace ID */ - hid_t tid; /* datatype ID */ - hid_t str_tid; /* datatype ID */ - hid_t did; /* dataset ID */ - char buf1[]={"quote \" backspace\b form feed\f new line\n tab\t new line\n carriage return\r"}; - const char *buf2[SPACE1_DIM1]= { - "Four score and seven\n years ago our forefathers brought forth on this continent a new nation,", - "conceived in liberty\n and dedicated to the proposition that all men are created equal.", - "Now we are engaged\n in a great civil war,", - "testing whether that\n nation or any nation so conceived and so dedicated can long endure." - }; - c_t buf3 = {24, "Four score and seven\n years ago our forefathers brought forth on this continent a new nation"}; - char buf4[] = {"Four score and seven\n years ago our forefathers brought forth on this continent a new nation"}; - hsize_t dims1[] = {1}; - hsize_t dims2[] = {SPACE1_DIM1}; - hsize_t dims4[1]; - int ret; - - dims4[0] = sizeof(buf4); - - /* create a file */ - fid = H5Fcreate(FILE49, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - HDassert(fid>=0); - - /*------------------------------------------------------------------------- - * str1 - *------------------------------------------------------------------------- - */ - - tid=H5Tcopy(H5T_C_S1); - ret = H5Tset_size(tid, sizeof(buf1)); - HDassert(ret >= 0); - write_dset(fid,1,dims1,"str1",tid,buf1); - HDassert(ret >= 0); - ret = H5Tclose(tid); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * str2 - *------------------------------------------------------------------------- - */ - sid = H5Screate_simple(SPACE1_RANK, dims2, NULL); - tid = H5Tcopy(H5T_C_S1); - ret = H5Tset_size(tid, H5T_VARIABLE); - HDassert(ret >= 0); - did = H5Dcreate2(fid, "str2", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - ret = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf2); - HDassert(ret >= 0); - ret = H5Tclose(tid); - HDassert(ret >= 0); - ret = H5Dclose(did); - HDassert(ret >= 0); - ret = H5Sclose(sid); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * str3 - *------------------------------------------------------------------------- - */ - sid = H5Screate_simple(SPACE1_RANK, dims1, NULL); - tid = H5Tcreate (H5T_COMPOUND, sizeof(c_t)); - str_tid = H5Tcopy( H5T_C_S1 ); - H5Tset_size( str_tid, 255 ); - H5Tinsert(tid, "a", HOFFSET(c_t, a), H5T_NATIVE_INT); - H5Tinsert(tid, "str", HOFFSET(c_t, str), str_tid ); - ret=make_dset(fid,"str3",sid,tid,H5P_DEFAULT,&buf3); - HDassert(ret >= 0); - ret = H5Tclose(tid); - HDassert(ret >= 0); - ret = H5Tclose(str_tid); - HDassert(ret >= 0); - ret = H5Sclose(sid); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * str4 - *------------------------------------------------------------------------- - */ - sid = H5Screate_simple(SPACE1_RANK, dims4, NULL); - ret=make_dset(fid,"str4",sid,H5T_NATIVE_CHAR,H5P_DEFAULT,buf4); - ret = H5Sclose(sid); - HDassert(ret >= 0); - - /*------------------------------------------------------------------------- - * close - *------------------------------------------------------------------------- - */ - ret = H5Fclose(fid); - HDassert(ret >= 0); -} - - -/*------------------------------------------------------------------------- - * Function: gent_aindices - * - * Purpose: make several datasets for the array indices and subsetting tests - * - *------------------------------------------------------------------------- - */ -static void gent_aindices(void) -{ - hid_t fid; /* file id */ - hid_t gid[6]; /* group ids */ - hsize_t dims1[1] = {100}; - hsize_t dims2[2] = {10,10}; - hsize_t dims3[3] = {2,10,10}; - hsize_t dims4[4] = {2,2,10,10}; - int buf1[100]; - int buf2[10][10]; - int buf3[2][10][10]; - int buf4[2][2][10][10]; - int i, j, k, l, n, ret; - - for(i = n = 0; i < 100; i++) - buf1[i] = n++; - - for(i = n = 0; i < 10; i++) - for(j = 0; j < 10; j++) - buf2[i][j] = n++; - for(i = n = 0; i < 2; i++) - for(j = 0; j < 10; j++) - for(k = 0; k < 10; k++) - buf3[i][j][k] = n++; - for(i = n = 0; i < 2; i++) - for(j = 0; j < 2; j++) - for(k = 0; k < 10; k++) - for(l = 0; l < 10; l++) - buf4[i][j][k][l] = n++; - - /* create a file */ - fid = H5Fcreate(FILE50, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - HDassert(fid>=0); - - /*------------------------------------------------------------------------- - * root datasets - *------------------------------------------------------------------------- - */ - write_dset(fid,1,dims1,"1d",H5T_NATIVE_INT,buf1); - write_dset(fid,2,dims2,"2d",H5T_NATIVE_INT,buf2); - write_dset(fid,3,dims3,"3d",H5T_NATIVE_INT,buf3); - write_dset(fid,4,dims4,"4d",H5T_NATIVE_INT,buf4); - - /*------------------------------------------------------------------------- - * test with group indentation - *------------------------------------------------------------------------- - */ - gid[0] = H5Gcreate2(fid, "/g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - gid[1] = H5Gcreate2(fid, "g1/g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - gid[2] = H5Gcreate2(fid, "g1/g2/g3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - gid[3] = H5Gcreate2(fid, "g1/g2/g3/g4", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - gid[4] = H5Gcreate2(fid, "g1/g2/g3/g4/g5", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - gid[5] = H5Gcreate2(fid, "g1/g2/g3/g4/g5/g6", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - write_dset(gid[5],1,dims1,"1d",H5T_NATIVE_INT,buf1); - write_dset(gid[5],2,dims2,"2d",H5T_NATIVE_INT,buf2); - write_dset(gid[5],3,dims3,"3d",H5T_NATIVE_INT,buf3); - write_dset(gid[5],4,dims4,"4d",H5T_NATIVE_INT,buf4); - for(i = 0; i < 6; i++) - H5Gclose(gid[i]); - - /*------------------------------------------------------------------------- - * close - *------------------------------------------------------------------------- - */ - ret = H5Fclose(fid); - HDassert(ret >= 0); - -} - - -/*------------------------------------------------------------------------- - * Function: gent_longlinks - * - * Purpose: make file with very long names for objects - * - *------------------------------------------------------------------------- - */ -static void gent_longlinks(void) -{ - hid_t fid = (-1); /* File ID */ - hid_t gid = (-1); /* Group ID */ - hid_t gid2 = (-1); /* Datatype ID */ - char *objname = NULL; /* Name of object [Long] */ - size_t u; /* Local index variable */ - - /* Create files */ - fid = H5Fcreate(FILE51, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - HDassert(fid >= 0); - - /* Create group with short name in file (used as target for hard links) */ - gid = H5Gcreate2(fid, "grp1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - HDassert(gid >= 0); - - /* Construct very long file name */ - objname = (char*) HDmalloc((size_t)(F51_MAX_NAME_LEN + 1)); - HDassert(objname); - for(u = 0; u < F51_MAX_NAME_LEN; u++) - objname[u] = 'a'; - objname[F51_MAX_NAME_LEN] = '\0'; - - /* Create hard link to existing object */ - HDassert(H5Lcreate_hard(fid, "grp1", fid, objname, H5P_DEFAULT, H5P_DEFAULT) >= 0); - - /* Create soft link to existing object */ - objname[0] = 'b'; - HDassert(H5Lcreate_soft("grp1", fid, objname, H5P_DEFAULT, H5P_DEFAULT) >= 0); - - /* Create group with long name in existing group */ - gid2 = H5Gcreate2(gid, objname, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - HDassert(gid2 >= 0); - - /* Close objects */ - HDassert(H5Gclose(gid2) >= 0); - HDassert(H5Gclose(gid) >= 0); - HDassert(H5Fclose(fid) >= 0); - - /* Release memory */ - HDfree(objname); -} - -/*------------------------------------------------------------------------- - * Function: gent_ldouble - * - * Purpose: make file with a long double dataset - * - *------------------------------------------------------------------------- - */ -static int gent_ldouble(void) -{ - hid_t fid; - hid_t did; - hid_t tid; - hid_t sid; - hsize_t dims[1] = {3}; - long double buf[3] = {1,2,3}; - - if((fid = H5Fcreate(FILE52, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - - if((sid = H5Screate_simple(1, dims, NULL)) < 0) - goto error; - - if((tid = H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) - goto error; - - if(H5Tget_size(tid) == 0) - goto error; - - if((did = H5Dcreate2(fid, "dset", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - - if(H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto error; - - if(H5Sclose(sid) < 0) - goto error; - if(H5Tclose(tid) < 0) - goto error; - if(H5Dclose(did) < 0) - goto error; - if(H5Fclose(fid) < 0) - goto error; - - return 0; - - error: - printf("error !\n"); - return -1; - -} - - -/*------------------------------------------------------------------------- - * Function: gent_binary - * - * Purpose: Generate a file to be used in the binary output test - * Contains: - * 1) an integer dataset - * 2) a float dataset - * 3) a double dataset - * - *------------------------------------------------------------------------- - */ -static void -gent_binary(void) -{ - hid_t fid, sid, did, aid; - hsize_t dims[1] = {6}; - int ibuf[6] = {1,2,3,4,5,6}; - float fbuf[6] = {1,2,3,4,5,6}; - double dbuf[6] = {1,2,3,4,5,6}; - - fid = H5Fcreate(FILE55, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - sid = H5Screate_simple(1, dims, NULL); - - - /*------------------------------------------------------------------------- - * integer - *------------------------------------------------------------------------- - */ - - did = H5Dcreate2(fid, "integer", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, ibuf); - H5Dclose(did); - - /*------------------------------------------------------------------------- - * float - *------------------------------------------------------------------------- - */ - did = H5Dcreate2(fid, "float", H5T_NATIVE_FLOAT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Dwrite(did, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, fbuf); - H5Dclose(did); - - /*------------------------------------------------------------------------- - * double - *------------------------------------------------------------------------- - */ - did = H5Dcreate2(fid, "double", H5T_NATIVE_DOUBLE, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Dwrite(did, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, dbuf); - /* create an attribute */ - aid = H5Acreate2(did, "attr", H5T_NATIVE_DOUBLE, sid, H5P_DEFAULT, H5P_DEFAULT); - H5Aclose(aid); - H5Dclose(did); - - - /* close */ - H5Sclose(sid); - H5Fclose(fid); -} - -/*------------------------------------------------------------------------- - * Function: gen_bigdims - * - * Purpose: generate a dataset with dimensions greater than 4GB - * and write one hyperslab on the boundary - * - *------------------------------------------------------------------------- - */ -#define GB4LL ((unsigned long long) 4*1024*1024*1024) -#define DIM_4GB (GB4LL + 10) - -static void -gent_bigdims(void) -{ - hid_t fid = -1; - hid_t did = -1; - hid_t f_sid = -1; - hid_t m_sid = -1; - hid_t tid = -1; - hid_t dcpl = -1; - hsize_t dims[1]={DIM_4GB}; /* dataset dimensions */ - hsize_t chunk_dims[1]={1024}; /* chunk dimensions */ - hsize_t hs_start[1]; - hsize_t hs_size[1]; /* hyperslab dimensions */ - size_t size; - char fillvalue=0; - char *buf=NULL; - hsize_t i; - char c; - size_t nelmts; - int ret; - - /* create a file */ - fid = H5Fcreate(FILE56, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - HDassert(fid >= 0); - - /* create dataset */ - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) - goto out; - if(H5Pset_fill_value(dcpl, H5T_NATIVE_SCHAR, &fillvalue) < 0) - goto out; - if(H5Pset_chunk(dcpl, 1, chunk_dims) < 0) - goto out; - if((f_sid = H5Screate_simple(1, dims, NULL)) < 0) - goto out; - if((did = H5Dcreate2(fid, "dset4gb", H5T_NATIVE_SCHAR, f_sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto out; - if((tid = H5Dget_type(did)) < 0) - goto out; - if((size = H5Tget_size(tid)) <= 0) - goto out; - - /* select an hyperslab */ - nelmts = 20; - hs_start[0] = GB4LL - 10; - hs_size[0] = nelmts; - - if((m_sid = H5Screate_simple(1, hs_size, hs_size)) < 0) - goto out; - - buf=(char *) HDmalloc((unsigned)(nelmts*size)); - - for(i=0, c=0; i= 0); - - return; - - out: - printf("Error.....\n"); - H5E_BEGIN_TRY { - H5Pclose(dcpl); - H5Sclose(f_sid); - H5Sclose(m_sid); - H5Tclose(tid); - H5Dclose(did); - H5Fclose(fid); - } H5E_END_TRY; - return; -} - - - -/*------------------------------------------------------------------------- - * Function: gent_hyperslab - * - * Purpose: make a dataset for hyperslab read - * - *------------------------------------------------------------------------- - */ -static void -gent_hyperslab(void) -{ - hid_t fid; /* file id */ - hsize_t dims[2] = {32,4097}; /* big enough data size to force a second stripmine read */ - double *buf; - int i, ret; - - buf = (double*) HDmalloc(32 * 4097 * sizeof(double) ); - for(i = 0; i < 32 * 4097; i++) - buf[i] = 1; - - /* create a file */ - fid = H5Fcreate(FILE57, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - HDassert(fid>=0); - - write_dset(fid,2,dims,"stripmine",H5T_NATIVE_DOUBLE,buf); - - ret = H5Fclose(fid); - HDassert(ret >= 0); - - HDfree(buf); -} - -/*------------------------------------------------------------------------- - * Function: gent_group_creation_order - * - * Purpose: generate a file with several groups with creation order set and not - * set tru its hierarchy - * - *------------------------------------------------------------------------- - */ -static void -gent_group_creation_order(void) -{ - hid_t fid = -1; /* file ID */ - hid_t gid = -1; /* group ID */ - hid_t gcpl_id = -1; /* group creation property list ID */ - hid_t fcpl_id = -1; /* file creation property list ID (to set root group order) */ - - if((fcpl_id = H5Pcreate(H5P_FILE_CREATE)) < 0) - goto out; - - if(H5Pset_link_creation_order(fcpl_id, H5P_CRT_ORDER_TRACKED ) < 0) - goto out; - - if((fid = H5Fcreate(FILE58, H5F_ACC_TRUNC, fcpl_id, H5P_DEFAULT)) < 0) - goto out; - - - /* create group creation property list */ - if((gcpl_id = H5Pcreate(H5P_GROUP_CREATE)) < 0) - goto out; - - /*------------------------------------------------------------------------- - * create a group "2" - *------------------------------------------------------------------------- - */ - - - if((gid = H5Gcreate2(fid, "2", H5P_DEFAULT, gcpl_id, H5P_DEFAULT)) < 0) - goto out; - if(H5Gclose(gid) < 0) - goto out; - gid = -1; - - if((gid = H5Gcreate2(fid, "2/c", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if(H5Gclose(gid) < 0) - goto out; - gid = -1; - if((gid = H5Gcreate2(fid, "2/b", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if(H5Gclose(gid) < 0) - goto out; - gid = -1; - if((gid = H5Gcreate2(fid, "2/a", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if(H5Gclose(gid) < 0) - goto out; - gid = -1; - - if((gid = H5Gcreate2(fid, "2/a/a2", H5P_DEFAULT, gcpl_id, H5P_DEFAULT)) < 0) - goto out; - if(H5Gclose(gid) < 0) - goto out; - gid = -1; - if((gid = H5Gcreate2(fid, "2/a/a1", H5P_DEFAULT, gcpl_id, H5P_DEFAULT)) < 0) - goto out; - if(H5Gclose(gid) < 0) - goto out; - gid = -1; - - if((gid = H5Gcreate2(fid, "2/a/a2/a22", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if(H5Gclose(gid) < 0) - goto out; - gid = -1; - if((gid = H5Gcreate2(fid, "2/a/a2/a21", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if(H5Gclose(gid) < 0) - goto out; - gid = -1; - - - /*------------------------------------------------------------------------- - * create a group "1" with H5P_CRT_ORDER_TRACKED set - *------------------------------------------------------------------------- - */ - if(H5Pset_link_creation_order(gcpl_id, H5P_CRT_ORDER_TRACKED) < 0) - goto out; - - - if((gid = H5Gcreate2(fid, "1", H5P_DEFAULT, gcpl_id, H5P_DEFAULT)) < 0) - goto out; - if(H5Gclose(gid) < 0) - goto out; - gid = -1; - - if((gid = H5Gcreate2(fid, "1/c", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if(H5Gclose(gid) < 0) - goto out; - gid = -1; - if((gid = H5Gcreate2(fid, "1/b", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if(H5Gclose(gid) < 0) - goto out; - gid = -1; - if((gid = H5Gcreate2(fid, "1/a", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if(H5Gclose(gid) < 0) - goto out; - gid = -1; - - if((gid = H5Gcreate2(fid, "1/a/a2", H5P_DEFAULT, gcpl_id, H5P_DEFAULT)) < 0) - goto out; - if(H5Gclose(gid) < 0) - goto out; - gid = -1; - if((gid = H5Gcreate2(fid, "1/a/a1", H5P_DEFAULT, gcpl_id, H5P_DEFAULT)) < 0) - goto out; - if(H5Gclose(gid) < 0) - goto out; - gid = -1; - - if((gid = H5Gcreate2(fid, "1/a/a2/a22", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if(H5Gclose(gid) < 0) - goto out; - gid = -1; - if((gid = H5Gcreate2(fid, "1/a/a2/a21", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if(H5Gclose(gid) < 0) - goto out; - gid = -1; - - - if(H5Pclose(gcpl_id) < 0) - goto out; - gcpl_id = -1; - if(H5Pclose(fcpl_id) < 0) - goto out; - fcpl_id = -1; - if(H5Fclose(fid) < 0) - goto out; - fid = -1; - - return; - - out: - printf("Error.....\n"); - H5E_BEGIN_TRY { - H5Gclose(gid); - H5Pclose(gcpl_id); - H5Pclose(fcpl_id); - H5Fclose(fid); - - } H5E_END_TRY; - return; - -} - -/*------------------------------------------------------------------------- - * Function: gent_attr_creation_order - * - * Purpose: generate a file with several objects with attributes with creation - * order set and not set - * - *------------------------------------------------------------------------- - */ -static void -gent_attr_creation_order(void) -{ - hid_t fid = -1; /* file id */ - hid_t gid = -1; /* group id */ - hid_t did = -1; /* dataset id */ - hid_t sid = -1; /* space id */ - hid_t aid = -1; /* attribute id */ - hid_t tid = -1; /* datatype id */ - hid_t gcpl_id = -1; /* group creation property list ID */ - hid_t dcpl_id = -1; /* dataset creation property list ID */ - hid_t tcpl_id = -1; /* datatype creation property list ID */ - int i; - const char *attr_name[3] = {"c", "b", "a" }; - - if((fid = H5Fcreate(FILE59, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - - /* create group creation property list */ - if((gcpl_id = H5Pcreate(H5P_GROUP_CREATE)) < 0) - goto out; - - /* create dataset creation property list */ - if((dcpl_id = H5Pcreate(H5P_DATASET_CREATE)) < 0) - goto out; - - /* create dataset creation property list */ - if((tcpl_id = H5Pcreate(H5P_DATATYPE_CREATE)) < 0) - goto out; - - /* enable attribute creation order tracking on dataset property list */ - if(H5Pset_attr_creation_order(dcpl_id, H5P_CRT_ORDER_TRACKED) < 0) - goto out; - - /* enable attribute creation order tracking on group property list */ - if(H5Pset_attr_creation_order(gcpl_id, H5P_CRT_ORDER_TRACKED) < 0) - goto out; - - /* enable attribute creation order tracking on datatype property list */ - if(H5Pset_attr_creation_order(tcpl_id, H5P_CRT_ORDER_TRACKED) < 0) - goto out; - - /* create a dataspace */ - if((sid = H5Screate(H5S_SCALAR)) < 0) - goto out; - - /*------------------------------------------------------------------------- - * create a dataset with creation order tracked for attributes and atributes in it - *------------------------------------------------------------------------- - */ - - /* create a dataset */ - if((did = H5Dcreate2(fid, "dt", H5T_NATIVE_UCHAR, sid, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) - goto out; - - /* add attributes */ - for(i = 0; i < 3; i++) - { - if((aid = H5Acreate2(did, attr_name[i], H5T_NATIVE_UCHAR, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - - /* close attribute */ - if(H5Aclose(aid) < 0) - goto out; - aid = -1; - } /* end for */ - - if(H5Dclose(did) < 0) - goto out; - did = -1; - - - /*------------------------------------------------------------------------- - * create a dataset without creation order tracked for attributes and atributes in it - *------------------------------------------------------------------------- - */ - - /* create a dataset */ - if((did = H5Dcreate2(fid, "d", H5T_NATIVE_UCHAR, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - - /* add attributes */ - for(i = 0; i < 3; i++) - { - if((aid = H5Acreate2(did, attr_name[i], H5T_NATIVE_UCHAR, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - - /* close attribute */ - if(H5Aclose(aid) < 0) - goto out; - aid = -1; - } /* end for */ - - if(H5Dclose(did) < 0) - goto out; - did = -1; - - - - /*------------------------------------------------------------------------- - * create a group with creation order tracked for attributes and atributes in it - *------------------------------------------------------------------------- - */ - - if((gid = H5Gcreate2(fid, "gt", H5P_DEFAULT, gcpl_id, H5P_DEFAULT)) < 0) - goto out; - - /* add attributes */ - for(i = 0; i < 3; i++) - { - if((aid = H5Acreate2(gid, attr_name[i], H5T_NATIVE_UCHAR, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - - /* close attribute */ - if(H5Aclose(aid) < 0) - goto out; - aid = -1; - } /* end for */ - - if(H5Gclose(gid) < 0) - goto out; - gid = -1; - - /*------------------------------------------------------------------------- - * create a group without creation order tracked for attributes and atributes in it - *------------------------------------------------------------------------- - */ - - if((gid = H5Gcreate2(fid, "g", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - - /* add attributes */ - for(i = 0; i < 3; i++) - { - if((aid = H5Acreate2(gid, attr_name[i], H5T_NATIVE_UCHAR, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - - /* close attribute */ - if(H5Aclose(aid) < 0) - goto out; - aid = -1; - } /* end for */ - - if(H5Gclose(gid) < 0) - goto out; - gid = -1; - - /*------------------------------------------------------------------------- - * create a named datatype with creation order tracked for attributes and atributes in it - *------------------------------------------------------------------------- - */ - - if((tid = H5Tcopy(H5T_NATIVE_INT)) < 0) - goto out; - - if((H5Tcommit2(fid, "tt", tid, H5P_DEFAULT, tcpl_id, H5P_DEFAULT)) < 0) - goto out; - - /* add attributes */ - for(i = 0; i < 3; i++) - { - if((aid = H5Acreate2(tid, attr_name[i], H5T_NATIVE_UCHAR, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - - /* close attribute */ - if(H5Aclose(aid) < 0) - goto out; - aid = -1; - } /* end for */ - - if(H5Tclose(tid) < 0) - goto out; - tid = -1; - - /*------------------------------------------------------------------------- - * create a named datatype without creation order tracked for attributes and atributes in it - *------------------------------------------------------------------------- - */ - - if((tid = H5Tcopy(H5T_NATIVE_INT)) < 0) - goto out; - - if((H5Tcommit2(fid, "t", tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - - /* add attributes */ - for(i = 0; i < 3; i++) - { - if((aid = H5Acreate2(tid, attr_name[i], H5T_NATIVE_UCHAR, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - - /* close attribute */ - if(H5Aclose(aid) < 0) - goto out; - aid = -1; - } /* end for */ - - if(H5Tclose(tid) < 0) - goto out; - tid = -1; - - /*------------------------------------------------------------------------- - * add some attributes to the root group - *------------------------------------------------------------------------- - */ - if((gid = H5Gopen2(fid, "/", H5P_DEFAULT)) < 0) - goto out; - - /* add attributes */ - for(i = 0; i < 3; i++) - { - if((aid = H5Acreate2(gid, attr_name[i], H5T_NATIVE_UCHAR, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - - /* close attribute */ - if(H5Aclose(aid) < 0) - goto out; - aid = -1; - } /* end for */ - - if(H5Gclose(gid) < 0) - goto out; - gid = -1; - - /*------------------------------------------------------------------------- - * close - *------------------------------------------------------------------------- - */ - if(H5Sclose(sid) < 0) - goto out; - sid = -1; - if(H5Pclose(dcpl_id) < 0) - goto out; - dcpl_id = -1; - if(H5Pclose(gcpl_id) < 0) - goto out; - gcpl_id = -1; - if(H5Pclose(tcpl_id) < 0) - goto out; - tcpl_id = -1; - if(H5Fclose(fid) < 0) - goto out; - fid = -1; - - - - return; - - out: - printf("Error.....\n"); - H5E_BEGIN_TRY { - H5Gclose(gid); - H5Dclose(did); - H5Sclose(sid); - H5Pclose(gcpl_id); - H5Pclose(dcpl_id); - H5Pclose(tcpl_id); - H5Fclose(fid); - - } H5E_END_TRY; - return; - -} - -/*------------------------------------------------------------------------- - * Function: gent_fpformat - * - * Purpose: Generate a file to be used in the floating point format test - * Contains: - * 1) a float dataset - * 2) a double dataset - * - *------------------------------------------------------------------------- - */ -static void -gent_fpformat(void) -{ - hid_t fid, sid, did; - hsize_t dims[1] = {6}; - double dbuf[6] = {-0.1234567f, 0.1234567f, 0, 0, 0, 0}; - float fbuf[6] = {-0.1234567f, 0.1234567f, 0, 0, 0, 0}; - - fid = H5Fcreate(FILE60, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - sid = H5Screate_simple(1, dims, NULL); - - /*------------------------------------------------------------------------- - * double - *------------------------------------------------------------------------- - */ - did = H5Dcreate2(fid, "double", H5T_NATIVE_DOUBLE, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Dwrite(did, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, dbuf); - H5Dclose(did); - - - /*------------------------------------------------------------------------- - * float - *------------------------------------------------------------------------- - */ - did = H5Dcreate2(fid, "float", H5T_NATIVE_FLOAT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Dwrite(did, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, fbuf); - H5Dclose(did); - - - /* close */ - H5Sclose(sid); - H5Fclose(fid); -} - -/*------------------------------------------------------------------------- - * Function: gent_extlinks - * - * Purpose: Generate 3 files to be used in the external links test - * External links point from one HDF5 file to an object (Group, Dataset, - * or committed Datatype) in another file. Try to create cycles. - * - *------------------------------------------------------------------------- - */ -static void -gent_extlinks(void) -{ - hid_t source_fid, target_fid, far_fid, sid, did, gid, gid2, tid; - hsize_t dims[1] = {6}; - int buf[6] = {1, 2, 3, 4, 5, 6}; - - /* create two files, a source and a target */ - source_fid = H5Fcreate(FILE61, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - target_fid = H5Fcreate(FILE62, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - far_fid = H5Fcreate(FILE63, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - - /*------------------------------------------------------------------------- - * create Groups, a Dataset, a committed Datatype, external links, and a - * cycle in the target - *------------------------------------------------------------------------- - */ - - gid = H5Gcreate2(target_fid, "group", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(H5Gcreate2(target_fid, "empty_group", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)); - sid = H5Screate_simple(1, dims, NULL); - did = H5Dcreate2(gid, "dset", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - H5Lcreate_external(FILE61, "/", gid, "elink_t1", H5P_DEFAULT, H5P_DEFAULT); - H5Lcreate_external(FILE61, "/ext_link4", gid, "elink_t2", H5P_DEFAULT, H5P_DEFAULT); - - gid2 = H5Gcreate2(gid, "subgroup", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Lcreate_hard(target_fid, "/group", gid2, "link_to_group", H5P_DEFAULT, H5P_DEFAULT); - - H5Dclose(did); - H5Sclose(sid); - H5Gclose(gid2); - H5Gclose(gid); - - - sid = H5Screate_simple(1, dims, NULL); - did = H5Dcreate2(target_fid, "dset", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - H5Dclose(did); - H5Sclose(sid); - - tid = H5Tcopy(H5T_NATIVE_INT); - H5Tcommit2(target_fid, "type", tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Tclose(tid); - - /*------------------------------------------------------------------------- - * create external links in the source file pointing to the target objects - *------------------------------------------------------------------------- - */ - - H5Lcreate_external(FILE62, "group", source_fid, "ext_link1", H5P_DEFAULT, H5P_DEFAULT); - H5Lcreate_external(FILE62, "dset", source_fid, "ext_link2", H5P_DEFAULT, H5P_DEFAULT); - H5Lcreate_external(FILE62, "type", source_fid, "ext_link3", H5P_DEFAULT, H5P_DEFAULT); - H5Lcreate_external(FILE62, "group/elink_t2", source_fid, "ext_link4", H5P_DEFAULT, H5P_DEFAULT); - H5Lcreate_external(FILE62, "empty_group", source_fid, "ext_link5", H5P_DEFAULT, H5P_DEFAULT); - /* external link to soft link which linked to a dataset */ - H5Lcreate_external(FILE4_1, "/soft_dset1", source_fid, "ext2soft_link1", H5P_DEFAULT, H5P_DEFAULT); - - /* external link to dangle soft link */ - H5Lcreate_external(FILE4_1, "/soft_dangle", source_fid, "ext2softdangle_link1", H5P_DEFAULT, H5P_DEFAULT); - - /*------------------------------------------------------------------------- - * create external link in the "far" file pointing to the source file - *------------------------------------------------------------------------- - */ - H5Lcreate_external(FILE61, "/", far_fid, "src_file", H5P_DEFAULT, H5P_DEFAULT); - - /* close */ - H5Fclose(source_fid); - H5Fclose(target_fid); - H5Fclose(far_fid); -} - -/*------------------------------------------------------------------------- - * Function: gent_fs_strategy_threshold - * - * Purpose: Generate a file with non-default file space strategy and - * non-default free-space section threshold. - *------------------------------------------------------------------------- - */ -static void -gent_fs_strategy_threshold(void) -{ - hid_t fid; /* File id */ - hid_t fcpl; /* File creation property */ - - /* Create file-creation template */ - fcpl = H5Pcreate(H5P_FILE_CREATE); - - /* Set file space information */ - H5Pset_file_space(fcpl, STRATEGY, (hsize_t)THRESHOLD10); - - /* Create the file with the specified strategy and threshold */ - fid = H5Fcreate(FILE65, H5F_ACC_TRUNC, fcpl, H5P_DEFAULT); - - /* close */ - H5Fclose(fid); - H5Pclose(fcpl); -} - -/* - * Create a file with new format: - * Create one dataset with (set_chunk, fixed dims, null max. dims) - * so that Fixed Array indexing will be used. - * Create one dataset with (set_chunk, fixed dims, null max. dims, filter) - * so that Fixed Array indexing will be used. - * Create one dataset with (set_chunk, fixed dims, fixed max. dims) - * so that Fixed Array indexing will be used. - * - * Modifications: - * Fixed Array indexing will be used for chunked dataset - * with fixed max. dims setting. - * - */ -static void -gent_dataset_idx(void) -{ - hid_t fid, space, dcpl, fapl; - hsize_t dims[2]; - hsize_t maxdims[2]; - int buf[20][10]; - int i, j, ret; - - /* Get a copy of the file aaccess property */ - fapl = H5Pcreate(H5P_FILE_ACCESS); - - /* Set the "use the latest version of the format" bounds for creating objects in the file */ - ret = H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST); - assert(ret >= 0); - - fid = H5Fcreate(FILE68a, H5F_ACC_TRUNC, H5P_DEFAULT, fapl); - dcpl = H5Pcreate(H5P_DATASET_CREATE); - - dims[0] = F68a_CHUNK; - dims[1] = F68a_CHUNK; - - /* set chunk */ - ret = H5Pset_chunk(dcpl, RANK, dims); - assert(ret >= 0); - - /* dataset with fixed dimensions */ - dims[0] = F68a_DIM20; - dims[1] = F68a_DIM10; - space = H5Screate_simple(RANK, dims, NULL); - - for(i = 0; i < F68a_DIM20; i++) - for(j = 0; j < F68a_DIM10; j++) - buf[i][j] = j; - - ret = make_dset(fid, F68a_DSET_FIXED, space, H5T_NATIVE_INT, dcpl, buf); - assert(ret >= 0); - H5Sclose(space); - - /* dataset with non-fixed dimensions */ - maxdims[0] = F68a_DIM200; - maxdims[1] = F68a_DIM100; - space = H5Screate_simple(RANK, dims, maxdims); - - ret = make_dset(fid, F68a_DSET_BTREE, space, H5T_NATIVE_INT, dcpl, buf); - assert(ret >= 0); - H5Sclose(space); - -#if defined (H5_HAVE_FILTER_DEFLATE) - - /* dataset with fixed dimensions and filters */ - /* remove the filters from the dcpl */ - ret = H5Premove_filter(dcpl, H5Z_FILTER_ALL); - assert(ret >= 0); - - /* set deflate data */ - ret = H5Pset_deflate(dcpl, 9); - assert(ret >= 0); - - space = H5Screate_simple(RANK, dims, NULL); - ret = make_dset(fid, F68a_DSET_FIXED_FILTER, space, H5T_NATIVE_INT, dcpl, buf); - assert(ret >= 0); - - H5Sclose(space); -#endif - - H5Pclose(dcpl); - H5Fclose(fid); -} - -/*------------------------------------------------------------------------- - * Function: gent_packedbits - * - * Purpose: Generate a file to be used in the h5dump packed bits tests. - * Four datasets of 1, 2, 4 and 8 bytes of unsigned int types are created. - * Four more datasets of 1, 2, 4 and 8 bytes of signed int types are created. - * Fill them with raw data such that no bit will be all zero in a dataset. - * A dummy dataset of double type is created for failure test. - * Created: Albert Cheng, 2010/5/10. - * Modified: Allen Byrne, 2011/1/5 Use file to test Signed/Unsigned datatypes - *------------------------------------------------------------------------- - */ -static void -gent_packedbits(void) -{ - hid_t fid, dataset, space; - hsize_t dims[2]; - uint8_t dsetu8[F66_XDIM][F66_YDIM8], valu8bits; - uint16_t dsetu16[F66_XDIM][F66_YDIM16], valu16bits; - uint32_t dsetu32[F66_XDIM][F66_YDIM32], valu32bits; - uint64_t dsetu64[F66_XDIM][F66_YDIM64], valu64bits; - int8_t dset8[F66_XDIM][F66_YDIM8], val8bits; - int16_t dset16[F66_XDIM][F66_YDIM16], val16bits; - int32_t dset32[F66_XDIM][F66_YDIM32], val32bits; - int64_t dset64[F66_XDIM][F66_YDIM64], val64bits; - double dsetdbl[F66_XDIM][F66_YDIM8]; - unsigned int i, j; - - fid = H5Fcreate(FILE66, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* Dataset of 8 bits unsigned int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM8; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, F66_DATASETU08, H5T_STD_U8LE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - valu8bits = (uint8_t) ~0u; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu8[i][0] = valu8bits; - for(j = 1; j < dims[1]; j++) - dsetu8[i][j] = (uint8_t)(dsetu8[i][j - 1] << 1); - valu8bits = (uint8_t)(valu8bits << 1); - } - - H5Dwrite(dataset, H5T_NATIVE_UINT8, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetu8); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 16 bits unsigned int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM16; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, F66_DATASETU16, H5T_STD_U16LE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - valu16bits = (uint16_t) ~0u; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu16[i][0] = valu16bits; - for(j = 1; j < dims[1]; j++) - dsetu16[i][j] = (uint16_t)(dsetu16[i][j-1] << 1); - valu16bits = (uint16_t)(valu16bits << 1); - } - - H5Dwrite(dataset, H5T_NATIVE_UINT16, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetu16); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 32 bits unsigned int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM32; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, F66_DATASETU32, H5T_STD_U32LE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - valu32bits = (uint32_t) ~0u; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu32[i][0] = valu32bits; - for(j = 1; j < dims[1]; j++) - dsetu32[i][j] = dsetu32[i][j-1] << 1; - valu32bits <<= 1; - } - - H5Dwrite(dataset, H5T_NATIVE_UINT32, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetu32); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 64 bits unsigned int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM64; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, F66_DATASETU64, H5T_STD_U64LE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - valu64bits = (uint64_t) ~0Lu; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu64[i][0] = valu64bits; - for(j = 1; j < dims[1]; j++) - dsetu64[i][j] = dsetu64[i][j-1] << 1; - valu64bits <<= 1; - } - - H5Dwrite(dataset, H5T_NATIVE_UINT64, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetu64); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 8 bits signed int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM8; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, F66_DATASETS08, H5T_STD_I8LE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - val8bits = (int8_t) ~0; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset8[i][0] = val8bits; - for(j = 1; j < dims[1]; j++) - dset8[i][j] = (int8_t)(dset8[i][j-1] << 1); - val8bits = (int8_t)(val8bits << 1); - } - - H5Dwrite(dataset, H5T_NATIVE_INT8, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset8); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 16 bits signed int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM16; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, F66_DATASETS16, H5T_STD_I16LE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - val16bits = (int16_t) ~0; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset16[i][0] = val16bits; - for(j = 1; j < dims[1]; j++) - dset16[i][j] = (int16_t)(dset16[i][j-1] << 1); - val16bits = (int16_t)(val16bits << 1); - } - - H5Dwrite(dataset, H5T_NATIVE_INT16, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset16); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 32 bits signed int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM32; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, F66_DATASETS32, H5T_STD_I32LE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - val32bits = (int32_t) ~0; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset32[i][0] = val32bits; - for(j = 1; j < dims[1]; j++) - dset32[i][j] = dset32[i][j-1] << 1; - val32bits <<= 1; - } - - H5Dwrite(dataset, H5T_NATIVE_INT32, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset32); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 64 bits signed int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM64; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, F66_DATASETS64, H5T_STD_I64LE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - val64bits = (int64_t) ~0L; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset64[i][0] = val64bits; - for(j = 1; j < dims[1]; j++) - dset64[i][j] = dset64[i][j-1] << 1; - val64bits <<= 1; - } - - H5Dwrite(dataset, H5T_NATIVE_INT64, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset64); - H5Sclose(space); - H5Dclose(dataset); - - /* Double Dummy set for failure tests */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM8; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, F66_DUMMYDBL, H5T_IEEE_F64BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - for(i = 0; i < dims[0]; i++) - for(j = 0; j < dims[1]; j++) - dsetdbl[i][j] = 0.0001F * (float)j + (float)i; - - H5Dwrite(dataset, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetdbl); - - H5Sclose(space); - H5Dclose(dataset); - H5Fclose(fid); -} - -/*------------------------------------------------------------------------- - * Function: gent_attr_packedbits - * - * Purpose: Generate a file to be used in the h5dump packed bits tests. - * Four attributes of 1, 2, 4 and 8 bytes of unsigned int types are created. - * Four more datasets of 1, 2, 4 and 8 bytes of signed int types are created. - * Fill them with raw data such that no bit will be all zero in a dataset. - * A dummy dataset of double type is created for failure test. - * Use file to test Signed/Unsigned datatypes and keep in sync with gent_packedbits() - *------------------------------------------------------------------------- - */ -static void -gent_attr_intsize(void) -{ - hid_t fid, attr, space, root; - hsize_t dims[2]; - uint8_t dsetu8[F66_XDIM][F66_YDIM8], valu8bits; - uint16_t dsetu16[F66_XDIM][F66_YDIM16], valu16bits; - uint32_t dsetu32[F66_XDIM][F66_YDIM32], valu32bits; - uint64_t dsetu64[F66_XDIM][F66_YDIM64], valu64bits; - int8_t dset8[F66_XDIM][F66_YDIM8], val8bits; - int16_t dset16[F66_XDIM][F66_YDIM16], val16bits; - int32_t dset32[F66_XDIM][F66_YDIM32], val32bits; - int64_t dset64[F66_XDIM][F66_YDIM64], val64bits; - double dsetdbl[F66_XDIM][F66_YDIM8]; - unsigned int i, j; - - fid = H5Fcreate(FILE69, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - root = H5Gopen2(fid, "/", H5P_DEFAULT); - - /* Attribute of 8 bits unsigned int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM8; - space = H5Screate_simple(2, dims, NULL); - attr = H5Acreate2(root, F66_DATASETU08, H5T_STD_U8LE, space, H5P_DEFAULT, H5P_DEFAULT); - - valu8bits = (uint8_t) ~0u; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu8[i][0] = valu8bits; - for(j = 1; j < dims[1]; j++) { - dsetu8[i][j] = (uint8_t)(dsetu8[i][j-1] << 1); - } - valu8bits = (uint8_t)(valu8bits << 1); - } - - H5Awrite(attr, H5T_NATIVE_UINT8, dsetu8); - H5Sclose(space); - H5Aclose(attr); - - /* Attribute of 16 bits unsigned int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM16; - space = H5Screate_simple(2, dims, NULL); - attr = H5Acreate2(root, F66_DATASETU16, H5T_STD_U16LE, space, H5P_DEFAULT, H5P_DEFAULT); - - valu16bits = (uint16_t) ~0u; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu16[i][0] = valu16bits; - for(j = 1; j < dims[1]; j++) { - dsetu16[i][j] = (uint16_t)(dsetu16[i][j-1] << 1); - } - valu16bits = (uint16_t)(valu16bits << 1); - } - - H5Awrite(attr, H5T_NATIVE_UINT16, dsetu16); - H5Sclose(space); - H5Aclose(attr); - - /* Attribute of 32 bits unsigned int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM32; - space = H5Screate_simple(2, dims, NULL); - attr = H5Acreate2(root, F66_DATASETU32, H5T_STD_U32LE, space, H5P_DEFAULT, H5P_DEFAULT); - - valu32bits = (uint32_t) ~0u; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu32[i][0] = valu32bits; - for(j = 1; j < dims[1]; j++) { - dsetu32[i][j] = dsetu32[i][j-1] << 1; - } - valu32bits <<= 1; - } - - H5Awrite(attr, H5T_NATIVE_UINT32, dsetu32); - H5Sclose(space); - H5Aclose(attr); - - /* Attribute of 64 bits unsigned int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM64; - space = H5Screate_simple(2, dims, NULL); - attr = H5Acreate2(root, F66_DATASETU64, H5T_STD_U64LE, space, H5P_DEFAULT, H5P_DEFAULT); - - valu64bits = (uint64_t) ~0Lu; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu64[i][0] = valu64bits; - for(j = 1; j < dims[1]; j++) { - dsetu64[i][j] = dsetu64[i][j-1] << 1; - } - valu64bits <<= 1; - } - - H5Awrite(attr, H5T_NATIVE_UINT64, dsetu64); - H5Sclose(space); - H5Aclose(attr); - - /* Attribute of 8 bits signed int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM8; - space = H5Screate_simple(2, dims, NULL); - attr = H5Acreate2(root, F66_DATASETS08, H5T_STD_I8LE, space, H5P_DEFAULT, H5P_DEFAULT); - - val8bits = (int8_t) ~0; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset8[i][0] = val8bits; - for(j = 1; j < dims[1]; j++) { - dset8[i][j] = (int8_t)(dset8[i][j-1] << 1); - } - val8bits = (int8_t)(val8bits << 1); - } - - H5Awrite(attr, H5T_NATIVE_INT8, dset8); - H5Sclose(space); - H5Aclose(attr); - - /* Attribute of 16 bits signed int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM16; - space = H5Screate_simple(2, dims, NULL); - attr = H5Acreate2(root, F66_DATASETS16, H5T_STD_I16LE, space, H5P_DEFAULT, H5P_DEFAULT); - - val16bits = (int16_t) ~0; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset16[i][0] = val16bits; - for(j = 1; j < dims[1]; j++) { - dset16[i][j] = (int16_t)(dset16[i][j-1] << 1); - } - val16bits = (int16_t)(val16bits << 1); - } - - H5Awrite(attr, H5T_NATIVE_INT16, dset16); - H5Sclose(space); - H5Aclose(attr); - - /* Attribute of 32 bits signed int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM32; - space = H5Screate_simple(2, dims, NULL); - attr = H5Acreate2(root, F66_DATASETS32, H5T_STD_I32LE, space, H5P_DEFAULT, H5P_DEFAULT); - - val32bits = (int32_t) ~0; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset32[i][0] = val32bits; - for(j = 1; j < dims[1]; j++) { - dset32[i][j] = dset32[i][j-1] << 1; - } - val32bits <<= 1; - } - - H5Awrite(attr, H5T_NATIVE_INT32, dset32); - H5Sclose(space); - H5Aclose(attr); - - /* Attribute of 64 bits signed int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM64; - space = H5Screate_simple(2, dims, NULL); - attr = H5Acreate2(root, F66_DATASETS64, H5T_STD_I64LE, space, H5P_DEFAULT, H5P_DEFAULT); - - val64bits = (int64_t) ~0L; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset64[i][0] = val64bits; - for(j = 1; j < dims[1]; j++) { - dset64[i][j] = dset64[i][j-1] << 1; - } - val64bits <<= 1; - } - - H5Awrite(attr, H5T_NATIVE_INT64, dset64); - H5Sclose(space); - H5Aclose(attr); - - /* Double Dummy set for failure tests */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM8; - space = H5Screate_simple(2, dims, NULL); - attr = H5Acreate2(root, F66_DUMMYDBL, H5T_IEEE_F64BE, space, H5P_DEFAULT, H5P_DEFAULT); - - for(i = 0; i < dims[0]; i++) - for(j = 0; j < dims[1]; j++) - dsetdbl[i][j] = 0.0001F * (float)j + (float)i; - - H5Awrite(attr, H5T_NATIVE_DOUBLE, dsetdbl); - - H5Sclose(space); - H5Aclose(attr); - - H5Gclose(root); - H5Fclose(fid); -} - -/*------------------------------------------------------------------------- - * Function: gent_charsets - * - * Purpose: Generate a file to be used in the character set test - * Contains: - * 1) a ascii datatype - * 2) a utf8 datatype - * - *------------------------------------------------------------------------- - */ -static void -gent_charsets(void) -{ - hid_t fid, did, sid; - herr_t status; - hsize_t dim[] = {1}; /* Dataspace dimensions */ - typedef struct CharSetInfo { - const char *ascii_p_; - const char *utf8_p_; - } CharSetInfo; - - hid_t charset_dtid = H5Tcreate( H5T_COMPOUND, sizeof( CharSetInfo ) ); - hid_t ascii_dtid = H5Tcreate( H5T_STRING, H5T_VARIABLE ); - hid_t utf8_dtid = H5Tcreate( H5T_STRING, H5T_VARIABLE ); - const char * writeData[] = { "ascii", "utf8", }; - - sid = H5Screate_simple( 1, dim, NULL ); - fid = H5Fcreate( FILE68, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT ); - status = H5Tset_cset( ascii_dtid, H5T_CSET_ASCII ); - HDassert(status >= 0); - H5Tinsert( charset_dtid, "ascii", HOFFSET(CharSetInfo, ascii_p_ ), ascii_dtid ); - - status = H5Tset_cset( utf8_dtid, H5T_CSET_UTF8 ); - HDassert(status >= 0); - H5Tinsert( charset_dtid, "utf8", HOFFSET( CharSetInfo, utf8_p_ ), utf8_dtid ); - - did = H5Dcreate2( fid, "CharSets", charset_dtid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT ); - - status = H5Dwrite( did, charset_dtid, H5S_ALL, H5S_ALL, H5P_DEFAULT, writeData ); - HDassert(status >= 0); - - H5Tclose( charset_dtid ); - H5Tclose( ascii_dtid ); - H5Tclose( utf8_dtid ); - H5Sclose( sid ); - H5Dclose( did ); - H5Fclose( fid ); -} - -static void gent_compound_intsizes(void) { - hid_t fid, dataset, space; - hsize_t dims[2]; - hsize_t array_dim8[]={F70_XDIM,F70_YDIM8}; /* Array dimensions */ - hsize_t array_dim16[]={F70_XDIM,F70_YDIM16}; /* Array dimensions */ - hsize_t array_dim32[]={F70_XDIM,F70_YDIM32}; /* Array dimensions */ - hsize_t array_dim64[]={F70_XDIM,F70_YDIM64}; /* Array dimensions */ - hid_t arrayu8_tid; /* Array datatype handle */ - hid_t arrayu16_tid; /* Array datatype handle */ - hid_t arrayu32_tid; /* Array datatype handle */ - hid_t arrayu64_tid; /* Array datatype handle */ - hid_t array8_tid; /* Array datatype handle */ - hid_t array16_tid; /* Array datatype handle */ - hid_t array32_tid; /* Array datatype handle */ - hid_t array64_tid; /* Array datatype handle */ - hid_t arraydbl_tid; /* Array datatype handle */ - uint8_t valu8bits; - uint16_t valu16bits; - uint32_t valu32bits; - uint64_t valu64bits; - int8_t val8bits; - int16_t val16bits; - int32_t val32bits; - int64_t val64bits; - /* Structure and array for compound types */ - typedef struct Array1Struct { - uint8_t dsetu8[F70_XDIM][F70_YDIM8]; - uint16_t dsetu16[F70_XDIM][F70_YDIM16]; - uint32_t dsetu32[F70_XDIM][F70_YDIM32]; - uint64_t dsetu64[F70_XDIM][F70_YDIM64]; - int8_t dset8[F70_XDIM][F70_YDIM8]; - int16_t dset16[F70_XDIM][F70_YDIM16]; - int32_t dset32[F70_XDIM][F70_YDIM32]; - int64_t dset64[F70_XDIM][F70_YDIM64]; - double dsetdbl[F70_XDIM][F70_YDIM8]; - } Array1Struct; - Array1Struct *Array1; - - hid_t Array1Structid; /* File datatype identifier */ - herr_t status; /* Error checking variable */ - hsize_t dim[] = { F70_LENGTH }; /* Dataspace dimensions */ - - int m, n, o; /* Array init loop vars */ - - /* Allocate buffer */ - Array1 = (Array1Struct *)HDmalloc(sizeof(Array1Struct) * F70_LENGTH); - HDassert(Array1); - - /* Initialize the data in the arrays/datastructure */ - for (m = 0; m < F70_LENGTH; m++) { - - /* Array of 8 bits unsigned int */ - dims[0] = F70_XDIM; dims[1] = F70_YDIM8; - - valu8bits = (uint8_t) ~0u; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Array1[m].dsetu8[n][0] = valu8bits; - for(o = 1; o < (int)dims[1]; o++) - Array1[m].dsetu8[n][o] = (uint8_t)(Array1[m].dsetu8[n][o-1] << 1); - valu8bits = (uint8_t)(valu8bits << 1); - } - - /* Array of 16 bits unsigned int */ - dims[0] = F70_XDIM; dims[1] = F70_YDIM16; - - valu16bits = (uint16_t) ~0u; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Array1[m].dsetu16[n][0] = valu16bits; - for(o = 1; o < (int)dims[1]; o++) - Array1[m].dsetu16[n][o] = (uint16_t)(Array1[m].dsetu16[n][o-1] << 1); - valu16bits = (uint16_t)(valu16bits << 1); - } - - /* Array of 32 bits unsigned int */ - dims[0] = F70_XDIM; dims[1] = F70_YDIM32; - - valu32bits = (uint32_t) ~0u; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Array1[m].dsetu32[n][0] = valu32bits; - for(o = 1; o < (int)dims[1]; o++) - Array1[m].dsetu32[n][o] = Array1[m].dsetu32[n][o-1] << 1; - valu32bits <<= 1; - } - - /* Array of 64 bits unsigned int */ - dims[0] = F70_XDIM; dims[1] = F70_YDIM64; - - valu64bits = (uint64_t) ~0Lu; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Array1[m].dsetu64[n][0] = valu64bits; - for(o = 1; o < (int)dims[1]; o++) - Array1[m].dsetu64[n][o] = Array1[m].dsetu64[n][o-1] << 1; - valu64bits <<= 1; - } - - /* Array of 8 bits signed int */ - dims[0] = F70_XDIM; dims[1] = F70_YDIM8; - - val8bits = (int8_t) ~0; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Array1[m].dset8[n][0] = val8bits; - for(o = 1; o < (int)dims[1]; o++) - Array1[m].dset8[n][o] = (int8_t)(Array1[m].dset8[n][o-1] << 1); - val8bits = (int8_t)(val8bits << 1); - } - - /* Array of 16 bits signed int */ - dims[0] = F70_XDIM; dims[1] = F70_YDIM16; - - val16bits = (int16_t) ~0; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Array1[m].dset16[n][0] = val16bits; - for(o = 1; o < (int)dims[1]; o++) - Array1[m].dset16[n][o] = (int16_t)(Array1[m].dset16[n][o-1] << 1); - val16bits = (int16_t)(val16bits << 1); - } - - /* Array of 32 bits signed int */ - dims[0] = F70_XDIM; dims[1] = F70_YDIM32; - - val32bits = (int32_t) ~0; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Array1[m].dset32[n][0] = val32bits; - for(o = 1; o < (int)dims[1]; o++) - Array1[m].dset32[n][o] = Array1[m].dset32[n][o-1] << 1; - val32bits <<= 1; - } - - /* Array of 64 bits signed int */ - dims[0] = F70_XDIM; dims[1] = F70_YDIM64; - - val64bits = (int64_t) ~0L; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Array1[m].dset64[n][0] = val64bits; - for(o = 1; o < (int)dims[1]; o++) - Array1[m].dset64[n][o] = Array1[m].dset64[n][o-1] << 1; - val64bits <<= 1; - } - - /* Double Dummy set for failure tests */ - dims[0] = F70_XDIM; dims[1] = F70_YDIM8; - - for(n = 0; n < (int)dims[0]; n++) - for(o = 0; o < (int)dims[1]; o++) - Array1[m].dsetdbl[n][o] = 0.0001F * (float)o + (float)n; - } - - /* Create the array data type for the 8 bits signed int array */ - array8_tid = H5Tarray_create2(H5T_NATIVE_SCHAR, F70_ARRAY_RANK, array_dim8); - HDassert(array8_tid >= 0); - - /* Create the array data type for the 16 bits signed int array */ - array16_tid = H5Tarray_create2(H5T_NATIVE_SHORT, F70_ARRAY_RANK, array_dim16); - HDassert(array16_tid >= 0); - - /* Create the array data type for the 32 bits signed int array */ - array32_tid = H5Tarray_create2(H5T_NATIVE_INT, F70_ARRAY_RANK, array_dim32); - HDassert(array32_tid >= 0); - - /* Create the array data type for the 64 bits signed int array */ - array64_tid = H5Tarray_create2(H5T_NATIVE_LONG, F70_ARRAY_RANK, array_dim64); - HDassert(array64_tid >= 0); - - /* Create the array data type for the 8 bits signed int array */ - arrayu8_tid = H5Tarray_create2(H5T_NATIVE_UCHAR, F70_ARRAY_RANK, array_dim8); - HDassert(arrayu8_tid >= 0); - - /* Create the array data type for the 16 bits signed int array */ - arrayu16_tid = H5Tarray_create2(H5T_NATIVE_USHORT, F70_ARRAY_RANK, array_dim16); - HDassert(arrayu16_tid >= 0); - - /* Create the array data type for the 32 bits signed int array */ - arrayu32_tid = H5Tarray_create2(H5T_NATIVE_UINT, F70_ARRAY_RANK, array_dim32); - HDassert(arrayu32_tid >= 0); - - /* Create the array data type for the 64 bits signed int array */ - arrayu64_tid = H5Tarray_create2(H5T_NATIVE_ULONG, F70_ARRAY_RANK, array_dim64); - HDassert(arrayu64_tid >= 0); - - /* Create the array data type for the 32 bits double array */ - arraydbl_tid = H5Tarray_create2(H5T_NATIVE_DOUBLE, F70_ARRAY_RANK, array_dim8); - HDassert(arraydbl_tid >= 0); - - /* Create the dataspace */ - space = H5Screate_simple(F70_RANK, dim, NULL); - HDassert(space >= 0); - - /* Create the file */ - fid = H5Fcreate(FILE70, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - HDassert(fid >= 0); - - /* Create the memory data type */ - Array1Structid = H5Tcreate(H5T_COMPOUND, sizeof(Array1Struct)); - HDassert(Array1Structid >= 0); - - /* Insert the arrays and variables into the structure */ - status = H5Tinsert(Array1Structid, F70_DATASETU08, HOFFSET(Array1Struct, dsetu8), arrayu8_tid); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, F70_DATASETU16, HOFFSET(Array1Struct, dsetu16), arrayu16_tid); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, F70_DATASETU32, HOFFSET(Array1Struct, dsetu32), arrayu32_tid); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, F70_DATASETU64, HOFFSET(Array1Struct, dsetu64), arrayu64_tid); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, F70_DATASETS08, HOFFSET(Array1Struct, dset8), array8_tid); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, F70_DATASETS16, HOFFSET(Array1Struct, dset16), array16_tid); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, F70_DATASETS32, HOFFSET(Array1Struct, dset32), array32_tid); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, F70_DATASETS64, HOFFSET(Array1Struct, dset64), array64_tid); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, F70_DUMMYDBL, HOFFSET(Array1Struct, dsetdbl), arraydbl_tid); - HDassert(status >= 0); - - /* Create the dataset */ - dataset = H5Dcreate2(fid, F70_DATASETNAME, Array1Structid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write data to the dataset */ - status = H5Dwrite(dataset, Array1Structid, H5S_ALL, H5S_ALL, H5P_DEFAULT, Array1); - HDassert(status >= 0); - - /* Release resources */ - status = H5Tclose(Array1Structid); - HDassert(status >= 0); - - status = H5Tclose(arrayu8_tid); - HDassert(status >= 0); - - status = H5Tclose(arrayu16_tid); - HDassert(status >= 0); - - status = H5Tclose(arrayu32_tid); - HDassert(status >= 0); - - status = H5Tclose(arrayu64_tid); - HDassert(status >= 0); - - status = H5Tclose(array8_tid); - HDassert(status >= 0); - - status = H5Tclose(array16_tid); - HDassert(status >= 0); - - status = H5Tclose(array32_tid); - HDassert(status >= 0); - - status = H5Tclose(array64_tid); - HDassert(status >= 0); - - status = H5Tclose(arraydbl_tid); - HDassert(status >= 0); - - status = H5Sclose(space); - HDassert(status >= 0); - - status = H5Dclose(dataset); - HDassert(status >= 0); - - status = H5Fclose(fid); - HDassert(status >= 0); - - HDfree(Array1); -} - -static void gent_compound_attr_intsizes(void) { - hid_t fid, attr, space, root; - hsize_t dims[2]; - hsize_t array_dim8[]={F70_XDIM,F70_YDIM8}; /* Array dimensions */ - hsize_t array_dim16[]={F70_XDIM,F70_YDIM16}; /* Array dimensions */ - hsize_t array_dim32[]={F70_XDIM,F70_YDIM32}; /* Array dimensions */ - hsize_t array_dim64[]={F70_XDIM,F70_YDIM64}; /* Array dimensions */ - hid_t arrayu8_tid; /* Array datatype handle */ - hid_t arrayu16_tid; /* Array datatype handle */ - hid_t arrayu32_tid; /* Array datatype handle */ - hid_t arrayu64_tid; /* Array datatype handle */ - hid_t array8_tid; /* Array datatype handle */ - hid_t array16_tid; /* Array datatype handle */ - hid_t array32_tid; /* Array datatype handle */ - hid_t array64_tid; /* Array datatype handle */ - hid_t arraydbl_tid; /* Array datatype handle */ - uint8_t valu8bits; - uint16_t valu16bits; - uint32_t valu32bits; - uint64_t valu64bits; - int8_t val8bits; - int16_t val16bits; - int32_t val32bits; - int64_t val64bits; - /* Structure and array for compound types */ - typedef struct Array1Struct { - uint8_t dsetu8[F70_XDIM][F70_YDIM8]; - uint16_t dsetu16[F70_XDIM][F70_YDIM16]; - uint32_t dsetu32[F70_XDIM][F70_YDIM32]; - uint64_t dsetu64[F70_XDIM][F70_YDIM64]; - int8_t dset8[F70_XDIM][F70_YDIM8]; - int16_t dset16[F70_XDIM][F70_YDIM16]; - int32_t dset32[F70_XDIM][F70_YDIM32]; - int64_t dset64[F70_XDIM][F70_YDIM64]; - double dsetdbl[F70_XDIM][F70_YDIM8]; - } Array1Struct; - Array1Struct Array1[F70_LENGTH]; - - hid_t Array1Structid; /* File datatype identifier */ - herr_t status; /* Error checking variable */ - hsize_t dim[] = { F70_LENGTH }; /* Dataspace dimensions */ - - int m, n, o; /* Array init loop vars */ - - /* Initialize the data in the arrays/datastructure */ - for (m = 0; m < F70_LENGTH; m++) { - - /* Array of 8 bits unsigned int */ - dims[0] = F70_XDIM; dims[1] = F70_YDIM8; - - valu8bits = (uint8_t) ~0u; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Array1[m].dsetu8[n][0] = valu8bits; - for(o = 1; o < (int)dims[1]; o++) { - Array1[m].dsetu8[n][o] = (uint8_t)(Array1[m].dsetu8[n][o-1] << 1); - } - valu8bits = (uint8_t)(valu8bits << 1); - } - - /* Array of 16 bits unsigned int */ - dims[0] = F70_XDIM; dims[1] = F70_YDIM16; - - valu16bits = (uint16_t) ~0u; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Array1[m].dsetu16[n][0] = valu16bits; - for(o = 1; o < (int)dims[1]; o++) { - Array1[m].dsetu16[n][o] = (uint16_t)(Array1[m].dsetu16[n][o-1] << 1); - } - valu16bits = (uint16_t)(valu16bits << 1); - } - - /* Array of 32 bits unsigned int */ - dims[0] = F70_XDIM; dims[1] = F70_YDIM32; - - valu32bits = (uint32_t) ~0u; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Array1[m].dsetu32[n][0] = valu32bits; - for(o = 1; o < (int)dims[1]; o++) { - Array1[m].dsetu32[n][o] = Array1[m].dsetu32[n][o-1] << 1; - } - valu32bits <<= 1; - } - - /* Array of 64 bits unsigned int */ - dims[0] = F70_XDIM; dims[1] = F70_YDIM64; - - valu64bits = (uint64_t) ~0Lu; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Array1[m].dsetu64[n][0] = valu64bits; - for(o = 1; o < (int)dims[1]; o++) { - Array1[m].dsetu64[n][o] = Array1[m].dsetu64[n][o-1] << 1; - } - valu64bits <<= 1; - } - - /* Array of 8 bits signed int */ - dims[0] = F70_XDIM; dims[1] = F70_YDIM8; - - val8bits = (int8_t) ~0; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Array1[m].dset8[n][0] = val8bits; - for(o = 1; o < (int)dims[1]; o++) { - Array1[m].dset8[n][o] = (int8_t)(Array1[m].dset8[n][o-1] << 1); - } - val8bits = (int8_t)(val8bits << 1); - } - - /* Array of 16 bits signed int */ - dims[0] = F70_XDIM; dims[1] = F70_YDIM16; - - val16bits = (int16_t) ~0; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Array1[m].dset16[n][0] = val16bits; - for(o = 1; o < (int)dims[1]; o++) { - Array1[m].dset16[n][o] = (int16_t)(Array1[m].dset16[n][o-1] << 1); - } - val16bits = (int16_t)(val16bits << 1); - } - - /* Array of 32 bits signed int */ - dims[0] = F70_XDIM; dims[1] = F70_YDIM32; - - val32bits = (int32_t) ~0; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Array1[m].dset32[n][0] = val32bits; - for(o = 1; o < (int)dims[1]; o++) { - Array1[m].dset32[n][o] = Array1[m].dset32[n][o-1] << 1; - } - val32bits <<= 1; - } - - /* Array of 64 bits signed int */ - dims[0] = F70_XDIM; dims[1] = F70_YDIM64; - - val64bits = (int64_t) ~0L; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Array1[m].dset64[n][0] = val64bits; - for(o = 1; o < (int)dims[1]; o++) { - Array1[m].dset64[n][o] = Array1[m].dset64[n][o-1] << 1; - } - val64bits <<= 1; - } - - /* Double Dummy set for failure tests */ - dims[0] = F70_XDIM; dims[1] = F70_YDIM8; - - for(n = 0; n < (int)dims[0]; n++) - for(o = 0; o < (int)dims[1]; o++) - Array1[m].dsetdbl[n][o] = 0.0001F * (float)o + (float)n; - } - - /* Create the array data type for the 8 bits signed int array */ - array8_tid = H5Tarray_create2(H5T_NATIVE_SCHAR, F70_ARRAY_RANK, array_dim8); - HDassert(array8_tid >= 0); - - /* Create the array data type for the 16 bits signed int array */ - array16_tid = H5Tarray_create2(H5T_NATIVE_SHORT, F70_ARRAY_RANK, array_dim16); - HDassert(array16_tid >= 0); - - /* Create the array data type for the 32 bits signed int array */ - array32_tid = H5Tarray_create2(H5T_NATIVE_INT, F70_ARRAY_RANK, array_dim32); - HDassert(array32_tid >= 0); - - /* Create the array data type for the 64 bits signed int array */ - array64_tid = H5Tarray_create2(H5T_NATIVE_LONG, F70_ARRAY_RANK, array_dim64); - HDassert(array64_tid >= 0); - - /* Create the array data type for the 8 bits signed int array */ - arrayu8_tid = H5Tarray_create2(H5T_NATIVE_UCHAR, F70_ARRAY_RANK, array_dim8); - HDassert(arrayu8_tid >= 0); - - /* Create the array data type for the 16 bits signed int array */ - arrayu16_tid = H5Tarray_create2(H5T_NATIVE_USHORT, F70_ARRAY_RANK, array_dim16); - HDassert(arrayu16_tid >= 0); - - /* Create the array data type for the 32 bits signed int array */ - arrayu32_tid = H5Tarray_create2(H5T_NATIVE_UINT, F70_ARRAY_RANK, array_dim32); - HDassert(arrayu32_tid >= 0); - - /* Create the array data type for the 64 bits signed int array */ - arrayu64_tid = H5Tarray_create2(H5T_NATIVE_ULONG, F70_ARRAY_RANK, array_dim64); - HDassert(arrayu64_tid >= 0); - - /* Create the array data type for the 32 bits double array */ - arraydbl_tid = H5Tarray_create2(H5T_NATIVE_DOUBLE, F70_ARRAY_RANK, array_dim8); - HDassert(arraydbl_tid >= 0); - - /* Create the dataspace */ - space = H5Screate_simple(F70_RANK, dim, NULL); - HDassert(space >= 0); - - /* Create the file */ - fid = H5Fcreate(FILE71, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - HDassert(fid >= 0); - - /* Create the memory data type */ - Array1Structid = H5Tcreate(H5T_COMPOUND, sizeof(Array1Struct)); - HDassert(Array1Structid >= 0); - - /* Insert the arrays and variables into the structure */ - status = H5Tinsert(Array1Structid, F70_DATASETU08, HOFFSET(Array1Struct, dsetu8), arrayu8_tid); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, F70_DATASETU16, HOFFSET(Array1Struct, dsetu16), arrayu16_tid); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, F70_DATASETU32, HOFFSET(Array1Struct, dsetu32), arrayu32_tid); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, F70_DATASETU64, HOFFSET(Array1Struct, dsetu64), arrayu64_tid); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, F70_DATASETS08, HOFFSET(Array1Struct, dset8), array8_tid); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, F70_DATASETS16, HOFFSET(Array1Struct, dset16), array16_tid); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, F70_DATASETS32, HOFFSET(Array1Struct, dset32), array32_tid); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, F70_DATASETS64, HOFFSET(Array1Struct, dset64), array64_tid); - HDassert(status >= 0); - - status = H5Tinsert(Array1Structid, F70_DUMMYDBL, HOFFSET(Array1Struct, dsetdbl), arraydbl_tid); - HDassert(status >= 0); - - root = H5Gopen2(fid, "/", H5P_DEFAULT); - - /* Create the Attribute */ - attr = H5Acreate2(root, F71_DATASETNAME, Array1Structid, space, H5P_DEFAULT, H5P_DEFAULT); - - /* Write data to the attribute */ - status = H5Awrite(attr, Array1Structid, Array1); - HDassert(status >= 0); - - status = H5Tclose(arrayu8_tid); - HDassert(status >= 0); - - status = H5Tclose(arrayu16_tid); - HDassert(status >= 0); - - status = H5Tclose(arrayu32_tid); - HDassert(status >= 0); - - status = H5Tclose(arrayu64_tid); - HDassert(status >= 0); - - status = H5Tclose(array8_tid); - HDassert(status >= 0); - - status = H5Tclose(array16_tid); - HDassert(status >= 0); - - status = H5Tclose(array32_tid); - HDassert(status >= 0); - - status = H5Tclose(array64_tid); - HDassert(status >= 0); - - status = H5Tclose(arraydbl_tid); - HDassert(status >= 0); - - /* Release resources */ - status = H5Tclose(Array1Structid); - HDassert(status >= 0); - - status = H5Sclose(space); - HDassert(status >= 0); - - status = H5Aclose(attr); - HDassert(status >= 0); - - status = H5Fclose(fid); - HDassert(status >= 0); -} - -static void gent_nested_compound_dt(void) { /* test nested data type */ - hid_t fid, group, dataset, space, type, create_plist, type1, type2; - hid_t array_dt, enum_dt; - enumtype val; - - typedef struct { - int a; - float b; - } dset1_t; - dset1_t dset1[10]; - - typedef struct { - int a; - float b; - enumtype c; - } dset2_t; - dset2_t dset2[10]; - - typedef struct { - int a[5]; - float b[5][6]; - dset1_t c; - } dset3_t; - dset3_t dset3[10]; - - enumtype dset4[] = {RED, GREEN, BLUE, GREEN, WHITE, BLUE}; - - int i, j, k; - unsigned ndims; - hsize_t dim[2]; - - hsize_t sdim, maxdim; - - sdim = 10; - for(i = 0; i < (int)sdim; i++) { - dset1[i].a = i; - dset1[i].b = (float)(i*i); - - dset2[i].a = i; - dset2[i].b = (float)((float)i + (float)i * 0.1F); - dset2[i].c = GREEN; - - for(j = 0; j < 5; j++) { - dset3[i].a[j] = i * j; - for(k = 0; k < 6; k++) { - dset3[i].b[j][k] = (float)((float)i * (float)j * (float)k * 1.0F); - } - } - dset3[i].c.a = i; - dset3[i].c.b = (float)((float)i * 1.0F); - } - - fid = H5Fcreate(FILE72, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - create_plist = H5Pcreate(H5P_DATASET_CREATE); - - sdim = 2; - H5Pset_chunk(create_plist, 1, &sdim); - - - sdim = 6; - maxdim = H5S_UNLIMITED; - - space = H5Screate_simple(1, &sdim, &maxdim); - - type = H5Tcreate (H5T_COMPOUND, sizeof(dset1[0])); - H5Tinsert(type, "a_name", HOFFSET(dset1_t, a), H5T_STD_I32LE); - H5Tinsert(type, "b_name", HOFFSET(dset1_t, b), H5T_IEEE_F32LE); - - dataset = H5Dcreate2(fid, "/dset1", type, space, H5P_DEFAULT, create_plist, H5P_DEFAULT); - - H5Dwrite(dataset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset1); - - H5Tclose(type); - H5Dclose(dataset); - - /* Create the shared enumerated datatype. */ - enum_dt = H5Tenum_create (H5T_NATIVE_INT); - val = (enumtype) RED; - H5Tenum_insert (enum_dt, "Red", &val); - val = (enumtype) GREEN; - H5Tenum_insert (enum_dt, "Green", &val); - val = (enumtype) BLUE; - H5Tenum_insert (enum_dt, "Blue", &val); - val = (enumtype) WHITE; - H5Tenum_insert (enum_dt, "White", &val); - val = (enumtype) BLACK; - H5Tenum_insert (enum_dt, "Black", &val); - H5Tcommit2(fid, "enumtype", enum_dt, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - type2 = H5Tcreate (H5T_COMPOUND, sizeof(dset2[0])); - - H5Tinsert(type2, "a_name", HOFFSET(dset2_t, a), H5T_NATIVE_INT); - H5Tinsert(type2, "b_name", HOFFSET(dset2_t, b), H5T_NATIVE_FLOAT); - H5Tinsert(type2, "c_name", HOFFSET(dset2_t, c), enum_dt); - - dataset = H5Dcreate2(fid, "/dset2", type2, space, H5P_DEFAULT, create_plist, H5P_DEFAULT); - - H5Dwrite(dataset, type2, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2); - - H5Tclose(type2); - - dataset = H5Dcreate2(fid, "/dset4", enum_dt, space, H5P_DEFAULT, create_plist, H5P_DEFAULT); - H5Dwrite(dataset, enum_dt, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset4); - - H5Tclose(enum_dt); - H5Dclose(dataset); - - /* shared data type 1 */ - type1 = H5Tcreate(H5T_COMPOUND, sizeof(dset1_t)); - H5Tinsert(type1, "int_name", HOFFSET(dset1_t, a), H5T_STD_I32LE); - H5Tinsert(type1, "float_name", HOFFSET(dset1_t, b), H5T_IEEE_F32LE); - H5Tcommit2(fid, "type1", type1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - group = H5Gcreate2(fid, "/group1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - type2 = H5Tcreate (H5T_COMPOUND, sizeof(dset3_t)); - - ndims = 1; dim[0] = 5; - array_dt = H5Tarray_create2(H5T_STD_I32LE, ndims, dim); - H5Tinsert(type2, "int_name", HOFFSET(dset3_t, a), array_dt); - H5Tclose(array_dt); - - ndims = 2; dim[0] = 5; dim[1] = 6; - array_dt = H5Tarray_create2(H5T_IEEE_F32LE, ndims, dim); - H5Tinsert(type2, "float_name", HOFFSET(dset3_t, b), array_dt); - H5Tclose(array_dt); - - H5Tinsert (type2, "cmpd_name", HOFFSET (dset3_t, c), type1); - - dataset = H5Dcreate2(group, "dset3", type2, space, H5P_DEFAULT, create_plist, H5P_DEFAULT); - - H5Dwrite(dataset, type2, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset3); - - dataset = H5Dcreate2(fid, "/dset5", type1, space, H5P_DEFAULT, create_plist, H5P_DEFAULT); - H5Dwrite(dataset, type1, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset1); - - H5Tclose(type1); - H5Tclose(type2); - H5Sclose(space); - H5Dclose(dataset); - H5Gclose(group); - - H5Pclose(create_plist); - - H5Fclose(fid); - -} - -/*------------------------------------------------------------------------- - * Function: gent_intscalars - * - * Purpose: Generate a file to be used in the h5dump scalar tests. - * Four datasets of 1, 2, 4 and 8 bytes of unsigned int types are created. - * Four more datasets of 1, 2, 4 and 8 bytes of signed int types are created. - * Fill them with raw data such that no bit will be all zero in a dataset. - * A dummy dataset of double type is created for failure test. - *------------------------------------------------------------------------- - */ -static void -gent_intscalars(void) -{ - hid_t fid, dataset, space, tid; - hsize_t dims[2]; - uint8_t dsetu8[F73_XDIM][F73_YDIM8], valu8bits; - uint16_t dsetu16[F73_XDIM][F73_YDIM16], valu16bits; - uint32_t dsetu32[F73_XDIM][F73_YDIM32], valu32bits; - uint64_t dsetu64[F73_XDIM][F73_YDIM64], valu64bits; - int8_t dset8[F73_XDIM][F73_YDIM8], val8bits; - int16_t dset16[F73_XDIM][F73_YDIM16], val16bits; - int32_t dset32[F73_XDIM][F73_YDIM32], val32bits; - int64_t dset64[F73_XDIM][F73_YDIM64], val64bits; - double dsetdbl[F73_XDIM][F73_YDIM8]; - unsigned int i, j; - - fid = H5Fcreate(FILE73, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* Dataset of 8 bits unsigned int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM8; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_U8LE, F73_ARRAY_RANK, dims); - dataset = H5Dcreate2(fid, F73_DATASETU08, tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - valu8bits = (uint8_t) ~0u; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu8[i][0] = valu8bits; - for(j = 1; j < dims[1]; j++) { - dsetu8[i][j] = (uint8_t)(dsetu8[i][j-1] << 1); - } - valu8bits = (uint8_t)(valu8bits << 1); - } - - H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetu8); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 16 bits unsigned int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM16; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_U16LE, F73_ARRAY_RANK, dims); - dataset = H5Dcreate2(fid, F73_DATASETU16, tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - valu16bits = (uint16_t) ~0u; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu16[i][0] = valu16bits; - for(j = 1; j < dims[1]; j++) { - dsetu16[i][j] = (uint16_t)(dsetu16[i][j-1] << 1); - } - valu16bits = (uint16_t)(valu16bits << 1); - } - - H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetu16); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 32 bits unsigned int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM32; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_U32LE, F73_ARRAY_RANK, dims); - dataset = H5Dcreate2(fid, F73_DATASETU32, tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - valu32bits = (uint32_t) ~0u; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu32[i][0] = valu32bits; - for(j = 1; j < dims[1]; j++) { - dsetu32[i][j] = dsetu32[i][j-1] << 1; - } - valu32bits <<= 1; - } - - H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetu32); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 64 bits unsigned int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM64; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_U64LE, F73_ARRAY_RANK, dims); - dataset = H5Dcreate2(fid, F73_DATASETU64, tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - valu64bits = (uint64_t) ~0Lu; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu64[i][0] = valu64bits; - for(j = 1; j < dims[1]; j++) { - dsetu64[i][j] = dsetu64[i][j-1] << 1; - } - valu64bits <<= 1; - } - - H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetu64); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 8 bits signed int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM8; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_I8LE, F73_ARRAY_RANK, dims); - dataset = H5Dcreate2(fid, F73_DATASETS08, tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - val8bits = (int8_t) ~0; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset8[i][0] = val8bits; - for(j = 1; j < dims[1]; j++) { - dset8[i][j] = (int8_t)(dset8[i][j-1] << 1); - } - val8bits = (int8_t)(val8bits << 1); - } - - H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset8); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 16 bits signed int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM16; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_I16LE, F73_ARRAY_RANK, dims); - dataset = H5Dcreate2(fid, F73_DATASETS16, tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - val16bits = (int16_t) ~0; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset16[i][0] = val16bits; - for(j = 1; j < dims[1]; j++) { - dset16[i][j] = (int16_t)(dset16[i][j-1] << 1); - } - val16bits = (int16_t)(val16bits << 1); - } - - H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset16); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 32 bits signed int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM32; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_I32LE, F73_ARRAY_RANK, dims); - dataset = H5Dcreate2(fid, F73_DATASETS32, tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - val32bits = (int32_t) ~0; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset32[i][0] = val32bits; - for(j = 1; j < dims[1]; j++) { - dset32[i][j] = dset32[i][j-1] << 1; - } - val32bits <<= 1; - } - - H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset32); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 64 bits signed int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM64; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_I64LE, F73_ARRAY_RANK, dims); - dataset = H5Dcreate2(fid, F73_DATASETS64, tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - val64bits = (int64_t) ~0L; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset64[i][0] = val64bits; - for(j = 1; j < dims[1]; j++) { - dset64[i][j] = dset64[i][j-1] << 1; - } - val64bits <<= 1; - } - - H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset64); - H5Sclose(space); - H5Dclose(dataset); - - /* Double Dummy set for failure tests */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM8; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_NATIVE_DOUBLE, F73_ARRAY_RANK, dims); - dataset = H5Dcreate2(fid, F73_DUMMYDBL, tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - for(i = 0; i < dims[0]; i++) - for(j = 0; j < dims[1]; j++) - dsetdbl[i][j] = 0.0001F * (float)j + (float)i; - - H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetdbl); - - H5Sclose(space); - H5Dclose(dataset); - H5Fclose(fid); -} - -/*------------------------------------------------------------------------- - * Function: gent_attr_intscalars - * - * Purpose: Generate a file to be used in the h5dump attribute scalar tests. - * Four attributes of 1, 2, 4 and 8 bytes of unsigned int types are created. - * Four more datasets of 1, 2, 4 and 8 bytes of signed int types are created. - * Fill them with raw data such that no bit will be all zero in a dataset. - * A dummy dataset of double type is created for failure test. - * Use file to test Signed/Unsigned datatypes and keep in sync with gent_packedbits() - *------------------------------------------------------------------------- - */ -static void -gent_attr_intscalars(void) -{ - hid_t fid, attr, space, root, tid; - hsize_t dims[2]; - uint8_t dsetu8[F73_XDIM][F73_YDIM8], valu8bits; - uint16_t dsetu16[F73_XDIM][F73_YDIM16], valu16bits; - uint32_t dsetu32[F73_XDIM][F73_YDIM32], valu32bits; - uint64_t dsetu64[F73_XDIM][F73_YDIM64], valu64bits; - int8_t dset8[F73_XDIM][F73_YDIM8], val8bits; - int16_t dset16[F73_XDIM][F73_YDIM16], val16bits; - int32_t dset32[F73_XDIM][F73_YDIM32], val32bits; - int64_t dset64[F73_XDIM][F73_YDIM64], val64bits; - double dsetdbl[F73_XDIM][F73_YDIM8]; - unsigned int i, j; - - fid = H5Fcreate(FILE74, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - root = H5Gopen2(fid, "/", H5P_DEFAULT); - - /* Attribute of 8 bits unsigned int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM8; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_U8LE, F73_ARRAY_RANK, dims); - attr = H5Acreate2(root, F73_DATASETU08, tid, space, H5P_DEFAULT, H5P_DEFAULT); - - valu8bits = (uint8_t) ~0u; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu8[i][0] = valu8bits; - for(j = 1; j < dims[1]; j++) { - dsetu8[i][j] = (uint8_t)(dsetu8[i][j-1] << 1); - } - valu8bits = (uint8_t)(valu8bits << 1); - } - - H5Awrite(attr, tid, dsetu8); - H5Sclose(space); - H5Aclose(attr); - - /* Attribute of 16 bits unsigned int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM16; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_U16LE, F73_ARRAY_RANK, dims); - attr = H5Acreate2(root, F73_DATASETU16, tid, space, H5P_DEFAULT, H5P_DEFAULT); - - valu16bits = (uint16_t) ~0u; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu16[i][0] = valu16bits; - for(j = 1; j < dims[1]; j++) { - dsetu16[i][j] = (uint16_t)(dsetu16[i][j-1] << 1); - } - valu16bits = (uint16_t)(valu16bits << 1); - } - - H5Awrite(attr, tid, dsetu16); - H5Sclose(space); - H5Aclose(attr); - - /* Attribute of 32 bits unsigned int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM32; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_U32LE, F73_ARRAY_RANK, dims); - attr = H5Acreate2(root, F73_DATASETU32, tid, space, H5P_DEFAULT, H5P_DEFAULT); - - valu32bits = (uint32_t) ~0u; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu32[i][0] = valu32bits; - for(j = 1; j < dims[1]; j++) { - dsetu32[i][j] = dsetu32[i][j-1] << 1; - } - valu32bits <<= 1; - } - - H5Awrite(attr, tid, dsetu32); - H5Sclose(space); - H5Aclose(attr); - - /* Attribute of 64 bits unsigned int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM64; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_U64LE, F73_ARRAY_RANK, dims); - attr = H5Acreate2(root, F73_DATASETU64, tid, space, H5P_DEFAULT, H5P_DEFAULT); - - valu64bits = (uint64_t) ~0Lu; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu64[i][0] = valu64bits; - for(j = 1; j < dims[1]; j++) { - dsetu64[i][j] = dsetu64[i][j-1] << 1; - } - valu64bits <<= 1; - } - - H5Awrite(attr, tid, dsetu64); - H5Sclose(space); - H5Aclose(attr); - - /* Attribute of 8 bits signed int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM8; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_I8LE, F73_ARRAY_RANK, dims); - attr = H5Acreate2(root, F73_DATASETS08, tid, space, H5P_DEFAULT, H5P_DEFAULT); - - val8bits = (int8_t) ~0; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset8[i][0] = val8bits; - for(j = 1; j < dims[1]; j++) { - dset8[i][j] = (int8_t)(dset8[i][j-1] << 1); - } - val8bits = (int8_t)(val8bits << 1); - } - - H5Awrite(attr, tid, dset8); - H5Sclose(space); - H5Aclose(attr); - - /* Attribute of 16 bits signed int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM16; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_I16LE, F73_ARRAY_RANK, dims); - attr = H5Acreate2(root, F73_DATASETS16, tid, space, H5P_DEFAULT, H5P_DEFAULT); - - val16bits = (int16_t) ~0; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset16[i][0] = val16bits; - for(j = 1; j < dims[1]; j++) { - dset16[i][j] = (int16_t)(dset16[i][j-1] << 1); - } - val16bits = (int16_t)(val16bits << 1); - } - - H5Awrite(attr, tid, dset16); - H5Sclose(space); - H5Aclose(attr); - - /* Attribute of 32 bits signed int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM32; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_I32LE, F73_ARRAY_RANK, dims); - attr = H5Acreate2(root, F73_DATASETS32, tid, space, H5P_DEFAULT, H5P_DEFAULT); - - val32bits = (int32_t) ~0; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset32[i][0] = val32bits; - for(j = 1; j < dims[1]; j++) { - dset32[i][j] = dset32[i][j-1] << 1; - } - val32bits <<= 1; - } - - H5Awrite(attr, tid, dset32); - H5Sclose(space); - H5Aclose(attr); - - /* Attribute of 64 bits signed int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM64; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_I64LE, F73_ARRAY_RANK, dims); - attr = H5Acreate2(root, F73_DATASETS64, tid, space, H5P_DEFAULT, H5P_DEFAULT); - - val64bits = (int64_t) ~0L; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset64[i][0] = val64bits; - for(j = 1; j < dims[1]; j++) { - dset64[i][j] = dset64[i][j-1] << 1; - } - val64bits <<= 1; - } - - H5Awrite(attr, tid, dset64); - H5Sclose(space); - H5Aclose(attr); - - /* Double Dummy set for failure tests */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM8; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_NATIVE_DOUBLE, F73_ARRAY_RANK, dims); - attr = H5Acreate2(root, F73_DUMMYDBL, tid, space, H5P_DEFAULT, H5P_DEFAULT); - - for(i = 0; i < dims[0]; i++) - for(j = 0; j < dims[1]; j++) - dsetdbl[i][j] = 0.0001F * (float)j + (float)i; - - H5Awrite(attr, tid, dsetdbl); - - H5Sclose(space); - H5Aclose(attr); - - H5Gclose(root); - H5Fclose(fid); -} - -/*------------------------------------------------------------------------- - * Function: gent_string_scalars - * - * Purpose: Generate a file to be used in the h5dump string scalar tests. - * A dataset of string types are created. - * An attribute of string types are created. - * Fill them with raw data such that no bit will be all zero in a dataset. - *------------------------------------------------------------------------- - */ -static void -gent_string_scalars(void) -{ - hid_t fid, attr, dataset, space, tid, root; - hsize_t dims[2]; - char string[F73_XDIM][F73_YDIM8]; - unsigned int i, j; - - fid = H5Fcreate(FILE75, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - root = H5Gopen2(fid, "/", H5P_DEFAULT); - - /* string scalar */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM8; - space = H5Screate(H5S_SCALAR); - tid = H5Tcopy(H5T_C_S1); - H5Tset_size(tid, F73_XDIM * F73_YDIM8); - - memset(string, ' ', F73_XDIM * F73_YDIM8); - for(i = 0; i < dims[0]; i++) { - string[i][0] = (char)('A' + i); - for(j = 1; j < dims[1]; j++) { - string[i][j] = (char)(string[i][j-1] + 1); - } - } - string[dims[0]-1][dims[1]-1] = 0; - - /* Dataset of string scalar */ - dataset = H5Dcreate2(fid, "the_str", tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, string); - H5Dclose(dataset); - - /* attribute of string scalar */ - attr = H5Acreate2(root, "attr_str", tid, space, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, tid, string); - - H5Sclose(space); - H5Aclose(attr); - - H5Gclose(root); - H5Fclose(fid); -} - -static void gent_compound_int_array(void) { - hid_t fid, dataset, space; - hsize_t dims[1]; - uint8_t valu8bits; - uint16_t valu16bits; - uint32_t valu32bits; - uint64_t valu64bits; - int8_t val8bits; - int16_t val16bits; - int32_t val32bits; - int64_t val64bits; - hsize_t array_dim8[]={F76_DIM8}; /* Array dimensions */ - hsize_t array_dim16[]={F76_DIM16}; /* Array dimensions */ - hsize_t array_dim32[]={F76_DIM32}; /* Array dimensions */ - hsize_t array_dim64[]={F76_DIM64}; /* Array dimensions */ - hid_t arrayu8_tid; /* Array datatype handle */ - hid_t arrayu16_tid; /* Array datatype handle */ - hid_t arrayu32_tid; /* Array datatype handle */ - hid_t arrayu64_tid; /* Array datatype handle */ - hid_t array8_tid; /* Array datatype handle */ - hid_t array16_tid; /* Array datatype handle */ - hid_t array32_tid; /* Array datatype handle */ - hid_t array64_tid; /* Array datatype handle */ - hid_t arraydbl_tid; /* Array datatype handle */ - /* Structure and array for compound types */ - typedef struct Cmpd1Struct { - uint8_t dsetu8[F76_DIM8]; - uint16_t dsetu16[F76_DIM16]; - uint32_t dsetu32[F76_DIM32]; - uint64_t dsetu64[F76_DIM64]; - int8_t dset8[F76_DIM8]; - int16_t dset16[F76_DIM16]; - int32_t dset32[F76_DIM32]; - int64_t dset64[F76_DIM64]; - double dsetdbl[F76_DIM8]; - } Cmpd1Struct; - Cmpd1Struct *Cmpd1; - - hid_t Cmpd1Structid; /* File datatype identifier */ - herr_t status; /* Error checking variable */ - hsize_t dim[] = { F76_LENGTH }; /* Dataspace dimensions */ - - int m, n; /* Array init loop vars */ - - /* Allocate buffer */ - Cmpd1 = (Cmpd1Struct *)HDmalloc(sizeof(Cmpd1Struct) * F76_LENGTH); - HDassert(Cmpd1); - - /* Initialize the data in the arrays/datastructure */ - for (m = 0; m < F76_LENGTH; m++) { - - /* Array of 8 bits unsigned int */ - dims[0] = F76_DIM8; - - valu8bits = (uint8_t) ~0u; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Cmpd1[m].dsetu8[n] = valu8bits; - valu8bits = (uint8_t)(valu8bits << 1); - } - - /* Array of 16 bits unsigned int */ - dims[0] = F76_DIM16; - - valu16bits = (uint16_t) ~0u; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Cmpd1[m].dsetu16[n] = valu16bits; - valu16bits = (uint16_t)(valu16bits << 1); - } - - /* Array of 32 bits unsigned int */ - dims[0] = F76_DIM32; - - valu32bits = (uint32_t) ~0u; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Cmpd1[m].dsetu32[n] = valu32bits; - valu32bits <<= 1; - } - - /* Array of 64 bits unsigned int */ - dims[0] = F76_DIM64; - - valu64bits = (uint64_t) ~0Lu; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Cmpd1[m].dsetu64[n] = valu64bits; - valu64bits <<= 1; - } - - /* Array of 8 bits signed int */ - dims[0] = F76_DIM8; - - val8bits = (int8_t) ~0; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Cmpd1[m].dset8[n] = val8bits; - val8bits = (int8_t)(val8bits << 1); - } - - /* Array of 16 bits signed int */ - dims[0] = F76_DIM16; - - val16bits = (int16_t) ~0; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Cmpd1[m].dset16[n] = val16bits; - val16bits = (int16_t)(val16bits << 1); - } - - /* Array of 32 bits signed int */ - dims[0] = F76_DIM32; - - val32bits = (int32_t) ~0; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Cmpd1[m].dset32[n] = val32bits; - val32bits <<= 1; - } - - /* Array of 64 bits signed int */ - dims[0] = F76_DIM64; - - val64bits = (int64_t) ~0L; /* all 1s */ - for(n = 0; n < (int)dims[0]; n++){ - Cmpd1[m].dset64[n] = val64bits; - val64bits <<= 1; - } - - /* Double Dummy set for failure tests */ - dims[0] = F76_DIM8; - - for(n = 0; n < (int)dims[0]; n++) - Cmpd1[m].dsetdbl[n] = 0.0001F + (float)n; - } - - /* Create the array data type for the 8 bits signed int array */ - array8_tid = H5Tarray_create2(H5T_NATIVE_SCHAR, F76_ARRAY_RANK, array_dim8); - HDassert(array8_tid >= 0); - - /* Create the array data type for the 16 bits signed int array */ - array16_tid = H5Tarray_create2(H5T_NATIVE_SHORT, F76_ARRAY_RANK, array_dim16); - HDassert(array16_tid >= 0); - - /* Create the array data type for the 32 bits signed int array */ - array32_tid = H5Tarray_create2(H5T_NATIVE_INT, F76_ARRAY_RANK, array_dim32); - HDassert(array32_tid >= 0); - - /* Create the array data type for the 64 bits signed int array */ - array64_tid = H5Tarray_create2(H5T_NATIVE_LONG, F76_ARRAY_RANK, array_dim64); - HDassert(array64_tid >= 0); - - /* Create the array data type for the 8 bits signed int array */ - arrayu8_tid = H5Tarray_create2(H5T_NATIVE_UCHAR, F76_ARRAY_RANK, array_dim8); - HDassert(arrayu8_tid >= 0); - - /* Create the array data type for the 16 bits signed int array */ - arrayu16_tid = H5Tarray_create2(H5T_NATIVE_USHORT, F76_ARRAY_RANK, array_dim16); - HDassert(arrayu16_tid >= 0); - - /* Create the array data type for the 32 bits signed int array */ - arrayu32_tid = H5Tarray_create2(H5T_NATIVE_UINT, F76_ARRAY_RANK, array_dim32); - HDassert(arrayu32_tid >= 0); - - /* Create the array data type for the 64 bits signed int array */ - arrayu64_tid = H5Tarray_create2(H5T_NATIVE_ULONG, F76_ARRAY_RANK, array_dim64); - HDassert(arrayu64_tid >= 0); - - /* Create the array data type for the 32 bits double array */ - arraydbl_tid = H5Tarray_create2(H5T_NATIVE_DOUBLE, F76_ARRAY_RANK, array_dim8); - HDassert(arraydbl_tid >= 0); - - /* Create the dataspace */ - space = H5Screate_simple(F76_RANK, dim, NULL); - HDassert(space >= 0); - - /* Create the file */ - fid = H5Fcreate(FILE76, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - HDassert(fid >= 0); - - /* Create the memory data type */ - Cmpd1Structid = H5Tcreate(H5T_COMPOUND, sizeof(Cmpd1Struct)); - HDassert(Cmpd1Structid >= 0); - - /* Insert the arrays and variables into the structure */ - status = H5Tinsert(Cmpd1Structid, F76_DATASETU08, HOFFSET(Cmpd1Struct, dsetu8), arrayu8_tid); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd1Structid, F76_DATASETU16, HOFFSET(Cmpd1Struct, dsetu16), arrayu16_tid); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd1Structid, F76_DATASETU32, HOFFSET(Cmpd1Struct, dsetu32), arrayu32_tid); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd1Structid, F76_DATASETU64, HOFFSET(Cmpd1Struct, dsetu64), arrayu64_tid); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd1Structid, F76_DATASETS08, HOFFSET(Cmpd1Struct, dset8), array8_tid); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd1Structid, F76_DATASETS16, HOFFSET(Cmpd1Struct, dset16), array16_tid); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd1Structid, F76_DATASETS32, HOFFSET(Cmpd1Struct, dset32), array32_tid); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd1Structid, F76_DATASETS64, HOFFSET(Cmpd1Struct, dset64), array64_tid); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd1Structid, F76_DUMMYDBL, HOFFSET(Cmpd1Struct, dsetdbl), arraydbl_tid); - HDassert(status >= 0); - - /* Create the dataset */ - dataset = H5Dcreate2(fid, F76_DATASETNAME, Cmpd1Structid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write data to the dataset */ - status = H5Dwrite(dataset, Cmpd1Structid, H5S_ALL, H5S_ALL, H5P_DEFAULT, Cmpd1); - HDassert(status >= 0); - - /* Release resources */ - status = H5Tclose(Cmpd1Structid); - HDassert(status >= 0); - - status = H5Tclose(arrayu8_tid); - HDassert(status >= 0); - - status = H5Tclose(arrayu16_tid); - HDassert(status >= 0); - - status = H5Tclose(arrayu32_tid); - HDassert(status >= 0); - - status = H5Tclose(arrayu64_tid); - HDassert(status >= 0); - - status = H5Tclose(array8_tid); - HDassert(status >= 0); - - status = H5Tclose(array16_tid); - HDassert(status >= 0); - - status = H5Tclose(array32_tid); - HDassert(status >= 0); - - status = H5Tclose(array64_tid); - HDassert(status >= 0); - - status = H5Tclose(arraydbl_tid); - HDassert(status >= 0); - - status = H5Sclose(space); - HDassert(status >= 0); - - status = H5Dclose(dataset); - HDassert(status >= 0); - - status = H5Fclose(fid); - HDassert(status >= 0); - - HDfree(Cmpd1); -} - -static void gent_compound_ints(void) { - hid_t fid, dataset, space; - uint8_t valu8bits = (uint8_t) ~0u; /* all 1s */ - uint16_t valu16bits = (uint16_t) ~0u; /* all 1s */ - uint32_t valu32bits = (uint32_t) ~0u; /* all 1s */ - uint64_t valu64bits = (uint64_t) ~0Lu; /* all 1s */ - int8_t val8bits = (int8_t) ~0; /* all 1s */ - int16_t val16bits = (int16_t) ~0; /* all 1s */ - int32_t val32bits = (int32_t) ~0; /* all 1s */ - int64_t val64bits = (int64_t) ~0L; /* all 1s */ - /* Structure and array for compound types */ - typedef struct Cmpd1Struct { - uint8_t dsetu8; - uint16_t dsetu16; - uint32_t dsetu32; - uint64_t dsetu64; - int8_t dset8; - int16_t dset16; - int32_t dset32; - int64_t dset64; - double dsetdbl; - } Cmpd1Struct; - Cmpd1Struct *Cmpd1; - - typedef struct Cmpd2Struct { - uint64_t dsetu64; - uint32_t dsetu32; - uint16_t dsetu16; - uint8_t dsetu8; - int64_t dset64; - int32_t dset32; - int16_t dset16; - int8_t dset8; - double dsetdbl; - } Cmpd2Struct; - Cmpd2Struct *Cmpd2; - - hid_t Cmpd1Structid; /* File datatype identifier */ - hid_t Cmpd2Structid; /* File datatype identifier */ - herr_t status; /* Error checking variable */ - hsize_t dim[] = { F77_LENGTH }; /* Dataspace dimensions */ - - int m; /* Array init loop vars */ - - /* Allocate buffers */ - Cmpd1 = (Cmpd1Struct *)HDmalloc(sizeof(Cmpd1Struct) * F77_LENGTH); - HDassert(Cmpd1); - Cmpd2 = (Cmpd2Struct *)HDmalloc(sizeof(Cmpd2Struct) * F77_LENGTH); - HDassert(Cmpd2); - - /* Initialize the data in the arrays/datastructure */ - for (m = 0; m < F77_LENGTH; m++) { - - /* Array of 8 bits unsigned int */ - if((m % F76_DIM8) == 0) - valu8bits = (uint8_t) ~0u; /* all 1s */ - Cmpd1[m].dsetu8 = valu8bits; - Cmpd2[m].dsetu8 = valu8bits; - valu8bits = (uint8_t)(valu8bits << 1); - - /* Array of 16 bits unsigned int */ - if((m % F76_DIM16) == 0) - valu16bits = (uint16_t) ~0u; /* all 1s */ - Cmpd1[m].dsetu16 = valu16bits; - Cmpd2[m].dsetu16 = valu16bits; - valu16bits = (uint16_t)(valu16bits << 1); - - /* Array of 32 bits unsigned int */ - if((m % F76_DIM32) == 0) - valu32bits = (uint32_t) ~0u; /* all 1s */ - Cmpd1[m].dsetu32 = valu32bits; - Cmpd2[m].dsetu32 = valu32bits; - valu32bits <<= 1; - - /* Array of 64 bits unsigned int */ - if((m % F76_DIM64) == 0) - valu64bits = (uint64_t) ~0Lu; /* all 1s */ - Cmpd1[m].dsetu64 = valu64bits; - Cmpd2[m].dsetu64 = valu64bits; - valu64bits <<= 1; - - /* Array of 8 bits signed int */ - if((m % F76_DIM8) == 0) - val8bits = (int8_t) ~0; /* all 1s */ - Cmpd1[m].dset8 = val8bits; - Cmpd2[m].dset8 = val8bits; - val8bits = (int8_t)(val8bits << 1); - - /* Array of 16 bits signed int */ - if((m % F76_DIM16) == 0) - val16bits = (int16_t) ~0; /* all 1s */ - Cmpd1[m].dset16 = val16bits; - Cmpd2[m].dset16 = val16bits; - val16bits = (int16_t)(val16bits << 1); - - /* Array of 32 bits signed int */ - if((m % F76_DIM32) == 0) - val32bits = (int32_t) ~0; /* all 1s */ - Cmpd1[m].dset32 = val32bits; - Cmpd2[m].dset32 = val32bits; - val32bits <<= 1; - - /* Array of 64 bits signed int */ - if((m % F76_DIM64) == 0) - val64bits = (int64_t) ~0L; /* all 1s */ - Cmpd1[m].dset64 = val64bits; - Cmpd2[m].dset64 = val64bits; - val64bits <<= 1; - - /* Double Dummy set for failure tests */ - Cmpd1[m].dsetdbl = 0.0001F + (float)m; - Cmpd2[m].dsetdbl = 0.0001F + (float)m; - } - - /* Create the dataspace */ - space = H5Screate_simple(F76_RANK, dim, NULL); - HDassert(space >= 0); - - /* Create the file */ - fid = H5Fcreate(FILE77, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - HDassert(fid >= 0); - - /* Create the memory data type */ - Cmpd1Structid = H5Tcreate(H5T_COMPOUND, sizeof(Cmpd1Struct)); - HDassert(Cmpd1Structid >= 0); - - /* Insert the arrays and variables into the structure */ - status = H5Tinsert(Cmpd1Structid, F76_DATASETU08, HOFFSET(Cmpd1Struct, dsetu8), H5T_NATIVE_UCHAR); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd1Structid, F76_DATASETU16, HOFFSET(Cmpd1Struct, dsetu16), H5T_NATIVE_USHORT); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd1Structid, F76_DATASETU32, HOFFSET(Cmpd1Struct, dsetu32), H5T_NATIVE_UINT); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd1Structid, F76_DATASETU64, HOFFSET(Cmpd1Struct, dsetu64), H5T_NATIVE_ULONG); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd1Structid, F76_DATASETS08, HOFFSET(Cmpd1Struct, dset8), H5T_NATIVE_SCHAR); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd1Structid, F76_DATASETS16, HOFFSET(Cmpd1Struct, dset16), H5T_NATIVE_SHORT); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd1Structid, F76_DATASETS32, HOFFSET(Cmpd1Struct, dset32), H5T_NATIVE_INT); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd1Structid, F76_DATASETS64, HOFFSET(Cmpd1Struct, dset64), H5T_NATIVE_LONG); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd1Structid, F76_DUMMYDBL, HOFFSET(Cmpd1Struct, dsetdbl), H5T_NATIVE_DOUBLE); - HDassert(status >= 0); - - /* Create the dataset */ - dataset = H5Dcreate2(fid, F77_DATASETNAME1, Cmpd1Structid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write data to the dataset */ - status = H5Dwrite(dataset, Cmpd1Structid, H5S_ALL, H5S_ALL, H5P_DEFAULT, Cmpd1); - HDassert(status >= 0); - - /* Release resources */ - status = H5Tclose(Cmpd1Structid); - HDassert(status >= 0); - - status = H5Sclose(space); - HDassert(status >= 0); - - status = H5Dclose(dataset); - HDassert(status >= 0); - - /* Create the dataspace */ - space = H5Screate_simple(F76_RANK, dim, NULL); - HDassert(space >= 0); - - /* Create the memory data type */ - Cmpd2Structid = H5Tcreate(H5T_COMPOUND, sizeof(Cmpd2Struct)); - HDassert(Cmpd2Structid >= 0); - - /* Insert the arrays and variables into the structure */ - status = H5Tinsert(Cmpd2Structid, F76_DATASETU64, HOFFSET(Cmpd2Struct, dsetu64), H5T_NATIVE_ULONG); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd2Structid, F76_DATASETU32, HOFFSET(Cmpd2Struct, dsetu32), H5T_NATIVE_UINT); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd2Structid, F76_DATASETU16, HOFFSET(Cmpd2Struct, dsetu16), H5T_NATIVE_USHORT); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd2Structid, F76_DATASETU08, HOFFSET(Cmpd2Struct, dsetu8), H5T_NATIVE_UCHAR); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd2Structid, F76_DATASETS64, HOFFSET(Cmpd2Struct, dset64), H5T_NATIVE_LONG); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd2Structid, F76_DATASETS32, HOFFSET(Cmpd2Struct, dset32), H5T_NATIVE_INT); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd2Structid, F76_DATASETS16, HOFFSET(Cmpd2Struct, dset16), H5T_NATIVE_SHORT); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd2Structid, F76_DATASETS08, HOFFSET(Cmpd2Struct, dset8), H5T_NATIVE_SCHAR); - HDassert(status >= 0); - - status = H5Tinsert(Cmpd2Structid, F76_DUMMYDBL, HOFFSET(Cmpd2Struct, dsetdbl), H5T_NATIVE_DOUBLE); - HDassert(status >= 0); - - /* Create the dataset */ - dataset = H5Dcreate2(fid, F77_DATASETNAME2, Cmpd2Structid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write data to the dataset */ - status = H5Dwrite(dataset, Cmpd2Structid, H5S_ALL, H5S_ALL, H5P_DEFAULT, Cmpd2); - HDassert(status >= 0); - - /* Release resources */ - status = H5Tclose(Cmpd2Structid); - HDassert(status >= 0); - - status = H5Sclose(space); - HDassert(status >= 0); - - status = H5Dclose(dataset); - HDassert(status >= 0); - - status = H5Fclose(fid); - HDassert(status >= 0); - - HDfree(Cmpd1); - HDfree(Cmpd2); -} - -/*------------------------------------------------------------------------- - * Function: gent_intscalars - * - * Purpose: Generate a file to be used in the h5dump scalar with attribute tests. - * Four datasets of 1, 2, 4 and 8 bytes of unsigned int types are created. - * Four more datasets of 1, 2, 4 and 8 bytes of signed int types are created. - * Fill them with raw data such that no bit will be all zero in a dataset. - * A dummy dataset of double type is created for failure test. - *------------------------------------------------------------------------- - */ -static void -gent_intattrscalars(void) -{ - hid_t fid, attr, dataset, space, tid; - hsize_t dims[2]; - uint8_t dsetu8[F73_XDIM][F73_YDIM8], valu8bits; - uint16_t dsetu16[F73_XDIM][F73_YDIM16], valu16bits; - uint32_t dsetu32[F73_XDIM][F73_YDIM32], valu32bits; - uint64_t dsetu64[F73_XDIM][F73_YDIM64], valu64bits; - int8_t dset8[F73_XDIM][F73_YDIM8], val8bits; - int16_t dset16[F73_XDIM][F73_YDIM16], val16bits; - int32_t dset32[F73_XDIM][F73_YDIM32], val32bits; - int64_t dset64[F73_XDIM][F73_YDIM64], val64bits; - double dsetdbl[F73_XDIM][F73_YDIM8]; - unsigned int i, j; - - fid = H5Fcreate(FILE78, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* Dataset of 8 bits unsigned int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM8; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_U8LE, F73_ARRAY_RANK, dims); - dataset = H5Dcreate2(fid, F73_DATASETU08, tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - valu8bits = (uint8_t) ~0u; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu8[i][0] = valu8bits; - for(j = 1; j < dims[1]; j++) { - dsetu8[i][j] = (uint8_t)(dsetu8[i][j-1] << 1); - } - valu8bits = (uint8_t)(valu8bits << 1); - } - - H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetu8); - /* Attribute of 8 bits unsigned int */ - attr = H5Acreate2(dataset, F73_DATASETU08, tid, space, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, tid, dsetu8); - H5Aclose(attr); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 16 bits unsigned int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM16; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_U16LE, F73_ARRAY_RANK, dims); - dataset = H5Dcreate2(fid, F73_DATASETU16, tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - valu16bits = (uint16_t) ~0u; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu16[i][0] = valu16bits; - for(j = 1; j < dims[1]; j++) { - dsetu16[i][j] = (uint16_t)(dsetu16[i][j-1] << 1); - } - valu16bits = (uint16_t)(valu16bits << 1); - } - - H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetu16); - /* Attribute of 16 bits unsigned int */ - attr = H5Acreate2(dataset, F73_DATASETU16, tid, space, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, tid, dsetu16); - H5Aclose(attr); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 32 bits unsigned int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM32; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_U32LE, F73_ARRAY_RANK, dims); - dataset = H5Dcreate2(fid, F73_DATASETU32, tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - valu32bits = (uint32_t) ~0u; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu32[i][0] = valu32bits; - for(j = 1; j < dims[1]; j++) { - dsetu32[i][j] = dsetu32[i][j-1] << 1; - } - valu32bits <<= 1; - } - - H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetu32); - /* Attribute of 32 bits unsigned int */ - attr = H5Acreate2(dataset, F73_DATASETU32, tid, space, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, tid, dsetu32); - H5Aclose(attr); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 64 bits unsigned int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM64; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_U64LE, F73_ARRAY_RANK, dims); - dataset = H5Dcreate2(fid, F73_DATASETU64, tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - valu64bits = (uint64_t) ~0Lu; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu64[i][0] = valu64bits; - for(j = 1; j < dims[1]; j++) { - dsetu64[i][j] = dsetu64[i][j-1] << 1; - } - valu64bits <<= 1; - } - - H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetu64); - /* Attribute of 64 bits unsigned int */ - attr = H5Acreate2(dataset, F73_DATASETU64, tid, space, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, tid, dsetu64); - H5Aclose(attr); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 8 bits signed int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM8; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_I8LE, F73_ARRAY_RANK, dims); - dataset = H5Dcreate2(fid, F73_DATASETS08, tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - val8bits = (int8_t) ~0; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset8[i][0] = val8bits; - for(j = 1; j < dims[1]; j++) { - dset8[i][j] = (int8_t)(dset8[i][j-1] << 1); - } - val8bits = (int8_t)(val8bits << 1); - } - - H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset8); - /* Attribute of 8 bits signed int */ - attr = H5Acreate2(dataset, F73_DATASETS08, tid, space, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, tid, dset8); - H5Aclose(attr); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 16 bits signed int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM16; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_I16LE, F73_ARRAY_RANK, dims); - dataset = H5Dcreate2(fid, F73_DATASETS16, tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - val16bits = (int16_t) ~0; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset16[i][0] = val16bits; - for(j = 1; j < dims[1]; j++) { - dset16[i][j] = (int16_t)(dset16[i][j-1] << 1); - } - val16bits = (int16_t)(val16bits << 1); - } - - H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset16); - /* Attribute of 16 bits signed int */ - attr = H5Acreate2(dataset, F73_DATASETS16, tid, space, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, tid, dset16); - H5Aclose(attr); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 32 bits signed int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM32; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_I32LE, F73_ARRAY_RANK, dims); - dataset = H5Dcreate2(fid, F73_DATASETS32, tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - val32bits = (int32_t) ~0; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset32[i][0] = val32bits; - for(j = 1; j < dims[1]; j++) { - dset32[i][j] = dset32[i][j-1] << 1; - } - val32bits <<= 1; - } - - H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset32); - /* Attribute of 32 bits signed int */ - attr = H5Acreate2(dataset, F73_DATASETS32, tid, space, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, tid, dset32); - H5Aclose(attr); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 64 bits signed int */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM64; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_STD_I64LE, F73_ARRAY_RANK, dims); - dataset = H5Dcreate2(fid, F73_DATASETS64, tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - val64bits = (int64_t) ~0L; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset64[i][0] = val64bits; - for(j = 1; j < dims[1]; j++) { - dset64[i][j] = dset64[i][j-1] << 1; - } - val64bits <<= 1; - } - - H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset64); - /* Attribute of 64 bits signed int */ - attr = H5Acreate2(dataset, F73_DATASETS64, tid, space, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, tid, dset64); - H5Aclose(attr); - H5Sclose(space); - H5Dclose(dataset); - - /* Double Dummy set for failure tests */ - dims[0] = F73_XDIM; dims[1] = F73_YDIM8; - space = H5Screate(H5S_SCALAR); - tid = H5Tarray_create2(H5T_NATIVE_DOUBLE, F73_ARRAY_RANK, dims); - dataset = H5Dcreate2(fid, F73_DUMMYDBL, tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - for(i = 0; i < dims[0]; i++) - for(j = 0; j < dims[1]; j++) - dsetdbl[i][j] = 0.0001F * (float)j + (float)i; - - H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetdbl); - /* Attribute of double */ - attr = H5Acreate2(dataset, F73_DUMMYDBL, tid, space, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, tid, dsetdbl); - H5Aclose(attr); - H5Sclose(space); - H5Dclose(dataset); - H5Fclose(fid); -} - -/*------------------------------------------------------------------------- - * Function: gent_packedbits - * - * Purpose: Generate a file to be used in the h5dump packed bits tests. - * Four datasets of 1, 2, 4 and 8 bytes of unsigned int types are created. - * Four more datasets of 1, 2, 4 and 8 bytes of signed int types are created. - * Fill them with raw data such that no bit will be all zero in a dataset. - * A dummy dataset of double type is created for failure test. - * Created: Albert Cheng, 2010/5/10. - * Modified: Allen Byrne, 2011/1/5 Use file to test Signed/Unsigned datatypes - *------------------------------------------------------------------------- - */ -static void -gent_intsattrs(void) -{ - hid_t fid, attr, dataset, space, aspace; - hsize_t dims[2], adims[1]; - uint8_t dsetu8[F66_XDIM][F66_YDIM8], asetu8[F66_XDIM*F66_YDIM8], valu8bits; - uint16_t dsetu16[F66_XDIM][F66_YDIM16], asetu16[F66_XDIM*F66_YDIM16], valu16bits; - uint32_t dsetu32[F66_XDIM][F66_YDIM32], asetu32[F66_XDIM*F66_YDIM32], valu32bits; - uint64_t dsetu64[F66_XDIM][F66_YDIM64], asetu64[F66_XDIM*F66_YDIM64], valu64bits; - int8_t dset8[F66_XDIM][F66_YDIM8], aset8[F66_XDIM*F66_YDIM8], val8bits; - int16_t dset16[F66_XDIM][F66_YDIM16], aset16[F66_XDIM*F66_YDIM16], val16bits; - int32_t dset32[F66_XDIM][F66_YDIM32], aset32[F66_XDIM*F66_YDIM32], val32bits; - int64_t dset64[F66_XDIM][F66_YDIM64], aset64[F66_XDIM*F66_YDIM64], val64bits; - double dsetdbl[F66_XDIM][F66_YDIM8], asetdbl[F66_XDIM*F66_YDIM8]; - unsigned int i, j; - - fid = H5Fcreate(FILE79, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* Dataset of 8 bits unsigned int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM8; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, F66_DATASETU08, H5T_STD_U8LE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - valu8bits = (uint8_t) ~0u; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu8[i][0] = valu8bits; - asetu8[i*dims[1]] = dsetu8[i][0]; - for(j = 1; j < dims[1]; j++) { - dsetu8[i][j] = (uint8_t)(dsetu8[i][j-1] << 1); - asetu8[i*dims[1]+j] = dsetu8[i][j]; - } - valu8bits = (uint8_t)(valu8bits << 1); - } - - H5Dwrite(dataset, H5T_NATIVE_UINT8, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetu8); - /* Attribute of 8 bits unsigned int */ - adims[0] = F66_XDIM * F66_YDIM8; - aspace = H5Screate_simple(1, adims, NULL); - attr = H5Acreate2(dataset, F66_DATASETU08, H5T_STD_U8LE, aspace, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, H5T_NATIVE_UINT8, asetu8); - H5Aclose(attr); - H5Sclose(aspace); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 16 bits unsigned int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM16; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, F66_DATASETU16, H5T_STD_U16LE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - valu16bits = (uint16_t) ~0u; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu16[i][0] = valu16bits; - asetu16[i*dims[1]] = dsetu16[i][0]; - for(j = 1; j < dims[1]; j++) { - dsetu16[i][j] = (uint16_t)(dsetu16[i][j-1] << 1); - asetu16[i*dims[1]+j] = dsetu16[i][j]; - } - valu16bits = (uint16_t)(valu16bits << 1); - } - - H5Dwrite(dataset, H5T_NATIVE_UINT16, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetu16); - /* Attribute of 16 bits unsigned int */ - adims[0] = F66_XDIM * F66_YDIM16; - aspace = H5Screate_simple(1, adims, NULL); - attr = H5Acreate2(dataset, F66_DATASETU16, H5T_STD_U16LE, aspace, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, H5T_NATIVE_UINT16, asetu16); - H5Aclose(attr); - H5Sclose(aspace); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 32 bits unsigned int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM32; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, F66_DATASETU32, H5T_STD_U32LE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - valu32bits = (uint32_t) ~0u; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu32[i][0] = valu32bits; - asetu32[i*dims[1]] = dsetu32[i][0]; - for(j = 1; j < dims[1]; j++) { - dsetu32[i][j] = dsetu32[i][j-1] << 1; - asetu32[i*dims[1]+j] = dsetu32[i][j]; - } - valu32bits <<= 1; - } - - H5Dwrite(dataset, H5T_NATIVE_UINT32, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetu32); - /* Attribute of 32 bits unsigned int */ - adims[0] = F66_XDIM * F66_YDIM32; - aspace = H5Screate_simple(1, adims, NULL); - attr = H5Acreate2(dataset, F66_DATASETU32, H5T_STD_U32LE, aspace, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, H5T_NATIVE_UINT32, asetu32); - H5Aclose(attr); - H5Sclose(aspace); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 64 bits unsigned int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM64; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, F66_DATASETU64, H5T_STD_U64LE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - valu64bits = (uint64_t) ~0Lu; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dsetu64[i][0] = valu64bits; - asetu64[i*dims[1]] = dsetu64[i][0]; - for(j = 1; j < dims[1]; j++) { - dsetu64[i][j] = dsetu64[i][j-1] << 1; - asetu64[i*dims[1]+j] = dsetu64[i][j]; - } - valu64bits <<= 1; - } - - H5Dwrite(dataset, H5T_NATIVE_UINT64, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetu64); - /* Attribute of 64 bits unsigned int */ - adims[0] = F66_XDIM * F66_YDIM64; - aspace = H5Screate_simple(1, adims, NULL); - attr = H5Acreate2(dataset, F66_DATASETU64, H5T_STD_U64LE, aspace, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, H5T_NATIVE_UINT64, asetu64); - H5Aclose(attr); - H5Sclose(aspace); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 8 bits signed int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM8; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, F66_DATASETS08, H5T_STD_I8LE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - val8bits = (int8_t) ~0; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset8[i][0] = val8bits; - aset8[i*dims[1]] = dset8[i][0]; - for(j = 1; j < dims[1]; j++) { - dset8[i][j] = (int8_t)(dset8[i][j-1] << 1); - aset8[i*dims[1]+j] = dset8[i][j]; - } - val8bits = (int8_t)(val8bits << 1); - } - - H5Dwrite(dataset, H5T_NATIVE_INT8, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset8); - /* Attribute of 8 bits signed int */ - adims[0] = F66_XDIM * F66_YDIM8; - aspace = H5Screate_simple(1, adims, NULL); - attr = H5Acreate2(dataset, F66_DATASETS08, H5T_STD_I8LE, aspace, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, H5T_NATIVE_INT8, aset8); - H5Aclose(attr); - H5Sclose(aspace); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 16 bits signed int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM16; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, F66_DATASETS16, H5T_STD_I16LE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - val16bits = (int16_t) ~0; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset16[i][0] = val16bits; - aset16[i*dims[1]] = dset16[i][0]; - for(j = 1; j < dims[1]; j++) { - dset16[i][j] = (int16_t)(dset16[i][j-1] << 1); - aset16[i*dims[1]+j] = dset16[i][j]; - } - val16bits = (int16_t)(val16bits << 1); - } - - H5Dwrite(dataset, H5T_NATIVE_INT16, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset16); - /* Attribute of 16 bits signed int */ - adims[0] = F66_XDIM * F66_YDIM16; - aspace = H5Screate_simple(1, adims, NULL); - attr = H5Acreate2(dataset, F66_DATASETS16, H5T_STD_I16LE, aspace, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, H5T_NATIVE_INT16, aset16); - H5Aclose(attr); - H5Sclose(aspace); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 32 bits signed int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM32; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, F66_DATASETS32, H5T_STD_I32LE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - val32bits = (int32_t) ~0; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset32[i][0] = val32bits; - aset32[i*dims[1]] = dset32[i][0]; - for(j = 1; j < dims[1]; j++) { - dset32[i][j] = dset32[i][j-1] << 1; - aset32[i*dims[1]+j] = dset32[i][j]; - } - val32bits <<= 1; - } - - H5Dwrite(dataset, H5T_NATIVE_INT32, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset32); - /* Attribute of 32 bits signed int */ - adims[0] = F66_XDIM * F66_YDIM32; - aspace = H5Screate_simple(1, adims, NULL); - attr = H5Acreate2(dataset, F66_DATASETS32, H5T_STD_I32LE, aspace, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, H5T_NATIVE_INT32, aset32); - H5Aclose(attr); - H5Sclose(aspace); - H5Sclose(space); - H5Dclose(dataset); - - /* Dataset of 64 bits signed int */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM64; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, F66_DATASETS64, H5T_STD_I64LE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - val64bits = (int64_t) ~0L; /* all 1s */ - for(i = 0; i < dims[0]; i++){ - dset64[i][0] = val64bits; - aset64[i*dims[1]] = dset64[i][0]; - for(j = 1; j < dims[1]; j++) { - dset64[i][j] = dset64[i][j-1] << 1; - aset64[i*dims[1]+j] = dset64[i][j]; - } - val64bits <<= 1; - } - - H5Dwrite(dataset, H5T_NATIVE_INT64, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset64); - /* Attribute of 64 bits signed int */ - adims[0] = F66_XDIM * F66_YDIM64; - aspace = H5Screate_simple(1, adims, NULL); - attr = H5Acreate2(dataset, F66_DATASETS64, H5T_STD_I64LE, aspace, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, H5T_NATIVE_INT64, aset64); - H5Aclose(attr); - H5Sclose(aspace); - H5Sclose(space); - H5Dclose(dataset); - - /* Double Dummy set for failure tests */ - dims[0] = F66_XDIM; dims[1] = F66_YDIM8; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(fid, F66_DUMMYDBL, H5T_IEEE_F64BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - for(i = 0; i < dims[0]; i++) - for(j = 0; j < dims[1]; j++) { - dsetdbl[i][j] = 0.0001F * (float)j + (float)i; - asetdbl[i*dims[1]+j] = dsetdbl[i][j]; - } - - H5Dwrite(dataset, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, dsetdbl); - /* Attribute of double */ - adims[0] = F66_XDIM * F66_YDIM8; - aspace = H5Screate_simple(1, adims, NULL); - attr = H5Acreate2(dataset, F66_DUMMYDBL, H5T_IEEE_F64BE, aspace, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(attr, H5T_NATIVE_DOUBLE, asetdbl); - H5Aclose(attr); - H5Sclose(aspace); - H5Sclose(space); - H5Dclose(dataset); - H5Fclose(fid); -} - -static void gent_bitnopaquefields(void) -{ - /* Compound datatype */ - typedef struct s_t - { - unsigned char a; - unsigned int b; - unsigned long c; - unsigned long long d; - } s_t; - hid_t file, grp=-1, type=-1, space=-1, dset=-1; - size_t i; - hsize_t nelmts = F80_DIM32; - unsigned char buf[F80_DIM32]; /* bitfield, opaque */ - unsigned int buf2[F80_DIM32]; /* bitfield, opaque */ - unsigned long buf3[F80_DIM32]; /* bitfield, opaque */ - unsigned long long buf4[F80_DIM32]; /* bitfield, opaque */ - s_t buf5[F80_DIM32]; /* compound */ - - file = H5Fcreate(FILE80, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - if ((grp = H5Gcreate2(file, "bittypetests", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) { - /* bitfield_1 */ - if ((type = H5Tcopy(H5T_STD_B8LE)) >= 0) { - if ((space = H5Screate_simple(1, &nelmts, NULL)) >= 0) { - if ((dset = H5Dcreate2(grp, "bitfield_1", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) { - for (i = 0; i < nelmts; i++) { - buf[i] = (unsigned char)0xff ^ (unsigned char)i; - } - H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - H5Dclose(dset); - } - H5Sclose(space); - } - H5Tclose(type); - } - - /* bitfield_2 */ - if ((type = H5Tcopy(H5T_STD_B16LE)) >= 0) { - if ((space = H5Screate_simple(1, &nelmts, NULL)) >= 0) { - if ((dset = H5Dcreate2(grp, "bitfield_2", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) { - for (i = 0; i < nelmts; i++) { - buf2[i] = (unsigned int)0xffff ^ (unsigned int)(i * 16); - } - H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf2); - H5Dclose(dset); - } - H5Sclose(space); - } - H5Tclose(type); - } - - /* bitfield_3 */ - if ((type = H5Tcopy(H5T_STD_B32LE)) >= 0) { - if ((space = H5Screate_simple(1, &nelmts, NULL)) >= 0) { - if ((dset = H5Dcreate2(grp, "bitfield_3", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) { - for (i = 0; i < nelmts; i++) { - buf3[i] = (unsigned long)0xffffffff ^ (unsigned long)(i * 32); - } - H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf3); - H5Dclose(dset); - } - H5Sclose(space); - } - H5Tclose(type); - } - - /* bitfield_4 */ - if ((type = H5Tcopy(H5T_STD_B64LE)) >= 0) { - if ((space = H5Screate_simple(1, &nelmts, NULL)) >= 0) { - if ((dset = H5Dcreate2(grp, "bitfield_4", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) { - for (i = 0; i < nelmts; i++) { - buf4[i] = (unsigned long long)0xffffffffffffffff ^ (unsigned long long)(i * 64); - } - H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf4); - H5Dclose(dset); - } - H5Sclose(space); - } - H5Tclose(type); - } - - H5Gclose(grp); - } - - if ((grp = H5Gcreate2(file, "opaquetypetests", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) { - /* opaque_1 */ - if ((type = H5Tcreate(H5T_OPAQUE, 1)) >= 0) { - if ((H5Tset_tag(type, "1-byte opaque type")) >= 0) { - if ((space = H5Screate_simple(1, &nelmts, NULL)) >= 0) { - if ((dset = H5Dcreate2(grp, "opaque_1", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) { - for(i = 0; i < nelmts; i++) - buf[i] = (unsigned char)0xff ^ (unsigned char)i; - H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - H5Dclose(dset); - } - H5Sclose(space); - } - } - H5Tclose(type); - } - - /* opaque_2 */ - if ((type = H5Tcreate(H5T_OPAQUE, 2)) >= 0) { - if ((H5Tset_tag(type, "2-byte opaque type")) >= 0) { - if ((space = H5Screate_simple(1, &nelmts, NULL)) >= 0) { - if ((dset = H5Dcreate2(grp, "opaque_2", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) { - for(i = 0; i < nelmts; i++) - buf2[i] = (unsigned int)0xffff ^ (unsigned int)(i * 16); - - H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf2); - H5Dclose(dset); - } - H5Sclose(space); - } - } - H5Tclose(type); - } - H5Gclose(grp); - } - - if ((grp = H5Gcreate2(file, "cmpdtypetests", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) { - /* compound_1 */ - if ((type = H5Tcreate(H5T_COMPOUND, sizeof(s_t))) >= 0) { - H5Tinsert(type, "a", HOFFSET(s_t, a), H5T_STD_B8LE); - H5Tinsert(type, "b", HOFFSET(s_t, b), H5T_STD_B16LE); - H5Tinsert(type, "c", HOFFSET(s_t, c), H5T_STD_B32LE); - H5Tinsert(type, "d", HOFFSET(s_t, d), H5T_STD_B64LE); - if ((space = H5Screate_simple(1, &nelmts, NULL)) >= 0) { - if ((dset = H5Dcreate2(grp, "compound_1", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) { - for(i = 0; i < nelmts; i++) { - buf5[i].a = (unsigned char)0xff ^ (unsigned char)i; - buf5[i].b = (unsigned int)0xffff ^ (unsigned int)(i * 16); - buf5[i].c = (unsigned long)0xffffffff ^ (unsigned long)(i * 32); - buf5[i].d = (unsigned long long)0xffffffffffffffff ^ (unsigned long long)(i * 64); - } - - H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf5); - H5Dclose(dset); - } - H5Sclose(space); - } - H5Tclose(type); - } - H5Gclose(grp); - } - - H5Fclose(file); -} - -/*------------------------------------------------------------------------- - * Function: gent_intsfourdims - * - * Purpose: Generate a file to be used in the h5dump subsetting tests. - * One datasets of unsigned int types are created in four dimensions 2,4,6,10. - *------------------------------------------------------------------------- - */ -static void -gent_intsfourdims(void) -{ - hid_t fid, dataset, space; - hsize_t dims[F81_RANK]; - uint32_t dset1[F81_ZDIM][F81_YDIM][F81_XDIM][F81_WDIM]; - unsigned int i, j, k, l; - - fid = H5Fcreate(FILE81, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /* Dataset of 32 bits unsigned int */ - dims[0] = F81_ZDIM; dims[1] = F81_YDIM; dims[2] = F81_XDIM; dims[3] = F81_WDIM; - space = H5Screate_simple(F81_RANK, dims, NULL); - dataset = H5Dcreate2(fid, F81_DATASETNAME, H5T_STD_U32LE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - for(i = 0; i < F81_ZDIM; i++) - for(j = 0; j < F81_YDIM; j++) - for(k = 0; k < F81_XDIM; k++) - for(l = 0; l < F81_WDIM; l++) - dset1[i][j][k][l] = i*F81_YDIM*F81_XDIM*F81_WDIM + j*F81_XDIM*F81_WDIM + k*F81_WDIM + l; - - H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset1); - H5Sclose(space); - H5Dclose(dataset); - - H5Fclose(fid); -} - -/*------------------------------------------------------------------------- - * Function: gent_compound_complex2 - * - * Purpose: Generate a file to be used in testing compound datatypes of - * various sizes, dimensions, member types and nesting. - *------------------------------------------------------------------------- - */ -static void gent_compound_complex2(void) -{ - /* Third-level nested compound */ - typedef struct { - short deep_nested_short[10]; - int deep_nested_int[10]; - long deep_nested_long[10]; - double deep_nested_double[10]; - float deep_nested_float[10]; - } third_level_compound; - - /* Second-level multiply-nested compounds */ - typedef struct { - unsigned int multiple_nested_a[5]; - int multiple_nested_b[5]; - unsigned long multiple_nested_c[5]; - long multiple_nested_d[5]; - } further_nested; - - typedef struct { - char further_nested_string[11]; - char further_nested_string_array[4][13]; - third_level_compound deep_nest; - } further_nested2; - - /* First First-level nested compound */ - typedef struct - { - double nested_a; - char nested_string[23]; - char nested_string_array[4][12]; - } nested_compound; - - /* Second First-level nested compound */ - typedef struct - { - float a; - further_nested b; - further_nested2 c; - } multiple_nested_compound; - - /* Compound datatype with different member types */ - typedef struct - { - /* Arrays nested inside compound */ - unsigned int a[4]; - int b[6]; - float c[2][4]; - nested_compound d; /* Compound inside compound */ - multiple_nested_compound e; /* Compound inside compound with further nested compound */ - } compound; - - compound *buf; /* compound */ - - hid_t file, type=-1, space=-1, dset=-1; - hid_t dset_array_a, dset_array_b, dset_array_c; - hid_t cmpd_tid1 = -1, cmpd_tid2 = -1, cmpd_tid3 = -1; - size_t i; - size_t j, k; - unsigned dset_array_ndims; - hsize_t dset_array_a_dims[1], dset_array_b_dims[1], dset_array_c_dims[2]; - hsize_t nelmts = F82_DIM32; - - /* Allocate buffer */ - buf = (compound *)HDmalloc(sizeof(compound) * F82_DIM32); - HDassert(buf); - - file = H5Fcreate(FILE82, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - if ((space = H5Screate_simple(F82_RANK, &nelmts, NULL)) >= 0) { - /* CompoundComplex1D */ - if ((type = H5Tcreate(H5T_COMPOUND, sizeof(compound))) >= 0) { - hid_t str_type, array; - hsize_t dims[1]; - hid_t nest1, nest2; - - /* Insert top-level array members */ - dset_array_ndims = 1; dset_array_a_dims[0] = 4; - dset_array_a = H5Tarray_create2(H5T_STD_U32LE, dset_array_ndims, dset_array_a_dims); - H5Tinsert(type, "a", HOFFSET(compound, a), dset_array_a); - H5Tclose(dset_array_a); - - dset_array_ndims = 1; dset_array_b_dims[0] = 6; - dset_array_b = H5Tarray_create2(H5T_STD_I32LE, dset_array_ndims, dset_array_b_dims); - H5Tinsert(type, "b", HOFFSET(compound, b), dset_array_b); - H5Tclose(dset_array_b); - - dset_array_ndims = 2; dset_array_c_dims[0] = 2; dset_array_c_dims[1] = 4; - dset_array_c = H5Tarray_create2(H5T_IEEE_F32LE, dset_array_ndims, dset_array_c_dims); - H5Tinsert(type, "c", HOFFSET(compound, c), dset_array_c); - H5Tclose(dset_array_c); - - /* Insert first nested compound */ - cmpd_tid1 = H5Tcreate(H5T_COMPOUND, sizeof(nested_compound)); - - H5Tinsert(cmpd_tid1, "nested_double", HOFFSET(nested_compound, nested_a), H5T_IEEE_F64LE); - - dims[0] = 1; - str_type = mkstr(23, H5T_STR_NULLTERM); - array = H5Tarray_create2(str_type, 1, dims); - H5Tinsert(cmpd_tid1, "nested_string", HOFFSET(nested_compound, nested_string), array); - H5Tclose(array); - H5Tclose(str_type); - - dims[0] = 4; - str_type = mkstr(12, H5T_STR_NULLTERM); - array = H5Tarray_create2(str_type, 1, dims); - H5Tinsert(cmpd_tid1, "nested_string_array", HOFFSET(nested_compound, nested_string_array), array); - H5Tclose(array); - H5Tclose(str_type); - - H5Tinsert(type, "nested_compound", HOFFSET(compound, d), cmpd_tid1); - - /* Insert second nested compound */ - cmpd_tid2 = H5Tcreate(H5T_COMPOUND, sizeof(multiple_nested_compound)); - - H5Tinsert(cmpd_tid2, "nested_float", HOFFSET(multiple_nested_compound, a), H5T_IEEE_F32LE); - - /* Add first further nested compound */ - nest1 = H5Tcreate(H5T_COMPOUND, sizeof(further_nested)); - - dims[0] = 5; - array = H5Tarray_create2(H5T_STD_U32LE, 1, dims); - H5Tinsert(nest1, "nested_unsigned_int", HOFFSET(further_nested, multiple_nested_a), array); - H5Tclose(array); - - array = H5Tarray_create2(H5T_STD_I32LE, 1, dims); - H5Tinsert(nest1, "nested_int", HOFFSET(further_nested, multiple_nested_b), array); - H5Tclose(array); - - array = H5Tarray_create2(H5T_STD_U64LE, 1, dims); - H5Tinsert(nest1, "nested_unsigned_long", HOFFSET(further_nested, multiple_nested_c), array); - H5Tclose(array); - - array = H5Tarray_create2(H5T_STD_I64LE, 1, dims); - H5Tinsert(nest1, "nested_long", HOFFSET(further_nested, multiple_nested_d), array); - H5Tclose(array); - - H5Tinsert(cmpd_tid2, "further_nested_compoundA", HOFFSET(multiple_nested_compound, b), nest1); - H5Tclose(nest1); - - /* Add second further nested compound */ - nest2 = H5Tcreate(H5T_COMPOUND, sizeof(further_nested2)); - - dims[0] = 1; - str_type = mkstr(11, H5T_STR_NULLTERM); - array = H5Tarray_create2(str_type, 1, dims); - H5Tinsert(nest2, "nested_string", HOFFSET(further_nested2, further_nested_string), array); - H5Tclose(array); - H5Tclose(str_type); - - dims[0] = 4; - str_type = mkstr(13, H5T_STR_NULLTERM); - array = H5Tarray_create2(str_type, 1, dims); - H5Tinsert(nest2, "nested_string_array", HOFFSET(further_nested2, further_nested_string_array), array); - H5Tclose(array); - H5Tclose(str_type); - - /* Add a final third-level nested compound to this second-level compound */ - cmpd_tid3 = H5Tcreate(H5T_COMPOUND, sizeof(third_level_compound)); - - dims[0] = 10; - array = H5Tarray_create2(H5T_STD_I16LE, 1, dims); - H5Tinsert(cmpd_tid3, "deep_nested_short", HOFFSET(third_level_compound, deep_nested_short), array); - H5Tclose(array); - - array = H5Tarray_create2(H5T_STD_I32LE, 1, dims); - H5Tinsert(cmpd_tid3, "deep_nested_int", HOFFSET(third_level_compound, deep_nested_int), array); - H5Tclose(array); - - array = H5Tarray_create2(H5T_STD_I64LE, 1, dims); - H5Tinsert(cmpd_tid3, "deep_nested_long", HOFFSET(third_level_compound, deep_nested_long), array); - H5Tclose(array); - - array = H5Tarray_create2(H5T_IEEE_F64LE, 1, dims); - H5Tinsert(cmpd_tid3, "deep_nested_double", HOFFSET(third_level_compound, deep_nested_double), array); - H5Tclose(array); - - array = H5Tarray_create2(H5T_IEEE_F32LE, 1, dims); - H5Tinsert(cmpd_tid3, "deep_nested_float", HOFFSET(third_level_compound, deep_nested_float), array); - H5Tclose(array); - - H5Tinsert(nest2, "deep_nested_compound", HOFFSET(further_nested2, deep_nest), cmpd_tid3); - - H5Tinsert(cmpd_tid2, "further_nested_compoundB", HOFFSET(multiple_nested_compound, c), nest2); - H5Tclose(nest2); - - H5Tinsert(type, "multiple_nested_compound", HOFFSET(compound, e), cmpd_tid2); - - - if ((dset = H5Dcreate2(file, F82_DATASETNAME, type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) { - for(i = 0; i < nelmts; i++) { - for (j = 0; j < dset_array_a_dims[0]; j++) - buf[i].a[j] = (unsigned int)(j + i*10); - for (j = 0; j < dset_array_b_dims[0]; j++) - buf[i].b[j] = (int)(j - i*10); - for (j = 0; j < dset_array_c_dims[0]; j++) - for (k = 0; k < dset_array_c_dims[1]; k++) - buf[i].c[j][k] = (float)(j + k + i*10) + (float)(j) * 0.1F; - - /* Set up first nested compound */ - buf[i].d.nested_a = (double) i; - - strcpy(buf[i].d.nested_string, "This is a test string."); - - for (j = 0; j < 4; j++) - strcpy(buf[i].d.nested_string_array[j], "String test"); - - /* Set up multiple nested compound */ - buf[i].e.a = (float) i; - - for (j = 0; j < 5; j++) { - buf[i].e.b.multiple_nested_a[j] = (unsigned int)(j + i*10); - buf[i].e.b.multiple_nested_b[j] = (int)(j - i*10); - buf[i].e.b.multiple_nested_c[j] = (unsigned long)(j + i*10); - buf[i].e.b.multiple_nested_d[j] = (long)(j - i*10); - } - - strcpy(buf[i].e.c.further_nested_string, "1234567890"); - for (j = 0; j < 4; j++) - strcpy(buf[i].e.c.further_nested_string_array[j], "STRING ARRAY"); - - for (j = 0; j < 10; j++) { - buf[i].e.c.deep_nest.deep_nested_short[j] = (short)(j + i*10); - buf[i].e.c.deep_nest.deep_nested_int[j] = (int)(j - i*10); - buf[i].e.c.deep_nest.deep_nested_long[j] = (long)(j + i*10); - buf[i].e.c.deep_nest.deep_nested_double[j] = (double)(j + i*10); - buf[i].e.c.deep_nest.deep_nested_float[j] = (float)(j + i*10); - } - } - - if (H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - fprintf(stderr, "gent_tcompound_complex2 H5Dwrite failed\n"); - - H5Dclose(dset); - } - H5Tclose(type); - } - H5Tclose(cmpd_tid1); - H5Tclose(cmpd_tid2); - H5Tclose(cmpd_tid3); - H5Sclose(space); - } - -// /* CompoundComplex2D */ -// if ((type = H5Tcreate(H5T_COMPOUND, sizeof(s_t))) >= 0) { -// H5Tinsert(type, "a", HOFFSET(s_t, a), H5T_STD_B8LE); -// H5Tinsert(type, "b", HOFFSET(s_t, b), H5T_STD_B16LE); -// H5Tinsert(type, "c", HOFFSET(s_t, c), H5T_STD_B32LE); -// H5Tinsert(type, "d", HOFFSET(s_t, d), H5T_STD_B64LE); -// if ((space = H5Screate_simple(F82_RANK2, &nelmts, NULL)) >= 0) { -// if ((dset = H5Dcreate2(file, "compound_1", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) { -// for(i = 0; i < nelmts; i++) { -// buf5[i].a = (unsigned char)0xff ^ (unsigned char)i; -// buf5[i].b = (unsigned int)0xffff ^ (unsigned int)(i * 16); -// buf5[i].c = (unsigned long)0xffffffff ^ (unsigned long)(i * 32); -// buf5[i].d = (unsigned long long)0xffffffffffffffff ^ (unsigned long long)(i * 64); -// } -// -// H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf5); -// H5Dclose(dset); -// } -// H5Sclose(space); -// } -// H5Tclose(type); -// } -// -// /* CompoundComplex3D */ -// if ((type = H5Tcreate(H5T_COMPOUND, sizeof(s_t))) >= 0) { -// H5Tinsert(type, "a", HOFFSET(s_t, a), H5T_STD_B8LE); -// H5Tinsert(type, "b", HOFFSET(s_t, b), H5T_STD_B16LE); -// H5Tinsert(type, "c", HOFFSET(s_t, c), H5T_STD_B32LE); -// H5Tinsert(type, "d", HOFFSET(s_t, d), H5T_STD_B64LE); -// if ((space = H5Screate_simple(F82_RANK3, &nelmts, NULL)) >= 0) { -// if ((dset = H5Dcreate2(file, "compound_1", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) { -// for(i = 0; i < nelmts; i++) { -// buf5[i].a = (unsigned char)0xff ^ (unsigned char)i; -// buf5[i].b = (unsigned int)0xffff ^ (unsigned int)(i * 16); -// buf5[i].c = (unsigned long)0xffffffff ^ (unsigned long)(i * 32); -// buf5[i].d = (unsigned long long)0xffffffffffffffff ^ (unsigned long long)(i * 64); -// } -// -// H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf5); -// H5Dclose(dset); -// } -// H5Sclose(space); -// } -// H5Tclose(type); -// } -// -// /* CompoundComplex4D */ -// if ((type = H5Tcreate(H5T_COMPOUND, sizeof(s_t))) >= 0) { -// H5Tinsert(type, "a", HOFFSET(s_t, a), H5T_STD_B8LE); -// H5Tinsert(type, "b", HOFFSET(s_t, b), H5T_STD_B16LE); -// H5Tinsert(type, "c", HOFFSET(s_t, c), H5T_STD_B32LE); -// H5Tinsert(type, "d", HOFFSET(s_t, d), H5T_STD_B64LE); -// if ((space = H5Screate_simple(F82_RANK4, &nelmts, NULL)) >= 0) { -// if ((dset = H5Dcreate2(file, "compound_1", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) { -// for(i = 0; i < nelmts; i++) { -// buf5[i].a = (unsigned char)0xff ^ (unsigned char)i; -// buf5[i].b = (unsigned int)0xffff ^ (unsigned int)(i * 16); -// buf5[i].c = (unsigned long)0xffffffff ^ (unsigned long)(i * 32); -// buf5[i].d = (unsigned long long)0xffffffffffffffff ^ (unsigned long long)(i * 64); -// } -// -// H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf5); -// H5Dclose(dset); -// } -// H5Sclose(space); -// } -// H5Tclose(type); -// } - - H5Fclose(file); - - HDfree(buf); -} - -/*------------------------------------------------------------------------- - * Function: gent_vlenstr_array - * - * Purpose: Generate a file to be used in testing Arrays of variable - * length strings. - *------------------------------------------------------------------------- - */ -static void gent_vlenstr_array(void) -{ - /* Compound datatype with different member types */ - typedef struct compound - { - /* Array of variable-length strings*/ - const char *vlen_array[F83_ARRAYDIM]; - } compound; - compound buf[F83_DIM]; - - const char *test[F83_ARRAYDIM] = { - "This is a variable-length test string.", - "This test string is also variable-length.", - "A final test of variable-length strings. This string is longer than the others." - }; - const char *buffer[F83_DIM*F83_ARRAYDIM]; - - hid_t file, type=-1, space=-1, dset=-1; - hid_t cmpd_tid1, array_tid; - int i, j; - - hsize_t dims[] = {F83_DIM}, arraydim[] = {F83_ARRAYDIM}; - /* Initialize scalar data */ - for (i = 0; i < F83_DIM; i++) - for (j = 0; j < 3; j++) - buffer[j + 3*i] = test[j]; - - /* Initialize compound data */ - for (i = 0; i < F83_DIM; i++) - for (j = 0; j < 3; j++) - buf[i].vlen_array[j] = test[j]; - - file = H5Fcreate(FILE83, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - if ((space = H5Screate_simple(F83_RANK, dims, NULL)) >= 0) { - array_tid = H5Tcopy(H5T_C_S1); - H5Tset_size(array_tid, H5T_VARIABLE); - - /* ScalarArrayOfVlenStr */ - if ((type = H5Tarray_create2(array_tid, F83_RANK, arraydim)) >= 0) { - if ((dset = H5Dcreate2(file, F83_DATASETNAME, type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) { - if (H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buffer) < 0) - fprintf(stderr, "gent_vlenstr_array H5Dwrite failed\n"); - - H5Dclose(dset); - } - H5Tclose(type); - } - H5Tclose(array_tid); - H5Sclose(space); - } - - if ((space = H5Screate_simple(F83_RANK, dims, NULL)) >= 0) { - /* CompoundArrayOfVlenStr */ - if ((type = H5Tcreate(H5T_COMPOUND, sizeof(compound))) >= 0) { - cmpd_tid1 = H5Tcopy(H5T_C_S1); - H5Tset_size(cmpd_tid1, H5T_VARIABLE); - - array_tid = H5Tarray_create2(cmpd_tid1, F83_RANK, arraydim); - H5Tinsert(type, "vlen_str_array", HOFFSET(compound, vlen_array), array_tid); - - if ((dset = H5Dcreate2(file, F83_DATASETNAME2, type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) { - if (H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - fprintf(stderr, "gent_vlenstr_array H5Dwrite failed\n"); - - H5Dclose(dset); - } - H5Tclose(cmpd_tid1); - H5Tclose(type); - } - H5Sclose(space); - } - - H5Fclose(file); -} - - -/*------------------------------------------------------------------------- - * Function: main - * - *------------------------------------------------------------------------- - */ - -int main(void) -{ - gent_group(); - gent_attribute(); - gent_softlink(); - gent_softlink2(); - gent_dataset(); - gent_hardlink(); - gent_extlink(); - gent_udlink(); - gent_compound_dt(); - gent_all(); - gent_loop(); - gent_dataset2(); - gent_compound_dt2(); - gent_loop2(); - gent_many(); - gent_str(); - gent_str2(); - gent_enum(); - gent_objref(); - gent_datareg(); - gent_attrreg(); - gent_nestcomp(); - gent_opaque(); - gent_bitfields(); - gent_vldatatypes(); - gent_vldatatypes2(); - gent_vldatatypes3(); - gent_vldatatypes4(); - gent_vldatatypes5(); - gent_array1_big(); - gent_array1(); - gent_array2(); - gent_array3(); - gent_array4(); - gent_array5(); - gent_array6(); - gent_array7(); - gent_array8(); - gent_empty(); - gent_group_comments(); - gent_split_file(); - gent_family(); - gent_multi(); - gent_large_objname(); - gent_vlstr(); - gent_vlenstr_array(); - gent_char(); - gent_attr_all(); - gent_compound_complex(); - gent_compound_complex2(); - gent_named_dtype_attr(); - gent_null_space(); - gent_zero_dim_size(); - - gent_filters(); - gent_fvalues(); - gent_fcontents(); - gent_string(); - gent_aindices(); - gent_longlinks(); - gent_ldouble(); - gent_binary(); - gent_bigdims(); - gent_hyperslab(); - gent_group_creation_order(); - gent_attr_creation_order(); - gent_fpformat(); - gent_extlinks(); - gent_fs_strategy_threshold(); - gent_packedbits(); - gent_dataset_idx(); - gent_attr_intsize(); - gent_charsets(); - gent_compound_intsizes(); - gent_compound_attr_intsizes(); - - gent_nested_compound_dt(); - gent_intscalars(); - gent_attr_intscalars(); - gent_string_scalars(); - gent_compound_int_array(); - gent_compound_ints(); - gent_intattrscalars(); - gent_intsattrs(); - gent_bitnopaquefields(); - - gent_intsfourdims(); - - return 0; -} - diff --git a/tools/h5dump/testh5dump.sh.in b/tools/h5dump/testh5dump.sh.in deleted file mode 100644 index 9108f44..0000000 --- a/tools/h5dump/testh5dump.sh.in +++ /dev/null @@ -1,1345 +0,0 @@ -#! /bin/sh -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -# -# Tests for the h5dump tool - -srcdir=@srcdir@ - -USE_FILTER_SZIP="@USE_FILTER_SZIP@" -USE_FILTER_DEFLATE="@USE_FILTER_DEFLATE@" - -TESTNAME=h5dump -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -DUMPER=h5dump # The tool name -DUMPER_BIN=`pwd`/$DUMPER # The path of the tool binary - -H5DIFF=../h5diff/h5diff # The h5diff tool name -H5DIFF_BIN=`pwd`/$H5DIFF # The path of the h5diff tool binary - -H5IMPORT=../h5import/h5import # The h5import tool name -H5IMPORT_BIN=`pwd`/$H5IMPORT # The path of the h5import tool binary - -RM='rm -rf' -CMP='cmp' -DIFF='diff -c' -CP='cp' -DIRNAME='dirname' -LS='ls' -AWK='awk' - -# Skip plugin module to test missing filter -ENVCMD="env HDF5_PLUGIN_PRELOAD=::" - -nerrors=0 -verbose=yes - -# source dirs -SRC_TOOLS="$srcdir/../" - -SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles" -# testfiles source dirs for tools -SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DUMP_ERRORFILES="$srcdir/errfiles" -SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles" -SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles" -SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles" -SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles" -SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles" -SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles" - -TEST_P_DIR=./testfiles -TESTDIR=./testfiles/std -test -d $TEST_P_DIR || mkdir -p $TEST_P_DIR -test -d $TESTDIR || mkdir -p $TESTDIR - -###################################################################### -# test files -# -------------------------------------------------------------------- -# All the test files copy from source directory to test directory -# NOTE: Keep this framework to add/remove test files. -# Any test files from other tools can be used in this framework. -# This list are also used for checking exist. -# Comment '#' without space can be used. -# -------------------------------------------------------------------- -LIST_HDF5_TEST_FILES=" -$SRC_H5DUMP_TESTFILES/charsets.h5 -$SRC_H5DUMP_TESTFILES/file_space.h5 -$SRC_H5DUMP_TESTFILES/filter_fail.h5 -$SRC_H5DUMP_TESTFILES/packedbits.h5 -$SRC_H5DUMP_TESTFILES/taindices.h5 -$SRC_H5DUMP_TESTFILES/tall.h5 -$SRC_H5DUMP_TESTFILES/tarray1.h5 -$SRC_H5DUMP_TESTFILES/tarray1_big.h5 -$SRC_H5DUMP_TESTFILES/tarray2.h5 -$SRC_H5DUMP_TESTFILES/tarray3.h5 -$SRC_H5DUMP_TESTFILES/tarray4.h5 -$SRC_H5DUMP_TESTFILES/tarray5.h5 -$SRC_H5DUMP_TESTFILES/tarray6.h5 -$SRC_H5DUMP_TESTFILES/tarray7.h5 -$SRC_H5DUMP_TESTFILES/tarray8.h5 -$SRC_H5DUMP_TESTFILES/tattr.h5 -$SRC_H5DUMP_TESTFILES/tattr2.h5 -$SRC_H5DUMP_TESTFILES/tattr4_be.h5 -$SRC_H5DUMP_TESTFILES/tattrintsize.h5 -$SRC_H5DUMP_TESTFILES/tattrreg.h5 -$SRC_H5DUMP_TESTFILES/tbigdims.h5 -$SRC_H5DUMP_TESTFILES/tbinary.h5 -$SRC_H5DUMP_TESTFILES/tchar.h5 -$SRC_H5DUMP_TESTFILES/tcmpdattrintsize.h5 -$SRC_H5DUMP_TESTFILES/tcmpdintsize.h5 -$SRC_H5DUMP_TESTFILES/tcompound.h5 -$SRC_H5DUMP_TESTFILES/tcompound_complex.h5 -$SRC_H5DUMP_TESTFILES/tcompound_complex2.h5 -$SRC_H5DUMP_TESTFILES/tdatareg.h5 -$SRC_H5DUMP_TESTFILES/tdset.h5 -$SRC_H5DUMP_TESTFILES/tempty.h5 -$SRC_H5DUMP_TESTFILES/tsoftlinks.h5 -$SRC_H5DUMP_TESTFILES/textlinkfar.h5 -$SRC_H5DUMP_TESTFILES/textlinksrc.h5 -$SRC_H5DUMP_TESTFILES/textlinktar.h5 -$SRC_H5DUMP_TESTFILES/textlink.h5 -$SRC_H5DUMP_TESTFILES/tfamily00000.h5 -$SRC_H5DUMP_TESTFILES/tfamily00001.h5 -$SRC_H5DUMP_TESTFILES/tfamily00002.h5 -$SRC_H5DUMP_TESTFILES/tfamily00003.h5 -$SRC_H5DUMP_TESTFILES/tfamily00004.h5 -$SRC_H5DUMP_TESTFILES/tfamily00005.h5 -$SRC_H5DUMP_TESTFILES/tfamily00006.h5 -$SRC_H5DUMP_TESTFILES/tfamily00007.h5 -$SRC_H5DUMP_TESTFILES/tfamily00008.h5 -$SRC_H5DUMP_TESTFILES/tfamily00009.h5 -$SRC_H5DUMP_TESTFILES/tfamily00010.h5 -$SRC_H5DUMP_TESTFILES/tfcontents1.h5 -$SRC_H5DUMP_TESTFILES/tfcontents2.h5 -$SRC_H5DUMP_TESTFILES/tfilters.h5 -$SRC_H5DUMP_TESTFILES/tfpformat.h5 -$SRC_H5DUMP_TESTFILES/tfvalues.h5 -$SRC_H5DUMP_TESTFILES/tgroup.h5 -$SRC_H5DUMP_TESTFILES/tgrp_comments.h5 -$SRC_H5DUMP_TESTFILES/thlink.h5 -$SRC_H5DUMP_TESTFILES/thyperslab.h5 -$SRC_H5DUMP_TESTFILES/tintsattrs.h5 -$SRC_H5DUMP_TESTFILES/tints4dims.h5 -$SRC_H5DUMP_TESTFILES/tlarge_objname.h5 -#$SRC_H5DUMP_TESTFILES/tldouble.h5 -$SRC_H5DUMP_TESTFILES/tlonglinks.h5 -$SRC_H5DUMP_TESTFILES/tloop.h5 -$SRC_H5DUMP_TESTFILES/tmulti-b.h5 -$SRC_H5DUMP_TESTFILES/tmulti-g.h5 -$SRC_H5DUMP_TESTFILES/tmulti-l.h5 -$SRC_H5DUMP_TESTFILES/tmulti-o.h5 -$SRC_H5DUMP_TESTFILES/tmulti-r.h5 -$SRC_H5DUMP_TESTFILES/tmulti-s.h5 -$SRC_H5DUMP_TESTFILES/tnamed_dtype_attr.h5 -$SRC_H5DUMP_TESTFILES/tnestedcomp.h5 -$SRC_H5DUMP_TESTFILES/tnestedcmpddt.h5 -$SRC_H5DUMP_TESTFILES/tno-subset.h5 -$SRC_H5DUMP_TESTFILES/tnullspace.h5 -$SRC_H5DUMP_TESTFILES/zerodim.h5 -$SRC_H5DUMP_TESTFILES/torderattr.h5 -$SRC_H5DUMP_TESTFILES/tordergr.h5 -$SRC_H5DUMP_TESTFILES/tsaf.h5 -$SRC_H5DUMP_TESTFILES/tscalarattrintsize.h5 -$SRC_H5DUMP_TESTFILES/tscalarintattrsize.h5 -$SRC_H5DUMP_TESTFILES/tscalarintsize.h5 -$SRC_H5DUMP_TESTFILES/tscalarstring.h5 -$SRC_H5DUMP_TESTFILES/tslink.h5 -$SRC_H5DUMP_TESTFILES/tsplit_file-m.h5 -$SRC_H5DUMP_TESTFILES/tsplit_file-r.h5 -$SRC_H5DUMP_TESTFILES/tstr.h5 -$SRC_H5DUMP_TESTFILES/tstr2.h5 -$SRC_H5DUMP_TESTFILES/tstr3.h5 -$SRC_H5DUMP_TESTFILES/tudlink.h5 -$SRC_H5DUMP_TESTFILES/tvldtypes1.h5 -$SRC_H5DUMP_TESTFILES/tvldtypes2.h5 -$SRC_H5DUMP_TESTFILES/tvldtypes3.h5 -$SRC_H5DUMP_TESTFILES/tvldtypes4.h5 -$SRC_H5DUMP_TESTFILES/tvldtypes5.h5 -$SRC_H5DUMP_TESTFILES/tvlenstr_array.h5 -$SRC_H5DUMP_TESTFILES/tvlstr.h5 -$SRC_H5DUMP_TESTFILES/tvms.h5 -" - -LIST_OTHER_TEST_FILES=" -$SRC_H5DUMP_TESTFILES/charsets.ddl -$SRC_H5DUMP_TESTFILES/file_space.ddl -$SRC_H5DUMP_TESTFILES/filter_fail.ddl -$SRC_H5DUMP_TESTFILES/non_existing.ddl -$SRC_H5DUMP_TESTFILES/packedbits.ddl -$SRC_H5DUMP_TESTFILES/tall-1.ddl -$SRC_H5DUMP_TESTFILES/tall-2.ddl -$SRC_H5DUMP_TESTFILES/tall-2A.ddl -$SRC_H5DUMP_TESTFILES/tall-2A0.ddl -$SRC_H5DUMP_TESTFILES/tall-2B.ddl -$SRC_H5DUMP_TESTFILES/tall-3.ddl -$SRC_H5DUMP_TESTFILES/tall-4s.ddl -$SRC_H5DUMP_TESTFILES/tall-5s.ddl -$SRC_H5DUMP_TESTFILES/tall-6.ddl -$SRC_H5DUMP_TESTFILES/tall-6.exp -$SRC_H5DUMP_TESTFILES/tall-7.ddl -$SRC_H5DUMP_TESTFILES/tall-7N.ddl -$SRC_H5DUMP_TESTFILES/tallfilters.ddl -$SRC_H5DUMP_TESTFILES/tarray1.ddl -$SRC_H5DUMP_TESTFILES/tarray1_big.ddl -$SRC_H5DUMP_TESTFILES/tarray2.ddl -$SRC_H5DUMP_TESTFILES/tarray3.ddl -$SRC_H5DUMP_TESTFILES/tarray4.ddl -$SRC_H5DUMP_TESTFILES/tarray5.ddl -$SRC_H5DUMP_TESTFILES/tarray6.ddl -$SRC_H5DUMP_TESTFILES/tarray7.ddl -$SRC_H5DUMP_TESTFILES/tarray8.ddl -$SRC_H5DUMP_TESTFILES/tattr-1.ddl -$SRC_H5DUMP_TESTFILES/tattr-2.ddl -$SRC_H5DUMP_TESTFILES/tattr-3.ddl -$SRC_H5DUMP_TESTFILES/tattr-4_be.ddl -$SRC_H5DUMP_TESTFILES/tattrcontents1.ddl -$SRC_H5DUMP_TESTFILES/tattrcontents2.ddl -$SRC_H5DUMP_TESTFILES/tattrintsize.ddl -$SRC_H5DUMP_TESTFILES/tattrreg.ddl -$SRC_H5DUMP_TESTFILES/tattrregR.ddl -$SRC_H5DUMP_TESTFILES/tbin1.ddl -$SRC_H5DUMP_TESTFILES/tbin1.ddl -$SRC_H5DUMP_TESTFILES/tbin2.ddl -$SRC_H5DUMP_TESTFILES/tbin3.ddl -$SRC_H5DUMP_TESTFILES/tbin4.ddl -$SRC_H5DUMP_TESTFILES/tbinregR.ddl -$SRC_H5DUMP_TESTFILES/tbigdims.ddl -$SRC_H5DUMP_TESTFILES/tboot1.ddl -$SRC_H5DUMP_TESTFILES/tboot2.ddl -$SRC_H5DUMP_TESTFILES/tboot2A.ddl -$SRC_H5DUMP_TESTFILES/tboot2B.ddl -$SRC_H5DUMP_TESTFILES/tchar1.ddl -$SRC_H5DUMP_TESTFILES/tchunked.ddl -$SRC_H5DUMP_TESTFILES/tcmpdattrintsize.ddl -$SRC_H5DUMP_TESTFILES/tcmpdintsize.ddl -$SRC_H5DUMP_TESTFILES/tcomp-1.ddl -$SRC_H5DUMP_TESTFILES/tcomp-2.ddl -$SRC_H5DUMP_TESTFILES/tcomp-3.ddl -$SRC_H5DUMP_TESTFILES/tcomp-4.ddl -$SRC_H5DUMP_TESTFILES/tcompound_complex2.ddl -$SRC_H5DUMP_TESTFILES/tcompact.ddl -$SRC_H5DUMP_TESTFILES/tcontents.ddl -$SRC_H5DUMP_TESTFILES/tcontiguos.ddl -$SRC_H5DUMP_TESTFILES/tdatareg.ddl -$SRC_H5DUMP_TESTFILES/tdataregR.ddl -$SRC_H5DUMP_TESTFILES/tdeflate.ddl -$SRC_H5DUMP_TESTFILES/tdset-1.ddl -$SRC_H5DUMP_TESTFILES/tdset-2.ddl -$SRC_H5DUMP_TESTFILES/tdset-3s.ddl -$SRC_H5DUMP_TESTFILES/tempty.ddl -$SRC_H5DUMP_TESTFILES/texceedsubstart.ddl -$SRC_H5DUMP_TESTFILES/texceedsubcount.ddl -$SRC_H5DUMP_TESTFILES/texceedsubstride.ddl -$SRC_H5DUMP_TESTFILES/texceedsubblock.ddl -$SRC_H5DUMP_TESTFILES/texternal.ddl -$SRC_H5DUMP_TESTFILES/textlinksrc.ddl -$SRC_H5DUMP_TESTFILES/textlinkfar.ddl -$SRC_H5DUMP_TESTFILES/textlink.ddl -$SRC_H5DUMP_TESTFILES/tfamily.ddl -$SRC_H5DUMP_TESTFILES/tfill.ddl -$SRC_H5DUMP_TESTFILES/tfletcher32.ddl -$SRC_H5DUMP_TESTFILES/tfpformat.ddl -$SRC_H5DUMP_TESTFILES/tgroup-1.ddl -$SRC_H5DUMP_TESTFILES/tgroup-2.ddl -$SRC_H5DUMP_TESTFILES/tgrp_comments.ddl -$SRC_H5DUMP_TESTFILES/thlink-1.ddl -$SRC_H5DUMP_TESTFILES/thlink-2.ddl -$SRC_H5DUMP_TESTFILES/thlink-3.ddl -$SRC_H5DUMP_TESTFILES/thlink-4.ddl -$SRC_H5DUMP_TESTFILES/thlink-5.ddl -$SRC_H5DUMP_TESTFILES/thyperslab.ddl -$SRC_H5DUMP_TESTFILES/tindicesno.ddl -$SRC_H5DUMP_TESTFILES/tindicessub1.ddl -$SRC_H5DUMP_TESTFILES/tindicessub2.ddl -$SRC_H5DUMP_TESTFILES/tindicessub3.ddl -$SRC_H5DUMP_TESTFILES/tindicessub4.ddl -$SRC_H5DUMP_TESTFILES/tindicesyes.ddl -$SRC_H5DUMP_TESTFILES/tints4dims.ddl -$SRC_H5DUMP_TESTFILES/tints4dimsBlock2.ddl -$SRC_H5DUMP_TESTFILES/tints4dimsBlockEq.ddl -$SRC_H5DUMP_TESTFILES/tints4dimsCount2.ddl -$SRC_H5DUMP_TESTFILES/tints4dimsCountEq.ddl -$SRC_H5DUMP_TESTFILES/tints4dimsStride2.ddl -$SRC_H5DUMP_TESTFILES/tintsattrs.ddl -$SRC_H5DUMP_TESTFILES/tlarge_objname.ddl -#$SRC_H5DUMP_TESTFILES/tldouble.ddl -$SRC_H5DUMP_TESTFILES/tlonglinks.ddl -$SRC_H5DUMP_TESTFILES/tloop-1.ddl -$SRC_H5DUMP_TESTFILES/tmulti.ddl -$SRC_H5DUMP_TESTFILES/tmultifile.ddl -$SRC_H5DUMP_TESTFILES/tqmarkfile.ddl -$SRC_H5DUMP_TESTFILES/tstarfile.ddl -$SRC_H5DUMP_TESTFILES/tnamed_dtype_attr.ddl -$SRC_H5DUMP_TESTFILES/tnestcomp-1.ddl -$SRC_H5DUMP_TESTFILES/tnestedcmpddt.ddl -$SRC_H5DUMP_TESTFILES/tnbit.ddl -$SRC_H5DUMP_TESTFILES/tnoattrdata.ddl -$SRC_H5DUMP_TESTFILES/tnoattrddl.ddl -$SRC_H5DUMP_TESTFILES/tnodata.ddl -$SRC_H5DUMP_TESTFILES/tnoddl.ddl -$SRC_H5DUMP_TESTFILES/tnoddlfile.ddl -$SRC_H5DUMP_TESTFILES/tnoddlfile.exp -$SRC_H5DUMP_TESTFILES/tno-subset.ddl -$SRC_H5DUMP_TESTFILES/tnullspace.ddl -$SRC_H5DUMP_TESTFILES/trawdatafile.ddl -$SRC_H5DUMP_TESTFILES/trawdatafile.exp -$SRC_H5DUMP_TESTFILES/trawssetfile.ddl -$SRC_H5DUMP_TESTFILES/trawssetfile.exp -$SRC_H5DUMP_TESTFILES/zerodim.ddl -$SRC_H5DUMP_TESTFILES/tordergr1.ddl -$SRC_H5DUMP_TESTFILES/tordergr2.ddl -$SRC_H5DUMP_TESTFILES/tordergr3.ddl -$SRC_H5DUMP_TESTFILES/tordergr4.ddl -$SRC_H5DUMP_TESTFILES/tordergr5.ddl -$SRC_H5DUMP_TESTFILES/torderattr1.ddl -$SRC_H5DUMP_TESTFILES/torderattr2.ddl -$SRC_H5DUMP_TESTFILES/torderattr3.ddl -$SRC_H5DUMP_TESTFILES/torderattr4.ddl -$SRC_H5DUMP_TESTFILES/tordercontents1.ddl -$SRC_H5DUMP_TESTFILES/tordercontents2.ddl -$SRC_H5DUMP_TESTFILES/torderlinks1.ddl -$SRC_H5DUMP_TESTFILES/torderlinks2.ddl -$SRC_H5DUMP_TESTFILES/tperror.ddl -$SRC_H5DUMP_TESTFILES/treadfilter.ddl -$SRC_H5DUMP_TESTFILES/treadintfilter.ddl -$SRC_H5DUMP_TESTFILES/treference.ddl -$SRC_H5DUMP_TESTFILES/tsaf.ddl -$SRC_H5DUMP_TESTFILES/tscalarattrintsize.ddl -$SRC_H5DUMP_TESTFILES/tscalarintattrsize.ddl -$SRC_H5DUMP_TESTFILES/tscalarintsize.ddl -$SRC_H5DUMP_TESTFILES/tscalarstring.ddl -$SRC_H5DUMP_TESTFILES/tscaleoffset.ddl -$SRC_H5DUMP_TESTFILES/tshuffle.ddl -$SRC_H5DUMP_TESTFILES/tslink-1.ddl -$SRC_H5DUMP_TESTFILES/tslink-2.ddl -$SRC_H5DUMP_TESTFILES/tslink-D.ddl -$SRC_H5DUMP_TESTFILES/tsplit_file.ddl -$SRC_H5DUMP_TESTFILES/tstr-1.ddl -$SRC_H5DUMP_TESTFILES/tstr-2.ddl -$SRC_H5DUMP_TESTFILES/tstr2bin2.exp -$SRC_H5DUMP_TESTFILES/tstr2bin6.exp -$SRC_H5DUMP_TESTFILES/tstring.ddl -$SRC_H5DUMP_TESTFILES/tstring2.ddl -$SRC_H5DUMP_TESTFILES/tstringe.ddl -$SRC_H5DUMP_TESTFILES/tszip.ddl -$SRC_H5DUMP_TESTFILES/tudlink-1.ddl -$SRC_H5DUMP_TESTFILES/tudlink-2.ddl -$SRC_H5DUMP_TESTFILES/tuserfilter.ddl -$SRC_H5DUMP_TESTFILES/tvldtypes1.ddl -$SRC_H5DUMP_TESTFILES/tvldtypes2.ddl -$SRC_H5DUMP_TESTFILES/tvldtypes3.ddl -$SRC_H5DUMP_TESTFILES/tvldtypes4.ddl -$SRC_H5DUMP_TESTFILES/tvldtypes5.ddl -$SRC_H5DUMP_TESTFILES/tvlenstr_array.ddl -$SRC_H5DUMP_TESTFILES/tvlstr.ddl -$SRC_H5DUMP_TESTFILES/tvms.ddl -$SRC_H5DUMP_TESTFILES/twidedisplay.ddl -$SRC_H5DUMP_TESTFILES/twithddl.exp -$SRC_H5DUMP_TESTFILES/twithddlfile.ddl -$SRC_H5DUMP_TESTFILES/twithddlfile.exp -$SRC_H5DUMP_TESTFILES/h5dump-help.txt -$SRC_H5DUMP_TESTFILES/out3.h5import -$SRC_H5DUMP_TESTFILES/tbinregR.exp -" - -LIST_ERROR_TEST_FILES=" -${SRC_H5DUMP_ERRORFILES}/filter_fail.err -${SRC_H5DUMP_ERRORFILES}/non_existing.err -${SRC_H5DUMP_ERRORFILES}/tall-1.err -${SRC_H5DUMP_ERRORFILES}/tall-2A.err -${SRC_H5DUMP_ERRORFILES}/tall-2A0.err -${SRC_H5DUMP_ERRORFILES}/tall-2B.err -${SRC_H5DUMP_ERRORFILES}/tarray1_big.err -${SRC_H5DUMP_ERRORFILES}/tattr-3.err -${SRC_H5DUMP_ERRORFILES}/tattrregR.err -${SRC_H5DUMP_ERRORFILES}/tcomp-3.err -${SRC_H5DUMP_ERRORFILES}/tdataregR.err -${SRC_H5DUMP_ERRORFILES}/tdset-2.err -${SRC_H5DUMP_ERRORFILES}/texceedsubblock.err -${SRC_H5DUMP_ERRORFILES}/texceedsubcount.err -${SRC_H5DUMP_ERRORFILES}/texceedsubstart.err -${SRC_H5DUMP_ERRORFILES}/texceedsubstride.err -${SRC_H5DUMP_ERRORFILES}/textlink.err -${SRC_H5DUMP_ERRORFILES}/textlinkfar.err -${SRC_H5DUMP_ERRORFILES}/textlinksrc.err -${SRC_H5DUMP_ERRORFILES}/tgroup-2.err -${SRC_H5DUMP_ERRORFILES}/torderlinks1.err -${SRC_H5DUMP_ERRORFILES}/torderlinks2.err -${SRC_H5DUMP_ERRORFILES}/tperror.err -${SRC_H5DUMP_ERRORFILES}/tqmarkfile.err -${SRC_H5DUMP_ERRORFILES}/tslink-D.err -" - -# -# copy test files and expected output files from source dirs to test dir -# -COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES $LIST_ERROR_TEST_FILES" - -COPY_TESTFILES_TO_TESTDIR() -{ - # copy test files. Used -f to make sure get a new copy - for tstfile in $COPY_TESTFILES - do - # ignore '#' comment - echo $tstfile | tr -d ' ' | grep '^#' > /dev/null - RET=$? - if [ $RET -eq 1 ]; then - # skip cp if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=`$DIRNAME $tstfile` - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $CP -f $tstfile $TESTDIR - if [ $? -ne 0 ]; then - echo "Error: FAILED to copy $tstfile ." - - # Comment out this to CREATE expected file - exit $EXIT_FAILURE - fi - fi - fi - done -} - -CLEAN_TESTFILES_AND_TESTDIR() -{ - # skip rm if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=$SRC_H5DUMP_TESTFILES - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $RM $TESTDIR - fi -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Testing". -# -TESTING() { - SPACES=" " - echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Source in the output filter function definitions. -. $srcdir/../../bin/output_filter.sh - -# Run a test and print PASS or *FAIL*. If a test fails then increment -# the `nerrors' global variable and (if $verbose is set) display the -# difference between the actual output and the expected output. The -# expected output is given as the first argument to this function and -# the actual output file is calculated by replacing the `.ddl' with -# `.out'. The actual output is not removed if $HDF5_NOCLEANUP has a -# non-zero value. -# If $1 == ignorecase then do caseless CMP and DIFF. -# ADD_H5_TEST -TOOLTEST() { - # check if caseless compare and diff requested - if [ "$1" = ignorecase ]; then - caseless="-i" - # replace cmp with diff which runs much longer. - xCMP="$DIFF -i" - shift - else - caseless="" - # stick with faster cmp if ignorecase is not requested. - xCMP="$CMP" - fi - - expect="$TESTDIR/$1" - actual="$TESTDIR/`basename $1 .ddl`.out" - actual_err="$TESTDIR/`basename $1 .ddl`.err" - actual_sav=${actual}-sav - actual_err_sav=${actual_err}-sav - shift - - # Run test. - TESTING $DUMPER $@ - ( - cd $TESTDIR - $RUNSERIAL $DUMPER_BIN "$@" - ) >$actual 2>$actual_err - - # save actual and actual_err in case they are needed later. - cp $actual $actual_sav - STDOUT_FILTER $actual - cp $actual_err $actual_err_sav - STDERR_FILTER $actual_err - cat $actual_err >> $actual - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $xCMP $expect $actual > /dev/null 2>&1 ; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.ddl) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $caseless $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err $actual_sav $actual_err_sav $actual_ext - fi - -} - - -# same as TOOLTEST1 but compares generated file to expected output -# and compares the generated data file to the expected data file -# used for the binary tests that expect a full path in -o without -b -# ADD_H5_EXPORT_TEST -TOOLTEST2() { - - expectdata="$TESTDIR/$1" - expect="$TESTDIR/`basename $1 .exp`.ddl" - actualdata="$TESTDIR/`basename $1 .exp`.txt" - actual="$TESTDIR/`basename $1 .exp`.out" - actual_err="$TESTDIR/`basename $1 .exp`.err" - shift - - # Run test. - TESTING $DUMPER $@ - ( - cd $TESTDIR - $RUNSERIAL $DUMPER_BIN "$@" - ) >$actual 2>$actual_err - cat $actual_err >> $actual - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - if [ ! -f $expectdata ]; then - # Create the expect data file if it doesn't yet exist. - echo " CREATED" - cp $actualdata $expectdata - elif $CMP $expectdata $actualdata; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected datafile (*.exp) differs from actual datafile (*.txt)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expectdata $actualdata |sed 's/^/ /' - fi - else - echo "*FAILED*" - echo " Expected result (*.ddl) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actualdata $actual_err - fi - -} - -# same as TOOLTEST2 but compares generated file to expected ddl file -# and compares the generated data file to the expected data file -# used for the binary tests that expect a full path in -o without -b -# ADD_H5_TEST_EXPORT -TOOLTEST2A() { - - expectdata="$TESTDIR/$1" - expect="$TESTDIR/`basename $1 .exp`.ddl" - actualdata="$TESTDIR/`basename $1 .exp`.txt" - actual="$TESTDIR/`basename $1 .exp`.out" - actual_err="$TESTDIR/`basename $1 .exp`.err" - shift - expectmeta="$TESTDIR/$1" - actualmeta="$TESTDIR/`basename $1 .exp`.txt" - shift - - # Run test. - TESTING $DUMPER $@ - ( - cd $TESTDIR - $RUNSERIAL $DUMPER_BIN "$@" - ) >$actual 2>$actual_err - cat $actual_err >> $actual - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - if [ ! -f $expectdata ]; then - # Create the expect data file if it doesn't yet exist. - echo " CREATED" - cp $actualdata $expectdata - elif $DIFF $expectdata $actualdata; then - if [ ! -f $expectmeta ]; then - # Create the expect meta file if it doesn't yet exist. - echo " CREATED" - cp $actualmeta $expectmeta - elif $CMP $expectmeta $actualmeta; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected metafile (*.ddl) differs from actual metafile (*.txt)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expectmeta $actualmeta |sed 's/^/ /' - fi - else - echo "*FAILED*" - echo " Expected datafile (*.exp) differs from actual datafile (*.txt)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expectdata $actualdata |sed 's/^/ /' - fi - else - echo "*FAILED*" - echo " Expected result (*.ddl) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actualdata $actual_err $actualmeta - fi - -} - -# same as TOOLTEST2 but only compares the generated data file to the expected data file -# used for the binary tests that expect a full path in -o with -b -# ADD_H5_EXPORT_TEST -TOOLTEST2B() { - - expectdata="$TESTDIR/$1" - actualdata="$TESTDIR/`basename $1 .exp`.txt" - actual="$TESTDIR/`basename $1 .exp`.out" - actual_err="$TESTDIR/`basename $1 .exp`.err" - shift - - # Run test. - TESTING $DUMPER $@ - ( - cd $TESTDIR - $RUNSERIAL $DUMPER_BIN "$@" - ) >$actual 2>$actual_err - cat $actual_err >> $actual - - if [ ! -f $expectdata ]; then - # Create the expect data file if it doesn't yet exist. - echo " CREATED" - cp $actualdata $expectdata - elif $CMP $expectdata $actualdata; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected datafile (*.exp) differs from actual datafile (*.txt)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expectdata $actualdata |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actualdata $actual_err - fi - -} - -# same as TOOLTEST but filters error stack outp -# Extract file name, line number, version and thread IDs because they may be different -TOOLTEST3() { - - expect="$TESTDIR/$1" - actual="$TESTDIR/`basename $1 .ddl`.out" - actual_err="$TESTDIR/`basename $1 .ddl`.err" - actual_ext="$TESTDIR/`basename $1 .ddl`.ext" - actual_sav=${actual}-sav - actual_err_sav=${actual_err}-sav - shift - - # Run test. - TESTING $DUMPER $@ - ( - cd $TESTDIR - $RUNSERIAL $DUMPER_BIN "$@" - ) >$actual 2>$actual_err - - # save actual and actual_err in case they are needed later. - cp $actual $actual_sav - STDOUT_FILTER $actual - cp $actual_err $actual_err_sav - STDERR_FILTER $actual_err - - # Extract file name, line number, version and thread IDs because they may be different - sed -e 's/thread [0-9]*/thread (IDs)/' -e 's/: .*\.c /: (file name) /' \ - -e 's/line [0-9]*/line (number)/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ - -e 's/H5Eget_auto[1-2]*/H5Eget_auto(1 or 2)/' \ - -e 's/H5Eset_auto[1-2]*/H5Eset_auto(1 or 2)/' \ - $actual_err > $actual_ext - cat $actual_ext >> $actual - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.ddl) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err $actual_sav $actual_err_sav - fi - -} - -# same as TOOLTEST3 but filters error stack output and compares to an error file -# Extract file name, line number, version and thread IDs because they may be different -# ADD_H5ERR_MASK_TEST -TOOLTEST4() { - - expect="$TESTDIR/$1" - expect_err="$TESTDIR/`basename $1 .ddl`.err" - actual="$TESTDIR/`basename $1 .ddl`.out" - actual_err="$TESTDIR/`basename $1 .ddl`.oerr" - actual_ext="$TESTDIR/`basename $1 .ddl`.ext" - actual_sav=${actual}-sav - actual_err_sav=${actual_err}-sav - shift - - # Run test. - TESTING $DUMPER $@ - ( - cd $TESTDIR - $RUNSERIAL $DUMPER_BIN "$@" - ) >$actual 2>$actual_err - - # save actual and actual_err in case they are needed later. - cp $actual $actual_sav - STDOUT_FILTER $actual - cp $actual_err $actual_err_sav - STDERR_FILTER $actual_err - - # Extract file name, line number, version and thread IDs because they may be different - sed -e 's/thread [0-9]*/thread (IDs)/' -e 's/: .*\.c /: (file name) /' \ - -e 's/line [0-9]*/line (number)/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ - -e 's/H5Eget_auto[1-2]*/H5Eget_auto(1 or 2)/' \ - -e 's/H5Eset_auto[1-2]*/H5Eset_auto(1 or 2)/' \ - $actual_err > $actual_ext - #cat $actual_ext >> $actual - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - if $CMP $expect_err $actual_ext; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.err) differs from actual result (*.oerr)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect_err $actual_ext |sed 's/^/ /' - fi - else - echo "*FAILED*" - echo " Expected result (*.ddl) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err $actual_sav $actual_err_sav - fi - -} - -# same as TOOLTEST4 but disables plugin filter loading -# silences extra error output on some platforms -# ADD_H5ERR_MASK_TEST -TOOLTEST5() { - - expect="$TESTDIR/$1" - expect_err="$TESTDIR/`basename $1 .ddl`.err" - actual="$TESTDIR/`basename $1 .ddl`.out" - actual_err="$TESTDIR/`basename $1 .ddl`.oerr" - actual_ext="$TESTDIR/`basename $1 .ddl`.ext" - actual_sav=${actual}-sav - actual_err_sav=${actual_err}-sav - shift - - # Run test. - TESTING $DUMPER $@ - ( - cd $TESTDIR - $ENVCMD $RUNSERIAL $DUMPER_BIN "$@" - ) >$actual 2>$actual_err - - # save actual and actual_err in case they are needed later. - cp $actual $actual_sav - STDOUT_FILTER $actual - cp $actual_err $actual_err_sav - STDERR_FILTER $actual_err - - # Extract file name, line number, version and thread IDs because they may be different - sed -e 's/thread [0-9]*/thread (IDs)/' -e 's/: .*\.c /: (file name) /' \ - -e 's/line [0-9]*/line (number)/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ - -e 's/H5Eget_auto[1-2]*/H5Eget_auto(1 or 2)/' \ - -e 's/H5Eset_auto[1-2]*/H5Eset_auto(1 or 2)/' \ - $actual_err > $actual_ext - #cat $actual_ext >> $actual - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - if $CMP $expect_err $actual_ext; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.err) differs from actual result (*.oerr)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect_err $actual_ext |sed 's/^/ /' - fi - else - echo "*FAILED*" - echo " Expected result (*.ddl) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err $actual_sav $actual_err_sav - fi - -} -# ADD_HELP_TEST -TOOLTEST_HELP() { - - expect="$TESTDIR/$1" - actual="$TESTDIR/`basename $1 .txt`.out" - actual_err="$TESTDIR/`basename $1 .txt`.err" - shift - - # Run test. - TESTING $DUMPER $@ - ( - cd $TESTDIR - $RUNSERIAL $DUMPER_BIN "$@" - ) >$actual 2>$actual_err - cat $actual_err >> $actual - - if [ ! -f $expectdata ]; then - # Create the expect data file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect-CREATED - elif $CMP $expect $actual; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected output (*.txt) differs from actual output (*.out)" - nerrors="`expr $nerrors + 1`" - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err - fi - -} - -# Print a "SKIP" message -SKIP() { - TESTING $DUMPER $@ - echo " -SKIP-" -} - -# Print a line-line message left justified in a field of 70 characters -# -PRINT_H5DIFF() { - SPACES=" " - echo " Running h5diff $* $SPACES" | cut -c1-70 | tr -d '\012' -} - - -# Call the h5diff tool -# -DIFFTEST() -{ - PRINT_H5DIFF $@ - ( - cd $TESTDIR - $RUNSERIAL $H5DIFF_BIN "$@" -q - ) - RET=$? - if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - fi - -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Verifying". -# -PRINT_H5IMPORT() { - SPACES=" " - echo " Running h5import $* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Call the h5import tool -# -IMPORTTEST() -{ - # remove the output hdf5 file if it exists - hdf5_file="$TESTDIR/$5" - if [ -f $hdf5_file ]; then - rm -f $hdf5_file - fi - - PRINT_H5IMPORT $@ - ( - cd $TESTDIR - $RUNSERIAL $H5IMPORT_BIN "$@" - ) - RET=$? - if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - fi - -} - - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## -# prepare for test -COPY_TESTFILES_TO_TESTDIR - -TOOLTEST_HELP h5dump-help.txt -h - -# test data output redirection -TOOLTEST tnoddl.ddl --enable-error-stack --ddl -y packedbits.h5 -TOOLTEST tnodata.ddl --enable-error-stack --output packedbits.h5 -TOOLTEST tnoattrddl.ddl --enable-error-stack -O -y tattr.h5 -TOOLTEST tnoattrdata.ddl --enable-error-stack -A -o tattr.h5 -TOOLTEST2 trawdatafile.exp --enable-error-stack -y -o trawdatafile.txt packedbits.h5 -TOOLTEST2 tnoddlfile.exp --enable-error-stack -O -y -o tnoddlfile.txt packedbits.h5 -TOOLTEST2A twithddlfile.exp twithddl.exp --enable-error-stack --ddl=twithddl.txt -y -o twithddlfile.txt packedbits.h5 -TOOLTEST2 trawssetfile.exp --enable-error-stack -d "/dset1[1,1;;;]" -y -o trawssetfile.txt tdset.h5 - -# test for maximum display datasets -TOOLTEST twidedisplay.ddl --enable-error-stack -w0 packedbits.h5 - -# test for signed/unsigned datasets -TOOLTEST packedbits.ddl --enable-error-stack packedbits.h5 -# test for compound signed/unsigned datasets -TOOLTEST tcmpdintsize.ddl --enable-error-stack tcmpdintsize.h5 -# test for signed/unsigned scalar datasets -TOOLTEST tscalarintsize.ddl --enable-error-stack tscalarintsize.h5 -# test for signed/unsigned attributes -TOOLTEST tattrintsize.ddl --enable-error-stack tattrintsize.h5 -# test for compound signed/unsigned attributes -TOOLTEST tcmpdattrintsize.ddl --enable-error-stack tcmpdattrintsize.h5 -# test for signed/unsigned scalar attributes -TOOLTEST tscalarattrintsize.ddl --enable-error-stack tscalarattrintsize.h5 -# test for signed/unsigned scalar datasets with attributes -TOOLTEST tscalarintattrsize.ddl --enable-error-stack tscalarintattrsize.h5 -# test for signed/unsigned datasets attributes -TOOLTEST tintsattrs.ddl --enable-error-stack tintsattrs.h5 -# test for string scalar dataset attribute -TOOLTEST tscalarstring.ddl --enable-error-stack tscalarstring.h5 -# test for displaying groups -TOOLTEST tgroup-1.ddl --enable-error-stack tgroup.h5 -# test for displaying the selected groups -TOOLTEST4 tgroup-2.ddl --enable-error-stack --group=/g2 --group / -g /y tgroup.h5 - -# test for displaying simple space datasets -TOOLTEST tdset-1.ddl --enable-error-stack tdset.h5 -# test for displaying selected datasets -TOOLTEST4 tdset-2.ddl --enable-error-stack -H -d dset1 -d /dset2 --dataset=dset3 tdset.h5 - -# test for displaying attributes -TOOLTEST tattr-1.ddl --enable-error-stack tattr.h5 -# test for displaying the selected attributes of string type and scalar space -TOOLTEST tattr-2.ddl --enable-error-stack -a "/\/attr1" --attribute /attr4 --attribute=/attr5 tattr.h5 -TOOLTEST tattr-2.ddl --enable-error-stack -N "/\/attr1" --any_path /attr4 --any_path=/attr5 tattr.h5 -# test for header and error messages -TOOLTEST4 tattr-3.ddl --enable-error-stack --header -a /attr2 --attribute=/attr tattr.h5 -# test for displaying at least 9 attributes on root from a BE machine -TOOLTEST tattr-4_be.ddl --enable-error-stack tattr4_be.h5 -# test for displaying attributes in shared datatype (also in group and dataset) -TOOLTEST tnamed_dtype_attr.ddl --enable-error-stack tnamed_dtype_attr.h5 - -# test for displaying soft links and user-defined links -TOOLTEST tslink-1.ddl --enable-error-stack tslink.h5 -TOOLTEST tudlink-1.ddl --enable-error-stack tudlink.h5 -# test for displaying the selected link -TOOLTEST tslink-2.ddl --enable-error-stack -l slink2 tslink.h5 -TOOLTEST tslink-2.ddl --enable-error-stack -N slink2 tslink.h5 -TOOLTEST tudlink-2.ddl --enable-error-stack -l udlink2 tudlink.h5 -# test for displaying dangling soft links -TOOLTEST4 tslink-D.ddl --enable-error-stack -d /slink1 tslink.h5 - -# tests for hard links -TOOLTEST thlink-1.ddl --enable-error-stack thlink.h5 -TOOLTEST thlink-2.ddl --enable-error-stack -d /g1/dset2 --dataset /dset1 --dataset=/g1/g1.1/dset3 thlink.h5 -TOOLTEST thlink-3.ddl --enable-error-stack -d /g1/g1.1/dset3 --dataset /g1/dset2 --dataset=/dset1 thlink.h5 -TOOLTEST thlink-4.ddl --enable-error-stack -g /g1 thlink.h5 -TOOLTEST thlink-4.ddl --enable-error-stack -N /g1 thlink.h5 -TOOLTEST thlink-5.ddl --enable-error-stack -d /dset1 -g /g2 -d /g1/dset2 thlink.h5 -TOOLTEST thlink-5.ddl --enable-error-stack -N /dset1 -N /g2 -N /g1/dset2 thlink.h5 - -# tests for compound data types -TOOLTEST tcomp-1.ddl --enable-error-stack tcompound.h5 -# test for named data types -TOOLTEST tcomp-2.ddl --enable-error-stack -t /type1 --datatype /type2 --datatype=/group1/type3 tcompound.h5 -TOOLTEST tcomp-2.ddl --enable-error-stack -N /type1 --any_path /type2 --any_path=/group1/type3 tcompound.h5 -# test for unamed type -TOOLTEST4 tcomp-3.ddl --enable-error-stack -t /#6632 -g /group2 tcompound.h5 -# test complicated compound datatype -TOOLTEST tcomp-4.ddl --enable-error-stack tcompound_complex.h5 -TOOLTEST tcompound_complex.ddl --enable-error-stack tcompound_complex2.h5 -# tests for bitfields and opaque data types -TOOLTEST tbitnopaque.ddl --enable-error-stack tbitnopaque.h5 - -#test for the nested compound type -TOOLTEST tnestcomp-1.ddl --enable-error-stack tnestedcomp.h5 -TOOLTEST tnestedcmpddt.ddl --enable-error-stack tnestedcmpddt.h5 - -# test for options -TOOLTEST4 tall-1.ddl --enable-error-stack tall.h5 -TOOLTEST tall-2.ddl --enable-error-stack --header -g /g1/g1.1 -a attr2 tall.h5 -TOOLTEST tall-3.ddl --enable-error-stack -d /g2/dset2.1 -l /g1/g1.2/g1.2.1/slink tall.h5 -TOOLTEST tall-3.ddl --enable-error-stack -N /g2/dset2.1 -N /g1/g1.2/g1.2.1/slink tall.h5 -TOOLTEST tall-7.ddl --enable-error-stack -a attr1 tall.h5 -TOOLTEST tall-7N.ddl --enable-error-stack -N attr1 tall.h5 - -# test for loop detection -TOOLTEST tloop-1.ddl --enable-error-stack tloop.h5 - -# test for string -TOOLTEST tstr-1.ddl --enable-error-stack tstr.h5 -TOOLTEST tstr-2.ddl --enable-error-stack tstr2.h5 - -# test for file created by Lib SAF team -TOOLTEST tsaf.ddl --enable-error-stack tsaf.h5 - -# test for file with variable length data -TOOLTEST tvldtypes1.ddl --enable-error-stack tvldtypes1.h5 -TOOLTEST tvldtypes2.ddl --enable-error-stack tvldtypes2.h5 -TOOLTEST tvldtypes3.ddl --enable-error-stack tvldtypes3.h5 -TOOLTEST tvldtypes4.ddl --enable-error-stack tvldtypes4.h5 -TOOLTEST tvldtypes5.ddl --enable-error-stack tvldtypes5.h5 - -#test for file with variable length string data -TOOLTEST tvlstr.ddl --enable-error-stack tvlstr.h5 -TOOLTEST tvlenstr_array.ddl --enable-error-stack tvlenstr_array.h5 - -# test for files with array data -TOOLTEST tarray1.ddl --enable-error-stack tarray1.h5 -# # added for bug# 2092 - tarray1_big.h -TOOLTEST4 tarray1_big.ddl --enable-error-stack -R tarray1_big.h5 -TOOLTEST tarray2.ddl --enable-error-stack tarray2.h5 -TOOLTEST tarray3.ddl --enable-error-stack tarray3.h5 -TOOLTEST tarray4.ddl --enable-error-stack tarray4.h5 -TOOLTEST tarray5.ddl --enable-error-stack tarray5.h5 -TOOLTEST tarray6.ddl --enable-error-stack tarray6.h5 -TOOLTEST tarray7.ddl --enable-error-stack tarray7.h5 -TOOLTEST tarray8.ddl --enable-error-stack tarray8.h5 - -# test for wildcards in filename (does not work with cmake) -# inconsistent across platforms TOOLTEST3 tstarfile.ddl --enable-error-stack -H -d Dataset1 tarr*.h5 -#TOOLTEST4 tqmarkfile.ddl --enable-error-stack -H -d Dataset1 tarray?.h5 -TOOLTEST tmultifile.ddl --enable-error-stack -H -d Dataset1 tarray2.h5 tarray3.h5 tarray4.h5 tarray5.h5 tarray6.h5 tarray7.h5 - -# test for files with empty data -TOOLTEST tempty.ddl --enable-error-stack tempty.h5 - -# test for files with groups that have comments -TOOLTEST tgrp_comments.ddl --enable-error-stack tgrp_comments.h5 - -# test the --filedriver flag -TOOLTEST tsplit_file.ddl --enable-error-stack --filedriver=split tsplit_file -TOOLTEST tfamily.ddl --enable-error-stack --filedriver=family tfamily%05d.h5 -TOOLTEST tmulti.ddl --enable-error-stack --filedriver=multi tmulti - -# test for files with group names which reach > 1024 bytes in size -TOOLTEST tlarge_objname.ddl --enable-error-stack -w157 tlarge_objname.h5 - -# test '-A' to suppress data but print attr's -TOOLTEST4 tall-2A.ddl --enable-error-stack -A tall.h5 - -# test '-A' to suppress attr's but print data -TOOLTEST4 tall-2A0.ddl --enable-error-stack -A 0 tall.h5 - -# test '-r' to print attributes in ASCII instead of decimal -TOOLTEST4 tall-2B.ddl --enable-error-stack -A -r tall.h5 - -# test Subsetting -TOOLTEST tall-4s.ddl --enable-error-stack --dataset=/g1/g1.1/dset1.1.1 --start=1,1 --stride=2,3 --count=3,2 --block=1,1 tall.h5 -TOOLTEST tall-5s.ddl --enable-error-stack -d "/g1/g1.1/dset1.1.2[0;2;10;]" tall.h5 -TOOLTEST tdset-3s.ddl --enable-error-stack -d "/dset1[1,1;;;]" tdset.h5 -TOOLTEST tno-subset.ddl --enable-error-stack --no-compact-subset -d "AHFINDERDIRECT::ah_centroid_t[0] it=0 tl=0" tno-subset.h5 - -TOOLTEST tints4dimsCount2.ddl --enable-error-stack -d FourDimInts -s 0,0,0,0 -c 2,2,2,2 tints4dims.h5 -TOOLTEST tints4dimsBlock2.ddl --enable-error-stack -d FourDimInts -s 0,0,0,0 -c 1,1,1,1 -k 2,2,2,2 tints4dims.h5 -TOOLTEST tints4dimsStride2.ddl --enable-error-stack -d FourDimInts -s 0,0,0,0 -S 2,2,2,2 -c 2,2,2,2 tints4dims.h5 -TOOLTEST tints4dimsCountEq.ddl --enable-error-stack -d FourDimInts -s 0,0,0,0 -S 2,2,1,1 -k 1,2,1,1 -c 2,2,4,4 tints4dims.h5 -TOOLTEST tints4dimsBlockEq.ddl --enable-error-stack -d FourDimInts -s 0,0,0,0 -S 2,2,1,1 -c 2,2,1,1 -k 1,2,4,4 tints4dims.h5 - -# test printing characters in ASCII instead of decimal -TOOLTEST tchar1.ddl --enable-error-stack -r tchar.h5 - -# test datatypes in ASCII and UTF8 -TOOLTEST charsets.ddl --enable-error-stack charsets.h5 - -# rev. 2004 - -# tests for super block -TOOLTEST tboot1.ddl --enable-error-stack -H -B -d dset tfcontents1.h5 -TOOLTEST tboot2.ddl --enable-error-stack -B tfcontents2.h5 -TOOLTEST tboot2A.ddl --enable-error-stack --boot-block tfcontents2.h5 -TOOLTEST tboot2B.ddl --enable-error-stack --superblock tfcontents2.h5 -TOOLTEST file_space.ddl --enable-error-stack -B file_space.h5 - -# test -p with a non existing dataset -TOOLTEST4 tperror.ddl --enable-error-stack -p -d bogus tfcontents1.h5 - -# test for file contents -TOOLTEST tcontents.ddl --enable-error-stack -n tfcontents1.h5 -TOOLTEST tordercontents1.ddl --enable-error-stack -n --sort_by=name --sort_order=ascending tfcontents1.h5 -TOOLTEST tordercontents2.ddl --enable-error-stack -n --sort_by=name --sort_order=descending tfcontents1.h5 -TOOLTEST tattrcontents1.ddl --enable-error-stack -n 1 --sort_order=ascending tall.h5 -TOOLTEST tattrcontents2.ddl --enable-error-stack -n 1 --sort_order=descending tall.h5 - -# tests for storage layout -# compact -TOOLTEST tcompact.ddl --enable-error-stack -H -p -d compact tfilters.h5 -# contiguous -TOOLTEST tcontiguos.ddl --enable-error-stack -H -p -d contiguous tfilters.h5 -# chunked -TOOLTEST tchunked.ddl --enable-error-stack -H -p -d chunked tfilters.h5 -# external -TOOLTEST texternal.ddl --enable-error-stack -H -p -d external tfilters.h5 - -# fill values -TOOLTEST tfill.ddl --enable-error-stack -p tfvalues.h5 - -# several datatype, with references , print path -TOOLTEST treference.ddl --enable-error-stack tattr2.h5 - -# escape/not escape non printable characters -TOOLTEST tstringe.ddl --enable-error-stack -e tstr3.h5 -TOOLTEST tstring.ddl --enable-error-stack tstr3.h5 -# char data as ASCII with non escape -TOOLTEST tstring2.ddl --enable-error-stack -r -d str4 tstr3.h5 - -# array indices print/not print -TOOLTEST tindicesyes.ddl --enable-error-stack taindices.h5 -TOOLTEST tindicesno.ddl --enable-error-stack -y taindices.h5 - -########## array indices with subsetting -# 1D case -TOOLTEST tindicessub1.ddl --enable-error-stack -d 1d -s 1 -S 10 -c 2 -k 3 taindices.h5 - -# 2D case -TOOLTEST tindicessub2.ddl --enable-error-stack -d 2d -s 1,2 -S 3,3 -c 3,2 -k 2,2 taindices.h5 - -# 3D case -TOOLTEST tindicessub3.ddl --enable-error-stack -d 3d -s 0,1,2 -S 1,3,3 -c 2,2,2 -k 1,2,2 taindices.h5 - -# 4D case -TOOLTEST tindicessub4.ddl --enable-error-stack -d 4d -s 0,0,1,2 -c 2,2,3,2 -S 1,1,3,3 -k 1,1,2,2 taindices.h5 - -#Exceed the dimensions for subsetting -TOOLTEST texceedsubstart.ddl --enable-error-stack -d 1d -s 1,3 taindices.h5 -TOOLTEST texceedsubcount.ddl --enable-error-stack -d 1d -c 1,3 taindices.h5 -TOOLTEST texceedsubstride.ddl --enable-error-stack -d 1d -S 1,3 taindices.h5 -TOOLTEST texceedsubblock.ddl --enable-error-stack -d 1d -k 1,3 taindices.h5 - - -# tests for filters -# SZIP -TOOLTEST tszip.ddl --enable-error-stack -H -p -d szip tfilters.h5 -# deflate -TOOLTEST tdeflate.ddl --enable-error-stack -H -p -d deflate tfilters.h5 -# shuffle -TOOLTEST tshuffle.ddl --enable-error-stack -H -p -d shuffle tfilters.h5 -# fletcher32 -TOOLTEST tfletcher32.ddl --enable-error-stack -H -p -d fletcher32 tfilters.h5 -# nbit -TOOLTEST tnbit.ddl --enable-error-stack -H -p -d nbit tfilters.h5 -# scaleoffset -TOOLTEST tscaleoffset.ddl --enable-error-stack -H -p -d scaleoffset tfilters.h5 -# all -TOOLTEST tallfilters.ddl --enable-error-stack -H -p -d all tfilters.h5 -# user defined -TOOLTEST tuserfilter.ddl --enable-error-stack -H -p -d myfilter tfilters.h5 - -if test $USE_FILTER_DEFLATE = "yes" ; then - # data read internal filters - TOOLTEST treadintfilter.ddl --enable-error-stack -d deflate -d shuffle -d fletcher32 -d nbit -d scaleoffset tfilters.h5 - if test $USE_FILTER_SZIP = "yes"; then - # data read - TOOLTEST treadfilter.ddl --enable-error-stack -d all -d szip tfilters.h5 - fi -fi - -# test for displaying objects with very long names -TOOLTEST tlonglinks.ddl --enable-error-stack tlonglinks.h5 - -# dimensions over 4GB, print boundary -TOOLTEST tbigdims.ddl --enable-error-stack -d dset4gb -s 4294967284 -c 22 tbigdims.h5 - -# hyperslab read -TOOLTEST thyperslab.ddl --enable-error-stack thyperslab.h5 - - -# - -# test for displaying dataset and attribute of null space -TOOLTEST tnullspace.ddl --enable-error-stack tnullspace.h5 - -# test for displaying dataset and attribute of space with 0 dimension size -TOOLTEST zerodim.ddl --enable-error-stack zerodim.h5 - -# test for long double (some systems do not have long double) -#TOOLTEST tldouble.ddl --enable-error-stack tldouble.h5 - -# test for vms -TOOLTEST tvms.ddl --enable-error-stack tvms.h5 - -# test for binary output -TOOLTEST tbin1.ddl --enable-error-stack -d integer -o out1.bin -b LE tbinary.h5 - -# test for string binary output -TOOLTEST2B tstr2bin2.exp --enable-error-stack -d /g2/dset2 -b -o tstr2bin2.txt tstr2.h5 -TOOLTEST2B tstr2bin6.exp --enable-error-stack -d /g6/dset6 -b -o tstr2bin6.txt tstr2.h5 - -# NATIVE default. the NATIVE test can be validated with h5import/h5diff -TOOLTEST tbin1.ddl --enable-error-stack -d integer -o out1.bin -b tbinary.h5 -IMPORTTEST out1.bin -c out3.h5import -o out1.h5 -DIFFTEST tbinary.h5 out1.h5 /integer /integer -# Same but use h5dump as input to h5import -IMPORTTEST out1.bin -c tbin1.ddl -o out1D.h5 -DIFFTEST tbinary.h5 out1D.h5 /integer /integer - -TOOLTEST tbin2.ddl --enable-error-stack -b BE -d float -o out2.bin tbinary.h5 - -# the NATIVE test can be validated with h5import/h5diff -TOOLTEST tbin3.ddl --enable-error-stack -d integer -o out3.bin -b NATIVE tbinary.h5 -IMPORTTEST out3.bin -c out3.h5import -o out3.h5 -DIFFTEST tbinary.h5 out3.h5 /integer /integer -# Same but use h5dump as input to h5import -IMPORTTEST out3.bin -c tbin3.ddl -o out3D.h5 -DIFFTEST tbinary.h5 out3D.h5 /integer /integer - -TOOLTEST tbin4.ddl --enable-error-stack -d double -b FILE -o out4.bin tbinary.h5 - -# Clean up binary output files -if test -z "$HDF5_NOCLEANUP"; then - rm -f out[1-4].bin - rm -f out1.h5 - rm -f out3.h5 -fi - -# test for dataset region references -TOOLTEST tdatareg.ddl --enable-error-stack tdatareg.h5 -TOOLTEST4 tdataregR.ddl --enable-error-stack -R tdatareg.h5 -TOOLTEST tattrreg.ddl --enable-error-stack tattrreg.h5 -TOOLTEST4 tattrregR.ddl --enable-error-stack -R tattrreg.h5 -TOOLTEST2 tbinregR.exp --enable-error-stack -d /Dataset1 -s 0 -R -y -o tbinregR.txt tdatareg.h5 - -# Clean up text output files -if test -z "$HDF5_NOCLEANUP"; then - rm -f tbinregR.txt -fi - -# tests for group creation order -# "1" tracked, "2" name, root tracked -TOOLTEST tordergr1.ddl --enable-error-stack --group=1 --sort_by=creation_order --sort_order=ascending tordergr.h5 -TOOLTEST tordergr2.ddl --enable-error-stack --group=1 --sort_by=creation_order --sort_order=descending tordergr.h5 -TOOLTEST tordergr3.ddl --enable-error-stack -g 2 -q name -z ascending tordergr.h5 -TOOLTEST tordergr4.ddl --enable-error-stack -g 2 -q name -z descending tordergr.h5 -TOOLTEST tordergr5.ddl --enable-error-stack -q creation_order tordergr.h5 - -# tests for attribute order -TOOLTEST torderattr1.ddl --enable-error-stack -H --sort_by=name --sort_order=ascending torderattr.h5 -TOOLTEST torderattr2.ddl --enable-error-stack -H --sort_by=name --sort_order=descending torderattr.h5 -TOOLTEST torderattr3.ddl --enable-error-stack -H --sort_by=creation_order --sort_order=ascending torderattr.h5 -TOOLTEST torderattr4.ddl --enable-error-stack -H --sort_by=creation_order --sort_order=descending torderattr.h5 - -# tests for link references and order -TOOLTEST4 torderlinks1.ddl --enable-error-stack --sort_by=name --sort_order=ascending tfcontents1.h5 -TOOLTEST4 torderlinks2.ddl --enable-error-stack --sort_by=name --sort_order=descending tfcontents1.h5 - -# tests for floating point user defined printf format -TOOLTEST tfpformat.ddl --enable-error-stack -m %.7f tfpformat.h5 - -# tests for traversal of external links -TOOLTEST4 textlinksrc.ddl --enable-error-stack textlinksrc.h5 -TOOLTEST4 textlinkfar.ddl --enable-error-stack textlinkfar.h5 - -# test for dangling external links -TOOLTEST4 textlink.ddl --enable-error-stack textlink.h5 - -# test for error stack display (BZ2048) -TOOLTEST5 filter_fail.ddl --enable-error-stack filter_fail.h5 - -# test for -o -y for dataset with attributes -TOOLTEST2 tall-6.exp --enable-error-stack -y -o tall-6.txt -d /g1/g1.1/dset1.1.1 tall.h5 - -# test for non-existing file -TOOLTEST3 non_existing.ddl --enable-error-stack tgroup.h5 non_existing.h5 - -# Clean up temporary files/directories -CLEAN_TESTFILES_AND_TESTDIR - -# Report test results and exit -if test $nerrors -eq 0 ; then - echo "All $TESTNAME tests passed." - exit $EXIT_SUCCESS -else - echo "$TESTNAME tests failed with $nerrors errors." - exit $EXIT_FAILURE -fi diff --git a/tools/h5dump/testh5dumppbits.sh.in b/tools/h5dump/testh5dumppbits.sh.in deleted file mode 100644 index 446020a..0000000 --- a/tools/h5dump/testh5dumppbits.sh.in +++ /dev/null @@ -1,598 +0,0 @@ -#! /bin/sh -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -# -# Tests for the h5dump tool with packed bits type files - -srcdir=@srcdir@ - -# Determine which filters are available -USE_FILTER_SZIP="@USE_FILTER_SZIP@" -USE_FILTER_DEFLATE="@USE_FILTER_DEFLATE@" - -TESTNAME=h5dump -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -DUMPER=h5dump # The tool name -DUMPER_BIN=`pwd`/$DUMPER # The path of the tool binary - -H5DIFF=../h5diff/h5diff # The h5diff tool name -H5DIFF_BIN=`pwd`/$H5DIFF # The path of the h5diff tool binary - -H5IMPORT=../h5import/h5import # The h5import tool name -H5IMPORT_BIN=`pwd`/$H5IMPORT # The path of the h5import tool binary - -RM='rm -rf' -CMP='cmp -s' -DIFF='diff -c' -CP='cp' -DIRNAME='dirname' -LS='ls' -AWK='awk' - -nerrors=0 -verbose=yes - -# source dirs -SRC_TOOLS="$srcdir/../" - -SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles" -# testfiles source dirs for tools -SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DUMP_ERRORFILES="$srcdir/errfiles" -SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles" -SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles" -SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles" -SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles" -SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles" -SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles" - -TEST_P_DIR=./testfiles -TESTDIR=./testfiles/pbits -test -d $TEST_P_DIR || mkdir -p $TEST_P_DIR -test -d $TESTDIR || mkdir -p $TESTDIR - -###################################################################### -# test files -# -------------------------------------------------------------------- -# All the test files copy from source directory to test directory -# NOTE: Keep this framework to add/remove test files. -# Any test files from other tools can be used in this framework. -# This list are also used for checking exist. -# Comment '#' without space can be used. -# -------------------------------------------------------------------- -LIST_HDF5_TEST_FILES=" -$SRC_H5DUMP_TESTFILES/packedbits.h5 -$SRC_H5DUMP_TESTFILES/tarray1.h5 -$SRC_H5DUMP_TESTFILES/tcompound.h5 -" - -LIST_OTHER_TEST_FILES=" -$SRC_H5DUMP_TESTFILES/pbits/tnofilename-with-packed-bits.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsArray.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsCompound.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsIncomplete.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsLengthExceeded.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsCharLengthExceeded.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsIntLengthExceeded.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsLongLengthExceeded.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsLengthPositive.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsMax.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsMaxExceeded.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsOffsetExceeded.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsCharOffsetExceeded.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsIntOffsetExceeded.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsLongOffsetExceeded.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsOffsetNegative.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsOverlapped.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsSigned.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsUnsigned.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsSignedInt.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsUnsignedInt.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsSignedLong.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsUnsignedLong.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsSignedLongLong.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsUnsignedLongLong.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsSignedWhole.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsUnsignedWhole.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsSignedIntWhole.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsUnsignedIntWhole.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsSignedLongWhole.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsUnsignedLongWhole.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsSignedLongLongWhole.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsUnsignedLongLongWhole.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsSignedLongLongWhole1.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsUnsignedLongLongWhole1.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsSignedLongLongWhole63.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsUnsignedLongLongWhole63.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsSigned4.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsUnsigned4.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsSignedInt8.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsUnsignedInt8.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsSignedLong16.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsUnsignedLong16.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsSignedLongLong32.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsUnsignedLongLong32.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsSigned2.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsUnsigned2.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsSignedInt4.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsUnsignedInt4.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsSignedLong8.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsUnsignedLong8.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsSignedLongLong16.ddl -$SRC_H5DUMP_TESTFILES/pbits/tpbitsUnsignedLongLong16.ddl -" - -LIST_ERROR_TEST_FILES=" -${SRC_H5DUMP_ERRORFILES}/tnofilename-with-packed-bits.err -${SRC_H5DUMP_ERRORFILES}/tpbitsCharLengthExceeded.err -${SRC_H5DUMP_ERRORFILES}/tpbitsCharOffsetExceeded.err -${SRC_H5DUMP_ERRORFILES}/tpbitsIncomplete.err -${SRC_H5DUMP_ERRORFILES}/tpbitsIntLengthExceeded.err -${SRC_H5DUMP_ERRORFILES}/tpbitsIntOffsetExceeded.err -${SRC_H5DUMP_ERRORFILES}/tpbitsLengthExceeded.err -${SRC_H5DUMP_ERRORFILES}/tpbitsLengthPositive.err -${SRC_H5DUMP_ERRORFILES}/tpbitsLongLengthExceeded.err -${SRC_H5DUMP_ERRORFILES}/tpbitsLongOffsetExceeded.err -${SRC_H5DUMP_ERRORFILES}/tpbitsMaxExceeded.err -${SRC_H5DUMP_ERRORFILES}/tpbitsOffsetExceeded.err -${SRC_H5DUMP_ERRORFILES}/tpbitsOffsetNegative.err -" - -# -# copy test files and expected output files from source dirs to test dir -# -COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES $LIST_ERROR_TEST_FILES" - -COPY_TESTFILES_TO_TESTDIR() -{ - # copy test files. Used -f to make sure get a new copy - for tstfile in $COPY_TESTFILES - do - # ignore '#' comment - echo $tstfile | tr -d ' ' | grep '^#' > /dev/null - RET=$? - if [ $RET -eq 1 ]; then - # skip cp if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=`$DIRNAME $tstfile` - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $CP -f $tstfile $TESTDIR - if [ $? -ne 0 ]; then - echo "Error: FAILED to copy $tstfile ." - - # Comment out this to CREATE expected file - exit $EXIT_FAILURE - fi - fi - fi - done -} - -CLEAN_TESTFILES_AND_TESTDIR() -{ - # skip rm if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=$SRC_H5DUMP_TESTFILES/pbits - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $RM $TESTDIR - fi -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Testing". -# -TESTING() { - SPACES=" " - echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Source in the output filter function definitions. -. $srcdir/../../bin/output_filter.sh - -# Run a test and print PASS or *FAIL*. If a test fails then increment -# the `nerrors' global variable and (if $verbose is set) display the -# difference between the actual output and the expected output. The -# expected output is given as the first argument to this function and -# the actual output file is calculated by replacing the `.ddl' with -# `.out'. The actual output is not removed if $HDF5_NOCLEANUP has a -# non-zero value. -# -TOOLTEST() { - expect="$TESTDIR/$1" - actual="$TESTDIR/`basename $1 .ddl`.out" - actual_err="$TESTDIR/`basename $1 .ddl`.err" - actual_sav=${actual}-sav - actual_err_sav=${actual_err}-sav - shift - - # Run test. - TESTING $DUMPER $@ - ( - cd $TESTDIR - $RUNSERIAL $DUMPER_BIN "$@" - ) >$actual 2>$actual_err - - # save actual and actual_err in case they are needed later. - cp $actual $actual_sav - STDOUT_FILTER $actual - cp $actual_err $actual_err_sav - STDERR_FILTER $actual_err - cat $actual_err >> $actual - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.ddl) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err $actual_sav $actual_err_sav $actual_ext - fi - -} - - -# same as TOOLTEST1 but compares generated file to expected output -# and compares the generated data file to the expected data file -# used for the binary tests that expect a full path in -o without -b -TOOLTEST2() { - - expectdata="$TESTDIR/$1" - expect="$TESTDIR/`basename $1 .exp`.ddl" - actualdata="$TESTDIR/`basename $1 .exp`.txt" - actual="$TESTDIR/`basename $1 .exp`.out" - actual_err="$TESTDIR/`basename $1 .exp`.err" - shift - - # Run test. - TESTING $DUMPER $@ - ( - cd $TESTDIR - $RUNSERIAL $DUMPER_BIN "$@" - ) >$actual 2>$actual_err - cat $actual_err >> $actual - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - if [ ! -f $expectdata ]; then - # Create the expect data file if it doesn't yet exist. - echo " CREATED" - cp $actualdata $expectdata - elif $CMP $expectdata $actualdata; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected datafile (*.exp) differs from actual datafile (*.txt)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expectdata $actualdata |sed 's/^/ /' - fi - else - echo "*FAILED*" - echo " Expected result (*.ddl) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actualdata $actual_err - fi - -} - -# same as TOOLTEST but filters error stack outp -# Extract file name, line number, version and thread IDs because they may be different -TOOLTEST3() { - - expect="$TESTDIR/$1" - actual="$TESTDIR/`basename $1 .ddl`.out" - actual_err="$TESTDIR/`basename $1 .ddl`.err" - actual_ext="$TESTDIR/`basename $1 .ddl`.ext" - actual_sav=${actual}-sav - actual_err_sav=${actual_err}-sav - shift - - # Run test. - TESTING $DUMPER $@ - ( - cd $TESTDIR - $RUNSERIAL $DUMPER_BIN "$@" - ) >$actual 2>$actual_err - - # save actual and actual_err in case they are needed later. - cp $actual $actual_sav - STDOUT_FILTER $actual - cp $actual_err $actual_err_sav - STDERR_FILTER $actual_err - - # Extract file name, line number, version and thread IDs because they may be different - sed -e 's/thread [0-9]*/thread (IDs)/' -e 's/: .*\.c /: (file name) /' \ - -e 's/line [0-9]*/line (number)/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ - -e 's/H5Eget_auto[1-2]*/H5Eget_auto(1 or 2)/' \ - -e 's/H5Eset_auto[1-2]*/H5Eset_auto(1 or 2)/' \ - $actual_err > $actual_ext - cat $actual_ext >> $actual - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.ddl) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err $actual_sav $actual_err_sav - fi - -} - -# same as TOOLTEST3 but filters error stack output and compares to an error file -# Extract file name, line number, version and thread IDs because they may be different -TOOLTEST4() { - - expect="$TESTDIR/$1" - expect_err="$TESTDIR/`basename $1 .ddl`.err" - actual="$TESTDIR/`basename $1 .ddl`.out" - actual_err="$TESTDIR/`basename $1 .ddl`.oerr" - actual_ext="$TESTDIR/`basename $1 .ddl`.ext" - actual_sav=${actual}-sav - actual_err_sav=${actual_err}-sav - shift - - # Run test. - TESTING $DUMPER $@ - ( - cd $TESTDIR - $RUNSERIAL $DUMPER_BIN "$@" - ) >$actual 2>$actual_err - - # save actual and actual_err in case they are needed later. - cp $actual $actual_sav - STDOUT_FILTER $actual - cp $actual_err $actual_err_sav - STDERR_FILTER $actual_err - - # Extract file name, line number, version and thread IDs because they may be different - sed -e 's/thread [0-9]*/thread (IDs)/' -e 's/: .*\.c /: (file name) /' \ - -e 's/line [0-9]*/line (number)/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ - -e 's/H5Eget_auto[1-2]*/H5Eget_auto(1 or 2)/' \ - -e 's/H5Eset_auto[1-2]*/H5Eset_auto(1 or 2)/' \ - $actual_err > $actual_ext - #cat $actual_ext >> $actual - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - if $CMP $expect_err $actual_ext; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.err) differs from actual result (*.oerr)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect_err $actual_ext |sed 's/^/ /' - fi - else - echo "*FAILED*" - echo " Expected result (*.ddl) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err $actual_sav $actual_err_sav - fi - -} - -# Print a "SKIP" message -SKIP() { - TESTING $DUMPER $@ - echo " -SKIP-" -} - -# Print a line-line message left justified in a field of 70 characters -# -PRINT_H5DIFF() { - SPACES=" " - echo " Running h5diff $* $SPACES" | cut -c1-70 | tr -d '\012' -} - - -# Call the h5diff tool -# -DIFFTEST() -{ - PRINT_H5DIFF $@ - ( - cd $TESTDIR - $RUNSERIAL $H5DIFF_BIN "$@" -q - ) - RET=$? - if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - fi - -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Verifying". -# -PRINT_H5IMPORT() { - SPACES=" " - echo " Running h5import $* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Call the h5import tool -# -IMPORTTEST() -{ - # remove the output hdf5 file if it exists - hdf5_file="$TESTDIR/$5" - if [ -f $hdf5_file ]; then - rm -f $hdf5_file - fi - - PRINT_H5IMPORT $@ - ( - cd $TESTDIR - $RUNSERIAL $H5IMPORT_BIN "$@" - ) - RET=$? - if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - fi - -} - - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## -# prepare for test -COPY_TESTFILES_TO_TESTDIR - -####### test for dataset packed bits ###### - -# test failure handling -# Missing file name -TOOLTEST tnofilename-with-packed-bits.ddl --enable-error-stack -# Limits: -# Maximum number of packed bits is 8 (for now). -# Maximum integer size is 64 (for now). -# Maximun Offset is 63 (Maximum size - 1). -# Maximum Offset+Length is 64 (Maximum size). -# Tests: -# Normal operation on both signed and unsigned int datasets. -# Sanity check -# Their rawdata output should be the same. -TOOLTEST tpbitsSignedWhole.ddl --enable-error-stack -d /DS08BITS -M 0,8 packedbits.h5 -TOOLTEST tpbitsUnsignedWhole.ddl --enable-error-stack -d /DU08BITS -M 0,8 packedbits.h5 -TOOLTEST tpbitsSignedIntWhole.ddl --enable-error-stack -d /DS16BITS -M 0,16 packedbits.h5 -TOOLTEST tpbitsUnsignedIntWhole.ddl --enable-error-stack -d /DU16BITS -M 0,16 packedbits.h5 -TOOLTEST tpbitsSignedLongWhole.ddl --enable-error-stack -d /DS32BITS -M 0,32 packedbits.h5 -TOOLTEST tpbitsUnsignedLongWhole.ddl --enable-error-stack -d /DU32BITS -M 0,32 packedbits.h5 -TOOLTEST tpbitsSignedLongLongWhole.ddl --enable-error-stack -d /DS64BITS -M 0,64 packedbits.h5 -TOOLTEST tpbitsUnsignedLongLongWhole.ddl --enable-error-stack -d /DU64BITS -M 0,64 packedbits.h5 -TOOLTEST tpbitsSignedLongLongWhole63.ddl --enable-error-stack -d /DS64BITS -M 0,63 packedbits.h5 -TOOLTEST tpbitsUnsignedLongLongWhole63.ddl --enable-error-stack -d /DU64BITS -M 0,63 packedbits.h5 -TOOLTEST tpbitsSignedLongLongWhole1.ddl --enable-error-stack -d /DS64BITS -M 1,63 packedbits.h5 -TOOLTEST tpbitsUnsignedLongLongWhole1.ddl --enable-error-stack -d /DU64BITS -M 1,63 packedbits.h5 -# Half sections -TOOLTEST tpbitsSigned4.ddl --enable-error-stack -d /DS08BITS -M 0,4,4,4 packedbits.h5 -TOOLTEST tpbitsUnsigned4.ddl --enable-error-stack -d /DU08BITS -M 0,4,4,4 packedbits.h5 -TOOLTEST tpbitsSignedInt8.ddl --enable-error-stack -d /DS16BITS -M 0,8,8,8 packedbits.h5 -TOOLTEST tpbitsUnsignedInt8.ddl --enable-error-stack -d /DU16BITS -M 0,8,8,8 packedbits.h5 -TOOLTEST tpbitsSignedLong16.ddl --enable-error-stack -d /DS32BITS -M 0,16,16,16 packedbits.h5 -TOOLTEST tpbitsUnsignedLong16.ddl --enable-error-stack -d /DU32BITS -M 0,16,16,16 packedbits.h5 -TOOLTEST tpbitsSignedLongLong32.ddl --enable-error-stack -d /DS64BITS -M 0,32,32,32 packedbits.h5 -TOOLTEST tpbitsUnsignedLongLong32.ddl --enable-error-stack -d /DU64BITS -M 0,32,32,32 packedbits.h5 -# Quarter sections -TOOLTEST tpbitsSigned2.ddl --enable-error-stack -d /DS08BITS -M 0,2,2,2,4,2,6,2 packedbits.h5 -TOOLTEST tpbitsUnsigned2.ddl --enable-error-stack -d /DU08BITS -M 0,2,2,2,4,2,6,2 packedbits.h5 -TOOLTEST tpbitsSignedInt4.ddl --enable-error-stack -d /DS16BITS -M 0,4,4,4,8,4,12,4 packedbits.h5 -TOOLTEST tpbitsUnsignedInt4.ddl --enable-error-stack -d /DU16BITS -M 0,4,4,4,8,4,12,4 packedbits.h5 -TOOLTEST tpbitsSignedLong8.ddl --enable-error-stack -d /DS32BITS -M 0,8,8,8,16,8,24,8 packedbits.h5 -TOOLTEST tpbitsUnsignedLong8.ddl --enable-error-stack -d /DU32BITS -M 0,8,8,8,16,8,24,8 packedbits.h5 -TOOLTEST tpbitsSignedLongLong16.ddl --enable-error-stack -d /DS64BITS -M 0,16,16,16,32,16,48,16 packedbits.h5 -TOOLTEST tpbitsUnsignedLongLong16.ddl --enable-error-stack -d /DU64BITS -M 0,16,16,16,32,16,48,16 packedbits.h5 -# Begin and End -TOOLTEST tpbitsSigned.ddl --enable-error-stack -d /DS08BITS -M 0,2,2,6 packedbits.h5 -TOOLTEST tpbitsUnsigned.ddl --enable-error-stack -d /DU08BITS -M 0,2,2,6 packedbits.h5 -TOOLTEST tpbitsSignedInt.ddl --enable-error-stack -d /DS16BITS -M 0,2,10,6 packedbits.h5 -TOOLTEST tpbitsUnsignedInt.ddl --enable-error-stack -d /DU16BITS -M 0,2,10,6 packedbits.h5 -TOOLTEST tpbitsSignedLong.ddl --enable-error-stack -d /DS32BITS -M 0,2,26,6 packedbits.h5 -TOOLTEST tpbitsUnsignedLong.ddl --enable-error-stack -d /DU32BITS -M 0,2,26,6 packedbits.h5 -TOOLTEST tpbitsSignedLongLong.ddl --enable-error-stack -d /DS64BITS -M 0,2,58,6 packedbits.h5 -TOOLTEST tpbitsUnsignedLongLong.ddl --enable-error-stack -d /DU64BITS -M 0,2,58,6 packedbits.h5 -# Overlapped packed bits. -TOOLTEST tpbitsOverlapped.ddl --enable-error-stack -d /DS08BITS -M 0,1,1,1,2,1,0,3 packedbits.h5 -# Maximum number of packed bits. -TOOLTEST tpbitsMax.ddl --enable-error-stack -d /DS08BITS -M 0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1 packedbits.h5 -# Compound type. -TOOLTEST tpbitsCompound.ddl --enable-error-stack -d /dset1 -M 0,1,1,1 tcompound.h5 -# Array type. -TOOLTEST tpbitsArray.ddl --enable-error-stack -d /Dataset1 -M 0,1,1,1 tarray1.h5 -# Test Error handling. -# Too many packed bits requested. Max is 8 for now. -TOOLTEST tpbitsMaxExceeded.ddl --enable-error-stack -d /DS08BITS -M 0,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1 packedbits.h5 -# Offset too large. Max is 7 (8-1) for now. -TOOLTEST tpbitsOffsetExceeded.ddl --enable-error-stack -d /DS08BITS -M 64,1 packedbits.h5 -TOOLTEST tpbitsCharOffsetExceeded.ddl --enable-error-stack -d /DS08BITS -M 8,1 packedbits.h5 -TOOLTEST tpbitsIntOffsetExceeded.ddl --enable-error-stack -d /DS16BITS -M 16,1 packedbits.h5 -TOOLTEST tpbitsLongOffsetExceeded.ddl --enable-error-stack -d /DS32BITS -M 32,1 packedbits.h5 -# Bad offset, must not be negative. -TOOLTEST tpbitsOffsetNegative.ddl --enable-error-stack -d /DS08BITS -M -1,1 packedbits.h5 -# Bad length, must not be positive. -TOOLTEST tpbitsLengthPositive.ddl --enable-error-stack -d /DS08BITS -M 4,0 packedbits.h5 -# Offset+Length is too large. Max is 8 for now. -TOOLTEST tpbitsLengthExceeded.ddl --enable-error-stack -d /DS08BITS -M 37,28 packedbits.h5 -TOOLTEST tpbitsCharLengthExceeded.ddl --enable-error-stack -d /DS08BITS -M 2,7 packedbits.h5 -TOOLTEST tpbitsIntLengthExceeded.ddl --enable-error-stack -d /DS16BITS -M 10,7 packedbits.h5 -TOOLTEST tpbitsLongLengthExceeded.ddl --enable-error-stack -d /DS32BITS -M 26,7 packedbits.h5 -# Incomplete pair of packed bits request. -TOOLTEST tpbitsIncomplete.ddl --enable-error-stack -d /DS08BITS -M 0,2,2,1,0,2,2, packedbits.h5 - -# Clean up temporary files/directories -CLEAN_TESTFILES_AND_TESTDIR - -# Report test results and exit -if test $nerrors -eq 0 ; then - echo "All $TESTNAME tests passed." - exit $EXIT_SUCCESS -else - echo "$TESTNAME tests failed with $nerrors errors." - exit $EXIT_FAILURE -fi diff --git a/tools/h5dump/testh5dumpvds.sh.in b/tools/h5dump/testh5dumpvds.sh.in deleted file mode 100644 index 16411f5..0000000 --- a/tools/h5dump/testh5dumpvds.sh.in +++ /dev/null @@ -1,523 +0,0 @@ -#! /bin/sh -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -# -# Tests for the h5dump tool with vds type files - -srcdir=@srcdir@ - -# Determine which filters are available -USE_FILTER_SZIP="@USE_FILTER_SZIP@" -USE_FILTER_DEFLATE="@USE_FILTER_DEFLATE@" - -TESTNAME=h5dump -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -DUMPER=h5dump # The tool name -DUMPER_BIN=`pwd`/$DUMPER # The path of the tool binary - -H5DIFF=../h5diff/h5diff # The h5diff tool name -H5DIFF_BIN=`pwd`/$H5DIFF # The path of the h5diff tool binary - -H5IMPORT=../h5import/h5import # The h5import tool name -H5IMPORT_BIN=`pwd`/$H5IMPORT # The path of the h5import tool binary - -RM='rm -rf' -CMP='cmp -s' -DIFF='diff -c' -CP='cp' -DIRNAME='dirname' -LS='ls' -AWK='awk' - -nerrors=0 -verbose=yes - -# source dirs -SRC_TOOLS="$srcdir/../" - -SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles" -# testfiles source dirs for tools -SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DUMP_ERRORFILES="$srcdir/errfiles" -SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles" -SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles" -SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles" -SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles" -SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles" -SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles" - -TEST_P_DIR=./testfiles -TESTDIR=./testfiles/vds -test -d $TEST_P_DIR || mkdir -p $TEST_P_DIR -test -d $TESTDIR || mkdir -p $TESTDIR - -###################################################################### -# test files -# -------------------------------------------------------------------- -# All the test files copy from source directory to test directory -# NOTE: Keep this framework to add/remove test files. -# Any test files from other tools can be used in this framework. -# This list are also used for checking exist. -# Comment '#' without space can be used. -# -------------------------------------------------------------------- -LIST_HDF5_TEST_FILES=" -$SRC_H5DUMP_TESTFILES/vds/1_a.h5 -$SRC_H5DUMP_TESTFILES/vds/1_b.h5 -$SRC_H5DUMP_TESTFILES/vds/1_c.h5 -$SRC_H5DUMP_TESTFILES/vds/1_d.h5 -$SRC_H5DUMP_TESTFILES/vds/1_e.h5 -$SRC_H5DUMP_TESTFILES/vds/1_f.h5 -$SRC_H5DUMP_TESTFILES/vds/1_vds.h5 -$SRC_H5DUMP_TESTFILES/vds/2_a.h5 -$SRC_H5DUMP_TESTFILES/vds/2_b.h5 -$SRC_H5DUMP_TESTFILES/vds/2_c.h5 -$SRC_H5DUMP_TESTFILES/vds/2_d.h5 -$SRC_H5DUMP_TESTFILES/vds/2_e.h5 -$SRC_H5DUMP_TESTFILES/vds/2_vds.h5 -$SRC_H5DUMP_TESTFILES/vds/3_1_vds.h5 -$SRC_H5DUMP_TESTFILES/vds/3_2_vds.h5 -$SRC_H5DUMP_TESTFILES/vds/4_0.h5 -$SRC_H5DUMP_TESTFILES/vds/4_1.h5 -$SRC_H5DUMP_TESTFILES/vds/4_2.h5 -$SRC_H5DUMP_TESTFILES/vds/4_vds.h5 -$SRC_H5DUMP_TESTFILES/vds/5_a.h5 -$SRC_H5DUMP_TESTFILES/vds/5_b.h5 -$SRC_H5DUMP_TESTFILES/vds/5_c.h5 -$SRC_H5DUMP_TESTFILES/vds/5_vds.h5 -$SRC_H5DUMP_TESTFILES/vds/a.h5 -$SRC_H5DUMP_TESTFILES/vds/b.h5 -$SRC_H5DUMP_TESTFILES/vds/c.h5 -$SRC_H5DUMP_TESTFILES/vds/d.h5 -$SRC_H5DUMP_TESTFILES/vds/vds-percival-unlim-maxmin.h5 -$SRC_H5DUMP_TESTFILES/vds/f-0.h5 -$SRC_H5DUMP_TESTFILES/vds/f-3.h5 -$SRC_H5DUMP_TESTFILES/vds/vds-eiger.h5 -" - -LIST_OTHER_TEST_FILES=" -$SRC_H5DUMP_TESTFILES/vds/tvds-1.ddl -$SRC_H5DUMP_TESTFILES/vds/tvds-2.ddl -$SRC_H5DUMP_TESTFILES/vds/tvds-3_1.ddl -$SRC_H5DUMP_TESTFILES/vds/tvds-3_2.ddl -$SRC_H5DUMP_TESTFILES/vds/tvds-4.ddl -$SRC_H5DUMP_TESTFILES/vds/tvds-5.ddl -$SRC_H5DUMP_TESTFILES/vds/tvds_layout-1.ddl -$SRC_H5DUMP_TESTFILES/vds/tvds_layout-2.ddl -$SRC_H5DUMP_TESTFILES/vds/tvds_layout-3_1.ddl -$SRC_H5DUMP_TESTFILES/vds/tvds_layout-3_2.ddl -$SRC_H5DUMP_TESTFILES/vds/tvds_layout-4.ddl -$SRC_H5DUMP_TESTFILES/vds/tvds_layout-5.ddl -$SRC_H5DUMP_TESTFILES/vds/vds-first.ddl -$SRC_H5DUMP_TESTFILES/vds/vds-gap1.ddl -$SRC_H5DUMP_TESTFILES/vds/vds-gap2.ddl -$SRC_H5DUMP_TESTFILES/vds/vds_layout-eiger.ddl -$SRC_H5DUMP_TESTFILES/vds/vds_layout-maxmin.ddl -" - -LIST_ERROR_TEST_FILES=" -" - -# -# copy test files and expected output files from source dirs to test dir -# -COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES $LIST_ERROR_TEST_FILES" - -COPY_TESTFILES_TO_TESTDIR() -{ - # copy test files. Used -f to make sure get a new copy - for tstfile in $COPY_TESTFILES - do - # ignore '#' comment - echo $tstfile | tr -d ' ' | grep '^#' > /dev/null - RET=$? - if [ $RET -eq 1 ]; then - # skip cp if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=`$DIRNAME $tstfile` - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $CP -f $tstfile $TESTDIR - if [ $? -ne 0 ]; then - echo "Error: FAILED to copy $tstfile ." - - # Comment out this to CREATE expected file - exit $EXIT_FAILURE - fi - fi - fi - done -} - -CLEAN_TESTFILES_AND_TESTDIR() -{ - # skip rm if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=$SRC_H5DUMP_TESTFILES/vds - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $RM $TESTDIR - fi -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Testing". -# -TESTING() { - SPACES=" " - echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Source in the output filter function definitions. -. $srcdir/../../bin/output_filter.sh - -# Run a test and print PASS or *FAIL*. If a test fails then increment -# the `nerrors' global variable and (if $verbose is set) display the -# difference between the actual output and the expected output. The -# expected output is given as the first argument to this function and -# the actual output file is calculated by replacing the `.ddl' with -# `.out'. The actual output is not removed if $HDF5_NOCLEANUP has a -# non-zero value. -# -TOOLTEST() { - expect="$TESTDIR/$1" - actual="$TESTDIR/`basename $1 .ddl`.out" - actual_err="$TESTDIR/`basename $1 .ddl`.err" - actual_sav=${actual}-sav - actual_err_sav=${actual_err}-sav - shift - - # Run test. - TESTING $DUMPER $@ - ( - cd $TESTDIR - $RUNSERIAL $DUMPER_BIN "$@" - ) >$actual 2>$actual_err - - # save actual and actual_err in case they are needed later. - cp $actual $actual_sav - STDOUT_FILTER $actual - cp $actual_err $actual_err_sav - STDERR_FILTER $actual_err - cat $actual_err >> $actual - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.ddl) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err $actual_sav $actual_err_sav $actual_ext - fi - -} - - -# same as TOOLTEST1 but compares generated file to expected output -# and compares the generated data file to the expected data file -# used for the binary tests that expect a full path in -o without -b -TOOLTEST2() { - - expectdata="$TESTDIR/$1" - expect="$TESTDIR/`basename $1 .exp`.ddl" - actualdata="$TESTDIR/`basename $1 .exp`.txt" - actual="$TESTDIR/`basename $1 .exp`.out" - actual_err="$TESTDIR/`basename $1 .exp`.err" - shift - - # Run test. - TESTING $DUMPER $@ - ( - cd $TESTDIR - $RUNSERIAL $DUMPER_BIN "$@" - ) >$actual 2>$actual_err - cat $actual_err >> $actual - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - if [ ! -f $expectdata ]; then - # Create the expect data file if it doesn't yet exist. - echo " CREATED" - cp $actualdata $expectdata - elif $CMP $expectdata $actualdata; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected datafile (*.exp) differs from actual datafile (*.txt)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expectdata $actualdata |sed 's/^/ /' - fi - else - echo "*FAILED*" - echo " Expected result (*.ddl) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actualdata $actual_err - fi - -} - -# same as TOOLTEST but filters error stack outp -# Extract file name, line number, version and thread IDs because they may be different -TOOLTEST3() { - - expect="$TESTDIR/$1" - actual="$TESTDIR/`basename $1 .ddl`.out" - actual_err="$TESTDIR/`basename $1 .ddl`.err" - actual_ext="$TESTDIR/`basename $1 .ddl`.ext" - actual_sav=${actual}-sav - actual_err_sav=${actual_err}-sav - shift - - # Run test. - TESTING $DUMPER $@ - ( - cd $TESTDIR - $RUNSERIAL $DUMPER_BIN "$@" - ) >$actual 2>$actual_err - - # save actual and actual_err in case they are needed later. - cp $actual $actual_sav - STDOUT_FILTER $actual - cp $actual_err $actual_err_sav - STDERR_FILTER $actual_err - - # Extract file name, line number, version and thread IDs because they may be different - sed -e 's/thread [0-9]*/thread (IDs)/' -e 's/: .*\.c /: (file name) /' \ - -e 's/line [0-9]*/line (number)/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ - -e 's/H5Eget_auto[1-2]*/H5Eget_auto(1 or 2)/' \ - -e 's/H5Eset_auto[1-2]*/H5Eset_auto(1 or 2)/' \ - $actual_err > $actual_ext - cat $actual_ext >> $actual - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.ddl) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err $actual_sav $actual_err_sav - fi - -} - -# same as TOOLTEST3 but filters error stack output and compares to an error file -# Extract file name, line number, version and thread IDs because they may be different -TOOLTEST4() { - - expect="$TESTDIR/$1" - expect_err="$TESTDIR/`basename $1 .ddl`.err" - actual="$TESTDIR/`basename $1 .ddl`.out" - actual_err="$TESTDIR/`basename $1 .ddl`.oerr" - actual_ext="$TESTDIR/`basename $1 .ddl`.ext" - actual_sav=${actual}-sav - actual_err_sav=${actual_err}-sav - shift - - # Run test. - TESTING $DUMPER $@ - ( - cd $TESTDIR - $RUNSERIAL $DUMPER_BIN "$@" - ) >$actual 2>$actual_err - - # save actual and actual_err in case they are needed later. - cp $actual $actual_sav - STDOUT_FILTER $actual - cp $actual_err $actual_err_sav - STDERR_FILTER $actual_err - - # Extract file name, line number, version and thread IDs because they may be different - sed -e 's/thread [0-9]*/thread (IDs)/' -e 's/: .*\.c /: (file name) /' \ - -e 's/line [0-9]*/line (number)/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ - -e 's/H5Eget_auto[1-2]*/H5Eget_auto(1 or 2)/' \ - -e 's/H5Eset_auto[1-2]*/H5Eset_auto(1 or 2)/' \ - $actual_err > $actual_ext - #cat $actual_ext >> $actual - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - if $CMP $expect_err $actual_ext; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.err) differs from actual result (*.oerr)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect_err $actual_ext |sed 's/^/ /' - fi - else - echo "*FAILED*" - echo " Expected result (*.ddl) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err $actual_sav $actual_err_sav - fi - -} - -# Print a "SKIP" message -SKIP() { - TESTING $DUMPER $@ - echo " -SKIP-" -} - -# Print a line-line message left justified in a field of 70 characters -# -PRINT_H5DIFF() { - SPACES=" " - echo " Running h5diff $* $SPACES" | cut -c1-70 | tr -d '\012' -} - - -# Call the h5diff tool -# -DIFFTEST() -{ - PRINT_H5DIFF $@ - ( - cd $TESTDIR - $RUNSERIAL $H5DIFF_BIN "$@" -q - ) - RET=$? - if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - fi - -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Verifying". -# -PRINT_H5IMPORT() { - SPACES=" " - echo " Running h5import $* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Call the h5import tool -# -IMPORTTEST() -{ - # remove the output hdf5 file if it exists - hdf5_file="$TESTDIR/$5" - if [ -f $hdf5_file ]; then - rm -f $hdf5_file - fi - - PRINT_H5IMPORT $@ - ( - cd $TESTDIR - $RUNSERIAL $H5IMPORT_BIN "$@" - ) - RET=$? - if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - fi - -} - - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## -# prepare for test -COPY_TESTFILES_TO_TESTDIR - -####### test for dataset vds ###### - - # Data read -if test $USE_FILTER_DEFLATE = "yes" ; then - TOOLTEST tvds-1.ddl --enable-error-stack 1_vds.h5 - TOOLTEST tvds-2.ddl --enable-error-stack 2_vds.h5 - TOOLTEST tvds-3_1.ddl --enable-error-stack 3_1_vds.h5 - TOOLTEST tvds-3_2.ddl --enable-error-stack 3_2_vds.h5 - TOOLTEST tvds-4.ddl --enable-error-stack 4_vds.h5 - TOOLTEST tvds-5.ddl --enable-error-stack 5_vds.h5 - TOOLTEST vds-first.ddl --vds-view-first-missing --enable-error-stack vds-percival-unlim-maxmin.h5 - TOOLTEST vds-gap1.ddl -d /VDS-Eiger --vds-gap-size=1 --enable-error-stack vds-eiger.h5 - TOOLTEST vds-gap2.ddl --vds-gap-size=2 --enable-error-stack vds-eiger.h5 -fi - - # Layout read -if test $USE_FILTER_DEFLATE = "yes" ; then - TOOLTEST tvds_layout-1.ddl -p --enable-error-stack 1_vds.h5 - TOOLTEST tvds_layout-2.ddl -p --enable-error-stack 2_vds.h5 - TOOLTEST tvds_layout-3_1.ddl -p --enable-error-stack 3_1_vds.h5 - TOOLTEST tvds_layout-3_2.ddl -p --enable-error-stack 3_2_vds.h5 - TOOLTEST tvds_layout-4.ddl -p --enable-error-stack 4_vds.h5 - TOOLTEST tvds_layout-5.ddl -p --enable-error-stack 5_vds.h5 - TOOLTEST vds_layout-eiger.ddl -p --enable-error-stack vds-eiger.h5 - TOOLTEST vds_layout-maxmin.ddl -p --enable-error-stack vds-percival-unlim-maxmin.h5 -fi - -# Clean up temporary files/directories -CLEAN_TESTFILES_AND_TESTDIR - -# Report test results and exit -if test $nerrors -eq 0 ; then - echo "All $TESTNAME tests passed." - exit $EXIT_SUCCESS -else - echo "$TESTNAME tests failed with $nerrors errors." - exit $EXIT_FAILURE -fi diff --git a/tools/h5dump/testh5dumpxml.sh.in b/tools/h5dump/testh5dumpxml.sh.in deleted file mode 100644 index 33a67c0..0000000 --- a/tools/h5dump/testh5dumpxml.sh.in +++ /dev/null @@ -1,388 +0,0 @@ -#! /bin/sh -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -# -# Tests for the h5dump tool - -srcdir=@srcdir@ - -TESTNAME=h5dumpxml -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -DUMPER=h5dump # The tool name -DUMPER_BIN=`pwd`/$DUMPER # The path of the tool binary - -RM='rm -rf' -CMP='cmp -s' -DIFF='diff -c' -CP='cp' -DIRNAME='dirname' -LS='ls' -AWK='awk' - -nerrors=0 -verbose=yes - -# source dirs -SRC_TOOLS="$srcdir/../" - -SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles" -# testfiles source dirs for tools -SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles" -SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles" -SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles" -SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles" -SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles" -SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles" - -TEST_P_DIR=./testfiles -TESTDIR=./testfiles/xml -test -d $TEST_P_DIR || mkdir -p $TEST_P_DIR -test -d $TESTDIR || mkdir -p $TESTDIR - -###################################################################### -# test files -# -------------------------------------------------------------------- -# All the test files copy from source directory to test directory -# NOTE: Keep this framework to add/remove test files. -# Any test files from other tools can be used in this framework. -# This list are also used for checking exist. -# Comment '#' without space can be used. -# -------------------------------------------------------------------- -LIST_HDF5_TEST_FILES_XML=" -$SRC_H5DUMP_TESTFILES/tall.h5 -$SRC_H5DUMP_TESTFILES/tarray1.h5 -$SRC_H5DUMP_TESTFILES/tarray2.h5 -$SRC_H5DUMP_TESTFILES/tarray3.h5 -$SRC_H5DUMP_TESTFILES/tarray6.h5 -$SRC_H5DUMP_TESTFILES/tarray7.h5 -$SRC_H5DUMP_TESTFILES/tattr.h5 -$SRC_H5DUMP_TESTFILES/tbitfields.h5 -$SRC_H5DUMP_TESTFILES/tcompound.h5 -$SRC_H5DUMP_TESTFILES/tcompound2.h5 -$SRC_H5DUMP_TESTFILES/tcompound_complex.h5 -$SRC_H5DUMP_TESTFILES/tdatareg.h5 -$SRC_H5DUMP_TESTFILES/tdset.h5 -$SRC_H5DUMP_TESTFILES/tdset2.h5 -$SRC_H5DUMP_TESTFILES/tempty.h5 -$SRC_H5DUMP_TESTFILES/tenum.h5 -$SRC_H5DUMP_TESTFILES/textlink.h5 -$SRC_H5DUMP_TESTFILES/tfpformat.h5 -$SRC_H5DUMP_TESTFILES/tgroup.h5 -$SRC_H5DUMP_TESTFILES/thlink.h5 -$SRC_H5DUMP_TESTFILES/tloop.h5 -$SRC_H5DUMP_TESTFILES/tloop2.h5 -$SRC_H5DUMP_TESTFILES/tmany.h5 -$SRC_H5DUMP_TESTFILES/tname-amp.h5 -$SRC_H5DUMP_TESTFILES/tname-apos.h5 -$SRC_H5DUMP_TESTFILES/tname-gt.h5 -$SRC_H5DUMP_TESTFILES/tname-lt.h5 -$SRC_H5DUMP_TESTFILES/tname-quot.h5 -$SRC_H5DUMP_TESTFILES/tname-sp.h5 -$SRC_H5DUMP_TESTFILES/tnamed_dtype_attr.h5 -$SRC_H5DUMP_TESTFILES/tnestedcomp.h5 -$SRC_H5DUMP_TESTFILES/tnodata.h5 -$SRC_H5DUMP_TESTFILES/tobjref.h5 -$SRC_H5DUMP_TESTFILES/topaque.h5 -$SRC_H5DUMP_TESTFILES/torderattr.h5 -$SRC_H5DUMP_TESTFILES/tref.h5 -$SRC_H5DUMP_TESTFILES/tref-escapes.h5 -$SRC_H5DUMP_TESTFILES/tref-escapes-at.h5 -$SRC_H5DUMP_TESTFILES/tsaf.h5 -$SRC_H5DUMP_TESTFILES/tslink.h5 -$SRC_H5DUMP_TESTFILES/tstring.h5 -$SRC_H5DUMP_TESTFILES/tstring-at.h5 -$SRC_H5DUMP_TESTFILES/tstr.h5 -$SRC_H5DUMP_TESTFILES/tstr2.h5 -$SRC_H5DUMP_TESTFILES/tudlink.h5 -$SRC_H5DUMP_TESTFILES/tvldtypes1.h5 -$SRC_H5DUMP_TESTFILES/tvldtypes2.h5 -$SRC_H5DUMP_TESTFILES/tvldtypes3.h5 -$SRC_H5DUMP_TESTFILES/tvldtypes4.h5 -$SRC_H5DUMP_TESTFILES/tvldtypes5.h5 -$SRC_H5DUMP_TESTFILES/tvlstr.h5 -" - -LIST_OTHER_TEST_FILES_XML=" -$SRC_H5DUMP_TESTFILES/tall.h5.xml -$SRC_H5DUMP_TESTFILES/tall-2A.h5.xml -$SRC_H5DUMP_TESTFILES/tarray1.h5.xml -$SRC_H5DUMP_TESTFILES/tarray2.h5.xml -$SRC_H5DUMP_TESTFILES/tarray3.h5.xml -$SRC_H5DUMP_TESTFILES/tarray6.h5.xml -$SRC_H5DUMP_TESTFILES/tarray7.h5.xml -$SRC_H5DUMP_TESTFILES/tattr.h5.xml -$SRC_H5DUMP_TESTFILES/tbitfields.h5.xml -$SRC_H5DUMP_TESTFILES/tcompound_complex.h5.xml -$SRC_H5DUMP_TESTFILES/tcompound.h5.xml -$SRC_H5DUMP_TESTFILES/tcompound2.h5.xml -$SRC_H5DUMP_TESTFILES/tdatareg.h5.xml -$SRC_H5DUMP_TESTFILES/tdset.h5.xml -$SRC_H5DUMP_TESTFILES/tdset2.h5.xml -$SRC_H5DUMP_TESTFILES/tempty.h5.xml -$SRC_H5DUMP_TESTFILES/tempty-dtd.h5.xml -$SRC_H5DUMP_TESTFILES/tempty-dtd-2.h5.xml -$SRC_H5DUMP_TESTFILES/tempty-dtd-uri.h5.xml -$SRC_H5DUMP_TESTFILES/tempty-nons.h5.xml -$SRC_H5DUMP_TESTFILES/tempty-nons-2.h5.xml -$SRC_H5DUMP_TESTFILES/tempty-nons-uri.h5.xml -$SRC_H5DUMP_TESTFILES/tempty-ns.h5.xml -$SRC_H5DUMP_TESTFILES/tempty-ns-2.h5.xml -$SRC_H5DUMP_TESTFILES/tenum.h5.xml -$SRC_H5DUMP_TESTFILES/textlink.h5.xml -$SRC_H5DUMP_TESTFILES/tfpformat.h5.xml -$SRC_H5DUMP_TESTFILES/tgroup.h5.xml -$SRC_H5DUMP_TESTFILES/thlink.h5.xml -$SRC_H5DUMP_TESTFILES/tloop.h5.xml -$SRC_H5DUMP_TESTFILES/tloop2.h5.xml -$SRC_H5DUMP_TESTFILES/tmany.h5.xml -$SRC_H5DUMP_TESTFILES/tname-amp.h5.xml -$SRC_H5DUMP_TESTFILES/tname-apos.h5.xml -$SRC_H5DUMP_TESTFILES/tnamed_dtype_attr.h5.xml -$SRC_H5DUMP_TESTFILES/tname-gt.h5.xml -$SRC_H5DUMP_TESTFILES/tname-lt.h5.xml -$SRC_H5DUMP_TESTFILES/tname-quot.h5.xml -$SRC_H5DUMP_TESTFILES/tname-sp.h5.xml -$SRC_H5DUMP_TESTFILES/tnestedcomp.h5.xml -$SRC_H5DUMP_TESTFILES/tnodata.h5.xml -$SRC_H5DUMP_TESTFILES/tobjref.h5.xml -$SRC_H5DUMP_TESTFILES/topaque.h5.xml -$SRC_H5DUMP_TESTFILES/torderattr1.h5.xml -$SRC_H5DUMP_TESTFILES/torderattr2.h5.xml -$SRC_H5DUMP_TESTFILES/torderattr3.h5.xml -$SRC_H5DUMP_TESTFILES/torderattr4.h5.xml -$SRC_H5DUMP_TESTFILES/tref.h5.xml -$SRC_H5DUMP_TESTFILES/tref-escapes.h5.xml -$SRC_H5DUMP_TESTFILES/tref-escapes-at.h5.xml -$SRC_H5DUMP_TESTFILES/tsaf.h5.xml -$SRC_H5DUMP_TESTFILES/tslink.h5.xml -$SRC_H5DUMP_TESTFILES/tstr.h5.xml -$SRC_H5DUMP_TESTFILES/tstr2.h5.xml -$SRC_H5DUMP_TESTFILES/tstring.h5.xml -$SRC_H5DUMP_TESTFILES/tstring-at.h5.xml -$SRC_H5DUMP_TESTFILES/tudlink.h5.xml -$SRC_H5DUMP_TESTFILES/tvldtypes1.h5.xml -$SRC_H5DUMP_TESTFILES/tvldtypes2.h5.xml -$SRC_H5DUMP_TESTFILES/tvldtypes3.h5.xml -$SRC_H5DUMP_TESTFILES/tvldtypes4.h5.xml -$SRC_H5DUMP_TESTFILES/tvldtypes5.h5.xml -$SRC_H5DUMP_TESTFILES/tvlstr.h5.xml -" - -# -# copy test files and expected output files from source dirs to test dir -# -COPY_TESTFILES="$LIST_HDF5_TEST_FILES_XML $LIST_OTHER_TEST_FILES_XML" - -COPY_TESTFILES_TO_TESTDIR() -{ - # copy test files. Used -f to make sure get a new copy - for tstfile in $COPY_TESTFILES - do - # ignore '#' comment - echo $tstfile | tr -d ' ' | grep '^#' > /dev/null - RET=$? - if [ $RET -eq 1 ]; then - # skip cp if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=`$DIRNAME $tstfile` - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $CP -f $tstfile $TESTDIR - if [ $? -ne 0 ]; then - echo "Error: FAILED to copy $tstfile ." - - # Comment out this to CREATE expected file - exit $EXIT_FAILURE - fi - fi - fi - done -} - -CLEAN_TESTFILES_AND_TESTDIR() -{ - # skip rm if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=$SRC_H5DUMP_TESTFILES - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $RM $TESTDIR - fi -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Testing". -# -TESTING() { - SPACES=" " - echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Source in the output filter function definitions. -. $srcdir/../../bin/output_filter.sh - -# Run a test and print PASS or *FAIL*. If a test fails then increment -# the `nerrors' global variable and (if $verbose is set) display the -# difference between the actual output and the expected output. The -# expected output is given as the first argument to this function and -# the actual output file is calculated by replacing the `.ddl' with -# `.out'. The actual output is not removed if $HDF5_NOCLEANUP has a -# non-zero value. -# -TOOLTEST() { - expect="$TESTDIR/$1" - actual="$TESTDIR/`basename $1 .xml`.out" - actual_err="$TESTDIR/`basename $1 .xml`.err" - shift - - # Run test. - TESTING $DUMPER $@ - ( - cd $TESTDIR - $RUNSERIAL $DUMPER_BIN "$@" - ) >$actual 2>$actual_err - - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.xml) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err - fi -} - -# Print a "SKIP" message -SKIP() { - TESTING $DUMPER $@ - echo " -SKIP-" -} - - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## -# prepare for test -COPY_TESTFILES_TO_TESTDIR - -# test XML -TOOLTEST tall.h5.xml --xml tall.h5 -TOOLTEST tattr.h5.xml --xml tattr.h5 -TOOLTEST tbitfields.h5.xml --xml tbitfields.h5 -TOOLTEST tcompound.h5.xml --xml tcompound.h5 -TOOLTEST tcompound2.h5.xml --xml tcompound2.h5 -TOOLTEST tdatareg.h5.xml --xml tdatareg.h5 -TOOLTEST tdset.h5.xml --xml tdset.h5 -TOOLTEST tdset2.h5.xml --xml tdset2.h5 -TOOLTEST tenum.h5.xml --xml tenum.h5 -TOOLTEST tgroup.h5.xml --xml tgroup.h5 -TOOLTEST thlink.h5.xml --xml thlink.h5 -TOOLTEST tloop.h5.xml --xml tloop.h5 -TOOLTEST tloop2.h5.xml --xml tloop2.h5 -TOOLTEST tmany.h5.xml --xml tmany.h5 -TOOLTEST tnestedcomp.h5.xml --xml tnestedcomp.h5 -TOOLTEST tcompound_complex.h5.xml --xml tcompound_complex.h5 -TOOLTEST tobjref.h5.xml --xml tobjref.h5 -TOOLTEST topaque.h5.xml --xml topaque.h5 -TOOLTEST tslink.h5.xml --xml tslink.h5 -TOOLTEST tudlink.h5.xml --xml tudlink.h5 -TOOLTEST textlink.h5.xml --xml textlink.h5 -TOOLTEST tstr.h5.xml --xml tstr.h5 -TOOLTEST tstr2.h5.xml --xml tstr2.h5 -TOOLTEST tref.h5.xml --xml tref.h5 -TOOLTEST tname-amp.h5.xml --xml tname-amp.h5 -TOOLTEST tname-apos.h5.xml --xml tname-apos.h5 -TOOLTEST tname-gt.h5.xml --xml tname-gt.h5 -TOOLTEST tname-lt.h5.xml --xml tname-lt.h5 -TOOLTEST tname-quot.h5.xml --xml tname-quot.h5 -TOOLTEST tname-sp.h5.xml --xml tname-sp.h5 -TOOLTEST tstring.h5.xml --xml tstring.h5 -TOOLTEST tstring-at.h5.xml --xml tstring-at.h5 -TOOLTEST tref-escapes.h5.xml --xml tref-escapes.h5 -TOOLTEST tref-escapes-at.h5.xml --xml tref-escapes-at.h5 -TOOLTEST tnodata.h5.xml --xml tnodata.h5 -TOOLTEST tarray1.h5.xml --xml tarray1.h5 -TOOLTEST tarray2.h5.xml --xml tarray2.h5 -TOOLTEST tarray3.h5.xml --xml tarray3.h5 -TOOLTEST tarray6.h5.xml --xml tarray6.h5 -TOOLTEST tarray7.h5.xml --xml tarray7.h5 -TOOLTEST tvldtypes1.h5.xml --xml tvldtypes1.h5 -TOOLTEST tvldtypes2.h5.xml --xml tvldtypes2.h5 -TOOLTEST tvldtypes3.h5.xml --xml tvldtypes3.h5 -TOOLTEST tvldtypes4.h5.xml --xml tvldtypes4.h5 -TOOLTEST tvldtypes5.h5.xml --xml tvldtypes5.h5 -TOOLTEST tvlstr.h5.xml --xml tvlstr.h5 -TOOLTEST tsaf.h5.xml --xml tsaf.h5 -TOOLTEST tempty.h5.xml --xml tempty.h5 -TOOLTEST tnamed_dtype_attr.h5.xml --xml tnamed_dtype_attr.h5 -##Test dataset and attribute of null space. Commented out: -## wait until the XML schema is updated for null space. -##TOOLTEST tnullspace.h5.xml --xml tnulspace.h5 - -# other options for xml - -TOOLTEST tempty-dtd.h5.xml --xml --use-dtd tempty.h5 -TOOLTEST tempty-dtd-2.h5.xml --xml -u tempty.h5 -TOOLTEST tempty-nons.h5.xml --xml -X ":" tempty.h5 -TOOLTEST tempty-nons-2.h5.xml --xml --xml-ns=":" tempty.h5 - -## Some of these combinations are syntactically correct but -## the URLs are dummies -TOOLTEST tempty-ns.h5.xml --xml -X "thing:" tempty.h5 -TOOLTEST tempty-ns-2.h5.xml --xml --xml-ns="thing:" tempty.h5 -TOOLTEST tempty-nons-uri.h5.xml --xml --xml-ns=":" --xml-dtd="http://somewhere.net" tempty.h5 -TOOLTEST tempty-dtd-uri.h5.xml --xml --use-dtd --xml-dtd="http://somewhere.net" tempty.h5 - -TOOLTEST tall-2A.h5.xml --xml -A tall.h5 - - -# tests for attribute order -TOOLTEST torderattr1.h5.xml --xml -H --sort_by=name --sort_order=ascending torderattr.h5 -TOOLTEST torderattr2.h5.xml --xml -H --sort_by=name --sort_order=descending torderattr.h5 -TOOLTEST torderattr3.h5.xml --xml -H --sort_by=creation_order --sort_order=ascending torderattr.h5 -TOOLTEST torderattr4.h5.xml --xml -H --sort_by=creation_order --sort_order=descending torderattr.h5 - -# tests for floating point user defined printf format -TOOLTEST tfpformat.h5.xml -u -m %.7f tfpformat.h5 - -# Clean up temporary files/directories -CLEAN_TESTFILES_AND_TESTDIR - -if test $nerrors -eq 0 ; then - echo "All $TESTNAME tests passed." - exit $EXIT_SUCCESS -else - echo "$TESTNAME tests failed with $nerrors errors." - exit $EXIT_FAILURE -fi diff --git a/tools/h5format_convert/CMakeLists.txt b/tools/h5format_convert/CMakeLists.txt deleted file mode 100644 index 7027566..0000000 --- a/tools/h5format_convert/CMakeLists.txt +++ /dev/null @@ -1,62 +0,0 @@ -cmake_minimum_required (VERSION 3.1.0) -PROJECT (HDF5_TOOLS_H5FC) - -#----------------------------------------------------------------------------- -# Setup include Directories -#----------------------------------------------------------------------------- -INCLUDE_DIRECTORIES (${HDF5_TOOLS_DIR}/lib) - -# -------------------------------------------------------------------- -# Add the h5format_convert executables -# -------------------------------------------------------------------- -add_executable (h5format_convert ${HDF5_TOOLS_H5FC_SOURCE_DIR}/h5format_convert.c) -TARGET_NAMING (h5format_convert STATIC) -TARGET_C_PROPERTIES (h5format_convert STATIC " " " ") -target_link_libraries (h5format_convert ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) -set_target_properties (h5format_convert PROPERTIES FOLDER tools) -set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5format_convert") - -set (H5_DEP_EXECUTABLES h5format_convert) - -if (BUILD_TESTING) - # -------------------------------------------------------------------- - # Add the h5format_convert test executables - # -------------------------------------------------------------------- - add_executable (h5fc_chk_idx ${HDF5_TOOLS_H5FC_SOURCE_DIR}/h5fc_chk_idx.c) - TARGET_NAMING (h5fc_chk_idx STATIC) - TARGET_C_PROPERTIES (h5fc_chk_idx STATIC " " " ") - target_link_libraries (h5fc_chk_idx ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) - set_target_properties (h5fc_chk_idx PROPERTIES FOLDER tools) - - if (HDF5_BUILD_GENERATORS) - add_executable (h5fc_gentest ${HDF5_TOOLS_H5FC_SOURCE_DIR}/h5fc_gentest.c) - TARGET_NAMING (h5fc_gentest STATIC) - TARGET_C_PROPERTIES (h5fc_gentest STATIC " " " ") - target_link_libraries (h5fc_gentest ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) - set_target_properties (h5fc_gentest PROPERTIES FOLDER generator/tools) - - #add_test (NAME h5fc_gentest COMMAND $) - endif (HDF5_BUILD_GENERATORS) - - include (CMakeTests.cmake) -endif (BUILD_TESTING) - -############################################################################## -############################################################################## -### I N S T A L L A T I O N ### -############################################################################## -############################################################################## - -#----------------------------------------------------------------------------- -# Rules for Installation of tools using make Install target -#----------------------------------------------------------------------------- - -#INSTALL_PROGRAM_PDB (h5format_convert ${HDF5_INSTALL_BIN_DIR} toolsapplications) - -install ( - TARGETS - h5format_convert - EXPORT - ${HDF5_EXPORTED_TARGETS} - RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications -) diff --git a/tools/h5format_convert/CMakeTests.cmake b/tools/h5format_convert/CMakeTests.cmake deleted file mode 100644 index 929230a..0000000 --- a/tools/h5format_convert/CMakeTests.cmake +++ /dev/null @@ -1,460 +0,0 @@ - -############################################################################## -############################################################################## -### T E S T I N G ### -############################################################################## -############################################################################## - - # -------------------------------------------------------------------- - # Copy all the HDF5 files from the test directory into the source directory - # -------------------------------------------------------------------- - set (HDF5_REFERENCE_FILES - h5fc_help.ddl - h5fc_nooption.ddl - h5fc_nonexistfile.ddl - h5fc_d_file.ddl - h5fc_dname.ddl - h5fc_nonexistdset_file.ddl - h5fc_v_non_chunked.ddl - h5fc_v_bt1.ddl - h5fc_v_ndata_bt1.ddl - h5fc_v_all.ddl - h5fc_v_n_1d.ddl - h5fc_v_n_all.ddl - h5fc_ext1_i.ddl - h5fc_ext1_s.ddl - h5fc_ext1_f.ddl - h5fc_ext2_if.ddl - h5fc_ext2_is.ddl - h5fc_ext2_sf.ddl - h5fc_ext3_isf.ddl - old_h5fc_ext1_i.ddl - old_h5fc_ext1_s.ddl - old_h5fc_ext1_f.ddl - old_h5fc_ext2_if.ddl - old_h5fc_ext2_is.ddl - old_h5fc_ext2_sf.ddl - old_h5fc_ext3_isf.ddl - h5fc_v_err.ddl - ) - set (HDF5_REFERENCE_TEST_FILES - h5fc_non_v3.h5 - h5fc_edge_v3.h5 - h5fc_ext_none.h5 - old_h5fc_ext_none.h5 - h5fc_ext1_i.h5 - h5fc_ext1_s.h5 - h5fc_ext1_f.h5 - h5fc_ext2_if.h5 - h5fc_ext2_is.h5 - h5fc_ext2_sf.h5 - h5fc_ext3_isf.h5 - old_h5fc_ext1_i.h5 - old_h5fc_ext1_s.h5 - old_h5fc_ext1_f.h5 - old_h5fc_ext2_if.h5 - old_h5fc_ext2_is.h5 - old_h5fc_ext2_sf.h5 - old_h5fc_ext3_isf.h5 - h5fc_err_level.h5 - ) - - file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - add_custom_target(h5fc-files ALL COMMENT "Copying files needed by h5fc tests") - - foreach (ddl_file ${HDF5_REFERENCE_FILES}) - HDFTEST_COPY_FILE("${HDF5_TOOLS_H5FC_SOURCE_DIR}/testfiles/${ddl_file}" "${PROJECT_BINARY_DIR}/testfiles/${ddl_file}" "h5fc_files") - endforeach (ddl_file ${HDF5_REFERENCE_FILES}) - - foreach (h5_file ${HDF5_REFERENCE_TEST_FILES}) - HDFTEST_COPY_FILE("${HDF5_TOOLS_H5FC_SOURCE_DIR}/testfiles/${h5_file}" "${PROJECT_BINARY_DIR}/testfiles/${h5_file}" "h5fc_files") - endforeach (h5_file ${HDF5_REFERENCE_TEST_FILES}) - add_custom_target(h5fc_files ALL COMMENT "Copying files needed by h5fc tests" DEPENDS ${h5fc_files_list}) - -############################################################################## -############################################################################## -### T H E T E S T S M A C R O S ### -############################################################################## -############################################################################## - - MACRO (ADD_H5_OUTPUT testname resultfile resultcode testfile) - # If using memchecker add tests without using scripts - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5FC-${testname}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ./testfiles/outtmp.h5 - ) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5FC-${testname}-clear-objects PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - if (NOT "${testfile}" STREQUAL "") - add_test ( - NAME H5FC-${testname}-${testfile}-tmpfile - COMMAND ${CMAKE_COMMAND} - -E copy_if_different ${HDF5_TOOLS_H5FC_SOURCE_DIR}/testfiles/${testfile} ./testfiles/outtmp.h5 - ) - set_tests_properties (H5FC-${testname}-${testfile}-tmpfile PROPERTIES DEPENDS "H5FC-${testname}-clear-objects") - add_test ( - NAME H5FC-${testname}-${testfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS=${ARGN};outtmp.h5" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" - -D "TEST_OUTPUT=${testname}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5FC-${testname}-${testfile} PROPERTIES DEPENDS "H5FC-${testname}-${testfile}-tmpfile") - set (last_test "H5FC-${testname}-${testfile}") - else (NOT "${testfile}" STREQUAL "") - add_test ( - NAME H5FC-${testname}-NA - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS=${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" - -D "TEST_OUTPUT=${testname}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5FC-${testname}-NA PROPERTIES DEPENDS "H5FC-${testname}-clear-objects") - set (last_test "H5FC-${testname}-NA") - endif (NOT "${testfile}" STREQUAL "") - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_OUTPUT) - - MACRO (ADD_H5_TEST testname resultcode testfile) - # If using memchecker add tests without using scripts - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5FC-${testname}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ./testfiles/tmp.h5 - ) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5FC-${testname}-clear-objects PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - add_test ( - NAME H5FC-${testname}-tmpfile - COMMAND ${CMAKE_COMMAND} - -E copy_if_different ${HDF5_TOOLS_H5FC_SOURCE_DIR}/testfiles/${testfile} testfiles/tmp.h5 - ) - set_tests_properties (H5FC-${testname}-tmpfile PROPERTIES DEPENDS "H5FC-${testname}-clear-objects") - add_test ( - NAME H5FC-${testname} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS=${ARGN};./testfiles/tmp.h5" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -D "TEST_OUTPUT=testfiles/${testname}.out" - -D "TEST_SKIP_COMPARE=TRUE" - -D "TEST_EXPECT=${resultcode}" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5FC-${testname} PROPERTIES DEPENDS "H5FC-${testname}-tmpfile") - set (last_test "H5FC-${testname}") - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_TEST) - - MACRO (ADD_H5_CHECK_IDX dependtest testname) - # If using memchecker add tests without using scripts - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5FC_CHECK_IDX-${testname} - COMMAND "$" "./testfiles/tmp.h5" "${ARGN}" - ) - set_tests_properties (H5FC_CHECK_IDX-${testname} PROPERTIES DEPENDS "H5FC-${dependtest}") - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_CHECK_IDX) - - MACRO (ADD_H5_TEST_CHECK_IDX testname resultcode testfile) - # If using memchecker add tests without using scripts - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5FC-${testname}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ./testfiles/chktmp.h5 - ) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5FC-${testname}-clear-objects PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - add_test ( - NAME H5FC-${testname}-tmpfile - COMMAND ${CMAKE_COMMAND} - -E copy_if_different ${HDF5_TOOLS_H5FC_SOURCE_DIR}/testfiles/${testfile} testfiles/chktmp.h5 - ) - set_tests_properties (H5FC-${testname}-tmpfile PROPERTIES DEPENDS "H5FC-${testname}-clear-objects") - add_test ( - NAME H5FC-${testname} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS=-d;${ARGN};./testfiles/chktmp.h5" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -D "TEST_OUTPUT=testfiles/${testname}.out" - -D "TEST_SKIP_COMPARE=TRUE" - -D "TEST_EXPECT=${resultcode}" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5FC-${testname} PROPERTIES DEPENDS "H5FC-${testname}-tmpfile") - add_test ( - NAME H5FC_CHECK_IDX-${testname} - COMMAND "$" "./testfiles/chktmp.h5" "${ARGN}" - ) - set_tests_properties (H5FC_CHECK_IDX-${testname} PROPERTIES DEPENDS "H5FC-${testname}") - set (last_test "H5FC_CHECK_IDX-${testname}") - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_TEST_CHECK_IDX) - - MACRO (ADD_H5_H5DUMP_CHECK testname) - # If using memchecker add tests without using scripts - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5FC-${testname}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove ./testfiles/dmptmp.h5 - ) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5FC-${testname}-clear-objects PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - add_test ( - NAME H5FC-${testname}-tmpfile - COMMAND ${CMAKE_COMMAND} - -E copy_if_different ${HDF5_TOOLS_H5FC_SOURCE_DIR}/testfiles/${testname}.h5 testfiles/dmptmp.h5 - ) - set_tests_properties (H5FC-${testname}-tmpfile PROPERTIES DEPENDS "H5FC-${testname}-clear-objects") - add_test ( - NAME H5FC-${testname} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS=${ARGN};./testfiles/dmptmp.h5" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -D "TEST_OUTPUT=testfiles/${testname}.out" - -D "TEST_SKIP_COMPARE=TRUE" - -D "TEST_EXPECT=0" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5FC-${testname} PROPERTIES DEPENDS "H5FC-${testname}-tmpfile") - add_test ( - NAME H5FC_CHECK_DUMP-${testname} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=-BH;./testfiles/dmptmp.h5" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -D "TEST_OUTPUT=testfiles/${testname}.out" - -D "TEST_EXPECT=0" - -D "TEST_REFERENCE=testfiles/${testname}.ddl" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5FC_CHECK_DUMP-${testname} PROPERTIES DEPENDS "H5FC-${testname}") - set (last_test "H5FC_CHECK_DUMP-${testname}") - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_H5DUMP_CHECK) - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## - - if (HDF5_ENABLE_USING_MEMCHECKER) - # Remove any output file left over from previous test run - add_test ( - NAME H5FC-clearall-objects - COMMAND ${CMAKE_COMMAND} - -E remove - h5fc_help.out - h5fc_help.out.err - h5fc_nooption.out - h5fc_nooption.out.err - h5fc_nonexistfile.out - h5fc_nonexistfile.out.err - h5fc_d_file.out - h5fc_d_file.out.err - h5fc_d_file-d.out - h5fc_d_file-d.out.err - h5fc_dname.out - h5fc_dname.out.err - h5fc_nonexistdset_file.out - h5fc_nonexistdset_file.out.err - h5fc_v_non_chunked.out - h5fc_v_non_chunked.out.err - h5fc_v_bt1.out - h5fc_v_bt1.out.err - h5fc_v_ndata_bt1.out - h5fc_v_ndata_bt1.out.err - h5fc_v_all.out - h5fc_v_all.out.err - h5fc_v_n_1d.out - h5fc_v_n_1d.out.err - h5fc_v_n_all.out - h5fc_v_n_all.out.err - h5fc_ext1_i.out - h5fc_ext1_i.out.err - h5fc_ext1_s.out - h5fc_ext1_s.out.err - h5fc_ext1_f.out - h5fc_ext1_f.out.err - h5fc_ext2_if.out - h5fc_ext2_if.out.err - h5fc_ext2_is.out - h5fc_ext2_is.out.err - h5fc_ext2_sf.out - h5fc_ext2_sf.out.err - h5fc_ext3_isf.out - h5fc_ext3_isf.out.err - old_h5fc_ext1_i.out - old_h5fc_ext1_i.out.err - old_h5fc_ext1_s.out - old_h5fc_ext1_s.out.err - old_h5fc_ext1_f.out - old_h5fc_ext1_f.out.err - old_h5fc_ext2_if.out - old_h5fc_ext2_is.out.err - old_h5fc_ext2_is.out - old_h5fc_ext2_sf.out.err - old_h5fc_ext3_isf.out - old_h5fc_ext3_isf.out.err - outtmp.h5 - tmp.h5 - chktmp.h5 - dmptmp.h5 - ) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5FC-clearall-objects PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - set (last_test "H5FC-clearall-objects") - endif (HDF5_ENABLE_USING_MEMCHECKER) - -# h5format_convert --help -# h5format_convert (no options) -# h5format_convert nonexist.h5 (no options, file does not exist) - ADD_H5_OUTPUT (h5fc_help h5fc_help.ddl 0 "" --help) - ADD_H5_OUTPUT (h5fc_nooption h5fc_nooption.ddl 1 "") - ADD_H5_OUTPUT (h5fc_nonexistfile h5fc_nonexistfile.ddl 1 "" nonexist.h5) -# -# -# h5format_convert -d old_h5fc_ext_none.h5 (just -d option, file exists) -# h5format_convert --dname old_h5fc_ext_none.h5 (just --dname option, file exists) -# h5format_convert --dname (just --dname option) -# h5format_convert --dname=nonexist old_h5fc_ext_none.h5 (dataset does not exist, file exists) - ADD_H5_OUTPUT (h5fc_d_file-d h5fc_d_file.ddl 1 old_h5fc_ext_none.h5 -d) - ADD_H5_OUTPUT (h5fc_d_file h5fc_d_file.ddl 1 old_h5fc_ext_none.h5 --dname) - ADD_H5_OUTPUT (h5fc_dname h5fc_dname.ddl 1 "" --dname) - ADD_H5_OUTPUT (h5fc_nonexistdset_file h5fc_nonexistdset_file.ddl 1 old_h5fc_ext_none.h5 --dname=nonexist) -# -# -# -# h5format_convert -d /DSET_CONTIGUOUS -v old_h5fc_ext_none.h5 (verbose, contiguous dataset) -# h5format_convert -d /GROUP/DSET_BT2 --verbose old_h5fc_ext_none.h5 (verbose, bt1 dataset) -# h5format_convert -d /DSET_NDATA_BT2 -v -n old_h5fc_ext_none.h5 (verbose, noop, bt1+nodata dataset) -# h5format_convert -v old_h5fc_ext_none.h5 (verbose, all datasets) - ADD_H5_OUTPUT (h5fc_v_non_chunked h5fc_v_non_chunked.ddl 0 old_h5fc_ext_none.h5 -d /DSET_CONTIGUOUS -v) - ADD_H5_OUTPUT (h5fc_v_bt1 h5fc_v_bt1.ddl 0 old_h5fc_ext_none.h5 -d /GROUP/DSET_BT2 --verbose) - ADD_H5_OUTPUT (h5fc_v_ndata_bt1 h5fc_v_ndata_bt1.ddl 0 old_h5fc_ext_none.h5 -d /DSET_NDATA_BT2 -v -n) - ADD_H5_OUTPUT (h5fc_v_all h5fc_v_all.ddl 0 old_h5fc_ext_none.h5 -v) -# -# -# -# h5format_convert -d /DSET_EA -v -n h5fc_ext_none.h5 (verbose, noop, one ea dataset) -# h5format_convert -v -n h5fc_non_v3.h5 (verbose, noop, all datasets) - ADD_H5_OUTPUT (h5fc_v_n_1d h5fc_v_n_1d.ddl 0 h5fc_ext_none.h5 -d /DSET_EA -v -n) - ADD_H5_OUTPUT (h5fc_v_n_all h5fc_v_n_all.ddl 0 h5fc_non_v3.h5 -v -n) -# -# -# -# h5format_convert -v h5fc_err_level.h5 (error encountered in converting the dataset) - ADD_H5_OUTPUT (h5fc_v_err h5fc_v_err.ddl 1 h5fc_err_level.h5 -v) -# -# -# -# No output from tests -# 1) Use the tool to convert the dataset -# 2) Verify the chunk indexing type is correct -# h5format_convert -d /DSET_EA h5fc_ext_none.h5 -# h5format_convert -d /GROUP/DSET_NDATA_EA h5fc_ext_none.h5 -# h5format_convert -d /GROUP/DSET_BT2 h5fc_ext_none.h5 -# h5format_convert -d /DSET_NDATA_BT2 h5fc_ext_none.h5 -# h5format_convert -d /DSET_FA h5fc_ext_none.h5 -# h5format_convert -d /GROUP/DSET_FA h5fc_ext_none.h5 -# h5format_convert -d /DSET_NONE h5fc_ext_none.h5 -# h5format_convert -d /GROUP/DSET_NDATA_NONE h5fc_ext_none.h5 - ADD_H5_TEST_CHECK_IDX (h5fc_ext_none_EA 0 h5fc_ext_none.h5 /DSET_EA) -# - ADD_H5_TEST_CHECK_IDX (h5fc_ext_none_ND_EA 0 h5fc_ext_none.h5 /GROUP/DSET_NDATA_EA) -# - ADD_H5_TEST_CHECK_IDX (h5fc_ext_none_BT 0 h5fc_ext_none.h5 /GROUP/DSET_BT2) -# - ADD_H5_TEST_CHECK_IDX (h5fc_ext_none_ND_BT 0 h5fc_ext_none.h5 /DSET_NDATA_BT2) -# - ADD_H5_TEST_CHECK_IDX (h5fc_ext_none_FA 0 h5fc_ext_none.h5 /DSET_FA) -# - ADD_H5_TEST_CHECK_IDX (h5fc_ext_none_ND_FA 0 h5fc_ext_none.h5 /GROUP/DSET_NDATA_FA) -# - ADD_H5_TEST_CHECK_IDX (h5fc_ext_none_NONE 0 h5fc_ext_none.h5 /DSET_NONE) -# - ADD_H5_TEST_CHECK_IDX (h5fc_ext_none_ND_NONE 0 h5fc_ext_none.h5 /GROUP/DSET_NDATA_NONE) -# -# -# -# No output from tests: just check exit code -# h5format_convert -d /DSET_NDATA_BT2 old_h5fc_ext_none.h5 (v1-btree dataset) -# h5format_convert -d /DSET_CONTIGUOUS h5fc_non_v3.h5 (non-chunked dataset) - ADD_H5_TEST (old_h5fc_ext_none 0 old_h5fc_ext_none.h5 -d /DSET_NDATA_BT2) - ADD_H5_TEST (old_h5fc_ext_none_CONT 0 h5fc_non_v3.h5 -d /DSET_CONTIGUOUS) -# -# -# -# No output from tests: just check exit code -# h5format_convert -d /GROUP/DSET_BT2 -n h5fc_non_v3.h5 (noop, one dataset) -# h5format_convert -n h5fc_non_v3.h5 (noop, all datasets) - ADD_H5_TEST (h5fc_non_v3_BT 0 h5fc_non_v3.h5 -d /GROUP/DSET_BT2 -n) - ADD_H5_TEST (h5fc_non_v3-n 0 h5fc_non_v3.h5 -n) -# -# -# -# No output from tests: just check exit code -# h5format_convert h5fc_non_v3.h5 -# 1) convert all datasets -# 2) verify indexing types - ADD_H5_TEST (h5fc_non_v3 0 h5fc_non_v3.h5) - ADD_H5_CHECK_IDX (h5fc_non_v3 h5fc_non_v3-NEA /DSET_NDATA_EA) - ADD_H5_CHECK_IDX (h5fc_non_v3 h5fc_non_v3-NBT /DSET_NDATA_BT2) - ADD_H5_CHECK_IDX (h5fc_non_v3 h5fc_non_v3-BT /GROUP/DSET_BT2) - ADD_H5_CHECK_IDX (h5fc_non_v3 h5fc_non_v3-EA /GROUP/DSET_EA) -# -# -# -# No output from test: just check exit code -# h5format_convert h5fc_edge_v3.h5 -# 1) convert the chunked dataset (filter, no-filter-edge-chunk) -# 2) verify the indexing type - ADD_H5_TEST_CHECK_IDX (h5fc_edge_v3 0 h5fc_edge_v3.h5 /DSET_EDGE) -# -# - -# The following test files have messages in the superblock extension. -# Verify h5dump output for correctness after conversion - ADD_H5_H5DUMP_CHECK (h5fc_ext1_i) - ADD_H5_H5DUMP_CHECK (h5fc_ext1_s) - ADD_H5_H5DUMP_CHECK (h5fc_ext1_f) -# - ADD_H5_H5DUMP_CHECK (h5fc_ext2_if) - ADD_H5_H5DUMP_CHECK (h5fc_ext2_is) - ADD_H5_H5DUMP_CHECK (h5fc_ext2_sf) -# - ADD_H5_H5DUMP_CHECK (h5fc_ext3_isf) -# -# -# - ADD_H5_H5DUMP_CHECK (old_h5fc_ext1_i) - ADD_H5_H5DUMP_CHECK (old_h5fc_ext1_s) - ADD_H5_H5DUMP_CHECK (old_h5fc_ext1_f) -# - ADD_H5_H5DUMP_CHECK (old_h5fc_ext2_if) - ADD_H5_H5DUMP_CHECK (old_h5fc_ext2_is) - ADD_H5_H5DUMP_CHECK (old_h5fc_ext2_sf) -# - ADD_H5_H5DUMP_CHECK (old_h5fc_ext3_isf) diff --git a/tools/h5format_convert/Makefile.am b/tools/h5format_convert/Makefile.am deleted file mode 100644 index d3aef7d..0000000 --- a/tools/h5format_convert/Makefile.am +++ /dev/null @@ -1,49 +0,0 @@ -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -## -## Makefile.am -## Run automake to generate a Makefile.in from this file. -# -# HDF5 Library Makefile(.in) -# - -include $(top_srcdir)/config/commence.am - -# Include src directory -AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib - -#test script and program -TEST_PROG=h5fc_gentest -TEST_SCRIPT=testh5fc.sh - -check_PROGRAMS=$(TEST_PROG) h5fc_chk_idx -check_SCRIPTS=$(TEST_SCRIPT) -SCRIPT_DEPEND=h5format_convert$(EXEEXT) - -# These are our main targets, the tools -bin_PROGRAMS=h5format_convert - -# Add h5format_convert specific linker flags here -h5format_convert_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) - -# Tell automake to clean h5redeploy script -CHECK_CLEANFILES+=*.h5 - -# These were generated by configure. Remove them only when distclean. -DISTCLEANFILES=testh5fc.sh - -# All programs rely on hdf5 library and h5tools library -LDADD=$(LIBH5TOOLS) $(LIBHDF5) - -include $(top_srcdir)/config/conclude.am diff --git a/tools/h5format_convert/h5fc_chk_idx.c b/tools/h5format_convert/h5fc_chk_idx.c deleted file mode 100644 index 3a87594..0000000 --- a/tools/h5format_convert/h5fc_chk_idx.c +++ /dev/null @@ -1,103 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * A program to verify that the chunk indexing type of a dataset in a file - * is version 1 B-tree. - * This is to support the testing of the tool "h5format_convert". - */ - -#include "hdf5.h" -#include "H5private.h" -#include "h5tools.h" - -static void usage(void); - -static void -usage(void) -{ - HDfprintf(stdout, "Usage: h5fc_chk_idx file_name dataset_pathname\n"); -} /* usage() */ - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: To check that the chunk indexing type for the dataset in - * the file is version 1 B-tree. - * - * Return: 0 -- the indexing type is version 1 B-tree - * 1 -- otherwise - * - *------------------------------------------------------------------------- - */ -int -main(int argc, char *argv[]) -{ - char *fname = NULL; - char *dname = NULL; - hid_t fid = -1; - hid_t did = -1; - H5D_chunk_index_t idx_type; - - /* h5fc_chk_idx fname dname */ - if(argc != 3) { - usage(); - HDexit(EXIT_FAILURE); - } /* end if */ - - /* Duplicate the file name & dataset name */ - fname = HDstrdup(argv[1]); - dname = HDstrdup(argv[2]); - - /* Try opening the file */ - if((fid = h5tools_fopen(fname, H5F_ACC_RDONLY, H5P_DEFAULT, NULL, NULL, (size_t)0)) < 0) { - HDfprintf(stderr, "h5fc_chk_idx: unable to open the file\n"); - HDexit(EXIT_FAILURE); - } /* end if */ - - /* Open the dataset */ - if((did = H5Dopen2(fid, dname, H5P_DEFAULT)) < 0) { - HDfprintf(stderr, "h5fc_chk_idx: unable to open the dataset\n"); - HDexit(EXIT_FAILURE); - } /* end if */ - - /* Get the dataset's chunk indexing type */ - if(H5Dget_chunk_index_type(did, &idx_type) < 0) { - HDfprintf(stderr, "h5fc_chk_idx: unable to get chunk index type for the dataset\n"); - HDexit(EXIT_FAILURE); - } /* end if */ - - /* Close the dataset */ - if(H5Dclose(did) < 0) { - HDfprintf(stderr, "h5fc_chk_idx: unable to close the dataset\n"); - HDexit(EXIT_FAILURE); - } /* end if */ - - /* Close the file */ - if(H5Fclose(fid) < 0) { - HDfprintf(stderr, "h5fc_chk_idx_type: cannot close the file\n"); - HDexit(EXIT_FAILURE); - } /* end if */ - - /* Return success when the chunk indexing type is version 1 B-tree */ - if(idx_type == H5D_CHUNK_IDX_BTREE) - HDexit(EXIT_SUCCESS); - else { - HDfprintf(stderr, "Error: chunk indexing type is %d\n", idx_type); - HDexit(EXIT_FAILURE); - } /* end if */ - -} /* main() */ - diff --git a/tools/h5format_convert/h5fc_gentest.c b/tools/h5format_convert/h5fc_gentest.c deleted file mode 100644 index 97def9a..0000000 --- a/tools/h5format_convert/h5fc_gentest.c +++ /dev/null @@ -1,812 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * Generate the binary hdf5 files for the h5format_convert tests. - * Usage: just execute the program without any arguments will - * generate all the binary hdf5 files - * - * If you regenerate the test files (e.g., changing some code, - * trying it on a new platform, ...), you need to verify the correctness - * of the expected output and update the corresponding *.ddl files. - */ - -#include "hdf5.h" -#include "H5private.h" - -#define NON_V3_FILE "h5fc_non_v3.h5" -#define EDGE_V3_FILE "h5fc_edge_v3.h5" -#define ERR_LEVEL_FILE "h5fc_err_level.h5" - -const char *FILENAME[] = { - "h5fc_ext1_i.h5", /* 0 */ - "h5fc_ext1_s.h5", /* 1 */ - "h5fc_ext1_f.h5", /* 2 */ - "h5fc_ext2_is.h5", /* 3 */ - "h5fc_ext2_if.h5", /* 4 */ - "h5fc_ext2_sf.h5", /* 5 */ - "h5fc_ext3_isf.h5", /* 6 */ - "h5fc_ext_none.h5", /* 7 */ - NULL -}; - -#define GROUP "GROUP" - -#define DSET_COMPACT "DSET_COMPACT" -#define DSET_CONTIGUOUS "DSET_CONTIGUOUS" - -#define DSET_EA "DSET_EA" -#define DSET_NDATA_EA "DSET_NDATA_EA" -#define DSET_BT2 "DSET_BT2" -#define DSET_NDATA_BT2 "DSET_NDATA_BT2" -#define DSET_FA "DSET_FA" -#define DSET_NDATA_FA "DSET_NDATA_FA" -#define DSET_NONE "DSET_NONE" -#define DSET_NDATA_NONE "DSET_NDATA_NONE" - -#define DSET_EDGE "DSET_EDGE" -#define DSET_ERR "DSET_ERR" - -#define ISTORE_IK 64 -#define ISTORE_ERR 1 - -#define NUM 500 - - -/* - * Function: gen_non() - * - * Create empty file with latest-format--this will result in v3 superbock - * Close and re-open file with non-latest-format--v3 superblock will result in latest version support: - * 1) 1 chunked dataset with extensible array chunk indexing type (without data) - * 2) 1 chunked dataset with version 2 B-tree chunk indexing type (with data) - * Re-open the file with write+non-latest-format and create: - * 3) 1 chunked dataset with version 2 B-tree chunk indexing type (without data) - * 4) 1 chunked dataset with extensible array indexing type (with data) - * 5) 1 compact and 1 contiguous datasets - */ -static void -gen_non(const char *fname) -{ - hid_t fid = -1; /* file id */ - hid_t fcpl = -1; /* file creation property list */ - hid_t fapl = -1; /* file access property list */ - hid_t gid = -1; /* group id */ - hid_t sid = -1; /* space id */ - hid_t dcpl = -1; /* dataset creation property id */ - hid_t did1 = -1, did2 = -1; /* dataset id */ - hsize_t dims1[1] = {10}; /* dataset dimension */ - hsize_t dims2[2] = {4, 6}; /* dataset dimension */ - hsize_t max_dims[2]; /* maximum dataset dimension */ - hsize_t c_dims[2] = {2, 3}; /* chunk dimension */ - int i; /* local index variable */ - int buf[24]; /* data buffer */ - - if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) - goto error; - if(H5Pset_shared_mesg_nindexes(fcpl, 4) < 0) - goto error; - if(H5Pset_istore_k(fcpl, 64) < 0) - goto error; - - if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) - goto error; - if(H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0) - goto error; - - /* Create an empty file with latest-format */ - if((fid = H5Fcreate(fname, H5F_ACC_TRUNC, fcpl, fapl)) < 0) - goto error; - - /* Create a group */ - if((gid = H5Gcreate2(fid, GROUP, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - - /* Create data */ - for(i = 0; i < 24; i++) - buf[i] = i; - - /* Set chunk */ - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) - goto error; - if(H5Pset_chunk(dcpl, 2, c_dims) < 0) - goto error; - - /* - * Create a chunked dataset with extensible array chunk indexing type (without data) - */ - - /* Create dataspace */ - max_dims[0] = 10; - max_dims[1] = H5S_UNLIMITED; - if((sid = H5Screate_simple(2, dims2, max_dims)) < 0) - goto error; - - /* Create the dataset */ - if((did1 = H5Dcreate2(fid, DSET_NDATA_EA, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - - /* Closing */ - if(H5Sclose(sid) < 0) - goto error; - if(H5Dclose(did1) < 0) - goto error; - - /* - * Create a chunked dataset with version 2 B-tree chunk indexing type (with data) - */ - - /* Create dataspace */ - max_dims[0] = 10; - max_dims[0] = H5S_UNLIMITED; - max_dims[1] = H5S_UNLIMITED; - if((sid = H5Screate_simple(2, dims2, max_dims)) < 0) - goto error; - - /* Create the dataset */ - if((did1 = H5Dcreate2(gid, DSET_BT2, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - - /* Write to the dataset */ - if(H5Dwrite(did1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto error; - - /* Closing */ - if(H5Sclose(sid) < 0) - goto error; - if(H5Dclose(did1) < 0) - goto error; - if(H5Pclose(dcpl) < 0) - goto error; - if(H5Gclose(gid) < 0) - goto error; - - - /* Open the group */ - if((gid = H5Gopen2(fid, GROUP, H5P_DEFAULT)) < 0) - goto error; - - /* - * Create a dataset with version 2 B-btree chunk indexing type (without data) - */ - - /* Set chunk */ - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) - goto error; - if(H5Pset_chunk(dcpl, 2, c_dims) < 0) - goto error; - - /* Create dataspace */ - max_dims[0] = H5S_UNLIMITED; - max_dims[1] = H5S_UNLIMITED; - if((sid = H5Screate_simple(2, dims2, max_dims)) < 0) - goto error; - - /* Create the dataset */ - if((did1 = H5Dcreate2(fid, DSET_NDATA_BT2, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - - /* Close the dataspace */ - if(H5Sclose(sid) < 0) - goto error; - - /* - * Create a dataset with extensible array chunk indexing type (with data) in the group - */ - - /* Create dataspace */ - max_dims[0] = 10; - max_dims[1] = H5S_UNLIMITED; - if((sid = H5Screate_simple(2, dims2, max_dims)) < 0) - goto error; - - /* Create the dataset */ - if((did2 = H5Dcreate2(gid, DSET_EA, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - - /* Write to the dataset */ - if(H5Dwrite(did2, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto error; - - /* Closing */ - if(H5Sclose(sid) < 0) - goto error; - if(H5Pclose(dcpl) < 0) - goto error; - if(H5Dclose(did1) < 0) - goto error; - if(H5Dclose(did2) < 0) - goto error; - - /* - * Create a compact dataset in the group - */ - - /* Create dataspace */ - if((sid = H5Screate_simple(1, dims1, NULL)) < 0) - goto error; - - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) - goto error; - if(H5Pset_layout(dcpl, H5D_COMPACT) < 0) - goto error; - - /* Create the dataset */ - if((did1 = H5Dcreate2(gid, DSET_COMPACT, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - - /* Closing */ - if(H5Dclose(did1) < 0) - goto error; - if(H5Pclose(dcpl) < 0) - goto error; - if(H5Sclose(sid) < 0) - goto error; - - /* - * Create a contiguous dataset with (2d with data) in the file - */ - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) - goto error; - if(H5Pset_layout(dcpl, H5D_CONTIGUOUS) < 0) - goto error; - - if((sid = H5Screate_simple(2, dims2, NULL)) < 0) - goto error; - - /* Create the dataset */ - if((did2 = H5Dcreate2(fid, DSET_CONTIGUOUS, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - /* Write to the dataset */ - if(H5Dwrite(did2, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto error; - - /* Closing */ - if(H5Dclose(did2) < 0) - goto error; - if(H5Pclose(dcpl) < 0) - goto error; - if(H5Sclose(sid) < 0) - goto error; - - if(H5Gclose(gid) < 0) - goto error; - if(H5Pclose(fcpl) < 0) - goto error; - if(H5Pclose(fapl) < 0) - goto error; - if(H5Fclose(fid) < 0) - goto error; - -error: - H5E_BEGIN_TRY { - H5Pclose(dcpl); - H5Sclose(sid); - H5Dclose(did1); - H5Dclose(did2); - H5Gclose(gid); - H5Fclose(fcpl); - H5Fclose(fapl); - H5Fclose(fid); - } H5E_END_TRY; - -} /* gen_non() */ - -/* - * Function: gen_edge() - * - * Create a file with write+latest-format--this will result in v3 superblock+latest version support: - * A dataset: chunked, filtered, H5D_CHUNK_DONT_FILTER_PARTIAL_CHUNKS enabled - * (i.e. the dataset does not filter partial edge chunks) - */ -static void -gen_edge(const char *fname) -{ - hid_t fid = -1; /* file id */ - hid_t fapl = -1; /* file access property list */ - hid_t sid = -1; /* dataspace id */ - hid_t dcpl = -1; /* dataset creation property id */ - hid_t did = -1; /* dataset id */ - hsize_t dims2[2] = {12, 6}; /* Dataset dimensions */ - hsize_t c_dims[2] = {5, 5}; /* Chunk dimensions */ - float buf[12][6]; /* Buffer for writing data */ - int i, j; /* local index variable */ - - /* Create a new format file */ - if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) - goto error; - if(H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0) - goto error; - if((fid = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) - goto error; - - /* Set chunk, filter, no-filter-edge-chunk */ - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) - goto error; - if(H5Pset_chunk(dcpl, 2, c_dims) < 0) - goto error; - if(H5Pset_deflate(dcpl, 9) < 0) - goto error; - if(H5Pset_chunk_opts(dcpl, H5D_CHUNK_DONT_FILTER_PARTIAL_CHUNKS) < 0) - goto error; - - /* Create dataspace */ - if((sid = H5Screate_simple(2, dims2, NULL)) < 0) - goto error; - - /* Create the dataset */ - if((did = H5Dcreate2(fid, DSET_EDGE, H5T_NATIVE_FLOAT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - - /* Create data */ - for (i = 0; i< 12; i++) - for (j = 0; j< 6; j++) - buf[i][j] = 100.0F; - - /* Write to the dataset */ - if(H5Dwrite(did, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto error; - - /* Closing */ - if(H5Pclose(dcpl) < 0) - goto error; - if(H5Sclose(sid) < 0) - goto error; - if(H5Dclose(did) < 0) - goto error; - if(H5Pclose(fapl) < 0) - goto error; - if(H5Fclose(fid) < 0) - goto error; - -error: - H5E_BEGIN_TRY { - H5Pclose(dcpl); - H5Sclose(sid); - H5Dclose(did); - H5Fclose(fid); - H5Pclose(fapl); - } H5E_END_TRY; - -} /* gen_edge() */ - - -/* - * Function: gen_err_level() - * - * Generate a file to test the situtation described in HDFFV-9434: - * Exceed the limit of v1-btree level - * - * Create a file with H5Pset_istore_k(fcpl, 1). - * Create a chunked dataset with extensible array chunk index and - * appends many chunks to the dataset. - * - * When h5format_convert tries to convert the dataset with - * extensive array index in the file to v1-btree chunk index, - * it will insert the dataset chunks to the v1-btree chunk index. - * The tree will split quickly due to the 'K' value of 1 and the - * tree level will eventually hit the maximum: 2^8(256). - */ -static void -gen_err_level(const char *fname) -{ - hid_t fid = -1; /* file ID */ - hid_t fapl = -1; /* file access property list */ - hid_t fcpl = -1; /* file creation property list */ - hid_t sid = -1; /* dataspace id */ - hid_t dcpl = -1; /* dataset creation property list */ - hid_t did = -1; /* dataset ID */ - hid_t fsid = -1; /* file dataspace ID */ - hid_t msid = -1; /* memory dataspace ID */ - unsigned char *buf = NULL; /* buffer for data */ - hsize_t dims[2] = {0, 1}; /* dataset dimension sizes */ - hsize_t max_dims[2] = {1, H5S_UNLIMITED}; /* dataset maximum dimension sizes */ - hsize_t chunk_dims[2] = {1, 1}; /* chunk dimension sizes */ - int n = 0; /* local index variable */ - - /* Create a new format file */ - if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) - goto error; - if(H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0) - goto error; - - /* Set 'K' value to 1 in file creation property list */ - if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) - goto error; - if(H5Pset_istore_k(fcpl, ISTORE_ERR) < 0) - goto error; - - /* Initialize data buffer */ - buf = (unsigned char *)HDmalloc(NUM * sizeof(unsigned char *)); - HDmemset(buf, 42, NUM * sizeof(unsigned char)); - - /* Create the test file */ - if((fid = H5Fcreate(fname, H5F_ACC_TRUNC, fcpl, fapl)) < 0) - goto error; - - /* Create a chunked dataset with extensible array chunk index */ - if((sid = H5Screate_simple(2, dims, max_dims)) < 0) - goto error; - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) - goto error; - if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) - goto error; - if((did = H5Dcreate2(fid, DSET_ERR, H5T_NATIVE_UCHAR, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - - /* Closing */ - if(H5Pclose(dcpl) < 0) - goto error; - if(H5Sclose(sid) < 0) - goto error; - if(H5Dclose(did) < 0) - goto error; - if(H5Fclose(fid) < 0) - goto error; - - /* Re-open the file */ - if((fid = H5Fopen(fname, H5F_ACC_RDWR, fapl)) < 0) - goto error; - - /* Open the dataset */ - if((did = H5Dopen2(fid, DSET_ERR, H5P_DEFAULT)) < 0) - goto error; - - /* Loop through appending 1 element at a time */ - for(n = 0; n < NUM; n++) { - hsize_t start[2] = {0, 0}; - hsize_t count[2] = {1, 1}; - hsize_t extent[2] = {0, 0}; - - start[0] = 0; - start[1] = (hsize_t)n; - extent[0] = 1; - extent[1] = (hsize_t)(n + 1); - - /* Set current dimension sizes for the dataset */ - if(H5Dset_extent(did, extent) < 0) - goto error; - - /* Set up memory dataspace */ - if((msid = H5Screate_simple(2, count, NULL)) < 0) - goto error; - - /* Get file dataspace */ - if((fsid = H5Dget_space(did)) < 0) - goto error; - - if((H5Sselect_hyperslab(fsid, H5S_SELECT_SET, start, NULL, count, NULL)) < 0) - goto error; - - /* Write to the dataset */ - if(H5Dwrite(did, H5T_NATIVE_UCHAR, msid, fsid, H5P_DEFAULT, buf) < 0) - goto error; - - if(H5Sclose(fsid) < 0) - goto error; - if(H5Sclose(msid) < 0) - goto error; - } - - /* Closing */ - if(H5Dclose(did) < 0) - goto error; - if(H5Fclose(fid) < 0) - goto error; - if(H5Pclose(fapl) < 0) - goto error; - if(buf) free(buf); - -error: - H5E_BEGIN_TRY { - H5Pclose(dcpl); - H5Sclose(sid); - H5Dclose(did); - H5Sclose(msid); - H5Sclose(fsid); - H5Fclose(fid); - H5Pclose(fapl); - H5Pclose(fcpl); - } H5E_END_TRY; - -} /* gen_err_level() */ - -/* - * Function: gen_ext() - * - * Create a file with/without latest format with: - * 1) 1 contiguous dataset (without data) - * 2) 2 chunked datasets with extensible array chunk indexing type (with/without data) - * 3) 2 chunked datasets with version 2 B-tree chunk indexing type (with/without data) - * 4) 2 chunked datasets with fixed array chunk indexing type (with/without data) - * 5) 2 chunked datasets with implicit array chunk indexing type (with/without data) - * It will create the file with/without messages in the superblock extension depending - * on the parameter "what". - */ -static void -gen_ext(const char *fname, unsigned new_format, unsigned what) -{ - hid_t fid = -1; /* file id */ - hid_t fapl = -1; /* file access property list */ - hid_t fcpl = -1; /* file creation property list */ - hid_t gid = -1; /* group id */ - hid_t sid = -1; /* space id */ - hid_t dcpl = -1; /* dataset creation property id */ - hid_t did1 = -1, did2 = -1; /* dataset id */ - hsize_t dims1[1] = {10}; /* dataset dimension */ - hsize_t dims2[2] = {4, 6}; /* dataset dimension */ - hsize_t max_dims[2]; /* maximum dataset dimension */ - hsize_t c_dims[2] = {2, 3}; /* chunk dimension */ - int i; /* local index variable */ - int buf[24]; /* data buffer */ - - if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) - goto error; - - if(new_format) { - /* Create a new format file */ - if(H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0) - goto error; - } /* end if */ - - /* Create a file creation property list */ - fcpl = H5Pcreate(H5P_FILE_CREATE); - - /* Generate messages that might be placed in superblock extension */ - switch(what) { - case 0: - H5Pset_istore_k(fcpl, ISTORE_IK); - break; - case 1: - H5Pset_shared_mesg_nindexes(fcpl, 4); - break; - case 2: - H5Pset_file_space(fcpl, H5F_FILE_SPACE_ALL_PERSIST, (hsize_t)0); - break; - case 3: - H5Pset_istore_k(fcpl, ISTORE_IK); - H5Pset_shared_mesg_nindexes(fcpl, 4); - break; - case 4: - H5Pset_istore_k(fcpl, ISTORE_IK); - H5Pset_file_space(fcpl, H5F_FILE_SPACE_DEFAULT, (hsize_t)2); - break; - case 5: - H5Pset_shared_mesg_nindexes(fcpl, 4); - H5Pset_file_space(fcpl, H5F_FILE_SPACE_VFD, (hsize_t)0); - break; - case 6: - H5Pset_istore_k(fcpl, ISTORE_IK); - H5Pset_shared_mesg_nindexes(fcpl, 4); - H5Pset_file_space(fcpl, H5F_FILE_SPACE_AGGR_VFD, (hsize_t)0); - break; - default: - break; - } - - /* Create the file */ - if((fid = H5Fcreate(fname, H5F_ACC_TRUNC, fcpl, fapl)) < 0) - goto error; - - /* Create a group */ - if((gid = H5Gcreate2(fid, GROUP, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - - /* Set chunk */ - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) - goto error; - if(H5Pset_chunk(dcpl, 2, c_dims) < 0) - goto error; - - - /* - * Create a contiguous dataset - */ - - /* Create dataspace */ - if((sid = H5Screate_simple(1, dims1, NULL)) < 0) - goto error; - - /* Create the dataset */ - if((did1 = H5Dcreate2(fid, DSET_CONTIGUOUS, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - - /* Closing */ - if(H5Sclose(sid) < 0) - goto error; - if(H5Dclose(did1) < 0) - goto error; - - /* - * Create 2 chunked datasets with extensible array chunk indexing type - * (one with data; one without data) - */ - - /* Create dataspace */ - max_dims[0] = 10; - max_dims[1] = H5S_UNLIMITED; - if((sid = H5Screate_simple(2, dims2, max_dims)) < 0) - goto error; - - /* Create the 2 datasets */ - if((did1 = H5Dcreate2(gid, DSET_NDATA_EA, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - - if((did2 = H5Dcreate2(fid, DSET_EA, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - - /* Create data */ - for(i = 0; i < 24; i++) - buf[i] = i; - - /* Write to one dataset */ - if(H5Dwrite(did2, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto error; - - /* Closing */ - if(H5Sclose(sid) < 0) - goto error; - if(H5Dclose(did1) < 0) - goto error; - if(H5Dclose(did2) < 0) - goto error; - - - /* - * Create 2 chunked datasets with version 2 B-tree chunk indexing type - * (one with data; one without data) - */ - - /* Create dataspace */ - max_dims[0] = 10; - max_dims[0] = H5S_UNLIMITED; - max_dims[1] = H5S_UNLIMITED; - if((sid = H5Screate_simple(2, dims2, max_dims)) < 0) - goto error; - - /* Create the 2 datasets */ - if((did1 = H5Dcreate2(fid, DSET_NDATA_BT2, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - - if((did2 = H5Dcreate2(gid, DSET_BT2, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - - /* Write to one dataset */ - if(H5Dwrite(did2, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto error; - - /* Closing */ - if(H5Sclose(sid) < 0) - goto error; - if(H5Dclose(did1) < 0) - goto error; - if(H5Dclose(did2) < 0) - goto error; - - /* - * Create 2 chunked datasets with fixed array chunk indexing type - * (one with data; one without data) - */ - - /* Create dataspace */ - max_dims[0] = 20; - max_dims[1] = 10; - if((sid = H5Screate_simple(2, dims2, max_dims)) < 0) - goto error; - - /* Create the datasets */ - if((did1 = H5Dcreate2(fid, DSET_FA, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - - if((did2 = H5Dcreate2(gid, DSET_NDATA_FA, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - - /* Write to the dataset */ - if(H5Dwrite(did1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto error; - - /* Closing */ - if(H5Sclose(sid) < 0) - goto error; - if(H5Dclose(did1) < 0) - goto error; - if(H5Dclose(did2) < 0) - goto error; - - - /* - * Create 2 chunked datasets with implicit chunk indexing type - * (one with data; one without data) - */ - - /* Create dataspace */ - if((sid = H5Screate_simple(2, dims2, NULL)) < 0) - goto error; - - /* Set early allocation */ - if(H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_EARLY) < 0) - goto error; - - /* Create the 2 datasets */ - if((did1 = H5Dcreate2(fid, DSET_NONE, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - - if((did2 = H5Dcreate2(gid, DSET_NDATA_NONE, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - - /* Write to one dataset */ - if(H5Dwrite(did1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto error; - - /* Closing */ - if(H5Dclose(did1) < 0) - goto error; - if(H5Dclose(did2) < 0) - goto error; - if(H5Sclose(sid) < 0) - goto error; - - if(H5Pclose(dcpl) < 0) - goto error; - if(H5Gclose(gid) < 0) - goto error; - if(H5Fclose(fid) < 0) - goto error; - -error: - H5E_BEGIN_TRY { - H5Pclose(dcpl); - H5Sclose(sid); - H5Dclose(did1); - H5Dclose(did2); - H5Gclose(gid); - H5Fclose(fid); - H5Pclose(fapl); - H5Pclose(fcpl); - } H5E_END_TRY; - -} /* end gen_ext() */ - -int -main(void) -{ - unsigned i, new_format; - - /* Generate a non-latest-format file with v3 superblock */ - gen_non(NON_V3_FILE); - - /* Generate a new format file with a no-filter-edge-chunk dataset */ - gen_edge(EDGE_V3_FILE); - - /* Generate a new format file with 'K' value of 1 in H5Pset_istore_k() */ - gen_err_level(ERR_LEVEL_FILE); - - /* Generate old/new format file with/without messages in the superblock extension */ - for(new_format = FALSE; new_format <= TRUE; new_format++) { - for(i = 0; i < 8; i++) { - char filename[50]; - - HDmemset(filename, 0, sizeof(filename)); - if(!new_format) - HDstrcat(filename, "old_"); - HDstrcat(filename, FILENAME[i]); - - gen_ext(filename, new_format, i); - } /* end for */ - } /* end for */ - - return 0; -} /* end main */ - diff --git a/tools/h5format_convert/h5format_convert.c b/tools/h5format_convert/h5format_convert.c deleted file mode 100644 index 8ce28dd..0000000 --- a/tools/h5format_convert/h5format_convert.c +++ /dev/null @@ -1,474 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * Programmer: Vailin Choi; Feb 2015 - */ - - -/* - * We include the private header file so we can get to the uniform - * programming environment it declares. - * HDF5 API functions (except for H5G_basename()) - */ -#include "H5private.h" -#include "h5tools.h" -#include "h5tools_utils.h" -#include "h5trav.h" - -/* Name of tool */ -#define PROGRAMNAME "h5format_convert" - -static char *fname_g = NULL; -static char *dname_g = NULL; -static int dset_g = FALSE; -static int noop_g = FALSE; -static int verbose_g = 0; - -/* - * Command-line options: The user can specify short or long-named - * parameters. - */ -static const char *s_opts = "hVvd:n"; -static struct long_options l_opts[] = { - { "help", no_arg, 'h' }, - { "hel", no_arg, 'h'}, - { "he", no_arg, 'h'}, - { "version", no_arg, 'V' }, - { "version", no_arg, 'V' }, - { "versio", no_arg, 'V' }, - { "versi", no_arg, 'V' }, - { "vers", no_arg, 'V' }, - { "verbose", no_arg, 'v' }, - { "verbos", no_arg, 'v' }, - { "verbo", no_arg, 'v' }, - { "verb", no_arg, 'v' }, - { "dname", require_arg, 'd' }, - { "dnam", require_arg, 'd' }, - { "dna", require_arg, 'd' }, - { "dn", require_arg, 'd' }, - { "noop", no_arg, 'n' }, - { "noo", no_arg, 'n' }, - { "no", no_arg, 'n' }, - { NULL, 0, '\0' } -}; - - -/*------------------------------------------------------------------------- - * Function: usage - * - * Purpose: print usage - * - * Return: void - * - *------------------------------------------------------------------------- - */ -static void usage(const char *prog) -{ - HDfprintf(stdout, "usage: %s [OPTIONS] file_name\n", prog); - HDfprintf(stdout, " OPTIONS\n"); - HDfprintf(stdout, " -h, --help Print a usage message and exit\n"); - HDfprintf(stdout, " -V, --version Print version number and exit\n"); - HDfprintf(stdout, " -v, --verbose Turn on verbose mode\n"); - HDfprintf(stdout, " -d dname, --dname=dataset_name Pathname for the dataset\n"); - HDfprintf(stdout, " -n, --noop Perform all the steps except the actual conversion\n"); - HDfprintf(stdout, "\n"); - HDfprintf(stdout, "Examples of use:\n"); - HDfprintf(stdout, "\n"); - HDfprintf(stdout, "h5format_convert -d /group/dataset file_name\n"); - HDfprintf(stdout, " Convert the dataset in the HDF5 file :\n"); - HDfprintf(stdout, " a. chunked dataset: convert the chunk indexing type to version 1 B-tree\n"); - HDfprintf(stdout, " b. compact/contiguous dataset: downgrade the layout version to 3\n"); - HDfprintf(stdout, " c. virtual dataset: no action\n"); - HDfprintf(stdout, "\n"); - HDfprintf(stdout, "h5format_convert file_name\n"); - HDfprintf(stdout, " Convert all datasets in the HDF5 file :\n"); - HDfprintf(stdout, " a. chunked dataset: convert the chunk indexing type to version 1 B-tree\n"); - HDfprintf(stdout, " b. compact/contiguous dataset: downgrade the layout version to 3\n"); - HDfprintf(stdout, " c. virtual dataset: no action\n"); - HDfprintf(stdout, "\n"); - HDfprintf(stdout, "h5format_convert -n -d /group/dataset file_name\n"); - HDfprintf(stdout, " Go through all the steps except the actual conversion when \n"); - HDfprintf(stdout, " converting the dataset in the HDF5 file .\n"); -} /* usage() */ - -/*------------------------------------------------------------------------- - * Function: parse_command_line - * - * Purpose: parse command line input - * - * Return: Success: 0 - * Failure: 1 - * - *------------------------------------------------------------------------- - */ -static int -parse_command_line(int argc, const char **argv) -{ - int opt; - - /* no arguments */ - if (argc == 1) { - usage(h5tools_getprogname()); - h5tools_setstatus(EXIT_FAILURE); - goto error; - } - - /* parse command line options */ - while ((opt = get_option(argc, argv, s_opts, l_opts)) != EOF) { - switch((char) opt) { - case 'h': - usage(h5tools_getprogname()); - h5tools_setstatus(EXIT_SUCCESS); - goto error; - - case 'V': - print_version(h5tools_getprogname()); - h5tools_setstatus(EXIT_SUCCESS); - goto error; - - case 'v': - verbose_g = TRUE; - break; - - case 'd': /* -d dname */ - if(opt_arg != NULL && *opt_arg) - dname_g = HDstrdup(opt_arg); - if(dname_g == NULL) { - h5tools_setstatus(EXIT_FAILURE); - error_msg("No dataset name\n", opt_arg); - usage(h5tools_getprogname()); - goto error; - } - dset_g = TRUE; - break; - - case 'n': /* -n */ - noop_g = TRUE; - break; - - default: - h5tools_setstatus(EXIT_FAILURE); - usage(h5tools_getprogname()); - goto error; - break; - } /* switch */ - } /* while */ - - if (argc <= opt_ind) { - error_msg("missing file name\n"); - usage(h5tools_getprogname()); - h5tools_setstatus(EXIT_FAILURE); - goto error; - } - - fname_g = HDstrdup(argv[opt_ind]); - - return(0); - -error: - return(-1); ; -} /* parse_command_line() */ - - -/*------------------------------------------------------------------------- - * Function: leave - * - * Purpose: Close HDF5 - * - * Return: Does not return - * - *------------------------------------------------------------------------- - */ -static void -leave(int ret) -{ - h5tools_close(); - - HDexit(ret); -} /* leave() */ - -/*------------------------------------------------------------------------- - * Function: convert() - * - * Purpose: To downgrade a dataset's indexing type or layout version: - * For chunked: - * Downgrade the chunk indexing type to version 1 B-tree - * If type is already version 1 B-tree, no further action - * For compact/contiguous: - * Downgrade the layout version from 4 to 3 - * If version is already <= 3, no further action - * For virtual: - * No further action - * - * Return: Success: 0 - * Failure: 1 - * - *------------------------------------------------------------------------- - */ -static int -convert(hid_t fid, const char *dname) -{ - hid_t dcpl = -1; - hid_t did = -1; - H5D_layout_t layout_type; - H5D_chunk_index_t idx_type; - - /* Open the dataset */ - if((did = H5Dopen2(fid, dname, H5P_DEFAULT)) < 0) { - error_msg("unable to open dataset \"%s\"\n", dname); - h5tools_setstatus(EXIT_FAILURE); - goto error; - - } else if(verbose_g) - HDfprintf(stdout, "Open the dataset\n"); - - /* Get the dataset's creation property list */ - if((dcpl = H5Dget_create_plist(did)) < 0) { - error_msg("unable to get the dataset creation property list\n"); - h5tools_setstatus(EXIT_FAILURE); - goto error; - } - - /* Get the dataset's layout */ - if((layout_type = H5Pget_layout(dcpl)) < 0) { - error_msg("unable to get the dataset layout type\n"); - h5tools_setstatus(EXIT_FAILURE); - goto error; - - } else if(verbose_g) - HDfprintf(stdout, "Retrieve the dataset's layout\n"); - - switch(layout_type) { - case H5D_CHUNKED: - if(verbose_g) - HDfprintf(stdout, "Dataset is a chunked dataset\n"); - - /* Get the dataset's chunk indexing type */ - if(H5Dget_chunk_index_type(did, &idx_type) < 0) { - error_msg("unable to get the chunk indexing type for \"%s\"\n", dname); - h5tools_setstatus(EXIT_FAILURE); - goto error; - } else if(verbose_g) - HDfprintf(stdout, "Retrieve the dataset's chunk indexing type\n"); - - if(idx_type == H5D_CHUNK_IDX_BTREE) { - if(verbose_g) - HDfprintf(stdout, "Dataset's chunk indexing type is already version 1 B-tree: no further action\n"); - h5tools_setstatus(EXIT_SUCCESS); - goto done; - } else if (verbose_g) - HDfprintf(stdout, "Dataset's chunk indexing type is not version 1 B-tree\n"); - break; - - case H5D_CONTIGUOUS: - if(verbose_g) - HDfprintf(stdout, "Dataset is a contiguous dataset: downgrade layout version as needed\n"); - break; - - case H5D_COMPACT: - if(verbose_g) - HDfprintf(stdout, "Dataset is a compact dataset: downgrade layout version as needed\n"); - break; - - case H5D_VIRTUAL: - if(verbose_g) - HDfprintf(stdout, "No further action for virtual dataset\n"); - goto done; - - case H5D_NLAYOUTS: - case H5D_LAYOUT_ERROR: - default: - error_msg("unknown layout type for \"%s\"\n", dname); - h5tools_setstatus(EXIT_FAILURE); - goto error; - - } /* end switch */ - - /* No further action if it is a noop */ - if(noop_g) { - if(verbose_g) - HDfprintf(stdout, "Not converting the dataset\n"); - h5tools_setstatus(EXIT_SUCCESS); - goto done; - } - - if(verbose_g) - HDfprintf(stdout, "Converting the dataset...\n"); - - /* Downgrade the dataset */ - if(H5Dformat_convert(did) < 0) { - error_msg("unable to downgrade dataset \"%s\"\n", dname); - h5tools_setstatus(EXIT_FAILURE); - goto error; - } else if(verbose_g) - HDfprintf(stdout, "Done\n"); - -done: - /* Close the dataset */ - if(H5Dclose(did) < 0) { - error_msg("unable to close dataset \"%s\"\n", dname); - h5tools_setstatus(EXIT_FAILURE); - goto error; - } else if(verbose_g) - HDfprintf(stdout, "Close the dataset\n"); - - /* Close the dataset creation property list */ - if(H5Pclose(dcpl) < 0) { - error_msg("unable to close dataset creation property list\n"); - h5tools_setstatus(EXIT_FAILURE); - goto error; - } else if(verbose_g) - printf("Close the dataset creation property list\n"); - - return(0); - -error: - if(verbose_g) - HDfprintf(stdout, "Error encountered\n"); - - H5E_BEGIN_TRY { - H5Pclose(dcpl); - H5Dclose(did); - } H5E_END_TRY; - - return(-1); -} /* convert() */ - -/*------------------------------------------------------------------------- - * Function: convert_dsets_cb() - * - * Purpose: The callback routine from the traversal to convert the - * chunk indexing type of the dataset object. - * - * Return: Success: 0 - * Failure: 1 - *------------------------------------------------------------------------- - */ -static int -convert_dsets_cb(const char *path, const H5O_info_t *oi, const char *already_visited, void *_fid) -{ - hid_t fid = *(hid_t *)_fid; - - /* If the object has already been seen then just return */ - if(NULL == already_visited) { - if(oi->type == H5O_TYPE_DATASET) { - if(verbose_g) - HDfprintf(stdout, "Going to process dataset:%s...\n", path); - if(convert(fid, path) < 0) - goto error; - } /* end if */ - } /* end if */ - - return 0; - -error: - return -1; -} /* end convert_dsets_cb() */ - - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: To convert the chunk indexing type of a dataset in a file to - * version 1 B-tree. - * - * Return: Success: 0 - * Failure: 1 - * - *------------------------------------------------------------------------- - */ -int -main(int argc, const char *argv[]) -{ - H5E_auto2_t func; - void *edata; - hid_t fid = -1; - - h5tools_setprogname(PROGRAMNAME); - h5tools_setstatus(EXIT_SUCCESS); - - /* Disable error reporting */ - H5Eget_auto2(H5E_DEFAULT, &func, &edata); - H5Eset_auto2(H5E_DEFAULT, NULL, NULL); - - /* Initialize h5tools lib */ - h5tools_init(); - - /* Parse command line options */ - if(parse_command_line(argc, argv) < 0) - goto done; - else if(verbose_g) - HDfprintf(stdout, "Process command line options\n"); - - if(noop_g && verbose_g) - HDfprintf(stdout, "It is noop...\n"); - - /* Open the HDF5 file */ - if((fid = h5tools_fopen(fname_g, H5F_ACC_RDWR, H5P_DEFAULT, NULL, NULL, 0)) < 0) { - error_msg("unable to open file \"%s\"\n", fname_g); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } else if(verbose_g) - HDfprintf(stdout, "Open the file %s\n", fname_g); - - if(dset_g) { /* Convert a specified dataset in the file */ - if(verbose_g) - HDfprintf(stdout, "Going to process dataset: %s...\n", dname_g); - if(convert(fid, dname_g) < 0) - goto done; - } else { /* Convert all datasets in the file */ - if(verbose_g) - HDfprintf(stdout, "Processing all datasets in the file...\n"); - if(h5trav_visit(fid, "/", TRUE, TRUE, convert_dsets_cb, NULL, &fid) < 0) - goto done; - } /* end else */ - - if(verbose_g) { - if(noop_g) { - HDfprintf(stdout, "Not processing the file's superblock...\n"); - h5tools_setstatus(EXIT_SUCCESS); - goto done; - } /* end if */ - HDfprintf(stdout, "Processing the file's superblock...\n"); - } /* end if */ - - /* Process superblock */ - if(H5Fformat_convert(fid) < 0) { - error_msg("unable to convert file's superblock\"%s\"\n", fname_g); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } /* end if */ - -done: - /* Close the file */ - if(fid >= 0) { - if(H5Fclose(fid) < 0) { - error_msg("unable to close file \"%s\"\n", fname_g); - h5tools_setstatus(EXIT_FAILURE); - } else if(verbose_g) - HDfprintf(stdout, "Close the file\n"); - } /* end if */ - - if(fname_g) - HDfree(fname_g); - if(dname_g) - HDfree(dname_g); - - H5Eset_auto2(H5E_DEFAULT, func, edata); - leave(h5tools_getstatus()); - -} /* end main() */ - diff --git a/tools/h5format_convert/testfiles/h5fc_d_file.ddl b/tools/h5format_convert/testfiles/h5fc_d_file.ddl deleted file mode 100644 index 38fc432..0000000 --- a/tools/h5format_convert/testfiles/h5fc_d_file.ddl +++ /dev/null @@ -1,26 +0,0 @@ -usage: h5format_convert [OPTIONS] file_name - OPTIONS - -h, --help Print a usage message and exit - -V, --version Print version number and exit - -v, --verbose Turn on verbose mode - -d dname, --dname=dataset_name Pathname for the dataset - -n, --noop Perform all the steps except the actual conversion - -Examples of use: - -h5format_convert -d /group/dataset file_name - Convert the dataset in the HDF5 file : - a. chunked dataset: convert the chunk indexing type to version 1 B-tree - b. compact/contiguous dataset: downgrade the layout version to 3 - c. virtual dataset: no action - -h5format_convert file_name - Convert all datasets in the HDF5 file : - a. chunked dataset: convert the chunk indexing type to version 1 B-tree - b. compact/contiguous dataset: downgrade the layout version to 3 - c. virtual dataset: no action - -h5format_convert -n -d /group/dataset file_name - Go through all the steps except the actual conversion when - converting the dataset in the HDF5 file . -h5format_convert error: missing file name diff --git a/tools/h5format_convert/testfiles/h5fc_dname.ddl b/tools/h5format_convert/testfiles/h5fc_dname.ddl deleted file mode 100644 index 48564b7..0000000 --- a/tools/h5format_convert/testfiles/h5fc_dname.ddl +++ /dev/null @@ -1,26 +0,0 @@ -usage: h5format_convert [OPTIONS] file_name - OPTIONS - -h, --help Print a usage message and exit - -V, --version Print version number and exit - -v, --verbose Turn on verbose mode - -d dname, --dname=dataset_name Pathname for the dataset - -n, --noop Perform all the steps except the actual conversion - -Examples of use: - -h5format_convert -d /group/dataset file_name - Convert the dataset in the HDF5 file : - a. chunked dataset: convert the chunk indexing type to version 1 B-tree - b. compact/contiguous dataset: downgrade the layout version to 3 - c. virtual dataset: no action - -h5format_convert file_name - Convert all datasets in the HDF5 file : - a. chunked dataset: convert the chunk indexing type to version 1 B-tree - b. compact/contiguous dataset: downgrade the layout version to 3 - c. virtual dataset: no action - -h5format_convert -n -d /group/dataset file_name - Go through all the steps except the actual conversion when - converting the dataset in the HDF5 file . -h5format_convert error: No dataset name diff --git a/tools/h5format_convert/testfiles/h5fc_edge_v3.h5 b/tools/h5format_convert/testfiles/h5fc_edge_v3.h5 deleted file mode 100644 index ac7dbd3..0000000 Binary files a/tools/h5format_convert/testfiles/h5fc_edge_v3.h5 and /dev/null differ diff --git a/tools/h5format_convert/testfiles/h5fc_err_level.h5 b/tools/h5format_convert/testfiles/h5fc_err_level.h5 deleted file mode 100644 index a10e8a4..0000000 Binary files a/tools/h5format_convert/testfiles/h5fc_err_level.h5 and /dev/null differ diff --git a/tools/h5format_convert/testfiles/h5fc_ext1_f.ddl b/tools/h5format_convert/testfiles/h5fc_ext1_f.ddl deleted file mode 100644 index dae9284..0000000 --- a/tools/h5format_convert/testfiles/h5fc_ext1_f.ddl +++ /dev/null @@ -1,58 +0,0 @@ -HDF5 "./testfiles/dmptmp.h5" { -SUPER_BLOCK { - SUPERBLOCK_VERSION 2 - FREELIST_VERSION 0 - SYMBOLTABLE_VERSION 0 - OBJECTHEADER_VERSION 0 - OFFSET_SIZE 8 - LENGTH_SIZE 8 - BTREE_RANK 16 - BTREE_LEAF 4 - ISTORE_K 32 - FILE_SPACE_STRATEGY H5F_FILE_SPACE_ALL - FREE_SPACE_THRESHOLD 1 - USER_BLOCK { - USERBLOCK_SIZE 0 - } -} -GROUP "/" { - DATASET "DSET_CONTIGUOUS" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 10 ) / ( 10 ) } - } - DATASET "DSET_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - GROUP "GROUP" { - DATASET "DSET_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - } -} -} diff --git a/tools/h5format_convert/testfiles/h5fc_ext1_f.h5 b/tools/h5format_convert/testfiles/h5fc_ext1_f.h5 deleted file mode 100644 index 68ba2ac..0000000 Binary files a/tools/h5format_convert/testfiles/h5fc_ext1_f.h5 and /dev/null differ diff --git a/tools/h5format_convert/testfiles/h5fc_ext1_i.ddl b/tools/h5format_convert/testfiles/h5fc_ext1_i.ddl deleted file mode 100644 index 8ec4656..0000000 --- a/tools/h5format_convert/testfiles/h5fc_ext1_i.ddl +++ /dev/null @@ -1,58 +0,0 @@ -HDF5 "./testfiles/dmptmp.h5" { -SUPER_BLOCK { - SUPERBLOCK_VERSION 2 - FREELIST_VERSION 0 - SYMBOLTABLE_VERSION 0 - OBJECTHEADER_VERSION 0 - OFFSET_SIZE 8 - LENGTH_SIZE 8 - BTREE_RANK 16 - BTREE_LEAF 4 - ISTORE_K 64 - FILE_SPACE_STRATEGY H5F_FILE_SPACE_ALL - FREE_SPACE_THRESHOLD 1 - USER_BLOCK { - USERBLOCK_SIZE 0 - } -} -GROUP "/" { - DATASET "DSET_CONTIGUOUS" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 10 ) / ( 10 ) } - } - DATASET "DSET_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - GROUP "GROUP" { - DATASET "DSET_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - } -} -} diff --git a/tools/h5format_convert/testfiles/h5fc_ext1_i.h5 b/tools/h5format_convert/testfiles/h5fc_ext1_i.h5 deleted file mode 100644 index 1a58089..0000000 Binary files a/tools/h5format_convert/testfiles/h5fc_ext1_i.h5 and /dev/null differ diff --git a/tools/h5format_convert/testfiles/h5fc_ext1_s.ddl b/tools/h5format_convert/testfiles/h5fc_ext1_s.ddl deleted file mode 100644 index dae9284..0000000 --- a/tools/h5format_convert/testfiles/h5fc_ext1_s.ddl +++ /dev/null @@ -1,58 +0,0 @@ -HDF5 "./testfiles/dmptmp.h5" { -SUPER_BLOCK { - SUPERBLOCK_VERSION 2 - FREELIST_VERSION 0 - SYMBOLTABLE_VERSION 0 - OBJECTHEADER_VERSION 0 - OFFSET_SIZE 8 - LENGTH_SIZE 8 - BTREE_RANK 16 - BTREE_LEAF 4 - ISTORE_K 32 - FILE_SPACE_STRATEGY H5F_FILE_SPACE_ALL - FREE_SPACE_THRESHOLD 1 - USER_BLOCK { - USERBLOCK_SIZE 0 - } -} -GROUP "/" { - DATASET "DSET_CONTIGUOUS" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 10 ) / ( 10 ) } - } - DATASET "DSET_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - GROUP "GROUP" { - DATASET "DSET_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - } -} -} diff --git a/tools/h5format_convert/testfiles/h5fc_ext1_s.h5 b/tools/h5format_convert/testfiles/h5fc_ext1_s.h5 deleted file mode 100644 index 26e9b25..0000000 Binary files a/tools/h5format_convert/testfiles/h5fc_ext1_s.h5 and /dev/null differ diff --git a/tools/h5format_convert/testfiles/h5fc_ext2_if.ddl b/tools/h5format_convert/testfiles/h5fc_ext2_if.ddl deleted file mode 100644 index 8ec4656..0000000 --- a/tools/h5format_convert/testfiles/h5fc_ext2_if.ddl +++ /dev/null @@ -1,58 +0,0 @@ -HDF5 "./testfiles/dmptmp.h5" { -SUPER_BLOCK { - SUPERBLOCK_VERSION 2 - FREELIST_VERSION 0 - SYMBOLTABLE_VERSION 0 - OBJECTHEADER_VERSION 0 - OFFSET_SIZE 8 - LENGTH_SIZE 8 - BTREE_RANK 16 - BTREE_LEAF 4 - ISTORE_K 64 - FILE_SPACE_STRATEGY H5F_FILE_SPACE_ALL - FREE_SPACE_THRESHOLD 1 - USER_BLOCK { - USERBLOCK_SIZE 0 - } -} -GROUP "/" { - DATASET "DSET_CONTIGUOUS" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 10 ) / ( 10 ) } - } - DATASET "DSET_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - GROUP "GROUP" { - DATASET "DSET_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - } -} -} diff --git a/tools/h5format_convert/testfiles/h5fc_ext2_if.h5 b/tools/h5format_convert/testfiles/h5fc_ext2_if.h5 deleted file mode 100644 index e5c5e25..0000000 Binary files a/tools/h5format_convert/testfiles/h5fc_ext2_if.h5 and /dev/null differ diff --git a/tools/h5format_convert/testfiles/h5fc_ext2_is.ddl b/tools/h5format_convert/testfiles/h5fc_ext2_is.ddl deleted file mode 100644 index 8ec4656..0000000 --- a/tools/h5format_convert/testfiles/h5fc_ext2_is.ddl +++ /dev/null @@ -1,58 +0,0 @@ -HDF5 "./testfiles/dmptmp.h5" { -SUPER_BLOCK { - SUPERBLOCK_VERSION 2 - FREELIST_VERSION 0 - SYMBOLTABLE_VERSION 0 - OBJECTHEADER_VERSION 0 - OFFSET_SIZE 8 - LENGTH_SIZE 8 - BTREE_RANK 16 - BTREE_LEAF 4 - ISTORE_K 64 - FILE_SPACE_STRATEGY H5F_FILE_SPACE_ALL - FREE_SPACE_THRESHOLD 1 - USER_BLOCK { - USERBLOCK_SIZE 0 - } -} -GROUP "/" { - DATASET "DSET_CONTIGUOUS" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 10 ) / ( 10 ) } - } - DATASET "DSET_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - GROUP "GROUP" { - DATASET "DSET_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - } -} -} diff --git a/tools/h5format_convert/testfiles/h5fc_ext2_is.h5 b/tools/h5format_convert/testfiles/h5fc_ext2_is.h5 deleted file mode 100644 index 0e3eca7..0000000 Binary files a/tools/h5format_convert/testfiles/h5fc_ext2_is.h5 and /dev/null differ diff --git a/tools/h5format_convert/testfiles/h5fc_ext2_sf.ddl b/tools/h5format_convert/testfiles/h5fc_ext2_sf.ddl deleted file mode 100644 index dae9284..0000000 --- a/tools/h5format_convert/testfiles/h5fc_ext2_sf.ddl +++ /dev/null @@ -1,58 +0,0 @@ -HDF5 "./testfiles/dmptmp.h5" { -SUPER_BLOCK { - SUPERBLOCK_VERSION 2 - FREELIST_VERSION 0 - SYMBOLTABLE_VERSION 0 - OBJECTHEADER_VERSION 0 - OFFSET_SIZE 8 - LENGTH_SIZE 8 - BTREE_RANK 16 - BTREE_LEAF 4 - ISTORE_K 32 - FILE_SPACE_STRATEGY H5F_FILE_SPACE_ALL - FREE_SPACE_THRESHOLD 1 - USER_BLOCK { - USERBLOCK_SIZE 0 - } -} -GROUP "/" { - DATASET "DSET_CONTIGUOUS" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 10 ) / ( 10 ) } - } - DATASET "DSET_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - GROUP "GROUP" { - DATASET "DSET_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - } -} -} diff --git a/tools/h5format_convert/testfiles/h5fc_ext2_sf.h5 b/tools/h5format_convert/testfiles/h5fc_ext2_sf.h5 deleted file mode 100644 index cb15f03..0000000 Binary files a/tools/h5format_convert/testfiles/h5fc_ext2_sf.h5 and /dev/null differ diff --git a/tools/h5format_convert/testfiles/h5fc_ext3_isf.ddl b/tools/h5format_convert/testfiles/h5fc_ext3_isf.ddl deleted file mode 100644 index 8ec4656..0000000 --- a/tools/h5format_convert/testfiles/h5fc_ext3_isf.ddl +++ /dev/null @@ -1,58 +0,0 @@ -HDF5 "./testfiles/dmptmp.h5" { -SUPER_BLOCK { - SUPERBLOCK_VERSION 2 - FREELIST_VERSION 0 - SYMBOLTABLE_VERSION 0 - OBJECTHEADER_VERSION 0 - OFFSET_SIZE 8 - LENGTH_SIZE 8 - BTREE_RANK 16 - BTREE_LEAF 4 - ISTORE_K 64 - FILE_SPACE_STRATEGY H5F_FILE_SPACE_ALL - FREE_SPACE_THRESHOLD 1 - USER_BLOCK { - USERBLOCK_SIZE 0 - } -} -GROUP "/" { - DATASET "DSET_CONTIGUOUS" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 10 ) / ( 10 ) } - } - DATASET "DSET_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - GROUP "GROUP" { - DATASET "DSET_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - } -} -} diff --git a/tools/h5format_convert/testfiles/h5fc_ext3_isf.h5 b/tools/h5format_convert/testfiles/h5fc_ext3_isf.h5 deleted file mode 100644 index d46cef4..0000000 Binary files a/tools/h5format_convert/testfiles/h5fc_ext3_isf.h5 and /dev/null differ diff --git a/tools/h5format_convert/testfiles/h5fc_ext_none.h5 b/tools/h5format_convert/testfiles/h5fc_ext_none.h5 deleted file mode 100644 index defbcb3..0000000 Binary files a/tools/h5format_convert/testfiles/h5fc_ext_none.h5 and /dev/null differ diff --git a/tools/h5format_convert/testfiles/h5fc_help.ddl b/tools/h5format_convert/testfiles/h5fc_help.ddl deleted file mode 100644 index bc0229c..0000000 --- a/tools/h5format_convert/testfiles/h5fc_help.ddl +++ /dev/null @@ -1,25 +0,0 @@ -usage: h5format_convert [OPTIONS] file_name - OPTIONS - -h, --help Print a usage message and exit - -V, --version Print version number and exit - -v, --verbose Turn on verbose mode - -d dname, --dname=dataset_name Pathname for the dataset - -n, --noop Perform all the steps except the actual conversion - -Examples of use: - -h5format_convert -d /group/dataset file_name - Convert the dataset in the HDF5 file : - a. chunked dataset: convert the chunk indexing type to version 1 B-tree - b. compact/contiguous dataset: downgrade the layout version to 3 - c. virtual dataset: no action - -h5format_convert file_name - Convert all datasets in the HDF5 file : - a. chunked dataset: convert the chunk indexing type to version 1 B-tree - b. compact/contiguous dataset: downgrade the layout version to 3 - c. virtual dataset: no action - -h5format_convert -n -d /group/dataset file_name - Go through all the steps except the actual conversion when - converting the dataset in the HDF5 file . diff --git a/tools/h5format_convert/testfiles/h5fc_non_v3.h5 b/tools/h5format_convert/testfiles/h5fc_non_v3.h5 deleted file mode 100644 index 58a340d..0000000 Binary files a/tools/h5format_convert/testfiles/h5fc_non_v3.h5 and /dev/null differ diff --git a/tools/h5format_convert/testfiles/h5fc_nonexistdset_file.ddl b/tools/h5format_convert/testfiles/h5fc_nonexistdset_file.ddl deleted file mode 100644 index 39450c0..0000000 --- a/tools/h5format_convert/testfiles/h5fc_nonexistdset_file.ddl +++ /dev/null @@ -1 +0,0 @@ -h5format_convert error: unable to open dataset "nonexist" diff --git a/tools/h5format_convert/testfiles/h5fc_nonexistfile.ddl b/tools/h5format_convert/testfiles/h5fc_nonexistfile.ddl deleted file mode 100644 index 706ea9d..0000000 --- a/tools/h5format_convert/testfiles/h5fc_nonexistfile.ddl +++ /dev/null @@ -1 +0,0 @@ -h5format_convert error: unable to open file "nonexist.h5" diff --git a/tools/h5format_convert/testfiles/h5fc_nooption.ddl b/tools/h5format_convert/testfiles/h5fc_nooption.ddl deleted file mode 100644 index bc0229c..0000000 --- a/tools/h5format_convert/testfiles/h5fc_nooption.ddl +++ /dev/null @@ -1,25 +0,0 @@ -usage: h5format_convert [OPTIONS] file_name - OPTIONS - -h, --help Print a usage message and exit - -V, --version Print version number and exit - -v, --verbose Turn on verbose mode - -d dname, --dname=dataset_name Pathname for the dataset - -n, --noop Perform all the steps except the actual conversion - -Examples of use: - -h5format_convert -d /group/dataset file_name - Convert the dataset in the HDF5 file : - a. chunked dataset: convert the chunk indexing type to version 1 B-tree - b. compact/contiguous dataset: downgrade the layout version to 3 - c. virtual dataset: no action - -h5format_convert file_name - Convert all datasets in the HDF5 file : - a. chunked dataset: convert the chunk indexing type to version 1 B-tree - b. compact/contiguous dataset: downgrade the layout version to 3 - c. virtual dataset: no action - -h5format_convert -n -d /group/dataset file_name - Go through all the steps except the actual conversion when - converting the dataset in the HDF5 file . diff --git a/tools/h5format_convert/testfiles/h5fc_v_all.ddl b/tools/h5format_convert/testfiles/h5fc_v_all.ddl deleted file mode 100644 index a1af831..0000000 --- a/tools/h5format_convert/testfiles/h5fc_v_all.ddl +++ /dev/null @@ -1,77 +0,0 @@ -Process command line options -Open the file outtmp.h5 -Processing all datasets in the file... -Going to process dataset:/DSET_CONTIGUOUS... -Open the dataset -Retrieve the dataset's layout -Dataset is a contiguous dataset: downgrade layout version as needed -Converting the dataset... -Done -Close the dataset -Close the dataset creation property list -Going to process dataset:/DSET_EA... -Open the dataset -Retrieve the dataset's layout -Dataset is a chunked dataset -Retrieve the dataset's chunk indexing type -Dataset's chunk indexing type is already version 1 B-tree: no further action -Close the dataset -Close the dataset creation property list -Going to process dataset:/DSET_FA... -Open the dataset -Retrieve the dataset's layout -Dataset is a chunked dataset -Retrieve the dataset's chunk indexing type -Dataset's chunk indexing type is already version 1 B-tree: no further action -Close the dataset -Close the dataset creation property list -Going to process dataset:/DSET_NDATA_BT2... -Open the dataset -Retrieve the dataset's layout -Dataset is a chunked dataset -Retrieve the dataset's chunk indexing type -Dataset's chunk indexing type is already version 1 B-tree: no further action -Close the dataset -Close the dataset creation property list -Going to process dataset:/DSET_NONE... -Open the dataset -Retrieve the dataset's layout -Dataset is a chunked dataset -Retrieve the dataset's chunk indexing type -Dataset's chunk indexing type is already version 1 B-tree: no further action -Close the dataset -Close the dataset creation property list -Going to process dataset:/GROUP/DSET_BT2... -Open the dataset -Retrieve the dataset's layout -Dataset is a chunked dataset -Retrieve the dataset's chunk indexing type -Dataset's chunk indexing type is already version 1 B-tree: no further action -Close the dataset -Close the dataset creation property list -Going to process dataset:/GROUP/DSET_NDATA_EA... -Open the dataset -Retrieve the dataset's layout -Dataset is a chunked dataset -Retrieve the dataset's chunk indexing type -Dataset's chunk indexing type is already version 1 B-tree: no further action -Close the dataset -Close the dataset creation property list -Going to process dataset:/GROUP/DSET_NDATA_FA... -Open the dataset -Retrieve the dataset's layout -Dataset is a chunked dataset -Retrieve the dataset's chunk indexing type -Dataset's chunk indexing type is already version 1 B-tree: no further action -Close the dataset -Close the dataset creation property list -Going to process dataset:/GROUP/DSET_NDATA_NONE... -Open the dataset -Retrieve the dataset's layout -Dataset is a chunked dataset -Retrieve the dataset's chunk indexing type -Dataset's chunk indexing type is already version 1 B-tree: no further action -Close the dataset -Close the dataset creation property list -Processing the file's superblock... -Close the file diff --git a/tools/h5format_convert/testfiles/h5fc_v_bt1.ddl b/tools/h5format_convert/testfiles/h5fc_v_bt1.ddl deleted file mode 100644 index 31de12a..0000000 --- a/tools/h5format_convert/testfiles/h5fc_v_bt1.ddl +++ /dev/null @@ -1,12 +0,0 @@ -Process command line options -Open the file outtmp.h5 -Going to process dataset: /GROUP/DSET_BT2... -Open the dataset -Retrieve the dataset's layout -Dataset is a chunked dataset -Retrieve the dataset's chunk indexing type -Dataset's chunk indexing type is already version 1 B-tree: no further action -Close the dataset -Close the dataset creation property list -Processing the file's superblock... -Close the file diff --git a/tools/h5format_convert/testfiles/h5fc_v_err.ddl b/tools/h5format_convert/testfiles/h5fc_v_err.ddl deleted file mode 100644 index b671db0..0000000 --- a/tools/h5format_convert/testfiles/h5fc_v_err.ddl +++ /dev/null @@ -1,13 +0,0 @@ -Process command line options -Open the file outtmp.h5 -Processing all datasets in the file... -Going to process dataset:/DSET_ERR... -Open the dataset -Retrieve the dataset's layout -Dataset is a chunked dataset -Retrieve the dataset's chunk indexing type -Dataset's chunk indexing type is not version 1 B-tree -Converting the dataset... -Error encountered -Close the file -h5format_convert error: unable to downgrade dataset "/DSET_ERR" diff --git a/tools/h5format_convert/testfiles/h5fc_v_n_1d.ddl b/tools/h5format_convert/testfiles/h5fc_v_n_1d.ddl deleted file mode 100644 index fcdadd8..0000000 --- a/tools/h5format_convert/testfiles/h5fc_v_n_1d.ddl +++ /dev/null @@ -1,14 +0,0 @@ -Process command line options -It is noop... -Open the file outtmp.h5 -Going to process dataset: /DSET_EA... -Open the dataset -Retrieve the dataset's layout -Dataset is a chunked dataset -Retrieve the dataset's chunk indexing type -Dataset's chunk indexing type is not version 1 B-tree -Not converting the dataset -Close the dataset -Close the dataset creation property list -Not processing the file's superblock... -Close the file diff --git a/tools/h5format_convert/testfiles/h5fc_v_n_all.ddl b/tools/h5format_convert/testfiles/h5fc_v_n_all.ddl deleted file mode 100644 index 074ce6f..0000000 --- a/tools/h5format_convert/testfiles/h5fc_v_n_all.ddl +++ /dev/null @@ -1,56 +0,0 @@ -Process command line options -It is noop... -Open the file outtmp.h5 -Processing all datasets in the file... -Going to process dataset:/DSET_CONTIGUOUS... -Open the dataset -Retrieve the dataset's layout -Dataset is a contiguous dataset: downgrade layout version as needed -Not converting the dataset -Close the dataset -Close the dataset creation property list -Going to process dataset:/DSET_NDATA_BT2... -Open the dataset -Retrieve the dataset's layout -Dataset is a chunked dataset -Retrieve the dataset's chunk indexing type -Dataset's chunk indexing type is not version 1 B-tree -Not converting the dataset -Close the dataset -Close the dataset creation property list -Going to process dataset:/DSET_NDATA_EA... -Open the dataset -Retrieve the dataset's layout -Dataset is a chunked dataset -Retrieve the dataset's chunk indexing type -Dataset's chunk indexing type is not version 1 B-tree -Not converting the dataset -Close the dataset -Close the dataset creation property list -Going to process dataset:/GROUP/DSET_BT2... -Open the dataset -Retrieve the dataset's layout -Dataset is a chunked dataset -Retrieve the dataset's chunk indexing type -Dataset's chunk indexing type is not version 1 B-tree -Not converting the dataset -Close the dataset -Close the dataset creation property list -Going to process dataset:/GROUP/DSET_COMPACT... -Open the dataset -Retrieve the dataset's layout -Dataset is a contiguous dataset: downgrade layout version as needed -Not converting the dataset -Close the dataset -Close the dataset creation property list -Going to process dataset:/GROUP/DSET_EA... -Open the dataset -Retrieve the dataset's layout -Dataset is a chunked dataset -Retrieve the dataset's chunk indexing type -Dataset's chunk indexing type is not version 1 B-tree -Not converting the dataset -Close the dataset -Close the dataset creation property list -Not processing the file's superblock... -Close the file diff --git a/tools/h5format_convert/testfiles/h5fc_v_ndata_bt1.ddl b/tools/h5format_convert/testfiles/h5fc_v_ndata_bt1.ddl deleted file mode 100644 index c75699a..0000000 --- a/tools/h5format_convert/testfiles/h5fc_v_ndata_bt1.ddl +++ /dev/null @@ -1,13 +0,0 @@ -Process command line options -It is noop... -Open the file outtmp.h5 -Going to process dataset: /DSET_NDATA_BT2... -Open the dataset -Retrieve the dataset's layout -Dataset is a chunked dataset -Retrieve the dataset's chunk indexing type -Dataset's chunk indexing type is already version 1 B-tree: no further action -Close the dataset -Close the dataset creation property list -Not processing the file's superblock... -Close the file diff --git a/tools/h5format_convert/testfiles/h5fc_v_non_chunked.ddl b/tools/h5format_convert/testfiles/h5fc_v_non_chunked.ddl deleted file mode 100644 index 5945389..0000000 --- a/tools/h5format_convert/testfiles/h5fc_v_non_chunked.ddl +++ /dev/null @@ -1,12 +0,0 @@ -Process command line options -Open the file outtmp.h5 -Going to process dataset: /DSET_CONTIGUOUS... -Open the dataset -Retrieve the dataset's layout -Dataset is a contiguous dataset: downgrade layout version as needed -Converting the dataset... -Done -Close the dataset -Close the dataset creation property list -Processing the file's superblock... -Close the file diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext1_f.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext1_f.ddl deleted file mode 100644 index dae9284..0000000 --- a/tools/h5format_convert/testfiles/old_h5fc_ext1_f.ddl +++ /dev/null @@ -1,58 +0,0 @@ -HDF5 "./testfiles/dmptmp.h5" { -SUPER_BLOCK { - SUPERBLOCK_VERSION 2 - FREELIST_VERSION 0 - SYMBOLTABLE_VERSION 0 - OBJECTHEADER_VERSION 0 - OFFSET_SIZE 8 - LENGTH_SIZE 8 - BTREE_RANK 16 - BTREE_LEAF 4 - ISTORE_K 32 - FILE_SPACE_STRATEGY H5F_FILE_SPACE_ALL - FREE_SPACE_THRESHOLD 1 - USER_BLOCK { - USERBLOCK_SIZE 0 - } -} -GROUP "/" { - DATASET "DSET_CONTIGUOUS" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 10 ) / ( 10 ) } - } - DATASET "DSET_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - GROUP "GROUP" { - DATASET "DSET_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - } -} -} diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext1_f.h5 b/tools/h5format_convert/testfiles/old_h5fc_ext1_f.h5 deleted file mode 100644 index 3cbc7f4..0000000 Binary files a/tools/h5format_convert/testfiles/old_h5fc_ext1_f.h5 and /dev/null differ diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext1_i.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext1_i.ddl deleted file mode 100644 index d1768c8..0000000 --- a/tools/h5format_convert/testfiles/old_h5fc_ext1_i.ddl +++ /dev/null @@ -1,58 +0,0 @@ -HDF5 "./testfiles/dmptmp.h5" { -SUPER_BLOCK { - SUPERBLOCK_VERSION 1 - FREELIST_VERSION 0 - SYMBOLTABLE_VERSION 0 - OBJECTHEADER_VERSION 0 - OFFSET_SIZE 8 - LENGTH_SIZE 8 - BTREE_RANK 16 - BTREE_LEAF 4 - ISTORE_K 64 - FILE_SPACE_STRATEGY H5F_FILE_SPACE_ALL - FREE_SPACE_THRESHOLD 1 - USER_BLOCK { - USERBLOCK_SIZE 0 - } -} -GROUP "/" { - DATASET "DSET_CONTIGUOUS" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 10 ) / ( 10 ) } - } - DATASET "DSET_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - GROUP "GROUP" { - DATASET "DSET_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - } -} -} diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext1_i.h5 b/tools/h5format_convert/testfiles/old_h5fc_ext1_i.h5 deleted file mode 100644 index a2c9187..0000000 Binary files a/tools/h5format_convert/testfiles/old_h5fc_ext1_i.h5 and /dev/null differ diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext1_s.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext1_s.ddl deleted file mode 100644 index dae9284..0000000 --- a/tools/h5format_convert/testfiles/old_h5fc_ext1_s.ddl +++ /dev/null @@ -1,58 +0,0 @@ -HDF5 "./testfiles/dmptmp.h5" { -SUPER_BLOCK { - SUPERBLOCK_VERSION 2 - FREELIST_VERSION 0 - SYMBOLTABLE_VERSION 0 - OBJECTHEADER_VERSION 0 - OFFSET_SIZE 8 - LENGTH_SIZE 8 - BTREE_RANK 16 - BTREE_LEAF 4 - ISTORE_K 32 - FILE_SPACE_STRATEGY H5F_FILE_SPACE_ALL - FREE_SPACE_THRESHOLD 1 - USER_BLOCK { - USERBLOCK_SIZE 0 - } -} -GROUP "/" { - DATASET "DSET_CONTIGUOUS" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 10 ) / ( 10 ) } - } - DATASET "DSET_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - GROUP "GROUP" { - DATASET "DSET_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - } -} -} diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext1_s.h5 b/tools/h5format_convert/testfiles/old_h5fc_ext1_s.h5 deleted file mode 100644 index fdf4f33..0000000 Binary files a/tools/h5format_convert/testfiles/old_h5fc_ext1_s.h5 and /dev/null differ diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext2_if.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext2_if.ddl deleted file mode 100644 index 8ec4656..0000000 --- a/tools/h5format_convert/testfiles/old_h5fc_ext2_if.ddl +++ /dev/null @@ -1,58 +0,0 @@ -HDF5 "./testfiles/dmptmp.h5" { -SUPER_BLOCK { - SUPERBLOCK_VERSION 2 - FREELIST_VERSION 0 - SYMBOLTABLE_VERSION 0 - OBJECTHEADER_VERSION 0 - OFFSET_SIZE 8 - LENGTH_SIZE 8 - BTREE_RANK 16 - BTREE_LEAF 4 - ISTORE_K 64 - FILE_SPACE_STRATEGY H5F_FILE_SPACE_ALL - FREE_SPACE_THRESHOLD 1 - USER_BLOCK { - USERBLOCK_SIZE 0 - } -} -GROUP "/" { - DATASET "DSET_CONTIGUOUS" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 10 ) / ( 10 ) } - } - DATASET "DSET_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - GROUP "GROUP" { - DATASET "DSET_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - } -} -} diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext2_if.h5 b/tools/h5format_convert/testfiles/old_h5fc_ext2_if.h5 deleted file mode 100644 index 6bf0a2f..0000000 Binary files a/tools/h5format_convert/testfiles/old_h5fc_ext2_if.h5 and /dev/null differ diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext2_is.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext2_is.ddl deleted file mode 100644 index 8ec4656..0000000 --- a/tools/h5format_convert/testfiles/old_h5fc_ext2_is.ddl +++ /dev/null @@ -1,58 +0,0 @@ -HDF5 "./testfiles/dmptmp.h5" { -SUPER_BLOCK { - SUPERBLOCK_VERSION 2 - FREELIST_VERSION 0 - SYMBOLTABLE_VERSION 0 - OBJECTHEADER_VERSION 0 - OFFSET_SIZE 8 - LENGTH_SIZE 8 - BTREE_RANK 16 - BTREE_LEAF 4 - ISTORE_K 64 - FILE_SPACE_STRATEGY H5F_FILE_SPACE_ALL - FREE_SPACE_THRESHOLD 1 - USER_BLOCK { - USERBLOCK_SIZE 0 - } -} -GROUP "/" { - DATASET "DSET_CONTIGUOUS" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 10 ) / ( 10 ) } - } - DATASET "DSET_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - GROUP "GROUP" { - DATASET "DSET_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - } -} -} diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext2_is.h5 b/tools/h5format_convert/testfiles/old_h5fc_ext2_is.h5 deleted file mode 100644 index c0c7ecc..0000000 Binary files a/tools/h5format_convert/testfiles/old_h5fc_ext2_is.h5 and /dev/null differ diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext2_sf.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext2_sf.ddl deleted file mode 100644 index dae9284..0000000 --- a/tools/h5format_convert/testfiles/old_h5fc_ext2_sf.ddl +++ /dev/null @@ -1,58 +0,0 @@ -HDF5 "./testfiles/dmptmp.h5" { -SUPER_BLOCK { - SUPERBLOCK_VERSION 2 - FREELIST_VERSION 0 - SYMBOLTABLE_VERSION 0 - OBJECTHEADER_VERSION 0 - OFFSET_SIZE 8 - LENGTH_SIZE 8 - BTREE_RANK 16 - BTREE_LEAF 4 - ISTORE_K 32 - FILE_SPACE_STRATEGY H5F_FILE_SPACE_ALL - FREE_SPACE_THRESHOLD 1 - USER_BLOCK { - USERBLOCK_SIZE 0 - } -} -GROUP "/" { - DATASET "DSET_CONTIGUOUS" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 10 ) / ( 10 ) } - } - DATASET "DSET_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - GROUP "GROUP" { - DATASET "DSET_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - } -} -} diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext2_sf.h5 b/tools/h5format_convert/testfiles/old_h5fc_ext2_sf.h5 deleted file mode 100644 index 055cabf..0000000 Binary files a/tools/h5format_convert/testfiles/old_h5fc_ext2_sf.h5 and /dev/null differ diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext3_isf.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext3_isf.ddl deleted file mode 100644 index 8ec4656..0000000 --- a/tools/h5format_convert/testfiles/old_h5fc_ext3_isf.ddl +++ /dev/null @@ -1,58 +0,0 @@ -HDF5 "./testfiles/dmptmp.h5" { -SUPER_BLOCK { - SUPERBLOCK_VERSION 2 - FREELIST_VERSION 0 - SYMBOLTABLE_VERSION 0 - OBJECTHEADER_VERSION 0 - OFFSET_SIZE 8 - LENGTH_SIZE 8 - BTREE_RANK 16 - BTREE_LEAF 4 - ISTORE_K 64 - FILE_SPACE_STRATEGY H5F_FILE_SPACE_ALL - FREE_SPACE_THRESHOLD 1 - USER_BLOCK { - USERBLOCK_SIZE 0 - } -} -GROUP "/" { - DATASET "DSET_CONTIGUOUS" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 10 ) / ( 10 ) } - } - DATASET "DSET_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - GROUP "GROUP" { - DATASET "DSET_BT2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_EA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 10, H5S_UNLIMITED ) } - } - DATASET "DSET_NDATA_FA" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 20, 10 ) } - } - DATASET "DSET_NDATA_NONE" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } - } - } -} -} diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext3_isf.h5 b/tools/h5format_convert/testfiles/old_h5fc_ext3_isf.h5 deleted file mode 100644 index f4caaf4..0000000 Binary files a/tools/h5format_convert/testfiles/old_h5fc_ext3_isf.h5 and /dev/null differ diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext_none.h5 b/tools/h5format_convert/testfiles/old_h5fc_ext_none.h5 deleted file mode 100644 index d0bf344..0000000 Binary files a/tools/h5format_convert/testfiles/old_h5fc_ext_none.h5 and /dev/null differ diff --git a/tools/h5format_convert/testh5fc.sh.in b/tools/h5format_convert/testh5fc.sh.in deleted file mode 100644 index 0d74697..0000000 --- a/tools/h5format_convert/testh5fc.sh.in +++ /dev/null @@ -1,505 +0,0 @@ -#! /bin/sh -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -# -# Tests for the h5format_convert tool -# -# - -srcdir=@srcdir@ - -# Determine which filters are available -USE_FILTER_SZIP="@USE_FILTER_SZIP@" -USE_FILTER_DEFLATE="@USE_FILTER_DEFLATE@" -USE_FILTER_SHUFFLE="@USE_FILTER_SHUFFLE@" -USE_FILTER_FLETCHER32="@USE_FILTER_FLETCHER32@" -USE_FILTER_NBIT="@USE_FILTER_NBIT@" -USE_FILTER_SCALEOFFSET="@USE_FILTER_SCALEOFFSET@" - -TESTNAME=h5format_convert -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -FORMCONV=h5format_convert # The tool name -FORMCONV_BIN=`pwd`/$FORMCONV # The path of the tool binary - -CHK_IDX=h5fc_chk_idx # The program name -CHK_IDX_BIN=`pwd`/$CHK_IDX # The program to verify the chunk indexing type is v1 B-tree - -RM='rm -rf' -CMP='cmp -s' -DIFF='diff -c' -CP='cp' -H5DUMP=../h5dump/h5dump # The h5dump tool name -H5DUMP_BIN=`pwd`/$H5DUMP # The path of the h5dump tool binary -DIRNAME='dirname' -LS='ls' -AWK='awk' - -nerrors=0 -verbose=yes - -# source dirs -SRC_TOOLS="$srcdir/.." -SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles" - -# testfiles source dirs for tools -SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles" -SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles" -SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles" -SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles" -SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles" -SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles" -SRC_H5FORMCONV_TESTFILES="$SRC_TOOLS/h5format_convert/testfiles" - -TESTDIR=./testfiles -test -d $TESTDIR || mkdir $TESTDIR - -# Copy the testfile to a temporary file for testing as h5format_convert is changing the file in place -TMPOUTFILE=outtmp.h5 -TMPFILE=tmp.h5 -TMPCHKFILE=chktmp.h5 -TMPDMPFILE=dmptmp.h5 - -###################################################################### -# test files -# -------------------------------------------------------------------- -# All the test files copy from source directory to test directory -# NOTE: Keep this framework to add/remove test files. -# Any test files from other tools can be used in this framework. -# This list are also used for checking exist. -# Comment '#' without space can be used. -# -------------------------------------------------------------------- -LIST_HDF5_TEST_FILES=" -$SRC_H5FORMCONV_TESTFILES/h5fc_non_v3.h5 -$SRC_H5FORMCONV_TESTFILES/h5fc_edge_v3.h5 -$SRC_H5FORMCONV_TESTFILES/h5fc_ext_none.h5 -$SRC_H5FORMCONV_TESTFILES/old_h5fc_ext_none.h5 -$SRC_H5FORMCONV_TESTFILES/h5fc_ext1_i.h5 -$SRC_H5FORMCONV_TESTFILES/h5fc_ext1_s.h5 -$SRC_H5FORMCONV_TESTFILES/h5fc_ext1_f.h5 -$SRC_H5FORMCONV_TESTFILES/h5fc_ext2_if.h5 -$SRC_H5FORMCONV_TESTFILES/h5fc_ext2_is.h5 -$SRC_H5FORMCONV_TESTFILES/h5fc_ext2_sf.h5 -$SRC_H5FORMCONV_TESTFILES/h5fc_ext3_isf.h5 -$SRC_H5FORMCONV_TESTFILES/old_h5fc_ext1_i.h5 -$SRC_H5FORMCONV_TESTFILES/old_h5fc_ext1_s.h5 -$SRC_H5FORMCONV_TESTFILES/old_h5fc_ext1_f.h5 -$SRC_H5FORMCONV_TESTFILES/old_h5fc_ext2_if.h5 -$SRC_H5FORMCONV_TESTFILES/old_h5fc_ext2_is.h5 -$SRC_H5FORMCONV_TESTFILES/old_h5fc_ext2_sf.h5 -$SRC_H5FORMCONV_TESTFILES/old_h5fc_ext3_isf.h5 -$SRC_H5FORMCONV_TESTFILES/h5fc_err_level.h5 -" - -LIST_OTHER_TEST_FILES=" -$SRC_H5FORMCONV_TESTFILES/h5fc_help.ddl -$SRC_H5FORMCONV_TESTFILES/h5fc_nooption.ddl -$SRC_H5FORMCONV_TESTFILES/h5fc_nonexistfile.ddl -$SRC_H5FORMCONV_TESTFILES/h5fc_d_file.ddl -$SRC_H5FORMCONV_TESTFILES/h5fc_dname.ddl -$SRC_H5FORMCONV_TESTFILES/h5fc_nonexistdset_file.ddl -$SRC_H5FORMCONV_TESTFILES/h5fc_v_non_chunked.ddl -$SRC_H5FORMCONV_TESTFILES/h5fc_v_bt1.ddl -$SRC_H5FORMCONV_TESTFILES/h5fc_v_ndata_bt1.ddl -$SRC_H5FORMCONV_TESTFILES/h5fc_v_all.ddl -$SRC_H5FORMCONV_TESTFILES/h5fc_v_n_1d.ddl -$SRC_H5FORMCONV_TESTFILES/h5fc_v_n_all.ddl -$SRC_H5FORMCONV_TESTFILES/h5fc_ext1_i.ddl -$SRC_H5FORMCONV_TESTFILES/h5fc_ext1_s.ddl -$SRC_H5FORMCONV_TESTFILES/h5fc_ext1_f.ddl -$SRC_H5FORMCONV_TESTFILES/h5fc_ext2_if.ddl -$SRC_H5FORMCONV_TESTFILES/h5fc_ext2_is.ddl -$SRC_H5FORMCONV_TESTFILES/h5fc_ext2_sf.ddl -$SRC_H5FORMCONV_TESTFILES/h5fc_ext3_isf.ddl -$SRC_H5FORMCONV_TESTFILES/old_h5fc_ext1_i.ddl -$SRC_H5FORMCONV_TESTFILES/old_h5fc_ext1_s.ddl -$SRC_H5FORMCONV_TESTFILES/old_h5fc_ext1_f.ddl -$SRC_H5FORMCONV_TESTFILES/old_h5fc_ext2_if.ddl -$SRC_H5FORMCONV_TESTFILES/old_h5fc_ext2_is.ddl -$SRC_H5FORMCONV_TESTFILES/old_h5fc_ext2_sf.ddl -$SRC_H5FORMCONV_TESTFILES/old_h5fc_ext3_isf.ddl -$SRC_H5FORMCONV_TESTFILES/h5fc_v_err.ddl -" - -# -# copy test files and expected output files from source dirs to test dir -# -COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES" - -COPY_TESTFILES_TO_TESTDIR() -{ - # copy test files. Used -f to make sure get a new copy - for tstfile in $COPY_TESTFILES - do - # ignore '#' comment - echo $tstfile | tr -d ' ' | grep '^#' > /dev/null - RET=$? - if [ $RET -eq 1 ]; then - # skip cp if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=`$DIRNAME $tstfile` - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $CP -f $tstfile $TESTDIR - if [ $? -ne 0 ]; then - echo "Error: FAILED to copy $tstfile ." - - # Comment out this to CREATE expected file - exit $EXIT_FAILURE - fi - fi - fi - done -} - -CLEAN_TESTFILES_AND_TESTDIR() -{ - # skip rm if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=$SRC_H5FORMCONV_TESTFILES - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $RM $TESTDIR - else - $RM $TESTDIR/$TMPFILE - fi -} - -# Print a line-line message left justified in a field of 80 characters -# beginning with the word "Testing". -# -TESTING() { - SPACES=" " - echo "Testing $* $SPACES" | cut -c1-80 | tr -d '\012' -} - -# Run a test and print PASS or *FAIL*. If a test fails then increment -# the `nerrors' global variable and (if $verbose is set) display the -# difference between the actual output and the expected output. The -# expected output is given as the first argument to this function and -# the actual output file is calculated by replacing the `.ddl' with -# `.out'. The actual output is not removed if $HDF5_NOCLEANUP has a -# non-zero value. -# -# $1: expected output -# $2: the test file name -# --fname might be empty or fname does not exist -# --fname is copied to a temporary file for testing -# $3 to at most $6--options to the tool such as: -# -d dname or --dname=dname -# -v or --verbose -# -n or --noop -TOOLTEST_OUT() { - # Prepare expected and actual output - expect="$TESTDIR/$1" - actual="$TESTDIR/`basename $1 .ddl`.out" - actual_err="$TESTDIR/`basename $1 .ddl`.err" - actual_sav=${actual}-sav - actual_err_sav=${actual_err}-sav - - # Prepare the test file - $RM $TESTDIR/$TMPOUTFILE - TFILE=$2 - if [ ! -z "$2" ] && [ -e $TESTDIR/$2 ] ; then - $CP $TESTDIR/$2 $TESTDIR/$TMPOUTFILE - TFILE=$TMPOUTFILE - fi - - # Run test. - TESTING $FORMCONV $3 $4 $5 $6 $2 - ( - cd $TESTDIR - $RUNSERIAL $FORMCONV_BIN $3 $4 $5 $6 $TFILE - ) >$actual 2>$actual_err - cp $actual $actual_sav - cp $actual_err $actual_err_sav - cat $actual_err >> $actual - - # Compare output - COMPARE_OUT $expect $actual - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - $RM $actual $actual_err - $RM $actual $actual_err $actual_sav $actual_err_sav - fi -} - -# To check that the tool exits success, no output -# Assume all short options -# $1 is the test file name -# --fname exists -# --fname is copied to a temporary file for testing -# $2 is the temporary file name -# $3 to at most $5--options to the tool such as: -# -d dname -# -n -TOOLTEST() { - TESTING $FORMCONV $3 $4 $5 $1 - $RM $TESTDIR/$2 - $CP $TESTDIR/$1 $TESTDIR/$2 - $RUNSERIAL $FORMCONV_BIN $3 $4 $5 $TESTDIR/$2 - exitcode=$? - if [ $exitcode -ne 0 ]; then - echo "*FAILED*" - echo " The tool exits failure" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - fi -} - -CHECKING() { - SPACES=" " - echo "Verifying $* $SPACES" | cut -c1-80 | tr -d '\012' -} - -# Assume $TESTDIR/$TMPFILE is the converted test file -# $1 dataset name -IDX_CHECK() { - CHECKING $1 - $RUNSERIAL $CHK_IDX_BIN $TESTDIR/$TMPCHKFILE $1 - ret=$? - if [ $ret -eq 0 ]; then - echo " PASSED" - else - echo "*FAILED*" - echo " The chunk indexing type is not correct" - nerrors="`expr $nerrors + 1`" - fi -} - -# $1 is the expected output -# $2 is the output from testing -COMPARE_OUT() { - if $CMP $1 $2; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.ddl) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi -} - -# Assume $TESTDIR/$TMPFILE is the converted test file -# $1 is the test file for verifying h5dump output -# $2 is the expected output from h5dump -H5DUMP_CHECK() { - CHECKING h5dump output for $1 - expect="$TESTDIR/$2" - actual="$TESTDIR/`basename $2 .ddl`.out" - actual_err="$TESTDIR/`basename $2 .ddl`.err" - $RUNSERIAL $H5DUMP_BIN -BH $TESTDIR/$TMPDMPFILE > $actual 2>$actual_err - cat $actual_err >> $actual - - # Compare output - COMPARE_OUT $expect $actual - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - $RM $actual $actual_err - fi -} - -# Print a "SKIP" message -SKIP() { - TESTING $STAT $@ - echo " -SKIP-" -} - - - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## -# prepare for test -COPY_TESTFILES_TO_TESTDIR -# -# -# -# h5format_convert --help -# h5format_convert (no options) -# h5format_convert nonexist.h5 (no options, file does not exist) -TOOLTEST_OUT h5fc_help.ddl '' --help -TOOLTEST_OUT h5fc_nooption.ddl '' -TOOLTEST_OUT h5fc_nonexistfile.ddl nonexist.h5 -# -# -# h5format_convert -d old_h5fc_ext_none.h5 (just -d option, file exists) -# h5format_convert --dname old_h5fc_ext_none.h5 (just --dname option, file exists) -# h5format_convert --dname (just --dname option) -# h5format_convert --dname=nonexist old_h5fc_ext_none.h5 (dataset does not exist, file exists) -TOOLTEST_OUT h5fc_d_file.ddl old_h5fc_ext_none.h5 -d -TOOLTEST_OUT h5fc_d_file.ddl old_h5fc_ext_none.h5 --dname -TOOLTEST_OUT h5fc_dname.ddl '' --dname -TOOLTEST_OUT h5fc_nonexistdset_file.ddl old_h5fc_ext_none.h5 --dname=nonexist -# -# -# -# h5format_convert -d /DSET_CONTIGUOUS -v old_h5fc_ext_none.h5 (verbose, contiguous dataset) -# h5format_convert -d /GROUP/DSET_BT2 --verbose old_h5fc_ext_none.h5 (verbose, bt1 dataset) -# h5format_convert -d /DSET_NDATA_BT2 -v -n old_h5fc_ext_none.h5 (verbose, noop, bt1+nodata dataset) -# h5format_convert -v old_h5fc_ext_none.h5 (verbose, all datasets) -TOOLTEST_OUT h5fc_v_non_chunked.ddl old_h5fc_ext_none.h5 -d /DSET_CONTIGUOUS -v -TOOLTEST_OUT h5fc_v_bt1.ddl old_h5fc_ext_none.h5 -d /GROUP/DSET_BT2 --verbose -TOOLTEST_OUT h5fc_v_ndata_bt1.ddl old_h5fc_ext_none.h5 -d /DSET_NDATA_BT2 -v -n -TOOLTEST_OUT h5fc_v_all.ddl old_h5fc_ext_none.h5 -v -# -# -# -# h5format_convert -d /DSET_EA -v -n h5fc_ext_none.h5 (verbose, noop, one ea dataset) -# h5format_convert -v -n h5fc_non_v3.h5 (verbose, noop, all datasets) -TOOLTEST_OUT h5fc_v_n_1d.ddl h5fc_ext_none.h5 -d /DSET_EA -v -n -TOOLTEST_OUT h5fc_v_n_all.ddl h5fc_non_v3.h5 -v -n -# -# -# -# h5format_convert -v h5fc_err_level.h5 (error encountered in converting the dataset) -TOOLTEST_OUT h5fc_v_err.ddl h5fc_err_level.h5 -v -# -# -# -# No output from tests -# 1) Use the tool to convert the dataset -# 2) Verify the chunk indexing type is correct -# h5format_convert -d /DSET_EA h5fc_ext_none.h5 -# h5format_convert -d /GROUP/DSET_NDATA_EA h5fc_ext_none.h5 -# h5format_convert -d /GROUP/DSET_BT2 h5fc_ext_none.h5 -# h5format_convert -d /DSET_NDATA_BT2 h5fc_ext_none.h5 -# h5format_convert -d /DSET_FA h5fc_ext_none.h5 -# h5format_convert -d /GROUP/DSET_FA h5fc_ext_none.h5 -# h5format_convert -d /DSET_NONE h5fc_ext_none.h5 -# h5format_convert -d /GROUP/DSET_NDATA_NONE h5fc_ext_none.h5 -TOOLTEST h5fc_ext_none.h5 $TMPCHKFILE -d /DSET_EA -IDX_CHECK /DSET_EA -# -TOOLTEST h5fc_ext_none.h5 $TMPCHKFILE -d /GROUP/DSET_NDATA_EA -IDX_CHECK /GROUP/DSET_NDATA_EA -# -TOOLTEST h5fc_ext_none.h5 $TMPCHKFILE -d /GROUP/DSET_BT2 -IDX_CHECK /GROUP/DSET_BT2 -# -TOOLTEST h5fc_ext_none.h5 $TMPCHKFILE -d /DSET_NDATA_BT2 -IDX_CHECK /DSET_NDATA_BT2 -# -TOOLTEST h5fc_ext_none.h5 $TMPCHKFILE -d /DSET_FA -IDX_CHECK /DSET_FA -# -TOOLTEST h5fc_ext_none.h5 $TMPCHKFILE -d /GROUP/DSET_NDATA_FA -IDX_CHECK /GROUP/DSET_NDATA_FA -# -TOOLTEST h5fc_ext_none.h5 $TMPCHKFILE -d /DSET_NONE -IDX_CHECK /DSET_NONE -# -TOOLTEST h5fc_ext_none.h5 $TMPCHKFILE -d /GROUP/DSET_NDATA_NONE -IDX_CHECK /GROUP/DSET_NDATA_NONE -# -# -# -# No output from tests: just check exit code -# h5format_convert -d /DSET_NDATA_BT2 old_h5fc_ext_none.h5 (v1-btree dataset) -# h5format_convert -d /DSET_CONTIGUOUS h5fc_non_v3.h5 (non-chunked dataset) -TOOLTEST old_h5fc_ext_none.h5 $TMPFILE -d /DSET_NDATA_BT2 -TOOLTEST h5fc_non_v3.h5 $TMPFILE -d /DSET_CONTIGUOUS -# -# -# -# No output from tests: just check exit code -# h5format_convert -d /GROUP/DSET_BT2 -n h5fc_non_v3.h5 (noop, one dataset) -# h5format_convert -n h5fc_non_v3.h5 (noop, all datasets) -TOOLTEST h5fc_non_v3.h5 $TMPFILE -d /GROUP/DSET_BT2 -n -TOOLTEST h5fc_non_v3.h5 $TMPFILE -n -# -# -# -# No output from tests: just check exit code -# h5format_convert h5fc_non_v3.h5 -# 1) convert all datasets -# 2) verify indexing types -TOOLTEST h5fc_non_v3.h5 $TMPCHKFILE -IDX_CHECK /DSET_NDATA_EA -IDX_CHECK /DSET_NDATA_BT2 -IDX_CHECK /GROUP/DSET_BT2 -IDX_CHECK /GROUP/DSET_EA -# -# -# -# No output from test: just check exit code -# h5format_convert h5fc_edge_v3.h5 -# 1) convert the chunked dataset (filter, no-filter-edge-chunk) -# 2) verify the indexing type -TOOLTEST h5fc_edge_v3.h5 $TMPCHKFILE -IDX_CHECK /DSET_EDGE -# -# - -# The following test files have messages in the superblock extension. -# Verify h5dump output for correctness after conversion -TOOLTEST h5fc_ext1_i.h5 $TMPDMPFILE -H5DUMP_CHECK h5fc_ext1_i.h5 h5fc_ext1_i.ddl -TOOLTEST h5fc_ext1_s.h5 $TMPDMPFILE -H5DUMP_CHECK h5fc_ext1_s.h5 h5fc_ext1_s.ddl -TOOLTEST h5fc_ext1_f.h5 $TMPDMPFILE -H5DUMP_CHECK h5fc_ext1_f.h5 h5fc_ext1_f.ddl -# -TOOLTEST h5fc_ext2_if.h5 $TMPDMPFILE -H5DUMP_CHECK h5fc_ext2_if.h5 h5fc_ext2_if.ddl -TOOLTEST h5fc_ext2_is.h5 $TMPDMPFILE -H5DUMP_CHECK h5fc_ext2_is.h5 h5fc_ext2_is.ddl -TOOLTEST h5fc_ext2_sf.h5 $TMPDMPFILE -H5DUMP_CHECK h5fc_ext2_sf.h5 h5fc_ext2_sf.ddl -# -TOOLTEST h5fc_ext3_isf.h5 $TMPDMPFILE -H5DUMP_CHECK h5fc_ext3_isf.h5 h5fc_ext3_isf.ddl -# -# -# -TOOLTEST old_h5fc_ext1_i.h5 $TMPDMPFILE -H5DUMP_CHECK old_h5fc_ext1_i.h5 old_h5fc_ext1_i.ddl -TOOLTEST old_h5fc_ext1_s.h5 $TMPDMPFILE -H5DUMP_CHECK old_h5fc_ext1_s.h5 old_h5fc_ext1_s.ddl -TOOLTEST old_h5fc_ext1_f.h5 $TMPDMPFILE -H5DUMP_CHECK old_h5fc_ext1_f.h5 old_h5fc_ext1_f.ddl -# -TOOLTEST old_h5fc_ext2_if.h5 $TMPDMPFILE -H5DUMP_CHECK old_h5fc_ext2_if.h5 old_h5fc_ext2_if.ddl -TOOLTEST old_h5fc_ext2_is.h5 $TMPDMPFILE -H5DUMP_CHECK old_h5fc_ext2_is.h5 old_h5fc_ext2_is.ddl -TOOLTEST old_h5fc_ext2_sf.h5 $TMPDMPFILE -H5DUMP_CHECK old_h5fc_ext2_sf.h5 old_h5fc_ext2_sf.ddl -# -TOOLTEST old_h5fc_ext3_isf.h5 $TMPDMPFILE -H5DUMP_CHECK old_h5fc_ext3_isf.h5 old_h5fc_ext3_isf.ddl -# -# Clean up temporary files/directories -CLEAN_TESTFILES_AND_TESTDIR - -if test $nerrors -eq 0 ; then - echo "All $TESTNAME tests passed." - exit $EXIT_SUCCESS -else - echo "$TESTNAME tests failed with $nerrors errors." - exit $EXIT_FAILURE -fi - diff --git a/tools/h5import/CMakeLists.txt b/tools/h5import/CMakeLists.txt deleted file mode 100644 index 15c8d94..0000000 --- a/tools/h5import/CMakeLists.txt +++ /dev/null @@ -1,54 +0,0 @@ -cmake_minimum_required (VERSION 3.1.0) -PROJECT (HDF5_TOOLS_H5IMPORT) - -#----------------------------------------------------------------------------- -# Setup include Directories -#----------------------------------------------------------------------------- -INCLUDE_DIRECTORIES (${HDF5_TOOLS_DIR}/lib) - -# -------------------------------------------------------------------- -# Add the h5import executables -# -------------------------------------------------------------------- -add_executable (h5import ${HDF5_TOOLS_H5IMPORT_SOURCE_DIR}/h5import.c) -TARGET_NAMING (h5import STATIC) -TARGET_C_PROPERTIES (h5import STATIC " " " ") -target_link_libraries (h5import ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) -#set_target_properties (h5import PROPERTIES COMPILE_DEFINITIONS H5DEBUGIMPORT) -set_target_properties (h5import PROPERTIES FOLDER tools) -set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5import") - -set (H5_DEP_EXECUTABLES h5import) - -if (BUILD_TESTING) - # -------------------------------------------------------------------- - # Add the h5import executables - # -------------------------------------------------------------------- - add_executable (h5importtest ${HDF5_TOOLS_H5IMPORT_SOURCE_DIR}/h5importtest.c) - TARGET_NAMING (h5importtest STATIC) - TARGET_C_PROPERTIES (h5importtest STATIC " " " ") - target_link_libraries (h5importtest ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) - set_target_properties (h5importtest PROPERTIES FOLDER tools) - - include (CMakeTests.cmake) - -endif (BUILD_TESTING) - -############################################################################## -############################################################################## -### I N S T A L L A T I O N ### -############################################################################## -############################################################################## - -#----------------------------------------------------------------------------- -# Rules for Installation of tools using make Install target -#----------------------------------------------------------------------------- - -#INSTALL_PROGRAM_PDB (h5import ${HDF5_INSTALL_BIN_DIR} toolsapplications) - -install ( - TARGETS - h5import - EXPORT - ${HDF5_EXPORTED_TARGETS} - RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications -) diff --git a/tools/h5import/CMakeTests.cmake b/tools/h5import/CMakeTests.cmake deleted file mode 100644 index 0fdf9dd..0000000 --- a/tools/h5import/CMakeTests.cmake +++ /dev/null @@ -1,465 +0,0 @@ - -############################################################################## -############################################################################## -### T E S T I N G ### -############################################################################## -############################################################################## - - set (HDF5_REFERENCE_CONF_FILES - binfp64.conf - binin8.conf - binin8w.conf - binin16.conf - binin32.conf - binuin16.conf - binuin32.conf - txtfp32.conf - txtfp64.conf - txtin8.conf - txtin16.conf - txtin32.conf - txtuin16.conf - txtuin32.conf - textpfe.conf - txtstr.conf - ) - set (HDF5_REFERENCE_TXT_FILES - txtfp32.txt - txtfp64.txt - txtuin16.txt - txtuin32.txt - txtin8.txt - txtin16.txt - txtin32.txt - textpfe64.txt - txtstr.txt - dbinfp64.h5.txt - dbinin8.h5.txt - dbinin8w.h5.txt - dbinin16.h5.txt - dbinin32.h5.txt - dbinuin16.h5.txt - dbinuin32.h5.txt - dtxtstr.h5.txt - ) - set (HDF5_REFERENCE_TEST_FILES - binfp64.h5 - binin8.h5 - binin8w.h5 - binin16.h5 - binin32.h5 - binuin16.h5 - binuin32.h5 - txtfp32.h5 - txtfp64.h5 - txtin8.h5 - txtin16.h5 - txtin32.h5 - txtuin16.h5 - txtuin32.h5 - txtstr.h5 - textpfe.h5 - ) - - file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - foreach (conf_file ${HDF5_REFERENCE_CONF_FILES}) - HDFTEST_COPY_FILE("${HDF5_TOOLS_H5IMPORT_SOURCE_DIR}/testfiles/${conf_file}" "${PROJECT_BINARY_DIR}/testfiles/${conf_file}" "h5import_files") - endforeach (conf_file ${HDF5_REFERENCE_CONF_FILES}) - - foreach (txt_file ${HDF5_REFERENCE_TXT_FILES}) - HDFTEST_COPY_FILE("${HDF5_TOOLS_H5IMPORT_SOURCE_DIR}/testfiles/${txt_file}" "${PROJECT_BINARY_DIR}/testfiles/${txt_file}" "h5import_files") - endforeach (txt_file ${HDF5_REFERENCE_TXT_FILES}) - - foreach (h5_file ${HDF5_REFERENCE_TEST_FILES}) - HDFTEST_COPY_FILE("${HDF5_TOOLS_H5IMPORT_SOURCE_DIR}/testfiles/${h5_file}" "${PROJECT_BINARY_DIR}/testfiles/${h5_file}" "h5import_files") - endforeach (h5_file ${HDF5_REFERENCE_TEST_FILES}) - add_custom_target(h5import_files ALL COMMENT "Copying files needed by h5import tests" DEPENDS ${h5import_files_list}) - -############################################################################## -############################################################################## -### T H E T E S T S M A C R O S ### -############################################################################## -############################################################################## - MACRO (ADD_H5_TEST testname importfile conffile testfile) - # If using memchecker skip macro based tests - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME H5IMPORT-${testname} COMMAND $ ${importfile} -c ${conffile} -o ${testfile}) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5IMPORT-${testname} PROPERTIES DEPENDS H5IMPORT-h5importtest) - endif () - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5IMPORT-${testname}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove - ${testfile} - ) - set_tests_properties (H5IMPORT-${testname}-clear-objects PROPERTIES DEPENDS H5IMPORT-h5importtest) - - add_test (NAME H5IMPORT-${testname} COMMAND $ ${importfile} -c ${conffile} -o ${testfile}) - set_tests_properties (H5IMPORT-${testname} PROPERTIES DEPENDS H5IMPORT-${testname}-clear-objects) - - add_test ( - NAME H5IMPORT-${testname}-H5DMP - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=${testfile}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -D "TEST_OUTPUT=${testfile}.new" - -D "TEST_EXPECT=0" - -D "TEST_FILTER=(^(HDF5)[^\n]*)" - -D "TEST_SKIP_COMPARE=TRUE" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5IMPORT-${testname}-H5DMP PROPERTIES DEPENDS H5IMPORT-${testname}) - add_test ( - NAME H5IMPORT-${testname}-H5DMP_CMP - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=testfiles/${testfile}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -D "TEST_OUTPUT=${testfile}.out" - -D "TEST_EXPECT=0" - -D "TEST_FILTER=(^(HDF5)[^\n]*)" - -D "TEST_REFERENCE=${testfile}.new" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5IMPORT-${testname}-H5DMP_CMP PROPERTIES DEPENDS H5IMPORT-${testname}-H5DMP) - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_TEST testname importfile conffile testfile) - - MACRO (ADD_H5_DUMPTEST testname datasetname testfile) - # If using memchecker skip tests - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5IMPORT-DUMP-${testname}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove - d${testfile} - d${testfile}.bin - ) - set_tests_properties (H5IMPORT-DUMP-${testname}-clear-objects PROPERTIES DEPENDS H5IMPORT-h5importtest) - - if ("${ARGN}" STREQUAL "BINARY") - add_test ( - NAME H5IMPORT-DUMP-${testname}-H5DMP - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=-p;-d;${datasetname};-o;d${testfile}.bin;-b;testfiles/${testfile}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -D "TEST_OUTPUT=d${testfile}.dmp" - -D "TEST_EXPECT=0" - -D "TEST_SKIP_COMPARE=TRUE" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - else ("${ARGN}" STREQUAL "BINARY") - add_test ( - NAME H5IMPORT-DUMP-${testname}-H5DMP - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=-p;-d;${datasetname};-o;d${testfile}.bin;-y;--width=1;testfiles/${testfile}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -D "TEST_OUTPUT=d${testfile}.dmp" - -D "TEST_EXPECT=0" - -D "TEST_SKIP_COMPARE=TRUE" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - endif ("${ARGN}" STREQUAL "BINARY") - set_tests_properties (H5IMPORT-DUMP-${testname}-H5DMP PROPERTIES DEPENDS "H5IMPORT-DUMP-${testname}-clear-objects") - - add_test ( - NAME H5IMPORT-DUMP-${testname} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=d${testfile}.bin;-c;d${testfile}.dmp;-o;d${testfile}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -D "TEST_OUTPUT=d${testfile}.imp" - -D "TEST_EXPECT=0" - -D "TEST_SKIP_COMPARE=TRUE" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5IMPORT-DUMP-${testname} PROPERTIES DEPENDS "H5IMPORT-DUMP-${testname}-H5DMP") - - add_test ( - NAME H5IMPORT-DUMP-${testname}-H5DFF - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=-r;d${testfile};testfiles/${testfile};${datasetname};${datasetname}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -D "TEST_OUTPUT=d${testfile}.dff" - -D "TEST_EXPECT=0" - -D "TEST_FILTER=(^(Warning)[^\n]*)" - -D "TEST_REFERENCE=testfiles/d${testfile}.txt" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5IMPORT-DUMP-${testname}-H5DFF PROPERTIES DEPENDS "H5IMPORT-DUMP-${testname}") - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_DUMPTEST testname datasetname testfile) - - MACRO (ADD_H5_SKIP_DUMPTEST testname datasetname testfile) - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5IMPORT-DUMP-${testname}-SKIPPED - COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${testname} ${datasetname} ${testfile} --- DEFLATE filter not available" - ) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_SKIP_DUMPTEST testname datasetname testfile) - - # -------------------------------------------------------------------- - # Determine if filter is available for h5diff - # -------------------------------------------------------------------- - if (H5_HAVE_FILTER_DEFLATE) - set (USE_FILTER_DEFLATE "true") - endif (H5_HAVE_FILTER_DEFLATE) - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## - - if (HDF5_ENABLE_USING_MEMCHECKER) - # Remove any output file left over from previous test run - add_test ( - NAME H5IMPORT-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove - binfp64.bin - binin8.bin - binin8w.bin - binin16.bin - binin32.bin - binuin16.bin - binuin32.bin - txtin32.h5 - txtin32.h5.new - txtin32.h5.new.err - txtin32.h5.out - txtin32.h5.out.err - txtin16.h5 - txtin16.h5.new - txtin16.h5.new.err - txtin16.h5.out - txtin16.h5.out.err - txtin8.h5 - txtin8.h5.new - txtin8.h5.new.err - txtin8.h5.out - txtin8.h5.out.err - txtuin16.h5 - txtuin16.h5.new - txtuin16.h5.new.err - txtuin16.h5.out - txtuin16.h5.out.err - txtuin32.h5 - txtuin32.h5.new - txtuin32.h5.new.err - txtuin32.h5.out - txtuin32.h5.out.err - txtfp32.h5 - txtfp32.h5.new - txtfp32.h5.new.err - txtfp32.h5.out - txtfp32.h5.out.err - txtfp64.h5 - txtfp64.h5.new - txtfp64.h5.new.err - txtfp64.h5.out - txtfp64.h5.out.err - binfp64.h5 - binfp64.h5.new - binfp64.h5.new.err - binfp64.h5.out - binfp64.h5.out.err - binin8.h5 - binin8.h5.new - binin8.h5.new.err - binin8.h5.out - binin8.h5.out.err - binin8w.h5 - binin8w.h5.new - binin8w.h5.new.err - binin8w.h5.out - binin8w.h5.out.err - binin16.h5 - binin16.h5.new - binin16.h5.new.err - binin16.h5.out - binin16.h5.out.err - binin32.h5 - binin32.h5.new - binin32.h5.new.err - binin32.h5.out - binin32.h5.out.err - binuin16.h5 - binuin16.h5.new - binuin16.h5.new.err - binuin16.h5.out - binuin16.h5.out.err - binuin32.h5 - binuin32.h5.new - binuin32.h5.new.err - binuin32.h5.out - binuin32.h5.out.err - txtstr.h5 - txtstr.h5.new - txtstr.h5.new.err - txtstr.h5.out - txtstr.h5.out.err - textpfe.h5 - textpfe.h5.new - textpfe.h5.new.err - textpfe.h5.out - textpfe.h5.out.err - dbinfp64.h5 - dbinfp64.h5.bin - dbinfp64.h5.imp - dbinfp64.h5.imp.err - dbinfp64.h5.dmp - dbinfp64.h5.dmp.err - dbinfp64.h5.dff - dbinfp64.h5.dff.err - dbinin8.h5 - dbinin8.h5.bin - dbinin8.h5.imp - dbinin8.h5.imp.err - dbinin8.h5.dmp - dbinin8.h5.dmp.err - dbinin8.h5.dff - dbinin8.h5.dff.err - dbinin8w.h5 - dbinin8w.h5.bin - dbinin8w.h5.imp - dbinin8w.h5.imp.err - dbinin8w.h5.dmp - dbinin8w.h5.dmp.err - dbinin8w.h5.dff - dbinin8w.h5.dff.err - dbinin16.h5 - dbinin16.h5.bin - dbinin16.h5.imp - dbinin16.h5.imp.err - dbinin16.h5.dmp - dbinin16.h5.dmp.err - dbinin16.h5.dff - dbinin16.h5.dff.err - dbinin32.h5 - dbinin32.h5.bin - dbinin32.h5.imp - dbinin32.h5.imp.err - dbinin32.h5.dmp - dbinin32.h5.dmp.err - dbinin32.h5.dff - dbinin32.h5.dff.err - dbinuin16.h5 - dbinuin16.h5.bin - dbinuin16.h5.imp - dbinuin16.h5.imp.err - dbinuin16.h5.dmp - dbinuin16.h5.dmp.err - dbinuin16.h5.dff - dbinuin16.h5.dff.err - dbinuin32.h5 - dbinuin32.h5.bin - dbinuin32.h5.imp - dbinuin32.h5.imp.err - dbinuin32.h5.dmp - dbinuin32.h5.dmp.err - dbinuin32.h5.dff - dbinuin32.h5.dff.err - dtxtstr.h5 - dtxtstr.h5.bin - dtxtstr.h5.imp - dtxtstr.h5.imp.err - dtxtstr.h5.dmp - dtxtstr.h5.dmp.err - dtxtstr.h5.dff - dtxtstr.h5.dff.err - ) - set (last_test "H5IMPORT-clear-objects") - endif (HDF5_ENABLE_USING_MEMCHECKER) - - add_test ( - NAME H5IMPORT-h5importtest-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove - binfp64.bin - binin8.bin - binin8w.bin - binin16.bin - binin32.bin - binuin16.bin - binuin32.bin - ) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5IMPORT-h5importtest-clear-objects PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - set (last_test "H5IMPORT-clear-objects") - - add_test (NAME H5IMPORT-h5importtest COMMAND $) - set_tests_properties (H5IMPORT-h5importtest PROPERTIES DEPENDS H5IMPORT-h5importtest-clear-objects) - - # ----- TESTING "ASCII I32 rank 3 - Output BE " ; - ADD_H5_TEST (ASCII_I32 testfiles/txtin32.txt testfiles/txtin32.conf txtin32.h5) - - # ----- TESTING "ASCII I16 rank 3 - Output LE - CHUNKED - extended" - ADD_H5_TEST (ASCII_I16 testfiles/txtin16.txt testfiles/txtin16.conf txtin16.h5) - - # ----- TESTING "ASCII I8 - rank 3 - Output I8 LE-Chunked+Extended+Compressed " - ADD_H5_TEST (ASCII_I8 testfiles/txtin8.txt testfiles/txtin8.conf txtin8.h5) - - # ----- TESTING "ASCII UI16 - rank 2 - Output LE+Chunked+Compressed " - ADD_H5_TEST (ASCII_UI16 testfiles/txtuin16.txt testfiles/txtuin16.conf txtuin16.h5) - - # ----- TESTING "ASCII UI32 - rank 3 - Output BE" - ADD_H5_TEST (ASCII_UI32 testfiles/txtuin32.txt testfiles/txtuin32.conf txtuin32.h5) - - # ----- TESTING "ASCII F32 - rank 3 - Output LE " - ADD_H5_TEST (ASCII_F32 testfiles/txtfp32.txt testfiles/txtfp32.conf txtfp32.h5) - - # ----- TESTING "ASCII F64 - rank 3 - Output BE + CHUNKED+Extended+Compressed " - ADD_H5_TEST (ASCII_F64 testfiles/txtfp64.txt testfiles/txtfp64.conf txtfp64.h5) - - # ----- TESTING "BINARY F64 - rank 3 - Output LE+CHUNKED+Extended+Compressed " - ADD_H5_TEST (BINARY_F64 binfp64.bin testfiles/binfp64.conf binfp64.h5) - if (NOT USE_FILTER_DEFLATE) - ADD_H5_SKIP_DUMPTEST (BINARY_F64 "/fp/bin/64-bit" binfp64.h5 BINARY) - else (NOT USE_FILTER_DEFLATE) - ADD_H5_DUMPTEST (BINARY_F64 "/fp/bin/64-bit" binfp64.h5 BINARY) - endif (NOT USE_FILTER_DEFLATE) - - # ----- TESTING "BINARY I8 - rank 3 - Output I16LE + Chunked+Extended+Compressed " - ADD_H5_TEST (BINARY_I8 binin8.bin testfiles/binin8.conf binin8.h5) - if (NOT USE_FILTER_DEFLATE) - ADD_H5_SKIP_DUMPTEST (BINARY_I8 "/int/bin/8-bit" binin8.h5 BINARY) - else (NOT USE_FILTER_DEFLATE) - ADD_H5_DUMPTEST (BINARY_I8 "/int/bin/8-bit" binin8.h5 BINARY) - endif (NOT USE_FILTER_DEFLATE) - - # ----- TESTING "BINARY I16 - rank 3 - Output order LE + CHUNKED + extended " - ADD_H5_TEST (BINARY_I16 binin16.bin testfiles/binin16.conf binin16.h5) - ADD_H5_DUMPTEST (BINARY_I16 "/int/bin/16-bit" binin16.h5 BINARY) - - # ----- TESTING "BINARY I32 - rank 3 - Output BE + CHUNKED " - ADD_H5_TEST (BINARY_I32 binin32.bin testfiles/binin32.conf binin32.h5) - ADD_H5_DUMPTEST (BINARY_I32 "/int/bin/32-bit" binin32.h5 BINARY) - - # ----- TESTING "BINARY UI16 - rank 3 - Output byte BE + CHUNKED " - ADD_H5_TEST (BINARY_UI16 binuin16.bin testfiles/binuin16.conf binuin16.h5) - ADD_H5_DUMPTEST (BINARY_UI16 "/int/buin/16-bit" binuin16.h5 BINARY) - - # ----- TESTING "BINARY UI32 - rank 3 - Output LE " - ADD_H5_TEST (BINARY_UI32 binuin32.bin testfiles/binuin32.conf binuin32.h5) - ADD_H5_DUMPTEST (BINARY_UI32 "/int/buin/32-bit" binuin32.h5 BINARY) - - # ----- TESTING "STR" - ADD_H5_TEST (STR testfiles/txtstr.txt testfiles/txtstr.conf txtstr.h5) - ADD_H5_DUMPTEST (STR "/mytext/data" txtstr.h5) - - # ----- TESTING "BINARY I8 CR LF EOF" - ADD_H5_TEST (BINARY_I8_EOF binin8w.bin testfiles/binin8w.conf binin8w.h5) - ADD_H5_DUMPTEST (BINARY_I8_EOF "/dataset0" binin8w.h5 BINARY) - - # ----- TESTING "ASCII F64 - rank 1 - INPUT-CLASS TEXTFPE " - ADD_H5_TEST (ASCII_F64_R1 testfiles/textpfe64.txt testfiles/textpfe.conf textpfe.h5) - diff --git a/tools/h5import/Makefile.am b/tools/h5import/Makefile.am deleted file mode 100644 index af60478..0000000 --- a/tools/h5import/Makefile.am +++ /dev/null @@ -1,46 +0,0 @@ -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -## -## Makefile.am -## Run automake to generate a Makefile.in from this file. -# -# HDF5 Library Makefile(.in) -# - -include $(top_srcdir)/config/commence.am - -# Include src and tools/lib directories -AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib - -# Test programs and scripts -TEST_PROG=h5importtest -TEST_SCRIPT=h5importtestutil.sh - -check_PROGRAMS=$(TEST_PROG) -check_SCRIPT=h5importtestutil.sh -SCRIPT_DEPEND=h5import$(EXEEXT) - -# Our main targets -bin_PROGRAMS=h5import - -# Add h5import specific linker flags here -h5import_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) - -# All programs depend on the main hdf5 library and the tools library -LDADD=$(LIBH5TOOLS) $(LIBHDF5) - -# Temporary files from h5importtest -CHECK_CLEANFILES+=*.bin - -include $(top_srcdir)/config/conclude.am diff --git a/tools/h5import/h5import.c b/tools/h5import/h5import.c deleted file mode 100644 index d1aab0c..0000000 --- a/tools/h5import/h5import.c +++ /dev/null @@ -1,4393 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include "hdf5.h" -#include "H5private.h" -#include -#include -#include -#include -#include "h5import.h" -#include "h5tools.h" -#include "h5tools_utils.h" - -/* Name of tool */ -#define PROGRAMNAME "h5import" - -#ifdef H5_HAVE_WIN32_API -#define READ_OPEN_FLAGS "rb" -#else -#define READ_OPEN_FLAGS "r" -#endif - -/* Local function declarations */ -static int gtoken(char *s); -static int process(struct Options *opt); -static int processConfigurationFile(char *infile, struct Input *in); -static int mapKeywordToIndex(char *key); -static int parsePathInfo(struct path_info *path, char *strm); -static int parseDimensions(struct Input *in, char *strm); -static int getInputSize(struct Input *in, int ival); -static int getInputClass(struct Input *in, char * strm); -static int getInputClassType(struct Input *in, char * strm); -static int InputClassStrToInt(char *temp); -static int getRank(struct Input *in, FILE *strm); -static int getDimensionSizes(struct Input *in, FILE *strm); -static int getOutputSize(struct Input *in, FILE *strm); -static int getOutputClass(struct Input *in, FILE *strm); -static int OutputClassStrToInt(char *temp); -static int getOutputArchitecture(struct Input *in, FILE *strm); -static int OutputArchStrToInt(const char *temp); -static int getOutputByteOrder(struct Input *in, FILE *strm); -static int OutputByteOrderStrToInt(const char *temp); -static int getChunkedDimensionSizes(struct Input *in, FILE *strm); -static int getCompressionType(struct Input *in, FILE *strm); -static int CompressionTypeStrToInt(char *temp); -static int getCompressionParameter(struct Input *in, FILE *strm); -static int getExternalFilename(struct Input *in, FILE *strm); -static int getMaximumDimensionSizes(struct Input *in, FILE *strm); -static int processDataFile(char *infile, struct Input *in, hid_t file_id); -static int readIntegerData(FILE *strm, struct Input *in); -static int readFloatData(FILE *strm, struct Input *in); -static int allocateIntegerStorage(struct Input *in); -static int allocateFloatStorage(struct Input *in); -static int readUIntegerData(FILE *strm, struct Input *in); -static int allocateUIntegerStorage(struct Input *in); -static int validateConfigurationParameters(struct Input *in); -static int processStrData(FILE *strm, struct Input *in, hid_t file_id); -static int processStrHDFData(FILE *strm, struct Input *in, hid_t file_id); - -int main(int argc, char *argv[]) -{ - struct Options opt; - int outfile_named = FALSE; - int token; - int i; - int state = 0; - struct Input *in = NULL; - - const char *err1 = "Invalid number of arguments: %d.\n"; - const char *err2 = "Error in state table.\n"; - const char *err3 = "No output file given.\n"; - const char *err4 = "Program aborted.\n"; - const char *err5 = "Invalid path %s.\n"; - const char *err6 = "Invalid dimensions - %s.\n"; - const char *err7 = "Invalid type of data - %s.\n"; - const char *err8 = "Invalid size of data - %s.\n"; - const char *err9 = "Cannot specify more than 30 input files in one call to h5import.\n"; - - h5tools_setprogname(PROGRAMNAME); - h5tools_setstatus(EXIT_SUCCESS); - - /* Initialize h5tools lib */ - h5tools_init(); - - (void) HDsetvbuf(stderr, (char *) NULL, _IOLBF, 0); - (void) HDsetvbuf(stdout, (char *) NULL, _IOLBF, 0); - - if (argv[1] && (HDstrcmp("-V", argv[1]) == 0)) { - print_version(PROGRAMNAME); - HDexit(EXIT_SUCCESS); - } - - /* - * validate the number of command line arguments - */ - if (argc < 2) { - (void) HDfprintf(stderr, err1, argc); - usage(argv[0]); - goto err; - } - - /* Initialize the file structure to 0 */ - HDmemset(&opt, 0, sizeof(struct Options)); - - /* - * parse the command line - */ - for (i = 1; i < argc; i++) { - if ((token = gtoken(argv[i])) == ERR) { - usage(argv[0]); - goto err; - } - - state = state_table[state][token]; - - switch (state) { - - case 1: /* counting input files */ - if (opt.fcount < 29) { - (void) HDstrcpy(opt.infiles[opt.fcount].datafile, argv[i]); - in = &(opt.infiles[opt.fcount].in); - opt.infiles[opt.fcount].config = 0; - setDefaultValues(in, opt.fcount); - opt.fcount++; - } - else { - (void) HDfprintf(stderr, err9, argv[i]); - goto err; - } - - break; - - case 2: /* -c found; look for configfile */ - break; - - case 3: /* get configfile name */ - (void) HDstrcpy(opt.infiles[opt.fcount-1].configfile, argv[i]); - opt.infiles[opt.fcount - 1].config = 1; - break; - - case 4: /* -o found; look for outfile */ - break; - - case 5: /* get outfile found */ - (void) HDstrcpy(opt.outfile, argv[i]); - outfile_named = TRUE; - break; - - case 6: /* -h found; help, then exit */ - help(argv[0]); - HDexit(EXIT_SUCCESS); - break; - - case 7: /* -d found; look for dimensions */ - break; - - case 8: /* read dimensions */ - if (parseDimensions(in, argv[i]) == -1) { - (void) HDfprintf(stderr, err6, argv[i]); - goto err; - } - break; - - case 9: /* -p found; look for path name */ - break; - - case 10: /* read path name */ - if (parsePathInfo(&in->path, argv[i]) == -1) { - (void) HDfprintf(stderr, err5, argv[i]); - goto err; - } - break; - - case 11: /* -t found; look for data type */ - break; - - case 12: /* read data type */ - if (getInputClass(in, argv[i]) == -1) { - (void) HDfprintf(stderr, err7, argv[i]); - goto err; - } - - if (in->inputClass == 0 || in->inputClass == 4) - in->outputClass = 0; - if (in->inputClass == 1 || in->inputClass == 2 || in->inputClass == 3) - in->outputClass = 1; - if (in->inputClass == 6 || in->inputClass == 7) - in->outputClass = 2; - break; - - case 13: /* -s found; look for data size */ - break; - - case 14: /* read data size */ - if (getInputSize(in, (int) HDstrtol(argv[i], NULL, BASE_10)) == -1) { - (void) HDfprintf(stderr, err8, argv[i]); - goto err; - } - /*set default value for output-size */ - in->outputSize = in->inputSize; - break; - - case ERR: /* command syntax error */ - default: - (void) HDfprintf(stderr, "%s", err2); - usage(argv[0]); - goto err; - } - } - - if (FALSE == outfile_named) { - (void) HDfprintf(stderr, "%s", err3); - usage(argv[0]); - goto err; - } - - if (process(&opt) == -1) - goto err; - - for (i = 0; i < opt.fcount; i++) { - in = &(opt.infiles[i].in); - if (in->sizeOfDimension) - HDfree(in->sizeOfDimension); - if (in->sizeOfChunk) - HDfree(in->sizeOfChunk); - if (in->maxsizeOfDimension) - HDfree(in->maxsizeOfDimension); - if (in->externFilename) - HDfree(in->externFilename); - if (in->data) - HDfree(in->data); - } - - return (EXIT_SUCCESS); -err: - (void) HDfprintf(stderr, "%s", err4); - for (i = 0; i < opt.fcount; i++) { - in = &(opt.infiles[i].in); - if (in->sizeOfDimension) - HDfree(in->sizeOfDimension); - if (in->sizeOfChunk) - HDfree(in->sizeOfChunk); - if (in->maxsizeOfDimension) - HDfree(in->maxsizeOfDimension); - if (in->externFilename) - HDfree(in->externFilename); - if (in->data) - HDfree(in->data); - } - return (EXIT_FAILURE); -} - -static int gtoken(char *s) -{ - size_t len; - int token = ERR; - - const char *err1 = "Illegal argument: %s.\n"; - - /* - * identify the token type - */ - if (s[0] == '-') { /* option name (or negative number) */ - len = HDstrlen(&s[1]); - switch (s[1]) { - case 'o': - if (!HDstrncmp("outfile", &s[1], len)) - token = OPT_o; - break; - - case 'c': - if (!HDstrncmp("config", &s[1], len)) - token = OPT_c; - break; - - case 'h': - if (!HDstrncmp("help", &s[1], len)) - token = OPT_h; - break; - - case 'd': - if (!HDstrncmp("dims", &s[1], len)) - token = OPT_d; - break; - - case 'p': - if (!HDstrncmp("path", &s[1], len)) - token = OPT_p; - break; - - case 't': - if (!HDstrncmp("type", &s[1], len)) - token = OPT_t; - break; - - case 's': - if (!HDstrncmp("size", &s[1], len)) - token = OPT_s; - break; - default: - token = ERR; /* not a supported option tag */ - break; - } - - if (token == ERR) - (void) HDfprintf(stderr, err1, s); - } - else { /* filename */ - token = FILNAME; - } - return (token); -} - -/*------------------------------------------------------------------------- - * Function: processDataFile - * - * Purpose: allocate memory and read data file - * - * Return: 0, success, -1, error - * - * Programmer: pkmat - * - * Modifications: pvn - * 7/23/2007. Added support for STR type, extra parameter FILE_ID - * - *------------------------------------------------------------------------- - */ - -static int processDataFile(char *infile, struct Input *in, hid_t file_id) -{ - FILE *strm = NULL; - const char *err1 = "Unable to open the input file %s for reading.\n"; - const char *err2 = "Error in allocating integer data storage.\n"; - const char *err3 = "Error in allocating floating-point data storage.\n"; - const char *err4 = "Error in reading integer data.\n"; - const char *err5 = "Error in reading floating-point data.\n"; - const char *err6 = "Error in allocating unsigned integer data storage.\n"; - const char *err7 = "Error in reading unsigned integer data.\n"; - const char *err10 = "Unrecognized input class type.\n"; - const char *err11 = "Error in reading string data.\n"; - int retval = -1; - - /*------------------------------------------------------------------------- - * special case for opening binary classes in H5_HAVE_WIN32_API - * "FP" denotes a floating point binary file, - * "IN" denotes a signed integer binary file, - * "UIN" denotes an unsigned integer binary file, - *------------------------------------------------------------------------- - */ - if (in->inputClass == 4 /* "IN" */|| in->inputClass == 3 /* "FP" */|| in->inputClass == 7 /* "UIN" */) { - - if ((strm = HDfopen(infile, READ_OPEN_FLAGS)) == NULL) { - (void) HDfprintf(stderr, err1, infile); - goto error; - } - } - /*------------------------------------------------------------------------- - * if the input class is not binary, just use "r" - *------------------------------------------------------------------------- - */ - else { - if ((strm = HDfopen(infile, "r")) == NULL) { - (void) HDfprintf(stderr, err1, infile); - goto error; - } - } - - switch (in->inputClass) { - case 0: /* TEXTIN */ - case 4: /* IN */ - if (allocateIntegerStorage(in) == -1) { - (void) HDfprintf(stderr, err2, infile); - goto error; - } - - if (readIntegerData(strm, in) == -1) { - (void) HDfprintf(stderr, err4, infile); - goto error; - } - break; - - case 1: /* TEXTFP */ - case 2: /* TEXTFPE */ - case 3: /* FP */ - if (allocateFloatStorage(in) == -1) { - (void) HDfprintf(stderr, err3, infile); - goto error; - - } - - if (readFloatData(strm, in) == -1) { - (void) HDfprintf(stderr, err5, infile); - goto error; - } - break; - - case 5: /* STR */ - if (in->h5dumpInput) { - if (processStrHDFData(strm, in, file_id) == -1) { - (void) HDfprintf(stderr, err11, infile); - goto error; - } - } - else { - if (processStrData(strm, in, file_id) == -1) { - (void) HDfprintf(stderr, err11, infile); - goto error; - } - } - - break; - - case 6: /* TEXTUIN */ - case 7: /* UIN */ - if (allocateUIntegerStorage(in) == -1) { - (void) HDfprintf(stderr, err6, infile); - goto error; - } - if (readUIntegerData(strm, in) == -1) { - (void) HDfprintf(stderr, err7, infile); - goto error; - } - break; - - default: - (void) HDfprintf(stderr, "%s", err10); - goto error; - } - - /* Set success return value */ - retval = 0; - -error: - if(strm) - HDfclose(strm); - return(retval); -} - -static int readIntegerData(FILE *strm, struct Input *in) -{ - H5DT_INT8 *in08; - H5DT_INT16 *in16; - H5DT_INT16 temp; - H5DT_INT32 *in32; -#ifdef H5_SIZEOF_LONG_LONG - H5DT_INT64 *in64; - char buffer[256]; -#endif - hsize_t len = 1; - hsize_t i; - int j; - - const char *err1 = "Unable to get integer value from file.\n"; - const char *err2 = "Unrecognized input class type.\n"; - const char *err3 = "Invalid input size.\n"; - - for (j = 0; j < in->rank; j++) - len *= in->sizeOfDimension[j]; - - switch (in->inputSize) { - case 8: - switch (in->inputClass) { - case 0: /* TEXTIN */ - in08 = (H5DT_INT8 *) in->data; - for (i = 0; i < len; i++, in08++) { - if (fscanf(strm, "%hd", &temp) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - (*in08) = (H5DT_INT8) temp; - } - break; - - case 4: /* IN */ - in08 = (H5DT_INT8 *) in->data; - for (i = 0; i < len; i++, in08++) { - if (HDfread((char *) in08, sizeof(H5DT_INT8), 1, strm) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - } - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - break; - - case 16: - in16 = (H5DT_INT16 *) in->data; - switch (in->inputClass) { - case 0: /* TEXTIN */ - for (i = 0; i < len; i++, in16++) { - if (fscanf(strm, "%hd", in16) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - } - in16 = (H5DT_INT16 *) in->data; - break; - - case 4: /* IN */ - for (i = 0; i < len; i++, in16++) { - if (HDfread((char *) in16, sizeof(H5DT_INT16), 1, strm) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - } - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - break; - - case 32: - in32 = (H5DT_INT32 *) in->data; - switch (in->inputClass) { - case 0: /* TEXTIN */ - for (i = 0; i < len; i++, in32++) { - if (fscanf(strm, "%d", in32) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - } - break; - - case 4: /* IN */ - for (i = 0; i < len; i++, in32++) { - if (HDfread((char *) in32, sizeof(H5DT_INT32), 1, strm) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - } - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - break; - -#ifdef H5_SIZEOF_LONG_LONG - case 64: - in64 = (H5DT_INT64 *) in->data; - switch (in->inputClass) { - case 0: /* TEXTIN */ - for (i = 0; i < len; i++, in64++) { - if (fscanf(strm, "%s", buffer) < 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - *in64 = (H5DT_INT64) HDstrtoll(buffer, NULL, 10); - } - break; - - case 4: /* IN */ - for (i = 0; i < len; i++, in64++) { - if (HDfread((char *) in64, sizeof(H5DT_INT64), 1, strm) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - } - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - break; -#endif /* ifdef H5_SIZEOF_LONG_LONG */ - - default: - (void) HDfprintf(stderr, "%s", err3); - break; - } - return (0); -} - -static int readUIntegerData(FILE *strm, struct Input *in) -{ - H5DT_UINT8 *in08; - H5DT_UINT16 *in16; - H5DT_UINT16 temp; - H5DT_UINT32 *in32; -#ifdef H5_SIZEOF_LONG_LONG - H5DT_UINT64 *in64; - char buffer[256]; -#endif - hsize_t len = 1; - hsize_t i; - int j; - const char *err1 = "Unable to get unsigned integer value from file.\n"; - const char *err2 = "Unrecognized input class type.\n"; - const char *err3 = "Invalid input size.\n"; - - for (j = 0; j < in->rank; j++) - len *= in->sizeOfDimension[j]; - - switch (in->inputSize) { - case 8: - switch (in->inputClass) { - case 6: /* TEXTUIN */ - in08 = (H5DT_UINT8 *) in->data; - for (i = 0; i < len; i++, in08++) { - if (fscanf(strm, "%hu", &temp) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - (*in08) = (H5DT_UINT8) temp; - } - break; - - case 7: /* UIN */ - in08 = (H5DT_UINT8 *) in->data; - for (i = 0; i < len; i++, in08++) { - if (HDfread((char *) in08, sizeof(H5DT_UINT8), 1, strm) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - } - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - break; - - case 16: - in16 = (H5DT_UINT16 *) in->data; - switch (in->inputClass) { - case 6: /* TEXTUIN */ - for (i = 0; i < len; i++, in16++) { - if (fscanf(strm, "%hu", in16) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - } - break; - - case 7: /* UIN */ - for (i = 0; i < len; i++, in16++) { - if (HDfread((char *) in16, sizeof(H5DT_UINT16), 1, strm) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - } - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - break; - - case 32: - in32 = (H5DT_UINT32 *) in->data; - switch (in->inputClass) { - case 6: /* TEXTUIN */ - for (i = 0; i < len; i++, in32++) { - if (fscanf(strm, "%u", in32) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - } - break; - - case 7: /* UIN */ - for (i = 0; i < len; i++, in32++) { - if (HDfread((char *) in32, sizeof(H5DT_UINT32), 1, strm) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - } - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - break; - -#ifdef H5_SIZEOF_LONG_LONG - case 64: - in64 = (H5DT_UINT64 *) in->data; - switch (in->inputClass) { - case 6: /* TEXTUIN */ - for (i = 0; i < len; i++, in64++) { - if (fscanf(strm, "%s", buffer) < 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - *in64 = (H5DT_UINT64) HDstrtoll(buffer, NULL, 10); - } - break; - - case 7: /* UIN */ - for (i = 0; i < len; i++, in64++) { - if (HDfread((char *) in64, sizeof(H5DT_UINT64), 1, strm) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - } - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - break; -#endif /* ifdef H5_SIZEOF_LONG_LONG */ - - default: - (void) HDfprintf(stderr, "%s", err3); - break; - } - return (0); -} - -static int readFloatData(FILE *strm, struct Input *in) -{ - H5DT_FLOAT32 *fp32; - H5DT_FLOAT64 *fp64; - - hsize_t len = 1; - hsize_t i; - int j; - const char *err1 = "Unable to get integer value from file.\n"; - const char *err2 = "Unrecognized input class type.\n"; - const char *err3 = "Invalid input size type.\n"; - - for (j = 0; j < in->rank; j++) - len *= in->sizeOfDimension[j]; - - switch (in->inputSize) { - case 32: - fp32 = (H5DT_FLOAT32 *) in->data; - switch (in->inputClass) { - case 1: /* TEXTFP */ - for (i = 0; i < len; i++, fp32++) { - if (fscanf(strm, "%f", fp32) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - } - - fp32 = (H5DT_FLOAT32 *) in->data; - break; - - /* same as TEXTFP */ - case 2: /*TEXTFPE */ - - for (i = 0; i < len; i++, fp32++) { - if (fscanf(strm, "%f", fp32) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - } - - fp32 = (H5DT_FLOAT32 *) in->data; - break; - - case 3: /* FP */ - for (i = 0; i < len; i++, fp32++) { - if (HDfread((char *) fp32, sizeof(H5DT_FLOAT32), 1, strm) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - } - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - break; - - case 64: - fp64 = (H5DT_FLOAT64 *) in->data; - switch (in->inputClass) { - case 1: /* TEXTFP */ - for (i = 0; i < len; i++, fp64++) { - if (fscanf(strm, "%lf", fp64) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - } - - fp64 = (H5DT_FLOAT64 *) in->data; - break; - - /* same as TEXTFP */ - case 2: /*TEXTFPE */ - - for (i = 0; i < len; i++, fp64++) { - if (fscanf(strm, "%lf", fp64) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - } - - fp64 = (H5DT_FLOAT64 *) in->data; - break; - - case 3: /* FP */ - for (i = 0; i < len; i++, fp64++) { - if (HDfread((char *) fp64, sizeof(H5DT_FLOAT64), 1, strm) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - } - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - break; - - default: - (void) HDfprintf(stderr, "%s", err3); - break; - } - return (0); -} - -/*------------------------------------------------------------------------- - * Function: processStrData - * - * Purpose: read an ASCII file with string data and generate an HDF5 dataset - * with a variable length type - * - * Return: 0, ok, -1 no - * - * Programmer: Pedro Vicente, pvn@hdfgroup.org - * - * Date: July, 26, 2007 - * - *------------------------------------------------------------------------- - */ -static int processStrData(FILE *strm, struct Input *in, hid_t file_id) -{ - hid_t group_id; - hid_t dset_id; - hid_t space_id; - hid_t mspace_id; - hid_t type_id; - hid_t handle; - hsize_t dims[1]; - char str[1024]; - int c; - int i = 0; - int j; - hsize_t nlines = 0; - hsize_t line; - - /*------------------------------------------------------------------------- - * get number of lines in the input file - *------------------------------------------------------------------------- - */ - - while(EOF != (c = HDfgetc(strm))) - if (c == 10) /* eol */ - nlines++; - - if (!nlines) - return 0; - - /* number of records */ - dims[0] = nlines; - - /* rewind */ - HDfseek(strm, 0L, 0); - - /*------------------------------------------------------------------------- - * read file again and generate an HDF5 dataset - *------------------------------------------------------------------------- - */ - - if ((type_id = H5Tcopy(H5T_C_S1)) < 0) - goto out; - - if (H5Tset_size(type_id, H5T_VARIABLE) < 0) - goto out; - - /* disable error reporting */ - H5E_BEGIN_TRY - { - /* create parent groups */ - if (in->path.count > 1) { - j = 0; - handle = file_id; - while (j < in->path.count - 1) { - if ((group_id = H5Gopen2(handle, in->path.group[j], H5P_DEFAULT)) < 0) { - group_id = H5Gcreate2(handle, in->path.group[j++], H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - for (; j < in->path.count - 1; j++) - group_id = H5Gcreate2(group_id, in->path.group[j], H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - handle = group_id; - break; - } - handle = group_id; - j++; - } - } - else { - handle = file_id; - j = 0; - } - - /*enable error reporting */ - } - H5E_END_TRY; - - if ((space_id = H5Screate_simple(1, dims, NULL)) < 0) - goto out; - - if ((mspace_id = H5Screate(H5S_SCALAR)) < 0) - goto out; - - if ((dset_id = H5Dcreate2(handle, in->path.group[j], type_id, space_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - - line = 0; - - while(EOF != (c = HDfgetc(strm))) { - str[i] = (char)c; - - i++; - - if (c == 10) { /* eol */ - char *str2 = str; - hid_t fspace_id; - hsize_t start[1]; - hsize_t count[1] = { 1 }; - - str[i - 1] = '\0'; /* terminate string */ - - if ((fspace_id = H5Dget_space(dset_id)) < 0) - goto out; - - start[0] = line++; - - if (H5Sselect_hyperslab(fspace_id, H5S_SELECT_SET, start, NULL, count, NULL) < 0) - goto out; - - if (H5Dwrite(dset_id, type_id, mspace_id, fspace_id, H5P_DEFAULT, &str2) < 0) - goto out; - - if (H5Sclose(fspace_id) < 0) - goto out; - - i = 0; - str[0] = '\0'; - - } - } - - /* close */ - H5Dclose(dset_id); - H5Sclose(space_id); - H5Sclose(mspace_id); - H5Tclose(type_id); - - return (0); - -out: - - return (-1); -} - -/*------------------------------------------------------------------------- - * Function: processStrData - * - * Purpose: read an ASCII file with string data and generate an HDF5 dataset - * with a variable length type - * - * Return: 0, ok, -1 no - * - *------------------------------------------------------------------------- - */ -static int processStrHDFData(FILE *strm, struct Input *in, hid_t file_id) -{ - hid_t group_id = -1; - hid_t dset_id = -1; - hid_t space_id = -1; - hid_t mspace_id = -1; - hid_t type_id = -1; - hid_t handle = -1; - char *str1 = NULL; - char *str2 = NULL; - char *str3 = NULL; - char str[1024] = ""; - int j; - hsize_t line; - - /*------------------------------------------------------------------------- - * read file and generate an HDF5 dataset - *------------------------------------------------------------------------- - */ -#ifdef H5DEBUGIMPORT - printf("processStrHDFData DATATYPE STRING\n"); -#endif - - if ((type_id = H5Tcopy(H5T_C_S1)) < 0) - goto out; - - if (H5Tset_size(type_id, H5T_VARIABLE) < 0) - goto out; - - /* disable error reporting */ - H5E_BEGIN_TRY - { - /* create parent groups */ - if (in->path.count > 1) { - j = 0; - handle = file_id; - while (j < in->path.count - 1) { - if ((group_id = H5Gopen2(handle, in->path.group[j], H5P_DEFAULT)) < 0) { - group_id = H5Gcreate2(handle, in->path.group[j++], H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - for (; j < in->path.count - 1; j++) - group_id = H5Gcreate2(group_id, in->path.group[j], H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - handle = group_id; - break; - } - handle = group_id; - j++; - } - } - else { - handle = file_id; - j = 0; - } - - /*enable error reporting */ - } - H5E_END_TRY; -#ifdef H5DEBUGIMPORT - printf("processStrHDFData DATATYPE STRING groups created\n"); -#endif - - if ((space_id = H5Screate_simple(in->rank, in->sizeOfDimension, NULL)) < 0) - goto out; - - if ((mspace_id = H5Screate(H5S_SCALAR)) < 0) - goto out; - - if ((dset_id = H5Dcreate2(handle, in->path.group[j], type_id, space_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - -#ifdef H5DEBUGIMPORT - printf("processStrHDFData DATATYPE STRING ready to process strings\n"); -#endif - line = 0; - j = 0; - - while (HDfgets(str,sizeof(str),strm)) { - str1 = str; - str2 = NULL; - str3 = NULL; -#ifdef H5DEBUGIMPORT - printf("processStrHDFData DATATYPE STRING[%llu]={%s}\n", (unsigned long long)line, str1); -#endif - /* process string to remove the first and last quote char */ - str2 = strchr(str1, '"'); - if (str2 != NULL) { -#ifdef H5DEBUGIMPORT - printf("processStrHDFData DATATYPE STRING len:%d for {%s}\n", strlen(str2), str2); -#endif - str2++; -#ifdef H5DEBUGIMPORT - printf("processStrHDFData DATATYPE STRING len:%d for {%s}\n", strlen(str2), str2); -#endif - str3 = strrchr(str2, '"'); - if (str3 != NULL) { -#ifdef H5DEBUGIMPORT - printf("processStrHDFData DATATYPE STRING len:%d for {%s}\n", strlen(str3), str3); -#endif - *str3 = '\0'; - -#ifdef H5DEBUGIMPORT - printf("processStrHDFData DATATYPE STRING len:%d for {%s}\n", strlen(str2), str2); -#endif - - if(strlen(str2) > 0) { - hid_t fspace_id; - hsize_t start[1]; - hsize_t count[1] = { 1 }; - -#ifdef H5DEBUGIMPORT - printf("processStrHDFData DATATYPE STRING[%llu] store %s\n", (unsigned long long)line, str2); -#endif - if ((fspace_id = H5Dget_space(dset_id)) < 0) - goto out; - - start[0] = line++; - - if (H5Sselect_hyperslab(fspace_id, H5S_SELECT_SET, start, NULL, count, NULL) < 0) - goto out; - - if (H5Dwrite(dset_id, type_id, mspace_id, fspace_id, H5P_DEFAULT, &str2) < 0) - goto out; - - if (H5Sclose(fspace_id) < 0) - goto out; - } - } - } - str[0] = '\0'; - j++; - } -#ifdef H5DEBUGIMPORT - printf("processStrHDFData DATATYPE STRING eof reached\n"); -#endif - - /* close */ - H5Dclose(dset_id); - H5Sclose(space_id); - H5Sclose(mspace_id); - H5Tclose(type_id); - - return (0); - -out: -#ifdef H5DEBUGIMPORT - printf("processStrHDFData DATATYPE STRING error exit\n"); -#endif -/* disable error reporting */ -H5E_BEGIN_TRY -{ - /* close */ - H5Dclose(dset_id); - H5Sclose(space_id); - H5Sclose(mspace_id); - H5Tclose(type_id); -} -H5E_END_TRY; - - return (-1); -} - -static int allocateIntegerStorage(struct Input *in) -{ - hsize_t len = 1; - int j; - const char *err1 = "Unable to allocate dynamic memory.\n"; - const char *err2 = "Invalid storage size for integer input data.\n"; - - for (j = 0; j < in->rank; j++) - len *= in->sizeOfDimension[j]; - - switch (in->inputSize) { - case 8: - if ((in->data = (VOIDP) HDmalloc((size_t) len * sizeof(H5DT_INT8))) == NULL) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - break; - - case 16: - if ((in->data = (VOIDP) HDmalloc((size_t) len * sizeof(H5DT_INT16))) == NULL) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - break; - - case 32: - if ((in->data = (VOIDP) HDmalloc((size_t) len * sizeof(H5DT_INT32))) == NULL) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - break; - - case 64: - if ((in->data = (VOIDP) HDmalloc((size_t) len * sizeof(H5DT_INT64))) == NULL) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - break; - } - return (0); -} - -static int allocateUIntegerStorage(struct Input *in) -{ - hsize_t len = 1; - const char *err1 = "Unable to allocate dynamic memory.\n"; - const char *err2 = "Invalid storage size for unsigned integer input data.\n"; - int j; - - for (j = 0; j < in->rank; j++) - len *= in->sizeOfDimension[j]; - - switch (in->inputSize) { - case 8: - if ((in->data = (VOIDP) HDmalloc((size_t) len * sizeof(H5DT_UINT8))) == NULL) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - break; - - case 16: - if ((in->data = (VOIDP) HDmalloc((size_t) len * sizeof(H5DT_UINT16))) == NULL) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - break; - - case 32: - if ((in->data = (VOIDP) HDmalloc((size_t) len * sizeof(H5DT_UINT32))) == NULL) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - break; - - case 64: - if ((in->data = (VOIDP) HDmalloc((size_t) len * sizeof(H5DT_UINT64))) == NULL) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - break; - } - return (0); -} - -static int allocateFloatStorage(struct Input *in) -{ - hsize_t len = 1; - int j; - const char *err1 = "Unable to allocate dynamic memory.\n"; - const char *err2 = "Invalid storage size for float input data.\n"; - - for (j = 0; j < in->rank; j++) - len *= in->sizeOfDimension[j]; - - switch (in->inputSize) { - case 32: - if ((in->data = (VOIDP) HDmalloc((size_t) len * sizeof(H5DT_FLOAT32))) == NULL) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - break; - - case 64: - if ((in->data = (VOIDP) HDmalloc((size_t) len * sizeof(H5DT_FLOAT64))) == NULL) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - break; - } - return (0); -} - -static int processConfigurationFile(char *infile, struct Input *in) -{ - FILE *strm = NULL; - char key[255]; - int kindex; - char temp[255]; - int ival; - int scanret; - int retval = -1; - - const char *err1 = "Unable to open the configuration file: %s for reading.\n"; - const char *err2 = "Unknown keyword in configuration file: %s\n"; - const char *err3a = "PATH keyword appears twice in %s.\n"; - const char *err3b = "Error in parsing the path information from %s.\n"; - const char *err4a = "INPUT-CLASS keyword appears twice in %s.\n"; - const char *err4b = "Error in retrieving the input class from %s.\n"; - const char *err5a = "INPUT-SIZE keyword appears twice in %s.\n"; - const char *err5b = "Error in retrieving the input size from %s.\n"; - const char *err6a = "RANK keyword appears twice in %s.\n"; - const char *err6b = "Error in retrieving the rank from %s.\n"; - const char *err7a = "DIMENSION-SIZES keyword appears twice in %s.\n"; - const char *err7b = "DIMENSION-SIZES cannot appear before RANK is provided.\n"; - const char *err7c = "Error in retrieving the dimension sizes from %s.\n"; - const char *err8a = "OUTPUT-CLASS keyword appears twice in %s.\n"; - const char *err8b = "Error in retrieving the output class from %s.\n"; - const char *err9a = "OUTPUT-SIZE keyword appears twice in %s.\n"; - const char *err9b = "Error in retrieving the output size from %s.\n"; - const char *err10a = "OUTPUT-ARCHITECTURE keyword appears twice in %s.\n"; - const char *err10b = "Error in retrieving the output architecture from %s.\n"; - const char *err11a = "OUTPUT-BYTE-ORDER keyword appears twice in %s.\n"; - const char *err11b = "Error in retrieving the output byte order from %s.\n"; - const char *err12a = "CHUNKED-DIMENSION-SIZES keyword appears twice in %s.\n"; - const char *err12b = "CHUNKED-DIMENSION-SIZES cannot appear before DIMENSION-SIZES are provided.\n"; - const char *err12c = "Error in retrieving the chunked dimension sizes from %s.\n"; - const char *err13a = "COMPRESSION-TYPE keyword appears twice in %s.\n"; - const char *err13b = "Error in retrieving the compression type from %s.\n"; - const char *err14a = "COMPRESSION-PARAM keyword appears twice in %s.\n"; - const char *err14b = "Error in retrieving the compression parameter from %s.\n"; - const char *err15a = "EXTERNAL-STORAGE keyword appears twice in %s.\n"; - const char *err15b = "Error in retrieving the external storage paramters from %s.\n"; - const char *err16a = "MAXIMUM-DIMENSIONS keyword appears twice in %s.\n"; - const char *err16b = "MAXIMUM-DIMENSIONS cannot appear before DIMENSION-SIZES are provided.\n"; - const char *err16c = "Error in retrieving the maximum dimension sizes from %s.\n"; - const char *err17 = "Configuration parameters are invalid in %s.\n"; - const char *err18 = "Unable to get string value.\n"; - const char *err19 = "Unable to get integer value.\n"; - - /* create vector to map which keywords have been found - check vector after each keyword to check for violation - at the end check vector to see if required fields have been provided - process the output file according to the options - */ - - if ((strm = HDfopen(infile, "r")) == NULL) { - (void) HDfprintf(stderr, err1, infile); - goto error; - } - - scanret = fscanf(strm, "%s", key); - if((scanret == 1) && !HDstrcmp("HDF5", key)) { -#ifdef H5DEBUGIMPORT - int pndx; - printf("\nh5dump file\n"); -#endif - in->h5dumpInput = 1; - scanret = fscanf(strm, "%s", temp); /* filename */ - scanret = fscanf(strm, "%s", temp); /* start bracket */ - scanret = fscanf(strm, "%s", key); /* DATASET */ - while (scanret == 1) { - if(!HDstrcmp("DATASET", key)) { /* PATH */ -#ifdef H5DEBUGIMPORT - printf("h5dump DATASET key\n"); -#endif - if (in->configOptionVector[PATH] == 1) { - (void) HDfprintf(stderr, err3a, infile); - goto error; - } - if (fscanf(strm, "%s", temp) != 1) { - (void) HDfprintf(stderr, "%s", err18); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump DATASET %s found\n", temp); -#endif - if (parsePathInfo(&in->path, temp) == -1) { - (void) HDfprintf(stderr, err3b, infile); - goto error; - } - in->configOptionVector[PATH] = 1; - scanret = fscanf(strm, "%s", temp); /* start bracket */ -#ifdef H5DEBUGIMPORT - printf("h5dump DATASET %s found\n", temp); -#endif - } /* if(!HDstrcmp("DATASET", key)) PATH */ - else if(!HDstrcmp("DATATYPE", key)) { /* INPUT-CLASS */ -#ifdef H5DEBUGIMPORT - printf("h5dump DATATYPE key\n"); -#endif - if (in->configOptionVector[INPUT_CLASS] == 1) { - (void) HDfprintf(stderr, err4a, infile); - goto error; - } - - if (fscanf(strm, "%s", temp) != 1) { - (void) HDfprintf(stderr, "%s", err18); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump DATATYPE %s found\n", temp); -#endif - if ((kindex = getInputClassType(in, temp)) == -1) { - (void) HDfprintf(stderr, err4b, infile); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump DATATYPE type %d inputClass\n", in->inputClass); -#endif - - in->configOptionVector[INPUT_CLASS] = 1; - - /*set default value for output-class */ - if (in->configOptionVector[OUTPUT_CLASS] == 0) { - if (in->inputClass == 0 || in->inputClass == 4) - in->outputClass = 0; - if (in->inputClass == 1 || in->inputClass == 2 - || in->inputClass == 3) - in->outputClass = 1; - if (in->inputClass == 6 || in->inputClass == 7) - in->outputClass = 2; - } -#ifdef H5DEBUGIMPORT - printf("h5dump DATATYPE type %d outputClass\n", in->outputClass); -#endif - - if(in->inputClass == 5) { /* STRING */ - int get_next_prop = 1; - in->outputClass = -1; -#ifdef H5DEBUGIMPORT - printf("h5dump DATATYPE STRING found\n"); -#endif - if (fscanf(strm, "%s", temp) != 1) { /* start bracket */ - (void) HDfprintf(stderr, "%s", err18); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump DATATYPE STRING %s found\n", temp); -#endif - if (fscanf(strm, "%s", temp) != 1) { /* string properties */ - (void) HDfprintf(stderr, "%s", err18); - goto error; - } - while (get_next_prop) { - if(!HDstrcmp("STRSIZE", temp)) { /* STRSIZE */ - if (fscanf(strm, "%s", temp) != 1) { - (void) HDfprintf(stderr, "%s", err19); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump DATATYPE STRING STRSIZE %s found\n", temp); -#endif - if (HDstrcmp("H5T_VARIABLE;", temp)) { - char *more = temp; - ival = (int)HDstrtol(more, &more, 10); - if (getInputSize(in, ival) == -1) { - (void) HDfprintf(stderr, err5b, infile); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump DATATYPE STRING %d InputSize\n", in->inputSize); -#endif - } - } - else if(!HDstrcmp("STRPAD", temp)) { /* STRPAD */ - if (fscanf(strm, "%s", temp) != 1) { /* STRPAD type */ - (void) HDfprintf(stderr, "%s", err18); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump DATATYPE STRING STRPAD %s found\n", temp); -#endif - } - else if(!HDstrcmp("CSET", key)) { /* CSET */ - if (fscanf(strm, "%s", temp) != 1) { /* CSET type */ - (void) HDfprintf(stderr, "%s", err18); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump DATATYPE STRING CSET %s found\n", temp); -#endif - - } - else if(!HDstrcmp("CTYPE", temp)) { /* CTYPE */ - if (fscanf(strm, "%s", temp) != 1) { /* CTYPE type */ - (void) HDfprintf(stderr, "%s", err18); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump DATATYPE STRING CTYPE %s found\n", temp); -#endif - } /* if(!HDstrcmp("CSET", key)) */ - if (fscanf(strm, "%s", temp) != 1) { - (void) HDfprintf(stderr, "%s", err18); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump DATATYPE STRING %s found\n", temp); -#endif - if(!HDstrcmp("}", temp)) { /* end bracket */ - get_next_prop = 0; - } - } /* while (get_next_prop) */ - } /* if(kindex == 5) STRING */ - } /* else if(!HDstrcmp("DATATYPE", key)) INPUT-CLASS */ - else if(!HDstrcmp("DATASPACE", key)) { /* RANK and DIMENSIONS */ - hsize_t temp_dims[MAX_NUM_DIMENSION]; - -#ifdef H5DEBUGIMPORT - printf("h5dump DATASPACE key\n"); -#endif - if (fscanf(strm, "%s", temp) != 1) { - (void) HDfprintf(stderr, "%s", err18); - goto error; - } - if(!HDstrcmp("SCALAR", temp)) { /* SCALAR */ - in->rank = 0; - } /* if(!HDstrcmp("SCALAR", key)) */ - else if(!HDstrcmp("NULL", temp)) { /* NULL */ - (void) HDfprintf(stderr, err6b, infile); - goto error; - } /* else if(!HDstrcmp("NULL", key)) */ - else if(!HDstrcmp("SIMPLE", temp)) { /* SIMPLE */ - int icount = 0; -#ifdef H5DEBUGIMPORT - printf("h5dump DATASPACE SIMPLE found\n"); -#endif - if (fscanf(strm, "%s", temp) != 1) { /* start bracket */ - (void) HDfprintf(stderr, err6b, infile); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump DATASPACE SIMPLE %s found\n", temp); -#endif - if (fscanf(strm, "%s", temp) != 1) { /* start paren */ - (void) HDfprintf(stderr, err6b, infile); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump DATASPACE SIMPLE %s found\n", temp); -#endif - if(!HDstrcmp("(", temp)) { /* start paren */ - int get_next_dim = 1; - int i = 0; - - if (fscanf(strm, "%s", temp) != 1) { /* Dimension with optional comma */ - (void) HDfprintf(stderr, err16c, infile); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump DATASPACE SIMPLE %s found\n", temp); -#endif - while (get_next_dim) { - char *more = temp; - temp_dims[icount] = HDstrtoull(more, &more, 10); - if (fscanf(strm, "%s", temp) != 1) { /* Dimension or end paren */ - (void) HDfprintf(stderr, err6b, infile); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump DATASPACE SIMPLE %s found\n", temp); -#endif - if(!HDstrcmp(")", temp)) { /* end paren */ - in->rank = ++icount; - in->configOptionVector[RANK] = 1; - get_next_dim = 0; - } - else { /* Dimension */ - icount++; - if (icount > MAX_NUM_DIMENSION) { - (void) HDfprintf(stderr, "Invalid value for rank.\n"); - goto error; - } - } - } /* while (get_next_dim) */ - - if ((in->sizeOfDimension = (hsize_t *) HDmalloc ((size_t) in->rank * sizeof(hsize_t))) == NULL) { - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump DATASPACE SIMPLE %d rank\n", in->rank); -#endif - for (i = 0; i < in->rank; i++) { - in->sizeOfDimension[i] = temp_dims[i]; - } -#ifdef H5DEBUGIMPORT - printf("h5dump DATASPACE SIMPLE dims:", in->rank); - for (pndx = 0; pndx < in->rank; pndx++) { - printf(" %d", in->sizeOfDimension[pndx]); - } - printf("\n"); -#endif - in->configOptionVector[DIM] = 1; - } /* if(!HDstrcmp("(", key)) start paren */ - else { - (void) HDfprintf(stderr, err5b, infile); - goto error; - } - if (fscanf(strm, "%s", temp) != 1) { - (void) HDfprintf(stderr, "%s", err18); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump DATASPACE SIMPLE %s found\n", temp); -#endif - if(!HDstrcmp("/", temp)) { /* / max dims */ - if ((in->maxsizeOfDimension = (hsize_t *) HDmalloc ((size_t) in->rank * sizeof(hsize_t))) == NULL) { - goto error; - } - if (fscanf(strm, "%s", temp) != 1) { /* start paren */ - (void) HDfprintf(stderr, err6b, infile); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump DATASPACE SIMPLE %s found\n", temp); -#endif - if(!HDstrcmp("(", temp)) { /* start paren */ - int get_next_dim = 1; - int i = 0; - -#ifdef H5DEBUGIMPORT - printf("h5dump DATASPACE SIMPLE process max dim values\n"); -#endif - if (fscanf(strm, "%s", temp) != 1) { /* max dim with optional comma */ - (void) HDfprintf(stderr, err16c, infile); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump DATASPACE SIMPLE %s found\n", temp); -#endif - while (get_next_dim) { -#ifdef H5DEBUGIMPORT - printf("h5dump DATASPACE SIMPLE get max dim value\n"); -#endif - if(!HDstrcmp("H5S_UNLIMITED", temp) || !HDstrcmp("H5S_UNLIMITED,", temp)) { /* unlimited */ - in->maxsizeOfDimension[i] = H5S_UNLIMITED; - in->configOptionVector[EXTEND] = 1; - } - else { - char *more = temp; - in->maxsizeOfDimension[i] = HDstrtoull(more, &more, 10); - } - if (fscanf(strm, "%s", temp) != 1) { /* max dim or end paren */ - (void) HDfprintf(stderr, err16c, infile); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump DATASPACE SIMPLE %s found\n", temp); -#endif - if(!HDstrcmp(")", temp)) { /* end paren */ - get_next_dim = 0; - } - else { /* comma */ - i++; - if (i > MAX_NUM_DIMENSION) { - (void) HDfprintf(stderr, "Invalid value for rank.\n"); - goto error; - } - } - } /* while (get_next_dim) */ -#ifdef H5DEBUGIMPORT - printf("h5dump DATASPACE SIMPLE maxdims:", in->rank); - for (pndx = 0; pndx < in->rank; pndx++) { - printf(" %d", in->maxsizeOfDimension[pndx]); - } - printf("\n"); - printf("h5dump DATASPACE SIMPLE get max dim finished\n"); -#endif - } /* if(!HDstrcmp("(", key)) start paren */ - else { - (void) HDfprintf(stderr, err16c, infile); - goto error; - } - scanret = fscanf(strm, "%s", temp); /* end bracket */ -#ifdef H5DEBUGIMPORT - printf("h5dump DATASPACE SIMPLE %s found\n", temp); -#endif - } /* if(!HDstrcmp("/", key)) max dims separator */ - } /* else if(!HDstrcmp("SIMPLE", key)) */ - else { - (void) HDfprintf(stderr, err5b, infile); - goto error; - } - } /* else if(!HDstrcmp("DATASPACE", key)) RANK and DIMENSIONS */ - else if(!HDstrcmp("STORAGE_LAYOUT", key)) { /* CHUNKED-DIMENSION-SIZES */ -#ifdef H5DEBUGIMPORT - printf("h5dump STORAGE_LAYOUT key\n"); -#endif - if (fscanf(strm, "%s", temp) != 1) { /* start bracket */ - (void) HDfprintf(stderr, err6b, infile); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump STORAGE_LAYOUT %s found\n", temp); -#endif - if (fscanf(strm, "%s", temp) != 1) { /* CHUNKED */ - (void) HDfprintf(stderr, err6b, infile); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump STORAGE_LAYOUT %s found\n", temp); -#endif - if(!HDstrcmp("CHUNKED", temp)) { /* CHUNKED */ - if ((in->sizeOfChunk = (hsize_t *) HDmalloc ((size_t) in->rank * sizeof(hsize_t))) == NULL) { - (void) HDfprintf(stderr, "Unable to allocate dynamic memory.\n"); - goto error; - } - if (fscanf(strm, "%s", temp) != 1) { /* start paren */ - (void) HDfprintf(stderr, err6b, infile); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump STORAGE_LAYOUT CHUNKED %s found\n", temp); -#endif - if(!HDstrcmp("(", temp)) { /* start paren */ - int get_next_dim = 1; - int icount = 0; - - if (fscanf(strm, "%s", temp) != 1) { /* Dimension with optional comma */ - (void) HDfprintf(stderr, err16c, infile); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump STORAGE_LAYOUT CHUNKED %s found\n", temp); -#endif - while (get_next_dim) { - char *more = temp; - in->sizeOfChunk[icount] = HDstrtoull(more, &more, 10); - if (fscanf(strm, "%s", temp) != 1) { /* Dimension or end paren */ - (void) HDfprintf(stderr, err6b, infile); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump STORAGE_LAYOUT CHUNKED %s found\n", temp); -#endif - if(!HDstrcmp(")", temp)) { /* end paren */ - in->configOptionVector[RANK] = 1; - get_next_dim = 0; - } - else { /* Dimension */ - icount++; - if (icount > MAX_NUM_DIMENSION) { - (void) HDfprintf(stderr, "Invalid value for rank.\n"); - goto error; - } - } - } /* while (get_next_dim) */ -#ifdef H5DEBUGIMPORT - printf("h5dump STORAGE_LAYOUT CHUNKED dims:", in->rank); - for (pndx = 0; pndx < in->rank; pndx++) { - printf(" %d", in->sizeOfChunk[pndx]); - } - printf("\n"); -#endif - in->configOptionVector[DIM] = 1; - } /* if(!HDstrcmp("(", key)) start paren */ - else { - (void) HDfprintf(stderr, err5b, infile); - goto error; - } - if (fscanf(strm, "%s", temp) != 1) { /* SIZE */ - (void) HDfprintf(stderr, err6b, infile); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump STORAGE_LAYOUT CHUNKED %s found\n", temp); -#endif - if(!HDstrcmp("SIZE", temp)) { /* SIZE */ - if (fscanf(strm, "%d", (&ival)) != 1) { - (void) HDfprintf(stderr, "%s", err19); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump STORAGE_LAYOUT CHUNKED SIZE %d found\n", ival); -#endif - } - while (HDstrcmp("}", temp)) { - if (fscanf(strm, "%s", temp) != 1) { /* end bracket */ - (void) HDfprintf(stderr, "%s", err18); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump STORAGE_LAYOUT CHUNKED %s found\n", temp); -#endif - } - in->configOptionVector[CHUNK] = 1; - } /* if(!HDstrcmp("CHUNKED", key)) CHUNKED */ - } /* else if(!HDstrcmp("STORAGE_LAYOUT", key)) CHUNKED-DIMENSION-SIZES */ - else if(!HDstrcmp("FILTERS", key)) { /* FILTERS */ -#ifdef H5DEBUGIMPORT - printf("h5dump FILTERS key\n"); -#endif - if (fscanf(strm, "%s", temp) != 1) { /* start bracket */ - (void) HDfprintf(stderr, err6b, infile); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump FILTERS %s found\n", temp); -#endif - if (fscanf(strm, "%s", temp) != 1) { - (void) HDfprintf(stderr, err6b, infile); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump FILTERS %s found\n", temp); -#endif - if(!HDstrcmp("COMPRESSION", temp)) { /* COMPRESSION */ -#ifdef H5DEBUGIMPORT - printf("h5dump FILTERS COMPRESSION found\n"); -#endif - if (fscanf(strm, "%s", temp) != 1) { /* DEFLATE */ - (void) HDfprintf(stderr, "%s", err18); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump FILTERS COMPRESSION %s found\n", temp); -#endif - if (fscanf(strm, "%s", temp) != 1) { /* bgin bracket */ - (void) HDfprintf(stderr, "%s", err18); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump FILTERS COMPRESSION %s found\n", temp); -#endif - if (fscanf(strm, "%s", temp) != 1) { /* LEVEL */ - (void) HDfprintf(stderr, "%s", err18); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump FILTERS COMPRESSION %s found\n", temp); -#endif - if (fscanf(strm, "%d", (&ival)) != 1) { - (void) HDfprintf(stderr, "%s", err19); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump FILTERS COMPRESSION LEVEL %d found\n", ival); -#endif - in->compressionParam = ival; - if (fscanf(strm, "%s", temp) != 1) { /* end bracket */ - (void) HDfprintf(stderr, "%s", err18); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump FILTERS COMPRESSION %s found\n", temp); -#endif - in->compressionType = 0; /* ONLY GZIP supported */ - in->configOptionVector[COMPRESS] = 1; - } - else if(!HDstrcmp("CONTIGUOUS", temp)) { /* CONTIGUOUS */ -#ifdef H5DEBUGIMPORT - printf("h5dump FILTERS CONTIGUOUS found\n"); -#endif - in->configOptionVector[COMPRESS] = 0; - } - else if(!HDstrcmp("NONE", temp)) { /* NONE */ -#ifdef H5DEBUGIMPORT - printf("h5dump FILTERS NONE found\n"); -#endif - in->configOptionVector[COMPRESS] = 0; - } - if (fscanf(strm, "%s", temp) != 1) { /* end bracket */ - (void) HDfprintf(stderr, "%s", err18); - goto error; - } -#ifdef H5DEBUGIMPORT - printf("h5dump FILTERS %s found\n", temp); -#endif - } - else if(!HDstrcmp("DATA", key)) { /* FINSHED */ -#ifdef H5DEBUGIMPORT - printf("h5dump DATA key\n"); -#endif - scanret = 0; - break; - } - scanret = fscanf(strm, "%s", key); - } -#ifdef H5DEBUGIMPORT - printf("h5dump path"); - for (pndx = 0; pndx < in->path.count; pndx++) { - printf(" : %s", in->path.group[pndx]); - } - printf("\n"); - printf("h5dump inputClass=%d\n", in->inputClass); - printf("h5dump inputSize=%d\n", in->inputSize); - printf("h5dump rank=%d\n", in->rank); - printf("h5dump outputClass=%d\n", in->outputClass); - printf("h5dump outputSize=%d\n", in->outputSize); - printf("h5dump outputArchitecture=%d\n", in->outputArchitecture); - printf("h5dump outputByteOrder=%d\n", in->outputByteOrder); - printf("h5dump compressionType=%d\n", in->compressionType); - printf("h5dump compressionParam=%d\n", in->compressionParam); - printf("h5dump externFilename=%s\n", in->externFilename); - printf("h5dump configOptionVector:\n"); - for (pndx = 0; pndx < NUM_KEYS; pndx++) { - printf(" %s=%d\n", keytable[pndx], in->configOptionVector[pndx]); - } -#endif - } - else { - while (scanret == 1) { - if ((kindex = mapKeywordToIndex(key)) == -1) { - (void) HDfprintf(stderr, err2, infile); - goto error; - } - switch (kindex) { - case 0: /* PATH */ - if (in->configOptionVector[PATH] == 1) { - (void) HDfprintf(stderr, err3a, infile); - goto error; - } - if (fscanf(strm, "%s", temp) != 1) { - (void) HDfprintf(stderr, "%s", err18); - goto error; - } - if (parsePathInfo(&in->path, temp) == -1) { - (void) HDfprintf(stderr, err3b, infile); - goto error; - } - in->configOptionVector[PATH] = 1; - break; - - case 1: /* INPUT-CLASS */ - if (in->configOptionVector[INPUT_CLASS] == 1) { - (void) HDfprintf(stderr, err4a, infile); - goto error; - } - - if (fscanf(strm, "%s", temp) != 1) { - (void) HDfprintf(stderr, "%s", err18); - goto error; - } - if (getInputClass(in, temp) == -1) { - (void) HDfprintf(stderr, err4b, infile); - goto error; - } - - in->configOptionVector[INPUT_CLASS] = 1; - - /*set default value for output-class */ - if (in->configOptionVector[OUTPUT_CLASS] == 0) { - if (in->inputClass == 0 || in->inputClass == 4) - in->outputClass = 0; - if (in->inputClass == 1 || in->inputClass == 2 - || in->inputClass == 3) - in->outputClass = 1; - if (in->inputClass == 6 || in->inputClass == 7) - in->outputClass = 2; - } - break; - - case 2: /* INPUT-SIZE */ - if (in->configOptionVector[INPUT_SIZE] == 1) { - (void) HDfprintf(stderr, err5a, infile); - goto error; - } - if (fscanf(strm, "%d", (&ival)) != 1) { - (void) HDfprintf(stderr, "%s", err19); - goto error; - } - if (getInputSize(in, ival) == -1) { - (void) HDfprintf(stderr, err5b, infile); - goto error; - } - in->configOptionVector[INPUT_SIZE] = 1; - - /*set default value for output-size */ - if (in->configOptionVector[OUTPUT_SIZE] == 0) - in->outputSize = in->inputSize; - break; - - case 3: /* RANK */ - if (in->configOptionVector[RANK] == 1) { - (void) HDfprintf(stderr, err6a, infile); - goto error; - } - - if (getRank(in, strm) == -1) { - (void) HDfprintf(stderr, err6b, infile); - goto error; - } - in->configOptionVector[RANK] = 1; - break; - - case 4: /* DIMENSION-SIZES */ - if (in->configOptionVector[DIM] == 1) { - (void) HDfprintf(stderr, err7a, infile); - goto error; - } - - if (in->configOptionVector[RANK] == 0) { - (void) HDfprintf(stderr, err7b, infile); - goto error; - } - if (getDimensionSizes(in, strm) == -1) { - (void) HDfprintf(stderr, err7c, infile); - goto error; - } - in->configOptionVector[DIM] = 1; - break; - - case 5: /* OUTPUT-CLASS */ - if (in->configOptionVector[OUTPUT_CLASS] == 1) { - (void) HDfprintf(stderr, err8a, infile); - goto error; - } - - if (getOutputClass(in, strm) == -1) { - (void) HDfprintf(stderr, err8b, infile); - goto error; - } - in->configOptionVector[OUTPUT_CLASS] = 1; - break; - - case 6: /* OUTPUT-SIZE */ - if (in->configOptionVector[OUTPUT_SIZE] == 1) { - (void) HDfprintf(stderr, err9a, infile); - goto error; - } - - if (getOutputSize(in, strm) == -1) { - (void) HDfprintf(stderr, err9b, infile); - goto error; - } - in->configOptionVector[OUTPUT_SIZE] = 1; - break; - - case 7: /* OUTPUT-ARCHITECTURE */ - if (in->configOptionVector[OUTPUT_ARCH] == 1) { - (void) HDfprintf(stderr, err10a, infile); - goto error; - } - - if (getOutputArchitecture(in, strm) == -1) { - (void) HDfprintf(stderr, err10b, infile); - goto error; - } - in->configOptionVector[OUTPUT_ARCH] = 1; - break; - - case 8: /* OUTPUT-BYTE-ORDER */ - if (in->configOptionVector[OUTPUT_B_ORDER] == 1) { - (void) HDfprintf(stderr, err11a, infile); - goto error; - } - - if (getOutputByteOrder(in, strm) == -1) { - (void) HDfprintf(stderr, err11b, infile); - goto error; - } - in->configOptionVector[OUTPUT_B_ORDER] = 1; - break; - - case 9: /* CHUNKED-DIMENSION-SIZES */ - if (in->configOptionVector[CHUNK] == 1) { - (void) HDfprintf(stderr, err12a, infile); - goto error; - } - /* cant appear before dimension sizes have been provided */ - if (in->configOptionVector[DIM] == 0) { - (void) HDfprintf(stderr, err12b, infile); - goto error; - } - - if (getChunkedDimensionSizes(in, strm) == -1) { - (void) HDfprintf(stderr, err12c, infile); - goto error; - } - in->configOptionVector[CHUNK] = 1; - break; - - case 10: /* COMPRESSION-TYPE */ - if (in->configOptionVector[COMPRESS] == 1) { - (void) HDfprintf(stderr, err13a, infile); - goto error; - } - - if (getCompressionType(in, strm) == -1) { - (void) HDfprintf(stderr, err13b, infile); - goto error; - } - in->configOptionVector[COMPRESS] = 1; - - if (in->configOptionVector[COMPRESS_PARAM] == 0) { - if (in->compressionType == 0) - in->compressionParam = 6; /* default value if compressionType is GZIP */ - } - break; - - case 11: /* COMPRESSION-PARAM */ - if (in->configOptionVector[COMPRESS_PARAM] == 1) { - (void) HDfprintf(stderr, err14a, infile); - goto error; - } - - if (getCompressionParameter(in, strm) == -1) { - (void) HDfprintf(stderr, err14b, infile); - goto error; - } - - in->configOptionVector[COMPRESS_PARAM] = 1; - - if (in->configOptionVector[COMPRESS] == 0) - in->compressionType = 0; - - break; - - case 12: /* EXTERNAL-STORAGE */ - if (in->configOptionVector[EXTERNALSTORE] == 1) { - (void) HDfprintf(stderr, err15a, infile); - goto error; - } - - if (getExternalFilename(in, strm) == -1) { - (void) HDfprintf(stderr, err15b, infile); - goto error; - } - in->configOptionVector[EXTERNALSTORE] = 1; - break; - - case 13: /* MAXIMUM-DIMENSIONS */ - if (in->configOptionVector[EXTEND] == 1) { - (void) HDfprintf(stderr, err16a, infile); - goto error; - } - /* cant appear before dimension sizes have been provided */ - if (in->configOptionVector[DIM] == 0) { - (void) HDfprintf(stderr, err16b, infile); - goto error; - } - if (getMaximumDimensionSizes(in, strm) == -1) { - (void) HDfprintf(stderr, err16c, infile); - goto error; - } - in->configOptionVector[EXTEND] = 1; - break; - - default: - break; - } - scanret = fscanf(strm, "%s", key); - } - } - - /* - check if keywords obtained are valid - if yes, return 0 else error - */ - - if (validateConfigurationParameters(in) == -1) { - (void) HDfprintf(stderr, err17, infile); - goto error; - } - - /* Set success return value */ - retval = 0; - -error: - if(strm) - HDfclose(strm); - return(retval); -} - -static int validateConfigurationParameters(struct Input *in) -{ - const char *err1 = "One or more of the required fields (RANK, DIMENSION-SIZES) missing.\n"; - const char *err2 = "Cannot specify chunking or compression or extendible data sets with the external file option.\n"; - const char *err3 = "Cannot specify the compression or the extendible data sets without the chunking option.\n"; - const char *err4a = "OUTPUT-ARCHITECTURE cannot be STD if OUTPUT-CLASS is floating point (FP).\n"; - const char *err4b = "OUTPUT-ARCHITECTURE cannot be IEEE if OUTPUT-CLASS is integer (IN).\n"; - const char *err5 = "For OUTPUT-CLASS FP, valid values for OUTPUT-SIZE are (32, 64) .\n"; -#ifndef H5_SIZEOF_LONG_LONG - const char *err6 = "No support for reading 64-bit integer (INPUT-CLASS: IN, TEXTIN, UIN, TEXTUIN files\n"; -#endif - - /* for class STR other parameters are ignored */ - if (in->inputClass == 5) /* STR */ - return (0); - - if ((in->configOptionVector[DIM] != 1) || (in->configOptionVector[RANK] != 1)) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - - if (in->configOptionVector[EXTERNALSTORE] == 1) { - if ((in->configOptionVector[COMPRESS] == 1) || (in->configOptionVector[CHUNK] == 1) || (in->configOptionVector[EXTEND] == 1)) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - } - - if ((in->configOptionVector[COMPRESS] == 1) || (in->configOptionVector[EXTEND] == 1)) { - if (in->configOptionVector[CHUNK] != 1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - } - - /* Arch cant be STD if O/p class is FP */ - if (in->outputArchitecture == 1) - if (in->outputClass == 1) { - (void) HDfprintf(stderr, "%s", err4a); - return (-1); - } - - /* Arch cant be IEEE if O/p class is IN */ - if (in->outputArchitecture == 2) - if (in->outputClass == 0) { - (void) HDfprintf(stderr, "%s", err4b); - return (-1); - } - - if (in->outputClass == 1) - if (in->outputSize != 32 && in->outputSize != 64) { - (void) HDfprintf(stderr, "%s", err5); - return (-1); - } - -#ifndef H5_SIZEOF_LONG_LONG - if (in->inputSize == 64 && (in->inputClass == 0 || in->inputClass == 4 || in->inputClass == 6 || in->inputClass == 7) ) { - (void) HDfprintf(stderr, "%s", err6); - return -1; - } -#endif - return (0); -} - -static int mapKeywordToIndex(char *key) -{ - int i; - - for (i = 0; i < NUM_KEYS; i++) - if (!HDstrcmp(keytable[i], key)) - return i; - return -1; -} - -static int parsePathInfo(struct path_info *path, char *temp) -{ - const char delimiter[] = "/\""; - char *token; - int i = 0; - const char *err1 = "Path string larger than MAX_PATH_NAME_LENGTH.\n"; - - token = HDstrtok (temp, delimiter); - if (HDstrlen(token) >= MAX_PATH_NAME_LENGTH) { - (void) HDfprintf(stderr, err1); - return (-1); - } - HDstrcpy(path->group[i++],token); - - while (1) { - token = HDstrtok (NULL, delimiter); - if (token == NULL) - break; - if (HDstrlen(token) >= MAX_PATH_NAME_LENGTH) { - (void) HDfprintf(stderr, err1); - return (-1); - } - HDstrcpy(path->group[i++],token); - } - path->count = i; - return (0); -} - -static int parseDimensions(struct Input *in, char *strm) -{ - const char delimiter[] = ","; - char temp[255]; - char *token; - int i = 0; - const char *err1 = "Unable to allocate dynamic memory.\n"; - - HDstrncpy(temp, strm, sizeof(temp)); - temp[sizeof(temp) - 1] = '\0'; - HDstrtok (temp, delimiter); - - while (1) { - token = HDstrtok (NULL, delimiter); - if (token == NULL) - break; - i++; - } - in->rank = i + 1; - if ((in->sizeOfDimension = (hsize_t *) HDmalloc ((size_t) in->rank * sizeof(hsize_t))) == NULL) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - - i = 0; - HDstrncpy(temp, strm, sizeof(temp)); - temp[sizeof(temp) - 1] = '\0'; - in->sizeOfDimension[i++] - = HDstrtoull(HDstrtok (temp, delimiter), NULL, BASE_10); - - while (1) { - token = HDstrtok (NULL, delimiter); - if (token == NULL) - break; - in->sizeOfDimension[i++] = HDstrtoull(token, NULL, BASE_10); - } - return (0); -} - -static int getOutputClass(struct Input *in, FILE *strm) -{ - char temp[255]; - int kindex; - const char *err1 = "Unable to get 'string' value.\n"; - const char *err2 = "Invalid value for output class.\n"; - - if (fscanf(strm, "%s", temp) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - - if ((kindex = OutputClassStrToInt(temp)) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - - in->outputClass = kindex; - return (0); -} - -static int OutputClassStrToInt(char *temp) -{ - int i; - char classKeywordTable[3][15] = { "IN", "FP", "UIN" }; - for (i = 0; i < 3; i++) - if (!HDstrcmp(classKeywordTable[i], temp)) - return i; - - return -1; -} -/* same as getInputSize. But defined separately for extensibility */ -static int getOutputSize(struct Input *in, FILE *strm) -{ - int ival; - int i; - int outputSizeValidValues[4] = { 8, 16, 32, 64 }; - const char *err1 = "Unable to get integer value.\n"; - const char *err2 = "Invalid value for output size.\n"; - - if (fscanf(strm, "%d", (&ival)) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - - for (i = 0; i < 4; i++) - if (outputSizeValidValues[i] == ival) { - in->outputSize = ival; - return (0); - } - (void) HDfprintf(stderr, "%s", err2); - return (-1); -} - -static int getInputClass(struct Input *in, char * temp) -{ - int kindex; - const char *err1 = "Invalid value for input class.\n"; - - if ((kindex = InputClassStrToInt(temp)) == -1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - - in->inputClass = kindex; - return (0); -} - -static int getInputClassType(struct Input *in, char * buffer) -{ - int kindex = -1; - const char *err1 = "Invalid value for input class.\n"; - const char *err2 = "Invalid value for output architecture.\n"; - const char *err3 = "Invalid value for output byte-order.\n"; - - if (!HDstrcmp(buffer, "H5T_STD_I8BE")) { - in->inputSize = 8; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("BE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = 4; - } - else if (!HDstrcmp(buffer, "H5T_STD_I8LE")) { - in->inputSize = 8; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("LE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = 4; - } - else if (!HDstrcmp(buffer, "H5T_STD_I16BE")) { - in->inputSize = 16; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("BE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = 4; - } - else if (!HDstrcmp(buffer, "H5T_STD_I16LE")) { - in->inputSize = 16; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("LE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = 4; - } - else if (!HDstrcmp(buffer, "H5T_STD_I32BE")) { - in->inputSize = 32; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("BE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = 4; - } - else if (!HDstrcmp(buffer, "H5T_STD_I32LE")) { - in->inputSize = 32; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("LE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = 4; - } - else if (!HDstrcmp(buffer, "H5T_STD_I64BE")) { - in->inputSize = 64; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("BE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = 4; - } - else if (!HDstrcmp(buffer, "H5T_STD_I64LE")) { - in->inputSize = 64; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("LE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = 4; - } - else if (!HDstrcmp(buffer, "H5T_STD_U8BE")) { - in->inputSize = 8; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("BE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = 7; - } - else if (!HDstrcmp(buffer, "H5T_STD_U8LE")) { - in->inputSize = 8; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("LE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = 7; - } - else if (!HDstrcmp(buffer, "H5T_STD_U16BE")) { - in->inputSize = 16; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("BE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = 7; - } - else if (!HDstrcmp(buffer, "H5T_STD_U16LE")) { - in->inputSize = 16; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("LE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = 7; - } - else if (!HDstrcmp(buffer, "H5T_STD_U32BE")) { - in->inputSize = 32; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("BE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = 7; - } - else if (!HDstrcmp(buffer, "H5T_STD_U32LE")) { - in->inputSize = 32; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("LE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = 7; - } - else if (!HDstrcmp(buffer, "H5T_STD_U64BE")) { - in->inputSize = 64; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("BE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = 7; - } - else if (!HDstrcmp(buffer, "H5T_STD_U64LE")) { - in->inputSize = 64; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("LE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = 7; - } - else if (!HDstrcmp(buffer, "H5T_NATIVE_SCHAR")) { - in->inputSize = 8; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("NATIVE")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - kindex = 4; - } - else if (!HDstrcmp(buffer, "H5T_NATIVE_UCHAR")) { - in->inputSize = 8; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("NATIVE")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - kindex = 7; - } - else if (!HDstrcmp(buffer, "H5T_NATIVE_SHORT")) { - in->inputSize = 16; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("NATIVE")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - kindex = 4; - } - else if (!HDstrcmp(buffer, "H5T_NATIVE_USHORT")) { - in->inputSize = 16; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("NATIVE")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - kindex = 7; - } - else if (!HDstrcmp(buffer, "H5T_NATIVE_INT")) { - in->inputSize = 32; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("NATIVE")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - kindex = 4; - } - else if (!HDstrcmp(buffer, "H5T_NATIVE_UINT")) { - in->inputSize = 32; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("NATIVE")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - kindex = 7; - } - else if (!HDstrcmp(buffer, "H5T_NATIVE_LONG")) { - in->inputSize = 32; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("NATIVE")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - kindex = 4; - } - else if (!HDstrcmp(buffer, "H5T_NATIVE_ULONG")) { - in->inputSize = 32; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("NATIVE")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - kindex = 7; - } - else if (!HDstrcmp(buffer, "H5T_NATIVE_LLONG")) { - in->inputSize = 64; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("NATIVE")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - kindex = 4; - } - else if (!HDstrcmp(buffer, "H5T_NATIVE_ULLONG")) { - in->inputSize = 64; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("NATIVE")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - kindex = 7; - } - else if (!HDstrcmp(buffer, "H5T_IEEE_F32BE")) { - in->inputSize = 32; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("IEEE")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("BE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = 3; - } - else if (!HDstrcmp(buffer, "H5T_IEEE_F32LE")) { - in->inputSize = 32; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("IEEE")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("LE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = 3; - } - else if (!HDstrcmp(buffer, "H5T_IEEE_F64BE")) { - in->inputSize = 64; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("IEEE")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("BE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = 3; - } - else if (!HDstrcmp(buffer, "H5T_IEEE_F64LE")) { - in->inputSize = 64; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("IEEE")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("LE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = 3; - } - else if (!HDstrcmp(buffer, "H5T_VAX_F32")) { - in->inputSize = 32; - in->configOptionVector[INPUT_SIZE] = 1; - - kindex = 3; - } - else if (!HDstrcmp(buffer, "H5T_VAX_F64")) { - in->inputSize = 64; - in->configOptionVector[INPUT_SIZE] = 1; - - kindex = 3; - } - else if (!HDstrcmp(buffer, "H5T_NATIVE_FLOAT")) { - in->inputSize = 32; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("NATIVE")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - kindex = 3; - } - else if (!HDstrcmp(buffer, "H5T_NATIVE_DOUBLE")) { - in->inputSize = 64; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("NATIVE")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - kindex = 3; - } -#if H5_SIZEOF_LONG_DOUBLE !=0 - else if (!HDstrcmp(buffer, "H5T_NATIVE_LDOUBLE")) { - in->inputSize = H5_SIZEOF_LONG_DOUBLE; - in->configOptionVector[INPUT_SIZE] = 1; - - if ((kindex = OutputArchStrToInt("NATIVE")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - kindex = 3; - } -#endif - else if(!HDstrcmp(buffer, "H5T_TIME: not yet implemented")) { - kindex = -1; - } - else if(!HDstrcmp(buffer, "H5T_STRING")) { - kindex = 5; - } - /* case H5T_BITFIELD: */ - else if (!HDstrcmp(buffer, "H5T_STD_B8BE")) { - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("BE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = -1; - } - else if (!HDstrcmp(buffer, "H5T_STD_B8LE")) { - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("LE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = -1; - } - else if (!HDstrcmp(buffer, "H5T_STD_B16BE")) { - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("BE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = -1; - } - else if (!HDstrcmp(buffer, "H5T_STD_B16LE")) { - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("LE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = -1; - } - else if (!HDstrcmp(buffer, "H5T_STD_B32BE")) { - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("BE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = -1; - } - else if (!HDstrcmp(buffer, "H5T_STD_B32LE")) { - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("LE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = -1; - } - else if (!HDstrcmp(buffer, "H5T_STD_B64BE")) { - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("BE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = -1; - } - else if (!HDstrcmp(buffer, "H5T_STD_B64LE")) { - - if ((kindex = OutputArchStrToInt("STD")) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->outputArchitecture = kindex; - - if ((kindex = OutputByteOrderStrToInt("LE")) == -1) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - in->outputByteOrder = kindex; - - kindex = -1; - } - /* case H5T_OPAQUE: */ - else if(!HDstrcmp(buffer, "H5T_OPAQUE")) { - kindex = -1; - } - /* case H5T_COMPOUND: */ - else if(!HDstrcmp(buffer, "H5T_COMPOUND")) { - kindex = -1; - } - /* case H5T_REFERENCE: */ - else if(!HDstrcmp(buffer, "H5T_REFERENCE")) { - kindex = -1; - } - /* case H5T_ENUM: */ - else if(!HDstrcmp(buffer, "H5T_ENUM")) { - kindex = -1; - } - /* case H5T_VLEN: */ - else if(!HDstrcmp(buffer, "H5T_VLEN")) { - kindex = -1; - } - /* case H5T_ARRAY: */ - else if(!HDstrcmp(buffer, "H5T_ARRAY")) { - kindex = -1; - } - - if (kindex == -1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - - /*set default value for output-size */ - if (in->configOptionVector[OUTPUT_SIZE] == 0) - in->outputSize = in->inputSize; -#ifdef H5DEBUGIMPORT - printf("h5dump DATATYPE STRING %d inputSize\n", in->inputSize); - printf("h5dump DATATYPE STRING %d outputSize\n", in->outputSize); -#endif - - in->inputClass = kindex; - return (0); -} - -static int InputClassStrToInt(char *temp) -{ - int i; - char classKeywordTable[8][15] = { "TEXTIN", "TEXTFP", "TEXTFPE", "FP", "IN", "STR", "TEXTUIN", "UIN" }; - for (i = 0; i < 8; i++) - if (!HDstrcmp(classKeywordTable[i], temp)) - return i; - return -1; -} - -/* same as getOutputSize. But defined separately for extensibility */ -static int getInputSize(struct Input *in, int ival) -{ - int i; - int inputSizeValidValues[4] = { 8, 16, 32, 64 }; - const char *err1 = "Invalid value for input size.\n"; - - for (i = 0; i < 4; i++) - if (inputSizeValidValues[i] == ival) { - in->inputSize = ival; - return (0); - } - (void) HDfprintf(stderr, "%s", err1); - return (-1); -} - -static int getRank(struct Input *in, FILE *strm) -{ - int ival; - - const char *err1 = "Unable to get integer value.\n"; - const char *err2 = "Invalid value for rank.\n"; - - if (fscanf(strm, "%d", (&ival)) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - if (ival >= MIN_NUM_DIMENSION && ival <= MAX_NUM_DIMENSION) { - in->rank = ival; - return (0); - } - - (void) HDfprintf(stderr, "%s", err2); - return (-1); -} - -/* same as getChunkedDimensionSizes. But defined separately for extensibility */ -static int getDimensionSizes(struct Input *in, FILE *strm) -{ - unsigned long long ullval; - int i = 0; - - const char *err1 = "Unable to allocate dynamic memory.\n"; - const char *err2 = "No. of dimensions for which dimension sizes provided is not equal to provided rank.\n"; - - if ((in->sizeOfDimension = (hsize_t *) HDmalloc ((size_t) in->rank * sizeof(hsize_t))) == NULL) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - - while (fscanf(strm, "%llu", (&ullval)) == 1) - in->sizeOfDimension[i++] = ullval; - - if (in->rank != i) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - return (0); -} -/* same as getDimensionSizes. But defined separately for extensibility */ -static int getChunkedDimensionSizes(struct Input *in, FILE *strm) -{ - unsigned long long ullval; - int i = 0; - - const char *err1 = "Unable to allocate dynamic memory.\n"; - const char *err2 = "No. of dimensions for which chunked dimension sizes provided is not equal to provided rank.\n"; - const char *err3 = "The CHUNKED-DIMENSION-SIZES cannot exceed the sizes of DIMENSION-SIZES\n"; - - if ((in->sizeOfChunk = (hsize_t *) HDmalloc ((size_t) in->rank * sizeof(hsize_t))) == NULL) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - - while (fscanf(strm, "%llu", (&ullval)) == 1) - in->sizeOfChunk[i++] = ullval; - - if (in->rank != i) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - - for (i = 0; i < in->rank; i++) - if (in->sizeOfChunk[i] > in->sizeOfDimension[i]) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - return (0); -} - -static int getMaximumDimensionSizes(struct Input *in, FILE *strm) -{ - long long llval; - int i = 0; - - const char *err1 = "Unable to allocate dynamic memory.\n"; - const char *err2 = "No. of dimensions for which maximum dimension sizes provided is not equal to provided rank.\n"; - const char *err3 = "The MAXIMUM-DIMENSIONS cannot be less than the sizes of DIMENSION-SIZES. Exception: can be -1 to indicate unlimited size\n"; - - if ((in->maxsizeOfDimension = (hsize_t *) HDmalloc ((size_t) in->rank * sizeof(hsize_t))) == NULL) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - - while (fscanf(strm, "%lld", (&llval)) == 1) { - if (llval == -1) - in->maxsizeOfDimension[i++] = H5S_UNLIMITED; - else - in->maxsizeOfDimension[i++] = (hsize_t)llval; - } - - if (in->rank != i) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - - for (i = 0; i < in->rank; i++) { - if (in->maxsizeOfDimension[i] != H5S_UNLIMITED) - if (in->maxsizeOfDimension[i] < in->sizeOfDimension[i]) { - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - } - return (0); -} - -static int getOutputArchitecture(struct Input *in, FILE *strm) -{ - char temp[255]; - int kindex; - const char *err1 = "Unable to get 'string' value.\n"; - const char *err2 = "Invalid value for output architecture.\n"; - - if (fscanf(strm, "%s", temp) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - - if ((kindex = OutputArchStrToInt(temp)) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - - in->outputArchitecture = kindex; - return (0); -} - -static int OutputArchStrToInt(const char *temp) -{ - int i; - char outputArchKeywordTable[8][15] = { "NATIVE", "STD", "IEEE", "INTEL", - "CRAY", "MIPS", "ALPHA", "UNIX" }; - for (i = 0; i < 8; i++) - if (!HDstrcmp(outputArchKeywordTable[i], temp)) - return i; - return -1; -} - -static int getOutputByteOrder(struct Input *in, FILE *strm) -{ - char temp[255]; - int kindex; - const char *err1 = "Unable to get 'string' value.\n"; - const char *err2 = "Invalid value for output byte-order.\n"; - - if (fscanf(strm, "%s", temp) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - - if ((kindex = OutputByteOrderStrToInt(temp)) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - - in->outputByteOrder = kindex; - return (0); -} - -static int OutputByteOrderStrToInt(const char *temp) -{ - int i; - char outputByteOrderKeywordTable[2][15] = { "BE", "LE" }; - for (i = 0; i < 2; i++) - if (!HDstrcmp(outputByteOrderKeywordTable[i], temp)) - return i; - return -1; -} - -static int getCompressionType(struct Input *in, FILE *strm) -{ - char temp[255]; - int kindex; - const char *err1 = "Unable to get 'string' value.\n"; - const char *err2 = "Invalid value for compression.\n"; - - if (fscanf(strm, "%s", temp) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - - if ((kindex = CompressionTypeStrToInt(temp)) == -1) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - - in->compressionType = kindex; - return (0); - -} - -static int CompressionTypeStrToInt(char *temp) -{ - /* currently supports only GZIP */ - /* can be extended by adding fields to the table */ - - int i; - char CompressionTypeKeywordTable[1][15] = { "GZIP" }; - for (i = 0; i < 1; i++) - if (!HDstrcmp(CompressionTypeKeywordTable[i], temp)) - return i; - return -1; -} - -static int getCompressionParameter(struct Input *in, FILE *strm) -{ - /* currently supports only GZIP */ - /* can be extended by adding more values to COMPRESSION-TYPE and */ - /* handling the paramters here by adding more cases */ - - int ival; - const char *err1 = "Unable to get integer value.\n"; - const char *err2 = "Invalid value for compression paramter.\n"; - const char *err3 = "Unsupported Compression Type.\n"; - - switch (in->compressionType) { - case 0: /* GZIP */ - if (fscanf(strm, "%d", (&ival)) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - - if (ival < 0 || ival > 9) { - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - in->compressionParam = ival; - return (0); - - default: - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } -} - -static int getExternalFilename(struct Input *in, FILE *strm) -{ - char temp[255]; - const char *err1 = "Unable to get 'string' value.\n"; - - if (fscanf(strm, "%s", temp) != 1) { - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - - in->externFilename = (char *) HDmalloc ((size_t) (HDstrlen(temp)) * sizeof(char)); - (void) HDstrcpy(in->externFilename, temp); - return (0); -} - -void setDefaultValues(struct Input *in, int count) -{ - int i; - char temp[255]; - char num[255]; - - in->h5dumpInput = 0; - in->inputClass = 3; /* FP */ - in->inputSize = 32; - in->outputClass = 1; /* FP */ - in->outputSize = 32; - in->rank = 0; - in->path.count = 1; - - HDstrcpy(temp, "dataset"); - sprintf(num, "%d", count); - HDstrcat(temp, num); - HDstrcpy(in->path.group[0], temp); - - in->outputArchitecture = 0; /* NATIVE */ - in->outputByteOrder = -1; /* use default */ - in->compressionType = 0; /* GZIP */ - for (i = 0; i < NUM_KEYS; i++) - in->configOptionVector[i] = 0; -} - -hid_t createOutputDataType(struct Input *in) -{ - hid_t new_type = (-1); - const char *err1 = "Invalid value for output class.\n"; - const char *err2 = "Invalid value for output size.\n"; - const char *err3 = "Invalid value for output byte order.\n"; - const char *err4 = "Invalid value for output architecture.\n"; - const char *err5 = "STD not supported for float.\n"; - const char *err6 = "IEEE not supported for INT.\n"; - - switch (in->outputClass) { - case 0: - switch (in->outputArchitecture) { - case 0: /* NATIVE */ - switch (in->outputSize) { - case 8: - new_type = H5Tcopy(H5T_NATIVE_CHAR); - break; - - case 16: - new_type = H5Tcopy(H5T_NATIVE_SHORT); - break; - - case 32: - new_type = H5Tcopy(H5T_NATIVE_INT); - break; - - case 64: - new_type = H5Tcopy(H5T_NATIVE_LLONG); - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - switch (in->outputByteOrder) { - case -1: /* default */ - break; - case 0: - H5Tset_order(new_type, H5T_ORDER_BE); - break; - - case 1: - H5Tset_order(new_type, H5T_ORDER_LE); - break; - - default: - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - break; - - case 1: /* STD */ - switch (in->outputSize) { - case 8: - switch (in->outputByteOrder) { - case -1: - case 0: - new_type = H5Tcopy(H5T_STD_I8BE); - break; - - case 1: - new_type = H5Tcopy(H5T_STD_I8LE); - break; - - default: - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - break; - - case 16: - switch (in->outputByteOrder) { - case -1: - case 0: - new_type = H5Tcopy(H5T_STD_I16BE); - break; - - case 1: - new_type = H5Tcopy(H5T_STD_I16LE); - break; - - default: - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - break; - - case 32: - switch (in->outputByteOrder) { - case -1: - case 0: - new_type = H5Tcopy(H5T_STD_I32BE); - break; - - case 1: - new_type = H5Tcopy(H5T_STD_I32LE); - break; - - default: - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - break; - - case 64: - switch (in->outputByteOrder) { - case -1: - case 0: - new_type = H5Tcopy(H5T_STD_I64BE); - break; - - case 1: - new_type = H5Tcopy(H5T_STD_I64LE); - break; - - default: - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - break; - - default: - (void) HDfprintf(stderr, "%s", err4); - return (-1); - } - break; - - case 1: - switch (in->outputArchitecture) { - case 0: - switch (in->outputSize) { - case 32: - new_type = H5Tcopy(H5T_NATIVE_FLOAT); - break; - - case 64: - new_type = H5Tcopy(H5T_NATIVE_DOUBLE); - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - switch (in->outputByteOrder) { - case -1: /* DEFAULT */ - break; - case 0: - H5Tset_order(new_type, H5T_ORDER_BE); - break; - - case 1: - H5Tset_order(new_type, H5T_ORDER_LE); - break; - - default: - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - break; - - case 1: - (void) HDfprintf(stderr, "%s", err5); - return (-1); - - case 2: - switch (in->outputSize) { - case 32: - switch (in->outputByteOrder) { - case -1: - case 0: - new_type = H5Tcopy(H5T_IEEE_F32BE); - break; - - case 1: - new_type = H5Tcopy(H5T_IEEE_F32LE); - break; - - default: - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - break; - - case 64: - switch (in->outputByteOrder) { - case -1: - case 0: - new_type = H5Tcopy(H5T_IEEE_F64BE); - break; - - case 1: - new_type = H5Tcopy(H5T_IEEE_F64LE); - break; - - default: - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - break; - - default: - (void) HDfprintf(stderr, "%s", err4); - return (-1); - } - break; - - case 2: - switch (in->outputArchitecture) { - case 0: - switch (in->outputSize) { - case 8: - new_type = H5Tcopy(H5T_NATIVE_UCHAR); - break; - - case 16: - new_type = H5Tcopy(H5T_NATIVE_USHORT); - break; - - case 32: - new_type = H5Tcopy(H5T_NATIVE_UINT); - break; - - case 64: - new_type = H5Tcopy(H5T_NATIVE_ULLONG); - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - switch (in->outputByteOrder) { - case -1: /* Default */ - break; - case 0: - H5Tset_order(new_type, H5T_ORDER_BE); - break; - - case 1: - H5Tset_order(new_type, H5T_ORDER_LE); - break; - - default: - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - break; - - case 1: - switch (in->outputSize) { - case 8: - switch (in->outputByteOrder) { - case -1: - case 0: - new_type = H5Tcopy(H5T_STD_U8BE); - break; - - case 1: - new_type = H5Tcopy(H5T_STD_U8LE); - break; - - default: - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - break; - - case 16: - switch (in->outputByteOrder) { - case -1: - case 0: - new_type = H5Tcopy(H5T_STD_U16BE); - break; - - case 1: - new_type = H5Tcopy(H5T_STD_U16LE); - break; - - default: - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - break; - - case 32: - switch (in->outputByteOrder) { - case -1: - case 0: - new_type = H5Tcopy(H5T_STD_U32BE); - break; - - case 1: - new_type = H5Tcopy(H5T_STD_U32LE); - break; - - default: - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - break; - - case 64: - switch (in->outputByteOrder) { - case -1: - case 0: - new_type = H5Tcopy(H5T_STD_U64BE); - break; - - case 1: - new_type = H5Tcopy(H5T_STD_U64LE); - break; - - default: - (void) HDfprintf(stderr, "%s", err3); - return (-1); - } - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - break; - - case 2: - (void) HDfprintf(stderr, "%s", err6); - return (-1); - - default: - (void) HDfprintf(stderr, "%s", err4); - return (-1); - } - break; - - default: - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - return new_type; -} - -hid_t createInputDataType(struct Input *in) -{ - hid_t new_type = (-1); - const char *err1 = "Invalid value for input class.\n"; - const char *err2 = "Invalid value for output size.\n"; - - switch (in->inputClass) { - case 0: - case 4: - switch (in->inputSize) { - case 8: - new_type = H5Tcopy(H5T_NATIVE_CHAR); - break; - - case 16: - new_type = H5Tcopy(H5T_NATIVE_SHORT); - break; - - case 32: - new_type = H5Tcopy(H5T_NATIVE_INT); - break; - - case 64: - new_type = H5Tcopy(H5T_NATIVE_LLONG); - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - break; - - case 1: - case 2: - case 3: - switch (in->inputSize) { - case 32: - new_type = H5Tcopy(H5T_NATIVE_FLOAT); - break; - - case 64: - new_type = H5Tcopy(H5T_NATIVE_DOUBLE); - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - break; - - case 5: - (void) HDfprintf(stderr, "%s", err1); - return (-1); - break; - - case 6: - case 7: - switch (in->inputSize) { - case 8: - new_type = H5Tcopy(H5T_NATIVE_UCHAR); - break; - - case 16: - new_type = H5Tcopy(H5T_NATIVE_USHORT); - break; - - case 32: - new_type = H5Tcopy(H5T_NATIVE_UINT); - break; - - case 64: - new_type = H5Tcopy(H5T_NATIVE_ULLONG); - break; - - default: - (void) HDfprintf(stderr, "%s", err2); - return (-1); - } - break; - - default: - (void) HDfprintf(stderr, "%s", err1); - return (-1); - } - return new_type; -} - -static int process(struct Options *opt) -{ - struct Input *in; - FILE *extfile; - hid_t file_id; - hid_t group_id; - hid_t handle; - hid_t dataset; - hid_t dataspace = (-1); - hid_t intype; - hid_t outtype; - hid_t proplist; - hsize_t numOfElements = 1; - int j; - int k; - - const char *err1 = "Error creating HDF output file: %s.\n"; - const char *err2 = "Error in processing the configuration file: %s.\n"; - const char *err3 = "Error in reading the input file: %s.\n"; - const char *err4 = "Error in creating or opening external file.\n"; - const char *err5 = "Error in creating the output data set. Dataset with the same name may exist at the specified path\n"; - const char *err6 = "Error in writing the output data set.\n"; - - H5E_BEGIN_TRY - { - if ((file_id = H5Fopen(opt->outfile, H5F_ACC_RDWR, H5P_DEFAULT)) < 0) { - if ((file_id = H5Fcreate(opt->outfile, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) == FAIL) { - (void) HDfprintf(stderr, err1, opt->outfile); - return (-1); - } - } - } - H5E_END_TRY; - - for (k = 0; k < opt->fcount; k++) { - in = &(opt->infiles[k].in); - if (opt->infiles[k].config == 1) { - if (processConfigurationFile(opt->infiles[k].configfile, in) == -1) { - (void) HDfprintf(stderr, err2, opt->infiles[k].configfile); - return (-1); - } - } - - if (processDataFile(opt->infiles[k].datafile, in, file_id) == -1) { - (void) HDfprintf(stderr, err3, opt->infiles[k].datafile); - return (-1); - } - - if (in->inputClass != 5) { /* STR */ - for (j = 0; j < in->rank; j++) - numOfElements *= in->sizeOfDimension[j]; - - /* disable error reporting */ - H5E_BEGIN_TRY - { - /* create parent groups */ - if (in->path.count > 1) { - j = 0; - handle = file_id; - while (j < in->path.count - 1) { - if ((group_id = H5Gopen2(handle, in->path.group[j], H5P_DEFAULT)) < 0) { - group_id = H5Gcreate2(handle, in->path.group[j++], H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - for (; j < in->path.count - 1; j++) - group_id = H5Gcreate2(group_id, in->path.group[j], H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - handle = group_id; - break; - } - handle = group_id; - j++; - } - } - else { - handle = file_id; - j = 0; - } - - /*enable error reporting */ - } - H5E_END_TRY; - - /*create data type */ - intype = createInputDataType(in); - outtype = createOutputDataType(in); -#ifdef H5DEBUGIMPORT - printf("process intype %d outtype %d\n", intype, outtype); -#endif - - /* create property list */ - proplist = H5Pcreate(H5P_DATASET_CREATE); - if (in->configOptionVector[CHUNK] == 1) { - H5Pset_layout(proplist, H5D_CHUNKED); - /* not reqd chunking is implied if set_chunk is used */ - H5Pset_chunk(proplist, in->rank, in->sizeOfChunk); - } - - if (in->configOptionVector[COMPRESS] == 1) { - H5Pset_deflate(proplist, (unsigned) in->compressionParam); - } - - if (in->configOptionVector[EXTERNALSTORE] == 1) { - /* creating the external file if it doesnt exist */ - if ((extfile = HDfopen(in->externFilename, "ab")) == NULL) { - (void) HDfprintf(stderr, "%s", err4); - H5Pclose(proplist); - H5Sclose(dataspace); - H5Fclose(file_id); - return (-1); - } - HDfclose(extfile); - H5Pset_external(proplist, in->externFilename, (off_t)0, numOfElements * (hsize_t)in->inputSize / 8); - } - - /* create dataspace */ - if (in->configOptionVector[EXTEND] == 1) - dataspace = H5Screate_simple(in->rank, in->sizeOfDimension, in->maxsizeOfDimension); - else - dataspace = H5Screate_simple(in->rank, in->sizeOfDimension, NULL); - - /* disable error reporting */ - H5E_BEGIN_TRY - { - /* create data set */ - if ((dataset = H5Dcreate2(handle, in->path.group[j], outtype, dataspace, H5P_DEFAULT, proplist, H5P_DEFAULT)) < 0) { - (void) HDfprintf(stderr, "%s", err5); - H5Pclose(proplist); - H5Sclose(dataspace); - H5Fclose(file_id); - return (-1); - } - - /*enable error reporting */ - } - H5E_END_TRY; - - /* write dataset */ - if (H5Dwrite(dataset, intype, H5S_ALL, H5S_ALL, H5P_DEFAULT, (VOIDP) in->data) < 0) { - (void) HDfprintf(stderr, "%s", err6); - H5Dclose(dataset); - H5Pclose(proplist); - H5Sclose(dataspace); - H5Fclose(file_id); - return (-1); - } - - H5Dclose(dataset); - H5Pclose(proplist); - H5Sclose(dataspace); - } - - } /* STR */ - - H5Fclose(file_id); - return (0); -} - -/* - * Name: - * help - * - * Purpose: - * Print a helpful summary of command usage and features. - */ - -void help(char *name) -{ - (void) HDfprintf(stdout, "Name:\n\n"); - (void) HDfprintf(stdout, "\t%s\n\n", name); - (void) HDfprintf(stdout, "\t TOOL NAME:\n"); - (void) HDfprintf(stdout, "\t %s\n", name); - (void) HDfprintf(stdout, "\t SYNTAX:\n"); - (void) HDfprintf(stdout, "\t %s -h[elp], OR\n", name); - (void) HDfprintf(stdout, - "\t %s -c[onfig] [ -c[config] ...]", name); - (void) HDfprintf(stdout, "\t\t\t\t -o[utfile] \n\n"); - (void) HDfprintf(stdout, "\t PURPOSE:\n"); - (void) HDfprintf(stdout, - "\t To convert data stored in one or more ASCII or binary files\n"); - (void) HDfprintf(stdout, - "\t into one or more datasets (in accordance with the \n"); - (void) HDfprintf(stdout, - "\t user-specified type and storage properties) in an existing \n"); - (void) HDfprintf(stdout, "\t or new HDF5 file.\n\n"); - (void) HDfprintf(stdout, "\t DESCRIPTION:\n"); - (void) HDfprintf(stdout, - "\t The primary objective of the utility is to convert floating\n"); - (void) HDfprintf(stdout, - "\t point or integer data stored in ASCII text or binary form \n"); - (void) HDfprintf(stdout, - "\t into a data-set according to the type and storage properties\n"); - (void) HDfprintf(stdout, - "\t specified by the user. The utility can also accept ASCII\n"); - (void) HDfprintf(stdout, - "\t text files and store the contents in a compact form as an\n"); - (void) HDfprintf(stdout, "\t array of one-dimensional strings.\n\n"); - (void) HDfprintf(stdout, - "\t The input data to be written as a data-set can be provided\n"); - (void) HDfprintf(stdout, "\t to the utility in one of the following forms:\n"); - (void) HDfprintf(stdout, - "\t 1. ASCII text file with numeric data (floating point or \n"); - (void) HDfprintf(stdout, "\t integer data). \n"); - (void) HDfprintf(stdout, - "\t 2. Binary file with native floating point data (32-bit or \n"); - (void) HDfprintf(stdout, "\t 64-bit) \n"); - (void) HDfprintf(stdout, - "\t 3. Binary file with native integer (signed or unsigned)\n"); - (void) HDfprintf(stdout, "\t data (8-bit or 16-bit or 32-bit or 64-bit). \n"); - (void) HDfprintf(stdout, - "\t 4. ASCII text file containing strings (text data).\n"); - (void) HDfprintf(stdout, "\t \n"); - (void) HDfprintf(stdout, - "\t Every input file is associated with a configuration file \n"); - (void) HDfprintf(stdout, - "\t also provided as an input to the utility. (See Section \n"); - (void) HDfprintf(stdout, - "\t \"CONFIGURATION FILE\" to know how it is to be organized).\n"); - (void) HDfprintf(stdout, - "\t The class, size and dimensions of the input data is \n"); - (void) HDfprintf(stdout, - "\t specified in this configuration file. A point to note is\n"); - (void) HDfprintf(stdout, - "\t that the floating point data in the ASCII text file may be\n"); - (void) HDfprintf(stdout, - "\t organized in the fixed floating form (for example 323.56)\n"); - (void) HDfprintf(stdout, - "\t or in a scientific notation (for example 3.23E+02). A \n"); - (void) HDfprintf(stdout, - "\t different input-class specification is to be used for both\n"); - (void) HDfprintf(stdout, "\t forms.\n\n"); - (void) HDfprintf(stdout, - "\t The utility extracts the input data from the input file \n"); - (void) HDfprintf(stdout, - "\t according to the specified parameters and saves it into \n"); - (void) HDfprintf(stdout, "\t an H5 dataset. \n\n"); - (void) HDfprintf(stdout, - "\t The user can specify output type and storage properties in \n"); - (void) HDfprintf(stdout, - "\t the configuration file. The user is required to specify the \n"); - (void) HDfprintf(stdout, - "\t path of the dataset. If the groups in the path leading to \n"); - (void) HDfprintf(stdout, - "\t the data-set do not exist, the groups will be created by the\n"); - (void) HDfprintf(stdout, - "\t utility. If no group is specified, the dataset will be\n"); - (void) HDfprintf(stdout, "\t created under the root group.\n\n"); - (void) HDfprintf(stdout, - "\t In addition to the name, the user is also required to \n"); - (void) HDfprintf(stdout, - "\t provide the class and size of output data to be written to \n"); - (void) HDfprintf(stdout, - "\t the dataset and may optionally specify the output-architecture,\n"); - (void) HDfprintf(stdout, - "\t and the output-byte-order. If output-architecture is not \n"); - (void) HDfprintf(stdout, - "\t specified the default is NATIVE. Output-byte-orders are fixed\n"); - (void) HDfprintf(stdout, - "\t for some architectures and may be specified only if output-\n"); - (void) HDfprintf(stdout, "\t architecture is IEEE, UNIX or STD.\n\n"); - (void) HDfprintf(stdout, - "\t Also, layout and other storage properties such as \n"); - (void) HDfprintf(stdout, - "\t compression, external storage and extendible data-sets may be\n"); - (void) HDfprintf(stdout, - "\t optionally specified. The layout and storage properties \n"); - (void) HDfprintf(stdout, - "\t denote how raw data is to be organized on the disk. If these \n"); - (void) HDfprintf(stdout, - "\t options are not specified the default is Contiguous layout \n"); - (void) HDfprintf(stdout, "\t and storage.\n\n"); - (void) HDfprintf(stdout, - "\t The dataset can be organized in any of the following ways:\n"); - (void) HDfprintf(stdout, "\t 1. Contiguous.\n"); - (void) HDfprintf(stdout, "\t 2. Chunked.\n"); - (void) HDfprintf(stdout, - "\t 3. External Storage File (has to be contiguous)\n"); - (void) HDfprintf(stdout, - "\t 4. Extendible data sets (has to be chunked)\n"); - (void) HDfprintf(stdout, "\t 5. Compressed. (has to be chunked)\n"); - (void) HDfprintf(stdout, - "\t 6. Compressed & Extendible (has to be chunked)\n\n"); - (void) HDfprintf(stdout, - "\t If the user wants to store raw data in a non-HDF file then \n"); - (void) HDfprintf(stdout, - "\t the external storage file option is to be used and the name \n"); - (void) HDfprintf(stdout, "\t of the file is to be specified. \n\n"); - (void) HDfprintf(stdout, - "\t If the user wants the dimensions of the data-set to be\n"); - (void) HDfprintf(stdout, - "\t unlimited, the extendible data set option can be chosen. \n\n"); - (void) HDfprintf(stdout, - "\t The user may also specify the type of compression and the \n"); - (void) HDfprintf(stdout, - "\t level to which the data set must be compresses by setting \n"); - (void) HDfprintf(stdout, "\t the compressed option.\n\n"); - (void) HDfprintf(stdout, "\t SYNOPSIS:\n"); - (void) HDfprintf(stdout, "\t h5import -h[elp], OR\n"); - (void) HDfprintf( stdout, - "\t h5import -c[onfig] \ - [ -c[config] ...] -o[utfile] \n\n"); - (void) HDfprintf(stdout, "\t -h[elp]:\n"); - (void) HDfprintf(stdout, - "\t Prints this summary of usage, and exits.\n\n"); - (void) HDfprintf(stdout, "\t :\n"); - (void) HDfprintf(stdout, - "\t Name of the Input file(s), containing a \n"); - (void) HDfprintf(stdout, - "\t single n-dimensional floating point or integer array \n"); - (void) HDfprintf(stdout, - "\t in either ASCII text, native floating point(32-bit \n"); - (void) HDfprintf(stdout, - "\t or 64-bit) or native integer(8-bit or 16-bit or \n"); - (void) HDfprintf(stdout, - "\t 32-bit or 64-bit). Data to be specified in the order\n"); - (void) HDfprintf(stdout, "\t of fastest changing dimensions first.\n\n"); - (void) HDfprintf(stdout, "\t -c[config] :\n"); - (void) HDfprintf(stdout, - "\t Every input file should be associated with a \n"); - (void) HDfprintf(stdout, - "\t configuration file and this is done by the -c option.\n"); - (void) HDfprintf(stdout, - "\t is the name of the configuration file.\n"); - (void) HDfprintf(stdout, "\t (See Section \"CONFIGURATION FILE\")\n\n"); - (void) HDfprintf(stdout, "\t -o[utfile] :\n"); - (void) HDfprintf(stdout, - "\t Name of the HDF5 output file. Data from one or more \n"); - (void) HDfprintf(stdout, - "\t input files are stored as one or more data sets in \n"); - (void) HDfprintf(stdout, - "\t . The output file may be an existing file or \n"); - (void) HDfprintf(stdout, - "\t it maybe new in which case it will be created.\n\n\n"); - (void) HDfprintf(stdout, "\t CONFIGURATION FILE:\n"); - (void) HDfprintf(stdout, - "\t The configuration file is an ASCII text file and must be \n"); - (void) HDfprintf(stdout, - "\t the ddl formatted file (without data values) produced by h5dump \n"); - (void) HDfprintf(stdout, - "\t when used with the options '-o outfilename -b' of a single dataset (-d) \n"); - (void) HDfprintf(stdout, - "\t OR organized as \"CONFIG-KEYWORD VALUE\" pairs, one pair on each \n"); - (void) HDfprintf(stdout, "\t line.\n\n"); - (void) HDfprintf(stdout, - "\t The configuration file may have the following keywords each \n"); - (void) HDfprintf(stdout, "\t followed by an acceptable value.\n\n"); - (void) HDfprintf(stdout, "\t Required KEYWORDS:\n"); - (void) HDfprintf(stdout, "\t PATH\n"); - (void) HDfprintf(stdout, "\t INPUT-CLASS\n"); - (void) HDfprintf(stdout, "\t INPUT-SIZE\n"); - (void) HDfprintf(stdout, "\t RANK\n"); - (void) HDfprintf(stdout, "\t DIMENSION-SIZES\n"); - (void) HDfprintf(stdout, "\t OUTPUT-CLASS\n"); - (void) HDfprintf(stdout, "\t OUTPUT-SIZE\n\n"); - (void) HDfprintf(stdout, "\t Optional KEYWORDS:\n"); - (void) HDfprintf(stdout, "\t OUTPUT-ARCHITECTURE\n"); - (void) HDfprintf(stdout, "\t OUTPUT-BYTE-ORDER\n"); - (void) HDfprintf(stdout, "\t CHUNKED-DIMENSION-SIZES\n"); - (void) HDfprintf(stdout, "\t COMPRESSION-TYPE\n"); - (void) HDfprintf(stdout, "\t COMPRESSION-PARAM\n"); - (void) HDfprintf(stdout, "\t EXTERNAL-STORAGE\n"); - (void) HDfprintf(stdout, "\t MAXIMUM-DIMENSIONS\n\n\n"); - (void) HDfprintf(stdout, "\t Values for keywords:\n"); - (void) HDfprintf(stdout, "\t PATH:\n"); - (void) HDfprintf(stdout, "\t Strings separated by spaces to represent\n"); - (void) HDfprintf(stdout, "\t the path of the data-set. If the groups in\n"); - (void) HDfprintf(stdout, - "\t the path do not exist, they will be created. \n"); - (void) HDfprintf(stdout, "\t For example,\n"); - (void) HDfprintf(stdout, "\t PATH grp1/grp2/dataset1\n"); - (void) HDfprintf(stdout, "\t PATH: keyword\n"); - (void) HDfprintf(stdout, "\t grp1: group under the root. If\n"); - (void) HDfprintf(stdout, "\t non-existent will be created.\n"); - (void) HDfprintf(stdout, "\t grp2: group under grp1. If \n"); - (void) HDfprintf(stdout, "\t non-existent will be created \n"); - (void) HDfprintf(stdout, "\t under grp1.\n"); - (void) HDfprintf(stdout, "\t dataset1: the name of the data-set \n"); - (void) HDfprintf(stdout, "\t to be created.\n\n"); - (void) HDfprintf(stdout, "\t INPUT-CLASS:\n"); - (void) HDfprintf(stdout, "\t String denoting the type of input data.\n"); - (void) HDfprintf(stdout, "\t (\"TEXTIN\", \"TEXTFP\", \"FP\", \"IN\", \n"); - (void) HDfprintf(stdout, "\t \"STR\", \"TEXTUIN\", \"UIN\"). \n"); - (void) HDfprintf(stdout, - "\t INPUT-CLASS \"TEXTIN\" denotes an ASCII text \n"); - (void) HDfprintf(stdout, - "\t file with signed integer data in ASCII form,\n"); - (void) HDfprintf(stdout, - "\t INPUT-CLASS \"TEXTUIN\" denotes an ASCII text \n"); - (void) HDfprintf(stdout, - "\t file with unsigned integer data in ASCII form,\n"); - (void) HDfprintf(stdout, - "\t \"TEXTFP\" denotes an ASCII text file containing\n"); - (void) HDfprintf(stdout, "\t floating point data in the fixed notation\n"); - (void) HDfprintf(stdout, "\t (325.34),\n"); - (void) HDfprintf(stdout, - "\t \"FP\" denotes a floating point binary file,\n"); - (void) HDfprintf(stdout, - "\t \"IN\" denotes a signed integer binary file,\n"); - (void) HDfprintf(stdout, - "\t \"UIN\" denotes an unsigned integer binary file,\n"); - (void) HDfprintf(stdout, "\t & \"STR\" denotes an ASCII text file the \n"); - (void) HDfprintf(stdout, - "\t contents of which should be stored as an 1-D \n"); - (void) HDfprintf(stdout, "\t array of strings.\n"); - (void) HDfprintf(stdout, "\t If INPUT-CLASS is \"STR\", then RANK, \n"); - (void) HDfprintf(stdout, - "\t DIMENSION-SIZES, OUTPUT-CLASS, OUTPUT-SIZE, \n"); - (void) HDfprintf(stdout, "\t OUTPUT-ARCHITECTURE and OUTPUT-BYTE-ORDER \n"); - (void) HDfprintf(stdout, "\t will be ignored.\n\n\n"); - (void) HDfprintf(stdout, "\t INPUT-SIZE:\n"); - (void) HDfprintf(stdout, - "\t Integer denoting the size of the input data \n"); - (void) HDfprintf(stdout, "\t (8, 16, 32, 64). \n\n"); - (void) HDfprintf(stdout, "\t For floating point,\n"); - (void) HDfprintf(stdout, "\t INPUT-SIZE can be 32 or 64.\n"); - (void) HDfprintf(stdout, "\t For integers (signed and unsigned)\n"); - (void) HDfprintf(stdout, "\t INPUT-SIZE can be 8, 16, 32 or 64.\n\n"); - (void) HDfprintf(stdout, "\t RANK:\n"); - (void) HDfprintf(stdout, - "\t Integer denoting the number of dimensions.\n\n"); - (void) HDfprintf(stdout, "\t DIMENSION-SIZES:\n"); - (void) HDfprintf(stdout, - "\t Integers separated by spaces to denote the \n"); - (void) HDfprintf(stdout, "\t dimension sizes for the no. of dimensions \n"); - (void) HDfprintf(stdout, "\t determined by rank.\n\n"); - (void) HDfprintf(stdout, "\t OUTPUT-CLASS:\n"); - (void) HDfprintf(stdout, - "\t String dentoting data type of the dataset to \n"); - (void) HDfprintf(stdout, "\t be written (\"IN\",\"FP\", \"UIN\")\n\n"); - (void) HDfprintf(stdout, "\t OUTPUT-SIZE:\n"); - (void) HDfprintf(stdout, - "\t Integer denoting the size of the data in the \n"); - (void) HDfprintf(stdout, "\t output dataset to be written.\n"); - (void) HDfprintf(stdout, - "\t If OUTPUT-CLASS is \"FP\", OUTPUT-SIZE can be \n"); - (void) HDfprintf(stdout, "\t 32 or 64.\n"); - (void) HDfprintf(stdout, - "\t If OUTPUT-CLASS is \"IN\" or \"UIN\", OUTPUT-SIZE\n"); - (void) HDfprintf(stdout, "\t can be 8, 16, 32 or 64.\n\n"); - (void) HDfprintf(stdout, "\t OUTPUT-ARCHITECTURE:\n"); - (void) HDfprintf(stdout, "\t STRING denoting the type of output \n"); - (void) HDfprintf(stdout, - "\t architecture. Can accept the following values\n"); - (void) HDfprintf(stdout, "\t STD\n"); - (void) HDfprintf(stdout, "\t IEEE\n"); - (void) HDfprintf(stdout, "\t INTEL\n"); - (void) HDfprintf(stdout, "\t CRAY\n"); - (void) HDfprintf(stdout, "\t MIPS\n"); - (void) HDfprintf(stdout, "\t ALPHA\n"); - (void) HDfprintf(stdout, "\t NATIVE (default)\n"); - (void) HDfprintf(stdout, "\t UNIX\n\n"); - (void) HDfprintf(stdout, "\t OUTPUT-BYTE-ORDER:\n"); - (void) HDfprintf(stdout, - "\t String denoting the output-byte-order. Ignored\n"); - (void) HDfprintf(stdout, - "\t if the OUTPUT-ARCHITECTURE is not specified or\n"); - (void) HDfprintf(stdout, "\t if it is IEEE, UNIX or STD. Can accept the \n"); - (void) HDfprintf(stdout, "\t following values.\n"); - (void) HDfprintf(stdout, "\t BE (default)\n"); - (void) HDfprintf(stdout, "\t LE\n\n"); - (void) HDfprintf(stdout, "\t CHUNKED-DIMENSION-SIZES:\n"); - (void) HDfprintf(stdout, "\t Integers separated by spaces to denote the \n"); - (void) HDfprintf(stdout, - "\t dimension sizes of the chunk for the no. of \n"); - (void) HDfprintf(stdout, - "\t dimensions determined by rank. Required field\n"); - (void) HDfprintf(stdout, - "\t to denote that the dataset will be stored with\n"); - (void) HDfprintf(stdout, - "\t chunked storage. If this field is absent the\n"); - (void) HDfprintf(stdout, - "\t dataset will be stored with contiguous storage.\n\n"); - (void) HDfprintf(stdout, "\t COMPRESSION-TYPE:\n"); - (void) HDfprintf(stdout, - "\t String denoting the type of compression to be\n"); - (void) HDfprintf(stdout, "\t used with the chunked storage. Requires the\n"); - (void) HDfprintf(stdout, - "\t CHUNKED-DIMENSION-SIZES to be specified. The only \n"); - (void) HDfprintf(stdout, - "\t currently supported compression method is GZIP. \n"); - (void) HDfprintf(stdout, "\t Will accept the following value\n"); - (void) HDfprintf(stdout, "\t GZIP\n\n"); - (void) HDfprintf(stdout, "\t COMPRESSION-PARAM:\n"); - (void) HDfprintf(stdout, - "\t Integer used to denote compression level and \n"); - (void) HDfprintf(stdout, "\t this option is to be always specified when \n"); - (void) HDfprintf(stdout, - "\t the COMPRESSION-TYPE option is specified. The\n"); - (void) HDfprintf(stdout, "\t values are applicable only to GZIP \n"); - (void) HDfprintf(stdout, "\t compression.\n"); - (void) HDfprintf(stdout, "\t Value 1-9: The level of Compression. \n"); - (void) HDfprintf(stdout, "\t 1 will result in the fastest \n"); - (void) HDfprintf(stdout, "\t compression while 9 will result in \n"); - (void) HDfprintf(stdout, "\t the best compression ratio. The default\n"); - (void) HDfprintf(stdout, "\t level of compression is 6.\n\n"); - (void) HDfprintf(stdout, "\t EXTERNAL-STORAGE:\n"); - (void) HDfprintf(stdout, - "\t String to denote the name of the non-HDF5 file \n"); - (void) HDfprintf(stdout, - "\t to store data to. Cannot be used if CHUNKED-\n"); - (void) HDfprintf(stdout, - "\t DIMENSIONS or COMPRESSION-TYPE or EXTENDIBLE-\n"); - (void) HDfprintf(stdout, "\t DATASET is specified.\n"); - (void) HDfprintf(stdout, "\t Value : the name of the \n"); - (void) HDfprintf(stdout, "\t external file as a string to be used.\n\n"); - (void) HDfprintf(stdout, "\t MAXIMUM-DIMENSIONS:\n"); - (void) HDfprintf(stdout, "\t Integers separated by spaces to denote the \n"); - (void) HDfprintf(stdout, "\t maximum dimension sizes of all the \n"); - (void) HDfprintf(stdout, "\t dimensions determined by rank. Requires the\n"); - (void) HDfprintf(stdout, - "\t CHUNKED-DIMENSION-SIZES to be specified. A value of \n"); - (void) HDfprintf(stdout, "\t -1 for any dimension implies UNLIMITED \n"); - (void) HDfprintf(stdout, - "\t DIMENSION size for that particular dimension.\n\n"); - (void) HDfprintf(stdout, "\t EXAMPLES:\n"); - (void) HDfprintf(stdout, "\t 1. Configuration File may look like:\n\n"); - (void) HDfprintf(stdout, "\t PATH work h5 pkamat First-set\n"); - (void) HDfprintf(stdout, "\t INPUT-CLASS TEXTFP\n"); - (void) HDfprintf(stdout, "\t RANK 3\n"); - (void) HDfprintf(stdout, "\t DIMENSION-SIZES 5 2 4\n"); - (void) HDfprintf(stdout, "\t OUTPUT-CLASS FP\n"); - (void) HDfprintf(stdout, "\t OUTPUT-SIZE 64\n"); - (void) HDfprintf(stdout, "\t OUTPUT-ARCHITECTURE IEEE\n"); - (void) HDfprintf(stdout, "\t OUTPUT-BYTE-ORDER LE\n"); - (void) HDfprintf(stdout, "\t CHUNKED-DIMENSION-SIZES 2 2 2 \n\n"); - (void) HDfprintf(stdout, - "\t The above configuration will accept a floating point array \n"); - (void) HDfprintf(stdout, - "\t (5 x 2 x 4) in an ASCII file with the rank and dimension sizes \n"); - (void) HDfprintf(stdout, - "\t specified and will save it in a chunked data-set (of pattern \n"); - (void) HDfprintf(stdout, - "\t 2 X 2 X 2) of 64-bit floating point in the little-endian order \n"); - (void) HDfprintf(stdout, - "\t and IEEE architecture. The dataset will be stored at\n"); - (void) HDfprintf(stdout, "\t \"/work/h5/pkamat/First-set\"\n\n"); - (void) HDfprintf(stdout, "\t 2. Another configuration could be:\n\n"); - (void) HDfprintf(stdout, "\t PATH Second-set\n"); - (void) HDfprintf(stdout, "\t INPUT-CLASS IN \n"); - (void) HDfprintf(stdout, "\t RANK 5\n"); - (void) HDfprintf(stdout, "\t DIMENSION-SIZES 6 3 5 2 4\n"); - (void) HDfprintf(stdout, "\t OUTPUT-CLASS IN\n"); - (void) HDfprintf(stdout, "\t OUTPUT-SIZE 32\n"); - (void) HDfprintf(stdout, "\t CHUNKED-DIMENSION-SIZES 2 2 2 2 2\n"); - (void) HDfprintf(stdout, "\t EXTENDIBLE-DATASET 1 3 \n"); - (void) HDfprintf(stdout, "\t COMPRESSION-TYPE GZIP\n"); - (void) HDfprintf(stdout, "\t COMPRESSION-PARAM 7\n\n\n"); - (void) HDfprintf(stdout, - "\t The above configuration will accept an integer array \n"); - (void) HDfprintf(stdout, - "\t (6 X 3 X 5 x 2 x 4) in a binary file with the rank and \n"); - (void) HDfprintf(stdout, - "\t dimension sizes specified and will save it in a chunked data-set\n"); - (void) HDfprintf(stdout, - "\t (of pattern 2 X 2 X 2 X 2 X 2) of 32-bit floating point in \n"); - (void) HDfprintf(stdout, - "\t native format (as output-architecture is not specified). The \n"); - (void) HDfprintf(stdout, - "\t first and the third dimension will be defined as unlimited. The \n"); - (void) HDfprintf(stdout, - "\t data-set will be compressed using GZIP and a compression level \n"); - (void) HDfprintf(stdout, "\t of 7.\n"); - (void) HDfprintf(stdout, - "\t The dataset will be stored at \"/Second-set\"\n\n"); - return; -} - -void usage(char *name) -{ - (void) HDfprintf(stdout, "\nUsage:\t%s -h[elp], OR\n", name); - (void) HDfprintf(stdout, - "\t%s -c[onfig] \ - [ -c[config] ...] -o[utfile] \n\n", name); - return; -} - diff --git a/tools/h5import/h5import.h b/tools/h5import/h5import.h deleted file mode 100644 index c242483..0000000 --- a/tools/h5import/h5import.h +++ /dev/null @@ -1,198 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * - * Data and structure definitions for h5import - * - */ - -#ifndef H5IMPORT_H__ -#define H5IMPORT_H__ - -/* - * state table tokens - */ -#define FILNAME 0 -/* filename */ -#define OPT_o 1 -/* output filename */ -#define OPT_c 2 /* configuration filename */ -#define OPT_h 3 /* request for explanation */ -#define OPT_d 4 /* dimensions */ -#define OPT_p 5 /* pathname */ -#define OPT_t 6 /* data type */ -#define OPT_s 7 /* data size */ -#define ERR 20 /* invalid token */ - -#define MAX_GROUPS_IN_PATH 20 -#define MAX_PATH_NAME_LENGTH 255 -#define NUM_KEYS 14 -#define MIN_NUM_DIMENSION 1 -#define MAX_NUM_DIMENSION 32 -#define BASE_10 10 - -#define PATH 0 -#define INPUT_CLASS 1 -#define INPUT_SIZE 2 -#define RANK 3 -#define DIM 4 -#define OUTPUT_CLASS 5 -#define OUTPUT_SIZE 6 -#define OUTPUT_ARCH 7 -#define OUTPUT_B_ORDER 8 -#define CHUNK 9 -#define COMPRESS 10 -#define COMPRESS_PARAM 11 -#define EXTERNALSTORE 12 -#define EXTEND 13 - -/* data types */ -#define H5DT_INT8 signed char -#define H5DT_INT16 short -#define H5DT_INT32 int -#define H5DT_FLOAT32 float -#define H5DT_FLOAT64 double -#define VOIDP void* -#define H5DT_UINT8 unsigned char -#define H5DT_UINT16 unsigned short -#define H5DT_UINT32 unsigned int -#define H5DT_INT64 long long -#define H5DT_UINT64 unsigned H5DT_INT64 - -struct path_info -{ - char group[MAX_GROUPS_IN_PATH][MAX_PATH_NAME_LENGTH]; - int count; -}; - -struct Input -{ - int h5dumpInput; - struct path_info path; - int inputClass; - int inputSize; - int rank; - hsize_t* sizeOfDimension; - int outputClass; - int outputSize; - int outputArchitecture; - int outputByteOrder; - hsize_t* sizeOfChunk; - hsize_t* maxsizeOfDimension; - int compressionType; - int compressionParam; - char *externFilename; - VOIDP data; - int configOptionVector[NUM_KEYS]; -}; - -struct infilesformat -{ - char datafile[255]; - char configfile[255]; - struct Input in; - int config; /* Configfile present? No - 0. Yes - 1 */ -}; - -struct Options -{ - struct infilesformat infiles[30]; /* structure to hold the list of input file names. Limited to 30*/ - char outfile[256]; /* output file name */ - int fcount; /* number of input files */ -}; - -char keytable[NUM_KEYS][30] = { - "PATH", - "INPUT-CLASS", - "INPUT-SIZE", - "RANK", - "DIMENSION-SIZES", - "OUTPUT-CLASS", - "OUTPUT-SIZE", - "OUTPUT-ARCHITECTURE", - "OUTPUT-BYTE-ORDER", - "CHUNKED-DIMENSION-SIZES", - "COMPRESSION-TYPE", - "COMPRESSION-PARAM", - "EXTERNAL-STORAGE", - "MAXIMUM-DIMENSIONS" -}; - -static int state_table[15][8] = -{ - /* token ordering: FILNAME OPT_o OPT_c OPT_h OPT_d OPT_p OPT_t OPT_s */ - - /* state 0: start */ - {1, ERR, ERR, 6, ERR, ERR, ERR, ERR}, - - /* state 1: input files */ - {ERR, ERR, 2, ERR, 7, ERR, ERR, ERR}, - - /* state 2: -c[onfigfile] */ - {3, ERR, ERR, ERR, ERR, ERR, ERR, ERR}, - - /* state 3: configfile */ - {1, 4, ERR, ERR, ERR, ERR, ERR, ERR}, - - /* state 4: -o[utfile] */ - {5, ERR, ERR, ERR, ERR, ERR, ERR, ERR}, - - /* state 5: outfile */ - {ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR}, - - /* state 6: -h[elp] */ - {ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR}, - - /* state 7: -d[ims] */ - {8, ERR, ERR, ERR, ERR, ERR, ERR, ERR}, - - /* state 8: dimensions */ - {1, 4, ERR, ERR, ERR, 9, 11, 13}, - - /* state 9: -p[ath] */ - {10, ERR, ERR, ERR, ERR, ERR, ERR, ERR}, - - /* state 10: path name */ - {1, 4, ERR, ERR, ERR, ERR, 11, 13}, - - /* state 11: -t[ype] */ - {12, ERR, ERR, ERR, ERR, ERR, ERR, ERR}, - - /* state 12: data type */ - {1, 4, ERR, ERR, ERR, ERR, ERR, 13}, - - /* state 13: -s[ize] */ - {14, ERR, ERR, ERR, ERR, ERR, ERR, ERR}, - - /* state 14: data size */ - {1, 4, ERR, ERR, ERR, ERR, ERR, ERR} - -}; - -/* - * - * Function declarations for h5import - * - */ -void usage(char *); -void setDefaultValues(struct Input *in, int count); -void help(char *); - -hid_t createOutputDataType(struct Input *in); -hid_t createInputDataType(struct Input *in); - -#endif /* H5IMPORT_H__ */ - diff --git a/tools/h5import/h5importtest.c b/tools/h5import/h5importtest.c deleted file mode 100644 index 38fd75b..0000000 --- a/tools/h5import/h5importtest.c +++ /dev/null @@ -1,371 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include -#include "H5private.h" - -#ifdef H5_HAVE_WIN32_API -#define OPEN_FLAGS "wb" -#else -#define OPEN_FLAGS "w" -#endif - -/* - * Name: - * h5importtest - * - * Description: - * This program creates that can be - * used to test the h5import program. - * - */ - -int -main(void) -{ - int nrow = 3, ncol = 4, npln = 5; - int i, j, k; - FILE *sp; - - float row4[3], col4[4], pln4[5]; - float rowo4 = 11.0F, colo4 = 21.0F, plno4 = 51.0F; - float rowi4 = 1.0F, coli4 = 2.0F, plni4 = 5.0F; - - int b32i3[5][3][4]; - int row4i[3], col4i[4], pln4i[5]; - int rowo4i = 11 , colo4i = 21 , plno4i = 51 ; - int rowi4i = 1 , coli4i = 2 , plni4i = 5 ; - -#ifdef H5_SIZEOF_LONG_LONG - long long row4i64[3], col4i64[4], pln4i64[5]; - long long rowo4i64 = (long long)11 , colo4i64 = (long long)21 , plno4i64 = (long long)51 ; - long long rowi4i64 = (long long)1 , coli4i64 = (long long)2 , plni4i64 = (long long)5 ; -#endif - - short b16i3[5][3][4]; - short row4i16[3], col4i16[4], pln4i16[5]; - short rowo4i16 = (short)11 , colo4i16 = (short)21 , plno4i16 = (short)51 ; - short rowi4i16 = (short)1 , coli4i16 = (short)2 , plni4i16 = (short)5 ; - - char b8i3[5][3][4]; - char row4i8[3], col4i8[4], pln4i8[5]; - char rowo4i8 = (char)11 , colo4i8 = (char)21 , plno4i8 = (char)51 ; - char rowi4i8 = (char)1 , coli4i8 = (char)2 , plni4i8 = (char)5 ; - - double b64r3[5][3][4]; - double row8[3], col8[4], pln8[5]; - double rowo8 = 11.0F, colo8 = 21.0F, plno8 = 51.0F; - double rowi8 = 1.0F, coli8 = 2.0F, plni8 = 5.0F; - - - /* - * initialize the row, column, and plane vectors - * - * row values start at 11 and increment by 1 => 11, 12, 13 - * column values start at 21 and increment by 2 => 21, 23, 25, 27 - * plane values start at 51 and increment by 5 => 51, 56, 61, 66, 71 - */ - - - /* - * build array elements - rank 2 - * - * element value = sum of row value and col values - */ - - row4[0] = rowo4; - col4[0] = colo4; - pln4[0] = plno4; - - row8[0] = rowo8; - col8[0] = colo8; - pln8[0] = plno8; - - row4i[0] = rowo4i; - col4i[0] = colo4i; - pln4i[0] = plno4i; - -#ifdef H5_SIZEOF_LONG_LONG - row4i64[0] = rowo4i64; - col4i64[0] = colo4i64; - pln4i64[0] = plno4i64; -#endif - - row4i16[0] = rowo4i16; - col4i16[0] = colo4i16; - pln4i16[0] = plno4i16; - - row4i8[0] = rowo4i8; - col4i8[0] = colo4i8; - pln4i8[0] = plno4i8; - - for (i = 1; i < nrow; i++) - { - row4[i] = row4[i - 1] + rowi4; - row8[i] = row8[i - 1] + rowi8; - row4i[i] = row4i[i - 1] + rowi4i; -#ifdef H5_SIZEOF_LONG_LONG - row4i64[i] = row4i64[i - 1] + rowi4i64; -#endif - row4i16[i] = (short)(row4i16[i - 1] + rowi4i16); - row4i8[i] = (char)(row4i8[i - 1] + rowi4i8); - } - - for (j = 1; j < ncol; j++) - { - col4[j] = col4[j - 1] + coli4; - col8[j] = col8[j - 1] + coli8; - col4i[j] = col4i[j - 1] + coli4i; -#ifdef H5_SIZEOF_LONG_LONG - col4i64[j] = col4i64[j - 1] + coli4i64; -#endif - col4i16[j] = (short)(col4i16[j - 1] + coli4i16); - col4i8[j] = (char)(col4i8[j - 1] + coli4i8); - } - for (k = 1; k < npln; k++) - { - pln4[k] = pln4[k - 1] + plni4; - pln8[k] = pln8[k - 1] + plni8; - pln4i[k] = pln4i[k - 1] + plni4i; -#ifdef H5_SIZEOF_LONG_LONG - pln4i64[k] = pln4i64[k - 1] + plni4i64; -#endif - pln4i16[k] = (short)(pln4i16[k - 1] + plni4i16); - pln4i8[k] = (char)(pln4i8[k - 1] + plni4i8); - } - - /* - * build array elements - rank 3 - * - * element value = sum of row value, col, and plane values - */ - - for (i = 0; i < nrow; i++) - for (j = 0; j < ncol; j++) - for (k = 0; k < npln; k++) { - b64r3[k][i][j] = row8[i] + col8[j] + pln8[k]; - b32i3[k][i][j] = row4i[i] + col4i[j] + pln4i[k]; - b16i3[k][i][j] = (short)(row4i16[i] + col4i16[j] + pln4i16[k]); - b8i3[k][i][j] = (char)(row4i8[i] + col4i8[j] + pln4i8[k]); - } - - - -#ifndef UNICOS - -#ifdef REBUILDTEXTFILES - /*------------------------------------------------------------------------- - * TOOLTEST txtin8.txt -c $srcdir/testfiles/txtin8.conf -o txtin8.h5 - *------------------------------------------------------------------------- - */ - - sp = HDfopen("txtin8.txt", "w"); - for (k = 0; k < npln; k++) - { - for (i = 0; i < nrow; i++) - { - for (j = 0; j < ncol; j++) - (void) fprintf(sp, "%10u", b8i3[k][i][j]); - (void) fprintf(sp, "\n"); - } - } - (void) HDfclose(sp); - - /*------------------------------------------------------------------------- - * TOOLTEST txtin16.txt -c $srcdir/testfiles/txtin16.conf -o txtin16.h5 - *------------------------------------------------------------------------- - */ - - sp = HDfopen("txtin16.txt", "w"); - for (k = 0; k < npln; k++) - { - for (i = 0; i < nrow; i++) - { - for (j = 0; j < ncol; j++) - (void) fprintf(sp, "%10u", b16i3[k][i][j]); - (void) fprintf(sp, "\n"); - } - } - (void) HDfclose(sp); - - /*------------------------------------------------------------------------- - * TOOLTEST txtin32.txt -c $srcdir/testfiles/textin32.conf -o textin32.h5 - *------------------------------------------------------------------------- - */ - - sp = HDfopen("txtin32.txt", "w"); - for (k = 0; k < npln; k++) - { - for (i = 0; i < nrow; i++) - { - for (j = 0; j < ncol; j++) - (void) fprintf(sp, "%10d", b32i3[k][i][j]); - (void) fprintf(sp, "\n"); - } - } - (void) HDfclose(sp); -#endif - - /*------------------------------------------------------------------------- - * TOOLTEST binin32.bin -c $srcdir/testfiles/binin32.conf -o binin32.h5 - *------------------------------------------------------------------------- - */ - - sp = HDfopen("binin32.bin", OPEN_FLAGS); - for (k = 0; k < npln; k++) - { - for (i = 0; i < nrow; i++) - { - for (j = 0; j < ncol; j++) - { - (void) HDfwrite((char *) &b32i3[k][i][j], sizeof(int), 1, sp); - } - } - } - (void) HDfclose(sp); - - /*------------------------------------------------------------------------- - * TOOLTEST binuin32.bin -c $srcdir/testfiles/binuin32.conf -o binuin32.h5 - *------------------------------------------------------------------------- - */ - - sp = HDfopen("binuin32.bin", OPEN_FLAGS); - for (k = 0; k < npln; k++) - { - for (i = 0; i < nrow; i++) - { - for (j = 0; j < ncol; j++) - { - (void) HDfwrite((char *) &b32i3[k][i][j], sizeof(unsigned int), 1, sp); - } - } - } - (void) HDfclose(sp); - - - - - /*------------------------------------------------------------------------- - * TOOLTEST binin16.bin -c $srcdir/testfiles/binin16.conf -o binin16.h5 - *------------------------------------------------------------------------- - */ - - sp = HDfopen("binin16.bin", OPEN_FLAGS); - for (k = 0; k < npln; k++) - { - for (i = 0; i < nrow; i++) - { - for (j = 0; j < ncol; j++) - { - (void) HDfwrite((char *) &b16i3[k][i][j], sizeof(short), 1, sp); - } - } - } - (void) HDfclose(sp); - - /*------------------------------------------------------------------------- - * TOOLTEST binuin16.bin -c $srcdir/testfiles/binuin16.conf -o binuin16.h5 - *------------------------------------------------------------------------- - */ - sp = HDfopen("binuin16.bin", OPEN_FLAGS); - for (k = 0; k < npln; k++) - { - for (i = 0; i < nrow; i++) - { - for (j = 0; j < ncol; j++) - { - (void) HDfwrite((char *) &b16i3[k][i][j], sizeof(unsigned short), 1, sp); - } - } - } - (void) HDfclose(sp); - - - - /*------------------------------------------------------------------------- - * TOOLTEST binin8.bin -c $srcdir/testfiles/binin8.conf -o binin8.h5 - *------------------------------------------------------------------------- - */ - - sp = HDfopen("binin8.bin", OPEN_FLAGS); - for (k = 0; k < npln; k++) - { - for (i = 0; i < nrow; i++) - { - for (j = 0; j < ncol; j++) - { - (void) HDfwrite((char *) &b8i3[k][i][j], sizeof(char), 1, sp); - } - } - } - (void) HDfclose(sp); - -#endif /* UNICOS */ - - - - - /*------------------------------------------------------------------------- - * TOOLTEST binfp64.bin -c $srcdir/testfiles/binfp64.conf -o binfp64.h5 - *------------------------------------------------------------------------- - */ - - /* - * binary 64-bit file - rank 2 & 3 - */ - - sp = HDfopen("binfp64.bin", OPEN_FLAGS); - for (k = 0; k < npln; k++) - { - for (i = 0; i < nrow; i++) - { - for (j = 0; j < ncol; j++) - { - (void) HDfwrite((char *) &b64r3[k][i][j], sizeof(double), 1, sp); - } - } - } - (void) HDfclose(sp); - - - - /*------------------------------------------------------------------------- - * TOOLTEST binin8w.bin -c $srcdir/testfiles/binin8w.conf -o binin8w.h5 - *------------------------------------------------------------------------- - */ - - { - /* test CR+LF (13,10) and EOF (26) in windows */ - char bin8w[4] = {13,10,26,0}; - - sp = HDfopen("binin8w.bin", OPEN_FLAGS); - for (i = 0; i < 4; i++) - { - char c = bin8w[i]; - if ( HDfwrite( &c, sizeof(char), 1, sp) != 1 ) - printf("error writing file\n"); - } - HDfclose(sp); - - - } - - - - - - return (EXIT_SUCCESS); -} - diff --git a/tools/h5import/h5importtestutil.sh.in b/tools/h5import/h5importtestutil.sh.in deleted file mode 100644 index 08e0c3f..0000000 --- a/tools/h5import/h5importtestutil.sh.in +++ /dev/null @@ -1,384 +0,0 @@ -#!/bin/sh -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -# -# Tests for the h5import tool - -srcdir=@srcdir@ - -# Determine which filters are available -USE_FILTER_DEFLATE="@USE_FILTER_DEFLATE@" - -TESTNAME=h5import -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -DUMPER=../h5dump/h5dump # The tool name -DUMPER_BIN=`pwd`/$DUMPER # The path of the tool binary - -H5DIFF=../h5diff/h5diff # The h5diff tool name -H5DIFF_BIN=`pwd`/$H5DIFF # The path of the h5diff tool binary - -H5IMPORT=h5import # The h5import tool name -H5IMPORT_BIN=`pwd`/$H5IMPORT # The path of the h5import tool binary - -RM='rm -rf' -CP='cp' -DIRNAME='dirname' -LS='ls' -AWK='awk' - -# initialize errors variable -nerrors=0 - -# source dirs -SRC_TOOLS="$srcdir/.." -SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles" - -# testfiles source dirs for tools -SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles" -SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles" -SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles" -SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles" -SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles" -SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles" - -TESTDIR=./testfiles -test -d $TESTDIR || mkdir $TESTDIR - -###################################################################### -# test files -# -------------------------------------------------------------------- -# All the test files copy from source directory to test directory -# NOTE: Keep this framework to add/remove test files. -# Any test files from other tools can be used in this framework. -# This list are also used for checking exist. -# Comment '#' without space can be used. -# -------------------------------------------------------------------- -LIST_HDF5_TEST_FILES=" -$SRC_H5IMPORT_TESTFILES/binfp64.h5 -$SRC_H5IMPORT_TESTFILES/binin8.h5 -$SRC_H5IMPORT_TESTFILES/binin8w.h5 -$SRC_H5IMPORT_TESTFILES/binin16.h5 -$SRC_H5IMPORT_TESTFILES/binin32.h5 -$SRC_H5IMPORT_TESTFILES/binuin16.h5 -$SRC_H5IMPORT_TESTFILES/binuin32.h5 -$SRC_H5IMPORT_TESTFILES/txtfp32.h5 -$SRC_H5IMPORT_TESTFILES/txtfp64.h5 -$SRC_H5IMPORT_TESTFILES/txtin8.h5 -$SRC_H5IMPORT_TESTFILES/txtin16.h5 -$SRC_H5IMPORT_TESTFILES/txtin32.h5 -$SRC_H5IMPORT_TESTFILES/txtuin16.h5 -$SRC_H5IMPORT_TESTFILES/txtuin32.h5 -$SRC_H5IMPORT_TESTFILES/txtstr.h5 -$SRC_H5IMPORT_TESTFILES/textpfe.h5 -" - -LIST_OTHER_TEST_FILES=" -$SRC_H5IMPORT_TESTFILES/binfp64.conf -$SRC_H5IMPORT_TESTFILES/binin8.conf -$SRC_H5IMPORT_TESTFILES/binin8w.conf -$SRC_H5IMPORT_TESTFILES/binin16.conf -$SRC_H5IMPORT_TESTFILES/binin32.conf -$SRC_H5IMPORT_TESTFILES/binuin16.conf -$SRC_H5IMPORT_TESTFILES/binuin32.conf -$SRC_H5IMPORT_TESTFILES/txtfp32.conf -$SRC_H5IMPORT_TESTFILES/txtfp64.conf -$SRC_H5IMPORT_TESTFILES/txtin8.conf -$SRC_H5IMPORT_TESTFILES/txtin16.conf -$SRC_H5IMPORT_TESTFILES/txtin32.conf -$SRC_H5IMPORT_TESTFILES/txtuin16.conf -$SRC_H5IMPORT_TESTFILES/txtuin32.conf -$SRC_H5IMPORT_TESTFILES/textpfe.conf -$SRC_H5IMPORT_TESTFILES/txtstr.conf -$SRC_H5IMPORT_TESTFILES/txtfp32.txt -$SRC_H5IMPORT_TESTFILES/txtfp64.txt -$SRC_H5IMPORT_TESTFILES/txtuin16.txt -$SRC_H5IMPORT_TESTFILES/txtuin32.txt -$SRC_H5IMPORT_TESTFILES/txtin8.txt -$SRC_H5IMPORT_TESTFILES/txtin16.txt -$SRC_H5IMPORT_TESTFILES/txtin32.txt -$SRC_H5IMPORT_TESTFILES/textpfe64.txt -$SRC_H5IMPORT_TESTFILES/txtstr.txt -$SRC_H5IMPORT_TESTFILES/dbinfp64.h5.txt -$SRC_H5IMPORT_TESTFILES/dbinin8.h5.txt -$SRC_H5IMPORT_TESTFILES/dbinin8w.h5.txt -$SRC_H5IMPORT_TESTFILES/dbinin16.h5.txt -$SRC_H5IMPORT_TESTFILES/dbinin32.h5.txt -$SRC_H5IMPORT_TESTFILES/dbinuin16.h5.txt -$SRC_H5IMPORT_TESTFILES/dbinuin32.h5.txt -$SRC_H5IMPORT_TESTFILES/dtxtstr.h5.txt -" - -# -# copy test files and expected output files from source dirs to test dir -# -COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES" - -COPY_TESTFILES_TO_TESTDIR() -{ - # copy test files. Used -f to make sure get a new copy - for tstfile in $COPY_TESTFILES - do - # ignore '#' comment - echo $tstfile | tr -d ' ' | grep '^#' > /dev/null - RET=$? - if [ $RET -eq 1 ]; then - # skip cp if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=`$DIRNAME $tstfile` - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $CP -f $tstfile $TESTDIR - if [ $? -ne 0 ]; then - echo "Error: FAILED to copy $tstfile ." - - # Comment out this to CREATE expected file - exit $EXIT_FAILURE - fi - fi - fi - done -} - -CLEAN_TESTFILES_AND_TESTDIR() -{ - # skip rm if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=$SRC_H5IMPORT_TESTFILES - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $RM $TESTDIR - fi -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Testing". -# -TESTING() { - SPACES=" " - echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Print a "SKIP" message -SKIP() { - TESTING $TESTNAME $@ - echo " -SKIP-" -} - -TOOLTEST() -{ -err=0 -$RUNSERIAL $H5IMPORT_BIN $* -$RUNSERIAL $DUMPER_BIN $5 >log2 - -cd tmp_testfiles -$RUNSERIAL $DUMPER_BIN $5 >log1 -cd .. - -cmp -s tmp_testfiles/log1 log2 || err=1 -rm -f log2 tmp_testfiles/log1 -if [ $err -eq 1 ]; then -nerrors="` expr $nerrors + 1 `"; - echo "*FAILED*" -else - echo " PASSED" -fi -} - -# Use h5dump output as input to h5import for binary numbers -# Use h5diff to verify results -TOOLTEST2() -{ -err=0 -$RUNSERIAL $DUMPER_BIN -p -d $1 -o d$2.bin -b tmp_testfiles/$2 > d$2.dmp -$RUNSERIAL $H5IMPORT_BIN d$2.bin -c d$2.dmp -o d$2 > d$2.imp -$RUNSERIAL $H5DIFF_BIN -v d$2 tmp_testfiles/$2 $1 $1 > log2 -$CP -f $SRC_H5IMPORT_TESTFILES/d$2.txt log1 - -cmp -s log1 log2 || err=1 -rm -f log1 log2 -if [ $err -eq 1 ]; then -nerrors="` expr $nerrors + 1 `"; - echo "*FAILED*" -else - echo " PASSED" -fi -} - -# Same as TOOLTEST2 except for strings -# Use h5dump output as input to h5import for strings -# Use h5diff to verify results -TOOLTEST3() -{ -err=0 -$RUNSERIAL $DUMPER_BIN -p -d $1 -o d$2.bin -y --width=1 tmp_testfiles/$2 > d$2.dmp -$RUNSERIAL $H5IMPORT_BIN d$2.bin -c d$2.dmp -o d$2 > d$2.imp -$RUNSERIAL $H5DIFF_BIN -v d$2 tmp_testfiles/$2 $1 $1 > log2 -$CP -f $SRC_H5IMPORT_TESTFILES/d$2.txt log1 - -cmp -s log1 log2 || err=1 -rm -f log1 log2 -if [ $err -eq 1 ]; then -nerrors="` expr $nerrors + 1 `"; - echo "*FAILED*" -else - echo " PASSED" -fi -} - -# Same as TOOLTEST3 except for h5diff uses report mode without warnings -# Use h5dump output as input to h5import for strings -# Use h5diff to verify results -TOOLTEST4() -{ -err=0 -$RUNSERIAL $DUMPER_BIN -p -d $1 -o d$2.bin -y --width=1 tmp_testfiles/$2 > d$2.dmp -$RUNSERIAL $H5IMPORT_BIN d$2.bin -c d$2.dmp -o d$2 > d$2.imp -$RUNSERIAL $H5DIFF_BIN -r d$2 tmp_testfiles/$2 $1 $1 > log2 -$CP -f $SRC_H5IMPORT_TESTFILES/d$2.txt log1 - - -cmp -s log1 log2 || err=1 -rm -f log1 log2 -if [ $err -eq 1 ]; then -nerrors="` expr $nerrors + 1 `"; - echo "*FAILED*" -else - echo " PASSED" -fi -} - -echo "" -echo "==============================" -echo "H5IMPORT tests started" -echo "==============================" - -#echo "** Testing h5import ***" - -rm -f output.h5 log1 tx* b* *.dat - -# prepare for test -COPY_TESTFILES_TO_TESTDIR - -mkdir tmp_testfiles -$CP $TESTDIR/*.h5 ./tmp_testfiles/ - -$RUNSERIAL ./h5importtest - -################################################ -### T H E T E S T S -################################################ - -TESTING "ASCII I32 rank 3 - Output BE " ; -TOOLTEST $TESTDIR/txtin32.txt -c $TESTDIR/txtin32.conf -o txtin32.h5 - -TESTING "ASCII I16 rank 3 - Output LE - CHUNKED - extended" -TOOLTEST $TESTDIR/txtin16.txt -c $TESTDIR/txtin16.conf -o txtin16.h5 - -TESTING "ASCII I8 - rank 3 - Output I8 LE-Chunked+Extended+Compressed " -TOOLTEST $TESTDIR/txtin8.txt -c $TESTDIR/txtin8.conf -o txtin8.h5 - - -TESTING "ASCII UI16 - rank 2 - Output LE+Chunked+Compressed " -TOOLTEST $TESTDIR/txtuin16.txt -c $TESTDIR/txtuin16.conf -o txtuin16.h5 - -TESTING "ASCII UI32 - rank 3 - Output BE" -TOOLTEST $TESTDIR/txtuin32.txt -c $TESTDIR/txtuin32.conf -o txtuin32.h5 - - -TESTING "ASCII F32 - rank 3 - Output LE " -TOOLTEST $TESTDIR/txtfp32.txt -c $TESTDIR/txtfp32.conf -o txtfp32.h5 - -TESTING "ASCII F64 - rank 3 - Output BE + CHUNKED+Extended+Compressed " -TOOLTEST $TESTDIR/txtfp64.txt -c $TESTDIR/txtfp64.conf -o txtfp64.h5 - - -TESTING "BINARY F64 - rank 3 - Output LE+CHUNKED+Extended+Compressed " -TOOLTEST binfp64.bin -c $TESTDIR/binfp64.conf -o binfp64.h5 -TESTING "H5DUMP-BINARY F64 - rank 3 - Output LE+CHUNKED+Extended+Compressed " -if test $USE_FILTER_DEFLATE != "yes"; then - SKIP "/fp/bin/64-bit" binfp64.h5 -else - TOOLTEST2 "/fp/bin/64-bit" binfp64.h5 -fi - - -TESTING "BINARY I8 - rank 3 - Output I16LE + Chunked+Extended+Compressed " -TOOLTEST binin8.bin -c $TESTDIR/binin8.conf -o binin8.h5 -TESTING "H5DUMP-BINARY I8 - rank 3 - Output I16LE + Chunked+Extended+Compressed " -if test $USE_FILTER_DEFLATE != "yes"; then - SKIP "/int/bin/8-bit" binin8.h5 -else - TOOLTEST2 "/int/bin/8-bit" binin8.h5 -fi - -TESTING "BINARY I16 - rank 3 - Output order LE + CHUNKED + extended " -TOOLTEST binin16.bin -c $TESTDIR/binin16.conf -o binin16.h5 -TESTING "H5DUMP-BINARY I16 - rank 3 - Output order LE + CHUNKED + extended " -TOOLTEST2 "/int/bin/16-bit" binin16.h5 - -TESTING "BINARY I32 - rank 3 - Output BE + CHUNKED " -TOOLTEST binin32.bin -c $TESTDIR/binin32.conf -o binin32.h5 -TESTING "H5DUMP-BINARY I32 - rank 3 - Output BE + CHUNKED " -TOOLTEST2 "/int/bin/32-bit" binin32.h5 - - -TESTING "BINARY UI16 - rank 3 - Output byte BE + CHUNKED " -TOOLTEST binuin16.bin -c $TESTDIR/binuin16.conf -o binuin16.h5 -TESTING "H5DUMP-BINARY UI16 - rank 3 - Output byte BE + CHUNKED " -TOOLTEST2 "/int/buin/16-bit" binuin16.h5 - -TESTING "BINARY UI32 - rank 3 - Output LE + CHUNKED " -TOOLTEST binuin32.bin -c $TESTDIR/binuin32.conf -o binuin32.h5 -TESTING "H5DUMP-BINARY UI32 - rank 3 - Output LE + CHUNKED " -TOOLTEST2 "/int/buin/32-bit" binuin32.h5 - - -TESTING "STR" -TOOLTEST $TESTDIR/txtstr.txt -c $TESTDIR/txtstr.conf -o txtstr.h5 -TESTING "H5DUMP-STR" -TOOLTEST4 "/mytext/data" txtstr.h5 - - -TESTING "BINARY I8 CR LF EOF" -TOOLTEST binin8w.bin -c $TESTDIR/binin8w.conf -o binin8w.h5 -TESTING "H5DUMP-BINARY I8 CR LF EOF" -TOOLTEST2 "/dataset0" binin8w.h5 - -TESTING "ASCII F64 - rank 1 - INPUT-CLASS TEXTFPE " -TOOLTEST $TESTDIR/textpfe64.txt -c $TESTDIR/textpfe.conf -o textpfe.h5 - - -rm -f txtin32.txt txtin16.txt txtin8.txt txtuin32.txt txtuin16.txt *.bin *.dmp *.imp *.h5 -rm -rf tmp_testfiles - -# Clean up temporary files/directories -CLEAN_TESTFILES_AND_TESTDIR - -# -# Check errors result -if test $nerrors -eq 0 ; then - echo "All $TESTNAME tests passed." - exit $EXIT_SUCCESS -else - echo "$TESTNAME tests failed with $nerrors errors." - exit $EXIT_FAILURE -fi diff --git a/tools/h5import/testfiles/binfp64.conf b/tools/h5import/testfiles/binfp64.conf deleted file mode 100644 index 6b4c361..0000000 --- a/tools/h5import/testfiles/binfp64.conf +++ /dev/null @@ -1,13 +0,0 @@ -PATH /fp/bin/64-bit -INPUT-CLASS FP -INPUT-SIZE 64 -RANK 3 -DIMENSION-SIZES 5 3 4 -OUTPUT-ARCHITECTURE IEEE -OUTPUT-BYTE-ORDER LE -CHUNKED-DIMENSION-SIZES 2 2 2 -COMPRESSION-PARAM 8 -MAXIMUM-DIMENSIONS -1 6 7 - - - diff --git a/tools/h5import/testfiles/binfp64.h5 b/tools/h5import/testfiles/binfp64.h5 deleted file mode 100644 index 80e3a8a..0000000 Binary files a/tools/h5import/testfiles/binfp64.h5 and /dev/null differ diff --git a/tools/h5import/testfiles/binin16.conf b/tools/h5import/testfiles/binin16.conf deleted file mode 100644 index 06869cb..0000000 --- a/tools/h5import/testfiles/binin16.conf +++ /dev/null @@ -1,12 +0,0 @@ -PATH /int/bin/16-bit -INPUT-CLASS IN -INPUT-SIZE 16 -RANK 3 -DIMENSION-SIZES 2 3 4 -CHUNKED-DIMENSION-SIZES 2 2 2 -MAXIMUM-DIMENSIONS -1 -1 8 -OUTPUT-ARCHITECTURE STD -OUTPUT-BYTE-ORDER LE - - - diff --git a/tools/h5import/testfiles/binin16.h5 b/tools/h5import/testfiles/binin16.h5 deleted file mode 100644 index 0825bbc..0000000 Binary files a/tools/h5import/testfiles/binin16.h5 and /dev/null differ diff --git a/tools/h5import/testfiles/binin32.conf b/tools/h5import/testfiles/binin32.conf deleted file mode 100644 index 11996ef..0000000 --- a/tools/h5import/testfiles/binin32.conf +++ /dev/null @@ -1,12 +0,0 @@ -PATH /int/bin/32-bit -INPUT-CLASS IN -INPUT-SIZE 32 -RANK 3 -DIMENSION-SIZES 5 3 4 -OUTPUT-ARCHITECTURE STD -OUTPUT-BYTE-ORDER BE -CHUNKED-DIMENSION-SIZES 1 2 1 - - - - diff --git a/tools/h5import/testfiles/binin32.h5 b/tools/h5import/testfiles/binin32.h5 deleted file mode 100644 index fd8faa9..0000000 Binary files a/tools/h5import/testfiles/binin32.h5 and /dev/null differ diff --git a/tools/h5import/testfiles/binin8.conf b/tools/h5import/testfiles/binin8.conf deleted file mode 100644 index 1edd80a..0000000 --- a/tools/h5import/testfiles/binin8.conf +++ /dev/null @@ -1,16 +0,0 @@ -PATH /int/bin/8-bit -INPUT-CLASS IN -INPUT-SIZE 8 -OUTPUT-CLASS IN -OUTPUT-SIZE 16 -RANK 3 -OUTPUT-ARCHITECTURE STD -OUTPUT-BYTE-ORDER LE -DIMENSION-SIZES 5 3 4 -CHUNKED-DIMENSION-SIZES 2 2 2 -MAXIMUM-DIMENSIONS -1 -1 -1 -COMPRESSION-PARAM 3 - - - - diff --git a/tools/h5import/testfiles/binin8.h5 b/tools/h5import/testfiles/binin8.h5 deleted file mode 100644 index a1d1a37..0000000 Binary files a/tools/h5import/testfiles/binin8.h5 and /dev/null differ diff --git a/tools/h5import/testfiles/binin8w.conf b/tools/h5import/testfiles/binin8w.conf deleted file mode 100644 index fccb4ac..0000000 --- a/tools/h5import/testfiles/binin8w.conf +++ /dev/null @@ -1,9 +0,0 @@ - -INPUT-CLASS IN -INPUT-SIZE 8 -RANK 1 -DIMENSION-SIZES 4 -OUTPUT-BYTE-ORDER LE -OUTPUT-CLASS IN -OUTPUT-SIZE 8 -OUTPUT-ARCHITECTURE STD diff --git a/tools/h5import/testfiles/binin8w.h5 b/tools/h5import/testfiles/binin8w.h5 deleted file mode 100644 index 64acaed..0000000 Binary files a/tools/h5import/testfiles/binin8w.h5 and /dev/null differ diff --git a/tools/h5import/testfiles/binuin16.conf b/tools/h5import/testfiles/binuin16.conf deleted file mode 100644 index a4603df..0000000 --- a/tools/h5import/testfiles/binuin16.conf +++ /dev/null @@ -1,12 +0,0 @@ -PATH /int/buin/16-bit -INPUT-CLASS UIN -INPUT-SIZE 16 -RANK 3 -DIMENSION-SIZES 2 3 4 -CHUNKED-DIMENSION-SIZES 2 2 2 -MAXIMUM-DIMENSIONS -1 -1 8 -OUTPUT-ARCHITECTURE STD -OUTPUT-BYTE-ORDER BE - - - diff --git a/tools/h5import/testfiles/binuin16.h5 b/tools/h5import/testfiles/binuin16.h5 deleted file mode 100644 index c486c89..0000000 Binary files a/tools/h5import/testfiles/binuin16.h5 and /dev/null differ diff --git a/tools/h5import/testfiles/binuin32.conf b/tools/h5import/testfiles/binuin32.conf deleted file mode 100644 index a649e97..0000000 --- a/tools/h5import/testfiles/binuin32.conf +++ /dev/null @@ -1,12 +0,0 @@ -PATH /int/buin/32-bit -INPUT-CLASS UIN -INPUT-SIZE 32 -RANK 3 -DIMENSION-SIZES 5 3 4 -OUTPUT-ARCHITECTURE STD -OUTPUT-BYTE-ORDER LE - - - - - diff --git a/tools/h5import/testfiles/binuin32.h5 b/tools/h5import/testfiles/binuin32.h5 deleted file mode 100644 index 41699d7..0000000 Binary files a/tools/h5import/testfiles/binuin32.h5 and /dev/null differ diff --git a/tools/h5import/testfiles/dbinfp64.h5.txt b/tools/h5import/testfiles/dbinfp64.h5.txt deleted file mode 100644 index fb88984..0000000 --- a/tools/h5import/testfiles/dbinfp64.h5.txt +++ /dev/null @@ -1,2 +0,0 @@ -dataset: and -0 differences found diff --git a/tools/h5import/testfiles/dbinin16.h5.txt b/tools/h5import/testfiles/dbinin16.h5.txt deleted file mode 100644 index b94781e..0000000 --- a/tools/h5import/testfiles/dbinin16.h5.txt +++ /dev/null @@ -1,2 +0,0 @@ -dataset: and -0 differences found diff --git a/tools/h5import/testfiles/dbinin32.h5.txt b/tools/h5import/testfiles/dbinin32.h5.txt deleted file mode 100644 index a35cd79..0000000 --- a/tools/h5import/testfiles/dbinin32.h5.txt +++ /dev/null @@ -1,2 +0,0 @@ -dataset: and -0 differences found diff --git a/tools/h5import/testfiles/dbinin8.h5.txt b/tools/h5import/testfiles/dbinin8.h5.txt deleted file mode 100644 index bbc6c67..0000000 --- a/tools/h5import/testfiles/dbinin8.h5.txt +++ /dev/null @@ -1,2 +0,0 @@ -dataset: and -0 differences found diff --git a/tools/h5import/testfiles/dbinin8w.h5.txt b/tools/h5import/testfiles/dbinin8w.h5.txt deleted file mode 100644 index 28d43d2..0000000 --- a/tools/h5import/testfiles/dbinin8w.h5.txt +++ /dev/null @@ -1,2 +0,0 @@ -dataset: and -0 differences found diff --git a/tools/h5import/testfiles/dbinuin16.h5.txt b/tools/h5import/testfiles/dbinuin16.h5.txt deleted file mode 100644 index ecad7a0..0000000 --- a/tools/h5import/testfiles/dbinuin16.h5.txt +++ /dev/null @@ -1,2 +0,0 @@ -dataset: and -0 differences found diff --git a/tools/h5import/testfiles/dbinuin32.h5.txt b/tools/h5import/testfiles/dbinuin32.h5.txt deleted file mode 100644 index cc1d9f3..0000000 --- a/tools/h5import/testfiles/dbinuin32.h5.txt +++ /dev/null @@ -1,2 +0,0 @@ -dataset: and -0 differences found diff --git a/tools/h5import/testfiles/dtxtstr.h5.txt b/tools/h5import/testfiles/dtxtstr.h5.txt deleted file mode 100644 index 2170300..0000000 --- a/tools/h5import/testfiles/dtxtstr.h5.txt +++ /dev/null @@ -1,2 +0,0 @@ -dataset: and -0 differences found diff --git a/tools/h5import/testfiles/textpfe.conf b/tools/h5import/testfiles/textpfe.conf deleted file mode 100644 index 6404d5f..0000000 --- a/tools/h5import/testfiles/textpfe.conf +++ /dev/null @@ -1,12 +0,0 @@ -PATH /test -INPUT-CLASS TEXTFPE -INPUT-SIZE 64 -RANK 1 -DIMENSION-SIZES 2 -OUTPUT-CLASS FP -OUTPUT-BYTE-ORDER LE -OUTPUT-SIZE 64 - - - - diff --git a/tools/h5import/testfiles/textpfe.h5 b/tools/h5import/testfiles/textpfe.h5 deleted file mode 100644 index 213051d..0000000 Binary files a/tools/h5import/testfiles/textpfe.h5 and /dev/null differ diff --git a/tools/h5import/testfiles/textpfe64.txt b/tools/h5import/testfiles/textpfe64.txt deleted file mode 100644 index f6dd7f4..0000000 --- a/tools/h5import/testfiles/textpfe64.txt +++ /dev/null @@ -1,2 +0,0 @@ -6.02E+24 -3.14159265E+00 diff --git a/tools/h5import/testfiles/txtfp32.conf b/tools/h5import/testfiles/txtfp32.conf deleted file mode 100644 index 9696a7f..0000000 --- a/tools/h5import/testfiles/txtfp32.conf +++ /dev/null @@ -1,10 +0,0 @@ -PATH /fp/32-bit -INPUT-CLASS TEXTFP -INPUT-SIZE 32 -RANK 3 -DIMENSION-SIZES 2 4 3 -OUTPUT-ARCHITECTURE IEEE -OUTPUT-BYTE-ORDER LE - - - diff --git a/tools/h5import/testfiles/txtfp32.h5 b/tools/h5import/testfiles/txtfp32.h5 deleted file mode 100644 index f74e003..0000000 Binary files a/tools/h5import/testfiles/txtfp32.h5 and /dev/null differ diff --git a/tools/h5import/testfiles/txtfp32.txt b/tools/h5import/testfiles/txtfp32.txt deleted file mode 100644 index 142c94f..0000000 --- a/tools/h5import/testfiles/txtfp32.txt +++ /dev/null @@ -1,9 +0,0 @@ -12.3 14.2 15.56 -26.782 27.22 28.44 -29.33 20.11 11.45 -22.31 23.3332 24.343 - -16.134 19.34 0.17 -4.5 8.9 91.8 -34.7 0.32 0.076 -22.2 88.31 77.83 \ No newline at end of file diff --git a/tools/h5import/testfiles/txtfp64.conf b/tools/h5import/testfiles/txtfp64.conf deleted file mode 100644 index fbab6a6..0000000 --- a/tools/h5import/testfiles/txtfp64.conf +++ /dev/null @@ -1,13 +0,0 @@ -PATH /fp/64-bit -INPUT-CLASS TEXTFP -INPUT-SIZE 64 -RANK 3 -DIMENSION-SIZES 4 4 3 -OUTPUT-ARCHITECTURE IEEE -OUTPUT-BYTE-ORDER BE -CHUNKED-DIMENSION-SIZES 2 2 2 -COMPRESSION-PARAM 8 -MAXIMUM-DIMENSIONS -1 6 7 - - - diff --git a/tools/h5import/testfiles/txtfp64.h5 b/tools/h5import/testfiles/txtfp64.h5 deleted file mode 100644 index b6ba4f5..0000000 Binary files a/tools/h5import/testfiles/txtfp64.h5 and /dev/null differ diff --git a/tools/h5import/testfiles/txtfp64.txt b/tools/h5import/testfiles/txtfp64.txt deleted file mode 100644 index 6c83dc3..0000000 --- a/tools/h5import/testfiles/txtfp64.txt +++ /dev/null @@ -1,19 +0,0 @@ -12.3 14.2 15.56 -26.782 27.22 28.44 -29.33 20.11 11.45 -22.31 23.3332 24.343 - -16.134 19.34 0.17 -4.5 8.9 91.8 -34.7 0.32 0.076 -22.2 88.31 77.83 - -216.134 139.34 101.17 -24.5 82.9 291.8 -334.7 0.232 10.076 -222.2 88.31 77.83 - -122.3 114.2 125.56 -226.782 27.222 128.44 -341.7 30.132 0.1076 -4.51 181.9 911.8 diff --git a/tools/h5import/testfiles/txtin16.conf b/tools/h5import/testfiles/txtin16.conf deleted file mode 100644 index d2d11c3..0000000 --- a/tools/h5import/testfiles/txtin16.conf +++ /dev/null @@ -1,12 +0,0 @@ -PATH /int/16-bit -INPUT-CLASS TEXTIN -INPUT-SIZE 16 -RANK 3 -DIMENSION-SIZES 2 4 3 -OUTPUT-BYTE-ORDER LE -CHUNKED-DIMENSION-SIZES 2 2 2 -MAXIMUM-DIMENSIONS -1 -1 8 -OUTPUT-ARCHITECTURE STD - - - diff --git a/tools/h5import/testfiles/txtin16.h5 b/tools/h5import/testfiles/txtin16.h5 deleted file mode 100644 index dc6c1ea..0000000 Binary files a/tools/h5import/testfiles/txtin16.h5 and /dev/null differ diff --git a/tools/h5import/testfiles/txtin16.txt b/tools/h5import/testfiles/txtin16.txt deleted file mode 100644 index 0688e9b..0000000 --- a/tools/h5import/testfiles/txtin16.txt +++ /dev/null @@ -1,15 +0,0 @@ - 83 85 87 89 - 84 86 88 90 - 85 87 89 91 - 88 90 92 94 - 89 91 93 95 - 90 92 94 96 - 93 95 97 99 - 94 96 98 100 - 95 97 99 101 - 98 100 102 104 - 99 101 103 105 - 100 102 104 106 - 103 105 107 109 - 104 106 108 110 - 105 107 109 111 diff --git a/tools/h5import/testfiles/txtin32.conf b/tools/h5import/testfiles/txtin32.conf deleted file mode 100644 index ca4802a..0000000 --- a/tools/h5import/testfiles/txtin32.conf +++ /dev/null @@ -1,11 +0,0 @@ -PATH /int/32-bit -INPUT-CLASS TEXTIN -INPUT-SIZE 32 -RANK 3 -DIMENSION-SIZES 2 4 3 -OUTPUT-ARCHITECTURE STD -OUTPUT-BYTE-ORDER BE - - - - diff --git a/tools/h5import/testfiles/txtin32.h5 b/tools/h5import/testfiles/txtin32.h5 deleted file mode 100644 index 350333c..0000000 Binary files a/tools/h5import/testfiles/txtin32.h5 and /dev/null differ diff --git a/tools/h5import/testfiles/txtin32.txt b/tools/h5import/testfiles/txtin32.txt deleted file mode 100644 index 0688e9b..0000000 --- a/tools/h5import/testfiles/txtin32.txt +++ /dev/null @@ -1,15 +0,0 @@ - 83 85 87 89 - 84 86 88 90 - 85 87 89 91 - 88 90 92 94 - 89 91 93 95 - 90 92 94 96 - 93 95 97 99 - 94 96 98 100 - 95 97 99 101 - 98 100 102 104 - 99 101 103 105 - 100 102 104 106 - 103 105 107 109 - 104 106 108 110 - 105 107 109 111 diff --git a/tools/h5import/testfiles/txtin8.conf b/tools/h5import/testfiles/txtin8.conf deleted file mode 100644 index 9dbfd2b..0000000 --- a/tools/h5import/testfiles/txtin8.conf +++ /dev/null @@ -1,18 +0,0 @@ -PATH /int/8-bit -INPUT-CLASS TEXTIN -INPUT-SIZE 8 -OUTPUT-CLASS IN -OUTPUT-SIZE 8 -OUTPUT-BYTE-ORDER LE -OUTPUT-ARCHITECTURE STD -RANK 3 -DIMENSION-SIZES 2 4 3 -CHUNKED-DIMENSION-SIZES 2 2 2 -MAXIMUM-DIMENSIONS -1 -1 -1 -COMPRESSION-PARAM 3 -COMPRESSION-TYPE GZIP - - - - - diff --git a/tools/h5import/testfiles/txtin8.h5 b/tools/h5import/testfiles/txtin8.h5 deleted file mode 100644 index 42e7727..0000000 Binary files a/tools/h5import/testfiles/txtin8.h5 and /dev/null differ diff --git a/tools/h5import/testfiles/txtin8.txt b/tools/h5import/testfiles/txtin8.txt deleted file mode 100644 index 0688e9b..0000000 --- a/tools/h5import/testfiles/txtin8.txt +++ /dev/null @@ -1,15 +0,0 @@ - 83 85 87 89 - 84 86 88 90 - 85 87 89 91 - 88 90 92 94 - 89 91 93 95 - 90 92 94 96 - 93 95 97 99 - 94 96 98 100 - 95 97 99 101 - 98 100 102 104 - 99 101 103 105 - 100 102 104 106 - 103 105 107 109 - 104 106 108 110 - 105 107 109 111 diff --git a/tools/h5import/testfiles/txtstr.conf b/tools/h5import/testfiles/txtstr.conf deleted file mode 100644 index 85079e0..0000000 --- a/tools/h5import/testfiles/txtstr.conf +++ /dev/null @@ -1,6 +0,0 @@ -PATH /mytext/data -INPUT-CLASS STR - - - - diff --git a/tools/h5import/testfiles/txtstr.h5 b/tools/h5import/testfiles/txtstr.h5 deleted file mode 100644 index ceb0810..0000000 Binary files a/tools/h5import/testfiles/txtstr.h5 and /dev/null differ diff --git a/tools/h5import/testfiles/txtstr.txt b/tools/h5import/testfiles/txtstr.txt deleted file mode 100644 index 25be0a6..0000000 --- a/tools/h5import/testfiles/txtstr.txt +++ /dev/null @@ -1,2 +0,0 @@ - hello world - hello world again diff --git a/tools/h5import/testfiles/txtuin16.conf b/tools/h5import/testfiles/txtuin16.conf deleted file mode 100644 index 753e6e8..0000000 --- a/tools/h5import/testfiles/txtuin16.conf +++ /dev/null @@ -1,12 +0,0 @@ -PATH /int/uint/16-bit -INPUT-CLASS TEXTUIN -INPUT-SIZE 16 -RANK 2 -DIMENSION-SIZES 4 3 -COMPRESSION-PARAM 2 -CHUNKED-DIMENSION-SIZES 2 2 -OUTPUT-ARCHITECTURE STD -OUTPUT-BYTE-ORDER LE - - - diff --git a/tools/h5import/testfiles/txtuin16.h5 b/tools/h5import/testfiles/txtuin16.h5 deleted file mode 100644 index 9ee166a..0000000 Binary files a/tools/h5import/testfiles/txtuin16.h5 and /dev/null differ diff --git a/tools/h5import/testfiles/txtuin16.txt b/tools/h5import/testfiles/txtuin16.txt deleted file mode 100644 index 0688e9b..0000000 --- a/tools/h5import/testfiles/txtuin16.txt +++ /dev/null @@ -1,15 +0,0 @@ - 83 85 87 89 - 84 86 88 90 - 85 87 89 91 - 88 90 92 94 - 89 91 93 95 - 90 92 94 96 - 93 95 97 99 - 94 96 98 100 - 95 97 99 101 - 98 100 102 104 - 99 101 103 105 - 100 102 104 106 - 103 105 107 109 - 104 106 108 110 - 105 107 109 111 diff --git a/tools/h5import/testfiles/txtuin32.conf b/tools/h5import/testfiles/txtuin32.conf deleted file mode 100644 index d61e1a1..0000000 --- a/tools/h5import/testfiles/txtuin32.conf +++ /dev/null @@ -1,11 +0,0 @@ -PATH /int/uint/32-bit -INPUT-CLASS TEXTUIN -INPUT-SIZE 32 -RANK 3 -DIMENSION-SIZES 2 4 3 -OUTPUT-ARCHITECTURE STD -OUTPUT-BYTE-ORDER BE - - - - diff --git a/tools/h5import/testfiles/txtuin32.h5 b/tools/h5import/testfiles/txtuin32.h5 deleted file mode 100644 index 1a4dda5..0000000 Binary files a/tools/h5import/testfiles/txtuin32.h5 and /dev/null differ diff --git a/tools/h5import/testfiles/txtuin32.txt b/tools/h5import/testfiles/txtuin32.txt deleted file mode 100644 index 0688e9b..0000000 --- a/tools/h5import/testfiles/txtuin32.txt +++ /dev/null @@ -1,15 +0,0 @@ - 83 85 87 89 - 84 86 88 90 - 85 87 89 91 - 88 90 92 94 - 89 91 93 95 - 90 92 94 96 - 93 95 97 99 - 94 96 98 100 - 95 97 99 101 - 98 100 102 104 - 99 101 103 105 - 100 102 104 106 - 103 105 107 109 - 104 106 108 110 - 105 107 109 111 diff --git a/tools/h5jam/CMakeLists.txt b/tools/h5jam/CMakeLists.txt deleted file mode 100644 index d2600ca..0000000 --- a/tools/h5jam/CMakeLists.txt +++ /dev/null @@ -1,81 +0,0 @@ -cmake_minimum_required (VERSION 3.1.0) -PROJECT (HDF5_TOOLS_H5JAM) - -#----------------------------------------------------------------------------- -# Setup include Directories -#----------------------------------------------------------------------------- -INCLUDE_DIRECTORIES (${HDF5_TOOLS_DIR}/lib) - -# -------------------------------------------------------------------- -# Add the h5jam executables -# -------------------------------------------------------------------- -add_executable (h5jam ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/h5jam.c) -TARGET_NAMING (h5jam STATIC) -TARGET_C_PROPERTIES (h5jam STATIC " " " ") -target_link_libraries (h5jam ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) -set_target_properties (h5jam PROPERTIES FOLDER tools) -set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5jam") - -add_executable (getub ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/getub.c) -TARGET_NAMING (getub STATIC) -TARGET_C_PROPERTIES (getub STATIC " " " ") -target_link_libraries (getub ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) -set_target_properties (getub PROPERTIES FOLDER tools) - -add_executable (tellub ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/tellub.c) -TARGET_NAMING (tellub STATIC) -TARGET_C_PROPERTIES (tellub STATIC " " " ") -target_link_libraries (tellub ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) -set_target_properties (tellub PROPERTIES FOLDER tools) - -add_executable (h5unjam ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/h5unjam.c) -TARGET_NAMING (h5unjam STATIC) -TARGET_C_PROPERTIES (h5unjam STATIC " " " ") -target_link_libraries (h5unjam ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) -set_target_properties (h5unjam PROPERTIES FOLDER tools) -set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5unjam") - -set (H5_DEP_EXECUTABLES - h5jam - getub - tellub - h5unjam -) - -if (BUILD_TESTING) - # -------------------------------------------------------------------- - # Add the h5jam test executables - # -------------------------------------------------------------------- - if (HDF5_BUILD_GENERATORS) - add_executable (h5jamgentest ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/h5jamgentest.c) - TARGET_NAMING (h5jamgentest STATIC) - TARGET_C_PROPERTIES (testhdf5 STATIC " " " ") - target_link_libraries (h5jamgentest ${HDF5_LIB_TARGET}) - set_target_properties (h5jamgentest PROPERTIES FOLDER generator/tools) - - #add_test (NAME h5jamgentest COMMAND $) - endif (HDF5_BUILD_GENERATORS) - - include (CMakeTests.cmake) - -endif (BUILD_TESTING) - -############################################################################## -############################################################################## -### I N S T A L L A T I O N ### -############################################################################## -############################################################################## - -#----------------------------------------------------------------------------- -# Rules for Installation of tools using make Install target -#----------------------------------------------------------------------------- - -#INSTALL_PROGRAM_PDB (h5jam ${HDF5_INSTALL_BIN_DIR} toolsapplications) - -install ( - TARGETS - h5jam h5unjam - EXPORT - ${HDF5_EXPORTED_TARGETS} - RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications -) diff --git a/tools/h5jam/CMakeTests.cmake b/tools/h5jam/CMakeTests.cmake deleted file mode 100644 index 96061b0..0000000 --- a/tools/h5jam/CMakeTests.cmake +++ /dev/null @@ -1,384 +0,0 @@ - -############################################################################## -############################################################################## -### T E S T I N G ### -############################################################################## -############################################################################## - - set (HDF5_REFERENCE_TXT_FILES - u10.txt - u511.txt - u512.txt - u513.txt - h5jam-help.txt - h5unjam-help.txt - h5jam-ub-nohdf5.txt - ) - set (HDF5_REFERENCE_TEST_FILES - tall.h5 - twithub.h5 - twithub513.h5 - ) - - file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - foreach (h5_file ${HDF5_REFERENCE_TEST_FILES}) - HDFTEST_COPY_FILE("${HDF5_TOOLS_H5JAM_SOURCE_DIR}/testfiles/${h5_file}" "${PROJECT_BINARY_DIR}/testfiles/${h5_file}" "h5jam_files") - endforeach (h5_file ${HDF5_REFERENCE_TEST_FILES}) - - foreach (txt_file ${HDF5_REFERENCE_TXT_FILES}) - HDFTEST_COPY_FILE("${HDF5_TOOLS_H5JAM_SOURCE_DIR}/testfiles/${txt_file}" "${PROJECT_BINARY_DIR}/testfiles/${txt_file}" "h5jam_files") - endforeach (txt_file ${HDF5_REFERENCE_TXT_FILES}) - add_custom_target(h5jam_files ALL COMMENT "Copying files needed by h5jam tests" DEPENDS ${h5jam_files_list}) - -############################################################################## -############################################################################## -### T H E T E S T S M A C R O S ### -############################################################################## -############################################################################## - - # ============================================================ - # TEST_H5JAM_OUTPUT - # For the purpose to verify only output & exitcode from h5jam - # - MACRO (TEST_H5JAM_OUTPUT expectfile resultcode) - # If using memchecker add tests without using scripts - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME H5JAM-${expectfile} COMMAND $ ${ARGN}) - if (NOT "${resultcode}" STREQUAL "0") - set_tests_properties (H5JAM-${expectfile} PROPERTIES WILL_FAIL "true") - endif (NOT "${resultcode}" STREQUAL "0") - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5JAM-${expectfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -D "TEST_OUTPUT=${expectfile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=testfiles/${expectfile}.txt" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (TEST_H5JAM_OUTPUT) - - # ============================================================ - # TEST_H5UNJAM_OUTPUT - # For the purpose to verify only output & exitcode from h5unjam - # - MACRO (TEST_H5UNJAM_OUTPUT expectfile resultcode) - # If using memchecker add tests without using scripts - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME H5JAM-UNJAM-${expectfile} COMMAND $ ${ARGN}) - if (NOT "${resultcode}" STREQUAL "0") - set_tests_properties (H5JAM-UNJAM-${expectfile} PROPERTIES WILL_FAIL "true") - endif (NOT "${resultcode}" STREQUAL "0") - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5JAM-UNJAM-${expectfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS=${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -D "TEST_OUTPUT=${expectfile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=testfiles/${expectfile}.txt" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (TEST_H5UNJAM_OUTPUT) - - MACRO (CHECKFILE testname testdepends expected actual) - # If using memchecker add tests without using scripts - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5JAM-${testname}-CHECKFILE-H5DMP - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=testfiles/${expected}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -D "TEST_OUTPUT=${actual}.new" - -D "TEST_EXPECT=0" - -D "TEST_FILTER=(^(HDF5)[^\n]*)" - -D "TEST_SKIP_COMPARE=TRUE" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5JAM-${testname}-CHECKFILE-H5DMP PROPERTIES DEPENDS ${testdepends}) - add_test ( - NAME H5JAM-${testname}-CHECKFILE-H5DMP_CMP - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=${actual}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -D "TEST_OUTPUT=${actual}.out" - -D "TEST_EXPECT=0" - -D "TEST_FILTER=(^(HDF5)[^\n]*)" - -D "TEST_REFERENCE=${actual}.new" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5JAM-${testname}-CHECKFILE-H5DMP_CMP PROPERTIES DEPENDS H5JAM-${testname}-CHECKFILE-H5DMP) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO(CHECKFILE testname testdepends expected actual) - - MACRO (UNJAMTEST testname setfile infile ufile chkfile outfile) - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5JAM-${testname}-UNJAM-SETUP-clear-objects - COMMAND ${CMAKE_COMMAND} -E remove ${infile} - ) - add_test ( - NAME H5JAM-${testname}-UNJAM-SETUP - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/testfiles/${setfile} ${PROJECT_BINARY_DIR}/${infile} - ) - set_tests_properties (H5JAM-${testname}-UNJAM-SETUP PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-SETUP-clear-objects) - add_test ( - NAME H5JAM-${testname}-UNJAM-clear-objects - COMMAND ${CMAKE_COMMAND} -E remove ${outfile} - ) - set_tests_properties (H5JAM-${testname}-UNJAM-clear-objects PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-SETUP) - if (NOT "${ufile}" STREQUAL "NONE") - add_test ( - NAME H5JAM-${testname}-UNJAM_D-clear-objects - COMMAND ${CMAKE_COMMAND} -E remove ${ufile} - ) - set_tests_properties (H5JAM-${testname}-UNJAM_D-clear-objects PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-clear-objects) - add_test (NAME H5JAM-${testname}-UNJAM COMMAND $ -i ${infile} -u ${ufile} -o ${outfile}) - set_tests_properties (H5JAM-${testname}-UNJAM PROPERTIES DEPENDS H5JAM-${testname}-UNJAM_D-clear-objects) - set (compare_test ${ufile}) - else (NOT "${ufile}" STREQUAL "NONE") - if (NOT "${ARGN}" STREQUAL "--delete") - add_test ( - NAME H5JAM-${testname}-UNJAM - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=-i;${infile};-o;${outfile}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -D "TEST_OUTPUT=${outfile}.ufile.txt" - -D "TEST_EXPECT=0" - -D "TEST_SKIP_COMPARE=TRUE" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5JAM-${testname}-UNJAM PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-clear-objects) - set (compare_test "${outfile}.ufile.txt") - else (NOT "${ARGN}" STREQUAL "--delete") - add_test (NAME H5JAM-${testname}-UNJAM COMMAND $ -i ${infile} -o ${outfile}) - set_tests_properties (H5JAM-${testname}-UNJAM PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-clear-objects) - set (compare_test "") - endif (NOT "${ARGN}" STREQUAL "--delete") - endif (NOT "${ufile}" STREQUAL "NONE") - if (NOT "${compare_test}" STREQUAL "") - add_test ( - NAME H5JAM-${testname}-UNJAM-CHECK_UB_1-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove - ${infile}.len.txt - ${infile}.cmp - ${infile}-ub.cmp - ) - set_tests_properties (H5JAM-${testname}-UNJAM-CHECK_UB_1-clear-objects PROPERTIES DEPENDS "H5JAM-${testname}-UNJAM") - add_test ( - NAME H5JAM-${testname}-UNJAM-CHECK_UB_1 - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_GET_PROGRAM=$" - -D "TEST_CHECKUB=YES" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -D "TEST_HFILE=${infile}" - -D "TEST_UFILE=${compare_test}" - -D "TEST_EXPECT=0" - -D "TEST_OFILE=" - -P "${HDF_RESOURCES_DIR}/userblockTest.cmake" - ) - set_tests_properties (H5JAM-${testname}-UNJAM-CHECK_UB_1 PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-CHECK_UB_1-clear-objects) - endif (NOT "${compare_test}" STREQUAL "") - - add_test ( - NAME H5JAM-${testname}-UNJAM-CHECK_NOUB - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_GET_PROGRAM=$" - -D "TEST_CHECKUB=NO" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -D "TEST_HFILE=${outfile}" - -D "TEST_EXPECT=0" - -D "TEST_UFILE=NULL" - -D "TEST_OFILE=NULL" - -P "${HDF_RESOURCES_DIR}/userblockTest.cmake" - ) - if (NOT "${compare_test}" STREQUAL "") - set_tests_properties (H5JAM-${testname}-UNJAM-CHECK_NOUB PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-CHECK_UB_1) - else (NOT "${compare_test}" STREQUAL "") - set_tests_properties (H5JAM-${testname}-UNJAM-CHECK_NOUB PROPERTIES DEPENDS H5JAM-${testname}-UNJAM) - endif (NOT "${compare_test}" STREQUAL "") - - CHECKFILE (${testname} "H5JAM-${testname}-UNJAM-CHECK_NOUB" ${chkfile} ${outfile}) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO(UNJAMTEST testname infile ufile outfile) - - MACRO (JAMTEST testname jamfile infile chkfile outfile) - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5JAM-${testname}-clear-objects - COMMAND ${CMAKE_COMMAND} -E remove ${outfile} ${infile}.cpy.h5 - ) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME H5JAM-${testname} COMMAND $ -u testfiles/${jamfile} -i testfiles/${infile} -o ${outfile} ${ARGN}) - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - set_tests_properties (H5JAM-${testname} PROPERTIES DEPENDS H5JAM-${testname}-clear-objects) - set (compare_test ${outfile}) - set (compare_orig testfiles/${infile}) - if ("${ARGN}" STREQUAL "--clobber") - set (compare_orig "") - endif ("${ARGN}" STREQUAL "--clobber") - - add_test ( - NAME H5JAM-${testname}-CHECK_UB_1-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove - ${compare_test}.len.txt - ${compare_test}.cmp - ${compare_test}-ub.cmp - ) - set_tests_properties (H5JAM-${testname}-CHECK_UB_1-clear-objects PROPERTIES DEPENDS "H5JAM-${testname}") - add_test ( - NAME H5JAM-${testname}-CHECK_UB_1 - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_GET_PROGRAM=$" - -D "TEST_CHECKUB=YES" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -D "TEST_HFILE=${compare_test}" - -D "TEST_UFILE=testfiles/${jamfile}" - -D "TEST_EXPECT=0" - -D "TEST_OFILE=${compare_orig}" - -P "${HDF_RESOURCES_DIR}/userblockTest.cmake" - ) - set_tests_properties (H5JAM-${testname}-CHECK_UB_1 PROPERTIES DEPENDS H5JAM-${testname}-CHECK_UB_1-clear-objects) - CHECKFILE (${testname} "H5JAM-${testname}-CHECK_UB_1" ${chkfile} ${outfile}) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (JAMTEST testname jamfile infile outfile) - - MACRO (JAMTEST_NONE testname jamfile infile setfile chkfile) - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5JAM-${testname}_NONE-clear-objects - COMMAND ${CMAKE_COMMAND} -E remove - ${chkfile} ${chkfile}.cpy.h5 - ) - add_test ( - NAME H5JAM-${testname}_NONE-SETUP - COMMAND ${CMAKE_COMMAND} -E copy_if_different testfiles/${setfile} ${chkfile} - ) - set_tests_properties (H5JAM-${testname}_NONE-SETUP PROPERTIES DEPENDS H5JAM-${testname}_NONE-clear-objects) - - add_test ( - NAME H5JAM-${testname}_NONE_COPY - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${chkfile} ${chkfile}.cpy.h5 - ) - set_tests_properties (H5JAM-${testname}_NONE_COPY PROPERTIES DEPENDS H5JAM-${testname}_NONE-SETUP) - - add_test (NAME H5JAM-${testname}_NONE COMMAND $ -u testfiles/${jamfile} -i ${chkfile} ${ARGN}) - set_tests_properties (H5JAM-${testname}_NONE PROPERTIES DEPENDS H5JAM-${testname}_NONE_COPY) - - set (compare_test ${chkfile}) - set (compare_orig ${chkfile}.cpy.h5) - if ("${ARGN}" STREQUAL "--clobber") - set (compare_orig "") - endif ("${ARGN}" STREQUAL "--clobber") - - add_test ( - NAME H5JAM-${testname}_NONE-CHECK_UB_1-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove - ${compare_test}.len.txt - ${compare_test}.cmp - ${compare_test}-ub.cmp - ) - set_tests_properties (H5JAM-${testname}_NONE-CHECK_UB_1-clear-objects PROPERTIES DEPENDS "H5JAM-${testname}_NONE") - add_test ( - NAME H5JAM-${testname}_NONE-CHECK_UB_1 - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_GET_PROGRAM=$" - -D "TEST_CHECKUB=YES" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -D "TEST_HFILE=${compare_test}" - -D "TEST_UFILE=testfiles/${jamfile}" - -D "TEST_EXPECT=0" - -D "TEST_OFILE=${compare_orig}" - -P "${HDF_RESOURCES_DIR}/userblockTest.cmake" - ) - set_tests_properties (H5JAM-${testname}_NONE-CHECK_UB_1 PROPERTIES DEPENDS H5JAM-${testname}_NONE-CHECK_UB_1-clear-objects) - CHECKFILE (${testname} "H5JAM-${testname}_NONE-CHECK_UB_1" ${infile} ${chkfile}) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (JAMTEST_NONE testname jamfile infile setfile chkfile) - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## - -#------------------------------- -# Testing h5jam -#------------------------------- - # help page - TEST_H5JAM_OUTPUT(h5jam-help 0 -h) - - # don't allow HDF5 format file as an user block file - TEST_H5JAM_OUTPUT(h5jam-ub-nohdf5 1 -i testfiles/tall.h5 -u testfiles/tall.h5 -o tall-tmp.h5) - - JAMTEST (tall_u10 u10.txt tall.h5 tall.h5 ta2.h5) - JAMTEST (tall_u511 u511.txt tall.h5 tall.h5 ta3.h5) - JAMTEST (tall_u512 u512.txt tall.h5 tall.h5 ta4.h5) - JAMTEST (tall_u513 u513.txt tall.h5 tall.h5 ta5.h5) - - JAMTEST_NONE (N_ta_u10 u10.txt tall.h5 tall.h5 ta6.h5) - JAMTEST_NONE (N_ta_u511 u511.txt tall.h5 tall.h5 ta7.h5) - JAMTEST_NONE (N_ta_u512 u512.txt tall.h5 tall.h5 ta8.h5) - JAMTEST_NONE (N_ta_u513 u513.txt tall.h5 tall.h5 ta9.h5) - - JAMTEST (twithub_u10 u10.txt twithub.h5 tall.h5 tax2.h5) - JAMTEST (twithub_u511 u511.txt twithub.h5 tall.h5 tax3.h5) - JAMTEST (twithub_u512 u512.txt twithub.h5 tall.h5 tax4.h5) - JAMTEST (twithub_u513 u513.txt twithub.h5 tall.h5 tax5.h5) - - JAMTEST (twithub513_u10 u10.txt twithub513.h5 tall.h5 tax6.h5) - JAMTEST (twithub513_u511 u511.txt twithub513.h5 tall.h5 tax7.h5) - JAMTEST (twithub513_u512 u512.txt twithub513.h5 tall.h5 tax8.h5) - JAMTEST (twithub513_u513 u513.txt twithub513.h5 tall.h5 tax9.h5) - - JAMTEST (twithub_u10_c u10.txt twithub.h5 tall.h5 taz2.h5 --clobber) - JAMTEST (twithub_u511_c u511.txt twithub.h5 tall.h5 taz3.h5 --clobber) - JAMTEST (twithub_u512_c u512.txt twithub.h5 tall.h5 taz4.h5 --clobber) - JAMTEST (twithub_u513_c u513.txt twithub.h5 tall.h5 taz5.h5 --clobber) - - JAMTEST (twithub513_u10_c u10.txt twithub513.h5 tall.h5 taz6.h5 --clobber) - JAMTEST (twithub513_u511_c u511.txt twithub513.h5 tall.h5 taz7.h5 --clobber) - JAMTEST (twithub513_u512_c u512.txt twithub513.h5 tall.h5 taz8.h5 --clobber) - JAMTEST (twithub513_u513_c u513.txt twithub513.h5 tall.h5 taz9.h5 --clobber) - - JAMTEST_NONE (N_twithub_u10_c u10.txt tall.h5 twithub.h5 tay2.h5 --clobber) - JAMTEST_NONE (N_twithub_u511_c u511.txt tall.h5 twithub.h5 tay3.h5 --clobber) - JAMTEST_NONE (N_twithub_u512_c u512.txt tall.h5 twithub.h5 tay4.h5 --clobber) - JAMTEST_NONE (N_twithub_u513_c u513.txt tall.h5 twithub.h5 tay5.h5 --clobber) - - JAMTEST_NONE (N_twithub513_u10_c u10.txt tall.h5 twithub513.h5 tay6.h5 --clobber) - JAMTEST_NONE (N_twithub513_u511_c u511.txt tall.h5 twithub513.h5 tay7.h5 --clobber) - JAMTEST_NONE (N_twithub513_u512_c u512.txt tall.h5 twithub513.h5 tay8.h5 --clobber) - JAMTEST_NONE (N_twithub513_u513_c u513.txt tall.h5 twithub513.h5 tay9.h5 --clobber) - -#------------------------------- -# Testing h5unjam -#------------------------------- - # help page - TEST_H5UNJAM_OUTPUT(h5unjam-help 0 -h) - - UNJAMTEST (twithub_tall twithub.h5 tai1.h5 o10.txt tall.h5 taa1.h5) - UNJAMTEST (twithub513_tall twithub513.h5 tai2.h5 o512.txt tall.h5 taa2.h5) - - UNJAMTEST (N_twithub_tall twithub.h5 tai3.h5 NONE tall.h5 taa3.h5) - UNJAMTEST (N_twithub513_tall twithub513.h5 tai4.h5 NONE tall.h5 taa4.h5) - - UNJAMTEST (D_twithub_tall twithub.h5 taj2.h5 NONE tall.h5 tac2.h5 --delete) - UNJAMTEST (D_twithub513_tall twithub513.h5 taj3.h5 NONE tall.h5 tac3.h5 --delete) diff --git a/tools/h5jam/Makefile.am b/tools/h5jam/Makefile.am deleted file mode 100644 index 60a62b9..0000000 --- a/tools/h5jam/Makefile.am +++ /dev/null @@ -1,45 +0,0 @@ -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -## -## Makefile.am -## Run automake to generate a Makefile.in from this file. -# -# HDF5 Library Makefile(.in) -# - -include $(top_srcdir)/config/commence.am - -# Include src and tools/lib directories -AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib - -bin_PROGRAMS=h5jam h5unjam -check_PROGRAMS=tellub h5jamgentest getub -TEST_SCRIPT=testh5jam.sh - -# Add h5jam and h5unjam specific linker flags here -h5jam_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) -h5unjam_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) - -check_SCRIPTS=$(TEST_SCRIPT) -SCRIPT_DEPEND=h5jam$(EXEEXT) h5unjam$(EXEEXT) - -# Link against the main HDF5 library and tools library -LDADD=$(LIBH5TOOLS) $(LIBHDF5) - -# Temporary files. *.h5 are generated by jamgentest. They should -# copied to the testfiles/ directory if update is required. -CHECK_CLEANFILES+=*.h5 testfiles/h5jam-*-sav testfiles/h5unjam-*-sav -DISTCLEANFILES=testh5jam.sh - -include $(top_srcdir)/config/conclude.am diff --git a/tools/h5jam/getub.c b/tools/h5jam/getub.c deleted file mode 100644 index 4e02e6b..0000000 --- a/tools/h5jam/getub.c +++ /dev/null @@ -1,157 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include "H5private.h" -#include "h5tools.h" -#include "h5tools_utils.h" - -void parse_command_line(int argc, const char *argv[]); - -/* Name of tool */ -#define PROGRAM_NAME "getub" -char *nbytes = NULL; - -static const char *s_opts = "c:"; /* add more later ? */ -static struct long_options l_opts[] = { - {"c", require_arg, 'c'}, /* input file */ - {NULL, 0, '\0'} -}; - -/*------------------------------------------------------------------------- - * Function: usage - * - * Purpose: Print the usage message - * - * Return: void - *------------------------------------------------------------------------- - */ -static void -usage (const char *prog) -{ - HDfflush(stdout); - HDfprintf(stdout, "usage: %s -c nb file] \n", prog); - HDfprintf(stdout, " print first 'nb' byts of file to stdoug.\n"); -} - -/*------------------------------------------------------------------------- - * Function: parse_command_line - * - * Purpose: Parse the command line for the h5dumper. - * - * Return: Success: - * - * Failure: Exits program with EXIT_FAILURE value. - *------------------------------------------------------------------------- - */ -void -parse_command_line(int argc, const char *argv[]) -{ - int opt; - - /* parse command line options */ - while((opt = get_option (argc, argv, s_opts, l_opts)) != EOF) { - switch((char) opt) { - case 'c': - nbytes = HDstrdup(opt_arg); - break; - case '?': - default: - usage(h5tools_getprogname()); - HDexit(EXIT_FAILURE); - } /* end switch */ - } /* end while */ - - if(argc <= opt_ind) { - error_msg("missing file name\n"); - usage(h5tools_getprogname()); - HDexit(EXIT_FAILURE); - } /* end if */ -} /* end parse_command_line() */ - -int -main(int argc, const char *argv[]) -{ - int fd = -1; - unsigned size; - char *filename = NULL; - long res; - char *buf = NULL; - - h5tools_setprogname(PROGRAM_NAME); - h5tools_setstatus(EXIT_SUCCESS); - - /* Initialize h5tools lib */ - h5tools_init(); - - parse_command_line(argc, argv); - - if(NULL == nbytes) { - /* missing arg */ - error_msg("missing size\n"); - usage(h5tools_getprogname()); - goto error; - } /* end if */ - - if(argc <= (opt_ind)) { - error_msg("missing file name\n"); - usage(h5tools_getprogname()); - goto error; - } /* end if */ - - filename = HDstrdup(argv[opt_ind]); - - size = 0; - if(EOF == (res = sscanf(nbytes, "%u", &size))) { - /* fail */ - error_msg("missing file name\n"); - usage(h5tools_getprogname()); - goto error; - } /* end if */ - - if((fd = HDopen(filename, O_RDONLY, 0)) < 0) { - error_msg("can't open file %s\n", filename); - goto error; - } /* end if */ - - if(NULL == (buf = (char *)HDmalloc((unsigned)(size + 1)))) { - error_msg("can't allocate buffer \n"); - goto error; - } /* end if */ - - res = HDread(fd, buf, (unsigned)size); - if(res < (long)size) { - error_msg("Bad read \n"); - goto error; - } /* end if */ - - if(HDwrite(1, buf, (unsigned)size) < 0) { - error_msg("Bad write \n"); - goto error; - } /* end if */ - - /* close things and exit */ - HDfree(buf); - HDclose(fd); - - return EXIT_SUCCESS; - -error: - if(buf) - HDfree(buf); - if(fd > -1) - HDclose(fd); - return EXIT_FAILURE; -} /* end main() */ - diff --git a/tools/h5jam/h5jam.c b/tools/h5jam/h5jam.c deleted file mode 100644 index ae45714..0000000 --- a/tools/h5jam/h5jam.c +++ /dev/null @@ -1,571 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include "hdf5.h" -#include "H5private.h" -#include "h5tools.h" -#include "h5tools_utils.h" - -/* Name of tool */ -#define PROGRAMNAME "h5jam" - -herr_t write_pad(int ofile, hsize_t old_where, hsize_t *new_where); -hsize_t compute_user_block_size (hsize_t); -hsize_t copy_some_to_file (int, int, hsize_t, hsize_t, ssize_t); -void parse_command_line (int, const char *[]); - -int do_clobber = FALSE; -char *output_file = NULL; -char *input_file = NULL; -char *ub_file = NULL; - -/* - * Command-line options: The user can specify short or long-named - * parameters. The long-named ones can be partially spelled. When - * adding more, make sure that they don't clash with each other. - */ -static const char *s_opts = "hi:u:o:c:V"; /* add more later ? */ -static struct long_options l_opts[] = { - {"help", no_arg, 'h'}, - {"hel", no_arg, 'h'}, - {"i", require_arg, 'i'}, /* input file */ - {"u", require_arg, 'u'}, /* user block file */ - {"o", require_arg, 'o'}, /* output file */ - {"clobber", no_arg, 'c'}, /* clobber existing UB */ - {"clobbe", no_arg, 'c'}, - {"clobb", no_arg, 'c'}, - {"clob", no_arg, 'c'}, - {"clo", no_arg, 'c'}, - {"cl", no_arg, 'c'}, - {NULL, 0, '\0'} -}; - -/*------------------------------------------------------------------------- - * Function: usage - * - * Purpose: Print the usage message - * - * Return: void - * - * Programmer: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -usage (const char *prog) -{ - HDfflush (stdout); - HDfprintf (stdout, - "usage: %s -i -u [-o ] [--clobber]\n", prog); - HDfprintf (stdout, "\n"); - HDfprintf (stdout, - "Adds user block to front of an HDF5 file and creates a new concatenated file.\n"); - HDfprintf (stdout, "\n"); - HDfprintf (stdout, - "OPTIONS\n"); - HDfprintf (stdout, - " -i in_file.h5 Specifies the input HDF5 file.\n"); - HDfprintf (stdout, - " -u in_user_file Specifies the file to be inserted into the user block.\n"); - HDfprintf (stdout, - " Can be any file format except an HDF5 format.\n"); - HDfprintf (stdout, - " -o out_file.h5 Specifies the output HDF5 file.\n"); - HDfprintf (stdout, - " If not specified, the user block will be concatenated in\n"); - HDfprintf (stdout, - " place to the input HDF5 file.\n"); - HDfprintf (stdout, - " --clobber Wipes out any existing user block before concatenating\n"); - HDfprintf (stdout, - " the given user block.\n"); - HDfprintf (stdout, - " The size of the new user block will be the larger of;\n"); - HDfprintf (stdout, - " - the size of existing user block in the input HDF5 file\n"); - HDfprintf (stdout, - " - the size of user block required by new input user file\n"); - HDfprintf (stdout, - " (size = 512 x 2N, N is positive integer.)\n"); - HDfprintf (stdout, "\n"); - HDfprintf (stdout, - " -h Prints a usage message and exits.\n"); - HDfprintf (stdout, - " -V Prints the HDF5 library version and exits.\n"); - HDfprintf (stdout, "\n"); - HDfprintf (stdout, - "Exit Status:\n"); - HDfprintf (stdout, - " 0 Succeeded.\n"); - HDfprintf (stdout, - " >0 An error occurred.\n"); -} - - -/*------------------------------------------------------------------------- - * Function: leave - * - * Purpose: Shutdown and call exit() - * - * Return: Does not return - * - *------------------------------------------------------------------------- - */ -static void -leave(int ret) -{ - if (ub_file) - HDfree (ub_file); - if (input_file) - HDfree (input_file); - if (output_file) - HDfree (output_file); - - h5tools_close(); - - HDexit(ret); -} - -/*------------------------------------------------------------------------- - * Function: parse_command_line - * - * Purpose: Parse the command line for the h5dumper. - * - * Return: Success: - * - * Failure: Exits program with EXIT_FAILURE value. - * - * Programmer: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ - -void -parse_command_line (int argc, const char *argv[]) -{ - int opt = FALSE; - - /* parse command line options */ - while ((opt = get_option (argc, argv, s_opts, l_opts)) != EOF) - { - switch ((char) opt) - { - case 'o': - output_file = HDstrdup (opt_arg); - break; - case 'i': - input_file = HDstrdup (opt_arg); - break; - case 'u': - ub_file = HDstrdup (opt_arg); - break; - case 'c': - do_clobber = TRUE; - break; - case 'h': - usage (h5tools_getprogname()); - leave (EXIT_SUCCESS); - case 'V': - print_version (h5tools_getprogname()); - leave (EXIT_SUCCESS); - case '?': - default: - usage (h5tools_getprogname()); - leave (EXIT_FAILURE); - } - } -} - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: HDF5 user block jammer - * - * Return: Success: 0 - * Failure: 1 - * - * Programmer: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -int -main (int argc, const char *argv[]) -{ - int ufid = -1; - int h5fid = -1; - int ofid = -1; - void *edata; - H5E_auto2_t func; - hid_t ifile = -1; - hid_t plist = -1; - herr_t status; - htri_t testval; - hsize_t usize; - hsize_t h5fsize; - hsize_t startub; - hsize_t where; - hsize_t newubsize; - off_t fsize; - h5_stat_t sbuf; - h5_stat_t sbuf2; - int res; - - h5tools_setprogname(PROGRAMNAME); - h5tools_setstatus(EXIT_SUCCESS); - - /* Disable error reporting */ - H5Eget_auto2(H5E_DEFAULT, &func, &edata); - H5Eset_auto2(H5E_DEFAULT, NULL, NULL); - - /* Initialize h5tools lib */ - h5tools_init(); - - parse_command_line (argc, argv); - - if (ub_file == NULL) { - /* no user block */ - error_msg("missing arguemnt for -u .\n"); - help_ref_msg(stderr); - leave (EXIT_FAILURE); - } - - testval = H5Fis_hdf5 (ub_file); - - if (testval > 0) { - error_msg("-u cannot be HDF5 file, but it appears to be an HDF5 file.\n"); - help_ref_msg(stderr); - leave (EXIT_FAILURE); - } - - if (input_file == NULL) { - error_msg("missing arguemnt for -i .\n"); - help_ref_msg(stderr); - leave (EXIT_FAILURE); - } - - testval = H5Fis_hdf5 (input_file); - - if (testval <= 0) { - error_msg("Input HDF5 file \"%s\" is not HDF5 format.\n", input_file); - help_ref_msg(stderr); - leave (EXIT_FAILURE); - } - - ifile = H5Fopen (input_file, H5F_ACC_RDONLY, H5P_DEFAULT); - - if (ifile < 0) { - error_msg("Can't open input HDF5 file \"%s\"\n", input_file); - leave (EXIT_FAILURE); - } - - plist = H5Fget_create_plist (ifile); - if (plist < 0) { - error_msg("Can't get file creation plist for file \"%s\"\n", input_file); - H5Fclose(ifile); - leave (EXIT_FAILURE); - } - - status = H5Pget_userblock (plist, &usize); - if (status < 0) { - error_msg("Can't get user block for file \"%s\"\n", input_file); - H5Pclose(plist); - H5Fclose(ifile); - leave (EXIT_FAILURE); - } - - H5Pclose(plist); - H5Fclose(ifile); - - ufid = HDopen(ub_file, O_RDONLY, 0); - if(ufid < 0) { - error_msg("unable to open user block file \"%s\"\n", ub_file); - leave (EXIT_FAILURE); - } - - res = HDfstat(ufid, &sbuf); - if(res < 0) { - error_msg("Can't stat file \"%s\"\n", ub_file); - HDclose (ufid); - leave (EXIT_FAILURE); - } - - fsize = (off_t)sbuf.st_size; - - h5fid = HDopen(input_file, O_RDONLY, 0); - if(h5fid < 0) { - error_msg("unable to open HDF5 file for read \"%s\"\n", input_file); - HDclose (ufid); - leave (EXIT_FAILURE); - } - - res = HDfstat(h5fid, &sbuf2); - if(res < 0) { - error_msg("Can't stat file \"%s\"\n", input_file); - HDclose (h5fid); - HDclose (ufid); - leave (EXIT_FAILURE); - } - - h5fsize = (hsize_t)sbuf2.st_size; - - if (output_file == NULL) { - ofid = HDopen (input_file, O_WRONLY, 0); - - if (ofid < 0) { - error_msg("unable to open output file \"%s\"\n", output_file); - HDclose (h5fid); - HDclose (ufid); - leave (EXIT_FAILURE); - } - } - else { - ofid = HDopen (output_file, O_WRONLY | O_CREAT | O_TRUNC, 0644); - - if (ofid < 0) { - error_msg("unable to create output file \"%s\"\n", output_file); - HDclose (h5fid); - HDclose (ufid); - leave (EXIT_FAILURE); - } - } - - newubsize = compute_user_block_size ((hsize_t) fsize); - - startub = usize; - - if (usize > 0) { - if (do_clobber == TRUE) { - /* where is max of the current size or the new UB */ - if (usize > newubsize) { - newubsize = usize; - } - startub = 0; /*blast the old */ - } - else { - /* add new ub to current ublock, pad to new offset */ - newubsize += usize; - newubsize = compute_user_block_size ((hsize_t) newubsize); - } - } - - /* copy the HDF5 from starting at usize to starting at newubsize: - * makes room at 'from' for new ub */ - /* if no current ub, usize is 0 */ - copy_some_to_file (h5fid, ofid, usize, newubsize, (ssize_t) (h5fsize - usize)); - - /* copy the old ub to the beginning of the new file */ - if (!do_clobber) { - where = copy_some_to_file (h5fid, ofid, (hsize_t) 0, (hsize_t) 0, (ssize_t) usize); - } - - /* copy the new ub to the end of the ub */ - where = copy_some_to_file (ufid, ofid, (hsize_t) 0, startub, (ssize_t) - 1); - - /* pad the ub */ - if(write_pad(ofid, where, &where) < 0) { - error_msg("Can't pad file \"%s\"\n", output_file); - HDclose (h5fid); - HDclose (ufid); - HDclose (ofid); - leave (EXIT_FAILURE); - } /* end if */ - - if(ub_file) - HDfree (ub_file); - if(input_file) - HDfree (input_file); - if(output_file) - HDfree (output_file); - - if(ufid >= 0) - HDclose (ufid); - if(h5fid >= 0) - HDclose (h5fid); - if(ofid >= 0) - HDclose (ofid); - - return h5tools_getstatus(); -} - -/*------------------------------------------------------------------------- - * Function: copy_some_to_file - * - * Purpose: Copy part of the input file to output. - * infid: fd of file to read - * outfid: fd of file to write - * startin: offset of where to read from infid - * startout: offset of where to write to outfid - * limit: bytes to read/write - * - * If limit is < 0, the entire input file is copied. - * - * Note: this routine can be used to copy within - * the same file, i.e., infid and outfid can be the - * same file. - * - * Return: Success: last byte written in the output. - * Failure: Exits program with EXIT_FAILURE value. - * - *------------------------------------------------------------------------- - */ -hsize_t -copy_some_to_file(int infid, int outfid, hsize_t startin, hsize_t startout, - ssize_t limit) -{ - char buf[1024]; - h5_stat_t sbuf; - int res; - ssize_t tot = 0; - ssize_t howmuch = 0; - ssize_t nchars = -1; - ssize_t to; - ssize_t from; - ssize_t toend; - ssize_t fromend; - - if(startin > startout) { - /* this case is prohibited */ - error_msg("copy_some_to_file: panic: startin > startout?\n"); - exit (EXIT_FAILURE); - } /* end if */ - - if(limit < 0) { - res = HDfstat(infid, &sbuf); - if(res < 0) { - error_msg("Can't stat file \n"); - HDexit(EXIT_FAILURE); - } /* end if */ - - howmuch = (ssize_t)sbuf.st_size; - } else { - howmuch = limit; - } /* end if */ - - if(0 == howmuch) - return 0; - - toend = (ssize_t) startout + howmuch; - fromend = (ssize_t) startin + howmuch; - - if (howmuch > 512) { - to = toend - 512; - from = fromend - 512; - } else { - to = toend - howmuch; - from = fromend - howmuch; - } /* end if */ - - while (howmuch > 0) { - HDlseek(outfid, (off_t) to, SEEK_SET); - HDlseek(infid, (off_t) from, SEEK_SET); - - if (howmuch > 512) { - nchars = HDread(infid, buf, (unsigned) 512); - } else { - nchars = HDread(infid, buf, (unsigned)howmuch); - } /* end if */ - - if (nchars <= 0) { - error_msg("Read error \n"); - HDexit(EXIT_FAILURE); - } /* end if */ - - if(HDwrite (outfid, buf, (unsigned) nchars) < 0) { - error_msg("Write error \n"); - HDexit(EXIT_FAILURE); - } - - tot += nchars; - howmuch -= nchars; - if(howmuch > 512) { - to -= nchars; - from -= nchars; - } else { - to -= howmuch; - from -= howmuch; - } /* end if */ - } /* end while */ - - return (hsize_t)tot + (hsize_t)startout; -} /* end copy_some_to_file() */ - - -/*------------------------------------------------------------------------- - * Function: compute_user_block_size - * - * Purpose: Find the offset of the HDF5 header after the user block: - * align at 0, 512, 1024, etc. - * ublock_size: the size of the user block (bytes). - * - * Return: Success: the location of the header == the size of the - * padded user block. - * Failure: none - * - * Return: Success: last byte written in the output. - * Failure: Exits program with EXIT_FAILURE value. - *------------------------------------------------------------------------- - */ -H5_ATTR_CONST hsize_t -compute_user_block_size(hsize_t ublock_size) -{ - hsize_t where = 512; - - if(0 == ublock_size) - return 0; - - while(where < ublock_size) - where *= 2; - - return where; -} /* end compute_user_block_size() */ - -/* - * Write zeroes to fill the file from 'where' to 512, 1024, etc. bytes. - * - * Sets new_where to the size of the padded file and - * returns SUCCEED/FAIL. - */ -herr_t -write_pad(int ofile, hsize_t old_where, hsize_t *new_where) -{ - unsigned int i; - char buf[1]; - hsize_t psize; - - HDassert(new_where); - - buf[0] = '\0'; - - HDlseek(ofile, (off_t)old_where, SEEK_SET); - - psize = compute_user_block_size(old_where); - psize -= old_where; - - for(i = 0; i < psize; i++) - if(HDwrite(ofile, buf, 1) < 0) - return FAIL; - - /* Set the new size of the file. */ - *new_where = old_where + psize; - - return SUCCEED; -} /* end write_pad() */ - diff --git a/tools/h5jam/h5jamgentest.c b/tools/h5jam/h5jamgentest.c deleted file mode 100644 index a12b17a..0000000 --- a/tools/h5jam/h5jamgentest.c +++ /dev/null @@ -1,389 +0,0 @@ - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * Generate the binary hdf5 files and user block data for the jam/unjam tests. - * Usage: just execute the program without any arguments will - * generate all the files in the local directory. - * - * If you regenerate the test files (e.g., changing some code, - * trying it on a new platform, ...), you need to verify the correctness - * of the expected output and update the corresponding *.ddl files. - */ -#include -#include - -#include "hdf5.h" -#include "H5private.h" - -/* not used yet -#define UBTXT1 "u0.txt" -*/ -#define UBTXT2 "u10.txt" -#define UBTXT3 "u511.txt" -#define UBTXT4 "u512.txt" -#define UBTXT5 "u513.txt" -/* not used yet -#define UBTXT6 "u1023.txt" -#define UBTXT7 "u1024.txt" -#define UBTXT8 "u1025.txt" -#define UBTXT9 "u2047.txt" -#define UBTXT10 "u2048.txt" -#define UBTXT11 "u2049.txt" -#define UBBIN1 "u0.dat" -#define UBBIN2 "u10.dat" -#define UBBIN3 "u511.dat" -#define UBBIN4 "u512.dat" -#define UBBIN5 "u513.dat" -*/ - -/* not used yet -#define FILE1 "tnull.h5" -#define FILE2 "tnullwithub.h5" -*/ -/* tall is same as dumper test */ -#define FILE7 "tall.h5" -#define FILE8 "twithub.h5" -#define FILE9 "twithub513.h5" - -/* - * This pattern is used to fill text files - */ -char pattern[11] = "abcdefghij"; - -/*------------------------------------------------------------------------- - * prototypes - *------------------------------------------------------------------------- - */ - - -#define BUF_SIZE 1024 - -/* Element selection information */ - -typedef enum{ - RED, - GREEN, - BLUE, - WHITE, - BLACK -} enumtype; - -/* Compound datatype */ -typedef struct s1_t { - unsigned int a; - unsigned int b; - float c; -} s1_t; - - -/* A UD link traversal function. Shouldn't actually be called. */ -static hid_t UD_traverse(const char H5_ATTR_UNUSED * link_name, hid_t H5_ATTR_UNUSED cur_group, - const void H5_ATTR_UNUSED * udata, size_t H5_ATTR_UNUSED udata_size, hid_t H5_ATTR_UNUSED lapl_id) -{ - return -1; -} - -#define MY_LINKCLASS 187 -const H5L_class_t UD_link_class[1] = {{ - H5L_LINK_CLASS_T_VERS, /* H5L_class_t version */ - (H5L_type_t)MY_LINKCLASS, /* Link type id number */ - "UD link class", /* name for debugging */ - NULL, /* Creation callback */ - NULL, /* Move/rename callback */ - NULL, /* Copy callback */ - UD_traverse, /* The actual traversal function */ - NULL, /* Deletion callback */ - NULL /* Query callback */ -}}; - - - -/* gent_ub - with no ub, identical to gent_all from h5dumpgentest.c - - FILENAME is the name of the file to create - UB_SIZE is the size the buffer should be - UB_FILL characters will be set to the PATTERN array, - the rest of the user block will be NULL. - -/ : g1 g2 attr1 attr2 -g1 : g1.1 g1.2 -g1.1 : dset1.1.1(attr1, attr2) dset1.1.2 -g1.2 : g1.2.1 extlink -g1.2.1 : slink -g2 : dset2.1 dset2.2 udlink - -*/ - -static void -gent_ub(const char * filename, size_t ub_size, size_t ub_fill) -{ - hid_t fid, group, attr, dataset, space; - hid_t create_plist; - hsize_t dims[2]; - int data[2][2], dset1[10][10], dset2[20]; - char buf[BUF_SIZE]; - int i, j; - size_t u; - float dset2_1[10], dset2_2[3][5]; - int fd; - char *bp; - - if(ub_size > 0) - { - create_plist = H5Pcreate(H5P_FILE_CREATE); - H5Pset_userblock(create_plist, (hsize_t)ub_size); - fid = H5Fcreate(filename, H5F_ACC_TRUNC, create_plist, H5P_DEFAULT); - } - else - { - fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - } - - /* create groups */ - group = H5Gcreate2(fid, "/g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - group = H5Gcreate2(fid, "/g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - group = H5Gcreate2(fid, "/g1/g1.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - group = H5Gcreate2(fid, "/g1/g1.2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - group = H5Gcreate2(fid, "/g1/g1.2/g1.2.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - /* root attributes */ - group = H5Gopen2(fid, "/", H5P_DEFAULT); - - dims[0] = 10; - space = H5Screate_simple(1, dims, NULL); - attr = H5Acreate2(group, "attr1", H5T_STD_I8BE, space, H5P_DEFAULT, H5P_DEFAULT); - sprintf(buf, "abcdefghi"); - H5Awrite(attr, H5T_NATIVE_SCHAR, buf); - H5Sclose(space); - H5Aclose(attr); - - dims[0] = 2; dims[1] = 2; - space = H5Screate_simple(2, dims, NULL); - attr = H5Acreate2(group, "attr2", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT); - data[0][0] = 0; data[0][1] = 1; data[1][0] = 2; data[1][1] = 3; - H5Awrite(attr, H5T_NATIVE_INT, data); - H5Sclose(space); - H5Aclose(attr); - - H5Gclose(group); - - group = H5Gopen2(fid, "/g1/g1.1", H5P_DEFAULT); - - /* dset1.1.1 */ - dims[0] = 10; dims[1] = 10; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(group, "dset1.1.1", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - for (i = 0; i < 10; i++) - for (j = 0; j < 10; j++) - dset1[i][j] = j*i; - H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset1); - H5Sclose(space); - - /* attributes of dset1.1.1 */ - dims[0] = 27; - space = H5Screate_simple(1, dims, NULL); - attr = H5Acreate2(dataset, "attr1", H5T_STD_I8BE, space, H5P_DEFAULT, H5P_DEFAULT); - sprintf(buf, "1st attribute of dset1.1.1"); - H5Awrite(attr, H5T_NATIVE_SCHAR, buf); - H5Sclose(space); - H5Aclose(attr); - - dims[0] = 27; - space = H5Screate_simple(1, dims, NULL); - attr = H5Acreate2(dataset, "attr2", H5T_STD_I8BE, space, H5P_DEFAULT, H5P_DEFAULT); - sprintf(buf, "2nd attribute of dset1.1.1"); - H5Awrite(attr, H5T_NATIVE_SCHAR, buf); - H5Sclose(space); - H5Aclose(attr); - - H5Dclose(dataset); - - /* dset1.1.2 */ - dims[0] = 20; - space = H5Screate_simple(1, dims, NULL); - dataset = H5Dcreate2(group, "dset1.1.2", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - for (i = 0; i < 20; i++) - dset2[i] = i; - H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2); - H5Sclose(space); - H5Dclose(dataset); - - H5Gclose(group); - - /* external link */ - H5Lcreate_external("somefile", "somepath", fid, "/g1/g1.2/extlink", H5P_DEFAULT, H5P_DEFAULT); - - /* soft link */ - group = H5Gopen2(fid, "/g1/g1.2/g1.2.1", H5P_DEFAULT); - H5Lcreate_soft("somevalue", group, "slink", H5P_DEFAULT, H5P_DEFAULT); - H5Gclose(group); - - group = H5Gopen2(fid, "/g2", H5P_DEFAULT); - - /* dset2.1 */ - dims[0] = 10; - space = H5Screate_simple(1, dims, NULL); - dataset = H5Dcreate2(group, "dset2.1", H5T_IEEE_F32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - for (i = 0; i < 10; i++) - dset2_1[i] = (float)((float)i * 0.1F + 1.0F); - H5Dwrite(dataset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2_1); - H5Sclose(space); - H5Dclose(dataset); - - /* dset2.2 */ - dims[0] = 3; dims[1] = 5; - space = H5Screate_simple(2, dims, NULL); - dataset = H5Dcreate2(group, "dset2.2", H5T_IEEE_F32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - for (i = 0; i < 3; i++) - for (j = 0; j < 5; j++) - dset2_2[i][j] = (float)(((float)i + 1.0F) * (float)j * 0.1F); - H5Dwrite(dataset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2_2); - H5Sclose(space); - H5Dclose(dataset); - - H5Gclose(group); - - /* user-defined link */ - H5Lregister(UD_link_class); - H5Lcreate_ud(fid, "/g2/udlink", (H5L_type_t)MY_LINKCLASS, NULL, (size_t)0, H5P_DEFAULT, H5P_DEFAULT); - - H5Fclose(fid); - - /* If a user block is being used, write to it here */ - if(ub_size > 0) - { - ssize_t nbytes; - - HDassert(ub_size <= BUF_SIZE); - - fd = HDopen(filename, O_RDWR, 0); - HDassert(fd >= 0); - - /* fill buf with pattern */ - HDmemset(buf, '\0', ub_size); - bp = buf; - for (u = 0; u < ub_fill; u++) - *bp++ = pattern[u % 10]; - - nbytes = HDwrite(fd, buf, ub_size); - HDassert(nbytes >= 0); - - HDclose(fd); - } -} - -static void -create_textfile(const char *name, size_t size) -{ - char *buf; - int fd; - size_t i; - char *bp; - ssize_t nbytes; - - fd = HDcreat(name,0777); - HDassert(fd >= 0); - buf = (char *)HDcalloc(size, (size_t)1); - HDassert(buf); - - /* fill buf with pattern */ - bp = buf; - for(i = 0; i < size; i++) - *bp++ = pattern[i % 10]; - - nbytes = HDwrite(fd, buf, size); - HDassert(nbytes >= 0); - - HDfree(buf); - - HDclose(fd); -} - -#ifdef notdef -/* not used yet */ -void -create_binfile(char *name, off_t size) -{ - char *buf; - int fd; - int i; - char *bp; - - fd = creat(name,0777); - HDassert(fd >= 0); - - buf = HDcalloc(size,1); - HDassert(buf); - - /* fill buf with pattern */ - bp = buf; - for (i = 0; i < size; i++) - *bp++ = (char) i & 0xff; - - HDwrite(fd,buf,size); - - HDclose(fd); -} -#endif - -/*------------------------------------------------------------------------- - * Function: main - * - *------------------------------------------------------------------------- - */ - - -int main(void) -{ - -/* -create_textfile(UBTXT1, (size_t)0); -*/ -create_textfile(UBTXT2, (size_t)10); -create_textfile(UBTXT3, (size_t)511); -create_textfile(UBTXT4, (size_t)512); -create_textfile(UBTXT5, (size_t)513); -/* -create_textfile(UBTXT6, (size_t)1023); -create_textfile(UBTXT7, (size_t)1024); -create_textfile(UBTXT8, (size_t)1025); -create_textfile(UBTXT9, (size_t)2047); -create_textfile(UBTXT10, (size_t)2048); -create_textfile(UBTXT11, (size_t)2049); - -create_binfile(UBBIN1, (off_t)0); -create_binfile(UBBIN2, (off_t)10); -create_binfile(UBBIN3, (off_t)511); -create_binfile(UBBIN4, (off_t)512); -create_binfile(UBBIN5, (off_t)513); - -*/ - gent_ub(FILE7, (size_t)0, (size_t)0); - gent_ub(FILE8, (size_t)512, HDstrlen(pattern)); - gent_ub(FILE9, (size_t)1024, (size_t)513); - - return 0; -} diff --git a/tools/h5jam/h5unjam.c b/tools/h5jam/h5unjam.c deleted file mode 100644 index 8f88398..0000000 --- a/tools/h5jam/h5unjam.c +++ /dev/null @@ -1,411 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include "hdf5.h" -#include "H5private.h" -#include "h5tools.h" -#include "h5tools_utils.h" - -/* Name of tool */ -#define PROGRAMNAME "h5unjam" - -#define COPY_BUF_SIZE 1024 - -hsize_t write_pad( int , hsize_t ); -hsize_t compute_pad( hsize_t ); -herr_t copy_to_file( FILE *, FILE * , ssize_t, ssize_t ); - -int do_delete = FALSE; -char *output_file = NULL; -char *input_file = NULL; -char *ub_file = NULL; - -/* - * Command-line options: The user can specify short or long-named - * parameters. The long-named ones can be partially spelled. When - * adding more, make sure that they don't clash with each other. - */ -static const char *s_opts = "hu:i:o:d:V"; -static struct long_options l_opts[] = { - { "help", no_arg, 'h' }, - { "hel", no_arg, 'h' }, - {"i", require_arg, 'i'}, /* input file */ - {"u", require_arg, 'u'}, /* user block file */ - {"o", require_arg, 'o'}, /* output file */ - {"delete", no_arg, 'd'}, /* delete ub */ - {"delet", no_arg, 'd'}, - {"dele", no_arg, 'd'}, - {"del", no_arg, 'd'}, - {"de", no_arg, 'd'}, - { NULL, 0, '\0' } -}; - -/*------------------------------------------------------------------------- - * Function: usage - * - * Purpose: Print the usage message - * - * Return: void - * - * Programmer: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -usage(const char *prog) -{ - HDfflush(stdout); - HDfprintf(stdout, - "usage: %s -i [-o ] [-u | --delete]\n", prog); - HDfprintf(stdout, "\n"); - HDfprintf(stdout, - "Splits user file and HDF5 file into two files: user block data and HDF5 data.\n"); - HDfprintf(stdout, "\n"); - HDfprintf(stdout, - "OPTIONS\n"); - HDfprintf(stdout, - " -i in_file.h5 Specifies the HDF5 as input. If the input HDF5 file\n"); - HDfprintf(stdout, - " contains no user block, exit with an error message.\n"); - HDfprintf(stdout, - " -o out_file.h5 Specifies output HDF5 file without a user block.\n"); - HDfprintf(stdout, - " If not specified, the user block will be removed from the\n"); - HDfprintf(stdout, - " input HDF5 file.\n"); - HDfprintf(stdout, - " -u out_user_file\n"); - HDfprintf(stdout, - " Specifies the output file containing the data from the\n"); - HDfprintf(stdout, - " user block.\n"); - HDfprintf(stdout, - " Cannot be used with --delete option.\n"); - HDfprintf(stdout, - " --delete Remove the user block from the input HDF5 file. The content\n"); - HDfprintf(stdout, - " of the user block is discarded.\n"); - HDfprintf(stdout, - " Cannot be used with the -u option.\n"); - HDfprintf(stdout, "\n"); - HDfprintf(stdout, - " -h Prints a usage message and exits.\n"); - HDfprintf(stdout, - " -V Prints the HDF5 library version and exits.\n"); - HDfprintf(stdout, "\n"); - HDfprintf(stdout, - " If neither --delete nor -u is specified, the user block from the input file\n"); - HDfprintf(stdout, - " will be displayed to stdout.\n"); - HDfprintf(stdout, "\n"); - HDfprintf(stdout, - "Exit Status:\n"); - HDfprintf(stdout, - " 0 Succeeded.\n"); - HDfprintf(stdout, - " >0 An error occurred.\n"); -} - -/*------------------------------------------------------------------------- - * Function: parse_command_line - * - * Purpose: Parse the command line for the h5dumper. - * - * Return: Success: EXIT_SUCCESS; - * - * Failure: Exits function with EXIT_FAILURE value. - * - *------------------------------------------------------------------------- - */ -static int -parse_command_line(int argc, const char *argv[]) -{ - int opt = FALSE; - - /* parse command line options */ - while ((opt = get_option(argc, argv, s_opts, l_opts)) != EOF) { - switch((char)opt) { - case 'o': - output_file = HDstrdup(opt_arg); - if (output_file) - h5tools_set_data_output_file(output_file, 1); - break; - - case 'i': - input_file = HDstrdup(opt_arg); - if (input_file) - h5tools_set_input_file(input_file, 1); - break;; - - case 'u': - ub_file = HDstrdup(opt_arg); - if (ub_file) - h5tools_set_output_file(ub_file, 1); - else - rawoutstream = stdout; - break; - - case 'd': - do_delete = TRUE; - break; - - case 'h': - usage(h5tools_getprogname()); - h5tools_setstatus(EXIT_SUCCESS); - goto done; - - case 'V': - print_version (h5tools_getprogname()); - h5tools_setstatus(EXIT_SUCCESS); - goto done; - - case '?': - default: - usage(h5tools_getprogname()); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - } - - return EXIT_SUCCESS; - -done: - if(input_file) - HDfree(input_file); - if(output_file) - HDfree(output_file); - if(ub_file) - HDfree(ub_file); - - return EXIT_FAILURE; -} - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: HDF5 user block unjammer - * - * Return: Success: 0 - * Failure: 1 - * - * Programmer: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -int -main(int argc, const char *argv[]) -{ - void *edata; - H5E_auto2_t func; - hid_t ifile = -1; - hid_t plist = -1; - off_t fsize; - hsize_t usize; - htri_t testval; - herr_t status; - int res; - h5_stat_t sbuf; - - h5tools_setprogname(PROGRAMNAME); - h5tools_setstatus(EXIT_SUCCESS); - - /* Disable error reporting */ - H5Eget_auto2(H5E_DEFAULT, &func, &edata); - H5Eset_auto2(H5E_DEFAULT, NULL, NULL); - - /* Initialize h5tools lib */ - h5tools_init(); - - if(EXIT_FAILURE == parse_command_line(argc, argv)) - goto done; - - if (input_file == NULL) { - /* no user block */ - error_msg("missing arguemnt for HDF5 file input.\n"); - help_ref_msg(stderr); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - - testval = H5Fis_hdf5(input_file); - - if (testval <= 0) { - error_msg("Input HDF5 file \"%s\" is not HDF\n", input_file); - help_ref_msg (stderr); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - - ifile = H5Fopen(input_file, H5F_ACC_RDONLY , H5P_DEFAULT); - - if (ifile < 0) { - error_msg("Can't open input HDF5 file \"%s\"\n", input_file); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - - plist = H5Fget_create_plist(ifile); - if (plist < 0) { - error_msg("Can't get file creation plist for file \"%s\"\n", input_file); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - - status = H5Pget_userblock(plist, & usize); - if (status < 0) { - error_msg("Can't get user block for file \"%s\"\n", input_file); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - - status = H5Pclose(plist); - HDassert(status >= 0); - status = H5Fclose(ifile); - HDassert(status >= 0); - - if (usize == 0) { - /* no user block to remove: message? */ - error_msg("\"%s\" has no user block: no change to file\n", input_file); - h5tools_setstatus(EXIT_SUCCESS); - goto done; - } - - res = HDfstat(HDfileno(rawinstream), &sbuf); - if(res < 0) { - error_msg("Can't stat file \"%s\"\n", input_file); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - - fsize = sbuf.st_size; - - if (do_delete && (ub_file != NULL)) { - error_msg("??\"%s\"\n", ub_file); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - - if (output_file == NULL) { - error_msg("unable to open output HDF5 file \"%s\"\n", input_file); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - - /* copy from 0 to 'usize - 1' into ufid */ - if (!do_delete) { - if(copy_to_file(rawinstream, rawoutstream, 0, (ssize_t) usize) < 0) { - error_msg("unable to copy user block to output file \"%s\"\n", ub_file); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - } - - /* copy from usize to end of file into h5fid, - * starting at end of user block if present */ - if(copy_to_file(rawinstream, rawdatastream, (ssize_t) usize, (ssize_t)(fsize - (ssize_t)usize)) < 0) { - error_msg("unable to copy hdf5 data to output file \"%s\"\n", output_file); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - -done: - if(input_file) - HDfree(input_file); - - if(output_file) - HDfree(output_file); - - if(ub_file) { - HDfree(ub_file); - } - - h5tools_close(); - - return h5tools_getstatus(); -} - -/* - * Copy 'how_much' bytes from the input file to the output file, - * starting at byte 'where' in the input file. - * - * Returns 0 on success, -1 on failure. - */ -herr_t -copy_to_file( FILE *infid, FILE *ofid, ssize_t _where, ssize_t show_much ) -{ - static char buf[COPY_BUF_SIZE]; - size_t how_much; - off_t where = (off_t)_where; - off_t to; - off_t from; - herr_t ret_value = 0; - - /* nothing to copy */ - if(show_much <= 0) - goto done; - how_much = (size_t)show_much; - - /* rewind */ - HDfseek(infid, 0L, 0); - - from = where; - to = 0; - while(how_much > 0) { - size_t bytes_in = 0; /* # of bytes to read */ - size_t bytes_read = 0; /* # of bytes actually read */ - size_t bytes_wrote = 0; /* # of bytes written */ - - if (how_much > COPY_BUF_SIZE) - bytes_in = COPY_BUF_SIZE; - else - bytes_in = how_much; - - /* Seek to correct position in input file */ - HDfseek(infid, from, SEEK_SET); - - /* Read data to buffer */ - bytes_read = HDfread(buf, (size_t)1, bytes_in, infid); - if(0 == bytes_read && HDferror(infid)) { - ret_value = -1; - goto done; - } /* end if */ - if(0 == bytes_read && HDfeof(infid)) { - goto done; - } /* end if */ - - /* Seek to correct position in output file */ - HDfseek(ofid, to, SEEK_SET); - - /* Update positions/size */ - how_much -= bytes_read; - from += (off_t)bytes_read; - to += (off_t)bytes_read; - - /* Write nchars bytes to output file */ - bytes_wrote = HDfwrite(buf, (size_t)1, bytes_read, ofid); - if(bytes_wrote != bytes_read || (0 == bytes_wrote && HDferror(ofid))) { /* error */ - ret_value = -1; - goto done; - } /* end if */ - } /* end while */ - -done: - return ret_value; -} /* end copy_to_file */ - diff --git a/tools/h5jam/tellub.c b/tools/h5jam/tellub.c deleted file mode 100644 index b4f87af..0000000 --- a/tools/h5jam/tellub.c +++ /dev/null @@ -1,196 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include - -#ifdef H5_HAVE_UNISTD_H -#include -#endif - -#include "hdf5.h" -#include "H5private.h" -#include "h5tools.h" -#include "h5tools_utils.h" - -/* Name of tool */ -#define PROGRAMNAME "tellub" - -/* - * Command-line options: The user can specify short or long-named - * parameters. The long-named ones can be partially spelled. When - * adding more, make sure that they don't clash with each other. - */ -static const char *s_opts = "h"; -static struct long_options l_opts[] = { - {"help", no_arg, 'h'}, - {"hel", no_arg, 'h'}, - {NULL, 0, '\0'} -}; - -/*------------------------------------------------------------------------- - * Function: usage - * - * Purpose: Print the usage message - * - * Return: void - * - * Programmer: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -usage (const char *prog) -{ - fflush (stdout); - fprintf (stdout, "usage: %s h5_file\n", prog); - fprintf (stdout, - " Check that h5_fil is HDF5 file and print size of user block \n"); - fprintf (stdout, " %s -h\n", prog); - fprintf (stdout, " Print a usage message and exit\n"); -} - -/*------------------------------------------------------------------------- - * Function: parse_command_line - * - * Purpose: Parse the command line for the h5dumper. - * - * Return: Success: - * - * Failure: Exits program with EXIT_FAILURE value. - * - * Programmer: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ - -static void -parse_command_line (int argc, const char *argv[]) -{ - int opt; - - /* parse command line options */ - while ((opt = get_option (argc, argv, s_opts, l_opts)) != EOF) - { - switch ((char) opt) - { - case 'h': - usage (h5tools_getprogname()); - exit (EXIT_SUCCESS); - case '?': - default: - usage (h5tools_getprogname()); - exit (EXIT_FAILURE); - } - } - - /* check for file name to be processed */ - if (argc <= opt_ind) - { - error_msg("missing file name\n"); - usage (h5tools_getprogname()); - exit (EXIT_FAILURE); - } -} - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: HDF5 user block unjammer - * - * Return: Success: 0 - * Failure: 1 - * - * Programmer: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -int -main (int argc, const char *argv[]) -{ - char *ifname; - void *edata; - H5E_auto2_t func; - hid_t ifile; - hsize_t usize; - htri_t testval; - herr_t status; - hid_t plist; - - h5tools_setprogname(PROGRAMNAME); - h5tools_setstatus(EXIT_SUCCESS); - - /* Initialize h5tools lib */ - h5tools_init(); - - /* Disable error reporting */ - H5Eget_auto2(H5E_DEFAULT, &func, &edata); - H5Eset_auto2(H5E_DEFAULT, NULL, NULL); - - parse_command_line (argc, argv); - - if (argc <= (opt_ind)) - { - error_msg("missing file name\n"); - usage (h5tools_getprogname()); - return (EXIT_FAILURE); - } - - ifname = HDstrdup (argv[opt_ind]); - - testval = H5Fis_hdf5 (ifname); - - if (testval <= 0) - { - error_msg("Input HDF5 file is not HDF \"%s\"\n", ifname); - return (EXIT_FAILURE); - } - - ifile = H5Fopen (ifname, H5F_ACC_RDONLY, H5P_DEFAULT); - - if (ifile < 0) - { - error_msg("Can't open input HDF5 file \"%s\"\n", ifname); - return (EXIT_FAILURE); - } - - plist = H5Fget_create_plist (ifile); - if (plist < 0) - { - error_msg("Can't get file creation plist for file \"%s\"\n", - ifname); - return (EXIT_FAILURE); - } - - status = H5Pget_userblock (plist, &usize); - if (status < 0) - { - error_msg("Can't get user block for file \"%s\"\n", ifname); - return (EXIT_FAILURE); - } - - printf ("%ld\n", (long) usize); - - H5Pclose (plist); - H5Fclose (ifile); - - return (EXIT_SUCCESS); -} - diff --git a/tools/h5jam/testfiles/h5jam-help.txt b/tools/h5jam/testfiles/h5jam-help.txt deleted file mode 100644 index ce97c22..0000000 --- a/tools/h5jam/testfiles/h5jam-help.txt +++ /dev/null @@ -1,24 +0,0 @@ -usage: h5jam -i -u [-o ] [--clobber] - -Adds user block to front of an HDF5 file and creates a new concatenated file. - -OPTIONS - -i in_file.h5 Specifies the input HDF5 file. - -u in_user_file Specifies the file to be inserted into the user block. - Can be any file format except an HDF5 format. - -o out_file.h5 Specifies the output HDF5 file. - If not specified, the user block will be concatenated in - place to the input HDF5 file. - --clobber Wipes out any existing user block before concatenating - the given user block. - The size of the new user block will be the larger of; - - the size of existing user block in the input HDF5 file - - the size of user block required by new input user file - (size = 512 x 2N, N is positive integer.) - - -h Prints a usage message and exits. - -V Prints the HDF5 library version and exits. - -Exit Status: - 0 Succeeded. - >0 An error occurred. diff --git a/tools/h5jam/testfiles/h5jam-ub-nohdf5.txt b/tools/h5jam/testfiles/h5jam-ub-nohdf5.txt deleted file mode 100644 index 72c0b17..0000000 --- a/tools/h5jam/testfiles/h5jam-ub-nohdf5.txt +++ /dev/null @@ -1,2 +0,0 @@ -h5jam error: -u cannot be HDF5 file, but it appears to be an HDF5 file. -Try '-h' or '--help' for more information or see the entry in the 'HDF5 Reference Manual'. diff --git a/tools/h5jam/testfiles/h5unjam-help.txt b/tools/h5jam/testfiles/h5unjam-help.txt deleted file mode 100644 index f0d92e9..0000000 --- a/tools/h5jam/testfiles/h5unjam-help.txt +++ /dev/null @@ -1,27 +0,0 @@ -usage: h5unjam -i [-o ] [-u | --delete] - -Splits user file and HDF5 file into two files: user block data and HDF5 data. - -OPTIONS - -i in_file.h5 Specifies the HDF5 as input. If the input HDF5 file - contains no user block, exit with an error message. - -o out_file.h5 Specifies output HDF5 file without a user block. - If not specified, the user block will be removed from the - input HDF5 file. - -u out_user_file - Specifies the output file containing the data from the - user block. - Cannot be used with --delete option. - --delete Remove the user block from the input HDF5 file. The content - of the user block is discarded. - Cannot be used with the -u option. - - -h Prints a usage message and exits. - -V Prints the HDF5 library version and exits. - - If neither --delete nor -u is specified, the user block from the input file - will be displayed to stdout. - -Exit Status: - 0 Succeeded. - >0 An error occurred. diff --git a/tools/h5jam/testfiles/tall.h5 b/tools/h5jam/testfiles/tall.h5 deleted file mode 100644 index 918aeee..0000000 Binary files a/tools/h5jam/testfiles/tall.h5 and /dev/null differ diff --git a/tools/h5jam/testfiles/twithub.h5 b/tools/h5jam/testfiles/twithub.h5 deleted file mode 100644 index 4bc1833..0000000 Binary files a/tools/h5jam/testfiles/twithub.h5 and /dev/null differ diff --git a/tools/h5jam/testfiles/twithub513.h5 b/tools/h5jam/testfiles/twithub513.h5 deleted file mode 100644 index 0eac208..0000000 Binary files a/tools/h5jam/testfiles/twithub513.h5 and /dev/null differ diff --git a/tools/h5jam/testfiles/u10.txt b/tools/h5jam/testfiles/u10.txt deleted file mode 100644 index c76a964..0000000 --- a/tools/h5jam/testfiles/u10.txt +++ /dev/null @@ -1 +0,0 @@ -abcdefghij \ No newline at end of file diff --git a/tools/h5jam/testfiles/u511.txt b/tools/h5jam/testfiles/u511.txt deleted file mode 100644 index bff1736..0000000 --- a/tools/h5jam/testfiles/u511.txt +++ /dev/null @@ -1 +0,0 @@ -abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghija \ No newline at end of file diff --git a/tools/h5jam/testfiles/u512.txt b/tools/h5jam/testfiles/u512.txt deleted file mode 100644 index 33a36c9..0000000 --- a/tools/h5jam/testfiles/u512.txt +++ /dev/null @@ -1 +0,0 @@ -abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijab \ No newline at end of file diff --git a/tools/h5jam/testfiles/u513.txt b/tools/h5jam/testfiles/u513.txt deleted file mode 100644 index 6b46ebf..0000000 --- a/tools/h5jam/testfiles/u513.txt +++ /dev/null @@ -1 +0,0 @@ -abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabc \ No newline at end of file diff --git a/tools/h5jam/testh5jam.sh.in b/tools/h5jam/testh5jam.sh.in deleted file mode 100644 index d8c9274..0000000 --- a/tools/h5jam/testh5jam.sh.in +++ /dev/null @@ -1,699 +0,0 @@ -#! /bin/sh -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -# -# Tests for the h5jam/h5unjam tools - -srcdir=@srcdir@ - -# Determine which filters are available -USE_FILTER_SZIP="@USE_FILTER_SZIP@" -USE_FILTER_DEFLATE="@USE_FILTER_DEFLATE@" - -TESTNAME=h5jam/h5unjam -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -DUMPER=h5dump # The dumper to use -DUMPER_BIN=`pwd`/../$DUMPER # The path of the dumper binary -JAM=h5jam # Tool to test -UNJAM=h5unjam # Tool to test -JAM_BIN="$RUNSERIAL "`pwd` # The path of the jam binary -UNJAM_BIN=`pwd` # The path of the jam binary - -RM='rm -rf' -CMP='cmp -s' -DIFF='diff -c' -AWK='awk' -CP='cp' -DIRNAME='dirname' -LS='ls' -AWK='awk' - -nerrors=0 -verbose=yes - -# source dirs -SRC_TOOLS="$srcdir/.." -SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles" - -# testfiles source dirs for tools -SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles" -SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles" -SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles" -SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles" -SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles" -SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles" - -TESTDIR=./testfiles -test -d $TESTDIR || mkdir $TESTDIR - -###################################################################### -# test files -# -------------------------------------------------------------------- -# All the test files copy from source directory to test directory -# NOTE: Keep this framework to add/remove test files. -# Any test files from other tools can be used in this framework. -# This list are also used for checking exist. -# Comment '#' without space can be used. -# -------------------------------------------------------------------- -LIST_HDF5_TEST_FILES=" -$SRC_H5JAM_TESTFILES/tall.h5 -$SRC_H5JAM_TESTFILES/twithub.h5 -$SRC_H5JAM_TESTFILES/twithub513.h5 -" -LIST_OTHER_TEST_FILES=" -$SRC_H5JAM_TESTFILES/u10.txt -$SRC_H5JAM_TESTFILES/u511.txt -$SRC_H5JAM_TESTFILES/u512.txt -$SRC_H5JAM_TESTFILES/u513.txt -$SRC_H5JAM_TESTFILES/h5jam-help.txt -$SRC_H5JAM_TESTFILES/h5unjam-help.txt -$SRC_H5JAM_TESTFILES/h5jam-ub-nohdf5.txt -" - -# Source in the output filter function definitions. -. $srcdir/../../bin/output_filter.sh - -# -# copy test files and expected output files from source dirs to test dir -# -COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES" - -COPY_TESTFILES_TO_TESTDIR() -{ - # copy test files. Used -f to make sure get a new copy - for tstfile in $COPY_TESTFILES - do - # ignore '#' comment - echo $tstfile | tr -d ' ' | grep '^#' > /dev/null - RET=$? - if [ $RET -eq 1 ]; then - # skip cp if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=`$DIRNAME $tstfile` - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $CP -f $tstfile $TESTDIR - if [ $? -ne 0 ]; then - echo "Error: FAILED to copy $tstfile ." - - # Comment out this to CREATE expected file - exit $EXIT_FAILURE - fi - fi - fi - done -} - -CLEAN_TESTFILES_AND_TESTDIR() -{ - # skip rm if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=$SRC_H5JAM_TESTFILES - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $RM $TESTDIR - fi -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Testing". -# -TESTING() { - SPACES=" " - echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Compare". -# -COMPARE() { - SPACES=" " - echo "Compare $* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Print a "SKIP" message -SKIP() { - TESTING $JAM $@ - echo " -SKIP-" -} - -# -# COMPARE_FILES a.h5 b.h5 -# Compare two files, skipping the first line. This is used to -# compare the output of the dumper, skipping the file name which -# is different. -# The result is stored in 'compval'. -# -cmpval=0; -COMPARE_FILES() { - $AWK 'NR > 1' $1 > $1.cmp - $AWK 'NR > 1' $2 > $2.cmp - $CMP $1.cmp $2.cmp - cmpval=$? - rm -f $1.cmp $2.cmp -} - -# CLEANUP files -# Clean up named files. -CLEANUP() { - if test -z "$HDF5_NOCLEANUP"; then - for i in $* - do - rm -f $i - done - fi -} - -# SETUP file tocopy -# Clone a standard input file in the test directory -# Modification: -# Was using "cp" command which means file $2 will inherit the permission -# setting of file $1. If $1 is read-only, so will $2. That will cause -# failure when the test attempts to write it later on. Changed to use -# the "cat" command. -# -SETUP() { - cat < $1 > $2 -} - -# -# CHECKFILE orig.h5 compar.h5 -# Check that the test file is the same as an original. -# The two files are dumped with the dumper, and the output -# compared with COMPARE_FILES. -# If the files are the same, the test reports " PASSED", -# otherwise, it reports "*FAILED*" -CHECKFILE() { - expected="`dirname $2`/`basename $2 .h5`.out" - expected_err="`dirname $2`/`basename $2 .h5`.err" - actual="`basename $1 .h5`.out" - actual_err="`basename $1 .h5`.err" - - $RUNSERIAL $DUMPER_BIN/$DUMPER $1 >$expected 2>$expected_err - cat $expected_err >> $expected - - # dump the test file - COMPARE $2 to $1 - $RUNSERIAL $DUMPER_BIN/$DUMPER $2 >$actual 2>$actual_err - cat $actual_err >> $actual - - # compare the two files (ignore line 1) - COMPARE_FILES $actual $expected - if [ "$cmpval" = 0 ] ; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.ddl) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expected $actual |sed 's/^/ /' - fi - - # Clean up output files - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err - rm -f $expected $expected_err - fi -} - -# -# CHECK_UB file.h5 user_block_file origfile.h5 -# -# Check the user block in 'file.h5' is the same as -# 'user_block' (allowing for padding). -# -# If the original file had a user block before the test -# then 'compare.h5' is passed. The user block must be extracted -# and the test file compared to: -# cat compare_ub user_block_file. -# -# This test uses './getub' to extract the user block from -# 'file.h5', which is compared to the file described above. -# -# The result is set in variable 'result1'. -# -result1=0; -CHECK_UB_1() { - hfile="$1" - ufile="$2" - - # check for third argument (the original file) - origfile=""; - if [ -n "$3" ]; - then - origfile="$3" - fi - - # find the length of the user block to check - s1=`cat $ufile | wc -c | sed -e 's/ //g'` - if [ "$s1" = "0" ]; - then - echo "File "$ufile" is empty" - result1=1; - fi - - # Get the size of the original user block, if any. - if [ -n "$origfile" ]; - then - # 'tellub' calls H5Fget_user_block to get the size - # of the user block - s2=`$JAM_BIN/tellub $origfile` - if [ "$s2" = "0" ]; - then - size=$s1; - cmpfile=$ufile - else - cmpfile="tt2" - size=`expr $s2 + $s1` - $JAM_BIN/getub -c $s2 $origfile > $cmpfile - cat $ufile >> $cmpfile - fi - else - # assume no user block - s2="0" - size=$s1; - cmpfile=$ufile - fi - - # Extract 'size' bytes from the front of 'hfile' - # Compare to 'cmpfile', result is set in result1 - tfile="tt1" - $JAM_BIN/getub -c $size $hfile > $tfile - res=`cmp $cmpfile $tfile` - if [ "$?" != "0" ]; - then - echo $res - result1=1; - else - result1=0; - fi - - # clean up - rm -f $tfile - if [ "$s2" != "0" ] ; - then - rm -f $cmpfile - fi -} - - -# CHECK_NOUB file.h5 -# -# Check that 'file.h5' has no user block. -# Setst result2 to 1 if there is a user block (fail), 0 if none (pass) - -result2=0; - -CHECK_NOUB() { - hfile="$1" - - # call 'ubsize' to get the size of the user block - ubsize=`$JAM_BIN/tellub $hfile` - - if [ "$?" != "0" ]; - then - # error - result2=1; - else - if [ "$ubsize" = "0" ]; - then - # pass - result2=0; - else - # fail - result2=1; - fi - fi -} - -# JAMTEST user_block file.h5 [--clobber] [ofile.h5] -# -# Test the 'jam' tool: -# 1. figure out the input and output, and the comparision -# that will be done. -# 2. call 'jam' with the appropriate arguments -# 3. check the user block is correct in the output (Check_UB) -# If the user block is correct, print "PASSED", else "*FAILED*" -JAMTEST() { - ufile="$1" - ifile="$2" - compare_test="" # the file to test - compare_orig="" # the comparison to test against - cleanup="" - - # sort out the arguments for the test and the check - do_clobber="no" - if [ "$3" = "--clobber" ]; - then - # clobber overwrites any existing user block - do_clobber="yes" - clobber="--clobber" - compare_orig="" - if [ -z "$4" ]; - then - # output goes to infile, compare ubfile to infile - ofile="" - compare_test="$ifile" - else - # output goes to $4, compare ofile to ubfile - ofile="$4" - compare_test="$ofile" - fi - else - clobber="" - # add user block to existing ub, if any - if [ -z "$3" ]; - then - # output goes to infile, compare ubfile to infile - ofile="" - compare_test="$ifile" - cp $ifile xxofile.h5 - compare_orig="xxofile.h5" - cleanup="$cleanup $compare_orig" - else - # output goes to $3, compare ofile to ubfile - ofile="$3" - compare_test="$ofile" - compare_orig="$ifile" - fi - fi - - # call 'jam' with the appropriate arguments - if [ -n "$ofile" ]; - then - TESTING h5jam -u `basename $ufile` -i `basename $ifile` -o `basename $ofile` $clobber - $JAM_BIN/$JAM -u $ufile -i $ifile -o $ofile $clobber - else - TESTING jam -u `basename $ufile` -i `basename $ifile` $clobber - $JAM_BIN/$JAM -u $ufile -i $ifile $clobber - fi - - #echo "CHECK_UB_1 $compare_test $ufile $compare_orig" - CHECK_UB_1 $compare_test $ufile $compare_orig - - if [ "$result1" = "0" ] ; - then - echo " PASSED" - else - echo " *FAILED*" - nerrors="`expr $nerrors + 1`" - fi - CLEANUP $cleanup -} - -# UNJAMTEST file.h5 [- | --delete] ofile -# -# Test the 'unjam' tool -# -###fix the working directory here and in jamtest -UNJAMTEST () { - infile="$1" - ofile="$3" - if [ "$2" = "-" ]; - then - uofile="uofile" - TESTING h5unjam -i `basename $infile` -o `basename $ofile` "> "`basename $uofile` - $JAM_BIN/$UNJAM -i $infile -o $ofile > $uofile - else - if [ "$2" = "--delete" ]; - then - uofile="none" - TESTING h5unjam -i `basename $infile` -o `basename $ofile` --delete - $JAM_BIN/$UNJAM -i $infile -o $ofile --delete - - else - uofile="$2" - TESTING h5unjam -i `basename $infile` -u `basename $uofile` -o `basename $ofile` - $JAM_BIN/$UNJAM -i $infile -u $uofile -o $ofile - fi - fi - - result1=0 - result2=0 - cleanup="" - if [ "$uofile" != "none" ]; - then - # sets result1 - CHECK_UB_1 $infile $uofile - CLEANUP $uofile - fi - - # sets result2 - CHECK_NOUB $ofile - - if [ "$result1" = "0" -a "$result2" = "0" ]; - then - echo " PASSED" - else - echo " *FAILED*" - nerrors="`expr $nerrors + 1`" - fi -} - - -# -# TOOLTEST_OUTPUT < JAM | UNJAM > expect-output.txt exit-code options -# -# Only verify stdout/stderr output from h5jam and j5unjam -# - -TOOLTEST_OUTPUT() { - if [ "$1" == "JAM" ]; then - TOOLCMD=$JAM_BIN/$JAM - elif [ "$1" == "UNJAM" ]; then - TOOLCMD=$JAM_BIN/$UNJAM - fi - shift - expect="$TESTDIR/$1" - actual="$TESTDIR/`basename $1 .ls`.out" - actual_err="$TESTDIR/`basename $1 .ls`.err" - actual_sav=${actual}-sav - actual_err_sav=${actual_err}-sav - shift - retvalexpect=$1 - shift - - TESTING h5jam $@ - ( - cd $TESTDIR - $TOOLCMD "$@" - ) >$actual 2>$actual_err - - # save actual and actual_err in case they are needed later. - cp $actual $actual_sav - STDOUT_FILTER $actual - cp $actual_err $actual_err_sav - STDERR_FILTER $actual_err - # combine stderr to stdout for output compare - cat $actual_err >> $actual - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - rm -f $actual $actual_sav $actual_err $actual_err_sav - elif $CMP $expect $actual; then - echo " PASSED" - rm -f $actual $actual_sav $actual_err $actual_err_sav - else - echo "*FAILED*" - echo " Expected result differs from actual result" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi -} - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## -# prepare for test -COPY_TESTFILES_TO_TESTDIR - -#------------------------------- -# Testing h5jam -#------------------------------- -# help page -TOOLTEST_OUTPUT JAM h5jam-help.txt 0 -h - -# don't allow HDF5 format file as an user block file -TOOLTEST_OUTPUT JAM h5jam-ub-nohdf5.txt 1 -i tall.h5 -u tall.h5 -o tall-tmp.h5 - -JAMTEST $TESTDIR/u10.txt $TESTDIR/tall.h5 ta2.h5 -CHECKFILE $TESTDIR/tall.h5 ta2.h5 -CLEANUP ta2.h5 -JAMTEST $TESTDIR/u511.txt $TESTDIR/tall.h5 ta3.h5 -CHECKFILE $TESTDIR/tall.h5 ta3.h5 -CLEANUP ta3.h5 -JAMTEST $TESTDIR/u512.txt $TESTDIR/tall.h5 ta4.h5 -CHECKFILE $TESTDIR/tall.h5 ta4.h5 -CLEANUP ta4.h5 -JAMTEST $TESTDIR/u513.txt $TESTDIR/tall.h5 ta5.h5 -CHECKFILE $TESTDIR/tall.h5 ta5.h5 -CLEANUP ta5.h5 - -SETUP $TESTDIR/tall.h5 ta6.h5 -JAMTEST $TESTDIR/u10.txt ta6.h5 -CHECKFILE $TESTDIR/tall.h5 ta6.h5 -CLEANUP ta6.h5 -SETUP $TESTDIR/tall.h5 ta7.h5 -JAMTEST $TESTDIR/u511.txt ta7.h5 -CHECKFILE $TESTDIR/tall.h5 ta7.h5 -CLEANUP ta7.h5 -SETUP $TESTDIR/tall.h5 ta8.h5 -JAMTEST $TESTDIR/u512.txt ta8.h5 -CHECKFILE $TESTDIR/tall.h5 ta8.h5 -CLEANUP ta8.h5 -SETUP $TESTDIR/tall.h5 ta9.h5 -JAMTEST $TESTDIR/u513.txt ta9.h5 -CHECKFILE $TESTDIR/tall.h5 ta9.h5 -CLEANUP ta9.h5 - -JAMTEST $TESTDIR/u10.txt $TESTDIR/twithub.h5 tax2.h5 -CHECKFILE $TESTDIR/tall.h5 tax2.h5 -CLEANUP tax2.h5 -JAMTEST $TESTDIR/u511.txt $TESTDIR/twithub.h5 tax3.h5 -CHECKFILE $TESTDIR/tall.h5 tax3.h5 -CLEANUP tax3.h5 -JAMTEST $TESTDIR/u512.txt $TESTDIR/twithub.h5 tax4.h5 -CHECKFILE $TESTDIR/tall.h5 tax4.h5 -CLEANUP tax4.h5 -JAMTEST $TESTDIR/u513.txt $TESTDIR/twithub.h5 tax5.h5 -CHECKFILE $TESTDIR/tall.h5 tax5.h5 -CLEANUP tax5.h5 - -JAMTEST $TESTDIR/u10.txt $TESTDIR/twithub513.h5 tax6.h5 -CHECKFILE $TESTDIR/tall.h5 tax6.h5 -CLEANUP tax6.h5 -JAMTEST $TESTDIR/u511.txt $TESTDIR/twithub513.h5 tax7.h5 -CHECKFILE $TESTDIR/tall.h5 tax7.h5 -CLEANUP tax7.h5 -JAMTEST $TESTDIR/u512.txt $TESTDIR/twithub513.h5 tax8.h5 -CHECKFILE $TESTDIR/tall.h5 tax8.h5 -CLEANUP tax8.h5 -JAMTEST $TESTDIR/u513.txt $TESTDIR/twithub513.h5 tax9.h5 -CHECKFILE $TESTDIR/tall.h5 tax9.h5 -CLEANUP tax9.h5 - -JAMTEST $TESTDIR/u10.txt $TESTDIR/twithub.h5 --clobber taz2.h5 -CHECKFILE $TESTDIR/tall.h5 taz2.h5 -CLEANUP taz2.h5 -JAMTEST $TESTDIR/u511.txt $TESTDIR/twithub.h5 --clobber taz3.h5 -CHECKFILE $TESTDIR/tall.h5 taz3.h5 -CLEANUP taz3.h5 -JAMTEST $TESTDIR/u512.txt $TESTDIR/twithub.h5 --clobber taz4.h5 -CHECKFILE $TESTDIR/tall.h5 taz4.h5 -CLEANUP taz4.h5 -JAMTEST $TESTDIR/u513.txt $TESTDIR/twithub.h5 --clobber taz5.h5 -CHECKFILE $TESTDIR/tall.h5 taz5.h5 -CLEANUP taz5.h5 - -JAMTEST $TESTDIR/u10.txt $TESTDIR/twithub513.h5 --clobber taz6.h5 -CHECKFILE $TESTDIR/tall.h5 taz6.h5 -CLEANUP taz6.h5 -JAMTEST $TESTDIR/u511.txt $TESTDIR/twithub513.h5 --clobber taz7.h5 -CHECKFILE $TESTDIR/tall.h5 taz7.h5 -CLEANUP taz7.h5 -JAMTEST $TESTDIR/u512.txt $TESTDIR/twithub513.h5 --clobber taz8.h5 -CHECKFILE $TESTDIR/tall.h5 taz8.h5 -CLEANUP taz8.h5 -JAMTEST $TESTDIR/u513.txt $TESTDIR/twithub513.h5 --clobber taz9.h5 -CHECKFILE $TESTDIR/tall.h5 taz9.h5 -CLEANUP taz9.h5 - -SETUP $TESTDIR/twithub.h5 tay2.h5 -JAMTEST $TESTDIR/u10.txt tay2.h5 --clobber -CHECKFILE $TESTDIR/tall.h5 tay2.h5 -CLEANUP tay2.h5 -SETUP $TESTDIR/twithub.h5 tay3.h5 -JAMTEST $TESTDIR/u511.txt tay3.h5 --clobber -CHECKFILE $TESTDIR/tall.h5 tay3.h5 -CLEANUP tay3.h5 -SETUP $TESTDIR/twithub.h5 tay4.h5 -JAMTEST $TESTDIR/u512.txt tay4.h5 --clobber -CHECKFILE $TESTDIR/tall.h5 tay4.h5 -CLEANUP tay4.h5 -SETUP $TESTDIR/twithub.h5 tay5.h5 -JAMTEST $TESTDIR/u513.txt tay5.h5 --clobber -CHECKFILE $TESTDIR/tall.h5 tay5.h5 -CLEANUP tay5.h5 - -SETUP $TESTDIR/twithub513.h5 tay6.h5 -JAMTEST $TESTDIR/u10.txt tay6.h5 --clobber -CHECKFILE $TESTDIR/tall.h5 tay6.h5 -CLEANUP tay6.h5 -SETUP $TESTDIR/twithub513.h5 tay7.h5 -JAMTEST $TESTDIR/u511.txt tay7.h5 --clobber -CHECKFILE $TESTDIR/tall.h5 tay7.h5 -CLEANUP tay7.h5 -SETUP $TESTDIR/twithub513.h5 tay8.h5 -JAMTEST $TESTDIR/u512.txt tay8.h5 --clobber -CHECKFILE $TESTDIR/tall.h5 tay8.h5 -CLEANUP tay8.h5 -SETUP $TESTDIR/twithub513.h5 tay9.h5 -JAMTEST $TESTDIR/u513.txt tay9.h5 --clobber -CHECKFILE $TESTDIR/tall.h5 tay9.h5 -CLEANUP tay9.h5 - -#--------------------------------- -# Testing h5unjam -#--------------------------------- -# help page -TOOLTEST_OUTPUT UNJAM h5unjam-help.txt 0 -h - -SETUP $TESTDIR/twithub.h5 tai1.h5 -UNJAMTEST tai1.h5 o10.txt taa1.h5 -CHECKFILE $TESTDIR/tall.h5 taa1.h5 -CLEANUP taa1.h5 tai1.h5 o10.txt -SETUP $TESTDIR/twithub513.h5 tai2.h5 -UNJAMTEST tai2.h5 o512.txt taa2.h5 -CHECKFILE $TESTDIR/tall.h5 taa2.h5 -CLEANUP taa2.h5 tai2.h5 o512.txt - -SETUP $TESTDIR/twithub.h5 tai3.h5 -UNJAMTEST tai3.h5 - taa3.h5 -CHECKFILE $TESTDIR/tall.h5 taa3.h5 -CLEANUP taa3.h5 tai3.h5 -SETUP $TESTDIR/twithub513.h5 tai4.h5 -UNJAMTEST tai4.h5 - taa4.h5 -CHECKFILE $TESTDIR/tall.h5 taa4.h5 -CLEANUP taa4.h5 tai4.h5 - -SETUP $TESTDIR/twithub.h5 taj2.h5 -UNJAMTEST taj2.h5 --delete tac2.h5 -CHECKFILE $TESTDIR/tall.h5 tac2.h5 -CLEANUP tac2.h5 taj2.h5 -SETUP $TESTDIR/twithub513.h5 taj3.h5 -UNJAMTEST taj3.h5 --delete tac3.h5 -CHECKFILE $TESTDIR/tall.h5 tac3.h5 -CLEANUP tac3.h5 taj3.h5 - -# Clean up temporary files/directories -CLEAN_TESTFILES_AND_TESTDIR - -if test $nerrors -eq 0 ; then - echo "All $TESTNAME tests passed." - exit $EXIT_SUCCESS -else - echo "$TESTNAME tests failed with $nerrors errors." - exit $EXIT_FAILURE -fi diff --git a/tools/h5ls/CMakeLists.txt b/tools/h5ls/CMakeLists.txt deleted file mode 100644 index cb430ec..0000000 --- a/tools/h5ls/CMakeLists.txt +++ /dev/null @@ -1,49 +0,0 @@ -cmake_minimum_required (VERSION 3.1.0) -PROJECT (HDF5_TOOLS_H5LS) - -#----------------------------------------------------------------------------- -# Setup include Directories -#----------------------------------------------------------------------------- -INCLUDE_DIRECTORIES (${HDF5_TOOLS_DIR}/lib) - -#----------------------------------------------------------------------------- -# Add the h5ls executable -#----------------------------------------------------------------------------- -add_executable (h5ls ${HDF5_TOOLS_H5LS_SOURCE_DIR}/h5ls.c) -TARGET_NAMING (h5ls STATIC) -TARGET_C_PROPERTIES (h5ls STATIC " " " ") -target_link_libraries (h5ls ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) -set_target_properties (h5ls PROPERTIES FOLDER tools) -set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5ls") - -set (H5_DEP_EXECUTABLES - h5ls -) - -if (BUILD_TESTING) - - include (CMakeTests.cmake) - - include (CMakeTestsVDS.cmake) - -endif (BUILD_TESTING) - -############################################################################## -############################################################################## -### I N S T A L L A T I O N ### -############################################################################## -############################################################################## - -#----------------------------------------------------------------------------- -# Rules for Installation of tools using make Install target -#----------------------------------------------------------------------------- - -#INSTALL_PROGRAM_PDB (h5ls ${HDF5_INSTALL_BIN_DIR} toolsapplications) - -install ( - TARGETS - h5ls - EXPORT - ${HDF5_EXPORTED_TARGETS} - RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications -) diff --git a/tools/h5ls/CMakeTests.cmake b/tools/h5ls/CMakeTests.cmake deleted file mode 100644 index 816907c..0000000 --- a/tools/h5ls/CMakeTests.cmake +++ /dev/null @@ -1,390 +0,0 @@ - -############################################################################## -############################################################################## -### T E S T I N G ### -############################################################################## -############################################################################## - - # -------------------------------------------------------------------- - # Copy all the test files from source directory to test directory - # -------------------------------------------------------------------- - set (LIST_HDF5_TEST_FILES - ${HDF5_TOOLS_DIR}/testfiles/tall.h5 - ${HDF5_TOOLS_DIR}/testfiles/tarray1.h5 - ${HDF5_TOOLS_DIR}/testfiles/tattr2.h5 - ${HDF5_TOOLS_DIR}/testfiles/tattrreg.h5 - ${HDF5_TOOLS_DIR}/testfiles/tcompound.h5 - ${HDF5_TOOLS_DIR}/testfiles/tdatareg.h5 - ${HDF5_TOOLS_DIR}/testfiles/tdset.h5 - ${HDF5_TOOLS_DIR}/testfiles/tempty.h5 - ${HDF5_TOOLS_DIR}/testfiles/textlink.h5 - ${HDF5_TOOLS_DIR}/testfiles/textlinksrc.h5 - ${HDF5_TOOLS_DIR}/testfiles/textlinktar.h5 - ${HDF5_TOOLS_DIR}/testfiles/tgroup.h5 - ${HDF5_TOOLS_DIR}/testfiles/tgrp_comments.h5 - ${HDF5_TOOLS_DIR}/testfiles/thlink.h5 - ${HDF5_TOOLS_DIR}/testfiles/tloop.h5 - ${HDF5_TOOLS_DIR}/testfiles/tnestedcomp.h5 - ${HDF5_TOOLS_DIR}/testfiles/tsaf.h5 - ${HDF5_TOOLS_DIR}/testfiles/tslink.h5 - ${HDF5_TOOLS_DIR}/testfiles/tsoftlinks.h5 - ${HDF5_TOOLS_DIR}/testfiles/tstr.h5 - ${HDF5_TOOLS_DIR}/testfiles/tudlink.h5 - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes1.h5 - ) - - set (LIST_OTHER_TEST_FILES - ${HDF5_TOOLS_DIR}/testfiles/help-1.ls - ${HDF5_TOOLS_DIR}/testfiles/help-2.ls - ${HDF5_TOOLS_DIR}/testfiles/help-3.ls - ${HDF5_TOOLS_DIR}/testfiles/nosuchfile.ls - ${HDF5_TOOLS_DIR}/testfiles/tall-1.ls - ${HDF5_TOOLS_DIR}/testfiles/tall-2.ls - ${HDF5_TOOLS_DIR}/testfiles/tarray1.ls - ${HDF5_TOOLS_DIR}/testfiles/tattr2.ls - ${HDF5_TOOLS_DIR}/testfiles/tattrreg_le.ls - ${HDF5_TOOLS_DIR}/testfiles/tattrreg_be.ls - ${HDF5_TOOLS_DIR}/testfiles/tcomp-1.ls - ${HDF5_TOOLS_DIR}/testfiles/tdataregbe.ls - ${HDF5_TOOLS_DIR}/testfiles/tdataregle.ls - ${HDF5_TOOLS_DIR}/testfiles/tdset-1.ls - ${HDF5_TOOLS_DIR}/testfiles/tempty.ls - ${HDF5_TOOLS_DIR}/testfiles/textlink-1.ls - ${HDF5_TOOLS_DIR}/testfiles/textlinksrc-1.ls - ${HDF5_TOOLS_DIR}/testfiles/textlinksrc-2.ls - ${HDF5_TOOLS_DIR}/testfiles/textlinksrc-3.ls - ${HDF5_TOOLS_DIR}/testfiles/textlinksrc-4.ls - ${HDF5_TOOLS_DIR}/testfiles/textlinksrc-5.ls - ${HDF5_TOOLS_DIR}/testfiles/textlinksrc-6.ls - ${HDF5_TOOLS_DIR}/testfiles/textlinksrc-7.ls - ${HDF5_TOOLS_DIR}/testfiles/textlinksrc-1-old.ls - ${HDF5_TOOLS_DIR}/testfiles/textlinksrc-2-old.ls - ${HDF5_TOOLS_DIR}/testfiles/textlinksrc-3-old.ls - ${HDF5_TOOLS_DIR}/testfiles/textlinksrc-6-old.ls - ${HDF5_TOOLS_DIR}/testfiles/textlinksrc-7-old.ls - ${HDF5_TOOLS_DIR}/testfiles/tsoftlinks-1.ls - ${HDF5_TOOLS_DIR}/testfiles/tsoftlinks-2.ls - ${HDF5_TOOLS_DIR}/testfiles/tsoftlinks-3.ls - ${HDF5_TOOLS_DIR}/testfiles/tsoftlinks-4.ls - ${HDF5_TOOLS_DIR}/testfiles/tsoftlinks-5.ls - ${HDF5_TOOLS_DIR}/testfiles/textlinksrc-nodangle-1.ls - ${HDF5_TOOLS_DIR}/testfiles/textlinksrc-nodangle-2.ls - ${HDF5_TOOLS_DIR}/testfiles/tgrp_comments.ls - ${HDF5_TOOLS_DIR}/testfiles/tsoftlinks-nodangle-1.ls - ${HDF5_TOOLS_DIR}/testfiles/thlinks-nodangle-1.ls - ${HDF5_TOOLS_DIR}/testfiles/tgroup.ls - ${HDF5_TOOLS_DIR}/testfiles/tgroup-1.ls - ${HDF5_TOOLS_DIR}/testfiles/tgroup-2.ls - ${HDF5_TOOLS_DIR}/testfiles/tgroup-3.ls - ${HDF5_TOOLS_DIR}/testfiles/thlink-1.ls - ${HDF5_TOOLS_DIR}/testfiles/tloop-1.ls - ${HDF5_TOOLS_DIR}/testfiles/tmultifile.ls - ${HDF5_TOOLS_DIR}/testfiles/tnestcomp-1.ls - ${HDF5_TOOLS_DIR}/testfiles/tnestcomp-2.ls - ${HDF5_TOOLS_DIR}/testfiles/tnestcomp-3.ls - ${HDF5_TOOLS_DIR}/testfiles/tnestcomp-4.ls - ${HDF5_TOOLS_DIR}/testfiles/tsaf.ls - ${HDF5_TOOLS_DIR}/testfiles/tslink-1.ls - ${HDF5_TOOLS_DIR}/testfiles/tstr-1.ls - ${HDF5_TOOLS_DIR}/testfiles/tudlink-1.ls - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes1.ls - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes2le.ls - ${HDF5_TOOLS_DIR}/testfiles/tvldtypes2be.ls - ) - - file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - - # copy the list of test files - foreach (listfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES}) - get_filename_component(fname "${listfiles}" NAME) - HDFTEST_COPY_FILE("${listfiles}" "${PROJECT_BINARY_DIR}/testfiles/${fname}" "h5ls_files") - endforeach (listfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES}) - add_custom_target(h5ls_files ALL COMMENT "Copying files needed by h5ls tests" DEPENDS ${h5ls_files_list}) - -############################################################################## -############################################################################## -### T H E T E S T S M A C R O S ### -############################################################################## -############################################################################## - - MACRO (ADD_H5_TEST resultfile resultcode) - # If using memchecker add tests without using scripts - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME H5LS-${resultfile} COMMAND $ ${ARGN}) - set_tests_properties (H5LS-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - if (${resultcode} STREQUAL "1") - set_tests_properties (H5LS-${resultfile} PROPERTIES WILL_FAIL "true") - endif () - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5LS-${resultfile} PROPERTIES DEPENDS ${last_test}) - endif () - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5LS-${resultfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS=${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" - -D "TEST_OUTPUT=${resultfile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}.ls" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_TEST file) - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## - - if (HDF5_ENABLE_USING_MEMCHECKER) - # Remove any output file left over from previous test run - add_test ( - NAME H5LS-clearall-objects - COMMAND ${CMAKE_COMMAND} - -E remove - help-1.out - help-1.out.err - help-2.out - help-2.out.err - help-3.out - help-3.out.err - nosuchfile.out - nosuchfile.out.err - tall-1.out - tall-1.out.err - tall-2.out - tall-2.out.err - tarray1.out - tarray1.out.err - tattr2.out - tattr2.out.err - tcomp-1.out - tcomp-1.out.err - tdataregbe.out - tdataregbe.out.err - tdataregle.out - tdataregle.out.err - tdset-1.out - tdset-1.out.err - tempty.out - tempty.out.err - textlink-1.out - textlink-1.out.err - textlinksrc-1.out - textlinksrc-1.out.err - textlinksrc-2.out - textlinksrc-2.out.err - textlinksrc-3.out - textlinksrc-3.out.err - textlinksrc-4.out - textlinksrc-4.out.err - textlinksrc-5.out - textlinksrc-5.out.err - textlinksrc-6.out - textlinksrc-6.out.err - textlinksrc-7.out - textlinksrc-7.out.err - textlinksrc-1-old.out - textlinksrc-1-old.out.err - textlinksrc-2-old.out - textlinksrc-2-old.out.err - textlinksrc-3-old.out - textlinksrc-3-old.out.err - textlinksrc-6-old.out - textlinksrc-6-old.out.err - textlinksrc-7-old.out - textlinksrc-7-old.out.err - tgrp_comments.out - tgrp_comments.out.err - tsoftlinks-1.out - tsoftlinks-1.out.err - tsoftlinks-2.out - tsoftlinks-2.out.err - tsoftlinks-3.out - tsoftlinks-3.out.err - tsoftlinks-4.out - tsoftlinks-4.out.err - tsoftlinks-5.out - tsoftlinks-5.out.err - textlinksrc-nodangle-1.out - textlinksrc-nodangle-1.out.err - textlinksrc-nodangle-2.out - textlinksrc-nodangle-2.out.err - tsoftlinks-nodangle-1.out - tsoftlinks-nodangle-1.out.err - thlinks-nodangle-1.out - thlinks-nodangle-1.out.err - tgroup.out - tgroup.out.err - tgroup-1.out - tgroup-1.out.err - tgroup-2.out - tgroup-2.out.err - tgroup-3.out - tgroup-3.out.err - thlink-1.out - thlink-1.out.err - tloop-1.out - tloop-1.out.err - tnestcomp-1.out - tnestcomp-1.out.err - tnestcomp-2.out - tnestcomp-2.out.err - tnestcomp-3.out - tnestcomp-3.out.err - tnestcomp-4.out - tnestcomp-4.out.err - tsaf.out - tsaf.out.err - tslink-1.out - tslink-1.out.err - tstr-1.out - tstr-1.out.err - tudlink-1.out - tudlink-1.out.err - tvldtypes1.out - tvldtypes1.out.err - tvldtypes2le.out - tvldtypes2le.out.err - tvldtypes2be.out - tvldtypes2be.out.err - ) - set_tests_properties (H5LS-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5LS-clearall-objects PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - set (last_test "H5LS-clearall-objects") - endif (HDF5_ENABLE_USING_MEMCHECKER) - - # test the help syntax - ADD_H5_TEST (help-1 0 -w80 -h) - ADD_H5_TEST (help-2 0 -w80 --help) - ADD_H5_TEST (help-3 0 -w80 -?) - - # test simple command - ADD_H5_TEST (tall-1 0 -w80 tall.h5) - ADD_H5_TEST (tall-2 0 -w80 -r -d tall.h5) - ADD_H5_TEST (tgroup 0 -w80 tgroup.h5) - ADD_H5_TEST (tgroup-3 0 -w80 tgroup.h5/g1) - - # test for displaying groups - # The following combination of arguments is expected to return an error message - # and return value 1 - ADD_H5_TEST (tgroup-1 1 -w80 -r -g tgroup.h5) - ADD_H5_TEST (tgroup-2 0 -w80 -g tgroup.h5/g1) - - # test for files with groups that have long comments - ADD_H5_TEST (tgrp_comments 0 -w80 -v -g tgrp_comments.h5/glongcomment) - - # test for displaying simple space datasets - ADD_H5_TEST (tdset-1 0 -w80 -r -d tdset.h5) - - # test for displaying soft links (dangle) - ADD_H5_TEST (tslink-1 0 -w80 -r tslink.h5) - - # test for displaying more soft links with --follow-symlinks - ADD_H5_TEST (tsoftlinks-1 0 --follow-symlinks tsoftlinks.h5) - ADD_H5_TEST (tsoftlinks-2 0 --follow-symlinks -r tsoftlinks.h5) - ADD_H5_TEST (tsoftlinks-3 0 --follow-symlinks tsoftlinks.h5/group1) - ADD_H5_TEST (tsoftlinks-4 0 --follow-symlinks -r tsoftlinks.h5/group1) - ADD_H5_TEST (tsoftlinks-5 0 --follow-symlinks tsoftlinks.h5/soft_dset1) - - # test for displaying external and user-defined links with --follow-symlinks - ADD_H5_TEST (textlink-1 0 -w80 -r textlink.h5) - ADD_H5_TEST (textlinksrc-1 0 -w80 --follow-symlinks -r textlinksrc.h5) - ADD_H5_TEST (textlinksrc-2 0 -w80 --follow-symlinks -rv textlinksrc.h5/ext_link5) - ADD_H5_TEST (textlinksrc-3 0 -w80 --follow-symlinks -r textlinksrc.h5/ext_link1) - ADD_H5_TEST (textlinksrc-4 0 -w80 -r textlinksrc.h5) - ADD_H5_TEST (textlinksrc-5 0 -w80 -r textlinksrc.h5/ext_link1) - ADD_H5_TEST (textlinksrc-6 0 -w80 --follow-symlinks textlinksrc.h5) - ADD_H5_TEST (textlinksrc-7 0 -w80 --follow-symlinks textlinksrc.h5/ext_link1) - ADD_H5_TEST (tudlink-1 0 -w80 -r tudlink.h5) - - # test for displaying external links with -E - # the option -E will be depriciated but keep it for backward compatibility - ADD_H5_TEST (textlinksrc-1-old 0 -w80 -Er textlinksrc.h5) - ADD_H5_TEST (textlinksrc-2-old 0 -w80 -Erv textlinksrc.h5/ext_link5) - ADD_H5_TEST (textlinksrc-3-old 0 -w80 -Er textlinksrc.h5/ext_link1) - ADD_H5_TEST (textlinksrc-6-old 0 -w80 -E textlinksrc.h5) - ADD_H5_TEST (textlinksrc-7-old 0 -w80 -E textlinksrc.h5/ext_link1) - - # tests for no-dangling-links - # if this option is given on dangling link, h5ls should return exit code 1 - # when used alone , expect to print out help and return exit code 1 - ADD_H5_TEST (textlinksrc-nodangle-1 1 -w80 --no-dangling-links textlinksrc.h5) - # external dangling link - expected exit code 1 - ADD_H5_TEST (textlinksrc-nodangle-2 1 -w80 --follow-symlinks --no-dangling-links textlinksrc.h5) - # soft dangling link - expected exit code 1 - ADD_H5_TEST (tsoftlinks-nodangle-1 1 -w80 --follow-symlinks --no-dangling-links tsoftlinks.h5) - # when used file with no dangling links - expected exit code 0 - ADD_H5_TEST (thlinks-nodangle-1 0 -w80 --follow-symlinks --no-dangling-links thlink.h5) - -# test for wildcards in filename (does not work with cmake) -# ADD_H5_TEST (tstarfile 0 -w80 t*link.h5) -# ADD_H5_TEST (tqmarkfile 0 -w80 t?link.h5) - ADD_H5_TEST (tmultifile 0 -w80 thlink.h5 tslink.h5) - - # tests for hard links - ADD_H5_TEST (thlink-1 0 -w80 thlink.h5) - - # tests for compound data types - ADD_H5_TEST (tcomp-1 0 -w80 -r -d tcompound.h5) - - #test for the nested compound type - ADD_H5_TEST (tnestcomp-1 0 -w80 -r -d tnestedcomp.h5) - - ADD_H5_TEST (tnestcomp-2 0 -w80 -r -d -S tnestedcomp.h5) - - ADD_H5_TEST (tnestcomp-3 0 -w80 -r -d -l tnestedcomp.h5) - - ADD_H5_TEST (tnestcomp-4 0 -w80 -r -d -l -S tnestedcomp.h5) - - # test for loop detection - ADD_H5_TEST (tloop-1 0 -w80 -r -d tloop.h5) - - # test for string - ADD_H5_TEST (tstr-1 0 -w80 -r -d tstr.h5) - - # test test file created from lib SAF team - ADD_H5_TEST (tsaf 0 -w80 -r -d tsaf.h5) - - # test for variable length data types - ADD_H5_TEST (tvldtypes1 0 -w80 -r -d tvldtypes1.h5) - - # test for array data types - ADD_H5_TEST (tarray1 0 -w80 -r -d tarray1.h5) - - # test for empty data - ADD_H5_TEST (tempty 0 -w80 -d tempty.h5) - - # test for all dataset types written to attributes - # enable -S for avoiding printing NATIVE types - ADD_H5_TEST (tattr2 0 -w80 -v -S tattr2.h5) - - # test for attribute with region references wo verbose mode - # ( HDFFV-7838, ) - if (H5_WORDS_BIGENDIAN) - ADD_H5_TEST (tattrreg_be 0 -w80 -v -d tattrreg.h5) - else (H5_WORDS_BIGENDIAN) - ADD_H5_TEST (tattrreg_le 0 -w80 -v -d tattrreg.h5) - endif (H5_WORDS_BIGENDIAN) - - # test for non-existing file - ADD_H5_TEST (nosuchfile 1 nosuchfile.h5) - - # test for variable length data types in verbose mode - if (H5_WORDS_BIGENDIAN) - ADD_H5_TEST (tvldtypes2be 0 -v tvldtypes1.h5) - else (H5_WORDS_BIGENDIAN) - ADD_H5_TEST (tvldtypes2le 0 -v tvldtypes1.h5) - endif (H5_WORDS_BIGENDIAN) - - # test for dataset region references data types in verbose mode - if (H5_WORDS_BIGENDIAN) - ADD_H5_TEST (tdataregbe 0 -v tdatareg.h5) - else (H5_WORDS_BIGENDIAN) - ADD_H5_TEST (tdataregle 0 -v tdatareg.h5) - endif (H5_WORDS_BIGENDIAN) diff --git a/tools/h5ls/CMakeTestsVDS.cmake b/tools/h5ls/CMakeTestsVDS.cmake deleted file mode 100644 index 0c825cb..0000000 --- a/tools/h5ls/CMakeTestsVDS.cmake +++ /dev/null @@ -1,137 +0,0 @@ - -############################################################################## -############################################################################## -### T E S T I N G ### -############################################################################## -############################################################################## - - # -------------------------------------------------------------------- - # Copy all the test files from source directory to test directory - # -------------------------------------------------------------------- - set (LIST_HDF5_TEST_FILES - 1_a.h5 - 1_b.h5 - 1_c.h5 - 1_d.h5 - 1_e.h5 - 1_f.h5 - 1_vds.h5 - 2_a.h5 - 2_b.h5 - 2_c.h5 - 2_d.h5 - 2_e.h5 - 2_vds.h5 - 3_1_vds.h5 - 3_2_vds.h5 - 4_0.h5 - 4_1.h5 - 4_2.h5 - 4_vds.h5 - 5_a.h5 - 5_b.h5 - 5_c.h5 - 5_vds.h5 - ) - - set (LIST_OTHER_TEST_FILES - tvds-1.ls - tvds-2.ls - tvds-3_1.ls - tvds-3_2.ls - tvds-4.ls - tvds-5.ls - ) - - file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - - # copy the list of test files - foreach (listfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES}) - get_filename_component(fname "${listfiles}" NAME) - HDFTEST_COPY_FILE("${HDF5_TOOLS_SRC_DIR}/testfiles/vds/${listfiles}" "${PROJECT_BINARY_DIR}/testfiles/vds/${fname}" "h5ls_vds_files") - endforeach (listfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES}) - add_custom_target(h5ls_vds_files ALL COMMENT "Copying files needed by h5ls_vds tests" DEPENDS ${h5ls_vds_files_list}) - -############################################################################## -############################################################################## -### T H E T E S T S M A C R O S ### -############################################################################## -############################################################################## - - MACRO (ADD_H5_VDS_TEST resultfile resultcode) - # If using memchecker add tests without using scripts - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME H5LS-${resultfile} COMMAND $ ${ARGN}) - set_tests_properties (H5LS-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/vds") - if (${resultcode} STREQUAL "1") - set_tests_properties (H5LS-${resultfile} PROPERTIES WILL_FAIL "true") - endif () - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5LS-${resultfile} PROPERTIES DEPENDS ${last_test}) - endif () - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5LS-${resultfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS=${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles/vds" - -D "TEST_OUTPUT=${resultfile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}.ls" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_VDS_TEST file) - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## - - if (HDF5_ENABLE_USING_MEMCHECKER) - # Remove any output file left over from previous test run - add_test ( - NAME H5LS_VDS-clearall-objects - COMMAND ${CMAKE_COMMAND} - -E remove - tvds-1.out - tvds-1.out.err - tvds-2.out - tvds-2.out.err - tvds-3_1.out - tvds-3_1.out.err - tvds-3_2.out - tvds-3_2.out.err - tvds-4.out - tvds-4.out.err - tvds-5.out - tvds-5.out.err - tvds_layout-1.out - tvds_layout-1.out.err - tvds_layout-2.out - tvds_layout-2.out.err - tvds_layout-3_1.out - tvds_layout-3_1.out.err - tvds_layout-3_2.out - tvds_layout-3_2.out.err - tvds_layout-4.out - tvds_layout-4.out.err - tvds_layout-5.out - tvds_layout-5.out.err - ) - set_tests_properties (H5LS_VDS-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/vds") - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5LS_VDS-clearall-objects PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - set (last_test "H5LS_VDS-clearall-objects") - endif (HDF5_ENABLE_USING_MEMCHECKER) - - ADD_H5_VDS_TEST (tvds-1 0 -w80 -v -S 1_vds.h5) - ADD_H5_VDS_TEST (tvds-2 0 -w80 -v -S 2_vds.h5) - ADD_H5_VDS_TEST (tvds-3_1 0 -w80 -v -S 3_1_vds.h5) - ADD_H5_VDS_TEST (tvds-3_2 0 -w80 -v -S 3_2_vds.h5) - ADD_H5_VDS_TEST (tvds-4 0 -w80 -v -S 4_vds.h5) - ADD_H5_VDS_TEST (tvds-5 0 -w80 -v -S 5_vds.h5) - diff --git a/tools/h5ls/Makefile.am b/tools/h5ls/Makefile.am deleted file mode 100644 index 54a06f1..0000000 --- a/tools/h5ls/Makefile.am +++ /dev/null @@ -1,40 +0,0 @@ -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -## -## Makefile.am -## Run automake to generate a Makefile.in from this file. -# -# HDF5 Library Makefile(.in) -# - -include $(top_srcdir)/config/commence.am - -# Include src and tools/lib directories -AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib - -# Test programs and scripts -TEST_SCRIPT=testh5ls.sh testh5lsvds.sh -check_SCRIPTS=$(TEST_SCRIPT) -SCRIPT_DEPEND=h5ls$(EXEEXT) - -# This is our main target, the h5ls tool -bin_PROGRAMS=h5ls - -# Add h5ls specific linker flags here -h5ls_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) - -# All programs depend on the hdf5 and h5tools libraries -LDADD=$(LIBH5TOOLS) $(LIBHDF5) - -include $(top_srcdir)/config/conclude.am diff --git a/tools/h5ls/h5ls.c b/tools/h5ls/h5ls.c deleted file mode 100644 index a032f08..0000000 --- a/tools/h5ls/h5ls.c +++ /dev/null @@ -1,2939 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * Programmer: Robb Matzke - * Monday, March 23, 1998 - */ - - -/* - * We include the private header file so we can get to the uniform - * programming environment it declares. Other than that, h5ls only calls - * HDF5 API functions (except for H5G_basename()) - */ -#include "H5private.h" -#include "h5tools.h" -#include "h5tools_utils.h" -#include "h5tools_dump.h" -#include "h5trav.h" - -/* Name of tool */ -#define PROGRAMNAME "h5ls" - -#define NAME_BUF_SIZE 2048 -/* - * Alternative formating for data dumped by H5LS - * - * This table only affects H5LS output. - */ -static h5tool_format_t ls_dataformat = { - 0, /*raw */ - - "", /*fmt_raw */ - "%d", /*fmt_int */ - "%u", /*fmt_uint */ - "%hhd", /*fmt_schar */ - "%u", /*fmt_uchar */ - "%d", /*fmt_short */ - "%u", /*fmt_ushort */ - "%ld", /*fmt_long */ - "%lu", /*fmt_ulong */ - NULL, /*fmt_llong */ - NULL, /*fmt_ullong */ - "%g", /*fmt_double */ - "%g", /*fmt_float */ - - 0, /*ascii */ - 0, /*str_locale */ - 0, /*str_repeat */ - - "[", /*arr_pre */ - ",", /*arr_sep */ - "]", /*arr_suf */ - 1, /*arr_linebreak */ - - "", /*cmpd_name */ - ",", /*cmpd_sep */ - "{", /*cmpd_pre */ - "}", /*cmpd_suf */ - "", /*cmpd_end */ - - ",", /*vlen_sep */ - "(", /*vlen_pre */ - ")", /*vlen_suf */ - "", /*vlen_end */ - - "%s", /*elmt_fmt */ - ",", /*elmt_suf1 */ - " ", /*elmt_suf2 */ - - HSIZE_T_FORMAT, /*idx_n_fmt */ - ",", /*idx_sep */ - "(%s)", /*idx_fmt */ - - 65535, /*line_ncols *//*standard default columns */ - 0, /*line_per_line */ - "", /*line_pre */ - "%s", /*line_1st */ - "%s", /*line_cont */ - "", /*line_suf */ - "", /*line_sep */ - 1, /*line_multi_new */ - "", /*line_indent */ - - 0, /*skip_first */ - - 0, /*obj_hidefileno */ - "-%lu:"H5_PRINTF_HADDR_FMT, /*obj_format */ - - 0, /*dset_hidefileno */ - "DSET-%s ", /*dset_format */ - "%sBlk%lu: ", /*dset_blockformat_pre */ - "%sPt%lu: ", /*dset_ptformat_pre */ - "%s", /*dset_ptformat */ - 1, /*array indices */ - 1 /*escape non printable characters */ -}; - -/* Struct to pass through to visitors */ -typedef struct { - const char *fname; /* Filename */ - hid_t fid; /* File ID */ - hid_t gid; /* Group ID */ - hbool_t symlink_target; /* Whether this is the target of an symbolic link */ - symlink_trav_t *symlink_list; /* List of visited symbolic links */ - size_t base_len; /* Length of base path name, if not root */ - size_t name_start; /* # of leading characters to strip off path names on output */ -}iter_t; - -/* Command-line switches */ -static int verbose_g = 0; /* lots of extra output */ -static int width_g = 80; /* output width in characters */ -static hbool_t address_g = FALSE; /* print raw data addresses */ -static hbool_t data_g = FALSE; /* display dataset values? */ -static hbool_t label_g = FALSE; /* label compound values? */ -static hbool_t string_g = FALSE; /* print 1-byte numbers as ASCII? */ -static hbool_t fullname_g = FALSE; /* print full path names */ -static hbool_t recursive_g = FALSE; /* recursive descent listing */ -static hbool_t follow_symlink_g = FALSE; /* follow symbolic links */ -static hbool_t no_dangling_link_g = FALSE; /* treat dangling link is error */ -static hbool_t follow_elink_g = FALSE; /* follow external links */ -static hbool_t grp_literal_g = FALSE; /* list group, not contents */ -static hbool_t hexdump_g = FALSE; /* show data as raw hexadecimal */ -static hbool_t show_errors_g = FALSE; /* print HDF5 error messages */ -static hbool_t simple_output_g = FALSE; /* make output more machine-readable */ -static hbool_t show_file_name_g = FALSE; /* show file name for full names */ -static hbool_t no_line_wrap_g = FALSE; /* show data content without line wrap */ -static hbool_t display_root_g = FALSE; /* show root group in output? */ - -/* Information about how to display each type of object */ -static struct dispatch_t { - const char *name; - hid_t (*open)(hid_t loc, const char *name, hid_t apl_id); - herr_t (*close)(hid_t obj); - herr_t (*list1)(hid_t obj); - herr_t (*list2)(hid_t obj, const char *name); -} dispatch_g[H5O_TYPE_NTYPES]; - -#define DISPATCH(TYPE, NAME, LIST1, LIST2) { \ - dispatch_g[TYPE].name = (NAME); \ - dispatch_g[TYPE].list1 = (LIST1); \ - dispatch_g[TYPE].list2 = (LIST2); \ -} - -static void print_type(h5tools_str_t *buffer, hid_t type, int ind); -static hbool_t print_int_type(h5tools_str_t *buffer, hid_t type, int ind); -static hbool_t print_float_type(h5tools_str_t *buffer, hid_t type, int ind); -static herr_t visit_obj(hid_t file, const char *oname, iter_t *iter); - - -/*------------------------------------------------------------------------- - * Function: usage - * - * Purpose: Prints a usage message on stderr and then returns. - * - * Return: void - * - * Programmer: Robb Matzke - * Thursday, July 16, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -usage (void) -{ - FLUSHSTREAM(rawoutstream); - PRINTVALSTREAM(rawoutstream, "usage: h5ls [OPTIONS] file[/OBJECT] [file[/[OBJECT]...]\n"); - PRINTVALSTREAM(rawoutstream, " OPTIONS\n"); - PRINTVALSTREAM(rawoutstream, " -h, -?, --help Print a usage message and exit\n"); - PRINTVALSTREAM(rawoutstream, " -a, --address Print raw data address. If dataset is contiguous, address\n"); - PRINTVALSTREAM(rawoutstream, " is offset in file of beginning of raw data. If chunked,\n"); - PRINTVALSTREAM(rawoutstream, " returned list of addresses indicates offset of each chunk.\n"); - PRINTVALSTREAM(rawoutstream, " Must be used with -v, --verbose option.\n"); - PRINTVALSTREAM(rawoutstream, " Provides no information for non-dataset objects.\n"); - PRINTVALSTREAM(rawoutstream, " -d, --data Print the values of datasets\n"); - PRINTVALSTREAM(rawoutstream, " --enable-error-stack\n"); - PRINTVALSTREAM(rawoutstream, " Prints messages from the HDF5 error stack as they occur.\n"); - PRINTVALSTREAM(rawoutstream, " --follow-symlinks\n"); - PRINTVALSTREAM(rawoutstream, " Follow symbolic links (soft links and external links)\n"); - PRINTVALSTREAM(rawoutstream, " to display target object information.\n"); - PRINTVALSTREAM(rawoutstream, " Without this option, h5ls identifies a symbolic link\n"); - PRINTVALSTREAM(rawoutstream, " as a soft link or external link and prints the value\n"); - PRINTVALSTREAM(rawoutstream, " assigned to the symbolic link; it does not provide any\n"); - PRINTVALSTREAM(rawoutstream, " information regarding the target object or determine\n"); - PRINTVALSTREAM(rawoutstream, " whether the link is a dangling link.\n"); - PRINTVALSTREAM(rawoutstream, " --no-dangling-links\n"); - PRINTVALSTREAM(rawoutstream, " Must be used with --follow-symlinks option;\n"); - PRINTVALSTREAM(rawoutstream, " otherwise, h5ls shows error message and returns an exit\n"); - PRINTVALSTREAM(rawoutstream, " code of 1. \n"); - PRINTVALSTREAM(rawoutstream, " Check for any symbolic links (soft links or external links)\n"); - PRINTVALSTREAM(rawoutstream, " that do not resolve to an existing object (dataset, group,\n"); - PRINTVALSTREAM(rawoutstream, " or named datatype).\n"); - PRINTVALSTREAM(rawoutstream, " If any dangling link is found, this situation is treated\n"); - PRINTVALSTREAM(rawoutstream, " as an error and h5ls returns an exit code of 1.\n"); - PRINTVALSTREAM(rawoutstream, " -f, --full Print full path names instead of base names\n"); - PRINTVALSTREAM(rawoutstream, " -g, --group Show information about a group, not its contents\n"); - PRINTVALSTREAM(rawoutstream, " -l, --label Label members of compound datasets\n"); - PRINTVALSTREAM(rawoutstream, " -r, --recursive List all groups recursively, avoiding cycles\n"); - PRINTVALSTREAM(rawoutstream, " -s, --string Print 1-byte integer datasets as ASCII\n"); - PRINTVALSTREAM(rawoutstream, " -S, --simple Use a machine-readable output format\n"); - PRINTVALSTREAM(rawoutstream, " -wN, --width=N Set the number of columns of output\n"); - PRINTVALSTREAM(rawoutstream, " -v, --verbose Generate more verbose output\n"); - PRINTVALSTREAM(rawoutstream, " -V, --version Print version number and exit\n"); - PRINTVALSTREAM(rawoutstream, " --vfd=DRIVER Use the specified virtual file driver\n"); - PRINTVALSTREAM(rawoutstream, " -x, --hexdump Show raw data in hexadecimal format\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " file/OBJECT\n"); - PRINTVALSTREAM(rawoutstream, " Each object consists of an HDF5 file name optionally followed by a\n"); - PRINTVALSTREAM(rawoutstream, " slash and an object name within the file (if no object is specified\n"); - PRINTVALSTREAM(rawoutstream, " within the file then the contents of the root group are displayed).\n"); - PRINTVALSTREAM(rawoutstream, " The file name may include a printf(3C) integer format such as\n"); - PRINTVALSTREAM(rawoutstream, " \"%%05d\" to open a file family.\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " Deprecated Options\n"); - PRINTVALSTREAM(rawoutstream, " The following options have been deprecated in HDF5. While they remain\n"); - PRINTVALSTREAM(rawoutstream, " available, they have been superseded as indicated and may be removed\n"); - PRINTVALSTREAM(rawoutstream, " from HDF5 in the future. Use the indicated replacement option in all\n"); - PRINTVALSTREAM(rawoutstream, " new work; where possible, existing scripts, et cetera, should also be\n"); - PRINTVALSTREAM(rawoutstream, " updated to use the replacement option.\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " -E or --external Follow external links.\n"); - PRINTVALSTREAM(rawoutstream, " Replaced by --follow-symlinks.\n"); - PRINTVALSTREAM(rawoutstream, " -e, --errors Show all HDF5 error reporting\n"); - PRINTVALSTREAM(rawoutstream, " Replaced by --enable-error-stack.\n"); -} - - - -/*------------------------------------------------------------------------- - * Function: print_string - * - * Purpose: Print a string value by escaping unusual characters. If - * STREAM is null then we only count how large the output would - * be. - * - * Return: Number of characters printed. - * - * Programmer: Robb Matzke - * Thursday, November 5, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static int -print_string(h5tools_str_t *buffer, const char *s, hbool_t escape_spaces) -{ - int nprint=0; - - for (/*void*/; s && *s; s++) { - switch (*s) { - case '"': - if (buffer) h5tools_str_append(buffer, "\\\""); - nprint += 2; - break; - case '\\': - if (buffer) h5tools_str_append(buffer, "\\\\"); - nprint += 2; - break; - case '\b': - if (buffer) h5tools_str_append(buffer, "\\b"); - nprint += 2; - break; - case '\f': - if (buffer) h5tools_str_append(buffer, "\\f"); - nprint += 2; - break; - case '\n': - if (buffer) h5tools_str_append(buffer, "\\n"); - nprint += 2; - break; - case '\r': - if (buffer) h5tools_str_append(buffer, "\\r"); - nprint += 2; - break; - case '\t': - if (buffer) h5tools_str_append(buffer, "\\t"); - nprint += 2; - break; - case ' ': - if (escape_spaces) { - if (buffer) h5tools_str_append(buffer, "\\ "); - nprint += 2; - } - else { - if (buffer) h5tools_str_append(buffer, " "); - nprint++; - } - break; - default: - if (isprint((int)*s)) { - if (buffer) h5tools_str_append(buffer, "%c", *s); - nprint++; - } - else { - if (buffer) h5tools_str_append(buffer, "\\%03o", *((const unsigned char*)s)); - nprint += 4; - } - break; - } - } - return nprint; -} - - -/*------------------------------------------------------------------------- - * Function: print_obj_name - * - * Purpose: Print an object name and another string. - * - * Return: Success: TRUE - * - * Failure: FALSE, nothing printed - * - * Programmer: Quincey Koziol - * Tuesday, November 6, 2007 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static int -print_obj_name(h5tools_str_t *buffer, const iter_t *iter, const char *oname, - const char *s) -{ - static char fullname[NAME_BUF_SIZE]; /* Buffer for file and/or object name */ - const char *name = fullname; /* Pointer to buffer for printing */ - int n; - - if(show_file_name_g) - HDsnprintf(fullname, sizeof(fullname), "%s/%s", iter->fname, oname + iter->name_start); - else - name = oname + iter->name_start; - - /* Print the object name, either full name or base name */ - if(fullname_g) - n = print_string(buffer, name, TRUE); - else { - const char *last_sep; /* The location of the last group separator */ - - /* Find the last component of the path name */ - if(NULL == (last_sep = HDstrrchr(name, '/'))) - last_sep = name; - else { - last_sep++; - } /* end else */ - n = print_string(buffer, last_sep, TRUE); - } /* end else */ - h5tools_str_append(buffer, "%*s ", MAX(0, (24 - n)), s); - - return TRUE; -} - - -/*------------------------------------------------------------------------- - * Function: print_native_type - * - * Purpose: Prints the name of a native C data type. - * - * Return: Success: TRUE - * - * Failure: FALSE, nothing printed. - * - * Programmer: Robb Matzke - * Thursday, November 5, 1998 - * - * Modifications: - * Robb Matzke, 1999-06-11 - * Added the C9x types, but we still prefer to display the types - * from the C language itself (like `int' vs. `int32_t'). - * - *------------------------------------------------------------------------- - */ -static hbool_t -print_native_type(h5tools_str_t *buffer, hid_t type, int ind) -{ - if(!simple_output_g) { - if (H5Tequal(type, H5T_NATIVE_SCHAR)==TRUE) { - h5tools_str_append(buffer, "native signed char"); - } else if (H5Tequal(type, H5T_NATIVE_UCHAR)==TRUE) { - h5tools_str_append(buffer, "native unsigned char"); - } else if (H5Tequal(type, H5T_NATIVE_INT)==TRUE) { - h5tools_str_append(buffer, "native int"); - } else if (H5Tequal(type, H5T_NATIVE_UINT)==TRUE) { - h5tools_str_append(buffer, "native unsigned int"); - } else if (H5Tequal(type, H5T_NATIVE_SHORT)==TRUE) { - h5tools_str_append(buffer, "native short"); - } else if (H5Tequal(type, H5T_NATIVE_USHORT)==TRUE) { - h5tools_str_append(buffer, "native unsigned short"); - } else if (H5Tequal(type, H5T_NATIVE_LONG)==TRUE) { - h5tools_str_append(buffer, "native long"); - } else if (H5Tequal(type, H5T_NATIVE_ULONG)==TRUE) { - h5tools_str_append(buffer, "native unsigned long"); - } else if (H5Tequal(type, H5T_NATIVE_LLONG)==TRUE) { - h5tools_str_append(buffer, "native long long"); - } else if (H5Tequal(type, H5T_NATIVE_ULLONG)==TRUE) { - h5tools_str_append(buffer, "native unsigned long long"); - } else if (H5Tequal(type, H5T_NATIVE_FLOAT)==TRUE) { - h5tools_str_append(buffer, "native float"); - } else if (H5Tequal(type, H5T_NATIVE_DOUBLE)==TRUE) { - h5tools_str_append(buffer, "native double"); -#if H5_SIZEOF_LONG_DOUBLE !=0 - } else if (H5Tequal(type, H5T_NATIVE_LDOUBLE)==TRUE) { - h5tools_str_append(buffer, "native long double"); -#endif - } else if (H5Tequal(type, H5T_NATIVE_INT8)==TRUE) { - h5tools_str_append(buffer, "native int8_t"); - } else if (H5Tequal(type, H5T_NATIVE_UINT8)==TRUE) { - h5tools_str_append(buffer, "native uint8_t"); - } else if (H5Tequal(type, H5T_NATIVE_INT16)==TRUE) { - h5tools_str_append(buffer, "native int16_t"); - } else if (H5Tequal(type, H5T_NATIVE_UINT16)==TRUE) { - h5tools_str_append(buffer, "native uint16_t"); - } else if (H5Tequal(type, H5T_NATIVE_INT32)==TRUE) { - h5tools_str_append(buffer, "native int32_t"); - } else if (H5Tequal(type, H5T_NATIVE_UINT32)==TRUE) { - h5tools_str_append(buffer, "native uint32_t"); - } else if (H5Tequal(type, H5T_NATIVE_INT64)==TRUE) { - h5tools_str_append(buffer, "native int64_t"); - } else if (H5Tequal(type, H5T_NATIVE_UINT64)==TRUE) { - h5tools_str_append(buffer, "native uint64_t"); - } else if (H5Tequal(type, H5T_NATIVE_INT_LEAST8)==TRUE) { - h5tools_str_append(buffer, "native int_least8_t"); - } else if (H5Tequal(type, H5T_NATIVE_UINT_LEAST8)==TRUE) { - h5tools_str_append(buffer, "native uint_least8_t"); - } else if (H5Tequal(type, H5T_NATIVE_INT_LEAST16)==TRUE) { - h5tools_str_append(buffer, "native int_least16_t"); - } else if (H5Tequal(type, H5T_NATIVE_UINT_LEAST16)==TRUE) { - h5tools_str_append(buffer, "native uint_least16_t"); - } else if (H5Tequal(type, H5T_NATIVE_INT_LEAST32)==TRUE) { - h5tools_str_append(buffer, "native int_least32_t"); - } else if (H5Tequal(type, H5T_NATIVE_UINT_LEAST32)==TRUE) { - h5tools_str_append(buffer, "native uint_least32_t"); - } else if (H5Tequal(type, H5T_NATIVE_INT_LEAST64)==TRUE) { - h5tools_str_append(buffer, "native int_least64_t"); - } else if (H5Tequal(type, H5T_NATIVE_UINT_LEAST64)==TRUE) { - h5tools_str_append(buffer, "native uint_least64_t"); - } else if (H5Tequal(type, H5T_NATIVE_INT_FAST8)==TRUE) { - h5tools_str_append(buffer, "native int_fast8_t"); - } else if (H5Tequal(type, H5T_NATIVE_UINT_FAST8)==TRUE) { - h5tools_str_append(buffer, "native uint_fast8_t"); - } else if (H5Tequal(type, H5T_NATIVE_INT_FAST16)==TRUE) { - h5tools_str_append(buffer, "native int_fast16_t"); - } else if (H5Tequal(type, H5T_NATIVE_UINT_FAST16)==TRUE) { - h5tools_str_append(buffer, "native uint_fast16_t"); - } else if (H5Tequal(type, H5T_NATIVE_INT_FAST32)==TRUE) { - h5tools_str_append(buffer, "native int_fast32_t"); - } else if (H5Tequal(type, H5T_NATIVE_UINT_FAST32)==TRUE) { - h5tools_str_append(buffer, "native uint_fast32_t"); - } else if (H5Tequal(type, H5T_NATIVE_INT_FAST64)==TRUE) { - h5tools_str_append(buffer, "native int_fast64_t"); - } else if (H5Tequal(type, H5T_NATIVE_UINT_FAST64)==TRUE) { - h5tools_str_append(buffer, "native uint_fast64_t"); - } else if (H5Tequal(type, H5T_NATIVE_B8)==TRUE) { - h5tools_str_append(buffer, "native 8-bit field"); - } else if (H5Tequal(type, H5T_NATIVE_B16)==TRUE) { - h5tools_str_append(buffer, "native 16-bit field"); - } else if (H5Tequal(type, H5T_NATIVE_B32)==TRUE) { - h5tools_str_append(buffer, "native 32-bit field"); - } else if (H5Tequal(type, H5T_NATIVE_B64)==TRUE) { - h5tools_str_append(buffer, "native 64-bit field"); - } else if (H5Tequal(type, H5T_NATIVE_HSIZE)==TRUE) { - h5tools_str_append(buffer, "native hsize_t"); - } else if (H5Tequal(type, H5T_NATIVE_HSSIZE)==TRUE) { - h5tools_str_append(buffer, "native hssize_t"); - } else if (H5Tequal(type, H5T_NATIVE_HERR)==TRUE) { - h5tools_str_append(buffer, "native herr_t"); - } else if (H5Tequal(type, H5T_NATIVE_HBOOL)==TRUE) { - h5tools_str_append(buffer, "native hbool_t"); - } else { - return print_int_type(buffer, type, ind); - } - } else { - return print_int_type(buffer, type, ind); - } - return TRUE; -} - - -/*------------------------------------------------------------------------- - * Function: print_ieee_type - * - * Purpose: Print the name of an IEEE floating-point data type. - * - * Return: Success: TRUE - * - * Failure: FALSE, nothing printed - * - * Programmer: Robb Matzke - * Thursday, November 5, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static hbool_t -print_ieee_type(h5tools_str_t *buffer, hid_t type, int ind) -{ - if (H5Tequal(type, H5T_IEEE_F32BE)==TRUE) { - h5tools_str_append(buffer, "IEEE 32-bit big-endian float"); - } - else if (H5Tequal(type, H5T_IEEE_F32LE)==TRUE) { - h5tools_str_append(buffer, "IEEE 32-bit little-endian float"); - } - else if (H5Tequal(type, H5T_IEEE_F64BE)==TRUE) { - h5tools_str_append(buffer, "IEEE 64-bit big-endian float"); - } - else if (H5Tequal(type, H5T_IEEE_F64LE)==TRUE) { - h5tools_str_append(buffer, "IEEE 64-bit little-endian float"); - } - else { - return print_float_type(buffer, type, ind); - } - return TRUE; -} - - -/*------------------------------------------------------------------------- - * Function: print_precision - * - * Purpose: Prints information on the next line about precision and - * padding if the precision is less than the total data type - * size. - * - * Return: void - * - * Programmer: Robb Matzke - * Thursday, November 5, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -print_precision(h5tools_str_t *buffer, hid_t type, int ind) -{ - size_t prec; /* precision */ - H5T_pad_t plsb, pmsb; /* lsb and msb padding */ - const char *plsb_s=NULL; /* lsb padding string */ - const char *pmsb_s=NULL; /* msb padding string */ - size_t nbits; /* number of bits */ - - /* If the precision is less than the total size then show the precision - * and offset on the following line. Also display the padding - * information. */ - if(8 * H5Tget_size(type) != (prec = H5Tget_precision(type))) { - h5tools_str_append(buffer, "\n%*s(%lu bit%s of precision beginning at bit %lu)", - ind, "", (unsigned long)prec, 1 == prec ? "" : "s", - (unsigned long)H5Tget_offset(type)); - - H5Tget_pad(type, &plsb, &pmsb); - if(H5Tget_offset(type) > 0) { - switch(plsb) { - case H5T_PAD_ZERO: - plsb_s = "zero"; - break; - case H5T_PAD_ONE: - plsb_s = "one"; - break; - case H5T_PAD_BACKGROUND: - plsb_s = "bkg"; - break; - case H5T_PAD_ERROR: - case H5T_NPAD: - plsb_s = "unknown"; - break; - default: - break; - } - } - if((unsigned)H5Tget_offset(type) + prec < 8 * H5Tget_size(type)) { - switch(pmsb) { - case H5T_PAD_ZERO: - pmsb_s = "zero"; - break; - case H5T_PAD_ONE: - pmsb_s = "one"; - break; - case H5T_PAD_BACKGROUND: - pmsb_s = "bkg"; - break; - case H5T_PAD_ERROR: - case H5T_NPAD: - pmsb_s = "unknown"; - break; - default: - break; - } - } - if (plsb_s || pmsb_s) { - h5tools_str_append(buffer, "\n%*s(", ind, ""); - if (plsb_s) { - nbits = (unsigned)H5Tget_offset(type); - h5tools_str_append(buffer, "%lu %s bit%s at bit 0", - (unsigned long)nbits, plsb_s, 1 == nbits ? "" : "s"); - } - if (plsb_s && pmsb_s) h5tools_str_append(buffer, ", "); - if (pmsb_s) { - nbits = (8 * H5Tget_size(type)) - ((unsigned)H5Tget_offset(type) + prec); - h5tools_str_append(buffer, "%lu %s bit%s at bit %lu", - (unsigned long)nbits, pmsb_s, 1 == nbits ? "" : "s", - (unsigned long)(8 * H5Tget_size(type) - nbits)); - } - h5tools_str_append(buffer, ")"); - } - } -} - - -/*------------------------------------------------------------------------- - * Function: print_int_type - * - * Purpose: Print the name of an integer data type. Common information - * like number of bits, byte order, and sign scheme appear on - * the first line. Additional information might appear in - * parentheses on the following lines. - * - * Return: Success: TRUE - * - * Failure: FALSE, nothing printed - * - * Programmer: Robb Matzke - * Thursday, November 5, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static hbool_t -print_int_type(h5tools_str_t *buffer, hid_t type, int ind) -{ - H5T_order_t order; /* byte order value */ - const char *order_s=NULL; /* byte order string */ - H5T_sign_t sign; /* sign scheme value */ - const char *sign_s=NULL; /* sign scheme string */ - - if (H5T_INTEGER!=H5Tget_class(type)) return FALSE; - - /* Byte order */ - if (H5Tget_size(type)>1) { - order = H5Tget_order(type); - if (H5T_ORDER_LE==order) { - order_s = " little-endian"; - } - else if (H5T_ORDER_BE==order) { - order_s = " big-endian"; - } - else if (H5T_ORDER_VAX==order) { - order_s = " mixed-endian"; - } - else { - order_s = " unknown-byte-order"; - } - } - else { - order_s = ""; - } - - /* Sign */ - if ((sign=H5Tget_sign(type))>=0) { - if (H5T_SGN_NONE==sign) { - sign_s = " unsigned"; - } - else if (H5T_SGN_2==sign) { - sign_s = ""; - } - else { - sign_s = " unknown-sign"; - } - } - else { - sign_s = " unknown-sign"; - } - - /* Print size, order, and sign on first line, precision and padding - * information on the subsequent lines */ - h5tools_str_append(buffer, "%lu-bit%s%s integer", - (unsigned long)(8*H5Tget_size(type)), order_s, sign_s); - print_precision(buffer, type, ind); - return TRUE; -} - - -/*------------------------------------------------------------------------- - * Function: print_float_type - * - * Purpose: Print info about a floating point data type. - * - * Return: Success: TRUE - * - * Failure: FALSE, nothing printed - * - * Programmer: Robb Matzke - * Thursday, November 5, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static hbool_t -print_float_type(h5tools_str_t *buffer, hid_t type, int ind) -{ - H5T_order_t order; /* byte order value */ - const char *order_s=NULL; /* byte order string */ - size_t spos; /* sign bit position */ - size_t esize, epos; /* exponent size and position */ - size_t msize, mpos; /* significand size and position */ - size_t ebias; /* exponent bias */ - H5T_norm_t norm; /* significand normalization */ - const char *norm_s=NULL; /* normalization string */ - H5T_pad_t pad; /* internal padding value */ - const char *pad_s=NULL; /* internal padding string */ - - if (H5T_FLOAT!=H5Tget_class(type)) return FALSE; - - /* Byte order */ - if (H5Tget_size(type)>1) { - order = H5Tget_order(type); - if (H5T_ORDER_LE==order) { - order_s = " little-endian"; - } - else if (H5T_ORDER_BE==order) { - order_s = " big-endian"; - } - else if (H5T_ORDER_VAX==order) { - order_s = " mixed-endian"; - } - else { - order_s = " unknown-byte-order"; - } - } - else { - order_s = ""; - } - - /* Print size and byte order on first line, precision and padding on - * subsequent lines. */ - h5tools_str_append(buffer, "%lu-bit%s floating-point", - (unsigned long)(8*H5Tget_size(type)), order_s); - print_precision(buffer, type, ind); - - /* Print sizes, locations, and other information about each field */ - H5Tget_fields (type, &spos, &epos, &esize, &mpos, &msize); - ebias = H5Tget_ebias(type); - norm = H5Tget_norm(type); - switch (norm) { - case H5T_NORM_IMPLIED: - norm_s = ", msb implied"; - break; - case H5T_NORM_MSBSET: - norm_s = ", msb always set"; - break; - case H5T_NORM_NONE: - norm_s = ", no normalization"; - break; - case H5T_NORM_ERROR: - norm_s = ", unknown normalization"; - break; - default: - ; - break; - } - h5tools_str_append(buffer, "\n%*s(significant for %lu bit%s at bit %lu%s)", ind, "", - (unsigned long)msize, 1==msize?"":"s", (unsigned long)mpos, - norm_s); - h5tools_str_append(buffer, "\n%*s(exponent for %lu bit%s at bit %lu, bias is 0x%lx)", - ind, "", (unsigned long)esize, 1==esize?"":"s", - (unsigned long)epos, (unsigned long)ebias); - h5tools_str_append(buffer, "\n%*s(sign bit at %lu)", ind, "", (unsigned long)spos); - - /* Display internal padding */ - if (1+esize+msize 0) { - char **name; /* member names */ - unsigned char *value; /* value array */ - hid_t native = -1; /* native integer data type */ - size_t dst_size; /* destination value type size */ - unsigned i; /* miscellaneous counters */ - - /* Determine what data type to use for the native values. To simplify - * things we entertain three possibilities: - * 1. long long -- the largest native signed integer - * 2. unsigned long long -- the largest native unsigned integer - * 3. raw format */ - if(H5Tget_size(type) <= sizeof(long long)) { - dst_size = sizeof(long long); - if(H5T_SGN_NONE == H5Tget_sign(type)) - native = H5T_NATIVE_ULLONG; - else - native = H5T_NATIVE_LLONG; - } /* end if */ - else - dst_size = H5Tget_size(type); - - /* Get the names and raw values of all members */ - name = (char **)HDcalloc((size_t)nmembs, sizeof(char *)); - value = (unsigned char *)HDcalloc((size_t)nmembs, MAX(H5Tget_size(type), dst_size)); - for(i = 0; i < (unsigned)nmembs; i++) { - name[i] = H5Tget_member_name(type, i); - H5Tget_member_value(type, i, value + i * H5Tget_size(type)); - } - - /* Convert values to native data type */ - if(native > 0) - if(H5Tconvert(super, native, (size_t)nmembs, value, NULL, H5P_DEFAULT) < 0) { - /* Release resources */ - for(i = 0; i < (unsigned)nmembs; i++) - H5free_memory(name[i]); - HDfree(name); - HDfree(value); - - return FALSE; - } - - /* Sort members by increasing value */ - /*not implemented yet*/ - - /* Print members */ - for(i = 0; i < (unsigned)nmembs; i++) { - unsigned char *copy; /* a pointer to value array */ - int nchars; /* number of output characters */ - - h5tools_str_append(buffer, "\n%*s", ind+4, ""); - nchars = print_string(buffer, name[i], TRUE); - h5tools_str_append(buffer, "%*s = ", MAX(0, 16 - nchars), ""); - - if(native < 0) { - size_t j; - - h5tools_str_append(buffer, "0x"); - for(j = 0; j < dst_size; j++) - h5tools_str_append(buffer, "%02x", value[i*dst_size+j]); - } - else if(H5T_SGN_NONE == H5Tget_sign(native)) { - /*On SGI Altix(cobalt), wrong values were printed out with "value+i*dst_size" - *strangely, unless use another pointer "copy".*/ - copy = value + i * dst_size; - h5tools_str_append(buffer, HSIZE_T_FORMAT, *((unsigned long long*)((void*)copy))); - } - else { - /*On SGI Altix(cobalt), wrong values were printed out with "value+i*dst_size" - *strangely, unless use another pointer "copy".*/ - copy = value + i * dst_size; - h5tools_str_append(buffer, "%"H5_PRINTF_LL_WIDTH"d", - *((long long*)((void*)copy))); - } - } - - /* Release resources */ - for(i = 0; i < (unsigned)nmembs; i++) - H5free_memory(name[i]); - HDfree(name); - HDfree(value); - } - else - h5tools_str_append(buffer, "\n%*s ", ind+4, ""); - - h5tools_str_append(buffer, "\n%*s}", ind, ""); - - H5Tclose(super); - - return TRUE; -} - - -/*------------------------------------------------------------------------- - * Function: print_string_type - * - * Purpose: Print information about a string data type. - * - * Return: Success: TRUE - * - * Failure: FALSE, nothing printed - * - * Programmer: Robb Matzke - * Thursday, November 5, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static hbool_t -print_string_type(h5tools_str_t *buffer, hid_t type, int H5_ATTR_UNUSED ind) -{ - H5T_str_t pad; - const char *pad_s=NULL; - H5T_cset_t cset; - const char *cset_s=NULL; - - if (H5T_STRING!=H5Tget_class(type)) return FALSE; - - /* Padding */ - pad = H5Tget_strpad(type); - switch (pad) { - case H5T_STR_NULLTERM: - pad_s = "null-terminated"; - break; - case H5T_STR_NULLPAD: - pad_s = "null-padded"; - break; - case H5T_STR_SPACEPAD: - pad_s = "space-padded"; - break; - case H5T_STR_RESERVED_3: - case H5T_STR_RESERVED_4: - case H5T_STR_RESERVED_5: - case H5T_STR_RESERVED_6: - case H5T_STR_RESERVED_7: - case H5T_STR_RESERVED_8: - case H5T_STR_RESERVED_9: - case H5T_STR_RESERVED_10: - case H5T_STR_RESERVED_11: - case H5T_STR_RESERVED_12: - case H5T_STR_RESERVED_13: - case H5T_STR_RESERVED_14: - case H5T_STR_RESERVED_15: - case H5T_STR_ERROR: - pad_s = "unknown-format"; - break; - default: - ; - break; - } - - /* Character set */ - cset = H5Tget_cset(type); - switch (cset) { - case H5T_CSET_ASCII: - cset_s = "ASCII"; - break; - case H5T_CSET_UTF8: - cset_s = "UTF-8"; - break; - case H5T_CSET_RESERVED_2: - case H5T_CSET_RESERVED_3: - case H5T_CSET_RESERVED_4: - case H5T_CSET_RESERVED_5: - case H5T_CSET_RESERVED_6: - case H5T_CSET_RESERVED_7: - case H5T_CSET_RESERVED_8: - case H5T_CSET_RESERVED_9: - case H5T_CSET_RESERVED_10: - case H5T_CSET_RESERVED_11: - case H5T_CSET_RESERVED_12: - case H5T_CSET_RESERVED_13: - case H5T_CSET_RESERVED_14: - case H5T_CSET_RESERVED_15: - case H5T_CSET_ERROR: - cset_s = "unknown-character-set"; - break; - default: - ; - break; - } - - if (H5Tis_variable_str(type)) { - h5tools_str_append(buffer, "variable-length"); - } - else { - h5tools_str_append(buffer, "%lu-byte", (unsigned long)H5Tget_size(type)); - } - h5tools_str_append(buffer, " %s %s string", pad_s, cset_s); - return TRUE; -} - - -/*------------------------------------------------------------------------- - * Function: print_reference_type - * - * Purpose: Prints information about a reference data type. - * - * Return: Success: TRUE - * - * Failure: FALSE, nothing printed - * - * Programmer: Robb Matzke - * Thursday, November 5, 1998 - * - * Modifications: - * Robb Matzke, 1999-06-04 - * Knows about object and dataset region references. - * - *------------------------------------------------------------------------- - */ -static hbool_t -print_reference_type(h5tools_str_t *buffer, hid_t type, int H5_ATTR_UNUSED ind) -{ - if (H5T_REFERENCE!=H5Tget_class(type)) return FALSE; - - if (H5Tequal(type, H5T_STD_REF_OBJ)==TRUE) { - h5tools_str_append(buffer, "object reference"); - } - else if (H5Tequal(type, H5T_STD_REF_DSETREG)==TRUE) { - h5tools_str_append(buffer, "dataset region reference"); - } - else { - h5tools_str_append(buffer, "%lu-byte unknown reference", - (unsigned long)H5Tget_size(type)); - } - - return TRUE; -} - - -/*------------------------------------------------------------------------- - * Function: print_opaque_type - * - * Purpose: Prints information about an opaque data type. - * - * Return: Success: TRUE - * - * Failure: FALSE, nothing printed - * - * Programmer: Robb Matzke - * Monday, June 7, 1999 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static hbool_t -print_opaque_type(h5tools_str_t *buffer, hid_t type, int ind) -{ - char *tag; - size_t size; - - if (H5T_OPAQUE!=H5Tget_class(type)) return FALSE; - - size = H5Tget_size(type); - h5tools_str_append(buffer, "%lu-byte opaque type", (unsigned long)size); - if ((tag=H5Tget_tag(type))) { - h5tools_str_append(buffer, "\n%*s(tag = \"", ind, ""); - print_string(buffer, tag, FALSE); - h5tools_str_append(buffer, "\")"); - H5free_memory(tag); - } - return TRUE; -} - - -/*------------------------------------------------------------------------- - * Function: print_vlen_type - * - * Purpose: Print information about a variable-length type - * - * Return: Success: TRUE - * - * Failure: FALSE - * - * Programmer: Robb Matzke - * Friday, December 1, 2000 - * - * Modifications: - *------------------------------------------------------------------------- - */ -static hbool_t -print_vlen_type(h5tools_str_t *buffer, hid_t type, int ind) -{ - hid_t super; - - if (H5T_VLEN!=H5Tget_class(type)) return FALSE; - - h5tools_str_append(buffer, "variable length of\n%*s", ind+4, ""); - super = H5Tget_super(type); - print_type(buffer, super, ind+4); - H5Tclose(super); - return TRUE; -} - - -/*--------------------------------------------------------------------------- - * Purpose: Print information about an array type - * - * Return: Success: TRUE - * - * Failure: FALSE - * - * Programmer: Robb Matzke - * Thursday, January 31, 2002 - * - * Modifications: - *--------------------------------------------------------------------------- - */ -static hbool_t -print_array_type(h5tools_str_t *buffer, hid_t type, int ind) -{ - hid_t super; - int ndims, i; - hsize_t *dims=NULL; - - if (H5T_ARRAY!=H5Tget_class(type)) - return FALSE; - ndims = H5Tget_array_ndims(type); - if (ndims) { - dims = (hsize_t *)HDmalloc((unsigned)ndims * sizeof(dims[0])); - H5Tget_array_dims2(type, dims); - - /* Print dimensions */ - for (i=0; i1) { - order = H5Tget_order(type); - if (H5T_ORDER_LE==order) { - order_s = " little-endian"; - } else if (H5T_ORDER_BE==order) { - order_s = " big-endian"; - } else if (H5T_ORDER_VAX==order) { - order_s = " mixed-endian"; - } else { - order_s = "unknown-byte-order"; - } - } else { - order_s = ""; - } - - h5tools_str_append(buffer, "%lu-bit%s bitfield", - (unsigned long)(8*H5Tget_size(type)), order_s); - print_precision(buffer, type, ind); - return TRUE; -} - - -/*------------------------------------------------------------------------- - * Function: print_type - * - * Purpose: Prints a data type definition. The definition is printed - * without any leading space or trailing line-feed (although - * there might be line-feeds inside the type definition). The - * first line is assumed to have IND characters before it on - * the same line (printed by the caller). - * - * Return: void - * - * Programmer: Robb Matzke - * Thursday, November 5, 1998 - * - * Modifications: - * Robb Matzke, 1999-06-11 - * Prints the OID of shared data types. - * - *------------------------------------------------------------------------- - */ -static void -print_type(h5tools_str_t *buffer, hid_t type, int ind) -{ - H5T_class_t data_class = H5Tget_class(type); - - /* Bad data type */ - if (type<0) { - h5tools_str_append(buffer,""); - return; - } - - /* Shared? If so then print the type's OID */ - if(H5Tcommitted(type)) { - H5O_info_t oi; - - if(H5Oget_info(type, &oi) >= 0) - h5tools_str_append(buffer,"shared-%lu:"H5_PRINTF_HADDR_FMT" ", - oi.fileno, oi.addr); - else - h5tools_str_append(buffer,"shared "); - } /* end if */ - - /* Print the type */ - if(print_native_type(buffer, type, ind) || - print_ieee_type(buffer, type, ind) || - print_cmpd_type(buffer, type, ind) || - print_enum_type(buffer, type, ind) || - print_string_type(buffer, type, ind) || - print_reference_type(buffer, type, ind) || - print_vlen_type(buffer, type, ind) || - print_array_type(buffer, type, ind) || - print_opaque_type(buffer, type, ind) || - print_bitfield_type(buffer, type, ind)) - return; - - /* Unknown type */ - h5tools_str_append(buffer,"%lu-byte class-%u unknown", - (unsigned long)H5Tget_size(type), (unsigned)data_class); -} - - -/*------------------------------------------------------------------------- - * Function: dump_dataset_values - * - * Purpose: Prints all values of a dataset. - * - * Return: void - * - * Programmer: Robb Matzke - * Tuesday, July 21, 1998 - * - * Modifications: - * Robb Matzke, 1999-09-27 - * Understands the simple_output_g switch which causes data to - * be displayed in a more machine-readable format. - *------------------------------------------------------------------------- - */ -static void -dump_dataset_values(hid_t dset) -{ - char string_prefix[64]; - static char fmt_double[16]; - static char fmt_float[16]; - hsize_t curr_pos = 0; /* total data element position */ - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t outputformat; - h5tool_format_t *info = &ls_dataformat; - - hid_t f_type = H5Dget_type(dset); - size_t size = H5Tget_size(f_type); - - HDmemset(&ctx, 0, sizeof(ctx)); - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - outputformat = *info; - outputformat.line_1st = NULL; - if (simple_output_g) { - outputformat.idx_fmt = ""; - outputformat.line_per_line = 1; - outputformat.line_multi_new = 0; - outputformat.line_pre = " "; - outputformat.line_cont = " "; - - outputformat.arr_pre = ""; - outputformat.arr_suf = ""; - outputformat.arr_sep = " "; - - if (!label_g) { - outputformat.cmpd_pre = ""; - outputformat.cmpd_suf = ""; - } - outputformat.cmpd_sep = " "; - - if (label_g) outputformat.cmpd_name = "%s="; - - outputformat.elmt_suf1 = " "; - outputformat.str_locale = ESCAPE_HTML; - - } - else { - if (no_line_wrap_g) { - outputformat.line_per_line = 1; - } - else { - outputformat.line_ncols = (unsigned)width_g; - } - if (label_g) outputformat.cmpd_name = "%s="; - outputformat.line_pre = " %s "; - outputformat.line_cont = " %s "; - outputformat.str_repeat = 8; - - outputformat.arr_pre = NULL; - outputformat.arr_suf = NULL; - outputformat.arr_sep = NULL; - - outputformat.cmpd_pre = NULL; - outputformat.cmpd_suf = NULL; - outputformat.cmpd_sep = NULL; - - outputformat.vlen_sep = NULL; - outputformat.vlen_pre = NULL; - outputformat.vlen_suf = NULL; - outputformat.vlen_end = NULL; - } - outputformat.arr_linebreak = 0; - /* Floating point types should display full precision */ - HDsnprintf(fmt_float, sizeof(fmt_float), "%%1.%dg", FLT_DIG); - outputformat.fmt_float = fmt_float; - HDsnprintf(fmt_double, sizeof(fmt_double), "%%1.%dg", DBL_DIG); - outputformat.fmt_double = fmt_double; - - if (hexdump_g) { - /* Print all data in hexadecimal format if the `-x' or `--hexdump' - * command line switch was given. */ - outputformat.raw = TRUE; - } - else if (string_g && 1==size && H5T_INTEGER==H5Tget_class(f_type)) { - /* Print 1-byte integer data as an ASCI character string instead of - * integers if the `-s' or `--string' command-line option was given. */ - outputformat.ascii = TRUE; - outputformat.elmt_suf1 = ""; - outputformat.elmt_suf2 = ""; - HDsnprintf(string_prefix, sizeof(string_prefix), "%s\"", outputformat.line_pre); - outputformat.line_pre = string_prefix; - outputformat.line_suf = "\""; - } - info = &outputformat; - - ctx.indent_level = 2; - ctx.cur_column = (size_t)curr_pos; - /* Print all the values. */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, " Data:\n"); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - ctx.need_prefix = TRUE; - ctx.cur_column = (size_t)curr_pos; - if (h5tools_dump_dset(rawoutstream, info, &ctx, dset, NULL) < 0) { - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, " Unable to print data."); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - } - - H5Tclose(f_type); - - h5tools_str_close(&buffer); - - PRINTVALSTREAM(rawoutstream, "\n"); -} - - -/*------------------------------------------------------------------------- - * Function: list_attr - * - * Purpose: Prints information about attributes. - * - * Return: Success: 0 - * - * Failure: -1 - * - * Programmer: Robb Matzke - * Friday, June 5, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static herr_t -list_attr(hid_t obj, const char *attr_name, const H5A_info_t H5_ATTR_UNUSED *ainfo, - void H5_ATTR_UNUSED *op_data) -{ - hid_t attr = -1; - hid_t space = -1; - hid_t type = -1; - hid_t p_type = -1; - hsize_t size[H5S_MAX_RANK]; - hsize_t nelmts = 1; - hsize_t temp_need; - size_t need; - int ndims; - int i; - void *buf; - H5S_class_t space_type; - hsize_t curr_pos = 0; /* total data element position */ - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *info = &ls_dataformat; - h5tool_format_t outputformat; - - HDmemset(&ctx, 0, sizeof(ctx)); - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, " Attribute: "); - - print_string(&buffer, attr_name, TRUE); - - if((attr = H5Aopen(obj, attr_name, H5P_DEFAULT))) { - space = H5Aget_space(attr); - type = H5Aget_type(attr); - - /* Data space */ - ndims = H5Sget_simple_extent_dims(space, size, NULL); - space_type = H5Sget_simple_extent_type(space); - switch(space_type) { - case H5S_SCALAR: - /* scalar dataspace */ - h5tools_str_append(&buffer, " scalar\n"); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - break; - - case H5S_SIMPLE: - /* simple dataspace */ - h5tools_str_append(&buffer, " {"); - for (i=0; iline_ncols, (hsize_t)0, (hsize_t)0); - break; - - case H5S_NULL: - /* null dataspace */ - h5tools_str_append(&buffer, " null\n"); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - break; - - case H5S_NO_CLASS: - default: - /* Unknown dataspace type */ - h5tools_str_append(&buffer, " unknown\n"); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - break; - } /* end switch */ - - /* Data type */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, " Type: "); - print_type(&buffer, type, 15); - h5tools_str_append(&buffer, "\n"); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - - /* Data */ - outputformat = *info; - - if(nelmts < 5) { - outputformat.idx_fmt = ""; - outputformat.line_1st = " Data: "; - outputformat.line_pre = " "; - outputformat.line_cont = " "; - outputformat.str_repeat = 8; - - } - else { - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, " Data:\n"); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - outputformat.line_1st = NULL; - outputformat.line_pre = " %s "; - outputformat.line_cont = " %s "; - outputformat.str_repeat = 8; - } - - outputformat.line_ncols = (unsigned)width_g; - if(label_g) - outputformat.cmpd_name = "%s="; - if(string_g && 1==H5Tget_size(type) && - H5T_INTEGER==H5Tget_class(type)) { - outputformat.ascii = TRUE; - outputformat.elmt_suf1 = ""; - outputformat.elmt_suf2 = ""; - outputformat.line_pre = " %s \""; - outputformat.line_suf = "\""; - } /* end if */ - - - outputformat.arr_pre = NULL; - outputformat.arr_suf = NULL; - outputformat.arr_sep = NULL; - - outputformat.cmpd_pre = NULL; - outputformat.cmpd_suf = NULL; - outputformat.cmpd_sep = NULL; - - outputformat.vlen_sep = NULL; - outputformat.vlen_pre = NULL; - outputformat.vlen_suf = NULL; - outputformat.vlen_end = NULL; - - info = &outputformat; - - if(hexdump_g) - p_type = H5Tcopy(type); - else - p_type = h5tools_get_native_type(type); - - if(p_type >= 0) { - /* VL data special information */ - unsigned int vl_data = 0; /* contains VL datatypes */ - - /* Check if we have VL data in the dataset's datatype */ - if (h5tools_detect_vlen(p_type) == TRUE) - vl_data = TRUE; - - temp_need= nelmts * MAX(H5Tget_size(type), H5Tget_size(p_type)); - HDassert(temp_need == (hsize_t)((size_t)temp_need)); - need = (size_t)temp_need; - buf = HDmalloc(need); - HDassert(buf); - if(H5Aread(attr, p_type, buf) >= 0) { - ctx.need_prefix = TRUE; - ctx.indent_level = 2; - ctx.cur_column = (size_t)curr_pos; - h5tools_dump_mem(rawoutstream, info, &ctx, attr, p_type, space, buf); - } - - /* Reclaim any VL memory, if necessary */ - if (vl_data) - H5Dvlen_reclaim(p_type, space, H5P_DEFAULT, buf); - - HDfree(buf); - H5Tclose(p_type); - } /* end if */ - - H5Sclose(space); - H5Tclose(type); - H5Aclose(attr); - } - h5tools_str_close(&buffer); - - PRINTVALSTREAM(rawoutstream, "\n"); - - return 0; -} - - -/*------------------------------------------------------------------------- - * Function: dataset_list1 - * - * Purpose: List information about a dataset which should appear on the - * same line as the dataset name. This information will precede - * information which is applicable to all objects which will be - * printed by the caller. - * - * Return: Success: 0 - * - * Failure: -1 - * - * Programmer: Robb Matzke - * Thursday, August 27, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static herr_t -dataset_list1(hid_t dset) -{ - hsize_t cur_size[H5S_MAX_RANK]; /* current dataset dimensions */ - hsize_t max_size[H5S_MAX_RANK]; /* maximum dataset dimensions */ - hid_t space; /* data space */ - int ndims; /* dimensionality */ - H5S_class_t space_type; /* type of dataspace */ - int i; - hsize_t curr_pos = 0; /* total data element position */ - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *info = &ls_dataformat; - - HDmemset(&ctx, 0, sizeof(ctx)); - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - h5tools_str_reset(&buffer); - - /* Information that goes on the same row as the name. The name has - * already been printed. */ - space = H5Dget_space(dset); - space_type = H5Sget_simple_extent_type(space); - ndims = H5Sget_simple_extent_dims(space, cur_size, max_size); - h5tools_str_append(&buffer, " {"); - for (i=0; i0) { - h5tools_str_append(&buffer, "/"HSIZE_T_FORMAT, max_size[i]); - } - } - if (space_type==H5S_SCALAR) h5tools_str_append(&buffer, "SCALAR"); - else if (space_type==H5S_NULL) h5tools_str_append(&buffer, "NULL"); - h5tools_str_append(&buffer, "}"); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - H5Sclose (space); - - h5tools_str_close(&buffer); - - return 0; -} - - -/*------------------------------------------------------------------------- - * Function: dataset_list2 - * - * Purpose: List information about a dataset which should appear after - * information which is general to all objects. - * - * Return: Success: 0 - * - * Failure: -1 - * - * Programmer: Robb Matzke - * Thursday, August 27, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static herr_t -dataset_list2(hid_t dset, const char H5_ATTR_UNUSED *name) -{ - hid_t dcpl; /* dataset creation property list */ - hid_t type; /* data type of dataset */ - hid_t space; /* data space of dataset */ - int nf; /* number of filters */ - unsigned filt_flags; /* filter flags */ - H5Z_filter_t filt_id; /* filter identification number */ - unsigned cd_values[20]; /* filter client data values */ - size_t cd_nelmts; /* filter client number of values */ - size_t cd_num; /* filter client data counter */ - char f_name[256]; /* filter/file name */ - char s[64]; /* temporary string buffer */ - off_t f_offset; /* offset in external file */ - hsize_t f_size; /* bytes used in external file */ - hsize_t total, used; /* total size or offset */ - int ndims; /* dimensionality */ - int n, max_len; /* max extern file name length */ - double utilization; /* percent utilization of storage */ - H5T_class_t tclass; /* datatype class identifier */ - int i; - H5D_layout_t stl; - hsize_t curr_pos = 0; /* total data element position */ - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *info = &ls_dataformat; - - HDmemset(&ctx, 0, sizeof(ctx)); - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - h5tools_str_reset(&buffer); - - if(verbose_g > 0) { - dcpl = H5Dget_create_plist(dset); - space = H5Dget_space(dset); - type = H5Dget_type(dset); - - stl = H5Pget_layout(dcpl); - switch (stl) { - case H5D_CHUNKED: - { - hsize_t chsize[64]; /* chunk size in elements */ - - ndims = H5Pget_chunk(dcpl, (int)NELMTS(chsize), chsize/*out*/); - h5tools_str_append(&buffer, " %-10s {", "Chunks:"); - total = H5Tget_size(type); - for (i=0; i 0) { - for(i = 0, max_len = 0; i < nf; i++) { - if(H5Pget_external(dcpl, (unsigned)i, sizeof(f_name), f_name, NULL, NULL) < 0) - continue; - n = print_string(NULL, f_name, TRUE); - max_len = MAX(max_len, n); - } /* end for */ - h5tools_str_append(&buffer, " %-10s %d external file%s\n", - "Extern:", nf, 1==nf?"":"s"); - h5tools_str_append(&buffer, " %4s %10s %10s %10s %s\n", - "ID", "DSet-Addr", "File-Addr", "Bytes", "File"); - h5tools_str_append(&buffer, " %4s %10s %10s %10s ", - "----", "----------", "----------", "----------"); - for (i=0; i0) - { - utilization = ((double)total * (double)100.0f) / (double)used; - h5tools_str_append(&buffer, ", %1.2f%% utilization", utilization); - } - } - - h5tools_str_append(&buffer, "\n"); - - /* Print information about raw data filters */ - if((nf = H5Pget_nfilters(dcpl)) > 0) { - for(i = 0; i < nf; i++) { - cd_nelmts = NELMTS(cd_values); - filt_id = H5Pget_filter2(dcpl, (unsigned)i, &filt_flags, &cd_nelmts, - cd_values, sizeof(f_name), f_name, NULL); - f_name[sizeof(f_name) - 1] = '\0'; - HDsnprintf(s, sizeof(s), "Filter-%d:", i); - h5tools_str_append(&buffer, " %-10s %s-%u %s {", s, - (f_name[0] ? f_name : "method"), - (unsigned)filt_id, - ((filt_flags & H5Z_FLAG_OPTIONAL) ? "OPT" : "")); - for(cd_num = 0; cd_num < cd_nelmts; cd_num++) - h5tools_str_append(&buffer, "%s%u", (cd_num ? ", " : ""), cd_values[cd_num]); - h5tools_str_append(&buffer, "}\n"); - } /* end for */ - } /* end if */ - - /* Print data type */ - h5tools_str_append(&buffer, " %-10s ", "Type:"); - print_type(&buffer, type, 15); - h5tools_str_append(&buffer, "\n"); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - - /* Print address information */ - if(address_g) - H5Ddebug(dset); - - /* Close stuff */ - H5Tclose(type); - H5Sclose(space); - H5Pclose(dcpl); - } /* end if */ - - h5tools_str_close(&buffer); - - if(data_g) - dump_dataset_values(dset); - - return 0; -} /* end dataset_list2() */ - - -/*------------------------------------------------------------------------- - * Function: datatype_list2 - * - * Purpose: List information about a datatype which should appear after - * information which is general to all objects. - * - * Return: Success: 0 - * - * Failure: -1 - * - * Programmer: Robb Matzke - * Thursday, November 5, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static herr_t -datatype_list2(hid_t type, const char H5_ATTR_UNUSED *name) -{ - if (verbose_g>0) { - hsize_t curr_pos = 0; /* total data element position */ - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *info = &ls_dataformat; - - HDmemset(&ctx, 0, sizeof(ctx)); - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - h5tools_str_reset(&buffer); - - h5tools_str_append(&buffer, " %-10s ", "Type:"); - print_type(&buffer, type, 15); - h5tools_str_append(&buffer, "\n"); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - - h5tools_str_close(&buffer); - } - return 0; -} - - -/*------------------------------------------------------------------------- - * Function: list_obj - * - * Purpose: Prints information about an object - * - * Return: Success: 0 - * - * Failure: -1 - * - * Programmer: Quincey Koziol - * Tuesday, November 6, 2007 - * - *------------------------------------------------------------------------- - */ -static herr_t -list_obj(const char *name, const H5O_info_t *oinfo, const char *first_seen, void *_iter) -{ - H5O_type_t obj_type = oinfo->type; /* Type of the object */ - iter_t *iter = (iter_t*)_iter; - hsize_t curr_pos = 0; /* total data element position */ - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *info = &ls_dataformat; - - HDmemset(&ctx, 0, sizeof(ctx)); - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - h5tools_str_reset(&buffer); - - /* Print the link's name, either full name or base name */ - if(!iter->symlink_target) - print_obj_name(&buffer, iter, name, ""); - - /* Check object information */ - if(oinfo->type < 0 || oinfo->type >= H5O_TYPE_NTYPES) { - h5tools_str_append(&buffer, "Unknown type(%d)", (int)oinfo->type); - obj_type = H5O_TYPE_UNKNOWN; - } - if(iter->symlink_target) - h5tools_str_append(&buffer, "{"); - if(obj_type >= 0 && dispatch_g[obj_type].name) - h5tools_str_append(&buffer, "%s", dispatch_g[obj_type].name); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - - /* Check if we've seen this object before */ - if(first_seen) { - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, ", same as "); - print_string(&buffer, first_seen, TRUE); - if(!iter->symlink_target) { - h5tools_str_append(&buffer, "\n"); - } - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - } /* end if */ - else { - hid_t obj = (-1); /* ID of object opened */ - - /* Open the object. Not all objects can be opened. If this is the case - * then return right away. - */ - if(obj_type >= 0 && (obj = H5Oopen(iter->fid, name, H5P_DEFAULT)) < 0) { - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, " *ERROR*\n"); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - goto done; - } /* end if */ - - /* List the first line of information for the object. */ - if(obj_type >= 0 && dispatch_g[obj_type].list1) - (dispatch_g[obj_type].list1)(obj); - if(!iter->symlink_target || (verbose_g > 0)) { - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "\n"); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - } - - /* Show detailed information about the object, beginning with information - * which is common to all objects. */ - if(verbose_g > 0) { - size_t buf_size = 0; - char* comment = NULL; - ssize_t cmt_bufsize = -1; - - /* Display attributes */ - if(obj_type >= 0) - H5Aiterate2(obj, H5_INDEX_NAME, H5_ITER_INC, NULL, list_attr, NULL); - - /* Object location & reference count */ - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, " %-10s %lu:"H5_PRINTF_HADDR_FMT"\n", "Location:", oinfo->fileno, oinfo->addr); - h5tools_str_append(&buffer, " %-10s %u\n", "Links:", (unsigned)oinfo->rc); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - - /* Modification time */ - if(oinfo->mtime > 0) { - char buf[256]; - struct tm *tm; - - if(simple_output_g) - tm = HDgmtime(&(oinfo->mtime)); - else - tm = HDlocaltime(&(oinfo->mtime)); - if(tm) { - HDstrftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S %Z", tm); - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, " %-10s %s\n", "Modified:", buf); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - } /* end if */ - } /* end if */ - - /* Object comment */ - cmt_bufsize = H5Oget_comment(obj, comment, buf_size); - - /* if the actual length of the comment is longer than cmt_bufsize, then call - * H5Oget_comment again with the correct value. - * If the call to H5Oget_comment returned an error, skip this block */ - if (cmt_bufsize > 0) { - comment = (char *)HDmalloc((size_t)cmt_bufsize + 1); /* new_size including null terminator */ - if(comment) { - cmt_bufsize = H5Oget_comment(obj, comment, (size_t)cmt_bufsize); - if(cmt_bufsize > 0) { - comment[cmt_bufsize] = 0; - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, " %-10s \"", "Comment:"); - print_string(&buffer, comment, FALSE); - h5tools_str_append(&buffer, "\"\n"); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - } /* end if */ - HDfree(comment); - } - } - } /* end if */ - - /* Detailed list for object */ - if(obj_type >= 0 && dispatch_g[obj_type].list2) - (dispatch_g[obj_type].list2)(obj, name); - - /* Close the object. */ - if(obj_type >= 0) - H5Oclose(obj); - } /* end else */ - -done: - if(iter->symlink_target) { - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "}\n"); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - iter->symlink_target = FALSE; - } - h5tools_str_close(&buffer); - - return 0; -} /* end list_obj() */ - - - -/*------------------------------------------------------------------------- - * Function: list_lnk - * - * Purpose: Prints information about a link - * - * Return: Success: 0 - * - * Failure: -1 - * - * Programmer: Quincey Koziol - * Thursday, November 8, 2007 - * - *------------------------------------------------------------------------- - */ -static herr_t -list_lnk(const char *name, const H5L_info_t *linfo, void *_iter) -{ - char *buf=NULL; - iter_t *iter = (iter_t*)_iter; - int ret; - hsize_t curr_pos = 0; /* total data element position */ - h5tool_link_info_t lnk_info; - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *info = &ls_dataformat; - - HDmemset(&ctx, 0, sizeof(ctx)); - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - h5tools_str_reset(&buffer); - - /* init linkinfo struct */ - HDmemset(&lnk_info, 0, sizeof(h5tool_link_info_t)); - - /* if verbose, make H5tools_get_symlink_info() display more */ - if (verbose_g) - lnk_info.opt.msg_mode=1; - - /* Print the link's name, either full name or base name */ - print_obj_name(&buffer, iter, name, ""); - - switch(linfo->type) { - case H5L_TYPE_SOFT: - ret = H5tools_get_symlink_info(iter->fid, name, &lnk_info, follow_symlink_g); - /* lnk_info.trg_path is malloced in H5tools_get_symlink_info() - * so it will be freed via buf later */ - buf = (char*)lnk_info.trg_path; - /* error */ - if (ret < 0) - goto done; - /* no dangling link option given and detect dangling link */ - else if (no_dangling_link_g && ret == 0) - iter->symlink_list->dangle_link = TRUE; - - h5tools_str_append(&buffer, "Soft Link {"); - h5tools_str_append(&buffer, buf); - h5tools_str_append(&buffer, "}"); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - if(follow_symlink_g) - { - hbool_t orig_grp_literal = grp_literal_g; - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, " "); - - /* Check if we have already seen this softlink */ - if(symlink_is_visited(iter->symlink_list, linfo->type, NULL, buf)) - { - h5tools_str_append(&buffer, "{Already Visited}\n"); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - goto done; - } - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - - /* Add this link to the list of seen softlinks */ - if(symlink_visit_add(iter->symlink_list, linfo->type, NULL, buf) < 0) - goto done; - - /* Adjust user data to specify that we are operating on the - * target of an soft link */ - iter->symlink_target = TRUE; - - /* Prevent recursive listing of soft link target if - * recursive_g is off */ - if(!recursive_g) - grp_literal_g = TRUE; - /* Recurse through the soft link */ - if(visit_obj(iter->fid, name, iter) < 0) - { - grp_literal_g = orig_grp_literal; - goto done; - } - - grp_literal_g = orig_grp_literal; - } - else { - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, "\n"); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - } - - break; - - case H5L_TYPE_EXTERNAL: - { - const char *filename; - const char *path; - hbool_t follow_link = follow_symlink_g || follow_elink_g; - - ret = H5tools_get_symlink_info(iter->fid, name, &lnk_info, follow_link); - /* lnk_info.trg_path is malloced in H5tools_get_symlink_info() - * so it will be freed via buf later */ - buf = (char*)lnk_info.trg_path; - /* error */ - if (ret < 0) - goto done; - /* no dangling link option given and detect dangling link */ - else if (no_dangling_link_g && ret == 0) - iter->symlink_list->dangle_link = TRUE; - - if(H5Lunpack_elink_val(buf, linfo->u.val_size, NULL, &filename, &path) < 0) - goto done; - - h5tools_str_append(&buffer, "External Link {"); - h5tools_str_append(&buffer, filename); - h5tools_str_append(&buffer, "/"); - if(*path != '/') - h5tools_str_append(&buffer, "/"); - h5tools_str_append(&buffer, path); - h5tools_str_append(&buffer, "}"); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - - /* Recurse through the external link */ - /* keep the follow_elink_g for backward compatibility with -E */ - if(follow_link) - { - hbool_t orig_grp_literal = grp_literal_g; - h5tools_str_reset(&buffer); - h5tools_str_append(&buffer, " "); - - /* Check if we have already seen this elink */ - if(symlink_is_visited(iter->symlink_list, linfo->type, filename, path)) - { - h5tools_str_append(&buffer, "{Already Visited}\n"); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - goto done; - } - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - - /* Add this link to the list of seen elinks */ - if(symlink_visit_add(iter->symlink_list, linfo->type, filename, path) < 0) - { - goto done; - } - - /* Adjust user data to specify that we are operating on the - * target of an external link */ - iter->symlink_target = TRUE; - - /* Prevent recursive listing of external link target if - * recursive_g is off */ - if(!recursive_g) - grp_literal_g = TRUE; - - /* Recurse through the external link */ - if(visit_obj(iter->fid, name, iter) < 0) { - grp_literal_g = orig_grp_literal; - goto done; - } - - grp_literal_g = orig_grp_literal; - } - else - PRINTVALSTREAM(rawoutstream, "\n"); - } - break; - - case H5L_TYPE_ERROR: - case H5L_TYPE_HARD: - case H5L_TYPE_MAX: - default: - h5tools_str_append(&buffer, "UD Link {cannot follow UD links}\n"); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - break; - } /* end switch */ - -done: - h5tools_str_close(&buffer); - - if (buf) - HDfree(buf); - return 0; -} /* end list_lnk() */ - - -/*------------------------------------------------------------------------- - * Function: visit_obj - * - * Purpose: Begins iteration on an object - * - * Return: - * Success: 0 - * Failure: -1 - * - * Programmer: Neil Fortner - * Wednesday, August 21, 2008 - * Mostly copied from main() - * - *------------------------------------------------------------------------- - */ -static herr_t -visit_obj(hid_t file, const char *oname, iter_t *iter) -{ - int retval = 0; - H5O_info_t oi; /* Information for object */ - hsize_t curr_pos = 0; /* total data element position */ - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *info = &ls_dataformat; - - HDmemset(&ctx, 0, sizeof(ctx)); - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - h5tools_str_reset(&buffer); - - /* Retrieve info for object to list */ - if(H5Oget_info_by_name(file, oname, &oi, H5P_DEFAULT) < 0) { - if(iter->symlink_target) { - h5tools_str_append(&buffer, "{**NOT FOUND**}\n"); - iter->symlink_target = FALSE; - } - else - print_obj_name(&buffer, iter, oname, "**NOT FOUND**"); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - retval = -1; - goto done; - } /* end if */ - - /* Check for group iteration */ - if(H5O_TYPE_GROUP == oi.type && !grp_literal_g) { - /* Get ID for group */ - if(!iter->symlink_target && (iter->gid = H5Gopen2(file, oname, H5P_DEFAULT)) < 0) { - h5tools_str_append(&buffer, "%s: unable to open '%s' as group\n", iter->fname, oname); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - goto done; /* Previously "continue", when this code was in main(). - * We don't "continue" here in order to close the file - * and free the file name properly. */ - } /* end if */ - - /* Delay specifying the name start point so the original object name is - * displayed if it is a link or non-group object */ - iter->name_start = iter->base_len; - - /* Specified name is a group. List the complete contents of the group. */ - h5trav_visit(file, oname, (hbool_t) (display_root_g || iter->symlink_target), recursive_g, list_obj, list_lnk, iter); - - /* Close group */ - if(!iter->symlink_target) - H5Gclose(iter->gid); - } /* end if */ - else { - /* Use file ID for root group ID */ - iter->gid = file; - - /* Specified name is a non-group object -- list that object */ - list_obj(oname, &oi, NULL, iter); - } /* end else */ - -done: - h5tools_str_close(&buffer); - - return retval; -} - - -/*------------------------------------------------------------------------- - * Function: get_width - * - * Purpose: Figure out how wide the screen is. This is highly - * unportable, but the user can always override the width we - * detect by giving a command-line option. These code snippets - * were borrowed from the GNU less(1). - * - * Return: Success: Number of columns. - * - * Failure: Some default number of columms. - * - * Programmer: Robb Matzke - * Friday, November 6, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static int -get_width(void) -{ - int width = 80; /*the default */ - char *s; - - /* Try to get it from the COLUMNS environment variable first since it's - * value is sometimes wrong. */ - if ((s=HDgetenv("COLUMNS")) && *s && isdigit((int)*s)) - width = (int)HDstrtol(s, NULL, 0); - -#if defined(H5_HAVE_STRUCT_VIDEOCONFIG) && defined(H5_HAVE__GETVIDEOCONFIG) - { - /* Microsoft C */ - struct videoconfig w; - _getvideoconfig(&w); - width = w.numtextcols; - } -#elif defined(H5_HAVE_STRUCT_TEXT_INFO) && defined(H5_HAVE_GETTEXTINFO) - { - /* Borland C or DJGPPC */ - struct text_info w; - gettextinfo(&w); - width = w.screenwidth; - } -#elif defined(H5_HAVE_GETCONSOLESCREENBUFFERINFO) - { - /* Win32 C */ - CONSOLE_SCREEN_BUFFER_INFO scr; - GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &scr); - width = scr.srWindow.Right - scr.srWindow.Left + 1; - } -#elif defined(H5_HAVE__SCRSIZE) - { - /* OS/2 */ - int w[2]; - _scrsize(w); - width = w[0]; - } -#elif defined(H5_HAVE_TIOCGWINSZ) && defined(H5_HAVE_IOCTL) - { - /* Unix with ioctl(TIOCGWINSZ) */ - struct winsize w; - if (ioctl(2, (int)TIOCGWINSZ, &w)>=0 && w.ws_col>0) - width = w.ws_col; - } -#elif defined(H5_HAVE_TIOCGETD) && defined(H5_HAVE_IOCTL) - { - /* Unix with ioctl(TIOCGETD) */ - struct uwdata w; - if (ioctl(2, WIOCGETD, &w)>=0 && w.uw_width>0) - width = w.uw_width / w.uw_hs; - } -#endif - - /* Set to at least 1 */ - if (width<1) width = 1; - return width; -} - -/*------------------------------------------------------------------------- - * Function: is_valid_args - * - * Purpose: check if command line arguments are valid - * - * Return: - * Success: TRUE (1) - * Failure: FALSE (0) - * - * Programmer: - * Jonathan Kim (06/15/2010) - * - *-------------------------------------------------------------------------*/ -static hbool_t -is_valid_args(void) -{ - hbool_t ret = TRUE; - - if(recursive_g && grp_literal_g) - { - HDfprintf(rawerrorstream, "Error: 'recursive' option not compatible with 'group info' option!\n\n"); - ret = FALSE; - goto out; - } - - if(no_dangling_link_g && !follow_symlink_g) - { - HDfprintf(rawerrorstream, "Error: --no-dangling-links must be used along with --follow-symlinks option!\n\n"); - ret = FALSE; - goto out; - } - -out: - return ret; -} - - -/*------------------------------------------------------------------------- - * Function: leave - * - * Purpose: Close HDF5 and MPI and call exit() - * - * Return: Does not return - * - * Programmer: Quincey Koziol - * Saturday, January 31, 2004 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -leave(int ret) -{ - h5tools_close(); - - HDexit(ret); -} - - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: Opens a file and lists the specified group - * - * Return: Success: 0 - * - * Failure: 1 - * - * Programmer: Robb Matzke - * Monday, March 23, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -int -main(int argc, const char *argv[]) -{ - hid_t file = -1; - char *fname = NULL, *oname = NULL, *x; - const char *s = NULL; - char *rest; - int argno; - static char root_name[] = "/"; - char drivername[50]; - const char *preferred_driver = NULL; - int err_exit = 0; - - h5tools_setprogname(PROGRAMNAME); - h5tools_setstatus(EXIT_SUCCESS); - - /* Initialize h5tools lib */ - h5tools_init(); - - /* Build object display table */ - DISPATCH(H5O_TYPE_GROUP, "Group", NULL, NULL); - DISPATCH(H5O_TYPE_DATASET, "Dataset", dataset_list1, dataset_list2); - DISPATCH(H5O_TYPE_NAMED_DATATYPE, "Type", NULL, datatype_list2); - - /* Default output width */ - width_g = get_width(); - - /* Switches come before non-switch arguments */ - for(argno = 1; argno < argc && '-' == argv[argno][0]; argno++) { - if(!HDstrcmp(argv[argno], "--")) { - /* Last switch */ - argno++; - break; - } else if(!HDstrcmp(argv[argno], "--help")) { - usage(); - leave(EXIT_SUCCESS); - } else if(!HDstrcmp(argv[argno], "--address")) { - address_g = TRUE; - } else if(!HDstrcmp(argv[argno], "--data")) { - data_g = TRUE; - } else if(!HDstrcmp(argv[argno], "--enable-error-stack")) { - show_errors_g = TRUE; - /* deprecated --errors */ - } else if(!HDstrcmp(argv[argno], "--errors")) { - show_errors_g = TRUE; - } else if(!HDstrcmp(argv[argno], "--follow-symlinks")) { - follow_symlink_g = TRUE; - } else if(!HDstrcmp(argv[argno], "--no-dangling-links")) { - no_dangling_link_g = TRUE; - } else if(!HDstrcmp(argv[argno], "--external")) { - follow_elink_g = TRUE; - } else if(!HDstrcmp(argv[argno], "--full")) { - fullname_g = TRUE; - } else if(!HDstrcmp(argv[argno], "--group")) { - grp_literal_g = TRUE; - } else if(!HDstrcmp(argv[argno], "--label")) { - label_g = TRUE; - } else if(!HDstrcmp(argv[argno], "--recursive")) { - recursive_g = TRUE; - fullname_g = TRUE; - } else if(!HDstrcmp(argv[argno], "--simple")) { - simple_output_g = TRUE; - } else if(!HDstrcmp(argv[argno], "--string")) { - string_g = TRUE; - } else if(!HDstrncmp(argv[argno], "--vfd=", (size_t)6)) { - preferred_driver = argv[argno]+6; - } else if(!HDstrncmp(argv[argno], "--width=", (size_t)8)) { - width_g = (int)HDstrtol(argv[argno]+8, &rest, 0); - - if(0 == width_g) - no_line_wrap_g = TRUE; - else if(width_g < 0 || *rest) { - usage(); - leave(EXIT_FAILURE); - } - } else if(!HDstrcmp(argv[argno], "--width")) { - if((argno + 1) >= argc) { - usage(); - leave(EXIT_FAILURE); - } else { - s = argv[++argno]; - } - width_g = (int)HDstrtol(s, &rest, 0); - if(width_g <= 0 || *rest) { - usage(); - leave(EXIT_FAILURE); - } - } else if(!HDstrcmp(argv[argno], "--verbose")) { - verbose_g++; - } else if(!HDstrcmp(argv[argno], "--version")) { - print_version(h5tools_getprogname()); - leave(EXIT_SUCCESS); - } else if(!HDstrcmp(argv[argno], "--hexdump")) { - hexdump_g = TRUE; - } else if(!HDstrncmp(argv[argno], "-w", (size_t)2)) { - if(argv[argno][2]) { - s = argv[argno] + 2; - } else if((argno + 1) >= argc) { - usage(); - leave(EXIT_FAILURE); - } else { - s = argv[++argno]; - } - width_g = (int)HDstrtol(s, &rest, 0); - - if(0 == width_g) - no_line_wrap_g = TRUE; - else if(width_g < 0 || *rest) { - usage(); - leave(EXIT_FAILURE); - } - } else if('-'!=argv[argno][1]) { - /* Single-letter switches */ - for(s = argv[argno] + 1; *s; s++) { - switch(*s) { - case '?': - case 'h': /* --help */ - usage(); - leave(EXIT_SUCCESS); - - case 'a': /* --address */ - address_g = TRUE; - break; - - case 'd': /* --data */ - data_g = TRUE; - break; - - /* deprecated -e */ - case 'e': /* --errors */ - show_errors_g = TRUE; - break; - - case 'E': /* --external */ - follow_elink_g = TRUE; - break; - - case 'f': /* --full */ - fullname_g = TRUE; - break; - - case 'g': /* --group */ - grp_literal_g = TRUE; - break; - - case 'l': /* --label */ - label_g = TRUE; - break; - - case 'r': /* --recursive */ - recursive_g = TRUE; - fullname_g = TRUE; - break; - - case 'S': /* --simple */ - simple_output_g = TRUE; - break; - - case 's': /* --string */ - string_g = TRUE; - break; - - case 'v': /* --verbose */ - verbose_g++; - break; - - case 'V': /* --version */ - print_version(h5tools_getprogname()); - leave(EXIT_SUCCESS); - - case 'x': /* --hexdump */ - hexdump_g = TRUE; - break; - - default: - usage(); - leave(EXIT_FAILURE); - } /* end switch */ - } /* end for */ - } else { - usage(); - leave(EXIT_FAILURE); - } - } /* end for */ - - /* If no arguments remain then print a usage message (instead of doing - * absolutely nothing ;-) */ - if(argno >= argc) { - usage(); - leave(EXIT_FAILURE); - } /* end if */ - - /* Check for conflicting arguments */ - if (!is_valid_args()) - { - usage(); - leave(EXIT_FAILURE); - } - - /* Turn off HDF5's automatic error printing unless you're debugging h5ls */ - if(!show_errors_g) - H5Eset_auto2(H5E_DEFAULT, NULL, NULL); - - - /* Each remaining argument is an hdf5 file followed by an optional slash - * and object name. - * - * Example: ../dir1/foo/bar/baz - * \_________/\______/ - * file obj - * - * The dichotomy is determined by calling H5Fopen() repeatedly until it - * succeeds. The first call uses the entire name and each subsequent call - * chops off the last component. If we reach the beginning of the name - * then there must have been something wrong with the file (perhaps it - * doesn't exist). */ - show_file_name_g = (argc-argno > 1); /*show file names if more than one*/ - while(argno < argc) { - H5L_info_t li; - iter_t iter; - symlink_trav_t symlink_list; - size_t u; - - fname = HDstrdup(argv[argno++]); - oname = NULL; - file = -1; - - while(fname && *fname) { - file = h5tools_fopen(fname, H5F_ACC_RDONLY, H5P_DEFAULT, preferred_driver, drivername, sizeof drivername); - - if(file >= 0) { - if(verbose_g) - PRINTSTREAM(rawoutstream, "Opened \"%s\" with %s driver.\n", fname, drivername); - break; /*success*/ - } /* end if */ - - /* Shorten the file name; lengthen the object name */ - x = oname; - oname = HDstrrchr(fname, '/'); - if(x) - *x = '/'; - if(!oname) - break; - *oname = '\0'; - } /* end while */ - - if(file < 0) { - HDfprintf(rawerrorstream, "%s: unable to open file\n", argv[argno-1]); - HDfree(fname); - err_exit = 1; - continue; - } /* end if */ - if(oname) { - /* Always use absolute paths to avoid confusion, keep track of where - * to begin path name output */ - *oname = '/'; - iter.base_len = HDstrlen(oname); - iter.base_len -= oname[iter.base_len-1] == '/'; - x = oname; - if(NULL == (oname = HDstrdup(oname))) { - HDfprintf(rawerrorstream, "memory allocation failed\n"); - leave(EXIT_FAILURE); - } - *x = '\0'; - /* Delay specifying the name start point so the original object name - * is displayed if it is a link or non-group object */ - iter.name_start = 1; - } - if(!oname || !*oname) { - oname = root_name; - if(recursive_g) - display_root_g = TRUE; - iter.base_len = 0; - iter.name_start = 0; - /* Use x to remember if we have allocated space in oname */ - x = NULL; - } /* end if */ - - /* Remember the file information for later */ - iter.fname = fname; - iter.fid = file; - iter.gid = -1; - iter.symlink_target = FALSE; - iter.symlink_list = &symlink_list; - iter.symlink_list->dangle_link = FALSE; - - /* Initialize list of visited symbolic links */ - symlink_list.nused = symlink_list.nalloc = 0; - symlink_list.objs = NULL; - - /* Check for root group as object name */ - if(HDstrcmp(oname, root_name)) { - /* Check the type of link given */ - if(H5Lget_info(file, oname, &li, H5P_DEFAULT) < 0) { - hsize_t curr_pos = 0; /* total data element position */ - h5tools_str_t buffer; /* string into which to render */ - h5tools_context_t ctx; /* print context */ - h5tool_format_t *info = &ls_dataformat; - - HDmemset(&ctx, 0, sizeof(ctx)); - HDmemset(&buffer, 0, sizeof(h5tools_str_t)); - - h5tools_str_reset(&buffer); - print_obj_name(&buffer, &iter, oname, "**NOT FOUND**"); - h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, (size_t)info->line_ncols, (hsize_t)0, (hsize_t)0); - leave(EXIT_FAILURE); - } /* end if */ - } /* end if */ - else - li.type = H5L_TYPE_HARD; - - /* Open the object and display it's information */ - if(li.type == H5L_TYPE_HARD) { - if(visit_obj(file, oname, &iter) < 0) - leave(EXIT_FAILURE); - } /* end if(li.type == H5L_TYPE_HARD) */ - else { - /* Specified name is not for object -- list that link */ - /* Use file ID for root group ID */ - iter.gid = file; - list_lnk(oname, &li, &iter); - } - H5Fclose(file); - HDfree(fname); - if(x) - HDfree(oname); - - for(u=0; u < symlink_list.nused; u++) - { - if (symlink_list.objs[u].type == H5L_TYPE_EXTERNAL) - HDfree(symlink_list.objs[u].file); - - HDfree(symlink_list.objs[u].path); - } - HDfree(symlink_list.objs); - - /* if no-dangling-links option specified and dangling link found */ - if (no_dangling_link_g && iter.symlink_list->dangle_link) - err_exit = 1; - } /* end while */ - - if (err_exit) - leave(EXIT_FAILURE); - else - leave(EXIT_SUCCESS); -} /* end main() */ - diff --git a/tools/h5ls/testh5ls.sh.in b/tools/h5ls/testh5ls.sh.in deleted file mode 100644 index e72c875..0000000 --- a/tools/h5ls/testh5ls.sh.in +++ /dev/null @@ -1,436 +0,0 @@ -#! /bin/sh -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -# -# Tests for the h5ls tool - -srcdir=@srcdir@ - -TESTNAME=h5ls -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -H5LS=h5ls # The tool name -H5LS_BIN=`pwd`/$H5LS # The path of the tool binary - -RM='rm -rf' -CMP='cmp -s' -DIFF='diff -c' -CP='cp' -NLINES=20 # Max. lines of output to display if test fails -DIRNAME='dirname' -LS='ls' -AWK='awk' - -WORDS_BIGENDIAN="@WORDS_BIGENDIAN@" - -nerrors=0 -verbose=yes -h5haveexitcode=yes # default is yes - -# source dirs -SRC_TOOLS="$srcdir/.." -SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles" - -# testfiles source dirs for tools -SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles" -SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles" -SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles" -SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles" -SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles" -SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles" - -TESTDIR=./testfiles -test -d $TESTDIR || mkdir $TESTDIR - -###################################################################### -# test files -# -------------------------------------------------------------------- -# All the test files copy from source directory to test directory -# NOTE: Keep this framework to add/remove test files. -# Any test files from other tools can be used in this framework. -# This list are also used for checking exist. -# Comment '#' without space can be used. -# -------------------------------------------------------------------- -LIST_HDF5_TEST_FILES=" -$SRC_H5LS_TESTFILES/tall.h5 -$SRC_H5LS_TESTFILES/tarray1.h5 -$SRC_H5LS_TESTFILES/tattr2.h5 -$SRC_H5LS_TESTFILES/tattrreg.h5 -$SRC_H5LS_TESTFILES/tcompound.h5 -$SRC_H5LS_TESTFILES/tdatareg.h5 -$SRC_H5LS_TESTFILES/tdset.h5 -$SRC_H5LS_TESTFILES/tempty.h5 -$SRC_H5LS_TESTFILES/textlink.h5 -$SRC_H5LS_TESTFILES/textlinksrc.h5 -$SRC_H5LS_TESTFILES/textlinktar.h5 -$SRC_H5LS_TESTFILES/tgroup.h5 -$SRC_H5LS_TESTFILES/tgrp_comments.h5 -$SRC_H5LS_TESTFILES/thlink.h5 -$SRC_H5LS_TESTFILES/tloop.h5 -$SRC_H5LS_TESTFILES/tnestedcomp.h5 -$SRC_H5LS_TESTFILES/tsaf.h5 -$SRC_H5LS_TESTFILES/tslink.h5 -$SRC_H5LS_TESTFILES/tsoftlinks.h5 -$SRC_H5LS_TESTFILES/tstr.h5 -$SRC_H5LS_TESTFILES/tudlink.h5 -$SRC_H5LS_TESTFILES/tvldtypes1.h5 -$SRC_H5LS_TESTFILES/tdset_idx.h5 -" - -LIST_OTHER_TEST_FILES=" -$SRC_H5LS_TESTFILES/help-1.ls -$SRC_H5LS_TESTFILES/help-2.ls -$SRC_H5LS_TESTFILES/help-3.ls -$SRC_H5LS_TESTFILES/nosuchfile.ls -$SRC_H5LS_TESTFILES/tall-1.ls -$SRC_H5LS_TESTFILES/tall-2.ls -$SRC_H5LS_TESTFILES/tarray1.ls -$SRC_H5LS_TESTFILES/tattr2.ls -$SRC_H5LS_TESTFILES/tattrreg_le.ls -$SRC_H5LS_TESTFILES/tattrreg_be.ls -$SRC_H5LS_TESTFILES/tcomp-1.ls -$SRC_H5LS_TESTFILES/tdataregbe.ls -$SRC_H5LS_TESTFILES/tdataregle.ls -$SRC_H5LS_TESTFILES/tdset-1.ls -$SRC_H5LS_TESTFILES/tempty.ls -$SRC_H5LS_TESTFILES/textlink-1.ls -$SRC_H5LS_TESTFILES/textlinksrc-1.ls -$SRC_H5LS_TESTFILES/textlinksrc-2.ls -$SRC_H5LS_TESTFILES/textlinksrc-3.ls -$SRC_H5LS_TESTFILES/textlinksrc-4.ls -$SRC_H5LS_TESTFILES/textlinksrc-5.ls -$SRC_H5LS_TESTFILES/textlinksrc-6.ls -$SRC_H5LS_TESTFILES/textlinksrc-7.ls -$SRC_H5LS_TESTFILES/textlinksrc-1-old.ls -$SRC_H5LS_TESTFILES/textlinksrc-2-old.ls -$SRC_H5LS_TESTFILES/textlinksrc-3-old.ls -$SRC_H5LS_TESTFILES/textlinksrc-6-old.ls -$SRC_H5LS_TESTFILES/textlinksrc-7-old.ls -$SRC_H5LS_TESTFILES/tsoftlinks-1.ls -$SRC_H5LS_TESTFILES/tsoftlinks-2.ls -$SRC_H5LS_TESTFILES/tsoftlinks-3.ls -$SRC_H5LS_TESTFILES/tsoftlinks-4.ls -$SRC_H5LS_TESTFILES/tsoftlinks-5.ls -$SRC_H5LS_TESTFILES/textlinksrc-nodangle-1.ls -$SRC_H5LS_TESTFILES/textlinksrc-nodangle-2.ls -$SRC_H5LS_TESTFILES/tgrp_comments.ls -$SRC_H5LS_TESTFILES/tsoftlinks-nodangle-1.ls -$SRC_H5LS_TESTFILES/thlinks-nodangle-1.ls -$SRC_H5LS_TESTFILES/tgroup.ls -$SRC_H5LS_TESTFILES/tgroup-1.ls -$SRC_H5LS_TESTFILES/tgroup-2.ls -$SRC_H5LS_TESTFILES/tgroup-3.ls -$SRC_H5LS_TESTFILES/thlink-1.ls -$SRC_H5LS_TESTFILES/tloop-1.ls -$SRC_H5LS_TESTFILES/tmultifile.ls -$SRC_H5LS_TESTFILES/tnestcomp-1.ls -$SRC_H5LS_TESTFILES/tnestcomp-2.ls -$SRC_H5LS_TESTFILES/tnestcomp-3.ls -$SRC_H5LS_TESTFILES/tnestcomp-4.ls -$SRC_H5LS_TESTFILES/tsaf.ls -$SRC_H5LS_TESTFILES/tslink-1.ls -$SRC_H5LS_TESTFILES/tstr-1.ls -$SRC_H5LS_TESTFILES/tudlink-1.ls -$SRC_H5LS_TESTFILES/tvldtypes1.ls -$SRC_H5LS_TESTFILES/tvldtypes2le.ls -$SRC_H5LS_TESTFILES/tvldtypes2be.ls -$SRC_H5LS_TESTFILES/tdset_idx.ls -" - - -# RUNSERIAL is used. Check if it can return exit code from executalbe correctly. -if [ -n "$RUNSERIAL_NOEXITCODE" ]; then - echo "***Warning*** Serial Exit Code is not passed back to shell corretly." - echo "***Warning*** Exit code checking is skipped." - h5haveexitcode=no -fi - -# -# copy test files and expected output files from source dirs to test dir -# -COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES" - -COPY_TESTFILES_TO_TESTDIR() -{ - # copy test files. Used -f to make sure get a new copy - for tstfile in $COPY_TESTFILES - do - # ignore '#' comment - echo $tstfile | tr -d ' ' | grep '^#' > /dev/null - RET=$? - if [ $RET -eq 1 ]; then - # skip cp if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=`$DIRNAME $tstfile` - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $CP -f $tstfile $TESTDIR - if [ $? -ne 0 ]; then - echo "Error: FAILED to copy $tstfile ." - - # Comment out this to CREATE expected file - exit $EXIT_FAILURE - fi - fi - fi - done -} - -CLEAN_TESTFILES_AND_TESTDIR() -{ - # skip rm if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=$SRC_H5LS_TESTFILES - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $RM $TESTDIR - fi -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Testing". -TESTING() { - SPACES=" " - echo "Testing $* $SPACES" |cut -c1-70 |tr -d '\012' -} - -# Source in the output filter function definitions. -. $srcdir/../../bin/output_filter.sh - -# Run a test and print PASS or *FAIL*. For now, if h5ls can complete -# with exit status 0, consider it pass. If a test fails then increment -# the `nerrors' global variable and (if $verbose is set) display up to $NLINS -# lines of the actual output from the tool test. The actual output is not -# removed if $HDF5_NOCLEANUP has a non-zero value. -# Arguemnts: -# $1 -- actual output filename to use -# $2 and on -- argument for the h5ls tool -TOOLTEST() { - expect="$TESTDIR/$1" - actual="$TESTDIR/`basename $1 .ls`.out" - actual_err="$TESTDIR/`basename $1 .ls`.err" - actual_sav=${actual}-sav - actual_err_sav=${actual_err}-sav - shift - retvalexpect=$1 - shift - - # Run test. - # Stderr is included in stdout so that the diff can detect - # any unexpected output from that stream too. - TESTING $H5LS $@ - ( - cd $TESTDIR - $RUNSERIAL $H5LS_BIN "$@" - ) >$actual 2>$actual_err - - exitcode=$? - # save actual and actual_err in case they are needed later. - cp $actual $actual_sav - STDOUT_FILTER $actual - cp $actual_err $actual_err_sav - STDERR_FILTER $actual_err - cat $actual_err >> $actual - if [ $h5haveexitcode = 'yes' -a $exitcode -ne $retvalexpect ]; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - if [ yes = "$verbose" ]; then - echo "test returned with exit code $exitcode" - echo "test output: (up to $NLINES lines)" - head -$NLINES $actual - echo "***end of test output***" - echo "" - fi - elif [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result differs from actual result" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err $actual_sav $actual_err_sav - fi -} - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## -# prepare for test -COPY_TESTFILES_TO_TESTDIR - -# Toss in a bunch of tests. Not sure if they are the right kinds. -# test the help syntax -TOOLTEST help-1.ls 0 -w80 -h -TOOLTEST help-2.ls 0 -w80 -help -TOOLTEST help-3.ls 0 -w80 -? - -# test simple command -TOOLTEST tall-1.ls 0 -w80 tall.h5 -TOOLTEST tall-2.ls 0 -w80 -r -d tall.h5 -TOOLTEST tgroup.ls 0 -w80 tgroup.h5 -TOOLTEST tgroup-3.ls 0 -w80 tgroup.h5/g1 - -# test for displaying groups -# The following combination of arguments is expected to return an error message -# and return value 1 -TOOLTEST tgroup-1.ls 1 -w80 -r -g tgroup.h5 -TOOLTEST tgroup-2.ls 0 -w80 -g tgroup.h5/g1 - -# test for files with groups that have long comments -TOOLTEST tgrp_comments.ls 0 -w80 -v -g tgrp_comments.h5/glongcomment - -# test for displaying simple space datasets -TOOLTEST tdset-1.ls 0 -w80 -r -d tdset.h5 - -# test for displaying soft links -TOOLTEST tslink-1.ls 0 -w80 -r tslink.h5 - -# test for displaying more soft links with --follow-symlinks -TOOLTEST tsoftlinks-1.ls 0 --follow-symlinks tsoftlinks.h5 -TOOLTEST tsoftlinks-2.ls 0 --follow-symlinks -r tsoftlinks.h5 -TOOLTEST tsoftlinks-3.ls 0 --follow-symlinks tsoftlinks.h5/group1 -TOOLTEST tsoftlinks-4.ls 0 --follow-symlinks -r tsoftlinks.h5/group1 -TOOLTEST tsoftlinks-5.ls 0 --follow-symlinks tsoftlinks.h5/soft_dset1 - -# test for displaying external and user-defined links with --follow-symlinks -TOOLTEST textlink-1.ls 0 -w80 -r textlink.h5 -TOOLTEST textlinksrc-1.ls 0 -w80 --follow-symlinks -r textlinksrc.h5 -TOOLTEST textlinksrc-2.ls 0 -w80 --follow-symlinks -rv textlinksrc.h5/ext_link5 -TOOLTEST textlinksrc-3.ls 0 -w80 --follow-symlinks -r textlinksrc.h5/ext_link1 -TOOLTEST textlinksrc-4.ls 0 -w80 -r textlinksrc.h5 -TOOLTEST textlinksrc-5.ls 0 -w80 -r textlinksrc.h5/ext_link1 -TOOLTEST textlinksrc-6.ls 0 -w80 --follow-symlinks textlinksrc.h5 -TOOLTEST textlinksrc-7.ls 0 -w80 --follow-symlinks textlinksrc.h5/ext_link1 -TOOLTEST tudlink-1.ls 0 -w80 -r tudlink.h5 - -# test for displaying external links with -E -# the option -E will be depriciated but keep it for backward compatibility -TOOLTEST textlinksrc-1-old.ls 0 -w80 -Er textlinksrc.h5 -TOOLTEST textlinksrc-2-old.ls 0 -w80 -Erv textlinksrc.h5/ext_link5 -TOOLTEST textlinksrc-3-old.ls 0 -w80 -Er textlinksrc.h5/ext_link1 -TOOLTEST textlinksrc-6-old.ls 0 -w80 -E textlinksrc.h5 -TOOLTEST textlinksrc-7-old.ls 0 -w80 -E textlinksrc.h5/ext_link1 - -# tests for no-dangling-links -# if this option is given on dangling link, h5ls should return exit code 1 -# when used alone , expect to print out help and return exit code 1 -TOOLTEST textlinksrc-nodangle-1.ls 1 -w80 --no-dangling-links textlinksrc.h5 -# external dangling link - expected exit code 1 -TOOLTEST textlinksrc-nodangle-2.ls 1 -w80 --follow-symlinks --no-dangling-links textlinksrc.h5 -# soft dangling link - expected exit code 1 -TOOLTEST tsoftlinks-nodangle-1.ls 1 -w80 --follow-symlinks --no-dangling-links tsoftlinks.h5 -# when used file with no dangling links - expected exit code 0 -TOOLTEST thlinks-nodangle-1.ls 0 -w80 --follow-symlinks --no-dangling-links thlink.h5 - -# test for wildcards in filename (does not work with cmake) -# this h5ls test script does not pass the filename properly like the h5dump test script??? -#TOOLTEST tstarfile.ls 0 -w80 t*link.h5 -#TOOLTEST tqmarkfile.ls 0 -w80 t?link.h5 -TOOLTEST tmultifile.ls 0 -w80 thlink.h5 tslink.h5 - -# tests for hard links -TOOLTEST thlink-1.ls 0 -w80 thlink.h5 - -# tests for compound data types -TOOLTEST tcomp-1.ls 0 -w80 -r -d tcompound.h5 - -#test for the nested compound type -TOOLTEST tnestcomp-1.ls 0 -w80 -r -d tnestedcomp.h5 - -TOOLTEST tnestcomp-2.ls 0 -w80 -r -d -S tnestedcomp.h5 - -TOOLTEST tnestcomp-3.ls 0 -w80 -r -d -l tnestedcomp.h5 - -TOOLTEST tnestcomp-4.ls 0 -w80 -r -d -l -S tnestedcomp.h5 - -# test for loop detection -TOOLTEST tloop-1.ls 0 -w80 -r -d tloop.h5 - -# test for string -TOOLTEST tstr-1.ls 0 -w80 -r -d tstr.h5 - -# test test file created from lib SAF team -TOOLTEST tsaf.ls 0 -w80 -r -d tsaf.h5 - -# test for variable length data types -TOOLTEST tvldtypes1.ls 0 -w80 -r -d tvldtypes1.h5 - -# test for array data types -TOOLTEST tarray1.ls 0 -w80 -r -d tarray1.h5 - -# test for empty data -TOOLTEST tempty.ls 0 -w80 -d tempty.h5 - -# test for all dataset types written to attributes -# enable -S for avoiding printing NATIVE types -TOOLTEST tattr2.ls 0 -w80 -v -S tattr2.h5 - -# test for attribute with region references without verbose mode -# ( HDFFV-7838, ) -if test $WORDS_BIGENDIAN != "yes"; then -TOOLTEST tattrreg_le.ls 0 -w80 -v -d tattrreg.h5 -else -TOOLTEST tattrreg_be.ls 0 -w80 -v -d tattrreg.h5 -fi - -# tests for error handling. -# test for non-existing file -TOOLTEST nosuchfile.ls 1 nosuchfile.h5 - -# test for variable length data types in verbose mode -if test $WORDS_BIGENDIAN != "yes"; then - TOOLTEST tvldtypes2le.ls 0 -v tvldtypes1.h5 -else - TOOLTEST tvldtypes2be.ls 0 -v tvldtypes1.h5 -fi - - -# test for dataset region references data types in verbose mode -if test $WORDS_BIGENDIAN != "yes"; then - TOOLTEST tdataregle.ls 0 -v tdatareg.h5 -else - TOOLTEST tdataregbe.ls 0 -v tdatareg.h5 -fi - -# test for file with datasets that use Fixed Array chunk indices -#echo "***skip testing tdset_idx.h5" -TOOLTEST tdset_idx.ls 0 -w80 -d tdset_idx.h5 - -# Clean up temporary files/directories -CLEAN_TESTFILES_AND_TESTDIR - -if test $nerrors -eq 0 ; then - echo "All $TESTNAME tests passed." - exit $EXIT_SUCCESS -else - echo "$TESTNAME tests failed with $nerrors errors." - exit $EXIT_FAILURE -fi diff --git a/tools/h5ls/testh5lsvds.sh.in b/tools/h5ls/testh5lsvds.sh.in deleted file mode 100644 index 47a48e3..0000000 --- a/tools/h5ls/testh5lsvds.sh.in +++ /dev/null @@ -1,258 +0,0 @@ -#! /bin/sh -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -# -# Tests for the h5ls tool - -srcdir=@srcdir@ - -TESTNAME=h5ls -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -H5LS=h5ls # The tool name -H5LS_BIN=`pwd`/$H5LS # The path of the tool binary - -RM='rm -rf' -CMP='cmp -s' -DIFF='diff -c' -CP='cp' -NLINES=20 # Max. lines of output to display if test fails -DIRNAME='dirname' -LS='ls' -AWK='awk' - -WORDS_BIGENDIAN="@WORDS_BIGENDIAN@" - -nerrors=0 -verbose=yes -h5haveexitcode=yes # default is yes - -# source dirs -SRC_TOOLS="$srcdir/.." -SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles" - -# testfiles source dirs for tools -SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles" -SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles" -SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles" -SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles" -SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles" -SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles" - -TEST_P_DIR=./testfiles -TESTDIR=./testfiles/vds -test -d $TEST_P_DIR || mkdir -p $TEST_P_DIR -test -d $TESTDIR || mkdir $TESTDIR - -###################################################################### -# test files -# -------------------------------------------------------------------- -# All the test files copy from source directory to test directory -# NOTE: Keep this framework to add/remove test files. -# Any test files from other tools can be used in this framework. -# This list are also used for checking exist. -# Comment '#' without space can be used. -# -------------------------------------------------------------------- -LIST_HDF5_TEST_FILES=" -$SRC_H5LS_TESTFILES/vds/1_a.h5 -$SRC_H5LS_TESTFILES/vds/1_b.h5 -$SRC_H5LS_TESTFILES/vds/1_c.h5 -$SRC_H5LS_TESTFILES/vds/1_d.h5 -$SRC_H5LS_TESTFILES/vds/1_e.h5 -$SRC_H5LS_TESTFILES/vds/1_f.h5 -$SRC_H5LS_TESTFILES/vds/1_vds.h5 -$SRC_H5LS_TESTFILES/vds/2_a.h5 -$SRC_H5LS_TESTFILES/vds/2_b.h5 -$SRC_H5LS_TESTFILES/vds/2_c.h5 -$SRC_H5LS_TESTFILES/vds/2_d.h5 -$SRC_H5LS_TESTFILES/vds/2_e.h5 -$SRC_H5LS_TESTFILES/vds/2_vds.h5 -$SRC_H5LS_TESTFILES/vds/3_1_vds.h5 -$SRC_H5LS_TESTFILES/vds/3_2_vds.h5 -$SRC_H5LS_TESTFILES/vds/4_0.h5 -$SRC_H5LS_TESTFILES/vds/4_1.h5 -$SRC_H5LS_TESTFILES/vds/4_2.h5 -$SRC_H5LS_TESTFILES/vds/4_vds.h5 -$SRC_H5LS_TESTFILES/vds/5_a.h5 -$SRC_H5LS_TESTFILES/vds/5_b.h5 -$SRC_H5LS_TESTFILES/vds/5_c.h5 -$SRC_H5LS_TESTFILES/vds/5_vds.h5 -" - -LIST_OTHER_TEST_FILES=" -$SRC_H5LS_TESTFILES/vds/tvds-1.ls -$SRC_H5LS_TESTFILES/vds/tvds-2.ls -$SRC_H5LS_TESTFILES/vds/tvds-3_1.ls -$SRC_H5LS_TESTFILES/vds/tvds-3_2.ls -$SRC_H5LS_TESTFILES/vds/tvds-4.ls -$SRC_H5LS_TESTFILES/vds/tvds-5.ls -" - - -# RUNSERIAL is used. Check if it can return exit code from executalbe correctly. -if [ -n "$RUNSERIAL_NOEXITCODE" ]; then - echo "***Warning*** Serial Exit Code is not passed back to shell corretly." - echo "***Warning*** Exit code checking is skipped." - h5haveexitcode=no -fi - -# -# copy test files and expected output files from source dirs to test dir -# -COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES" - -COPY_TESTFILES_TO_TESTDIR() -{ - # copy test files. Used -f to make sure get a new copy - for tstfile in $COPY_TESTFILES - do - # ignore '#' comment - echo $tstfile | tr -d ' ' | grep '^#' > /dev/null - RET=$? - if [ $RET -eq 1 ]; then - # skip cp if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=`$DIRNAME $tstfile` - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $CP -f $tstfile $TESTDIR - if [ $? -ne 0 ]; then - echo "Error: FAILED to copy $tstfile ." - - # Comment out this to CREATE expected file - exit $EXIT_FAILURE - fi - fi - fi - done -} - -CLEAN_TESTFILES_AND_TESTDIR() -{ - # skip rm if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=$SRC_H5LS_TESTFILES/vds - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $RM $TESTDIR - fi -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Testing". -TESTING() { - SPACES=" " - echo "Testing $* $SPACES" |cut -c1-70 |tr -d '\012' -} - -# Source in the output filter function definitions. -. $srcdir/../../bin/output_filter.sh - -# Run a test and print PASS or *FAIL*. For now, if h5ls can complete -# with exit status 0, consider it pass. If a test fails then increment -# the `nerrors' global variable and (if $verbose is set) display up to $NLINS -# lines of the actual output from the tool test. The actual output is not -# removed if $HDF5_NOCLEANUP has a non-zero value. -# Arguemnts: -# $1 -- actual output filename to use -# $2 and on -- argument for the h5ls tool -TOOLTEST() { - expect="$TESTDIR/$1" - actual="$TESTDIR/`basename $1 .ls`.out" - actual_err="$TESTDIR/`basename $1 .ls`.err" - actual_sav=${actual}-sav - actual_err_sav=${actual_err}-sav - shift - retvalexpect=$1 - shift - - # Run test. - # Stderr is included in stdout so that the diff can detect - # any unexpected output from that stream too. - TESTING $H5LS $@ - ( - cd $TESTDIR - $RUNSERIAL $H5LS_BIN "$@" - ) >$actual 2>$actual_err - - exitcode=$? - # save actual and actual_err in case they are needed later. - cp $actual $actual_sav - STDOUT_FILTER $actual - cp $actual_err $actual_err_sav - STDERR_FILTER $actual_err - cat $actual_err >> $actual - if [ $h5haveexitcode = 'yes' -a $exitcode -ne $retvalexpect ]; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - if [ yes = "$verbose" ]; then - echo "test returned with exit code $exitcode" - echo "test output: (up to $NLINES lines)" - head -$NLINES $actual - echo "***end of test output***" - echo "" - fi - elif [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result differs from actual result" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err $actual_sav $actual_err_sav - fi -} - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## -# prepare for test -COPY_TESTFILES_TO_TESTDIR - -####### test for dataset vds ###### - -TOOLTEST tvds-1.ls 0 -w80 -v -S 1_vds.h5 -TOOLTEST tvds-2.ls 0 -w80 -v -S 2_vds.h5 -TOOLTEST tvds-3_1.ls 0 -w80 -v -S 3_1_vds.h5 -TOOLTEST tvds-3_2.ls 0 -w80 -v -S 3_2_vds.h5 -TOOLTEST tvds-4.ls 0 -w80 -v -S 4_vds.h5 -TOOLTEST tvds-5.ls 0 -w80 -v -S 5_vds.h5 - -# Clean up temporary files/directories -CLEAN_TESTFILES_AND_TESTDIR - -if test $nerrors -eq 0 ; then - echo "All $TESTNAME tests passed." - exit $EXIT_SUCCESS -else - echo "$TESTNAME tests failed with $nerrors errors." - exit $EXIT_FAILURE -fi diff --git a/tools/h5repack/CMakeLists.txt b/tools/h5repack/CMakeLists.txt deleted file mode 100644 index 4a21605..0000000 --- a/tools/h5repack/CMakeLists.txt +++ /dev/null @@ -1,114 +0,0 @@ -cmake_minimum_required (VERSION 3.1.0) -PROJECT (HDF5_TOOLS_H5REPACK) - -#----------------------------------------------------------------------------- -# Setup include Directories -#----------------------------------------------------------------------------- -INCLUDE_DIRECTORIES (${HDF5_TOOLS_DIR}/lib) -INCLUDE_DIRECTORIES (${HDF5_TEST_SRC_DIR}) - -# -------------------------------------------------------------------- -# Add h5Repack executables -# -------------------------------------------------------------------- -set (REPACK_COMMON_SOURCES - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_copy.c - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_filters.c - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_opttable.c - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_parse.c - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_refs.c - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_verify.c - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack.c -) - -add_executable (h5repack ${REPACK_COMMON_SOURCES} ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_main.c) -TARGET_NAMING (h5repack STATIC) -TARGET_C_PROPERTIES (h5repack STATIC " " " ") -target_link_libraries (h5repack ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) -set_target_properties (h5repack PROPERTIES FOLDER tools) -set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5repack") - -set (H5_DEP_EXECUTABLES h5repack) - -if (BUILD_TESTING) - # -------------------------------------------------------------------- - # Add h5Repack test executables - # -------------------------------------------------------------------- - add_executable (testh5repack_detect_szip ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testh5repack_detect_szip.c) - TARGET_NAMING (testh5repack_detect_szip STATIC) - TARGET_C_PROPERTIES (testh5repack_detect_szip STATIC " " " ") - target_link_libraries (testh5repack_detect_szip ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET}) - set_target_properties (testh5repack_detect_szip PROPERTIES FOLDER tools) - - add_executable (h5repacktest ${REPACK_COMMON_SOURCES} ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repacktst.c) - TARGET_NAMING (h5repacktest STATIC) - TARGET_C_PROPERTIES (h5repacktest STATIC " " " ") - target_link_libraries (h5repacktest ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET}) - set_target_properties (h5repacktest PROPERTIES FOLDER tools) - - #----------------------------------------------------------------------------- - # If plugin library tests can be tested - #----------------------------------------------------------------------------- - set (HDF5_TOOL_PLUGIN_LIB_CORENAME "dynlibadd") - set (HDF5_TOOL_PLUGIN_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_TOOL_PLUGIN_LIB_CORENAME}") - set (HDF5_TOOL_PLUGIN_LIB_TARGET ${HDF5_TOOL_PLUGIN_LIB_CORENAME}) - set (HDF5_TOOL_PLUGIN_LIB_VCORENAME "dynlibvers") - set (HDF5_TOOL_PLUGIN_LIB_VNAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_TOOL_PLUGIN_LIB_VCORENAME}") - set (HDF5_TOOL_PLUGIN_LIB_VTARGET ${HDF5_TOOL_PLUGIN_LIB_VCORENAME}) - add_definitions (${HDF_EXTRA_C_FLAGS}) - INCLUDE_DIRECTORIES (${HDF5_SRC_DIR}) - - add_library (${HDF5_TOOL_PLUGIN_LIB_TARGET} SHARED dynlib_rpk.c) - TARGET_C_PROPERTIES (${HDF5_TOOL_PLUGIN_LIB_TARGET} SHARED " " " ") - target_link_libraries (${HDF5_TOOL_PLUGIN_LIB_TARGET} ${HDF5_TEST_LIB_TARGET}) - H5_SET_LIB_OPTIONS (${HDF5_TOOL_PLUGIN_LIB_TARGET} ${HDF5_TOOL_PLUGIN_LIB_NAME} SHARED ${HDF5_PACKAGE_SOVERSION}) - - add_library (${HDF5_TOOL_PLUGIN_LIB_VTARGET} SHARED dynlib_vrpk.c) - TARGET_C_PROPERTIES (${HDF5_TOOL_PLUGIN_LIB_VTARGET} SHARED " " " ") - target_link_libraries (${HDF5_TOOL_PLUGIN_LIB_VTARGET} ${HDF5_TEST_LIB_TARGET}) - H5_SET_LIB_OPTIONS (${HDF5_TOOL_PLUGIN_LIB_VTARGET} ${HDF5_TOOL_PLUGIN_LIB_VNAME} SHARED ${HDF5_PACKAGE_SOVERSION}) - - # make plugins dir - file (MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/plugins") - #----------------------------------------------------------------------------- - # Copy plugin library to a plugins folder - #----------------------------------------------------------------------------- - add_custom_command ( - TARGET ${HDF5_TOOL_PLUGIN_LIB_TARGET} - POST_BUILD - COMMAND ${CMAKE_COMMAND} - ARGS -E copy_if_different - "$" - "${CMAKE_BINARY_DIR}/plugins/$" - ) - add_custom_command ( - TARGET ${HDF5_TOOL_PLUGIN_LIB_VTARGET} - POST_BUILD - COMMAND ${CMAKE_COMMAND} - ARGS -E copy_if_different - "$" - "${CMAKE_BINARY_DIR}/plugins/$" - ) - - include (CMakeTests.cmake) - -endif (BUILD_TESTING) - -############################################################################## -############################################################################## -### I N S T A L L A T I O N ### -############################################################################## -############################################################################## - -#----------------------------------------------------------------------------- -# Rules for Installation of tools using make Install target -#----------------------------------------------------------------------------- - -#INSTALL_PROGRAM_PDB (h5repack ${HDF5_INSTALL_BIN_DIR} toolsapplications) - -install ( - TARGETS - h5repack - EXPORT - ${HDF5_EXPORTED_TARGETS} - RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications -) diff --git a/tools/h5repack/CMakeTests.cmake b/tools/h5repack/CMakeTests.cmake deleted file mode 100644 index e8ee00f..0000000 --- a/tools/h5repack/CMakeTests.cmake +++ /dev/null @@ -1,1153 +0,0 @@ - -############################################################################## -############################################################################## -### T E S T I N G ### -############################################################################## -############################################################################## - - if (HDF5_TEST_VFD) - set (VFD_LIST - sec2 - stdio - core - split - multi - family - ) - - if (DIRECT_VFD) - set (VFD_LIST ${VFD_LIST} direct) - endif (DIRECT_VFD) - - MACRO (ADD_VFD_TEST vfdname resultcode) - add_test ( - NAME H5REPACK-VFD-${vfdname}-h5repacktest - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=" - -D "TEST_VFD:STRING=${vfdname}" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_OUTPUT=h5repacktest" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -P "${HDF_RESOURCES_DIR}/vfdTest.cmake" - ) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5REPACK-VFD-${vfdname}-h5repacktest PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - set (last_test "H5REPACK-VFD-${vfdname}-h5repacktest") - ENDMACRO (ADD_VFD_TEST) - endif (HDF5_TEST_VFD) - - # -------------------------------------------------------------------- - # Copy all the HDF5 files from the source directory into the test directory - # -------------------------------------------------------------------- - set (LIST_HDF5_TEST_FILES - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_attr.h5 - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_attr_refs.h5 - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_deflate.h5 - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_early.h5 - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_ext.h5 - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_fill.h5 - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_filters.h5 - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_fletcher.h5 - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_hlink.h5 - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5 - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layouto.h5 - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout2.h5 - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout3.h5 - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.UD.h5 - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_named_dtypes.h5 - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_nbit.h5 - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_objs.h5 - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_refs.h5 - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_shuffle.h5 - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_soffset.h5 - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_szip.h5 - # h5diff/testfile - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr1.h5 - # tools/testfiles - ${HDF5_TOOLS_DIR}/testfiles/tfamily00000.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfamily00001.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfamily00002.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfamily00003.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfamily00004.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfamily00005.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfamily00006.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfamily00007.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfamily00008.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfamily00009.h5 - ${HDF5_TOOLS_DIR}/testfiles/tfamily00010.h5 - # tools/testfiles/vds - ${HDF5_TOOLS_DIR}/testfiles/vds/1_a.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/1_b.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/1_c.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/1_d.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/1_e.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/1_f.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/1_vds.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/2_a.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/2_b.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/2_c.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/2_d.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/2_e.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/2_vds.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/3_1_vds.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/3_2_vds.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/4_0.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/4_1.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/4_2.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/4_vds.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/5_a.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/5_b.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/5_c.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/5_vds.h5 - ) - - set (LIST_OTHER_TEST_FILES - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack-help.txt - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_ext.bin - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/ublock.bin - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack.info - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/deflate_limit.h5repack_layout.h5.ddl - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5.ddl - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_filters.h5-gzip_verbose_filters.tst - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5-dset2_chunk_20x10-errstk.tst - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5-plugin_test.ddl - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/plugin_test.h5repack_layout.h5.tst - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.UD.h5-plugin_none.ddl - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/plugin_none.h5repack_layout.UD.h5.tst - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5-plugin_version_test.ddl - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/plugin_version_test.h5repack_layout.h5.tst - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.ddl - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/2_vds.h5-vds_chunk3x6x9-v.ddl - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/3_1_vds.h5-vds_chunk2x5x8-v.ddl - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/4_vds.h5-vds_compa-v.ddl - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/4_vds.h5-vds_conti-v.ddl - ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5-plugin_zero.tst - ) - - foreach (h5_file ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES}) - get_filename_component(fname "${h5_file}" NAME) - HDFTEST_COPY_FILE("${h5_file}" "${PROJECT_BINARY_DIR}/testfiles/${fname}" "h5repack_files") - endforeach (h5_file ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES}) - add_custom_target(h5repack_files ALL COMMENT "Copying files needed by h5repack tests" DEPENDS ${h5repack_files_list}) - -############################################################################## -############################################################################## -### T H E T E S T S M A C R O S ### -############################################################################## -############################################################################## - - MACRO (ADD_HELP_TEST testname resultcode) - # If using memchecker add tests without using scripts - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME H5REPACK-${testname} COMMAND $ ${ARGN}) - set_tests_properties (H5REPACK-${testname} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5REPACK-${testname} PROPERTIES DEPENDS ${last_test}) - endif () - set (last_test "H5REPACK-${testname}") - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5REPACK-h5repack-${testname} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" - -D "TEST_OUTPUT=h5repack-${testname}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=h5repack-${testname}.txt" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_HELP_TEST) - - MACRO (ADD_H5_TEST_OLD testname testtype testfile) - if ("${testtype}" STREQUAL "SKIP") - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5REPACK_OLD-${testname}-SKIPPED - COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} -i ${PROJECT_BINARY_DIR}/testfiles/${testfile} -o ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}" - ) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - else ("${testtype}" STREQUAL "SKIP") - add_test ( - NAME H5REPACK_OLD-${testname} - COMMAND $ ${ARGN} -i ${PROJECT_BINARY_DIR}/testfiles/${testfile} -o ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} - ) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5REPACK_OLD-${testname} PROPERTIES DEPENDS ${last_test}) - endif () - add_test ( - NAME H5REPACK_OLD-${testname}_DFF - COMMAND $ ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} - ) - set_tests_properties (H5REPACK_OLD-${testname}_DFF PROPERTIES DEPENDS H5REPACK_OLD-${testname}) - endif ("${testtype}" STREQUAL "SKIP") - ENDMACRO (ADD_H5_TEST_OLD) - - MACRO (ADD_H5_TEST testname testtype testfile) - if ("${testtype}" STREQUAL "SKIP") - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5REPACK-${testname}-SKIPPED - COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}" - ) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - else ("${testtype}" STREQUAL "SKIP") - add_test ( - NAME H5REPACK-${testname} - COMMAND $ ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} - ) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5REPACK-${testname} PROPERTIES DEPENDS ${last_test}) - endif () - add_test ( - NAME H5REPACK-${testname}_DFF - COMMAND $ ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} - ) - set_tests_properties (H5REPACK-${testname}_DFF PROPERTIES DEPENDS H5REPACK-${testname}) - endif ("${testtype}" STREQUAL "SKIP") - ENDMACRO (ADD_H5_TEST) - - MACRO (ADD_H5_CMP_TEST testname testfilter testtype resultcode resultfile) - if ("${testtype}" STREQUAL "SKIP") - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5REPACK_CMP-${testname}-SKIPPED - COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}" - ) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - else ("${testtype}" STREQUAL "SKIP") - # If using memchecker add tests without using scripts - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5REPACK_CMP-${testname} - COMMAND $ ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}) - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5REPACK_CMP-${testname} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=${ARGN};${resultfile};out-${testname}.${resultfile}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" - -D "TEST_OUTPUT=${resultfile}-${testname}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_FILTER:STRING=${testfilter}" - -D "TEST_REFERENCE=${resultfile}-${testname}.tst" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - endif (HDF5_ENABLE_USING_MEMCHECKER) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5REPACK_CMP-${testname} PROPERTIES DEPENDS ${last_test}) - endif () - endif ("${testtype}" STREQUAL "SKIP") - ENDMACRO (ADD_H5_CMP_TEST) - - MACRO (ADD_H5_MASK_TEST testname testtype resultcode resultfile) - if ("${testtype}" STREQUAL "SKIP") - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5REPACK_MASK-${testname}-SKIPPED - COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}" - ) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - else ("${testtype}" STREQUAL "SKIP") - # If using memchecker add tests without using scripts - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5REPACK_MASK-${testname} - COMMAND $ ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}) - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5REPACK_MASK-${testname} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=${ARGN};${resultfile};out-${testname}.${resultfile}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" - -D "TEST_OUTPUT=${resultfile}-${testname}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_MASK_ERROR=true" - -D "TEST_REFERENCE=${resultfile}-${testname}.tst" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - endif (HDF5_ENABLE_USING_MEMCHECKER) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5REPACK_MASK-${testname} PROPERTIES DEPENDS ${last_test}) - endif () - endif ("${testtype}" STREQUAL "SKIP") - ENDMACRO (ADD_H5_MASK_TEST) - - MACRO (ADD_H5_DMP_TEST testname testtype resultcode resultfile) - if ("${testtype}" STREQUAL "SKIP") - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5REPACK_DMP-${testname}-SKIPPED - COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}" - ) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - else ("${testtype}" STREQUAL "SKIP") - # If using memchecker add tests without using scripts - add_test ( - NAME H5REPACK_DMP-${testname} - COMMAND $ ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5REPACK_DMP-${testname} PROPERTIES DEPENDS ${last_test}) - endif () - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5REPACK_DMP-h5dump-${testname} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=-pH;out-${testname}.${resultfile}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" - -D "TEST_OUTPUT=${resultfile}-${testname}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${testname}.${resultfile}.ddl" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5REPACK_DMP-h5dump-${testname} PROPERTIES DEPENDS "H5REPACK_DMP-${testname}") - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - endif ("${testtype}" STREQUAL "SKIP") - ENDMACRO (ADD_H5_DMP_TEST) - - MACRO (ADD_H5_VERIFY_TEST testname testtype resultcode testfile testdset testfilter) - if ("${testtype}" STREQUAL "SKIP") - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5REPACK_VERIFY_LAYOUT-${testname}-SKIPPED - COMMAND ${CMAKE_COMMAND} -E echo "SKIP -d ${testdset} -pH ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}" - ) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - else ("${testtype}" STREQUAL "SKIP") - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5REPACK_VERIFY_LAYOUT-${testname} - COMMAND $ ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} - ) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname} PROPERTIES DEPENDS ${last_test}) - endif () - add_test ( - NAME H5REPACK_VERIFY_LAYOUT-${testname}_DFF - COMMAND $ ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} - ) - set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname}_DFF PROPERTIES DEPENDS H5REPACK_VERIFY_LAYOUT-${testname}) - if ("${resultcode}" STREQUAL "0") - add_test ( - NAME H5REPACK_VERIFY_LAYOUT-${testname}_DMP - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=-d;${testdset};-pH;out-${testname}.${testfile}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" - -D "TEST_OUTPUT=${testfile}-${testname}-v.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_FILTER:STRING=${testfilter}" - -D "TEST_REFERENCE=${testfilter}" - -P "${HDF_RESOURCES_EXT_DIR}/grepTest.cmake" - ) - set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname}_DMP PROPERTIES DEPENDS H5REPACK_VERIFY_LAYOUT-${testname}_DFF) - else ("${resultcode}" STREQUAL "0") - if ("${testfilter}" STREQUAL "CHUNKED") - set (nottestfilter "(CONTIGUOUS|COMPACT)") - endif () - if ("${testfilter}" STREQUAL "CONTIGUOUS") - set (nottestfilter "(CHUNK|COMPACT)") - endif () - if ("${testfilter}" STREQUAL "COMPACT") - set (nottestfilter "(CONTIGUOUS|CHUNK)") - endif () - add_test ( - NAME H5REPACK_VERIFY_LAYOUT-${testname}_DMP - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=-pH;out-${testname}.${testfile}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" - -D "TEST_OUTPUT=${testfile}-${testname}-v.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_FILTER:STRING=${nottestfilter}" - -D "TEST_REFERENCE=${testfilter}" - -P "${HDF_RESOURCES_EXT_DIR}/grepTest.cmake" - ) - set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname}_DMP PROPERTIES DEPENDS H5REPACK_VERIFY_LAYOUT-${testname}_DFF) - endif ("${resultcode}" STREQUAL "0") - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - endif ("${testtype}" STREQUAL "SKIP") - ENDMACRO (ADD_H5_VERIFY_TEST) - - MACRO (ADD_H5_VERIFY_VDS testname testtype resultcode testfile testdset testfilter) - if ("${testtype}" STREQUAL "SKIP") - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5REPACK_VERIFY_LAYOUT_VDS-${testname}-SKIPPED - COMMAND ${CMAKE_COMMAND} -E echo "SKIP -d ${testdset} -pH ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}" - ) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - else ("${testtype}" STREQUAL "SKIP") - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5REPACK_VERIFY_LAYOUT_VDS-${testname} - COMMAND $ ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} - ) - set_tests_properties (H5REPACK_VERIFY_LAYOUT_VDS-${testname} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5REPACK_VERIFY_LAYOUT_VDS-${testname} PROPERTIES DEPENDS ${last_test}) - endif () - add_test ( - NAME H5REPACK_VERIFY_LAYOUT_VDS-${testname}_DMP - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=-d;${testdset};-p;out-${testname}.${testfile}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" - -D "TEST_OUTPUT=${testfile}-${testname}-v.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${testfile}-${testname}-v.ddl" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5REPACK_VERIFY_LAYOUT_VDS-${testname}_DMP PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - set_tests_properties (H5REPACK_VERIFY_LAYOUT_VDS-${testname}_DMP PROPERTIES DEPENDS H5REPACK_VERIFY_LAYOUT_VDS-${testname}) - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - endif ("${testtype}" STREQUAL "SKIP") - ENDMACRO (ADD_H5_VERIFY_VDS) - - MACRO (ADD_H5_TEST_META testname testfile) - add_test ( - NAME H5REPACK_META-${testname}_N - COMMAND $ ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_N.${testname}.h5 - ) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5REPACK_META-${testname}_N PROPERTIES DEPENDS ${last_test}) - endif () - add_test ( - NAME H5REPACK_META-${testname}_M - COMMAND $ ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_M.${testname}.h5 - ) - set_tests_properties (H5REPACK_META-${testname}_M PROPERTIES DEPENDS H5REPACK_META-${testname}_N) - - add_test (NAME H5REPACK_META-${testname} COMMAND ${CMAKE_COMMAND} -E compare_files ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_N.${testname}.h5 ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_M.${testname}.h5) - set_tests_properties (H5REPACK_META-${testname} PROPERTIES WILL_FAIL "true") - set_tests_properties (H5REPACK_META-${testname} PROPERTIES DEPENDS H5REPACK_META-${testname}_M) - ENDMACRO (ADD_H5_TEST_META) - - MACRO (ADD_H5_UD_TEST testname resultcode resultfile) - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - # Remove any output file left over from previous test run - add_test ( - NAME H5REPACK_UD-${testname}-clearall-objects - COMMAND ${CMAKE_COMMAND} - -E remove - testfiles/out-${testname}.${resultfile} - ) - add_test ( - NAME H5REPACK_UD-${testname} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=${ARGN};${resultfile};out-${testname}.${resultfile}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_FILTER:STRING=O?...ing file[^\n]+\n" - -D "TEST_OUTPUT=${testname}.${resultfile}.out" - -D "TEST_REFERENCE=${testname}.${resultfile}.tst" - -D "TEST_ENV_VAR=HDF5_PLUGIN_PATH" - -D "TEST_ENV_VALUE=${CMAKE_BINARY_DIR}/plugins" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5REPACK_UD-${testname} PROPERTIES DEPENDS H5REPACK_UD-${testname}-clearall-objects) - add_test ( - NAME H5REPACK_UD-h5dump-${testname} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=-pH;out-${testname}.${resultfile}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" - -D "TEST_OUTPUT=${resultfile}-${testname}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}-${testname}.ddl" - -D "TEST_ENV_VAR=HDF5_PLUGIN_PATH" - -D "TEST_ENV_VALUE=${CMAKE_BINARY_DIR}/plugins" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5REPACK_UD-h5dump-${testname} PROPERTIES DEPENDS "H5REPACK_UD-${testname}") - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_UD_TEST) - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## - - # -------------------------------------------------------------------- - # test file names - # -------------------------------------------------------------------- - set (INFO_FILE testfiles/h5repack.info) - - set (FILE0 h5repack_fill.h5) - set (FILE1 h5repack_objs.h5) - set (FILE2 h5repack_attr.h5) - set (FILE3 h5repack_hlink.h5) - set (FILE4 h5repack_layout.h5) - set (FILE5 h5repack_early.h5) - set (FILE7 h5repack_szip.h5) - set (FILE8 h5repack_deflate.h5) - set (FILE9 h5repack_shuffle.h5) - set (FILE10 h5repack_fletcher.h5) - set (FILE11 h5repack_filters.h5) - set (FILE12 h5repack_nbit.h5) - set (FILE13 h5repack_soffset.h5) - set (FILE14 h5repack_layouto.h5 ) # A file with an older version of the layout message (copy of test/tlayouto.h5) - set (FILE15 h5repack_named_dtypes.h5) - set (FILE16 tfamily%05d.h5) # located in common testfiles folder - set (FILE18 h5repack_layout2.h5) - set (FILE_REF h5repack_refs.h5) - set (FILE_ATTR_REF h5repack_attr_refs.h5) - set (FILEV1 1_vds.h5) - set (FILEV2 2_vds.h5) - set (FILEV3_1 3_1_vds.h5) - set (FILEV3_2 3_2_vds.h5) - set (FILEV4 4_vds.h5) - set (FILEV5 5_vds.h5) - - # Remove any output file left over from previous test run - add_test ( - NAME H5REPACK-clearall-objects - COMMAND ${CMAKE_COMMAND} - -E remove - ./testfiles/h5dump-help.out - ./testfiles/h5repack_filters.h5-gzip_verbose_filters.out - ./testfiles/h5repack_filters.h5-gzip_verbose_filters.out.err - ./testfiles/h5repack_layout.h5-chunk_18x13-v.out - ./testfiles/h5repack_layout.h5-chunk_18x13-v.out.err - ./testfiles/h5repack_layout.h5-chunk_20x10-v.out - ./testfiles/h5repack_layout.h5-chunk_20x10-v.out.err - ./testfiles/h5repack_layout.h5-chunk_compa-v.out - ./testfiles/h5repack_layout.h5-chunk_compa-v.out.err - ./testfiles/h5repack_layout.h5-chunk_conti-v.out - ./testfiles/h5repack_layout.h5-chunk_conti-v.out.err - ./testfiles/h5repack_layout.h5-compa-v.out - ./testfiles/h5repack_layout.h5-compa-v.out.err - ./testfiles/h5repack_layout.h5-conti-v.out - ./testfiles/h5repack_layout.h5-conti-v.out.err - ./testfiles/h5repack_layout.h5-deflate_limit.out - ./testfiles/h5repack_layout.h5-deflate_limit.out.err - ./testfiles/h5repack_layout.h5-dset2_chunk_20x10-v.out - ./testfiles/h5repack_layout.h5-dset2_chunk_20x10-v.out.err - ./testfiles/h5repack_layout.h5-dset2_chunk_20x10-errstk.out - ./testfiles/h5repack_layout.h5-dset2_chunk_20x10-errstk.out.err - ./testfiles/h5repack_layout.h5-dset2_compa-v.out - ./testfiles/h5repack_layout.h5-dset2_compa-v.out.err - ./testfiles/h5repack_layout.h5-dset2_conti-v.out - ./testfiles/h5repack_layout.h5-dset2_conti-v.out.err - ./testfiles/h5repack_layout.h5-dset_compa_chunk-v.out - ./testfiles/h5repack_layout.h5-dset_compa_chunk-v.out.err - ./testfiles/h5repack_layout.h5-dset_compa_compa-v.out - ./testfiles/h5repack_layout.h5-dset_compa_compa-v.out.err - ./testfiles/h5repack_layout.h5-dset_compa_conti-v.out - ./testfiles/h5repack_layout.h5-dset_compa_conti-v.out.err - ./testfiles/h5repack_layout.h5-dset_conti_chunk-v.out - ./testfiles/h5repack_layout.h5-dset_conti_chunk-v.out.err - ./testfiles/h5repack_layout.h5-dset_conti_compa-v.out - ./testfiles/h5repack_layout.h5-dset_conti_compa-v.out.err - ./testfiles/h5repack_layout.h5-dset_conti_conti-v.out - ./testfiles/h5repack_layout.h5-dset_conti_conti-v.out.err - ./testfiles/h5repack_layout.h5-layout_long_switches-v.out - ./testfiles/h5repack_layout.h5-layout_long_switches-v.out.err - ./testfiles/h5repack_layout.h5-layout_short_switches-v.out - ./testfiles/h5repack_layout.h5-layout_short_switches-v.out.err - ./testfiles/h5repack_layout.h5-plugin_test.out - ./testfiles/h5repack_layout.h5-plugin_test.out.err - ./testfiles/h5repack_layout2.h5-contig_small_compa-v.out - ./testfiles/h5repack_layout2.h5-contig_small_compa-v.out.err - ./testfiles/h5repack_layout2.h5-contig_small_fixed_compa-v.out - ./testfiles/h5repack_layout2.h5-contig_small_fixed_compa-v.out.err - ./testfiles/h5repack_layout3.h5-ckdim_biger-v.out - ./testfiles/h5repack_layout3.h5-ckdim_biger-v.out.err - ./testfiles/h5repack_layout3.h5-ckdim_smaller-v.out - ./testfiles/h5repack_layout3.h5-ckdim_smaller-v.out.err - ./testfiles/h5repack_layout3.h5-chunk2chunk-v.out - ./testfiles/h5repack_layout3.h5-chunk2chunk-v.out.err - ./testfiles/h5repack_layout3.h5-chunk2compa-v.out - ./testfiles/h5repack_layout3.h5-chunk2compa-v.out.err - ./testfiles/h5repack_layout3.h5-chunk2conti-v.out - ./testfiles/h5repack_layout3.h5-chunk2conti-v.out.err - ./testfiles/h5repack_layout3.h5-error1-v.out - ./testfiles/h5repack_layout3.h5-error1-v.out.err - ./testfiles/h5repack_layout3.h5-error2-v.out - ./testfiles/h5repack_layout3.h5-error2-v.out.err - ./testfiles/h5repack_layout3.h5-error3-v.out - ./testfiles/h5repack_layout3.h5-error3-v.out.err - ./testfiles/out-family.tfamily%05d.h5 - ./testfiles/out-HDFFV-7840.h5diff_attr1.h5 - ./testfiles/out-attr.h5repack_attr.h5 - ./testfiles/out-native_attr.h5repack_attr.h5 - ./testfiles/out-HDFFV-5932.h5repack_attr_refs.h5 - ./testfiles/out-deflate_copy.h5repack_deflate.h5 - ./testfiles/out-deflate_remove.h5repack_deflate.h5 - ./testfiles/out-early.h5repack_early.h5 - ./testfiles/out-fill.h5repack_fill.h5 - ./testfiles/out-native_fill.h5repack_fill.h5 - ./testfiles/out-gzip_verbose_filters.h5repack_filters.h5 - ./testfiles/out-fletcher_copy.h5repack_fletcher.h5 - ./testfiles/out-fletcher_remove.h5repack_fletcher.h5 - ./testfiles/out-hlink.h5repack_hlink.h5 - ./testfiles/out-chunk_18x13.h5repack_layout.h5 - ./testfiles/out-chunk_20x10.h5repack_layout.h5 - ./testfiles/out-chunk_compa.h5repack_layout.h5 - ./testfiles/out-chunk_conti.h5repack_layout.h5 - ./testfiles/out-compa.h5repack_layout.h5 - ./testfiles/out-conti.h5repack_layout.h5 - ./testfiles/out-deflate_file.h5repack_layout.h5 - ./testfiles/out-deflate_limit.h5repack_layout.h5 - ./testfiles/out-dset2_chunk_20x10.h5repack_layout.h5 - ./testfiles/out-dset2_compa.h5repack_layout.h5 - ./testfiles/out-dset2_conti.h5repack_layout.h5 - ./testfiles/out-dset_compa_chunk.h5repack_layout.h5 - ./testfiles/out-dset_compa_compa.h5repack_layout.h5 - ./testfiles/out-dset_compa_conti.h5repack_layout.h5 - ./testfiles/out-dset_conti_chunk.h5repack_layout.h5 - ./testfiles/out-dset_conti_compa.h5repack_layout.h5 - ./testfiles/out-dset_conti_conti.h5repack_layout.h5 - ./testfiles/out-fletcher_all.h5repack_layout.h5 - ./testfiles/out-fletcher_individual.h5repack_layout.h5 - ./testfiles/out-global_filters.h5repack_layout.h5 - ./testfiles/out-gzip_all.h5repack_layout.h5 - ./testfiles/out-gzip_individual.h5repack_layout.h5 - ./testfiles/out-layout.h5repack_layout.h5 - ./testfiles/out-layout_long_switches.h5repack_layout.h5 - ./testfiles/out-layout_short_switches.h5repack_layout.h5 - ./testfiles/out-old_style_layout_short_switches.h5repack_layout.h5 - ./testfiles/out-plugin_test.h5repack_layout.h5 - ./testfiles/out-shuffle_all.h5repack_layout.h5 - ./testfiles/out-shuffle_individual.h5repack_layout.h5 - ./testfiles/out-upgrade_layout.h5repack_layouto.h5 - ./testfiles/out-contig_small_compa.h5repack_layout2.h5 - ./testfiles/out-contig_small_fixed_compa.h5repack_layout2.h5 - ./testfiles/out-ckdim_biger.h5repack_layout3.h5 - ./testfiles/out-ckdim_smaller.h5repack_layout3.h5 - ./testfiles/out-chunk2chunk.h5repack_layout3.h5 - ./testfiles/out-chunk2compa.h5repack_layout3.h5 - ./testfiles/out-chunk2conti.h5repack_layout3.h5 - ./testfiles/out-error1.h5repack_layout3.h5 - ./testfiles/out-error2.h5repack_layout3.h5 - ./testfiles/out-error3.h5repack_layout3.h5 - ./testfiles/out-error4.h5repack_layout3.h5 - ./testfiles/out-committed_dt.h5repack_named_dtypes.h5 - ./testfiles/out-nbit_add.h5repack_nbit.h5 - ./testfiles/out-nbit_copy.h5repack_nbit.h5 - ./testfiles/out-nbit_remove.h5repack_nbit.h5 - ./testfiles/out-add_alignment.h5repack_objs.h5 - ./testfiles/out-add_userblock.h5repack_objs.h5 - ./testfiles/out-objs.h5repack_objs.h5 - ./testfiles/out-gt_mallocsize.h5repack_objs.h5 - ./testfiles/out-bug1814.h5repack_refs.h5 - ./testfiles/out-shuffle_copy.h5repack_shuffle.h5 - ./testfiles/out-shuffle_remove.h5repack_shuffle.h5 - ./testfiles/out-scale_add.h5repack_soffset.h5 - ./testfiles/out-scale_copy.h5repack_soffset.h5 - ./testfiles/out-scale_remove.h5repack_soffset.h5 - ./testfiles/out-meta_short_M.meta_short.h5 - ./testfiles/out-meta_short_N.meta_short.h5 - ./testfiles/out-meta_long_M.meta_long.h5 - ./testfiles/out-meta_long_N.meta_long.h5 - ./testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.out - ./testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.out.err - ./testfiles/2_vds.h5-vds_chunk3x6x9-v.out - ./testfiles/2_vds.h5-vds_chunk3x6x9-v.out.err - ./testfiles/3_1_vds.h5-vds_chunk2x5x8-v.out - ./testfiles/3_1_vds.h5-vds_chunk2x5x8-v.out.err - ./testfiles/4_vds.h5-vds_compa-v.out - ./testfiles/4_vds.h5-vds_compa-v.out.err - ./testfiles/4_vds.h5-vds_conti-v.out - ./testfiles/4_vds.h5-vds_conti-v.out.err - ./testfiles/out-vds_compa.4_vds.h5 - ./testfiles/out-vds_conti.4_vds.h5 - ./testfiles/out-vds_chunk2x5x8.3_1_vds.h5 - ./testfiles/out-vds_chunk3x6x9.2_vds.h5 - ./testfiles/out-vds_dset_chunk20x10x5.1_vds.h5 - h5repack_attr.h5 - h5repack_attr_out.h5 - h5repack_attr_refs.h5 - h5repack_big.h5 - h5repack_deflate.h5 - h5repack_deflate_out.h5 - h5repack_early2.h5 - h5repack_early.h5 - h5repack_early_out.h5 - h5repack_ext.h5 - h5repack_ext_out.h5 - h5repack_fill.h5 - h5repack_fill_out.h5 - h5repack_filters.h5 - h5repack_filters_out.h5 - h5repack_fletcher.h5 - h5repack_fletcher_out.h5 - h5repack_hlink.h5 - h5repack_hlink_out.h5 - h5repack_layout.h5 - h5repack_layout_out.h5 - h5repack_layout2.h5 - h5repack_layout3.h5 - h5repack_named_dtypes.h5 - h5repack_named_dtypes_out.h5 - h5repack_nbit.h5 - h5repack_nbit_out.h5 - h5repack_objs.h5 - h5repack_objs_out.h5 - h5repack_refs.h5 - h5repack_shuffle.h5 - h5repack_shuffle_out.h5 - h5repack_soffset.h5 - h5repack_soffset_out.h5 - h5repack_szip.h5 - h5repack_szip_out.h5 - h5repack_ub.h5 - h5repack_ub_out.h5 - h5repack_ext.bin - ublock.bin - ) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5REPACK-clearall-objects PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - - ADD_HELP_TEST(help 0 -h) - - add_test (NAME H5REPACK-testh5repack_detect_szip COMMAND $) - if (HDF5_ENABLE_SZIP_SUPPORT) - if (HDF5_ENABLE_SZIP_ENCODING) - set (passRegex "yes") - set_tests_properties (H5REPACK-testh5repack_detect_szip PROPERTIES PASS_REGULAR_EXPRESSION "yes") - else (HDF5_ENABLE_SZIP_ENCODING) - set (passRegex "no") - set_tests_properties (H5REPACK-testh5repack_detect_szip PROPERTIES PASS_REGULAR_EXPRESSION "no") - endif (HDF5_ENABLE_SZIP_ENCODING) - else (HDF5_ENABLE_SZIP_SUPPORT) - set (passRegex "no") - set_tests_properties (H5REPACK-testh5repack_detect_szip PROPERTIES PASS_REGULAR_EXPRESSION "no") - endif (HDF5_ENABLE_SZIP_SUPPORT) - set_tests_properties (H5REPACK-testh5repack_detect_szip PROPERTIES DEPENDS H5REPACK-clearall-objects) - - add_test (NAME H5REPACK-h5repacktest COMMAND $) - set_tests_properties (H5REPACK-h5repacktest PROPERTIES DEPENDS H5REPACK-testh5repack_detect_szip) - set (last_test "H5REPACK-h5repacktest") - -# -# The tests -# We use the files generated by h5repacktst -# Each run generates ".out.h5" and the tool h5diff is used to -# compare the input and output files -# -# the tests are the same as the program h5repacktst, but run from the CLI -# - -# See which filters are usable (and skip tests for filters we -# don't have). Do this by searching H5pubconf.h to see which -# filters are defined. - -# detect whether the encoder is present. - set (USE_FILTER_SZIP_ENCODER "no") - if (HDF5_ENABLE_SZIP_ENCODING) - set (USE_FILTER_SZIP_ENCODER ${testh5repack_detect_szip}) - endif (HDF5_ENABLE_SZIP_ENCODING) - - if (H5_HAVE_FILTER_DEFLATE) - set (USE_FILTER_DEFLATE "true") - endif (H5_HAVE_FILTER_DEFLATE) - - if (H5_HAVE_FILTER_SZIP) - set (USE_FILTER_SZIP "true") - endif (H5_HAVE_FILTER_SZIP) - -# copy files (these files have no filters) - ADD_H5_TEST (fill "TEST" ${FILE0}) - ADD_H5_TEST (objs "TEST" ${FILE1}) - ADD_H5_TEST (attr "TEST" ${FILE2}) - ADD_H5_TEST (hlink "TEST" ${FILE3}) - ADD_H5_TEST (layout "TEST" ${FILE4}) - ADD_H5_TEST (early "TEST" ${FILE5}) - -# use $FILE4 to write some filters (this file has no filters) - -# gzip with individual object - set (arg ${FILE4} -f dset1:GZIP=1 -l dset1:CHUNK=20x10) - set (TESTTYPE "TEST") - if (NOT USE_FILTER_DEFLATE) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_DEFLATE) - ADD_H5_TEST (gzip_individual ${TESTTYPE} ${arg}) - -# gzip for all - set (arg ${FILE4} -f GZIP=1) - set (TESTTYPE "TEST") - if (NOT USE_FILTER_DEFLATE) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_DEFLATE) - ADD_H5_TEST (gzip_all ${TESTTYPE} ${arg}) - -# szip with individual object - set (arg ${FILE4} -f dset2:SZIP=8,EC -l dset2:CHUNK=20x10) - set (TESTTYPE "TEST") - if (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP) - ADD_H5_TEST (szip_individual ${TESTTYPE} ${arg}) - -# szip for all - set (arg ${FILE4} -f SZIP=8,NN) - set (TESTTYPE "TEST") - if (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP) - ADD_H5_TEST (szip_all ${TESTTYPE} ${arg}) - -# shuffle with individual object - set (arg ${FILE4} -f dset2:SHUF -l dset2:CHUNK=20x10) - ADD_H5_TEST (shuffle_individual "TEST" ${arg}) - -# shuffle for all - set (arg ${FILE4} -f SHUF) - ADD_H5_TEST (shuffle_all "TEST" ${arg}) - -# fletcher32 with individual object - set (arg ${FILE4} -f dset2:FLET -l dset2:CHUNK=20x10) - ADD_H5_TEST (fletcher_individual "TEST" ${arg}) - -# fletcher32 for all - set (arg ${FILE4} -f FLET) - ADD_H5_TEST (fletcher_all "TEST" ${arg}) - -# all filters - set (arg ${FILE4} -f dset2:SHUF -f dset2:FLET -f dset2:SZIP=8,NN -f dset2:GZIP=1 -l dset2:CHUNK=20x10) - set (TESTTYPE "TEST") - if (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE) - ADD_H5_TEST (all_filters ${TESTTYPE} ${arg}) - -# verbose gzip with individual object - set (arg ${FILE11} -v -f /dset_deflate:GZIP=9) - set (TESTTYPE "TEST") - if (NOT USE_FILTER_DEFLATE) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_DEFLATE) - ADD_H5_CMP_TEST (gzip_verbose_filters "O?...ing file[^\n]+\n" ${TESTTYPE} 0 ${arg}) - -########################################################### -# the following tests assume the input files have filters -########################################################### - -# szip copy - set (arg ${FILE7}) - set (TESTTYPE "TEST") - if (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP) - ADD_H5_TEST (szip_copy ${TESTTYPE} ${arg}) - -# szip remove - set (arg ${FILE7} --filter=dset_szip:NONE) - set (TESTTYPE "TEST") - if (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP) - ADD_H5_TEST (szip_remove ${TESTTYPE} ${arg}) - -# deflate copy - set (arg ${FILE8}) - set (TESTTYPE "TEST") - if (NOT USE_FILTER_DEFLATE) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_DEFLATE) - ADD_H5_TEST (deflate_copy ${TESTTYPE} ${arg}) - -# deflate remove - set (arg ${FILE8} -f dset_deflate:NONE) - set (TESTTYPE "TEST") - if (NOT USE_FILTER_DEFLATE) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_DEFLATE) - ADD_H5_TEST (deflate_remove ${TESTTYPE} ${arg}) - -# shuffle copy - set (arg ${FILE9}) - ADD_H5_TEST (shuffle_copy "TEST" ${arg}) - -# shuffle remove - set (arg ${FILE9} -f dset_shuffle:NONE) - ADD_H5_TEST (shuffle_remove "TEST" ${arg}) - -# fletcher32 copy - set (arg ${FILE10}) - ADD_H5_TEST (fletcher_copy "TEST" ${arg}) - -# fletcher32 remove - set (arg ${FILE10} -f dset_fletcher32:NONE) - ADD_H5_TEST (fletcher_remove "TEST" ${arg}) - -# nbit copy - set (arg ${FILE12}) - ADD_H5_TEST (nbit_copy "TEST" ${arg}) - -# nbit remove - set (arg ${FILE12} -f dset_nbit:NONE) - ADD_H5_TEST (nbit_remove "TEST" ${arg}) - -# nbit add - set (arg ${FILE12} -f dset_int31:NBIT) - ADD_H5_TEST (nbit_add "TEST" ${arg}) - -# scaleoffset copy - set (arg ${FILE13}) - ADD_H5_TEST (scale_copy "TEST" ${arg}) - -# scaleoffset add - set (arg ${FILE13} -f dset_none:SOFF=31,IN) - ADD_H5_TEST (scale_add "TEST" ${arg}) - -# scaleoffset remove - set (arg ${FILE13} -f dset_scaleoffset:NONE) - ADD_H5_TEST (scale_remove "TEST" ${arg}) - -# remove all filters - set (arg ${FILE11} -f NONE) - set (TESTTYPE "TEST") - if (NOT USE_FILTER_DEFLATE OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_DEFLATE OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER) - ADD_H5_TEST (remove_all ${TESTTYPE} ${arg}) - -#filter conversions - set (arg ${FILE8} -f dset_deflate:SZIP=8,NN) - set (TESTTYPE "TEST") - if (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE) - ADD_H5_TEST (deflate_convert ${TESTTYPE} ${arg}) - - set (arg ${FILE7} -f dset_szip:GZIP=1) - set (TESTTYPE "TEST") - if (NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_DEFLATE) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_DEFLATE) - ADD_H5_TEST (szip_convert ${TESTTYPE} ${arg}) - -#limit - set (arg ${FILE4} -f GZIP=1 -m 1024) - set (TESTTYPE "TEST") - if (NOT USE_FILTER_DEFLATE) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_DEFLATE) - ADD_H5_DMP_TEST (deflate_limit ${TESTTYPE} 0 ${arg}) - -#file - set (arg ${FILE4} -e ${INFO_FILE}) - set (TESTTYPE "TEST") - if (NOT USE_FILTER_DEFLATE) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_DEFLATE) - ADD_H5_TEST (deflate_file ${TESTTYPE} ${arg}) - -######################################################### -# layout options (these files have no filters) -######################################################### - ADD_H5_VERIFY_TEST (dset2_chunk_20x10 "TEST" 0 ${FILE4} dset2 CHUNKED --layout=dset2:CHUNK=20x10) - ADD_H5_VERIFY_TEST (chunk_20x10 "TEST" 1 ${FILE4} null CHUNKED -l CHUNK=20x10) - ADD_H5_VERIFY_TEST (dset2_conti "TEST" 0 ${FILE4} dset2 CONTIGUOUS -l dset2:CONTI) - ADD_H5_VERIFY_TEST (conti "TEST" 1 ${FILE4} null CONTIGUOUS -l CONTI) - ADD_H5_VERIFY_TEST (dset2_compa "TEST" 0 ${FILE4} dset2 COMPACT -l dset2:COMPA) - ADD_H5_VERIFY_TEST (compa "TEST" 1 ${FILE4} null COMPACT -l COMPA) - ADD_H5_MASK_TEST (dset2_chunk_20x10-errstk "TEST" 0 ${FILE4} --layout=dset2:CHUNK=20x10x5 --enable-error-stack) - -################################################################ -# layout conversions (file has no filters) -############################################################### - ADD_H5_VERIFY_TEST (dset_compa_conti "TEST" 0 ${FILE4} dset_compact CONTIGUOUS -l dset_compact:CONTI) - ADD_H5_VERIFY_TEST (dset_compa_chunk "TEST" 0 ${FILE4} dset_compact CHUNKED -l dset_compact:CHUNK=2x5) - ADD_H5_VERIFY_TEST (dset_compa_compa "TEST" 0 ${FILE4} dset_compact COMPACT -l dset_compact:COMPA) - ADD_H5_VERIFY_TEST (dset_conti_compa "TEST" 0 ${FILE4} dset_contiguous COMPACT -l dset_contiguous:COMPA) - ADD_H5_VERIFY_TEST (dset_conti_chunk "TEST" 0 ${FILE4} dset_contiguous CHUNKED -l dset_contiguous:CHUNK=3x6) - ADD_H5_VERIFY_TEST (dset_conti_conti "TEST" 0 ${FILE4} dset_contiguous CONTIGUOUS -l dset_contiguous:CONTI) - ADD_H5_VERIFY_TEST (chunk_compa "TEST" 0 ${FILE4} dset_chunk COMPACT -l dset_chunk:COMPA) - ADD_H5_VERIFY_TEST (chunk_conti "TEST" 0 ${FILE4} dset_chunk CONTIGUOUS -l dset_chunk:CONTI) - ADD_H5_VERIFY_TEST (chunk_18x13 "TEST" 0 ${FILE4} dset_chunk CHUNKED -l dset_chunk:CHUNK=18x13) - -# test convert small size dataset ( < 1k) to compact layout without -m - ADD_H5_VERIFY_TEST (contig_small_compa "TEST" 0 ${FILE18} contig_small COMPACT -l contig_small:COMPA) - ADD_H5_VERIFY_TEST (contig_small_fixed_compa "TEST" 0 ${FILE18} chunked_small_fixed COMPACT -l chunked_small_fixed:COMPA) - -#--------------------------------------------------------------------------- -# Test file contains chunked datasets (need multiple dsets) with -# unlimited max dims. (HDFFV-7933) -# Use first dset to test. -#--------------------------------------------------------------------------- -# chunk to chunk - specify chunk dim bigger than any current dim - ADD_H5_VERIFY_TEST (chunk2chunk "TEST" 0 h5repack_layout3.h5 chunk_unlimit1 CHUNK -l chunk_unlimit1:CHUNK=100x300) - -# chunk to contiguous - ADD_H5_VERIFY_TEST (chunk2conti "TEST" 0 h5repack_layout3.h5 chunk_unlimit1 CONTI -l chunk_unlimit1:CONTI) - -# chunk to compact - convert big dataset (should be > 64k) for this purpose, -# should remain as original layout (chunk) - ADD_H5_VERIFY_TEST (chunk2compa "TEST" 0 h5repack_layout3.h5 chunk_unlimit1 CHUNK -l chunk_unlimit1:COMPA) - -#-------------------------------------------------------------------------- -# Test -f for some specific cases. Chunked dataset with unlimited max dims. -# (HDFFV-8012) -#-------------------------------------------------------------------------- -# - should not fail -# - should not change max dims from unlimit - -# chunk dim is bigger than dataset dim. ( dset size < 64k ) - ADD_H5_VERIFY_TEST (error1 "TEST" 0 h5repack_layout3.h5 chunk_unlimit1 H5S_UNLIMITED -f chunk_unlimit1:NONE) - -# chunk dim is bigger than dataset dim. ( dset size > 64k ) - ADD_H5_VERIFY_TEST (error2 "TEST" 0 h5repack_layout3.h5 chunk_unlimit2 H5S_UNLIMITED -f chunk_unlimit2:NONE) - -# chunk dims are smaller than dataset dims. ( dset size < 64k ) - ADD_H5_VERIFY_TEST (error3 "TEST" 0 h5repack_layout3.h5 chunk_unlimit3 H5S_UNLIMITED -f chunk_unlimit3:NONE) - -# file input - should not fail - ADD_H5_TEST (error4 "TEST" h5repack_layout3.h5 -f NONE) - -#-------------------------------------------------------------------------- -# Test base: Convert CHUNK to CONTI for a chunked dataset with small dataset -# (dset size < 64K) and with unlimited max dims on a condition as follow. -# (HDFFV-8214) -#-------------------------------------------------------------------------- -# chunk dim is bigger than dataset dim. should succeed. - ADD_H5_VERIFY_TEST (ckdim_biger "TEST" 0 h5repack_layout3.h5 chunk_unlimit2 CONTI -l chunk_unlimit2:CONTI) -# chunk dim is smaller than dataset dim. should succeed. - ADD_H5_VERIFY_TEST (ckdim_smaller "TEST" 0 h5repack_layout3.h5 chunk_unlimit3 CONTI -l chunk_unlimit3:CONTI) - - - -# Native option -# Do not use FILE1, as the named dtype will be converted to native, and h5diff will -# report a difference. - ADD_H5_TEST (native_fill "TEST" ${FILE0} -n) - ADD_H5_TEST (native_attr "TEST" ${FILE2} -n) - -# latest file format with long switches. use FILE4=h5repack_layout.h5 (no filters) - set (arg --layout CHUNK=20x10 --filter GZIP=1 --minimum=10 --native --latest --compact=8 --indexed=6 --ssize=8[:dtype]) - set (TESTTYPE "TEST") - if (NOT USE_FILTER_DEFLATE) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_DEFLATE) - ADD_H5_VERIFY_TEST (layout_long_switches ${TESTTYPE} 1 ${FILE4} null CHUNKED ${arg}) - -# latest file format with short switches. use FILE4=h5repack_layout.h5 (no filters) - set (arg -l CHUNK=20x10 -f GZIP=1 -m 10 -n -L -c 8 -d 6 -s 8[:dtype]) - set (TESTTYPE "TEST") - if (NOT USE_FILTER_DEFLATE) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_DEFLATE) - ADD_H5_VERIFY_TEST (layout_short_switches ${TESTTYPE} 1 ${FILE4} null CHUNKED ${arg}) - -# several global filters - set (arg ${FILE4} --filter GZIP=1 --filter SHUF) - set (TESTTYPE "TEST") - if (NOT USE_FILTER_DEFLATE) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_DEFLATE) - ADD_H5_TEST (global_filters ${TESTTYPE} ${arg}) - -# syntax of -i infile -o outfile -# latest file format with short switches. use FILE4=h5repack_layout.h5 (no filters) - set (arg ${FILE4} -l CHUNK=20x10 -f GZIP=1 -m 10 -n -L -c 8 -d 6 -s 8[:dtype]) - set (TESTTYPE "LEGACY") - if (NOT USE_FILTER_DEFLATE) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_DEFLATE) - ADD_H5_TEST_OLD (old_style_layout_short_switches ${TESTTYPE} ${arg}) - -# add a userblock to file - set (arg ${FILE1} -u ${PROJECT_BINARY_DIR}/testfiles/ublock.bin -b 2048) - ADD_H5_TEST (add_userblock "TEST" ${arg}) - -# add alignment - set (arg ${FILE1} -t 1 -a 1) - ADD_H5_TEST (add_alignment "TEST" ${arg}) - -# Check repacking file with old version of layout message (should get upgraded -# to new version and be readable, etc.) - ADD_H5_TEST (upgrade_layout "TEST" ${FILE14}) - -# test for datum size > H5TOOLS_MALLOCSIZE - ADD_H5_TEST (gt_mallocsize "TEST" ${FILE1} -f GZIP=1) - -# Check repacking file with committed datatypes in odd configurations - ADD_H5_TEST (committed_dt "TEST" ${FILE15}) - -# tests family driver (file is located in common testfiles folder, uses TOOLTEST1 - ADD_H5_TEST (family "TEST" ${FILE16}) - -# test various references (bug 1814 and 1726) - ADD_H5_TEST (bug1814 "TEST" ${FILE_REF}) - -# test attribute with various references (bug1797 / HDFFV-5932) -# the references in attribute of compund or vlen datatype - ADD_H5_TEST (HDFFV-5932 "TEST" ${FILE_ATTR_REF}) - -# Add test for memory leak in attirbute. This test is verified by CTEST. -# 1. leak from vlen string -# 2. leak from compound type without reference member -# (HDFFV-7840, ) -# Note: this test is experimental for sharing test file among tools - ADD_H5_TEST (HDFFV-7840 "TEST" h5diff_attr1.h5) - -# tests for metadata block size option ('-M') - ADD_H5_TEST_META (meta_short h5repack_layout.h5 -M 8192) - ADD_H5_TEST_META (meta_long h5repack_layout.h5 --metadata_block_size=8192) - -# VDS tests - -################################################################ -# layout conversions -############################################################### - set (TESTTYPE "TEST") - if (NOT USE_FILTER_DEFLATE) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_DEFLATE) - ADD_H5_VERIFY_VDS (vds_dset_chunk20x10x5 ${TESTTYPE} 0 ${FILEV1} vds_dset CHUNKED -l vds_dset:CHUNK=20x10x5) - - set (TESTTYPE "TEST") - if (NOT USE_FILTER_DEFLATE) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_DEFLATE) - ADD_H5_VERIFY_VDS (vds_chunk2x5x8 ${TESTTYPE} 0 ${FILEV3_1} vds_dset CHUNKED -l vds_dset:CHUNK=2x5x8) - - set (TESTTYPE "TEST") - if (NOT USE_FILTER_DEFLATE) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_DEFLATE) - ADD_H5_VERIFY_VDS (vds_chunk3x6x9 ${TESTTYPE} 0 ${FILEV2} vds_dset CHUNKED -l vds_dset:CHUNK=3x6x9) - - set (TESTTYPE "TEST") - if (NOT USE_FILTER_DEFLATE) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_DEFLATE) - ADD_H5_VERIFY_VDS (vds_compa ${TESTTYPE} 0 ${FILEV4} vds_dset COMPACT -l vds_dset:COMPA) - - set (TESTTYPE "TEST") - if (NOT USE_FILTER_DEFLATE) - set (TESTTYPE "SKIP") - endif (NOT USE_FILTER_DEFLATE) - ADD_H5_VERIFY_VDS (vds_conti ${TESTTYPE} 0 ${FILEV4} vds_dset CONTIGUOUS -l vds_dset:CONTI) - -############################################################################## -### P L U G I N T E S T S -############################################################################## - ADD_H5_UD_TEST (plugin_version_test 0 h5repack_layout.h5 -v -f UD=260,4,9,1,9,235) - ADD_H5_UD_TEST (plugin_test 0 h5repack_layout.h5 -v -f UD=257,1,9) - ADD_H5_UD_TEST (plugin_none 0 h5repack_layout.UD.h5 -v -f NONE) - # check for no parameters - set (TESTRETVAL 255) - if (WIN32) - set (TESTRETVAL -1) - endif() - ADD_H5_CMP_TEST (plugin_zero "" "TEST" ${TESTRETVAL} h5repack_layout.h5 -v -f UD=250,0) - - if (HDF5_TEST_VFD) - # Run test with different Virtual File Driver - foreach (vfd ${VFD_LIST}) - ADD_VFD_TEST (${vfd} 0) - endforeach (vfd ${VFD_LIST}) - endif (HDF5_TEST_VFD) diff --git a/tools/h5repack/Makefile.am b/tools/h5repack/Makefile.am deleted file mode 100644 index 5f32d73..0000000 --- a/tools/h5repack/Makefile.am +++ /dev/null @@ -1,79 +0,0 @@ -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -## -## Makefile.am -## Run automake to generate a Makefile.in from this file. -# -# HDF5 Library Makefile(.in) -# - -include $(top_srcdir)/config/commence.am - -# Include src, test, and tools/lib directories -AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/test -I$(top_srcdir)/tools/lib - -# Test programs and scripts -TEST_SCRIPT=h5repack.sh -TEST_PROG=h5repacktst -noinst_PROGRAMS=testh5repack_detect_szip - -SCRIPT_DEPEND=h5repack$(EXEEXT) -if HAVE_SHARED_CONDITIONAL -if USE_PLUGINS_CONDITIONAL - TEST_SCRIPT += h5repack_plugin.sh -endif -endif - -check_SCRIPTS=$(TEST_SCRIPT) -check_PROGRAMS=$(TEST_PROG) - -# Our main target, h5repack tool -bin_PROGRAMS=h5repack - -# Add h5repack specific linker flags here -h5repack_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) - -# Depend on the hdf5 library, the tools library, the test library -LDADD=$(LIBH5TOOLS) $(LIBH5TEST) $(LIBHDF5) - -# Source files -COMMON_SOURCES=h5repack.c h5repack_copy.c h5repack_filters.c \ - h5repack_opttable.c h5repack_parse.c h5repack_refs.c \ - h5repack_verify.c - -h5repack_SOURCES=$(COMMON_SOURCES) h5repack_main.c - -h5repacktst_SOURCES=$(COMMON_SOURCES) h5repacktst.c - -testh5repack_detect_szip_SOURCES=testh5repack_detect_szip.c - -# The h5repack.sh script needs h5repacktst to run first. -h5repack.sh.chkexe_: h5repacktst.chkexe_ - -if HAVE_SHARED_CONDITIONAL - # Build it as shared library if configure is enabled for shared library. - lib_LTLIBRARIES=libdynlibadd.la libdynlibvers.la - libdynlibadd_la_SOURCES=dynlib_rpk.c - libdynlibvers_la_SOURCES=dynlib_vrpk.c - -install-exec-hook: - $(RM) $(DESTDIR)$(libdir)/*dynlib* -endif - -# Temporary files. *.h5 are generated by h5repack. They should -# copied to the testfiles/ directory if update is required. -CHECK_CLEANFILES+=*.h5 *.bin testfiles/h5diff_attr1.h5 testfiles/tfamily*.h5 -DISTCLEANFILES=h5repack.sh h5repack_plugin.sh - -include $(top_srcdir)/config/conclude.am diff --git a/tools/h5repack/dynlib_rpk.c b/tools/h5repack/dynlib_rpk.c deleted file mode 100644 index 3469e58..0000000 --- a/tools/h5repack/dynlib_rpk.c +++ /dev/null @@ -1,97 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic document set and is * - * linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have access * - * to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -/* - * Programmer: Raymond Lu - * 13 February 2013 - * - * Purpose: Tests the plugin module (H5PL) - */ - -#include -#include -#include "H5PLextern.h" - -#define H5Z_FILTER_DYNLIB1 257 - -static size_t H5Z_filter_dynlib1(unsigned int flags, size_t cd_nelmts, - const unsigned int *cd_values, size_t nbytes, size_t *buf_size, void **buf); - -/* This message derives from H5Z */ -const H5Z_class2_t H5Z_DYNLIB1[1] = {{ - H5Z_CLASS_T_VERS, /* H5Z_class_t version */ - H5Z_FILTER_DYNLIB1, /* Filter id number */ - 1, 1, /* Encoding and decoding enabled */ - "dynlib1", /* Filter name for debugging */ - NULL, /* The "can apply" callback */ - NULL, /* The "set local" callback */ - (H5Z_func_t)H5Z_filter_dynlib1, /* The actual filter function */ -}}; - -H5PL_type_t H5PLget_plugin_type(void) {return H5PL_TYPE_FILTER;} -const void *H5PLget_plugin_info(void) {return H5Z_DYNLIB1;} - -/*------------------------------------------------------------------------- - * Function: H5Z_filter_dynlib1 - * - * Purpose: A dynlib1 filter method that adds on and subtract from - * the original value with another value. It will be built - * as a shared library. plugin.c test will load and use - * this filter library. - * - * Return: Success: Data chunk size - * - * Failure: 0 - * - * Programmer: Raymond Lu - * 29 March 2013 - * - *------------------------------------------------------------------------- - */ -static size_t -H5Z_filter_dynlib1(unsigned int flags, size_t cd_nelmts, - const unsigned int *cd_values, size_t nbytes, - size_t *buf_size, void **buf) -{ - int *int_ptr = (int *)*buf; /* Pointer to the data values */ - size_t buf_left = *buf_size; /* Amount of data buffer left to process */ - int add_on = 0; - - /* Check for the correct number of parameters */ - if(cd_nelmts == 0) - return 0; - - /* Check that permanent parameters are set correctly */ - if(cd_values[0] > 9) - return 0; - - add_on = (int)cd_values[0]; - - if(flags & H5Z_FLAG_REVERSE) { /*read*/ - /* Substract the "add on" value to all the data values */ - while(buf_left > 0) { - *int_ptr++ -= add_on; - buf_left -= sizeof(int); - } /* end while */ - } /* end if */ - else { /*write*/ - /* Add the "add on" value to all the data values */ - while(buf_left > 0) { - *int_ptr++ += add_on; - buf_left -= sizeof(int); - } /* end while */ - } /* end else */ - - return nbytes; -} /* end H5Z_filter_dynlib1() */ - diff --git a/tools/h5repack/h5repack.c b/tools/h5repack/h5repack.c deleted file mode 100644 index ef2085c..0000000 --- a/tools/h5repack/h5repack.c +++ /dev/null @@ -1,942 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include -#include -#include - -#include "H5private.h" -#include "h5repack.h" -#include "h5tools.h" -#include "h5tools_utils.h" - -/*------------------------------------------------------------------------- - * File: h5repack.c - * Purpose: Public API functions - *------------------------------------------------------------------------- - */ - -static int check_options(pack_opt_t *options); -static int check_objects(const char* fname, pack_opt_t *options); -static const char* get_sfilter(H5Z_filter_t filtn); -static int have_request(pack_opt_t *options); - -/*------------------------------------------------------------------------- - * Function: h5repack - * - * Purpose: locate all high-level HDF5 objects in the file - * and compress/chunk them using options - * - * Algorithm: 2 traversals are made to the file; the 1st builds a list of - * the objects, the 2nd makes a copy of them, using the options; - * the reason for the 1st traversal is to check for invalid - * object name requests - * - * Return: 0, ok, -1, fail - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: September, 22, 2003 - * - *------------------------------------------------------------------------- - */ -int h5repack(const char* infile, const char* outfile, pack_opt_t *options) { - /* check input */ - if (check_options(options) < 0) - return -1; - - /* check for objects in input that are in the file */ - if (check_objects(infile, options) < 0) - return -1; - - /* copy the objects */ - if (copy_objects(infile, outfile, options) < 0) - return -1; - - return 0; -} - -/*------------------------------------------------------------------------- - * Function: h5repack_init - * - * Purpose: initialize options - * - * Return: 0, ok, -1, fail - * - *------------------------------------------------------------------------- - */ -int h5repack_init(pack_opt_t *options, int verbose, hbool_t latest, - H5F_file_space_type_t strategy, hsize_t threshold) { - int k, n; - - HDmemset(options, 0, sizeof(pack_opt_t)); - options->min_comp = 0; - options->verbose = verbose; - options->latest = latest; - options->layout_g = H5D_LAYOUT_ERROR; - - for (n = 0; n < H5_REPACK_MAX_NFILTERS; n++) { - options->filter_g[n].filtn = -1; - options->filter_g[n].cd_nelmts = 0; - for (k = 0; k < CD_VALUES; k++) - options->filter_g[n].cd_values[k] = 0; - } - - options->fs_strategy = strategy; - options->fs_threshold = threshold; - - return (options_table_init(&(options->op_tbl))); -} - -/*------------------------------------------------------------------------- - * Function: h5repack_end - * - * Purpose: free options table - * - *------------------------------------------------------------------------- - */ - -int h5repack_end(pack_opt_t *options) { - return options_table_free(options->op_tbl); -} - -/*------------------------------------------------------------------------- - * Function: h5repack_addfilter - * - * Purpose: add a compression -f option to table - * Example: -f dset:GZIP=6 - * - * Return: 0, ok, -1, fail - * - *------------------------------------------------------------------------- - */ -int -h5repack_addfilter(const char* str, pack_opt_t *options) -{ - obj_list_t *obj_list = NULL; /* one object list for the -f and -l option entry */ - filter_info_t filter; /* filter info for the current -f option entry */ - unsigned n_objs; /* number of objects in the current -f or -l option entry */ - int is_glb; /* is the filter global */ - - /* parse the -f option */ - if (NULL == (obj_list = parse_filter(str, &n_objs, &filter, options, &is_glb))) - return -1; - - /* if it applies to all objects */ - if (is_glb) { - int n; - - n = options->n_filter_g++; /* increase # of global filters */ - if (options->n_filter_g > H5_REPACK_MAX_NFILTERS) { - error_msg("maximum number of filters exceeded for <%s>\n", str); - HDfree(obj_list); - return -1; - } - - options->filter_g[n] = filter; - } - else - options_add_filter(obj_list, n_objs, filter, options->op_tbl); - - HDfree(obj_list); - return 0; -} - -/*------------------------------------------------------------------------- - * Function: h5repack_addlayout - * - * Purpose: add a layout option - * - * Return: 0, ok, -1, fail - * - *------------------------------------------------------------------------- - */ -int -h5repack_addlayout(const char* str, pack_opt_t *options) -{ - obj_list_t *obj_list = NULL; /*one object list for the -t and -c option entry */ - unsigned n_objs; /*number of objects in the current -t or -c option entry */ - pack_info_t pack; /*info about layout to extract from parse */ - int j; - int ret_value = -1; - - init_packobject(&pack); - - if (options->all_layout == 1) { - error_msg( "invalid layout input: 'all' option is present with other objects <%s>\n", str); - return ret_value; - } - - /* parse the layout option */ - obj_list = parse_layout(str, &n_objs, &pack, options); - if (obj_list) { - /* set layout option */ - options->layout_g = pack.layout; - - /* no individual dataset specified */ - if (options->all_layout == 1) { - if (pack.layout == H5D_CHUNKED) { - /* -2 means the NONE option, remove chunking - and set the global layout to contiguous */ - if (pack.chunk.rank == -2) - options->layout_g = H5D_CONTIGUOUS; - /* otherwise set the global chunking type */ - else { - options->chunk_g.rank = pack.chunk.rank; - for (j = 0; j < pack.chunk.rank; j++) - options->chunk_g.chunk_lengths[j] = pack.chunk.chunk_lengths[j]; - } - } - } - - /* individual dataset specified */ - if (options->all_layout == 0) - ret_value = options_add_layout(obj_list, n_objs, &pack, options->op_tbl); - - HDfree(obj_list); - ret_value = 0; - } - - return ret_value; -} - -/* Note: The below copy_named_datatype(), named_datatype_free(), copy_attr() - * were located in h5repack_copy.c as static prior to bugfix1726. - * Made shared functions as copy_attr() was needed in h5repack_refs.c. - * However copy_attr() may be obsoleted when H5Acopy is available and put back - * others to static in h5repack_copy.c. - */ -/*------------------------------------------------------------------------- - * Function: copy_named_datatype - * - * Purpose: Copies the specified datatype anonymously, and returns an open - * id for that datatype in the output file. The first time this - * is called it scans every named datatype in travt into a - * private stack, afterwards it simply scans that stack. The id - * returned must be closed after it is no longer needed. - * named_datatype_free must be called before the program exits - * to free the stack. - * - * Programmer: Neil Fortner - * - * Date: April 14, 2009 - * - *------------------------------------------------------------------------- - */ -hid_t copy_named_datatype(hid_t type_in, hid_t fidout, - named_dt_t **named_dt_head_p, trav_table_t *travt, pack_opt_t *options) { - named_dt_t *dt = *named_dt_head_p; /* Stack pointer */ - named_dt_t *dt_ret = NULL; /* Datatype to return */ - H5O_info_t oinfo; /* Object info of input dtype */ - hid_t ret_value = -1; /* The identifier of the named dtype in the out file */ - - if (H5Oget_info(type_in, &oinfo) < 0) - goto done; - - if (*named_dt_head_p) { - /* Stack already exists, search for the datatype */ - while (dt && dt->addr_in != oinfo.addr) - dt = dt->next; - - dt_ret = dt; - } - else { - /* Create the stack */ - size_t i; - - for (i = 0; i < travt->nobjs; i++) { - if (travt->objs[i].type == H5TRAV_TYPE_NAMED_DATATYPE) { - /* Push onto the stack */ - if (NULL == (dt = (named_dt_t *) HDmalloc(sizeof(named_dt_t)))) { - goto done; - } - dt->next = *named_dt_head_p; - *named_dt_head_p = dt; - - /* Update the address and id */ - dt->addr_in = travt->objs[i].objno; - dt->id_out = -1; - - /* Check if this type is the one requested */ - if (oinfo.addr == dt->addr_in) { - HDassert(!dt_ret); - dt_ret = dt; - } /* end if */ - } /* end if */ - } /* end for */ - } /* end else */ - - /* Handle the case that the requested datatype was not found. This is - * possible if the datatype was committed anonymously in the input file. */ - if (!dt_ret) { - /* Push the new datatype onto the stack */ - if (NULL == (dt_ret = (named_dt_t *) HDmalloc(sizeof(named_dt_t)))) { - goto done; - } - dt_ret->next = *named_dt_head_p; - *named_dt_head_p = dt_ret; - - /* Update the address and id */ - dt_ret->addr_in = oinfo.addr; - dt_ret->id_out = -1; - } /* end if */ - - /* If the requested datatype does not yet exist in the output file, copy it - * anonymously */ - if (dt_ret->id_out < 0) { - if (options->use_native == 1) - dt_ret->id_out = h5tools_get_native_type(type_in); - else - dt_ret->id_out = H5Tcopy(type_in); - if (dt_ret->id_out < 0) - goto done; - if (H5Tcommit_anon(fidout, dt_ret->id_out, H5P_DEFAULT, H5P_DEFAULT) < 0) - goto done; - } /* end if */ - - /* Set return value */ - ret_value = dt_ret->id_out; - - /* Increment the ref count on id_out, because the calling function will try - * to close it */ - if(H5Iinc_ref(ret_value) < 0) { - ret_value = -1; - } - -done: - return (ret_value); -} /* end copy_named_datatype */ - -/*------------------------------------------------------------------------- - * Function: named_datatype_free - * - * Purpose: Frees the stack of named datatypes. - * - * Programmer: Neil Fortner - * - * Date: April 14, 2009 - * - *------------------------------------------------------------------------- - */ -int named_datatype_free(named_dt_t **named_dt_head_p, int ignore_err) { - named_dt_t *dt = *named_dt_head_p; - int ret_value = -1; - - while (dt) { - /* Pop the datatype off the stack and free it */ - if (H5Tclose(dt->id_out) < 0 && !ignore_err) - goto done; - dt = dt->next; - HDfree(*named_dt_head_p); - *named_dt_head_p = dt; - } /* end while */ - - ret_value = 0; - -done: - return (ret_value); -} /* end named_datatype_free */ - -/*------------------------------------------------------------------------- - * Function: copy_attr - * - * Purpose: copy attributes located in LOC_IN, which is obtained either from - * loc_id = H5Gopen2( fid, name); - * loc_id = H5Dopen2( fid, name); - * loc_id = H5Topen2( fid, name); - * - * Return: 0, ok, -1 no - * - * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu - * - * Date: October, 28, 2003 - * - *------------------------------------------------------------------------- - */ -int -copy_attr(hid_t loc_in, hid_t loc_out, named_dt_t **named_dt_head_p, - trav_table_t *travt, pack_opt_t *options) -{ - int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */ - hid_t attr_id = -1; /* attr ID */ - hid_t attr_out = -1; /* attr ID */ - hid_t space_id = -1; /* space ID */ - hid_t ftype_id = -1; /* file type ID */ - hid_t wtype_id = -1; /* read/write type ID */ - size_t msize; /* size of type */ - void *buf = NULL; /* data buffer */ - hsize_t nelmts; /* number of elements in dataset */ - int rank; /* rank of dataset */ - htri_t is_named; /* Whether the datatype is named */ - hsize_t dims[H5S_MAX_RANK];/* dimensions of dataset */ - char name[255]; - H5O_info_t oinfo; /* object info */ - int j; - unsigned u; - hbool_t is_ref = 0; - H5T_class_t type_class = -1; - - if (H5Oget_info(loc_in, &oinfo) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Oget_info failed"); - - /*------------------------------------------------------------------------- - * copy all attributes - *------------------------------------------------------------------------- - */ - for (u = 0; u < (unsigned) oinfo.num_attrs; u++) { - /* open attribute */ - if ((attr_id = H5Aopen_by_idx(loc_in, ".", H5_INDEX_CRT_ORDER, H5_ITER_INC, (hsize_t) u, H5P_DEFAULT, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aopen_by_idx failed"); - - /* get name */ - if (H5Aget_name(attr_id, (size_t) 255, name) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - - /* get the file datatype */ - if ((ftype_id = H5Aget_type(attr_id)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aget_type failed"); - - /* Check if the datatype is committed */ - if ((is_named = H5Tcommitted(ftype_id)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tcommitted failed"); - if (is_named && travt) { - hid_t fidout; - - /* Create out file id */ - if ((fidout = H5Iget_file_id(loc_out)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Iget_file_id failed"); - - /* Copy named dt */ - if ((wtype_id = copy_named_datatype(ftype_id, fidout, named_dt_head_p, travt, options)) < 0) { - H5Fclose(fidout); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_named_datatype failed"); - } /* end if */ - - if (H5Fclose(fidout) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Fclose failed"); - } /* end if */ - else { - if (options->use_native == 1) - wtype_id = h5tools_get_native_type(ftype_id); - else - wtype_id = H5Tcopy(ftype_id); - } /* end else */ - - /* get the dataspace handle */ - if ((space_id = H5Aget_space(attr_id)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aget_space failed"); - - /* get dimensions */ - if ((rank = H5Sget_simple_extent_dims(space_id, dims, NULL)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sget_simple_extent_dims failed"); - - nelmts = 1; - for (j = 0; j < rank; j++) - nelmts *= dims[j]; - - if ((msize = H5Tget_size(wtype_id)) == 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tget_size failed"); - - /*------------------------------------------------------------------------- - * object references are a special case. We cannot just copy the buffers, - * but instead we recreate the reference. - * This is done on a second sweep of the file that just copies the referenced - * objects at copy_refs_attr() - *------------------------------------------------------------------------- - */ - type_class = H5Tget_class(wtype_id); - is_ref = (type_class == H5T_REFERENCE); - if (type_class == H5T_VLEN || type_class == H5T_ARRAY) { - hid_t base_type = -1; - - base_type = H5Tget_super(ftype_id); - is_ref = (is_ref || (H5Tget_class(base_type) == H5T_REFERENCE)); - H5Tclose(base_type); - } - - if (type_class == H5T_COMPOUND) { - int nmembers = H5Tget_nmembers(wtype_id); - - for (j = 0; j < nmembers; j++) { - hid_t mtid = H5Tget_member_type(wtype_id, (unsigned) j); - H5T_class_t mtclass = H5Tget_class(mtid); - H5Tclose(mtid); - - if (mtclass == H5T_REFERENCE) { - is_ref = 1; - break; - } - } /* for (j=0; iverbose) - printf(FORMAT_OBJ_ATTR, "attr", name); - - /*------------------------------------------------------------------------- - * close - *------------------------------------------------------------------------- - */ - - if (H5Tclose(ftype_id) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed"); - if (H5Tclose(wtype_id) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed"); - if (H5Sclose(space_id) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sclose failed"); - if (H5Aclose(attr_id) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aclose failed"); - } /* u */ - - return 0; - -done: - H5E_BEGIN_TRY { - if (buf) { - /* Check if we have VL data and string in the attribute's datatype that must - * be reclaimed */ - if (TRUE == h5tools_detect_vlen(wtype_id)) - H5Dvlen_reclaim(wtype_id, space_id, H5P_DEFAULT, buf); - - /* Free buf */ - HDfree(buf); - } /* end if */ - - H5Tclose(ftype_id); - H5Tclose(wtype_id); - H5Sclose(space_id); - H5Aclose(attr_id); - H5Aclose(attr_out); - } H5E_END_TRY; - - return ret_value; -} /* end copy_attr() */ - -/*------------------------------------------------------------------------- - * Function: check_options - * - * Purpose: print options, checks for invalid options - * - * Return: void, return -1 on error - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: September, 22, 2003 - * - * Modification: - * Peter Cao, July 9, 2007 - * Add "-L, --latest" and other options to pack a file with the latest file format - * - *------------------------------------------------------------------------- - */ -static int check_options(pack_opt_t *options) { - unsigned int i; - int k, j, has_cp = 0, has_ck = 0; - char slayout[30]; - - /*------------------------------------------------------------------------- - * objects to layout - *------------------------------------------------------------------------- - */ - if (options->verbose && have_request(options) /* only print if requested */) { - printf("Objects to modify layout are...\n"); - if (options->all_layout == 1) { - switch (options->layout_g) { - case H5D_COMPACT: - strcpy(slayout, "compact"); - break; - case H5D_CONTIGUOUS: - strcpy(slayout, "contiguous"); - break; - case H5D_CHUNKED: - strcpy(slayout, "chunked"); - break; - case H5D_VIRTUAL: - strcpy(slayout, "virtual"); - break; - case H5D_LAYOUT_ERROR: - case H5D_NLAYOUTS: - error_msg("invalid layout\n"); - return -1; - default: - strcpy(slayout, "invalid layout\n"); - return -1; - } - printf(" Apply %s layout to all\n", slayout); - if (H5D_CHUNKED == options->layout_g) { - printf("with dimension ["); - for (j = 0; j < options->chunk_g.rank; j++) - printf("%d ", (int) options->chunk_g.chunk_lengths[j]); - printf("]\n"); - } - } - }/* verbose */ - - for (i = 0; i < options->op_tbl->nelems; i++) { - char* name = options->op_tbl->objs[i].path; - - if (options->op_tbl->objs[i].chunk.rank > 0) { - if (options->verbose) { - printf(" <%s> with chunk size ", name); - for (k = 0; k < options->op_tbl->objs[i].chunk.rank; k++) - printf("%d ", - (int) options->op_tbl->objs[i].chunk.chunk_lengths[k]); - printf("\n"); - } - has_ck = 1; - } - else if (options->op_tbl->objs[i].chunk.rank == -2) { - if (options->verbose) - printf(" <%s> %s\n", name, "NONE (contigous)"); - has_ck = 1; - } - } - - if (options->all_layout == 1 && has_ck) { - error_msg( - "invalid chunking input: 'all' option\ - is present with other objects\n"); - return -1; - } - - /*------------------------------------------------------------------------- - * objects to filter - *------------------------------------------------------------------------- - */ - - if (options->verbose && have_request(options) /* only print if requested */) { - printf("Objects to apply filter are...\n"); - if (options->all_filter == 1) { - for (k = 0; k < options->n_filter_g; k++) { - H5Z_filter_t filtn = options->filter_g[k].filtn; - switch (filtn) { - case H5Z_FILTER_NONE: - printf(" Uncompress all\n"); - break; - case H5Z_FILTER_SHUFFLE: - case H5Z_FILTER_FLETCHER32: - printf(" All with %s\n", get_sfilter(filtn)); - break; - case H5Z_FILTER_SZIP: - case H5Z_FILTER_DEFLATE: - printf(" All with %s, parameter %d\n", get_sfilter(filtn), - options->filter_g[k].cd_values[0]); - break; - default: - printf(" User Defined %d\n", filtn); - break; - } /* k */ - }; - } - } /* verbose */ - - for (i = 0; i < options->op_tbl->nelems; i++) { - pack_info_t pack = options->op_tbl->objs[i]; - char* name = pack.path; - - for (j = 0; j < pack.nfilters; j++) { - if (options->verbose) { - printf(" <%s> with %s filter\n", name, - get_sfilter(pack.filter[j].filtn)); - } - - has_cp = 1; - - } /* j */ - } /* i */ - - if (options->all_filter == 1 && has_cp) { - error_msg( - "invalid compression input: 'all' option\ - is present with other objects\n"); - return -1; - } - - /*------------------------------------------------------------------------- - * check options for the latest format - *------------------------------------------------------------------------- - */ - - if (options->grp_compact < 0) { - error_msg( - "invalid maximum number of links to store as header messages\n"); - return -1; - } - if (options->grp_indexed < 0) { - error_msg( - "invalid minimum number of links to store in the indexed format\n"); - return -1; - } - if (options->grp_indexed > options->grp_compact) { - error_msg( - "minimum indexed size is greater than the maximum compact size\n"); - return -1; - } - for (i = 0; i < 8; i++) { - if (options->msg_size[i] < 0) { - error_msg("invalid shared message size\n"); - return -1; - } - } - - /*-------------------------------------------------------------------------------- - * verify new user userblock options; file name must be present - *--------------------------------------------------------------------------------- - */ - if (options->ublock_filename != NULL && options->ublock_size == 0) { - if (options->verbose) { - printf( - "Warning: user block size missing for file %s. Assigning a default size of 1024...\n", - options->ublock_filename); - options->ublock_size = 1024; - } - } - - if (options->ublock_filename == NULL && options->ublock_size != 0) { - error_msg("file name missing for user block\n", - options->ublock_filename); - return -1; - } - - /*-------------------------------------------------------------------------------- - * verify alignment options; threshold is zero default but alignment not - *--------------------------------------------------------------------------------- - */ - - if (options->alignment == 0 && options->threshold != 0) { - error_msg("alignment for H5Pset_alignment missing\n"); - return -1; - } - - return 0; -} - -/*------------------------------------------------------------------------- - * Function: check_objects - * - * Purpose: locate all HDF5 objects in the file and compare with user - * supplied list - * - * Return: 0, ok, -1 no - * - * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu - * - * Date: September, 23, 2003 - * - *------------------------------------------------------------------------- - */ -static int check_objects(const char* fname, pack_opt_t *options) { - hid_t fid; - unsigned int i; - trav_table_t *travt = NULL; - - /* nothing to do */ - if (options->op_tbl->nelems == 0) - return 0; - - /*------------------------------------------------------------------------- - * open the file - *------------------------------------------------------------------------- - */ - if ((fid = h5tools_fopen(fname, H5F_ACC_RDONLY, H5P_DEFAULT, NULL, NULL, 0)) - < 0) { - printf("<%s>: %s\n", fname, H5FOPENERROR); - return -1; - } - - /*------------------------------------------------------------------------- - * get the list of objects in the file - *------------------------------------------------------------------------- - */ - - /* init table */ - trav_table_init(&travt); - - /* get the list of objects in the file */ - if (h5trav_gettable(fid, travt) < 0) - goto out; - - /*------------------------------------------------------------------------- - * compare with user supplied list - *------------------------------------------------------------------------- - */ - - if (options->verbose) - printf("Opening file <%s>. Searching for objects to modify...\n", - fname); - - for (i = 0; i < options->op_tbl->nelems; i++) { - char* name = options->op_tbl->objs[i].path; - if (options->verbose) - printf(" <%s>", name); - - /* the input object names are present in the file and are valid */ - if (h5trav_getindext(name, travt) < 0) { - error_msg("%s Could not find <%s> in file <%s>. Exiting...\n", - (options->verbose ? "\n" : ""), name, fname); - goto out; - } - if (options->verbose) - printf("...Found\n"); - - /* check for extra filter conditions */ - switch (options->op_tbl->objs[i].filter->filtn) { - /* chunk size must be smaller than pixels per block */ - case H5Z_FILTER_SZIP: - { - int j; - hsize_t csize = 1; - unsigned ppb = options->op_tbl->objs[i].filter->cd_values[0]; - hsize_t dims[H5S_MAX_RANK]; - int rank; - hid_t did; - hid_t sid; - - if (options->op_tbl->objs[i].chunk.rank > 0) { - rank = options->op_tbl->objs[i].chunk.rank; - for (j = 0; j < rank; j++) - csize *= options->op_tbl->objs[i].chunk.chunk_lengths[j]; - } - else { - if ((did = H5Dopen2(fid, name, H5P_DEFAULT)) < 0) - goto out; - if ((sid = H5Dget_space(did)) < 0) - goto out; - if ((rank = H5Sget_simple_extent_ndims(sid)) < 0) - goto out; - HDmemset(dims, 0, sizeof dims); - if (H5Sget_simple_extent_dims(sid, dims, NULL) < 0) - goto out; - for (j = 0; j < rank; j++) - csize *= dims[j]; - if (H5Sclose(sid) < 0) - goto out; - if (H5Dclose(did) < 0) - goto out; - } - - if (csize < ppb) { - printf( - " \n"); - goto out; - } - } - break; - default: - break; - } - } /* i */ - - /*------------------------------------------------------------------------- - * close - *------------------------------------------------------------------------- - */ - H5Fclose(fid); - trav_table_free(travt); - return 0; - -out: - H5Fclose(fid); - trav_table_free(travt); - return -1; -} - -/*------------------------------------------------------------------------- - * Function: have_request - * - * Purpose: check if a filter or layout was requested - * - * Return: 1 yes, 0 no - * - * Date: May, 24, 2007 - * - *------------------------------------------------------------------------- - */ -static int have_request(pack_opt_t *options) { - - if (options->all_filter || options->all_layout || options->op_tbl->nelems) - return 1; - - return 0; - -} - -/*------------------------------------------------------------------------- - * Function: get_sfilter - * - * Purpose: return the filter as a string name - * - * Return: name of filter, exit on error - * - *------------------------------------------------------------------------- - */ - -static const char* get_sfilter(H5Z_filter_t filtn) { - if (filtn == H5Z_FILTER_NONE) - return "NONE"; - else if (filtn == H5Z_FILTER_DEFLATE) - return "GZIP"; - else if (filtn == H5Z_FILTER_SZIP) - return "SZIP"; - else if (filtn == H5Z_FILTER_SHUFFLE) - return "SHUFFLE"; - else if (filtn == H5Z_FILTER_FLETCHER32) - return "FLETCHER32"; - else if (filtn == H5Z_FILTER_NBIT) - return "NBIT"; - else if (filtn == H5Z_FILTER_SCALEOFFSET) - return "SOFF"; - else - return "UD"; -} - diff --git a/tools/h5repack/h5repack.h b/tools/h5repack/h5repack.h deleted file mode 100644 index d2ab923..0000000 --- a/tools/h5repack/h5repack.h +++ /dev/null @@ -1,243 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -#ifndef H5REPACK_H__ -#define H5REPACK_H__ - -#include "H5private.h" -#include "hdf5.h" -#include "h5trav.h" - -#define H5FOPENERROR "unable to open file" -#define PFORMAT "%-7s %-7s %-7s\n" /* chunk info, compression info, name*/ -#define PFORMAT1 "%-7s %-7s %-7s" /* chunk info, compression info, name*/ -#define MAX_NC_NAME 256 /* max length of a name */ -#define MAX_VAR_DIMS 32 /* max per variable dimensions */ -#define FORMAT_OBJ " %-27s %s\n" /* obj type, name */ -#define FORMAT_OBJ_ATTR " %-27s %s\n" /* obj type, name */ -#define MAX_COMPACT_DSIZE 64512 /* max data size for compact layout. -1k for header size */ - -/*------------------------------------------------------------------------- - * data structures for command line options - *------------------------------------------------------------------------- - */ - -/* a list of names */ -typedef struct { - char obj[MAX_NC_NAME]; -} obj_list_t; - -/* - the type of filter and additional parameter - type can be one of the filters - H5Z_FILTER_NONE 0, uncompress if compressed - H5Z_FILTER_DEFLATE 1 , deflation like gzip - H5Z_FILTER_SHUFFLE 2 , shuffle the data - H5Z_FILTER_FLETCHER32 3 , letcher32 checksum of EDC - H5Z_FILTER_SZIP 4 , szip compression - H5Z_FILTER_NBIT 5 , nbit compression - H5Z_FILTER_SCALEOFFSET 6 , scaleoffset compression -*/ - -#define CD_VALUES 20 - -typedef struct { - H5Z_filter_t filtn; /* filter identification number */ - unsigned cd_values[CD_VALUES]; /* filter client data values */ - size_t cd_nelmts; /* filter client number of values */ -} filter_info_t; - -/* chunk lengths along each dimension and rank */ -typedef struct { - hsize_t chunk_lengths[MAX_VAR_DIMS]; - int rank; -} chunk_info_t; - -/* we currently define a maximum value for the filters array, - that corresponds to the current library filters */ -#define H5_REPACK_MAX_NFILTERS 6 - -/* information for one object, contains PATH, CHUNK info and FILTER info */ -typedef struct { - char path[MAX_NC_NAME]; /* name of object */ - filter_info_t filter[H5_REPACK_MAX_NFILTERS]; /* filter array */ - int nfilters; /* current number of filters */ - H5D_layout_t layout; /* layout information */ - chunk_info_t chunk; /* chunk information */ - hid_t refobj_id; /* object ID, references */ -} pack_info_t; - -/* store a table of all objects */ -typedef struct { - unsigned int size; - unsigned int nelems; - pack_info_t *objs; -} pack_opttbl_t; - - -/*------------------------------------------------------------------------- - * command line options - *------------------------------------------------------------------------- - */ - -/* all the above, ready to go to the hrepack call */ -typedef struct { - pack_opttbl_t *op_tbl; /*table with all -c and -f options */ - int all_layout; /*apply the layout to all objects */ - int all_filter; /*apply the filter to all objects */ - filter_info_t filter_g[H5_REPACK_MAX_NFILTERS]; /*global filter array for the ALL case */ - int n_filter_g; /*number of global filters */ - chunk_info_t chunk_g; /*global chunk INFO for the ALL case */ - H5D_layout_t layout_g; /*global layout information for the ALL case */ - int verbose; /*verbose mode */ - hsize_t min_comp; /*minimum size to compress, in bytes */ - int use_native; /*use a native type in write */ - hbool_t latest; /*pack file with the latest file format */ - int grp_compact; /* Set the maximum number of links to store as header messages in the group */ - int grp_indexed; /* Set the minimum number of links to store in the indexed format */ - int msg_size[8]; /* Minimum size of shared messages: dataspace, - datatype, fill value, filter pipleline, attribute */ - const char *ublock_filename; /* user block file name */ - hsize_t ublock_size; /* user block size */ - hsize_t meta_block_size; /* metadata aggregation block size (for H5Pset_meta_block_size) */ - hsize_t threshold; /* alignment threshold for H5Pset_alignment */ - hsize_t alignment; /* alignment for H5Pset_alignment */ - H5F_file_space_type_t fs_strategy; /* File space handling strategy */ - hsize_t fs_threshold; /* Free space section threshold */ -} pack_opt_t; - - -typedef struct named_dt_t { - haddr_t addr_in; /* Address of the named dtype in the in file */ - hid_t id_out; /* Open identifier for the dtype in the out file */ - struct named_dt_t *next; /* Next dtype */ -} named_dt_t; - -/*------------------------------------------------------------------------- - * public functions - *------------------------------------------------------------------------- - */ - -#ifdef __cplusplus -extern "C" { -#endif - -int h5repack(const char* infile, const char* outfile, pack_opt_t *options); -int h5repack_addfilter(const char* str, pack_opt_t *options); -int h5repack_addlayout(const char* str, pack_opt_t *options); -int h5repack_init(pack_opt_t *options, int verbose, hbool_t latest, - H5F_file_space_type_t strategy, hsize_t threshold); -int h5repack_end(pack_opt_t *options); -int h5repack_verify(const char *in_fname, const char *out_fname, pack_opt_t *options); -int h5repack_cmp_pl(const char *fname1, const char *fname2); - -/* Note: The below copy_named_datatype(), named_datatype_free(), copy_attr() - * and struct named_dt_t were located in h5repack_copy.c as static prior to - * bugfix1726. - * Made shared functions as copy_attr() was needed in h5repack_refs.c. - * However copy_attr() may be obsoleted when H5Acopy is available and put back - * others to static in h5repack_copy.c. - */ -hid_t copy_named_datatype(hid_t type_in, hid_t fidout, named_dt_t **named_dt_head_p, trav_table_t *travt, pack_opt_t *options); -int named_datatype_free(named_dt_t **named_dt_head_p, int ignore_err); -int copy_attr(hid_t loc_in, hid_t loc_out, named_dt_t **named_dt_head_p, - trav_table_t *travt, pack_opt_t *options); - -#ifdef __cplusplus -} -#endif - - - -/*------------------------------------------------------------------------- - * private functions - *------------------------------------------------------------------------- - */ - - -/*------------------------------------------------------------------------- - * copy module - *------------------------------------------------------------------------- - */ - -int copy_objects (const char* fnamein, - const char* fnameout, - pack_opt_t *options); - -int do_copy_refobjs(hid_t fidin, - hid_t fidout, - trav_table_t *travt, - pack_opt_t *options); - -/*------------------------------------------------------------------------- - * filters and verify module - *------------------------------------------------------------------------- - */ -void init_packobject(pack_info_t *obj); - - -/*------------------------------------------------------------------------- - * filters and copy module - *------------------------------------------------------------------------- - */ - -int apply_filters(const char* name, /* object name from traverse list */ - int rank, /* rank of dataset */ - hsize_t *dims, /* dimensions of dataset */ - size_t msize, /* size of type */ - hid_t dcpl_id, /* dataset creation property list */ - pack_opt_t *options, /* repack options */ - int *has_filter); /* (OUT) object NAME has a filter */ - - -/*------------------------------------------------------------------------- - * options table - *------------------------------------------------------------------------- - */ -int options_table_init( pack_opttbl_t **tbl ); -int options_table_free( pack_opttbl_t *table ); -int options_add_layout( obj_list_t *obj_list, - unsigned n_objs, - pack_info_t *pack, - pack_opttbl_t *table ); -int options_add_filter ( obj_list_t *obj_list, - unsigned n_objs, - filter_info_t filt, - pack_opttbl_t *table ); -pack_info_t* options_get_object( const char *path, - pack_opttbl_t *table); - -/*------------------------------------------------------------------------- - * parse functions - *------------------------------------------------------------------------- - */ - -obj_list_t* parse_filter(const char *str, - unsigned *n_objs, - filter_info_t *filt, - pack_opt_t *options, - int *is_glb); - -obj_list_t* parse_layout(const char *str, - unsigned *n_objs, - pack_info_t *pack, /* info about object */ - pack_opt_t *options); - - - - -#endif /* H5REPACK_H__ */ - diff --git a/tools/h5repack/h5repack.sh.in b/tools/h5repack/h5repack.sh.in deleted file mode 100644 index c2f0459..0000000 --- a/tools/h5repack/h5repack.sh.in +++ /dev/null @@ -1,1265 +0,0 @@ -#! /bin/sh -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -# -# Tests for the h5repack tool -# -# Modification: -# Pedro Vicente Nunes, 11/15/2006 -# Added $FILEN variables for file names -# - -srcdir=@srcdir@ - -USE_FILTER_SZIP="@USE_FILTER_SZIP@" -USE_FILTER_DEFLATE="@USE_FILTER_DEFLATE@" - -TESTNAME=h5repack -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -H5REPACK=h5repack # The tool name -H5REPACK_BIN=`pwd`/$H5REPACK # The path of the tool binary - -H5DIFF=../h5diff/h5diff # The h5diff tool name -H5DIFF_BIN=`pwd`/$H5DIFF # The path of the h5diff tool binary - -H5DUMP=../h5dump/h5dump # The h5dump tool name -H5DUMP_BIN=`pwd`/$H5DUMP # The path of the h5dump tool binary - -RM='rm -rf' -CMP='cmp' -DIFF='diff -c' -GREP='grep' -CP='cp' -DIRNAME='dirname' -LS='ls' -AWK='awk' - -H5DETECTSZIP=testh5repack_detect_szip -H5DETECTSZIP_BIN=`pwd`/$H5DETECTSZIP - - -nerrors=0 -verbose=yes - -# source dirs -SRC_TOOLS="$srcdir/.." -SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles" - -# testfiles source dirs for tools -SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles" -SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles" -SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles" -SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles" -SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles" -SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles" - -TESTDIR=./testpack -test -d $TESTDIR || mkdir $TESTDIR - -###################################################################### -# test files -# -------------------------------------------------------------------- -# All the test files copy from source directory to test directory -# NOTE: Keep this framework to add/remove test files. -# Any test files from other tools can be used in this framework. -# This list are also used for checking exist. -# Comment '#' without space can be used. -# -------------------------------------------------------------------- -LIST_HDF5_TEST_FILES=" -$SRC_H5REPACK_TESTFILES/h5repack_attr.h5 -$SRC_H5REPACK_TESTFILES/h5repack_attr_refs.h5 -$SRC_H5REPACK_TESTFILES/h5repack_deflate.h5 -$SRC_H5REPACK_TESTFILES/h5repack_early.h5 -$SRC_H5REPACK_TESTFILES/h5repack_ext.h5 -$SRC_H5REPACK_TESTFILES/h5repack_fill.h5 -$SRC_H5REPACK_TESTFILES/h5repack_filters.h5 -$SRC_H5REPACK_TESTFILES/h5repack_fletcher.h5 -$SRC_H5REPACK_TESTFILES/h5repack_hlink.h5 -$SRC_H5REPACK_TESTFILES/h5repack_layout.h5 -$SRC_H5REPACK_TESTFILES/h5repack_layouto.h5 -$SRC_H5REPACK_TESTFILES/h5repack_layout2.h5 -$SRC_H5REPACK_TESTFILES/h5repack_layout3.h5 -$SRC_H5REPACK_TESTFILES/h5repack_named_dtypes.h5 -$SRC_H5REPACK_TESTFILES/h5repack_nested_8bit_enum.h5 -$SRC_H5REPACK_TESTFILES/h5repack_nested_8bit_enum_deflated.h5 -$SRC_H5REPACK_TESTFILES/h5repack_nbit.h5 -$SRC_H5REPACK_TESTFILES/h5repack_objs.h5 -$SRC_H5REPACK_TESTFILES/h5repack_refs.h5 -$SRC_H5REPACK_TESTFILES/h5repack_shuffle.h5 -$SRC_H5REPACK_TESTFILES/h5repack_soffset.h5 -$SRC_H5REPACK_TESTFILES/h5repack_szip.h5 -$SRC_H5DIFF_TESTFILES/h5diff_attr1.h5 -$SRC_TOOLS_TESTFILES/tfamily00000.h5 -$SRC_TOOLS_TESTFILES/tfamily00001.h5 -$SRC_TOOLS_TESTFILES/tfamily00002.h5 -$SRC_TOOLS_TESTFILES/tfamily00003.h5 -$SRC_TOOLS_TESTFILES/tfamily00004.h5 -$SRC_TOOLS_TESTFILES/tfamily00005.h5 -$SRC_TOOLS_TESTFILES/tfamily00006.h5 -$SRC_TOOLS_TESTFILES/tfamily00007.h5 -$SRC_TOOLS_TESTFILES/tfamily00008.h5 -$SRC_TOOLS_TESTFILES/tfamily00009.h5 -$SRC_TOOLS_TESTFILES/tfamily00010.h5 -$SRC_TOOLS_TESTFILES/vds/1_a.h5 -$SRC_TOOLS_TESTFILES/vds/1_b.h5 -$SRC_TOOLS_TESTFILES/vds/1_c.h5 -$SRC_TOOLS_TESTFILES/vds/1_d.h5 -$SRC_TOOLS_TESTFILES/vds/1_e.h5 -$SRC_TOOLS_TESTFILES/vds/1_f.h5 -$SRC_TOOLS_TESTFILES/vds/1_vds.h5 -$SRC_TOOLS_TESTFILES/vds/2_a.h5 -$SRC_TOOLS_TESTFILES/vds/2_b.h5 -$SRC_TOOLS_TESTFILES/vds/2_c.h5 -$SRC_TOOLS_TESTFILES/vds/2_d.h5 -$SRC_TOOLS_TESTFILES/vds/2_e.h5 -$SRC_TOOLS_TESTFILES/vds/2_vds.h5 -$SRC_TOOLS_TESTFILES/vds/3_1_vds.h5 -$SRC_TOOLS_TESTFILES/vds/3_2_vds.h5 -$SRC_TOOLS_TESTFILES/vds/4_0.h5 -$SRC_TOOLS_TESTFILES/vds/4_1.h5 -$SRC_TOOLS_TESTFILES/vds/4_2.h5 -$SRC_TOOLS_TESTFILES/vds/4_vds.h5 -$SRC_TOOLS_TESTFILES/vds/5_a.h5 -$SRC_TOOLS_TESTFILES/vds/5_b.h5 -$SRC_TOOLS_TESTFILES/vds/5_c.h5 -$SRC_TOOLS_TESTFILES/vds/5_vds.h5 -" - -LIST_OTHER_TEST_FILES=" -$SRC_H5REPACK_TESTFILES/h5repack-help.txt -$SRC_H5REPACK_TESTFILES/h5repack_ext.bin -$SRC_H5REPACK_TESTFILES/ublock.bin -$SRC_H5REPACK_TESTFILES/h5repack.info -$SRC_H5REPACK_TESTFILES/deflate_limit.h5repack_layout.h5.ddl -$SRC_H5REPACK_TESTFILES/h5repack_layout.h5.ddl -$SRC_H5REPACK_TESTFILES/h5repack_filters.h5-gzip_verbose_filters.tst -$SRC_H5REPACK_TESTFILES/h5repack_layout.h5-dset2_chunk_20x10-errstk.tst -$SRC_H5REPACK_TESTFILES/h5repack_layout.h5-plugin_test.ddl -$SRC_H5REPACK_TESTFILES/plugin_test.h5repack_layout.h5.tst -$SRC_H5REPACK_TESTFILES/1_vds.h5-vds_dset_chunk20x10x5-v.ddl -$SRC_H5REPACK_TESTFILES/2_vds.h5-vds_chunk3x6x9-v.ddl -$SRC_H5REPACK_TESTFILES/3_1_vds.h5-vds_chunk2x5x8-v.ddl -$SRC_H5REPACK_TESTFILES/4_vds.h5-vds_compa-v.ddl -$SRC_H5REPACK_TESTFILES/4_vds.h5-vds_conti-v.ddl -" - -# -# copy test files and expected output files from source dirs to test dir -# -COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES" - -COPY_TESTFILES_TO_TESTDIR() -{ - # copy test files. Used -f to make sure get a new copy - for tstfile in $COPY_TESTFILES - do - # ignore '#' comment - echo $tstfile | tr -d ' ' | grep '^#' > /dev/null - RET=$? - if [ $RET -eq 1 ]; then - # skip cp if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=`$DIRNAME $tstfile` - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $CP -f $tstfile $TESTDIR - if [ $? -ne 0 ]; then - echo "Error: FAILED to copy $tstfile ." - - # Comment out this to CREATE expected file - exit $EXIT_FAILURE - fi - fi - fi - done -} - -CLEAN_TESTFILES_AND_TESTDIR() -{ - # skip rm if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=$SRC_H5REPACK_TESTFILES - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $RM $TESTDIR - fi -} - -# Print a $* message left justified in a field of 70 characters -# -MESSAGE() { - SPACES=" " - echo "$* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Testing". -# -TESTING() { - MESSAGE "Testing $*" -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Verifying". -# -VERIFY() { - MESSAGE "Verifying $*" -} - -# Print a message that a test has been skipped (because a required filter -# was unavailable) -SKIP() { - TESTING $H5REPACK $@ - echo " -SKIP-" -} - -# Call the h5diff tool -# -DIFFTEST() -{ - VERIFY h5diff output $@ - ( - cd $TESTDIR - $RUNSERIAL $H5DIFF_BIN -q "$@" - ) - RET=$? - if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - fi - -} - -# Call h5repack -# - - -# call TOOLTEST_MAIN and delete $output file -TOOLTEST() -{ - echo $@ - infile=$2 - outfile=out-$1.$2 - shift - shift - - # Run test. - TESTING $H5REPACK $@ - ( - cd $TESTDIR - $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile - ) - RET=$? - if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - DIFFTEST $infile $outfile - fi - rm -f $outfile -} - -#------------------------------------------ -# Verifying layouts of a dataset -VERIFY_LAYOUT_DSET() -{ - layoutfile=layout-$1.$2 - dset=$3 - expectlayout=$4 - infile=$2 - outfile=out-$1.$2 - shift - shift - shift - shift - - TESTING $H5REPACK $@ - ( - cd $TESTDIR - $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile - ) - RET=$? - if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - DIFFTEST $infile $outfile - fi - - #--------------------------------- - # check the layout from a dataset - VERIFY "a dataset layout" - ( - cd $TESTDIR - $RUNSERIAL $H5DUMP_BIN -d $dset -pH $outfile > $layoutfile - ) - $GREP $expectlayout $TESTDIR/$layoutfile > /dev/null - if [ $? -eq 0 ]; then - echo " PASSED" - else - echo " FAILED" - nerrors="`expr $nerrors + 1`" - fi - - # clean up tmp files - rm -f $outfile - rm -f $layoutfile -} - -#------------------------------------------ -# Verifying layouts of a dataset -VERIFY_LAYOUT_VDS() -{ - layoutfile=layout-$1.$2 - dset=$3 - expectlayout=$4 - infile=$2 - outfile=out-$1.$2 - - expect="$TESTDIR/$2-$1-v.ddl" - actual="$TESTDIR/$2-$1-v.out" - actual_err="$TESTDIR/$2-$1-v.err" - - shift - shift - shift - shift - - TESTING $H5REPACK $@ - ( - cd $TESTDIR - $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile - ) - RET=$? - if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - fi - - #--------------------------------- - # check the layout from a dataset - VERIFY "a dataset layout" - ( - cd $TESTDIR - $RUNSERIAL $H5DUMP_BIN -d $dset -p $outfile - ) >$actual 2>$actual_err - - cat $actual_err >> $actual - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual > /dev/null 2>&1 ; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.ddl) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $caseless $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err - fi - - # clean up tmp files - rm -f $outfile -} - -#---------------------------------------- -# Verifying layouts from entire file -VERIFY_LAYOUT_ALL() -{ - infile=$2 - outfile=out-$1.$2 - layoutfile=layout-$1.$2 - expectlayout=$3 - shift - shift - shift - - TESTING $H5REPACK $@ - ( - cd $TESTDIR - $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile - ) - RET=$? - if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - DIFFTEST $infile $outfile - fi - - - #--------------------------------- - # check the layout from a dataset - # check if the other layouts still exsit - VERIFY "layouts" - ( - cd $TESTDIR - echo - # if CONTIGUOUS - if [ $expectlayout = "CONTIGUOUS" ]; then - TESTING $H5DUMP_BIN -pH $outfile - ( - $RUNSERIAL $H5DUMP_BIN -pH $outfile > $layoutfile - ) - $GREP "COMPACT" $layoutfile > /dev/null - if [ $? -eq 0 ]; then - echo " FAILED" - nerrors="`expr $nerrors + 1`" - else - $GREP "CHUNKED" $layoutfile > /dev/null - if [ $? -eq 0 ]; then - echo " FAILED" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - fi - fi - else - # if COMPACT - if [ $expectlayout = "COMPACT" ]; then - TESTING $H5DUMP_BIN -pH $outfile - ( - $RUNSERIAL $H5DUMP_BIN -pH $outfile > $layoutfile - ) - $GREP "CHUNKED" $layoutfile > /dev/null - if [ $? -eq 0 ]; then - echo " FAILED" - nerrors="`expr $nerrors + 1`" - else - $GREP "CONTIGUOUS" $layoutfile > /dev/null - if [ $? -eq 0 ]; then - echo " FAILED" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - fi - fi - else - # if CHUNKED - if [ $expectlayout = "CHUNKED" ]; then - TESTING $H5DUMP_BIN -pH $outfile - ( - $RUNSERIAL $H5DUMP_BIN -pH $outfile > $layoutfile - ) - $GREP "CONTIGUOUS" $layoutfile > /dev/null - if [ $? -eq 0 ]; then - echo " FAILED" - nerrors="`expr $nerrors + 1`" - else - $GREP "COMPACT" $layoutfile > /dev/null - if [ $? -eq 0 ]; then - echo " FAILED" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - fi - fi - fi - fi - fi - ) - - # clean up tmp files - rm -f $outfile - rm -f $layoutfile -} - -# same as TOOLTEST, but it uses the old syntax -i input_file -o output_file -# -TOOLTEST0() -{ - infile=$2 - outfile=out-$1.$2 - shift - shift - - # Run test. - TESTING $H5REPACK $@ - ( - cd $TESTDIR - $RUNSERIAL $H5REPACK_BIN -i $infile -o $outfile "$@" - ) - RET=$? - if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - DIFFTEST $infile $outfile - fi - rm -f $outfile -} - - -# same as TOOLTEST, but it uses without -i -o options -# used to test the family driver, where these files reside -# -TOOLTEST1() -{ - infile=$2 - outfile=out-$1.$2 - shift - shift - - # Run test. - TESTING $H5REPACK $@ - ( - cd $TESTDIR - $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile - ) - RET=$? - if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - DIFFTEST $infile $outfile - fi - rm -f $outfile -} - -# This is same as TOOLTEST() with comparing display output -# from -v option -# -TOOLTESTV() -{ - expect="$TESTDIR/$2-$1.tst" - actual="$TESTDIR/`basename $2 .ddl`.out" - actual_err="$TESTDIR/`basename $2 .ddl`.err" - - infile=$2 - outfile=out-$1.$2 - shift - shift - - # Run test. - TESTING $H5REPACK $@ - ( - cd $TESTDIR - $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile - ) >$actual 2>$actual_err - RET=$? - if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - DIFFTEST $infile $outfile - fi - - # display output compare - STDOUT_FILTER $actual - cat $actual_err >> $actual - - VERIFY output from $H5REPACK $@ - if cmp -s $expect $actual; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.tst) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && diff -c $expect $actual |sed 's/^/ /' - fi - - rm -f $actual $actual_err - rm -f $outfile -} - -# same as TOOLTESTV but filters error stack output and compares to an error file -# Extract file name, line number, version and thread IDs because they may be different -# ADD_H5ERR_MASK_TEST -TOOLTESTM() { - - expect="$TESTDIR/$2-$1.tst" - actual="$TESTDIR/`basename $2 .tst`.out" - actual_err="$TESTDIR/`basename $2 .tst`.oerr" - actual_sav=${actual}-sav - actual_err_sav=${actual_err}-sav - - infile=$2 - outfile=out-$1.$2 - shift - shift - - # Run test. - TESTING $H5REPACK $@ - ( - cd $TESTDIR - $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile - ) >$actual 2>$actual_err - - # save actual and actual_err in case they are needed later. - cp $actual $actual_sav - cp $actual_err $actual_err_sav - - # Extract file name, line number, version and thread IDs because they may be different - sed -e 's/thread [0-9]*/thread (IDs)/' -e 's/: .*\.c /: (file name) /' \ - -e 's/line [0-9]*/line (number)/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ - -e 's/H5Eget_auto[1-2]*/H5Eget_auto(1 or 2)/' \ - -e 's/H5Eset_auto[1-2]*/H5Eset_auto(1 or 2)/' \ - $actual_err > $actual - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.tst) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err $actual_sav $actual_err_sav - fi - -} - -# This is same as TOOLTESTV() with comparing h5dump output -# from -pH option -# -TOOLTEST_DUMP() -{ - infile=$2 - outfile=out-$1.$2 - expect="$TESTDIR/$1.$2.ddl" - actual="$TESTDIR/out-$1.$2.out" - actual_err="$TESTDIR/out-$1.$2.err" - - shift - shift - - # Run test. - TESTING $H5REPACK $@ - ( - cd $TESTDIR - $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile - ) >$actual 2>$actual_err - RET=$? - if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - VERIFY h5dump output $@ - ( - cd $TESTDIR - $RUNSERIAL $H5DUMP_BIN -pH $outfile - ) >$actual 2>$actual_err - cat $actual_err >> $actual - - RET=$? - - fi - - if cmp -s $expect $actual; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.ddl) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && diff -c $expect $actual |sed 's/^/ /' - fi - - rm -f $actual $actual_err - rm -f $outfile -} - -# TOOLTEST_META: -# Test metadata block size option. -# Reason to create a function here is to localize all special steps related to -# metadata block size option in one place. This is a quick solution. More -# thought out solution needed when there is more time. -# -# $1: test input file -# $2:$: metadata options (either "-M size" or "--metadata_block_size=size") -# -# Algorithm: -# Run it once without the metadata option ($2-$); -# Save the result output file; -# Run it second time with the metadata option; -# Verify the output file of second run is larger than the one of 1st run. -TOOLTEST_META() -{ - infile=$2 - outfile=out-$1.$2 - shift - shift - - # Run test. - TESTING $H5REPACK $@ - ( - cd $TESTDIR - $RUNSERIAL $H5REPACK_BIN $infile $outfile - ) - RET=$? - if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - DIFFTEST $infile $outfile - fi - # get the size of the first output file - size1=`wc -c $TESTDIR/$outfile | cut -d' ' -f1` - - # 2nd run with metadata option - # Run test. - TESTING $H5REPACK $@ - ( - cd $TESTDIR - $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile - ) - RET=$? - if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - DIFFTEST $infile $outfile - fi - # get the size of the second output file - size2=`wc -c $TESTDIR/$outfile | cut -d' ' -f1` - - # verify sizes. - MESSAGE "Verify the sizes of both output files ($size1 vs $size2)" - if [ $size1 -lt $size2 ]; then - # pass - echo " PASSED" - else - #fail - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - fi - - rm -f $outfile -} - -# ADD_HELP_TEST -TOOLTEST_HELP() { - - expect="$TESTDIR/$1" - actual="$TESTDIR/`basename $1 .txt`.out" - actual_err="$TESTDIR/`basename $1 .txt`.err" - shift - - # Run test. - TESTING $H5REPACK $@ - ( - cd $TESTDIR - $RUNSERIAL $H5REPACK_BIN "$@" - ) >$actual 2>$actual_err - cat $actual_err >> $actual - - if [ ! -f $expect ]; then - # Create the expect data file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect-CREATED - elif cmp -s $expect $actual; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected output (*.txt) differs from actual output (*.out)" - nerrors="`expr $nerrors + 1`" - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err - fi - -} - -# This is different from $srcdir/../../bin/output_filter.sh -STDOUT_FILTER() { - result_file=$1 - tmp_file=/tmp/h5test_tmp_$$ - # Filter name of files. - cp $result_file $tmp_file - sed -e '/^Opening file/d' -e '/^Making file/d' \ - < $tmp_file > $result_file - # cleanup - rm -f $tmp_file -} - -# -# The tests -# We use the files generated by h5repacktst -# Each run generates ".out.h5" and the tool h5diff is used to -# compare the input and output files -# -# the tests are the same as the program h5repacktst, but run from the CLI -# - -# See which filters are usable (and skip tests for filters we -# don't have). Do this by searching H5pubconf.h to see which -# filters are defined. - -# detect whether the encoder is present. -USE_FILTER_SZIP_ENCODER="no"; -if test $USE_FILTER_SZIP = "yes"; then -USE_FILTER_SZIP_ENCODER=`$RUNSERIAL $H5DETECTSZIP_BIN` -fi - -############################################################################## -### T H E T E S T S -############################################################################## -# prepare for test -COPY_TESTFILES_TO_TESTDIR - -TOOLTEST_HELP h5repack-help.txt -h - -# copy files (these files have no filters) -TOOLTEST fill h5repack_fill.h5 -TOOLTEST objs h5repack_objs.h5 -TOOLTEST attr h5repack_attr.h5 -TOOLTEST hlink h5repack_hlink.h5 -TOOLTEST layout h5repack_layout.h5 -TOOLTEST early h5repack_early.h5 - -# nested 8bit enum in both deflated and non-deflated datafiles -if [ $USE_FILTER_DEFLATE != "yes" ]; then -TOOLTEST nested_8bit_enum h5repack_nested_8bit_enum.h5 -else -TOOLTEST nested_8bit_enum h5repack_nested_8bit_enum_deflated.h5 -fi - -# use h5repack_layout.h5 to write some filters (this file has no filters) - -# gzip with individual object -arg="h5repack_layout.h5 -f dset1:GZIP=1 -l dset1:CHUNK=20x10" -if test $USE_FILTER_DEFLATE != "yes" ; then - SKIP $arg -else - TOOLTEST gzip_individual $arg -fi - -# gzip for all -arg="h5repack_layout.h5 -f GZIP=1" -if test $USE_FILTER_DEFLATE != "yes" ; then - SKIP $arg -else - TOOLTEST gzip_all $arg -fi - -# szip with individual object -arg="h5repack_layout.h5 -f dset2:SZIP=8,EC -l dset2:CHUNK=20x10" -if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" ; then - SKIP $arg -else - TOOLTEST szip_individual $arg -fi - -# szip for all -arg="h5repack_layout.h5 -f SZIP=8,NN" -if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" ; then - SKIP $arg -else - TOOLTEST szip_all $arg -fi - -# shuffle with individual object -arg="h5repack_layout.h5 -f dset2:SHUF -l dset2:CHUNK=20x10" -TOOLTEST shuffle_individual $arg - - -# shuffle for all -arg="h5repack_layout.h5 -f SHUF" -TOOLTEST shuffle_all $arg - -# fletcher32 with individual object -arg="h5repack_layout.h5 -f dset2:FLET -l dset2:CHUNK=20x10" -TOOLTEST fletcher_individual $arg - -# fletcher32 for all -arg="h5repack_layout.h5 -f FLET" -TOOLTEST fletcher_all $arg - -# all filters -arg="h5repack_layout.h5 -f dset2:SHUF -f dset2:FLET -f dset2:SZIP=8,NN -f dset2:GZIP=1 -l dset2:CHUNK=20x10" -if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" -o $USE_FILTER_DEFLATE != "yes" ; then - SKIP $arg -else - TOOLTEST all_filters $arg -fi - -# verbose gzip with individual object -arg="h5repack_filters.h5 -v -f /dset_deflate:GZIP=9" -if test $USE_FILTER_DEFLATE != "yes" ; then - SKIP $arg -else - # compare output - TOOLTESTV gzip_verbose_filters $arg -fi - -########################################################### -# the following tests assume the input files have filters -########################################################### - -# szip copy -arg="h5repack_szip.h5" -if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" ; then - SKIP $arg -else - TOOLTEST szip_copy $arg -fi - -# szip remove -arg="h5repack_szip.h5 --filter=dset_szip:NONE" -if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" ; then - SKIP $arg -else - TOOLTEST szip_remove $arg -fi - -# deflate copy -arg="h5repack_deflate.h5" -if test $USE_FILTER_DEFLATE != "yes" ; then - SKIP $arg -else - TOOLTEST deflate_copy $arg -fi - -# deflate remove -arg="h5repack_deflate.h5 -f dset_deflate:NONE" -if test $USE_FILTER_DEFLATE != "yes" ; then - SKIP $arg -else - TOOLTEST deflate_remove $arg -fi - -# shuffle copy -arg="h5repack_shuffle.h5" -TOOLTEST shuffle_copy $arg - -# shuffle remove -arg="h5repack_shuffle.h5 -f dset_shuffle:NONE" -TOOLTEST shuffle_remove $arg - -# fletcher32 copy -arg="h5repack_fletcher.h5" -TOOLTEST fletcher_copy $arg - -# fletcher32 remove -arg="h5repack_fletcher.h5 -f dset_fletcher32:NONE" -TOOLTEST fletcher_remove $arg - -# nbit copy -arg="h5repack_nbit.h5" -TOOLTEST nbit_copy $arg - -# nbit remove -arg="h5repack_nbit.h5 -f dset_nbit:NONE" -TOOLTEST nbit_remove $arg - -# nbit add -arg="h5repack_nbit.h5 -f dset_int31:NBIT" -TOOLTEST nbit_add $arg - -# scaleoffset copy -arg="h5repack_soffset.h5" -TOOLTEST scale_copy $arg - -# scaleoffset add -arg="h5repack_soffset.h5 -f dset_none:SOFF=31,IN" -TOOLTEST scale_add $arg - -# scaleoffset remove -arg="h5repack_soffset.h5 -f dset_scaleoffset:NONE" -TOOLTEST scale_remove $arg - -# remove all filters -arg="h5repack_filters.h5 -f NONE" -if test $USE_FILTER_DEFLATE != "yes" -o $USE_FILTER_SZIP != "yes" -o $USE_FILTER_SZIP_ENCODER != "yes" ; then - SKIP $arg -else - TOOLTEST remove_all $arg -fi - -#filter conversions - -arg="h5repack_deflate.h5 -f dset_deflate:SZIP=8,NN" -if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" -o $USE_FILTER_DEFLATE != "yes" ; then - SKIP $arg -else - TOOLTEST deflate_convert $arg -fi - -arg="h5repack_szip.h5 -f dset_szip:GZIP=1" -if test $USE_FILTER_SZIP != "yes" -o $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_DEFLATE != "yes" ; then - SKIP $arg -else - TOOLTEST szip_convert $arg -fi - - -#limit -arg="h5repack_layout.h5 -f GZIP=1 -m 1024" -if test $USE_FILTER_DEFLATE != "yes" ; then - SKIP $arg -else - TOOLTEST_DUMP deflate_limit $arg -fi - -#file -arg="h5repack_layout.h5 -e h5repack.info" -if test $USE_FILTER_DEFLATE != "yes" ; then - SKIP $arg -else - TOOLTEST deflate_file $arg -fi - -######################################################### -# layout options (these files have no filters) -######################################################### -VERIFY_LAYOUT_DSET dset2_chunk_20x10 h5repack_layout.h5 dset2 CHUNKED --layout dset2:CHUNK=20x10 - -VERIFY_LAYOUT_ALL chunk_20x10 h5repack_layout.h5 CHUNKED -l CHUNK=20x10 - -VERIFY_LAYOUT_DSET dset2_conti h5repack_layout.h5 dset2 CONTIGUOUS -l dset2:CONTI - -VERIFY_LAYOUT_ALL conti h5repack_layout.h5 CONTIGUOUS -l CONTI - -VERIFY_LAYOUT_DSET dset2_compa h5repack_layout.h5 dset2 COMPACT -l dset2:COMPA - -VERIFY_LAYOUT_ALL compa h5repack_layout.h5 COMPACT -l COMPA - -TOOLTESTM dset2_chunk_20x10-errstk h5repack_layout.h5 --layout=dset2:CHUNK=20x10x5 --enable-error-stack - -################################################################ -# layout conversions (file has no filters) -############################################################### - -VERIFY_LAYOUT_DSET dset_compa_conti h5repack_layout.h5 dset_compact CONTIGUOUS -l dset_compact:CONTI - -VERIFY_LAYOUT_DSET dset_compa_chunk h5repack_layout.h5 dset_compact CHUNKED -l dset_compact:CHUNK=2x5 - -VERIFY_LAYOUT_DSET dset_compa_compa h5repack_layout.h5 dset_compact COMPACT -l dset_compact:COMPA - -VERIFY_LAYOUT_DSET dset_conti_compa h5repack_layout.h5 dset_contiguous COMPACT -l dset_contiguous:COMPA - -VERIFY_LAYOUT_DSET dset_conti_chunk h5repack_layout.h5 dset_contiguous CHUNKED -l dset_contiguous:CHUNK=3x6 - -VERIFY_LAYOUT_DSET dset_conti_conti h5repack_layout.h5 dset_contiguous CONTIGUOUS -l dset_contiguous:CONTI - -VERIFY_LAYOUT_DSET chunk_compa h5repack_layout.h5 dset_chunk COMPACT -l dset_chunk:COMPA - -VERIFY_LAYOUT_DSET chunk_conti h5repack_layout.h5 dset_chunk CONTIGUOUS -l dset_chunk:CONTI - -VERIFY_LAYOUT_DSET chunk_18x13 h5repack_layout.h5 dset_chunk CHUNKED -l dset_chunk:CHUNK=18x13 - -# test convert small size dataset ( < 1k) to compact layout without -m -VERIFY_LAYOUT_DSET contig_small_compa h5repack_layout2.h5 contig_small COMPACT -l contig_small:COMPA - -VERIFY_LAYOUT_DSET contig_small_fixed_compa h5repack_layout2.h5 chunked_small_fixed COMPACT -l chunked_small_fixed:COMPA - -#--------------------------------------------------------------------------- -# Test file contains chunked datasets (need multiple dsets) with -# unlimited max dims. (HDFFV-7933) -# Use first dset to test. -#--------------------------------------------------------------------------- -# chunk to chunk - specify chunk dim bigger than any current dim -VERIFY_LAYOUT_DSET chunk2chunk h5repack_layout3.h5 chunk_unlimit1 CHUNK -l chunk_unlimit1:CHUNK=100x300 - -# chunk to contiguous -VERIFY_LAYOUT_DSET chunk2conti h5repack_layout3.h5 chunk_unlimit1 CONTI -l chunk_unlimit1:CONTI - -# chunk to compact - convert big dataset (should be > 64k) for this purpose, -# should remain as original layout (chunk) -VERIFY_LAYOUT_DSET chunk2compa h5repack_layout3.h5 chunk_unlimit1 CHUNK -l chunk_unlimit1:COMPA - -#-------------------------------------------------------------------------- -# Test -f for some specific cases. Chunked dataset with unlimited max dims. -# (HDFFV-8012) -#-------------------------------------------------------------------------- -# - should not fail -# - should not change max dims from unlimit - -# chunk dim is bigger than dataset dim. ( dset size < 64k ) -VERIFY_LAYOUT_DSET error1 h5repack_layout3.h5 chunk_unlimit1 H5S_UNLIMITED -f chunk_unlimit1:NONE -# chunk dim is bigger than dataset dim. ( dset size > 64k ) -VERIFY_LAYOUT_DSET error2 h5repack_layout3.h5 chunk_unlimit2 H5S_UNLIMITED -f chunk_unlimit2:NONE - -# chunk dims are smaller than dataset dims. ( dset size < 64k ) -#TOOLTEST_MAIN h5repack_layout3.h5 -f chunk_unlimit3:NONE -VERIFY_LAYOUT_DSET error3 h5repack_layout3.h5 chunk_unlimit3 H5S_UNLIMITED -f chunk_unlimit3:NONE - -# file input - should not fail -TOOLTEST error4 h5repack_layout3.h5 -f NONE - -#-------------------------------------------------------------------------- -# Test base: Convert CHUNK to CONTI for a chunked dataset with small dataset -# (dset size < 64K) and with unlimited max dims on a condition as follow. -# (HDFFV-8214) -#-------------------------------------------------------------------------- - -# chunk dim is bigger than dataset dim. should succeed. -VERIFY_LAYOUT_DSET ckdim_biger h5repack_layout3.h5 chunk_unlimit2 CONTI -l chunk_unlimit2:CONTI -# chunk dim is smaller than dataset dim. should succeed. -VERIFY_LAYOUT_DSET ckdim_smaller h5repack_layout3.h5 chunk_unlimit3 CONTI -l chunk_unlimit3:CONTI - - -# Native option -# Do not use FILE1, as the named dtype will be converted to native, and h5diff will -# report a difference. -TOOLTEST native_fill h5repack_fill.h5 -n -TOOLTEST native_attr h5repack_attr.h5 -n - - -# latest file format with long switches. use FILE4=h5repack_layout.h5 (no filters) -arg="h5repack_layout.h5 --layout CHUNK=20x10 --filter GZIP=1 --minimum=10 --native --latest --compact=8 --indexed=6 --ssize=8[:dtype]" -if test $USE_FILTER_DEFLATE != "yes" ; then - SKIP $arg -else - VERIFY_LAYOUT_ALL layout_long_switches h5repack_layout.h5 CHUNKED --layout CHUNK=20x10 --filter GZIP=1 --minimum=10 --native --latest --compact=8 --indexed=6 --ssize=8[:dtype] -fi - -# latest file format with short switches. use FILE4=h5repack_layout.h5 (no filters) -arg="h5repack_layout.h5 -l CHUNK=20x10 -f GZIP=1 -m 10 -n -L -c 8 -d 6 -s 8[:dtype]" -if test $USE_FILTER_DEFLATE != "yes" ; then - SKIP $arg -else - VERIFY_LAYOUT_ALL layout_short_switches h5repack_layout.h5 CHUNKED -l CHUNK=20x10 -f GZIP=1 -m 10 -n -L -c 8 -d 6 -s 8[:dtype] -fi - -# several global filters - -arg="h5repack_layout.h5 --filter GZIP=1 --filter SHUF" -if test $USE_FILTER_DEFLATE != "yes" ; then - SKIP $arg -else - TOOLTEST global_filters $arg -fi - -# syntax of -i infile -o outfile -# latest file format with short switches. use FILE4=h5repack_layout.h5 (no filters) -arg="h5repack_layout.h5 -l CHUNK=20x10 -f GZIP=1 -m 10 -n -L -c 8 -d 6 -s 8[:dtype]" -if test $USE_FILTER_DEFLATE != "yes" ; then - SKIP $arg -else - TOOLTEST0 old_style_layout_short_switches $arg -fi - -# add a userblock to file -arg="h5repack_objs.h5 -u ublock.bin -b 2048" -TOOLTEST add_userblock $arg - -# add alignment -arg="h5repack_objs.h5 -t 1 -a 1 " -TOOLTEST add_alignment $arg - -# Check repacking file with old version of layout message (should get upgraded -# to new version and be readable, etc.) -TOOLTEST upgrade_layout h5repack_layouto.h5 - -# test for datum size > H5TOOLS_MALLOCSIZE -TOOLTEST gt_mallocsize h5repack_objs.h5 -f GZIP=1 - -# Check repacking file with committed datatypes in odd configurations -TOOLTEST committed_dt h5repack_named_dtypes.h5 - -# tests family driver (file is located in common testfiles folder, uses TOOLTEST1 -TOOLTEST1 family tfamily%05d.h5 - -# test various references (bug 1814 and 1726) -TOOLTEST bug1814 h5repack_refs.h5 - -# test attribute with various references (bug1797 / HDFFV-5932) -# the references in attribute of compund or vlen datatype -TOOLTEST HDFFV-5932 h5repack_attr_refs.h5 - -# Add test for memory leak in attirbute. This test is verified by CTEST. -# 1. leak from vlen string -# 2. leak from compound type without reference member -# (HDFFV-7840, ) -# Note: this test is experimental for sharing test file among tools -TOOLTEST HDFFV-7840 h5diff_attr1.h5 - -# tests for metadata block size option -TOOLTEST_META meta_short h5repack_layout.h5 -M 8192 -TOOLTEST_META meta_long h5repack_layout.h5 --metadata_block_size=8192 - -# VDS tests - -################################################################ -# layout conversions -############################################################### -if test $USE_FILTER_DEFLATE != "yes" ; then - SKIP vds_dset_chunk_20x10x5 -else - VERIFY_LAYOUT_VDS vds_dset_chunk_20x10x5 1_vds.h5 vds_dset CHUNKED --layout vds_dset:CHUNK=20x10x5 -fi - -if test $USE_FILTER_DEFLATE != "yes" ; then - SKIP vds_chunk2x5x8 -else - VERIFY_LAYOUT_VDS vds_chunk2x5x8 3_1_vds.h5 vds_dset CHUNKED -l vds_dset:CHUNK=2x5x8 -fi - -if test $USE_FILTER_DEFLATE != "yes" ; then - SKIP vds_chunk3x6x9 -else - VERIFY_LAYOUT_VDS vds_chunk3x6x9 2_vds.h5 vds_dset CHUNKED -l vds_dset:CHUNK=3x6x9 -fi - -if test $USE_FILTER_DEFLATE != "yes" ; then - SKIP vds_compa 4_vds.h5 -else - VERIFY_LAYOUT_VDS vds_compa 4_vds.h5 vds_dset COMPACT -l vds_dset:COMPA -fi - -if test $USE_FILTER_DEFLATE != "yes" ; then - SKIP vds_conti 4_vds.h5 -else - VERIFY_LAYOUT_VDS vds_conti 4_vds.h5 vds_dset CONTIGUOUS -l vds_dset:CONTI -fi - -# Clean up temporary files/directories -CLEAN_TESTFILES_AND_TESTDIR - -if test $nerrors -eq 0 ; then - echo "All $TESTNAME tests passed." - exit $EXIT_SUCCESS -else - echo "$TESTNAME tests failed with $nerrors errors." - exit $EXIT_FAILURE -fi - diff --git a/tools/h5repack/h5repack_copy.c b/tools/h5repack/h5repack_copy.c deleted file mode 100644 index 547f61a..0000000 --- a/tools/h5repack/h5repack_copy.c +++ /dev/null @@ -1,1581 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include "h5repack.h" -#include "h5tools.h" -#include "h5tools_utils.h" - -/*------------------------------------------------------------------------- - * typedefs - *------------------------------------------------------------------------- - */ - -/*------------------------------------------------------------------------- - * globals - *------------------------------------------------------------------------- - */ - -/*------------------------------------------------------------------------- - * macros - *------------------------------------------------------------------------- - */ - -/* size of buffer/# of bytes to xfer at a time when copying userblock */ -#define USERBLOCK_XFER_SIZE 512 - -/* check H5Dread()/H5Dwrite() error, e.g. memory allocation error inside the library. */ -#define CHECK_H5DRW_ERROR(_fun, _fail, _did, _mtid, _msid, _fsid, _pid, _buf) { \ - H5E_BEGIN_TRY { \ - if(_fun(_did, _mtid, _msid, _fsid, _pid, _buf) < 0) { \ - hid_t _err_num = 0; \ - char _msg[80]; \ - H5Ewalk2(H5E_DEFAULT, H5E_WALK_DOWNWARD, walk_error_callback, &_err_num); \ - H5Eget_msg(_err_num, NULL, _msg, (size_t)80); \ - error_msg("%s %s -- %s\n", #_fun, "failed", _msg); \ - HGOTO_DONE(_fail) \ - } \ - } H5E_END_TRY; \ -} - -/*------------------------------------------------------------------------- - * local functions - *------------------------------------------------------------------------- - */ -static int Get_hyperslab(hid_t dcpl_id, int rank_dset, hsize_t dims_dset[], - size_t size_datum, hsize_t dims_hslab[], hsize_t * hslab_nbytes_p); -static void print_dataset_info(hid_t dcpl_id, char *objname, double per, int pr); -static int do_copy_objects(hid_t fidin, hid_t fidout, trav_table_t *travt, - pack_opt_t *options); -static int copy_user_block(const char *infile, const char *outfile, - hsize_t size); -#if defined (H5REPACK_DEBUG_USER_BLOCK) -static void print_user_block(const char *filename, hid_t fid); -#endif -static herr_t walk_error_callback(unsigned n, const H5E_error2_t *err_desc, void *udata); - -/* get the major number from the error stack. */ -static herr_t walk_error_callback(H5_ATTR_UNUSED unsigned n, const H5E_error2_t *err_desc, void *udata) { - if (err_desc) - *((hid_t *) udata) = err_desc->maj_num; - - return 0; -} - -/*------------------------------------------------------------------------- - * Function: copy_objects - * - * Purpose: duplicate all HDF5 objects in the file - * - * Return: 0, ok, -1 no - * - * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu - * - * Date: October, 23, 2003 - * - * Modification: - * Peter Cao, June 13, 2007 - * Add "-L, --latest" and other options to pack a file with the latest file format - * - * Peter Cao, September 25, 2007 - * Copy user block when repacking a file - * - * Pedro Vicente, August 20, 2008 - * Add a user block to file if requested - * - *------------------------------------------------------------------------- - */ - -int copy_objects(const char* fnamein, const char* fnameout, pack_opt_t *options) -{ - int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */ - hid_t fidin; - hid_t fidout = -1; - trav_table_t *travt = NULL; - hsize_t ub_size = 0; /* size of user block */ - hid_t fcpl = H5P_DEFAULT; /* file creation property list ID */ - hid_t fapl = H5P_DEFAULT; /* file access property list ID */ - - /*------------------------------------------------------------------------- - * open input file - *------------------------------------------------------------------------- - */ - if ((fidin = h5tools_fopen(fnamein, H5F_ACC_RDONLY, H5P_DEFAULT, NULL, NULL, (size_t) 0)) < 0) { - error_msg("<%s>: %s\n", fnamein, H5FOPENERROR); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - - /* get user block size and file space strategy/threshold */ - { - hid_t fcpl_in; /* file creation property list ID for input file */ - - if ((fcpl_in = H5Fget_create_plist(fidin)) < 0) { - error_msg("failed to retrieve file creation property list\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - - if (H5Pget_userblock(fcpl_in, &ub_size) < 0) { - error_msg("failed to retrieve userblock size\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - - if (!options->fs_strategy) { - if (H5Pget_file_space(fcpl_in, &options->fs_strategy, NULL) < 0) { - error_msg("failed to retrieve file space strategy\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - } - - if (!options->fs_threshold) { - if (H5Pget_file_space(fcpl_in, NULL, &options->fs_threshold) < 0) { - error_msg("failed to retrieve file space threshold\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - } - - if (H5Pclose(fcpl_in) < 0) { - error_msg("failed to close property list\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - } - - /* Check if we need to create a non-default file creation property list */ - if (options->latest || ub_size > 0) { - /* Create file creation property list */ - if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) { - error_msg("fail to create a file creation property list\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - - if (ub_size > 0) { - if (H5Pset_userblock(fcpl, ub_size) < 0) { - error_msg("failed to set non-default userblock size\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - } - - if (options->latest) { - unsigned i = 0, nindex = 0, mesg_type_flags[5], min_mesg_sizes[5]; - - /* Adjust group creation parameters for root group */ - /* (So that it is created in "dense storage" form) */ - if (H5Pset_link_phase_change(fcpl, (unsigned) options->grp_compact, - (unsigned) options->grp_indexed) < 0) { - error_msg("fail to adjust group creation parameters for root group\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - - for (i = 0; i < 5; i++) { - if (options->msg_size[i] > 0) { - switch (i) { - case 0: - mesg_type_flags[nindex] = H5O_SHMESG_SDSPACE_FLAG; - break; - - case 1: - mesg_type_flags[nindex] = H5O_SHMESG_DTYPE_FLAG; - break; - - case 2: - mesg_type_flags[nindex] = H5O_SHMESG_FILL_FLAG; - break; - - case 3: - mesg_type_flags[nindex] = H5O_SHMESG_PLINE_FLAG; - break; - - case 4: - mesg_type_flags[nindex] = H5O_SHMESG_ATTR_FLAG; - break; - - default: - break; - } /* end switch */ - min_mesg_sizes[nindex] = (unsigned) options->msg_size[i]; - - nindex++; - } /* end if */ - } /* end for */ - - if (nindex > 0) { - if (H5Pset_shared_mesg_nindexes(fcpl, nindex) < 0) { - error_msg("fail to set the number of shared object header message indexes\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - - /* msg_size[0]=dataspace, 1=datatype, 2=file value, 3=filter pipleline, 4=attribute */ - for (i = 0; i < (nindex - 1); i++) { - if (H5Pset_shared_mesg_index(fcpl, i, mesg_type_flags[i], min_mesg_sizes[i]) < 0) { - error_msg("fail to configure the specified shared object header message index\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } /* end if */ - } /* end for */ - } /* if (nindex>0) */ - - /* Create file access property list */ - if ((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) { - error_msg("Could not create file access property list\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } /* end if */ - - if (H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0) { - error_msg("Could not set property for using latest version of the format\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } /* end if */ - } /* end if */ - } /* end if */ -#if defined (H5REPACK_DEBUG_USER_BLOCK) -print_user_block(fnamein, fidin); -#endif - - /*------------------------------------------------------------------------- - * set the new user userblock options in the FCPL (before H5Fcreate ) - *------------------------------------------------------------------------- - */ - if (options->ublock_size > 0) { - /* either use the FCPL already created or create a new one */ - if (fcpl == H5P_DEFAULT) { - /* create a file creation property list */ - if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) { - error_msg("fail to create a file creation property list\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - } - - /* set user block size */ - if (H5Pset_userblock(fcpl, options->ublock_size) < 0) { - error_msg("failed to set userblock size\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - } - - /*------------------------------------------------------------------------- - * set alignment options - *------------------------------------------------------------------------- - */ - if (options->alignment > 0) { - /* either use the FAPL already created or create a new one */ - if (fapl == H5P_DEFAULT) { - /* create a file access property list */ - if ((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) { - error_msg("Could not create file access property list\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - } - - if (H5Pset_alignment(fapl, options->threshold, options->alignment) < 0) { - error_msg("failed to set alignment\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - } - - /*------------------------------------------------------------------------- - * set metadata block size option - *------------------------------------------------------------------------- - */ - if (options->meta_block_size > 0) { - /* either use the FAPL already created or create a new one */ - if (fapl == H5P_DEFAULT) { - /* create a file access property list */ - if ((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) { - error_msg("Could not create file access property list\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - } - - if (H5Pset_meta_block_size(fapl, options->meta_block_size) < 0) { - error_msg("failed to set metadata block size\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - } - - /*------------------------------------------------------------------------- - * set free-space strategy options - *------------------------------------------------------------------------- - */ - - /* either use the FCPL already created or create a new one */ - if (fcpl == H5P_DEFAULT) { - /* create a file creation property list */ - if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) { - error_msg("fail to create a file creation property list\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - } - - /* set file space strategy and free space threshold */ - if (H5Pset_file_space(fcpl, options->fs_strategy, options->fs_threshold) < 0) { - error_msg("failed to set file space strategy & threshold \n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - - /*------------------------------------------------------------------------- - * create the output file - *------------------------------------------------------------------------- - */ - if (options->verbose) - printf("Making file <%s>...\n", fnameout); - - if ((fidout = H5Fcreate(fnameout, H5F_ACC_TRUNC, fcpl, fapl)) < 0) { - error_msg("<%s>: Could not create file\n", fnameout); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - - /*------------------------------------------------------------------------- - * write a new user block if requested - *------------------------------------------------------------------------- - */ - if (options->ublock_size > 0) { - if (copy_user_block(options->ublock_filename, fnameout, options->ublock_size) < 0) { - error_msg("Could not copy user block. Exiting...\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - } - - /*------------------------------------------------------------------------- - * get list of objects - *------------------------------------------------------------------------- - */ - - /* init table */ - trav_table_init(&travt); - - /* get the list of objects in the file */ - if (h5trav_gettable(fidin, travt) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - - /*------------------------------------------------------------------------- - * do the copy - *------------------------------------------------------------------------- - */ - if (do_copy_objects(fidin, fidout, travt, options) < 0) { - error_msg("<%s>: Could not copy data to: %s\n", fnamein, fnameout); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } /* end if */ - - /*------------------------------------------------------------------------- - * do the copy of referenced objects - * and create hard links - *------------------------------------------------------------------------- - */ - if (do_copy_refobjs(fidin, fidout, travt, options) < 0) { - printf("h5repack: <%s>: Could not copy data to: %s\n", fnamein, fnameout); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - - /*------------------------------------------------------------------------- - * close - *------------------------------------------------------------------------- - */ - - if (fapl > 0) - H5Pclose(fapl); - - if (fcpl > 0) - H5Pclose(fcpl); - - H5Fclose(fidin); - H5Fclose(fidout); - - /* free table */ - trav_table_free(travt); - travt = NULL; - - /*------------------------------------------------------------------------- - * write only the input file user block if there is no user block file input - *------------------------------------------------------------------------- - */ - - if (ub_size > 0 && options->ublock_size == 0) { - if (copy_user_block(fnamein, fnameout, ub_size) < 0) { - error_msg("Could not copy user block. Exiting...\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - } - - return 0; - - /*------------------------------------------------------------------------- - * out - *------------------------------------------------------------------------- - */ - -done: - H5E_BEGIN_TRY { - H5Pclose(fapl); - H5Pclose(fcpl); - H5Fclose(fidin); - H5Fclose(fidout); - } H5E_END_TRY; - if (travt) - trav_table_free(travt); - - return ret_value; -} - -/*------------------------------------------------------------------------- - * Function: Get_hyperslab - * - * Purpose: Calulate a hyperslab from a dataset for higher performance. - * The size of hyperslab is limitted by H5TOOLS_BUFSIZE. - * Return the hyperslab dimentions and size in byte. - * - * Return: 0 - SUCCEED, -1 FAILED - * - * Parameters: - * dcpl_id : [IN] dataset creation property. - * rank_dset : [IN] dataset rank - * dims_dset[] : [IN] dataset dimentions - * size_datum : [IN] size of a data element in byte - * dims_hslab[] : [OUT] calculated hyperslab dimentions - * * hslab_nbytes_p : [OUT] total byte of the hyperslab - * - * Programmer: Jonathan Kim - * Date: Feburary, 2012 - * Update: - * The hyperslab calucation would be depend on if the dataset is chunked - * or not. - * - * There care 3 conditions to cover: - * 1. If chunked and a chunk fits in buffer, each chunk would be a unit of - * collection and the boundary would be dataset's dims. - * 2. If chunked but a chunk doesn't fit in buffer, each data element would - * be a unit of collection and the boundary would be the chunk itself. - * 3. If not chunked, each data element would be a unit of collection and - * the boundary would be dataset's dims. - * - * The calulation starts from the last dimention (h5dump dims output). - * - * Note: - * Added for JIRA HDFFV-7862. - *-----------------------------------------*/ - -int Get_hyperslab(hid_t dcpl_id, int rank_dset, hsize_t dims_dset[], - size_t size_datum, hsize_t dims_hslab[], hsize_t * hslab_nbytes_p) -{ - int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */ - int k; - H5D_layout_t dset_layout; - int rank_chunk; - hsize_t dims_chunk[H5S_MAX_RANK]; - hsize_t size_chunk = 1; - hsize_t nchunk_fit; /* number of chunks that fits in hyperslab buffer (H5TOOLS_BUFSIZE) */ - hsize_t ndatum_fit; /* number of dataum that fits in hyperslab buffer (H5TOOLS_BUFSIZE) */ - hsize_t chunk_dims_map[H5S_MAX_RANK]; /* mapped chunk dimentions */ - hsize_t hs_dims_map[H5S_MAX_RANK]; /* mapped hyperslab dimentions */ - hsize_t hslab_nbytes; /* size of hyperslab in byte */ - - /* init to set as size of a data element */ - hslab_nbytes = size_datum; - - /* get layout of dataset */ - dset_layout = H5Pget_layout(dcpl_id); - - /* if dataset is chunked */ - if (dset_layout == H5D_CHUNKED) { - /* get chunk dims */ - rank_chunk = H5Pget_chunk(dcpl_id, rank_dset, dims_chunk); - if (rank_chunk < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - - for (k = rank_dset; k > 0; --k) - size_chunk *= dims_chunk[k - 1]; - - /* figure out how many chunks can fit in the hyperslab buffer */ - nchunk_fit = (H5TOOLS_BUFSIZE / size_datum) / size_chunk; - - /* 1. if a chunk fit in hyperslab buffer */ - if (nchunk_fit >= 1) { - /* Calulate a hyperslab that contains as many chunks that can fit - * in hyperslab buffer. Hyperslab will be increased starting from - * the last dimention of the dataset (see h5dump's dims output). - * The calculation boundary is dataset dims. - * In the loop, used mapping from a datum to a chunk to figure out - * chunk based hyperslab. - */ - for (k = rank_dset; k > 0; --k) { - /* map dataset dimentions with a chunk dims */ - chunk_dims_map[k - 1] = dims_dset[k - 1] / dims_chunk[k - 1]; - - /* if reminder exist, increse by 1 to cover partial edge chunks */ - if (dims_dset[k - 1] % dims_chunk[k - 1] > 0) - chunk_dims_map[k - 1]++; - - /* get mapped hyperslab dims */ - hs_dims_map[k - 1] = MIN (nchunk_fit, chunk_dims_map[k-1]); - - /* prepare next round */ - nchunk_fit = nchunk_fit / chunk_dims_map[k - 1]; - /* if a chunk is bigger than the rest of buffer */ - if (nchunk_fit == 0) - nchunk_fit = 1; - - /* get hyperslab dimentions as unmapping to actual size */ - dims_hslab[k - 1] = MIN( (hs_dims_map[k-1] * dims_chunk[k-1]), dims_dset[k-1]); - - /* calculate total size for the hyperslab */ - hslab_nbytes *= dims_hslab[k - 1]; - } - } - /* 2. if a chunk is bigger than hyperslab buffer */ - else { - /* Calulate a hyperslab that contains as many data elements that - * can fit in hyperslab buffer. Hyperslab will be increased - * starting from the last dimention of the chunk (see h5dump's dims - * output). - * The calculation boundary is a chunk dims. - */ - for (k = rank_dset; k > 0; --k) { - ndatum_fit = H5TOOLS_BUFSIZE / hslab_nbytes; - - /* if a datum is bigger than rest of buffer */ - if (ndatum_fit == 0) - ndatum_fit = 1; - /* get hyperslab dimentions within a chunk boundary */ - dims_hslab[k - 1] = MIN (dims_chunk[k-1], ndatum_fit); - - /* calculate total size for the hyperslab */ - hslab_nbytes *= dims_hslab[k - 1]; - - if (hslab_nbytes <= 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - } - } - /* 3. if dataset is not chunked */ - else { - /* Calulate a hyperslab that contains as many data elements that can - * fit in hyperslab buffer. Hyperslab will be increased starting from - * the last dimention of the dataset (see h5dump's dims output). - * The calculation boundary is dataset dims. - */ - for (k = rank_dset; k > 0; --k) { - ndatum_fit = H5TOOLS_BUFSIZE / hslab_nbytes; - - /* if a datum is bigger than rest of buffer */ - if (ndatum_fit == 0) - ndatum_fit = 1; - /* get hyperslab dimentions within dataset boundary */ - dims_hslab[k - 1] = MIN(dims_dset[k - 1], ndatum_fit); - - /* calculate total size for the hyperslab */ - hslab_nbytes *= dims_hslab[k - 1]; - - if (hslab_nbytes <= 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - } - } - - /* pass out the hyperslab size*/ - *hslab_nbytes_p = hslab_nbytes; - -done: - return ret_value; -} - -/*------------------------------------------------------------------------- - * Function: do_copy_objects - * - * Purpose: duplicate all HDF5 objects in the file - * - * Return: 0, ok, -1 no - * - * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu - * - * Date: October, 23, 2003 - * - * Modifications: - * - * July 2004: Introduced the extra EC or NN option for SZIP - * - * December 2004: Added a check for H5Dcreate; if the dataset cannot be created - * with the requested filter, use the input one - * - * October 2006: Read/write using the file type by default. - * - * October 2006: Read by hyperslabs for big datasets. - * - * A threshold of H5TOOLS_MALLOCSIZE (128 MB) is the limit upon which I/O hyperslab is done - * i.e., if the memory needed to read a dataset is greater than this limit, - * then hyperslab I/O is done instead of one operation I/O - * For each dataset, the memory needed is calculated according to - * - * memory needed = number of elements * size of each element - * - * if the memory needed is lower than H5TOOLS_MALLOCSIZE, then the following operations - * are done - * - * H5Dread( input_dataset1 ) - * H5Dread( input_dataset2 ) - * - * with all elements in the datasets selected. If the memory needed is greater than - * H5TOOLS_MALLOCSIZE, then the following operations are done instead: - * - * a strip mine is defined for each dimension k (a strip mine is defined as a - * hyperslab whose size is memory manageable) according to the formula - * - * (1) strip_mine_size[k ] = MIN(dimension[k ], H5TOOLS_BUFSIZE / size of memory type) - * - * where H5TOOLS_BUFSIZE is a constant currently defined as 1MB. This formula assures - * that for small datasets (small relative to the H5TOOLS_BUFSIZE constant), the strip - * mine size k is simply defined as its dimension k, but for larger datasets the - * hyperslab size is still memory manageable. - * a cycle is done until the number of elements in the dataset is reached. In each - * iteration, two parameters are defined for the function H5Sselect_hyperslab, - * the start and size of each hyperslab, according to - * - * (2) hyperslab_size [k] = MIN(dimension[k] - hyperslab_offset[k], strip_mine_size [k]) - * - * where hyperslab_offset [k] is initially set to zero, and later incremented in - * hyperslab_size[k] offsets. The reason for the operation - * - * dimension[k] - hyperslab_offset[k] - * - * in (2) is that, when using the strip mine size, it assures that the "remaining" part - * of the dataset that does not fill an entire strip mine is processed. - * - * November 2006: Use H5Ocopy in the copy of objects. The logic for using - * H5Ocopy or not is if a change of filters or layout is requested by the user - * then use read/write else use H5Ocopy. - * - * May, 1, 2008: Add a printing of the compression ratio of old size / new size - * - * Feburary 2012: improve Read/Write by hyperslabs for big datasets. - * Programmer: Jonathan Kim - * - * A threshold of H5TOOLS_MALLOCSIZE is the limit upon which I/O hyperslab is done - * i.e., if the memory needed to read a dataset is greater than this limit, - * then hyperslab I/O is done instead of one operation I/O - * For each dataset, the memory needed is calculated according to - * - * memory needed = number of elements * size of each element - * - * if the memory needed is lower than H5TOOLS_MALLOCSIZE, then the following operations - * are done - * - * H5Dread( input_dataset ) - * H5Dwrite( output_dataset ) - * - * with all elements in the datasets selected. If the memory needed is greater than - * H5TOOLS_MALLOCSIZE, then the following operations are done instead: - * - * 1. figure out a hyperslab (dimentions) and size (refer to Get_hyperslab()). - * 2. Calculate the hyperslab selections as the selection is moving forward. - * Selection would be same as the hyperslab except for the remaining edge portion - * of the dataset. The code take care of the remaining portion if exist. - * - *------------------------------------------------------------------------- - */ - -int do_copy_objects(hid_t fidin, hid_t fidout, trav_table_t *travt, - pack_opt_t *options) /* repack options */ -{ - int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */ - hid_t grp_in = -1; /* group ID */ - hid_t grp_out = -1; /* group ID */ - hid_t dset_in = -1; /* read dataset ID */ - hid_t dset_out = -1; /* write dataset ID */ - hid_t gcpl_in = -1; /* group creation property list */ - hid_t gcpl_out = -1; /* group creation property list */ - hid_t type_in = -1; /* named type ID */ - hid_t type_out = -1; /* named type ID */ - hid_t dcpl_in = -1; /* dataset creation property list ID */ - hid_t dcpl_out = -1; /* dataset creation property list ID */ - hid_t f_space_id = -1; /* file space ID */ - hid_t ftype_id = -1; /* file type ID */ - hid_t wtype_id = -1; /* read/write type ID */ - named_dt_t *named_dt_head = NULL; /* Pointer to the stack of named datatypes copied */ - size_t msize; /* size of type */ - hsize_t nelmts; /* number of elements in dataset */ - H5D_space_status_t space_status; /* determines whether space has been allocated for the dataset */ - int rank; /* rank of dataset */ - hsize_t dims[H5S_MAX_RANK];/* dimensions of dataset */ - hsize_t dsize_in; /* input dataset size before filter */ - hsize_t dsize_out; /* output dataset size after filter */ - int apply_s; /* flag for apply filter to small dataset sizes */ - int apply_f; /* flag for apply filter to return error on H5Dcreate */ - void *buf = NULL; /* buffer for raw data */ - void *hslab_buf = NULL; /* hyperslab buffer for raw data */ - int has_filter; /* current object has a filter */ - int req_filter; /* there was a request for a filter */ - int req_obj_layout = 0; /* request layout to current object */ - unsigned crt_order_flags; /* group creation order flag */ - unsigned i; - unsigned u; - int is_ref = 0; - htri_t is_named; - hbool_t limit_maxdims; - hsize_t size_dset; - - /*------------------------------------------------------------------------- - * copy the suppplied object list - *------------------------------------------------------------------------- - */ - - if (options->verbose) { - printf("-----------------------------------------\n"); - printf(" Type Filter (Compression) Name\n"); - printf("-----------------------------------------\n"); - } - - for (i = 0; i < travt->nobjs; i++) { - /* init variables per obj */ - buf = NULL; - limit_maxdims = FALSE; - - switch (travt->objs[i].type) { - case H5TRAV_TYPE_UNKNOWN: - HDassert(0); - break; - - /*------------------------------------------------------------------------- - * H5TRAV_TYPE_GROUP - *------------------------------------------------------------------------- - */ - case H5TRAV_TYPE_GROUP: - if (options->verbose) - printf(FORMAT_OBJ, "group", travt->objs[i].name); - - /* open input group */ - if ((grp_in = H5Gopen2(fidin, travt->objs[i].name, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gopen2 failed"); - - /* get input group creation property list */ - if ((gcpl_in = H5Gget_create_plist(grp_in)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gget_create_plist failed"); - - /* query and set the group creation properties */ - if (H5Pget_link_creation_order(gcpl_in, &crt_order_flags) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pget_link_creation_order failed"); - - /* set up group creation property list */ - if ((gcpl_out = H5Pcreate(H5P_GROUP_CREATE)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pcreate failed"); - - if (H5Pset_link_creation_order(gcpl_out, crt_order_flags) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pset_link_creation_order failed"); - - /*------------------------------------------------------------------------- - * the root is a special case, we get an ID for the root group - * and copy its attributes using that ID - *------------------------------------------------------------------------- - */ - if (HDstrcmp(travt->objs[i].name, "/") == 0) { - if ((grp_out = H5Gopen2(fidout, "/", H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gopen2 failed"); - } - else { - if (options->grp_compact > 0 || options->grp_indexed > 0) - if (H5Pset_link_phase_change(gcpl_out, (unsigned) options->grp_compact, (unsigned) options->grp_indexed) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pset_link_phase_change failed"); - - if ((grp_out = H5Gcreate2(fidout, travt->objs[i].name, H5P_DEFAULT, gcpl_out, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gcreate2 failed"); - } - - /*------------------------------------------------------------------------- - * copy attrs - *------------------------------------------------------------------------- - */ - if (copy_attr(grp_in, grp_out, &named_dt_head, travt, options) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_attr failed"); - - if (H5Pclose(gcpl_out) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - if (H5Pclose(gcpl_in) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - if (H5Gclose(grp_out) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gclose failed"); - if (H5Gclose(grp_in) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gclose failed"); - - break; - - /*------------------------------------------------------------------------- - * H5TRAV_TYPE_DATASET - *------------------------------------------------------------------------- - */ - case H5TRAV_TYPE_DATASET: - has_filter = 0; - req_filter = 0; - - /* check if global filters were requested */ - if (options->n_filter_g) - req_filter = 1; - - /* check if filters were requested for individual objects */ - for (u = 0; u < options->op_tbl->nelems; u++) - if (HDstrcmp(travt->objs[i].name, options->op_tbl->objs[u].path) == 0) - if (options->op_tbl->objs[u].filter->filtn > 0) - req_filter = 1; - - /* check if layout change requested individual object */ - if (options->layout_g != H5D_LAYOUT_ERROR) { - pack_info_t *pckinfo; - - /* any dataset is specified */ - if (options->op_tbl->nelems > 0) { - /* check if object exist */ - pckinfo = options_get_object(travt->objs[i].name, options->op_tbl); - if (pckinfo) - req_obj_layout = 1; - } - } - - /* early detection of references */ - if ((dset_in = H5Dopen2(fidin, travt->objs[i].name, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dopen2 failed"); - if ((ftype_id = H5Dget_type(dset_in)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_type failed"); - if (H5T_REFERENCE == H5Tget_class(ftype_id)) - is_ref = 1; - - /* Check if the datatype is committed */ - if ((is_named = H5Tcommitted(ftype_id)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tcommitted failed"); - if (is_named) - if ((wtype_id = copy_named_datatype(ftype_id, fidout, &named_dt_head, travt, options)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_named_datatype failed"); - - if (H5Tclose(ftype_id) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed"); - if (H5Dclose(dset_in) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed"); - - /*------------------------------------------------------------------------- - * check if we should use H5Ocopy or not - * if there is a request for filters/layout, we read/write the object - * otherwise we do a copy using H5Ocopy - *------------------------------------------------------------------------- - */ - if (options->op_tbl->nelems || options->all_filter == 1 - || options->all_layout == 1 || is_ref || is_named) { - - int j; - - if ((dset_in = H5Dopen2(fidin, travt->objs[i].name, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dopen2 failed"); - if ((f_space_id = H5Dget_space(dset_in)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_space failed"); - if ((ftype_id = H5Dget_type(dset_in)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_type failed"); - if ((dcpl_in = H5Dget_create_plist(dset_in)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_create_plist failed"); - if ((dcpl_out = H5Pcopy(dcpl_in)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pcopy failed"); - if ((rank = H5Sget_simple_extent_ndims(f_space_id)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sget_simple_extent_ndims failed"); - HDmemset(dims, 0, sizeof dims); - if (H5Sget_simple_extent_dims(f_space_id, dims, NULL) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sget_simple_extent_dims failed"); - if (H5Dget_space_status(dset_in, &space_status) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_space_status failed"); - - nelmts = 1; - for (j = 0; j < rank; j++) - nelmts *= dims[j]; - - /* wtype_id will have already been set if using a named dtype */ - if (!is_named) { - if (options->use_native == 1) - wtype_id = h5tools_get_native_type(ftype_id); - else - wtype_id = H5Tcopy(ftype_id); - } /* end if */ - - if ((msize = H5Tget_size(wtype_id)) == 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tget_size failed"); - - /* size of current dset */ - size_dset = nelmts * msize; - - /*------------------------------------------------------------------------- - * check if the dataset creation property list has filters that - * are not registered in the current configuration - * 1) the external filters GZIP and SZIP might not be available - * 2) the internal filters might be turned off - *------------------------------------------------------------------------- - */ - if (h5tools_canreadf((travt->objs[i].name), dcpl_in) == 1) { - apply_s = 1; - apply_f = 1; - - /*------------------------------------------------------------------------- - * references are a special case - * we cannot just copy the buffers, but instead we recreate the reference - * in a second traversal of the output file - *------------------------------------------------------------------------- - */ - if (H5T_REFERENCE != H5Tget_class(wtype_id)) { - /* get the storage size of the input dataset */ - dsize_in = H5Dget_storage_size(dset_in); - - /* check for small size datasets (less than 1k) except - * changing to COMPACT. For the reference, COMPACT is limited - * by size 64K by library. - */ - if (options->layout_g != H5D_COMPACT) - if (size_dset < options->min_comp) - apply_s = 0; - - /* apply the filter */ - if (apply_s) - if (apply_filters(travt->objs[i].name, rank, dims, msize, dcpl_out, options, &has_filter) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "apply_filters failed"); - - /* only if layout change requested for entire file or - * individual obj */ - if (options->all_layout > 0 || req_obj_layout == 1) - /*------------------------------------------------- - * Unset the unlimited max dims if convert to other - * than chunk layouts, because unlimited max dims - * only can be applied to chunk layout. - * Also perform only for targeted dataset - * Also check for size limit to convert to compact - *-------------------------------------------------*/ - if (options->layout_g != H5D_CHUNKED) { - /* any dataset is specified */ - if (options->op_tbl->nelems > 0) { - /* if current obj match specified obj */ - if (options_get_object(travt->objs[i].name, options->op_tbl)) - limit_maxdims = TRUE; - } - else /* no dataset is specified */ - limit_maxdims = TRUE; - - /* if convert to COMPACT */ - if (options->layout_g == H5D_COMPACT) - /* should be smaller than 64K */ - if (size_dset > MAX_COMPACT_DSIZE) - limit_maxdims = FALSE; - - /* unset unlimited max dims */ - if (limit_maxdims) - H5Sset_extent_simple(f_space_id, rank, dims, NULL); - } - - /*------------------------------------------------------------------------- - * create the output dataset; - * disable error checking in case the dataset cannot be created with the - * modified dcpl; in that case use the original instead - *------------------------------------------------------------------------- - */ - dset_out = H5Dcreate2(fidout, travt->objs[i].name, wtype_id, f_space_id, H5P_DEFAULT, dcpl_out, H5P_DEFAULT); - if (dset_out == FAIL) { - H5Epush2(H5tools_ERR_STACK_g, __FILE__, FUNC, __LINE__, H5tools_ERR_CLS_g, H5E_tools_g, H5E_tools_min_id_g, "H5Dcreate2 failed"); - if (options->verbose) - printf(" warning: could not create dataset <%s>. Applying original settings\n", travt->objs[i].name); - - if ((dset_out = H5Dcreate2(fidout, travt->objs[i].name, wtype_id, f_space_id, H5P_DEFAULT, dcpl_in, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dcreate2 failed"); - apply_f = 0; - } - - /*------------------------------------------------------------------------- - * read/write - *------------------------------------------------------------------------- - */ - if (nelmts > 0 && space_status != H5D_SPACE_STATUS_NOT_ALLOCATED) { - size_t need = (size_t)(nelmts * msize); /* bytes needed */ - - /* have to read the whole dataset if there is only one element in the dataset */ - if (need < H5TOOLS_MALLOCSIZE) - buf = HDmalloc(need); - - if (buf != NULL) { - /* read/write: use the macro to check error, e.g. memory allocation error inside the library. */ - CHECK_H5DRW_ERROR(H5Dread, FAIL, dset_in, wtype_id, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - CHECK_H5DRW_ERROR(H5Dwrite, FAIL, dset_out, wtype_id, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - - /* Check if we have VL data in the dataset's - * datatype that must be reclaimed */ - if (TRUE == H5Tdetect_class(wtype_id, H5T_VLEN)) - if (H5Dvlen_reclaim(wtype_id, f_space_id, H5P_DEFAULT, buf) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dvlen_reclaim failed"); - } - else { /* possibly not enough memory, read/write by hyperslabs */ - size_t p_type_nbytes = msize; /*size of memory type */ - hsize_t p_nelmts = nelmts; /*total elements */ - hsize_t elmtno; /*counter */ - int carry; /*counter carry value */ - unsigned int vl_data = 0; /*contains VL datatypes */ - - /* hyperslab info */ - hsize_t hslab_dims[H5S_MAX_RANK]; /*hyperslab dims */ - hsize_t hslab_nbytes; /*bytes per hyperslab */ - hsize_t hslab_nelmts; /*elements per hyperslab*/ - hid_t hslab_space; /*hyperslab data space */ - - /* hyperslab selection info */ - hsize_t hs_sel_offset[H5S_MAX_RANK];/* selection offset */ - hsize_t hs_sel_count[H5S_MAX_RANK]; /* selection count */ - hsize_t hs_select_nelmts; /* selected elements */ - hsize_t zero[8]; /*vector of zeros */ - int k; - H5D_layout_t dset_layout; - hid_t dcpl_tmp = -1; /* dataset creation property list ID */ - - /* check if we have VL data in the dataset's datatype */ - if (H5Tdetect_class(wtype_id, H5T_VLEN) == TRUE) - vl_data = TRUE; - - /* check first if writing dataset is chunked, - * if so use its chunk layout for better performance. */ - dset_layout = H5Pget_layout(dcpl_out); - if (dset_layout == H5D_CHUNKED) - dcpl_tmp = dcpl_out; /* writing dataset */ - else { /* if reading dataset is chunked */ - dset_layout = H5Pget_layout(dcpl_in); - if (dset_layout == H5D_CHUNKED) - dcpl_tmp = dcpl_in; /* reading dataset */ - } - - /* get hyperslab dims and size in byte */ - if (Get_hyperslab(dcpl_tmp, rank, dims, p_type_nbytes, hslab_dims, &hslab_nbytes) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "Get_hyperslab failed"); - - hslab_buf = HDmalloc((size_t)hslab_nbytes); - - hslab_nelmts = hslab_nbytes / p_type_nbytes; - hslab_space = H5Screate_simple(1, &hslab_nelmts, NULL); - - /* the hyperslab selection loop */ - HDmemset(hs_sel_offset, 0, sizeof hs_sel_offset); - HDmemset(zero, 0, sizeof zero); - - for (elmtno = 0; elmtno < p_nelmts; elmtno += hs_select_nelmts) { - if (rank > 0) { - /* calculate the hyperslab selections. - * The selection would be same as the hyperslab - * except for remaining edge portion of the dataset - * which is smaller then the hyperslab. - */ - for (k = 0, hs_select_nelmts = 1; k < rank; k++) { - /* MIN() is used to get the remaining edge portion if exist. - * "dims[k] - hs_sel_offset[k]" is remaining edge portion that is smaller then the hyperslab.*/ - hs_sel_count[k] = MIN(dims[k] - hs_sel_offset[k], hslab_dims[k]); - hs_select_nelmts *= hs_sel_count[k]; - } - - if (H5Sselect_hyperslab(f_space_id, H5S_SELECT_SET, hs_sel_offset, NULL, hs_sel_count, NULL) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sselect_hyperslab failed"); - if (H5Sselect_hyperslab(hslab_space, H5S_SELECT_SET, zero, NULL, &hs_select_nelmts, NULL) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sselect_hyperslab failed"); - } - else { - H5Sselect_all(f_space_id); - H5Sselect_all(hslab_space); - hs_select_nelmts = 1; - } /* rank */ - - /* read/write: use the macro to check error, e.g. memory allocation error inside the library. */ - CHECK_H5DRW_ERROR(H5Dread, FAIL, dset_in, wtype_id, hslab_space, f_space_id, H5P_DEFAULT, hslab_buf); - CHECK_H5DRW_ERROR(H5Dwrite, FAIL, dset_out, wtype_id, hslab_space, f_space_id, H5P_DEFAULT, hslab_buf); - - /* reclaim any VL memory, if necessary */ - if (vl_data) - H5Dvlen_reclaim(wtype_id, hslab_space, H5P_DEFAULT, hslab_buf); - - /* calculate the next hyperslab offset */ - for (k = rank, carry = 1; k > 0 && carry; --k) { - hs_sel_offset[k - 1] += hs_sel_count[k - 1]; - /* if reached the end of a dim */ - if (hs_sel_offset[k - 1] == dims[k - 1]) - hs_sel_offset[k - 1] = 0; - else - carry = 0; - } /* k */ - } /* elmtno */ - - H5Sclose(hslab_space); - /* free */ - if (hslab_buf != NULL) { - HDfree(hslab_buf); - hslab_buf = NULL; - } - } /* hyperslab read */ - } /* if (nelmts>0 && space_status==H5D_SPACE_STATUS_NOT_ALLOCATED) */ - - /*------------------------------------------------------------------------- - * amount of compression used - *------------------------------------------------------------------------- - */ - if (options->verbose) { - double ratio = 0; - - /* only print the compression ration if there was a filter request */ - if (apply_s && apply_f && req_filter) { - /* get the storage size of the output dataset */ - dsize_out = H5Dget_storage_size(dset_out); - - /* compression ratio = uncompressed size / compressed size */ - if (dsize_out != 0) - ratio = (double) dsize_in / (double) dsize_out; - print_dataset_info(dcpl_out, travt->objs[i].name, ratio, 1); - } - else - print_dataset_info(dcpl_in, travt->objs[i].name, ratio, 0); - - /* print a message that the filter was not applied - (in case there was a filter) - */ - if (has_filter && apply_s == 0) - printf(" \n", travt->objs[i].name, (int) options->min_comp); - - if (has_filter && apply_f == 0) - printf(" \n", travt->objs[i].name); - } /* verbose */ - - /*------------------------------------------------------------------------- - * copy attrs - *------------------------------------------------------------------------- - */ - if (copy_attr(dset_in, dset_out, &named_dt_head, travt, options) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_attr failed"); - - /*close */ - if (H5Dclose(dset_out) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed"); - }/*!H5T_REFERENCE*/ - }/*h5tools_canreadf*/ - - /*------------------------------------------------------------------------- - * close - *------------------------------------------------------------------------- - */ - if (H5Tclose(ftype_id) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed"); - if (H5Tclose(wtype_id) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed"); - if (H5Pclose(dcpl_in) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - if (H5Pclose(dcpl_out) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - if (H5Sclose(f_space_id) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sclose failed"); - if (H5Dclose(dset_in) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed"); - } - /*------------------------------------------------------------------------- - * we do not have request for filter/chunking use H5Ocopy instead - *------------------------------------------------------------------------- - */ - else { - hid_t pid; - - /* create property to pass copy options */ - if ((pid = H5Pcreate(H5P_OBJECT_COPY)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pcreate failed"); - - /* set options for object copy */ - if (H5Pset_copy_object(pid, H5O_COPY_WITHOUT_ATTR_FLAG) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pset_copy_object failed"); - - /*------------------------------------------------------------------------- - * do the copy - *------------------------------------------------------------------------- - */ - - if (H5Ocopy(fidin, /* Source file or group identifier */ - travt->objs[i].name, /* Name of the source object to be copied */ - fidout, /* Destination file or group identifier */ - travt->objs[i].name, /* Name of the destination object */ - pid, /* Properties which apply to the copy */ - H5P_DEFAULT) < 0) /* Properties which apply to the new hard link */ - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Ocopy failed"); - - /* close property */ - if (H5Pclose(pid) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - - /*------------------------------------------------------------------------- - * copy attrs manually - *------------------------------------------------------------------------- - */ - if ((dset_in = H5Dopen2(fidin, travt->objs[i].name, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dopen2 failed"); - if ((dset_out = H5Dopen2(fidout, travt->objs[i].name, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dopen2 failed"); - if (copy_attr(dset_in, dset_out, &named_dt_head, travt, options) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_attr failed"); - if (H5Dclose(dset_in) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed"); - if (H5Dclose(dset_out) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed"); - - if (options->verbose) - printf(FORMAT_OBJ, "dset", travt->objs[i].name); - - } /* end do we have request for filter/chunking */ - break; - - /*------------------------------------------------------------------------- - * H5TRAV_TYPE_NAMED_DATATYPE - *------------------------------------------------------------------------- - */ - case H5TRAV_TYPE_NAMED_DATATYPE: - if (options->verbose) - printf(FORMAT_OBJ, "type", travt->objs[i].name); - - if ((type_in = H5Topen2(fidin, travt->objs[i].name, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Topen2 failed"); - - /* Copy the datatype anonymously */ - if ((type_out = copy_named_datatype(type_in, fidout, &named_dt_head, travt, options)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_named_datatype failed"); - - /* Link in to group structure */ - if (H5Lcreate_hard(type_out, ".", fidout, travt->objs[i].name, H5P_DEFAULT, H5P_DEFAULT) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Lcreate_hard failed"); - - /*------------------------------------------------------------------------- - * copy attrs - *------------------------------------------------------------------------- - */ - if (copy_attr(type_in, type_out, &named_dt_head, travt, options) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_attr failed"); - - if (H5Tclose(type_in) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed"); - if (H5Tclose(type_out) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed"); - - break; - - /*------------------------------------------------------------------------- - * H5TRAV_TYPE_LINK - * H5TRAV_TYPE_UDLINK - * - * Only handles external links; H5Lcopy will fail for other UD link types - * since we don't have creation or copy callbacks for them. - *------------------------------------------------------------------------- - */ - case H5TRAV_TYPE_LINK: - case H5TRAV_TYPE_UDLINK: - if (options->verbose) - printf(FORMAT_OBJ, "link", travt->objs[i].name); - - if (H5Lcopy(fidin, travt->objs[i].name, fidout, travt->objs[i].name, H5P_DEFAULT, H5P_DEFAULT) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Lcopy failed"); - - if (options->verbose) - printf(FORMAT_OBJ, "link", travt->objs[i].name); - break; - - default: - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "Object type not found"); - } /* switch */ - - /* free */ - if (buf != NULL) { - HDfree(buf); - buf = NULL; - } - } /* i */ - - /* Finalize (link) the stack of named datatypes (if any) */ - named_datatype_free(&named_dt_head, 0); - - return ret_value; - -done: - H5E_BEGIN_TRY - { - H5Gclose(grp_in); - H5Gclose(grp_out); - H5Pclose(dcpl_in); - H5Pclose(gcpl_in); - H5Pclose(gcpl_out); - H5Sclose(f_space_id); - H5Dclose(dset_in); - H5Dclose(dset_out); - H5Tclose(ftype_id); - H5Tclose(wtype_id); - H5Tclose(type_in); - H5Tclose(type_out); - named_datatype_free(&named_dt_head, 1); - }H5E_END_TRY; - - /* free */ - if (buf != NULL) - HDfree(buf); - if (hslab_buf != NULL) - HDfree(hslab_buf); - - return ret_value; -} - -/*------------------------------------------------------------------------- - * Function: print_dataset_info - * - * Purpose: print name, filters, percentage compression of a dataset - * - *------------------------------------------------------------------------- - */ -static void print_dataset_info(hid_t dcpl_id, char *objname, double ratio, - int pr) -{ - char strfilter[255]; -#if defined (PRINT_DEBUG ) - char temp[255]; -#endif - int nfilters; /* number of filters */ - unsigned filt_flags; /* filter flags */ - H5Z_filter_t filtn; /* filter identification number */ - unsigned cd_values[20]; /* filter client data values */ - size_t cd_nelmts; /* filter client number of values */ - char f_objname[256]; /* filter objname */ - int i; - - HDstrcpy(strfilter, "\0"); - - /* get information about input filters */ - if ((nfilters = H5Pget_nfilters(dcpl_id)) < 0) - return; - - for (i = 0; i < nfilters; i++) { - cd_nelmts = NELMTS(cd_values); - - filtn = H5Pget_filter2(dcpl_id, (unsigned) i, &filt_flags, &cd_nelmts, - cd_values, sizeof(f_objname), f_objname, NULL); - - switch (filtn) { - case H5Z_FILTER_NONE: - HDstrcat(strfilter, "NONE "); - break; - - case H5Z_FILTER_DEFLATE: - HDstrcat(strfilter, "GZIP "); - -#if defined (PRINT_DEBUG) - { - unsigned level = cd_values[0]; - - sprintf(temp,"(%d)", level); - HDstrcat(strfilter, temp); - } -#endif - break; - - case H5Z_FILTER_SZIP: - HDstrcat(strfilter, "SZIP "); - -#if defined (PRINT_DEBUG) - { - unsigned options_mask = cd_values[0]; /* from dcpl, not filt*/ - unsigned ppb = cd_values[1]; - - sprintf(temp,"(%d,", ppb); - HDstrcat(strfilter, temp); - if (options_mask & H5_SZIP_EC_OPTION_MASK) - HDstrcpy(temp, "EC) "); - else if (options_mask & H5_SZIP_NN_OPTION_MASK) - HDstrcpy(temp, "NN) "); - } - HDstrcat(strfilter, temp); -#endif - break; - - case H5Z_FILTER_SHUFFLE: - HDstrcat(strfilter, "SHUF "); - break; - - case H5Z_FILTER_FLETCHER32: - HDstrcat(strfilter, "FLET "); - break; - - case H5Z_FILTER_NBIT: - HDstrcat(strfilter, "NBIT "); - break; - - case H5Z_FILTER_SCALEOFFSET: - HDstrcat(strfilter, "SCALEOFFSET "); - break; - - default: - HDstrcat(strfilter, "UD "); - break; - } /* switch */ - }/*i*/ - - if (!pr) - printf(FORMAT_OBJ, "dset", objname); - else { - char str[255], temp[28]; - - HDstrcpy(str, "dset "); - HDstrcat(str, strfilter); - sprintf(temp, " (%.3f:1)", ratio); - HDstrcat(str, temp); - printf(FORMAT_OBJ, str, objname); - } -} - -/*------------------------------------------------------------------------- - * Function: copy_user_block - * - * Purpose: copy user block from one file to another - * - * Return: 0, ok, -1 no - * - * Programmer: Peter Cao - * - * Date: October, 25, 2007 - * - *------------------------------------------------------------------------- - */ -static int copy_user_block(const char *infile, const char *outfile, - hsize_t size) -{ - int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */ - int infid = -1, outfid = -1; /* File descriptors */ - - /* User block must be any power of 2 equal to 512 or greater (512, 1024, 2048, etc.) */ - HDassert(size > 0); - - /* Open files */ - if ((infid = HDopen(infile, O_RDONLY, 0)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDopen failed"); - if ((outfid = HDopen(outfile, O_WRONLY, 0644)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDopen failed"); - - /* Copy the userblock from the input file to the output file */ - while (size > 0) { - ssize_t nread, nbytes; /* # of bytes transfered, etc. */ - char rbuf[USERBLOCK_XFER_SIZE]; /* Buffer for reading */ - const char *wbuf; /* Pointer into buffer, for writing */ - - /* Read buffer from source file */ - if (size > USERBLOCK_XFER_SIZE) - nread = HDread(infid, rbuf, (size_t)USERBLOCK_XFER_SIZE); - else - nread = HDread(infid, rbuf, (size_t)size); - if (nread < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDread failed"); - - /* Write buffer to destination file */ - /* (compensating for interrupted writes & checking for errors, etc.) */ - nbytes = nread; - wbuf = rbuf; - while (nbytes > 0) { - ssize_t nwritten; /* # of bytes written */ - - do { - nwritten = HDwrite(outfid, wbuf, (size_t)nbytes); - } while (-1 == nwritten && EINTR == errno); - if (-1 == nwritten) /* error */ - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDwrite failed"); - HDassert(nwritten > 0); - HDassert(nwritten <= nbytes); - - /* Update # of bytes left & offset in buffer */ - nbytes -= nwritten; - wbuf += nwritten; - HDassert(nbytes == 0 || wbuf < (rbuf + USERBLOCK_XFER_SIZE)); - } /* end while */ - - /* Update size of userblock left to transfer */ - size = size - (hsize_t) nread; - } /* end while */ - -done: - if (infid > 0) - HDclose(infid); - if (outfid > 0) - HDclose(outfid); - - return ret_value; -} - -/*------------------------------------------------------------------------- - * Function: print_user_block - * - * Purpose: print user block - * - * Return: 0, ok, -1 no - * - * Programmer: Pedro Vicente - * - * Date: August, 20, 2008 - * - *------------------------------------------------------------------------- - */ -#if defined (H5REPACK_DEBUG_USER_BLOCK) -static -void print_user_block(const char *filename, hid_t fid) -{ - int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */ - int fh; /* file handle */ - hsize_t ub_size; /* user block size */ - hsize_t size; /* size read */ - hid_t fcpl; /* file creation property list ID for HDF5 file */ - int i; - - /* get user block size */ - if(( fcpl = H5Fget_create_plist(fid)) < 0) { - error_msg("failed to retrieve file creation property list\n"); - HGOTO_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Fget_create_plist failed"); - } - - if(H5Pget_userblock(fcpl, &ub_size) < 0) { - error_msg("failed to retrieve userblock size\n"); - HGOTO_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Pget_userblock failed"); - } - - if(H5Pclose(fcpl) < 0) { - error_msg("failed to close property list\n"); - HGOTO_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Pclose failed"); - } - - /* open file */ - if((fh = HDopen(filename, O_RDONLY, 0)) < 0) { - HGOTO_ERROR(H5E_tools_g, H5E_tools_min_id_g, "HDopen failed"); - } - - size = ub_size; - - /* read file */ - while(size > 0) { - ssize_t nread; /* # of bytes read */ - char rbuf[USERBLOCK_XFER_SIZE]; /* buffer for reading */ - - /* read buffer */ - if(size > USERBLOCK_XFER_SIZE) - nread = HDread(fh, rbuf, (size_t)USERBLOCK_XFER_SIZE); - else - nread = HDread(fh, rbuf, (size_t)size); - - for(i = 0; i < nread; i++) { - - printf("%c ", rbuf[i]); - - } - printf("\n"); - - if(nread < 0) { - HGOTO_ERROR(H5E_tools_g, H5E_tools_min_id_g, "nread < 0"); - } - - /* update size of userblock left to transfer */ - size -= nread; - } - -done: - if(fh > 0) - HDclose(fh); - - return; -} -#endif - diff --git a/tools/h5repack/h5repack_filters.c b/tools/h5repack/h5repack_filters.c deleted file mode 100644 index e21b829..0000000 --- a/tools/h5repack/h5repack_filters.c +++ /dev/null @@ -1,493 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include "h5repack.h" -#include "h5tools.h" -#include "h5tools_utils.h" - -/* number of members in an array */ -#ifndef NELMTS -# define NELMTS(X) (sizeof(X)/sizeof(X[0])) -#endif - -/* minimum of two values */ -#undef MIN -#define MIN(a,b) (((a)<(b)) ? (a) : (b)) - -/*------------------------------------------------------------------------- - * Function: aux_find_obj - * - * Purpose: find the object name NAME (got from the traverse list) - * in the repack options list - * - *------------------------------------------------------------------------- - */ -static int -aux_find_obj(const char* name, /* object name from traverse list */ - pack_opt_t *options, /* repack options */ - pack_info_t *obj /*OUT*/) /* info about object to filter */ -{ - char *pdest; - int result; - unsigned int i; - - for ( i=0; iop_tbl->nelems; i++) - { - if (HDstrcmp(options->op_tbl->objs[i].path,name)==0) - { - *obj = options->op_tbl->objs[i]; - return (int)i; - } - - pdest = HDstrstr(name,options->op_tbl->objs[i].path); - result = (int)(pdest - name); - - /* found at position 1, meaning without '/' */ - if( pdest != NULL && result==1 ) - { - *obj = options->op_tbl->objs[i]; - return (int)i; - } - }/*i*/ - - return -1; -} - - -/*------------------------------------------------------------------------- - * Function: aux_assign_obj - * - * Purpose: find the object name NAME (got from the traverse list) - * in the repack options list; assign the filter information OBJ - * - * Return: 0 not found, 1 found - * - *------------------------------------------------------------------------- - */ -static int -aux_assign_obj(const char* name, /* object name from traverse list */ - pack_opt_t *options, /* repack options */ - pack_info_t *obj /*OUT*/) /* info about object to filter */ -{ - - int idx, i; - pack_info_t tmp; - - init_packobject(&tmp); - - idx = aux_find_obj(name,options,&tmp); - - /* name was on input */ - if (idx>=0) - { - - - /* applying to all objects */ - if (options->all_layout) - { - /* assign the global layout info to the OBJ info */ - tmp.layout=options->layout_g; - switch (options->layout_g) - { - case H5D_CHUNKED: - tmp.chunk.rank=options->chunk_g.rank; - for ( i=0; ichunk_g.chunk_lengths[i]; - break; - case H5D_LAYOUT_ERROR: - case H5D_COMPACT: - case H5D_CONTIGUOUS: - case H5D_VIRTUAL: - case H5D_NLAYOUTS: - break; - default: - break; - }/*switch*/ - } - else - { - tmp.layout = options->op_tbl->objs[idx].layout; - switch (tmp.layout) - { - case H5D_CHUNKED: - tmp.chunk.rank = options->op_tbl->objs[idx].chunk.rank; - for ( i=0; iop_tbl->objs[idx].chunk.chunk_lengths[i]; - break; - case H5D_LAYOUT_ERROR: - case H5D_COMPACT: - case H5D_CONTIGUOUS: - case H5D_VIRTUAL: - case H5D_NLAYOUTS: - break; - default: - break; - }/*switch*/ - - } - - /* applying to all objects */ - if (options->all_filter) - { - /* assign the global filter */ - tmp.nfilters=1; - tmp.filter[0]=options->filter_g[0]; - } /* if all */ - else - { - tmp.nfilters=options->op_tbl->objs[idx].nfilters; - for ( i=0; iop_tbl->objs[idx].filter[i]; - } - } - - - } /* if idx */ - - - /* no input name */ - - else - { - - if (options->all_filter) - { - int k; - - /* assign the global filters */ - tmp.nfilters=options->n_filter_g; - for ( k = 0; k < options->n_filter_g; k++) - tmp.filter[k]=options->filter_g[k]; - } - if (options->all_layout) - { - /* assign the global layout info to the OBJ info */ - tmp.layout=options->layout_g; - switch (options->layout_g) - { - case H5D_CHUNKED: - tmp.chunk.rank=options->chunk_g.rank; - for ( i=0; ichunk_g.chunk_lengths[i]; - break; - case H5D_LAYOUT_ERROR: - case H5D_COMPACT: - case H5D_CONTIGUOUS: - case H5D_VIRTUAL: - case H5D_NLAYOUTS: - break; - default: - break; - }/*switch*/ - } - } - - *obj = tmp; - return 1; - -} - - -/*------------------------------------------------------------------------- - * Function: apply_filters - * - * Purpose: apply the filters in the object to the property list; - * do extra checking in the case of SZIP; delete all filters in the case - * of H5Z_FILTER_NONE present in the PACK_INFO_T filter array - * - * Return: 0 success, -1 an error occured - * - * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu - * - * Date: December 19, 2003 - * - *------------------------------------------------------------------------- - */ - -int apply_filters(const char* name, /* object name from traverse list */ - int rank, /* rank of dataset */ - hsize_t *dims, /* dimensions of dataset */ - size_t msize, /* size of type */ - hid_t dcpl_id, /* dataset creation property list */ - pack_opt_t *options, /* repack options */ - int *has_filter) /* (OUT) object NAME has a filter */ - - -{ - int nfilters; /* number of filters in DCPL */ - hsize_t chsize[64]; /* chunk size in elements */ - H5D_layout_t layout; - int i; - pack_info_t obj; - - *has_filter = 0; - - if (rank==0) /* scalar dataset, do not apply */ - return 0; - - /*------------------------------------------------------------------------- - * initialize the assigment object - *------------------------------------------------------------------------- - */ - init_packobject(&obj); - - /*------------------------------------------------------------------------- - * find options - *------------------------------------------------------------------------- - */ - if (aux_assign_obj(name,options,&obj)==0) - return 0; - - /* get information about input filters */ - if ((nfilters = H5Pget_nfilters(dcpl_id))<0) - return -1; - - /*------------------------------------------------------------------------- - * check if we have filters in the pipeline - * we want to replace them with the input filters - * only remove if we are inserting new ones - *------------------------------------------------------------------------- - */ - if (nfilters && obj.nfilters ) - { - *has_filter = 1; - if (H5Premove_filter(dcpl_id,H5Z_FILTER_ALL)<0) - return -1; - } - - /*------------------------------------------------------------------------- - * check if there is an existent chunk - * read it only if there is not a requested layout - *------------------------------------------------------------------------- - */ - if (obj.layout == -1 ) - { - if ((layout = H5Pget_layout(dcpl_id))<0) - return -1; - - if (layout == H5D_CHUNKED) - { - if ((rank = H5Pget_chunk(dcpl_id,NELMTS(chsize),chsize/*out*/))<0) - return -1; - obj.layout = H5D_CHUNKED; - obj.chunk.rank = rank; - for ( i = 0; i < rank; i++) - obj.chunk.chunk_lengths[i] = chsize[i]; - } - } - - /*------------------------------------------------------------------------- - * the type of filter and additional parameter - * type can be one of the filters - * H5Z_FILTER_NONE 0 , uncompress if compressed - * H5Z_FILTER_DEFLATE 1 , deflation like gzip - * H5Z_FILTER_SHUFFLE 2 , shuffle the data - * H5Z_FILTER_FLETCHER32 3 , fletcher32 checksum of EDC - * H5Z_FILTER_SZIP 4 , szip compression - * H5Z_FILTER_NBIT 5 , nbit compression - * H5Z_FILTER_SCALEOFFSET 6 , scaleoffset compression - *------------------------------------------------------------------------- - */ - - if (obj.nfilters) - { - - /*------------------------------------------------------------------------- - * filters require CHUNK layout; if we do not have one define a default - *------------------------------------------------------------------------- - */ - if (obj.layout==-1) - { - - /* stripmine info */ - hsize_t sm_size[H5S_MAX_RANK]; /*stripmine size */ - hsize_t sm_nbytes; /*bytes per stripmine */ - - obj.chunk.rank = rank; - - /* - * determine the strip mine size. The strip mine is - * a hyperslab whose size is manageable. - */ - - - - sm_nbytes = msize; - for ( i = rank; i > 0; --i) - { - hsize_t size = H5TOOLS_BUFSIZE / sm_nbytes; - if ( size == 0) /* datum size > H5TOOLS_BUFSIZE */ - size = 1; - sm_size[i - 1] = MIN(dims[i - 1], size); - sm_nbytes *= sm_size[i - 1]; - HDassert(sm_nbytes > 0); - - } - - for ( i = 0; i < rank; i++) - { - obj.chunk.chunk_lengths[i] = sm_size[i]; - } - - } - - for ( i=0; i=0) - { - /* a layout was defined */ - if (H5Pset_layout(dcpl_id, obj.layout)<0) - return -1; - - if (H5D_CHUNKED == obj.layout) - { - if(H5Pset_chunk(dcpl_id, obj.chunk.rank, obj.chunk.chunk_lengths)<0) - return -1; - } - else if (H5D_COMPACT == obj.layout) - { - if (H5Pset_alloc_time(dcpl_id, H5D_ALLOC_TIME_EARLY)<0) - return -1; - } - /* remove filters for the H5D_CONTIGUOUS case */ - else if (H5D_CONTIGUOUS == obj.layout) - { - if (H5Premove_filter(dcpl_id,H5Z_FILTER_ALL)<0) - return -1; - } - - } - - return 0; -} - diff --git a/tools/h5repack/h5repack_main.c b/tools/h5repack/h5repack_main.c deleted file mode 100644 index 2d48a04..0000000 --- a/tools/h5repack/h5repack_main.c +++ /dev/null @@ -1,664 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include "h5tools.h" -#include "h5tools_utils.h" -#include "h5repack.h" - -/* Name of tool */ -#define PROGRAMNAME "h5repack" - -static int parse_command_line(int argc, const char **argv, pack_opt_t* options); -static void leave(int ret) H5_ATTR_NORETURN; - - -/* module-scoped variables */ -static int has_i_o = 0; -const char *infile = NULL; -const char *outfile = NULL; - -/* - * Command-line options: The user can specify short or long-named - * parameters. - */ -static const char *s_opts = "hVvf:l:m:e:nLc:d:s:u:b:M:t:a:i:o:S:T:E"; -static struct long_options l_opts[] = { - { "help", no_arg, 'h' }, - { "version", no_arg, 'V' }, - { "verbose", no_arg, 'v' }, - { "filter", require_arg, 'f' }, - { "layout", require_arg, 'l' }, - { "minimum", require_arg, 'm' }, - { "file", require_arg, 'e' }, - { "native", no_arg, 'n' }, - { "latest", no_arg, 'L' }, - { "compact", require_arg, 'c' }, - { "indexed", require_arg, 'd' }, - { "ssize", require_arg, 's' }, - { "ublock", require_arg, 'u' }, - { "block", require_arg, 'b' }, - { "metadata_block_size", require_arg, 'M' }, - { "threshold", require_arg, 't' }, - { "alignment", require_arg, 'a' }, - { "infile", require_arg, 'i' }, /* -i for backward compability */ - { "outfile", require_arg, 'o' }, /* -o for backward compability */ - { "fs_strategy", require_arg, 'S' }, - { "fs_threshold", require_arg, 'T' }, - { "enable-error-stack", no_arg, 'E' }, - { NULL, 0, '\0' } -}; - -/*------------------------------------------------------------------------- - * Function: usage - * - * Purpose: print usage - * - * Return: void - * - *------------------------------------------------------------------------- - */ -static void usage(const char *prog) { - FLUSHSTREAM(rawoutstream); - PRINTSTREAM(rawoutstream, "usage: %s [OPTIONS] file1 file2\n", prog); - PRINTVALSTREAM(rawoutstream, " file1 Input HDF5 File\n"); - PRINTVALSTREAM(rawoutstream, " file2 Output HDF5 File\n"); - PRINTVALSTREAM(rawoutstream, " OPTIONS\n"); - PRINTVALSTREAM(rawoutstream, " -h, --help Print a usage message and exit\n"); - PRINTVALSTREAM(rawoutstream, " -v, --verbose Verbose mode, print object information\n"); - PRINTVALSTREAM(rawoutstream, " -V, --version Print version number and exit\n"); - PRINTVALSTREAM(rawoutstream, " -n, --native Use a native HDF5 type when repacking\n"); - PRINTVALSTREAM(rawoutstream, " -L, --latest Use latest version of file format\n"); - PRINTVALSTREAM(rawoutstream, " -c L1, --compact=L1 Maximum number of links in header messages\n"); - PRINTVALSTREAM(rawoutstream, " -d L2, --indexed=L2 Minimum number of links in the indexed format\n"); - PRINTVALSTREAM(rawoutstream, " -s S[:F], --ssize=S[:F] Shared object header message minimum size\n"); - PRINTVALSTREAM(rawoutstream, " -m M, --minimum=M Do not apply the filter to datasets smaller than M\n"); - PRINTVALSTREAM(rawoutstream, " -e E, --file=E Name of file E with the -f and -l options\n"); - PRINTVALSTREAM(rawoutstream, " -u U, --ublock=U Name of file U with user block data to be added\n"); - PRINTVALSTREAM(rawoutstream, " -b B, --block=B Size of user block to be added\n"); - PRINTVALSTREAM(rawoutstream, " -M A, --metadata_block_size=A Metadata block size for H5Pset_meta_block_size\n"); - PRINTVALSTREAM(rawoutstream, " -t T, --threshold=T Threshold value for H5Pset_alignment\n"); - PRINTVALSTREAM(rawoutstream, " -a A, --alignment=A Alignment value for H5Pset_alignment\n"); - PRINTVALSTREAM(rawoutstream, " -f FILT, --filter=FILT Filter type\n"); - PRINTVALSTREAM(rawoutstream, " -l LAYT, --layout=LAYT Layout type\n"); - PRINTVALSTREAM(rawoutstream, " -S FS_STRGY, --fs_strategy=FS_STRGY File space management strategy\n"); - PRINTVALSTREAM(rawoutstream, " -T FS_THRD, --fs_threshold=FS_THRD Free-space section threshold\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " M - is an integer greater than 1, size of dataset in bytes (default is 0) \n"); - PRINTVALSTREAM(rawoutstream, " E - is a filename.\n"); - PRINTVALSTREAM(rawoutstream, " S - is an integer\n"); - PRINTVALSTREAM(rawoutstream, " U - is a filename.\n"); - PRINTVALSTREAM(rawoutstream, " T - is an integer\n"); - PRINTVALSTREAM(rawoutstream, " A - is an integer greater than zero\n"); - PRINTVALSTREAM(rawoutstream, " B - is the user block size, any value that is 512 or greater and is\n"); - PRINTVALSTREAM(rawoutstream, " a power of 2 (1024 default)\n"); - PRINTVALSTREAM(rawoutstream, " F - is the shared object header message type, any of . If F is not specified, S applies to all messages\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " --enable-error-stack Prints messages from the HDF5 error stack as they\n"); - PRINTVALSTREAM(rawoutstream, " occur.\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " FS_STRGY is the file space management strategy to use for the output file.\n"); - PRINTVALSTREAM(rawoutstream, " It is a string as listed below:\n"); - PRINTVALSTREAM(rawoutstream, " ALL_PERSIST - Use persistent free-space managers, aggregators and virtual file driver\n"); - PRINTVALSTREAM(rawoutstream, " for file space allocation\n"); - PRINTVALSTREAM(rawoutstream, " ALL - Use non-persistent free-space managers, aggregators and virtual file driver\n"); - PRINTVALSTREAM(rawoutstream, " for file space allocation\n"); - PRINTVALSTREAM(rawoutstream, " AGGR_VFD - Use aggregators and virtual file driver for file space allocation\n"); - PRINTVALSTREAM(rawoutstream, " VFD - Use virtual file driver for file space allocation\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " FS_THRD is the free-space section threshold to use for the output file.\n"); - PRINTVALSTREAM(rawoutstream, " It is the minimum size (in bytes) of free-space sections to be tracked\n"); - PRINTVALSTREAM(rawoutstream, " by the the library's free-space managers.\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " FILT - is a string with the format:\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " :=\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " is a comma separated list of object names, meaning apply\n"); - PRINTVALSTREAM(rawoutstream, " compression only to those objects. If no names are specified, the filter\n"); - PRINTVALSTREAM(rawoutstream, " is applied to all objects\n"); - PRINTVALSTREAM(rawoutstream, " can be:\n"); - PRINTVALSTREAM(rawoutstream, " GZIP, to apply the HDF5 GZIP filter (GZIP compression)\n"); - PRINTVALSTREAM(rawoutstream, " SZIP, to apply the HDF5 SZIP filter (SZIP compression)\n"); - PRINTVALSTREAM(rawoutstream, " SHUF, to apply the HDF5 shuffle filter\n"); - PRINTVALSTREAM(rawoutstream, " FLET, to apply the HDF5 checksum filter\n"); - PRINTVALSTREAM(rawoutstream, " NBIT, to apply the HDF5 NBIT filter (NBIT compression)\n"); - PRINTVALSTREAM(rawoutstream, " SOFF, to apply the HDF5 Scale/Offset filter\n"); - PRINTVALSTREAM(rawoutstream, " UD, to apply a user defined filter\n"); - PRINTVALSTREAM(rawoutstream, " NONE, to remove all filters\n"); - PRINTVALSTREAM(rawoutstream, " is optional filter parameter information\n"); - PRINTVALSTREAM(rawoutstream, " GZIP= from 1-9\n"); - PRINTVALSTREAM(rawoutstream, " SZIP= pixels per block is a even number in\n"); - PRINTVALSTREAM(rawoutstream, " 2-32 and coding method is either EC or NN\n"); - PRINTVALSTREAM(rawoutstream, " SHUF (no parameter)\n"); - PRINTVALSTREAM(rawoutstream, " FLET (no parameter)\n"); - PRINTVALSTREAM(rawoutstream, " NBIT (no parameter)\n"); - PRINTVALSTREAM(rawoutstream, " SOFF= scale_factor is an integer and scale_type\n"); - PRINTVALSTREAM(rawoutstream, " is either IN or DS\n"); - PRINTVALSTREAM(rawoutstream, " UD=\n"); - PRINTVALSTREAM(rawoutstream, " required values for filter_number,cd_value_count,value_1\n"); - PRINTVALSTREAM(rawoutstream, " optional values for value_2 to value_N\n"); - PRINTVALSTREAM(rawoutstream, " NONE (no parameter)\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " LAYT - is a string with the format:\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " :=\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " is a comma separated list of object names, meaning that\n"); - PRINTVALSTREAM(rawoutstream, " layout information is supplied for those objects. If no names are\n"); - PRINTVALSTREAM(rawoutstream, " specified, the layout type is applied to all objects\n"); - PRINTVALSTREAM(rawoutstream, " can be:\n"); - PRINTVALSTREAM(rawoutstream, " CHUNK, to apply chunking layout\n"); - PRINTVALSTREAM(rawoutstream, " COMPA, to apply compact layout\n"); - PRINTVALSTREAM(rawoutstream, " CONTI, to apply contiguous layout\n"); - PRINTVALSTREAM(rawoutstream, " is optional layout information\n"); - PRINTVALSTREAM(rawoutstream, " CHUNK=DIM[xDIM...xDIM], the chunk size of each dimension\n"); - PRINTVALSTREAM(rawoutstream, " COMPA (no parameter)\n"); - PRINTVALSTREAM(rawoutstream, " CONTI (no parameter)\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, "Examples of use:\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, "1) h5repack -v -f GZIP=1 file1 file2\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " GZIP compression with level 1 to all objects\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, "2) h5repack -v -f dset1:SZIP=8,NN file1 file2\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " SZIP compression with 8 pixels per block and NN coding method to object dset1\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, "3) h5repack -v -l dset1,dset2:CHUNK=20x10 -f dset3,dset4,dset5:NONE file1 file2\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " Chunked layout, with a layout size of 20x10, to objects dset1 and dset2\n"); - PRINTVALSTREAM(rawoutstream, " and remove filters to objects dset3, dset4, dset5\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, "4) h5repack -L -c 10 -s 20:dtype file1 file2 \n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " Using latest file format with maximum compact group size of 10 and\n"); - PRINTVALSTREAM(rawoutstream, " and minimum shared datatype size of 20\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, "5) h5repack -f SHUF -f GZIP=1 file1 file2 \n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " Add both filters SHUF and GZIP in this order to all datasets\n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, "6) h5repack -f UD=307,1,9 file1 file2 \n"); - PRINTVALSTREAM(rawoutstream, "\n"); - PRINTVALSTREAM(rawoutstream, " Add bzip2 filter to all datasets\n"); - PRINTVALSTREAM(rawoutstream, "\n"); -} - -/*------------------------------------------------------------------------- - * Function: leave - * - * Purpose: Shutdown MPI & HDF5 and call exit() - * - * Return: Does not return - * - * Programmer: Quincey Koziol - * Saturday, 31. January 2004 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void leave(int ret) { - h5tools_close(); - - HDexit(ret); -} - -/*------------------------------------------------------------------------- - * Function: read_info - * - * Purpose: read comp and chunk options from a file - * - * Return: void, exit on error - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: September, 22, 2003 - * - *------------------------------------------------------------------------- - */ - -static -int read_info(const char *filename, pack_opt_t *options) { - - char stype[10]; - char comp_info[1024]; - FILE *fp = NULL; - char c; - int i, rc = 1; - int ret_value = EXIT_SUCCESS; - - if ((fp = HDfopen(filename, "r")) == (FILE *) NULL) { - error_msg("cannot open options file %s\n", filename); - h5tools_setstatus(EXIT_FAILURE); - ret_value = EXIT_FAILURE; - goto done; - } - - /* cycle until end of file reached */ - while (1) { - rc = fscanf(fp, "%s", stype); - if (rc == -1) - break; - - /*------------------------------------------------------------------------- - * filter - *------------------------------------------------------------------------- - */ - if (HDstrcmp(stype,"-f") == 0) { - /* find begining of info */ - i = 0; - c = '0'; - while (c != ' ') { - if(fscanf(fp, "%c", &c) < 0 && HDferror(fp)) { - error_msg("fscanf error\n"); - h5tools_setstatus(EXIT_FAILURE); - ret_value = EXIT_FAILURE; - goto done; - } /* end if */ - if (HDfeof(fp)) - break; - } - c = '0'; - /* go until end */ - while (c != ' ') { - if(fscanf(fp, "%c", &c) < 0 && HDferror(fp)) { - error_msg("fscanf error\n"); - h5tools_setstatus(EXIT_FAILURE); - ret_value = EXIT_FAILURE; - goto done; - } /* end if */ - comp_info[i] = c; - i++; - if (HDfeof(fp)) - break; - if (c == 10 /*eol*/) - break; - } - comp_info[i - 1] = '\0'; /*cut the last " */ - - if (h5repack_addfilter(comp_info, options) == -1) { - error_msg("could not add compression option\n"); - h5tools_setstatus(EXIT_FAILURE); - ret_value = EXIT_FAILURE; - goto done; - } - } - /*------------------------------------------------------------------------- - * layout - *------------------------------------------------------------------------- - */ - else if (HDstrcmp(stype,"-l") == 0) { - - /* find begining of info */ - i = 0; - c = '0'; - while (c != ' ') { - if(fscanf(fp, "%c", &c) < 0 && HDferror(fp)) { - error_msg("fscanf error\n"); - h5tools_setstatus(EXIT_FAILURE); - ret_value = EXIT_FAILURE; - goto done; - } /* end if */ - if (HDfeof(fp)) - break; - } - c = '0'; - /* go until end */ - while (c != ' ') { - if(fscanf(fp, "%c", &c) < 0 && HDferror(fp)) { - error_msg("fscanf error\n"); - h5tools_setstatus(EXIT_FAILURE); - ret_value = EXIT_FAILURE; - goto done; - } /* end if */ - comp_info[i] = c; - i++; - if (HDfeof(fp)) - break; - if (c == 10 /*eol*/) - break; - } - comp_info[i - 1] = '\0'; /*cut the last " */ - - if (h5repack_addlayout(comp_info, options) == -1) { - error_msg("could not add chunck option\n"); - h5tools_setstatus(EXIT_FAILURE); - ret_value = EXIT_FAILURE; - goto done; - } - } - /*------------------------------------------------------------------------- - * not valid - *------------------------------------------------------------------------- - */ - else { - error_msg("bad file format for %s", filename); - h5tools_setstatus(EXIT_FAILURE); - ret_value = EXIT_FAILURE; - goto done; - } - } - -done: - if (fp) - HDfclose(fp); - - return ret_value; -} - -/*------------------------------------------------------------------------- - * Function: parse_command_line - * - * Purpose: parse command line input - * - *------------------------------------------------------------------------- - */ - -static -int parse_command_line(int argc, const char **argv, pack_opt_t* options) { - - int opt; - int ret_value = 0; - - /* parse command line options */ - while ((opt = get_option(argc, argv, s_opts, l_opts)) != EOF) { - switch ((char) opt) { - - /* -i for backward compability */ - case 'i': - infile = opt_arg; - has_i_o = 1; - break; - - /* -o for backward compability */ - case 'o': - outfile = opt_arg; - has_i_o = 1; - break; - - case 'h': - usage(h5tools_getprogname()); - h5tools_setstatus(EXIT_SUCCESS); - ret_value = -1; - goto done; - - case 'V': - print_version(h5tools_getprogname()); - h5tools_setstatus(EXIT_SUCCESS); - ret_value = -1; - goto done; - - case 'v': - options->verbose = 1; - break; - - case 'f': - /* parse the -f filter option */ - if (h5repack_addfilter(opt_arg, options) < 0) { - error_msg("in parsing filter\n"); - h5tools_setstatus(EXIT_FAILURE); - ret_value = -1; - goto done; - } - break; - - case 'l': - /* parse the -l layout option */ - if (h5repack_addlayout(opt_arg, options) < 0) { - error_msg("in parsing layout\n"); - h5tools_setstatus(EXIT_FAILURE); - ret_value = -1; - goto done; - } - break; - - case 'm': - options->min_comp = HDstrtoull(opt_arg , NULL, 0); - if ((int) options->min_comp <= 0) { - error_msg("invalid minimum compress size <%s>\n", opt_arg); - h5tools_setstatus(EXIT_FAILURE); - ret_value = -1; - goto done; - } - break; - - case 'e': - ret_value = read_info(opt_arg, options); - if (ret_value < 0) - goto done; - break; - - case 'n': - options->use_native = 1; - break; - - case 'L': - options->latest = TRUE; - break; - - case 'c': - options->grp_compact = HDatoi( opt_arg ); - if (options->grp_compact > 0) - options->latest = TRUE; /* must use latest format */ - break; - - case 'd': - options->grp_indexed = HDatoi( opt_arg ); - if (options->grp_indexed > 0) - options->latest = TRUE; /* must use latest format */ - break; - - case 's': - { - int idx = 0; - int ssize = 0; - char *msgPtr = HDstrchr( opt_arg, ':'); - options->latest = TRUE; /* must use latest format */ - if (msgPtr == NULL) { - ssize = HDatoi( opt_arg ); - for (idx = 0; idx < 5; idx++) - options->msg_size[idx] = ssize; - } - else { - char msgType[10]; - HDstrcpy(msgType, msgPtr + 1); - msgPtr[0] = '\0'; - ssize = HDatoi( opt_arg ); - if (HDstrncmp(msgType, "dspace",6) == 0) { - options->msg_size[0] = ssize; - } - else if (HDstrncmp(msgType, "dtype", 5) == 0) { - options->msg_size[1] = ssize; - } - else if (HDstrncmp(msgType, "fill", 4) == 0) { - options->msg_size[2] = ssize; - } - else if (HDstrncmp(msgType, "pline", 5) == 0) { - options->msg_size[3] = ssize; - } - else if (HDstrncmp(msgType, "attr", 4) == 0) { - options->msg_size[4] = ssize; - } - } - } - break; - - case 'u': - options->ublock_filename = opt_arg; - break; - - case 'b': - options->ublock_size = (hsize_t) HDatol( opt_arg ); - break; - - case 'M': - options->meta_block_size = (hsize_t) HDatol( opt_arg ); - break; - - case 't': - options->threshold = (hsize_t) HDatol( opt_arg ); - break; - - case 'a': - options->alignment = HDstrtoull(opt_arg , NULL, 0); - if (options->alignment < 1) { - error_msg("invalid alignment size\n", opt_arg); - h5tools_setstatus(EXIT_FAILURE); - ret_value = -1; - goto done; - } - break; - - case 'S': - { - char strategy[MAX_NC_NAME]; - - HDstrcpy(strategy, opt_arg); - if (!HDstrcmp(strategy, "ALL_PERSIST")) - options->fs_strategy = H5F_FILE_SPACE_ALL_PERSIST; - else if (!HDstrcmp(strategy, "ALL")) - options->fs_strategy = H5F_FILE_SPACE_ALL; - else if (!HDstrcmp(strategy, "AGGR_VFD")) - options->fs_strategy = H5F_FILE_SPACE_AGGR_VFD; - else if (!HDstrcmp(strategy, "VFD")) - options->fs_strategy = H5F_FILE_SPACE_VFD; - else { - error_msg("invalid file space management strategy\n", opt_arg); - h5tools_setstatus(EXIT_FAILURE); - ret_value = -1; - goto done; - } - } - break; - - case 'T': - options->fs_threshold = (hsize_t) HDatol( opt_arg ); - break; - - case 'E': - enable_error_stack = TRUE; - break; - - default: - break; - } /* switch */ - - } /* while */ - - if (has_i_o == 0) { - /* check for file names to be processed */ - if (argc <= opt_ind || argv[opt_ind + 1] == NULL) { - error_msg("missing file names\n"); - usage(h5tools_getprogname()); - h5tools_setstatus(EXIT_FAILURE); - ret_value = -1; - } - } - -done: - return ret_value; -} - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: h5repack main program - * - * Return: Success: EXIT_SUCCESS(0) - * - * Failure: EXIT_FAILURE(1) - * - * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu - * - * Date: May 9, 2003 - * - * Comments: - * - *------------------------------------------------------------------------- - */ -int main(int argc, const char **argv) { - H5E_auto2_t func; - H5E_auto2_t tools_func; - void *edata; - void *tools_edata; - - pack_opt_t options; /*the global options */ - - h5tools_setprogname(PROGRAMNAME); - h5tools_setstatus(EXIT_SUCCESS); - - /* Disable error reporting */ - H5Eget_auto2(H5E_DEFAULT, &func, &edata); - H5Eset_auto2(H5E_DEFAULT, NULL, NULL); - - /* Initialize h5tools lib */ - h5tools_init(); - - /* Disable tools error reporting */ - H5Eget_auto2(H5tools_ERR_STACK_g, &tools_func, &tools_edata); - H5Eset_auto2(H5tools_ERR_STACK_g, NULL, NULL); - - /* update hyperslab buffer size from H5TOOLS_BUFSIZE env if exist */ - if (h5tools_getenv_update_hyperslab_bufsize() < 0) { - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - - /* initialize options */ - h5repack_init(&options, 0, FALSE, H5F_FILE_SPACE_DEFAULT, (hsize_t) 0); - - if (parse_command_line(argc, argv, &options) < 0) - goto done; - - /* get file names if they were not yet got */ - if (has_i_o == 0) { - - if (argv[opt_ind] != NULL && argv[opt_ind + 1] != NULL) { - infile = argv[opt_ind]; - outfile = argv[opt_ind + 1]; - - if ( HDstrcmp( infile, outfile ) == 0) { - error_msg("file names cannot be the same\n"); - usage(h5tools_getprogname()); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - } - else { - error_msg("file names missing\n"); - usage(h5tools_getprogname()); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - } - - if (enable_error_stack) { - H5Eset_auto2(H5E_DEFAULT, func, edata); - H5Eset_auto2(H5tools_ERR_STACK_g, tools_func, tools_edata); - } - - /* pack it */ - h5tools_setstatus(h5repack(infile, outfile, &options)); - -done: - /* free tables */ - h5repack_end(&options); - - leave(h5tools_getstatus()); -} - diff --git a/tools/h5repack/h5repack_opttable.c b/tools/h5repack/h5repack_opttable.c deleted file mode 100644 index 8c98b76..0000000 --- a/tools/h5repack/h5repack_opttable.c +++ /dev/null @@ -1,367 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include "h5repack.h" -#include "h5tools.h" -#include "h5tools_utils.h" - -/*------------------------------------------------------------------------- - * Function: init_packobject - * - * Purpose: initialize a pack_info_t structure - * - * Return: void - * - *------------------------------------------------------------------------- - */ - -void init_packobject(pack_info_t *obj) { - int j, k; - - HDstrcpy(obj->path, "\0"); - for (j = 0; j < H5_REPACK_MAX_NFILTERS; j++) { - obj->filter[j].filtn = -1; - for (k = 0; k < CD_VALUES; k++) - obj->filter[j].cd_values[k] = 0; - } - obj->chunk.rank = -1; - obj->refobj_id = -1; - obj->layout = H5D_LAYOUT_ERROR; - obj->nfilters = 0; -} - -/*------------------------------------------------------------------------- - * Function: aux_tblinsert_filter - * - * Purpose: auxiliary function, inserts the filter in object OBJS[ I ] - * - * Return: void - * - *------------------------------------------------------------------------- - */ - -static void aux_tblinsert_filter(pack_opttbl_t *table, unsigned int I, - filter_info_t filt) { - if (table->objs[I].nfilters < H5_REPACK_MAX_NFILTERS) { - table->objs[I].filter[table->objs[I].nfilters++] = filt; - } - else { - error_msg( - "cannot insert the filter in this object.\ - Maximum capacity exceeded\n"); - } -} - -/*------------------------------------------------------------------------- - * Function: aux_tblinsert_layout - * - * Purpose: auxiliary function, inserts the layout in object OBJS[ I ] - * - * Return: void - * - *------------------------------------------------------------------------- - */ - -static void aux_tblinsert_layout(pack_opttbl_t *table, unsigned int I, - pack_info_t *pack) { - int k; - - table->objs[I].layout = pack->layout; - if (H5D_CHUNKED == pack->layout) { - /* -2 means the NONE option, remove chunking - and set the layout to contiguous */ - if (pack->chunk.rank == -2) { - table->objs[I].layout = H5D_CONTIGUOUS; - table->objs[I].chunk.rank = -2; - } - /* otherwise set the chunking type */ - else { - table->objs[I].chunk.rank = pack->chunk.rank; - for (k = 0; k < pack->chunk.rank; k++) - table->objs[I].chunk.chunk_lengths[k] = - pack->chunk.chunk_lengths[k]; - } - } -} - -/*------------------------------------------------------------------------- - * Function: aux_inctable - * - * Purpose: auxiliary function, increases the size of the collection by N_OBJS - * - * Return: 0, ok, -1, fail - * - *------------------------------------------------------------------------- - */ -static int -aux_inctable(pack_opttbl_t *table, unsigned n_objs) -{ - unsigned u; - - table->size += n_objs; - table->objs = (pack_info_t*) HDrealloc(table->objs, table->size * sizeof(pack_info_t)); - if (table->objs == NULL) { - error_msg("not enough memory for options table\n"); - return -1; - } - - for (u = table->nelems; u < table->size; u++) - init_packobject(&table->objs[u]); - - return 0; -} - - -/*------------------------------------------------------------------------- - * Function: options_table_init - * - * Purpose: init options table - * - * Return: 0, ok, -1, fail - * - *------------------------------------------------------------------------- - */ -int options_table_init(pack_opttbl_t **tbl) { - unsigned int i; - pack_opttbl_t *table; - - if (NULL == (table = (pack_opttbl_t *) HDmalloc(sizeof(pack_opttbl_t)))) { - error_msg("not enough memory for options table\n"); - return -1; - } - - table->size = 30; - table->nelems = 0; - if (NULL == (table->objs = - (pack_info_t*) HDmalloc(table->size * sizeof(pack_info_t)))) { - error_msg("not enough memory for options table\n"); - HDfree(table); - return -1; - } - - for (i = 0; i < table->size; i++) - init_packobject(&table->objs[i]); - - *tbl = table; - return 0; -} - - -/*------------------------------------------------------------------------- - * Function: options_table_free - * - * Purpose: free table memory - * - * Return: 0 - * - *------------------------------------------------------------------------- - */ - -int options_table_free(pack_opttbl_t *table) { - HDfree(table->objs); - HDfree(table); - return 0; -} - -/*------------------------------------------------------------------------- - * Function: options_add_layout - * - * Purpose: add a layout option to the option list - * - * Return: 0, ok, -1, fail - * - *------------------------------------------------------------------------- - */ -int -options_add_layout(obj_list_t *obj_list, unsigned n_objs, pack_info_t *pack, - pack_opttbl_t *table) -{ - unsigned i, j, I; - unsigned added = 0; - hbool_t found = FALSE; - - /* increase the size of the collection by N_OBJS if necessary */ - if (table->nelems + n_objs >= table->size) - if (aux_inctable(table, n_objs) < 0) - return -1; - - /* search if this object is already in the table; "path" is the key */ - if (table->nelems > 0) { - /* go tru the supplied list of names */ - for (j = 0; j < n_objs; j++) { - /* linear table search */ - for (i = 0; i < table->nelems; i++) { - /*already on the table */ - if (HDstrcmp(obj_list[j].obj,table->objs[i].path) == 0) { - /* already chunk info inserted for this one; exit */ - if (table->objs[i].chunk.rank > 0) { - error_msg("chunk information already inserted for <%s>\n", obj_list[j].obj); - HDexit(EXIT_FAILURE); - } - /* insert the layout info */ - else { - aux_tblinsert_layout(table, i, pack); - found = TRUE; - break; - } - } /* if */ - } /* i */ - - if (!found) { - /* keep the grow in a temp var */ - I = table->nelems + added; - added++; - HDstrcpy(table->objs[I].path, obj_list[j].obj); - aux_tblinsert_layout(table, I, pack); - } - /* cases where we have an already inserted name but there is a new name also - example: - -f dset1:GZIP=1 -l dset1,dset2:CHUNK=20x20 - dset1 is already inserted, but dset2 must also be - */ - else - if(found && HDstrcmp(obj_list[j].obj,table->objs[i].path) != 0) { - /* keep the grow in a temp var */ - I = table->nelems + added; - added++; - HDstrcpy(table->objs[I].path, obj_list[j].obj); - aux_tblinsert_layout(table, I, pack); - } - } /* j */ - } - /* first time insertion */ - else { - /* go tru the supplied list of names */ - for (j = 0; j < n_objs; j++) { - I = table->nelems + added; - added++; - HDstrcpy(table->objs[I].path, obj_list[j].obj); - aux_tblinsert_layout(table, I, pack); - } - } - - table->nelems += added; - - return 0; -} - -/*------------------------------------------------------------------------- - * Function: options_add_filter - * - * Purpose: add a compression -f option to the option list - * - * Return: 0, ok, -1, fail - * - *------------------------------------------------------------------------- - */ -int -options_add_filter(obj_list_t *obj_list, unsigned n_objs, filter_info_t filt, - pack_opttbl_t *table) -{ - unsigned int i, j, I; - unsigned added = 0; - hbool_t found = FALSE; - - /* increase the size of the collection by N_OBJS if necessary */ - if (table->nelems + n_objs >= table->size) - if (aux_inctable(table, n_objs) < 0) - return -1; - - /* search if this object is already in the table; "path" is the key */ - if (table->nelems > 0) { - /* go tru the supplied list of names */ - for (j = 0; j < n_objs; j++) { - /* linear table search */ - for (i = 0; i < table->nelems; i++) { - /*already on the table */ - if (HDstrcmp(obj_list[j].obj, table->objs[i].path) == 0) { - /* insert */ - aux_tblinsert_filter(table, i, filt); - found = TRUE; - break; - } /* if */ - } /* i */ - - if (!found) { - /* keep the grow in a temp var */ - I = table->nelems + added; - added++; - HDstrcpy(table->objs[I].path, obj_list[j].obj); - aux_tblinsert_filter(table, I, filt); - } - /* cases where we have an already inserted name but there is a new name also - example: - -l dset1:CHUNK=20x20 -f dset1,dset2:GZIP=1 - dset1 is already inserted, but dset2 must also be - */ - else - if(found && HDstrcmp(obj_list[j].obj,table->objs[i].path) != 0) { - /* keep the grow in a temp var */ - I = table->nelems + added; - added++; - HDstrcpy(table->objs[I].path, obj_list[j].obj); - aux_tblinsert_filter(table, I, filt); - } - } /* j */ - } - - /* first time insertion */ - else { - /* go tru the supplied list of names */ - for (j = 0; j < n_objs; j++) { - I = table->nelems + added; - added++; - HDstrcpy(table->objs[I].path, obj_list[j].obj); - aux_tblinsert_filter(table, I, filt); - } - } - - table->nelems += added; - - return 0; -} - -/*------------------------------------------------------------------------- - * Function: options_get_object - * - * Purpose: get object from table; "path" is the key - * - * Return: pack_info_t* OBJECT or NULL if not found; PATH is the key - * - *------------------------------------------------------------------------- - */ - -pack_info_t* options_get_object(const char *path, pack_opttbl_t *table) { - unsigned int i; - char tbl_path[MAX_NC_NAME + 1]; /* +1 for start with "/" case */ - - for (i = 0; i < table->nelems; i++) { - /* make full path (start with "/") to compare correctly */ - if (HDstrncmp(table->objs[i].path, "/", 1)) { - HDstrcpy(tbl_path, "/"); - HDstrcat(tbl_path, table->objs[i].path); - } - else - HDstrcpy(tbl_path, table->objs[i].path); - - /* found it */ - if (HDstrcmp(tbl_path, path) == 0) { - return (&table->objs[i]); - } - } - - return NULL; -} - diff --git a/tools/h5repack/h5repack_parse.c b/tools/h5repack/h5repack_parse.c deleted file mode 100644 index 004b9e4..0000000 --- a/tools/h5repack/h5repack_parse.c +++ /dev/null @@ -1,616 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include "h5repack.h" -#include "h5tools.h" -#include "h5tools_utils.h" - -/*------------------------------------------------------------------------- - * Function: parse_filter - * - * Purpose: read filter information - * - * Return: a list of names, the number of names and its compression type - * - * can be: - * GZIP, to apply the HDF5 GZIP filter (GZIP compression) - * SZIP, to apply the HDF5 SZIP filter (SZIP compression) - * SHUF, to apply the HDF5 shuffle filter - * FLET, to apply the HDF5 checksum filter - * NBIT, to apply the HDF5 NBIT filter (NBIT compression) - * SOFF, to apply the HDF5 scale+offset filter (compression) - * UD, to apply a User Defined filter k,m,n1[,…,nm] - * NONE, to remove the filter - * - * Examples: - * "GZIP=6" - * "A,B:NONE" - *------------------------------------------------------------------------- - */ -obj_list_t* parse_filter(const char *str, unsigned *n_objs, filter_info_t *filt, - pack_opt_t *options, int *is_glb) { - size_t i, m, u; - char c; - size_t len = HDstrlen(str); - int k, l, p, q, end_obj = -1, no_param = 0; - unsigned j, n; - char sobj[MAX_NC_NAME]; - char scomp[10]; - char stype[6]; - char smask[3]; - obj_list_t* obj_list = NULL; - unsigned pixels_per_block; - - /* initialize compression info */ - HDmemset(filt, 0, sizeof(filter_info_t)); - *is_glb = 0; - - /* check for the end of object list and number of objects */ - for (i = 0, n = 0; i < len; i++) { - c = str[i]; - if (c == ':') - end_obj = (int) i; - if (c == ',') - n++; - } - - /* Check for missing : */ - if (end_obj == -1) { - /* apply to all objects */ - options->all_filter = 1; - *is_glb = 1; - } - - n++; - obj_list = (obj_list_t *) HDmalloc(n * sizeof(obj_list_t)); - if (obj_list == NULL) { - error_msg("could not allocate object list\n"); - return NULL; - } - *n_objs = n; - - /* get object list */ - if (end_obj > 0) - for (j = 0, k = 0, n = 0; j < (unsigned) end_obj; j++, k++) { - c = str[j]; - sobj[k] = c; - if (c == ',' || j == (unsigned) (end_obj - 1)) { - if (c == ',') - sobj[k] = '\0'; - else - sobj[k + 1] = '\0'; - HDstrcpy(obj_list[n].obj, sobj); - HDmemset(sobj, 0, sizeof(sobj)); - n++; - k = -1; - } - } - /* nothing after : */ - if (end_obj + 1 == (int) len) { - if (obj_list) - HDfree(obj_list); - error_msg("input Error: Invalid compression type in <%s>\n", str); - HDexit(EXIT_FAILURE); - } - - /* get filter additional parameters */ - m = 0; - for (i = (size_t)(end_obj + 1), k = 0, j = 0; i < len; i++, k++) { - c = str[i]; - scomp[k] = c; - if (c == '=' || i == len - 1) { - if (c == '=') { /*one more parameter */ - scomp[k] = '\0'; /*cut space */ - - /*------------------------------------------------------------------------- - * H5Z_FILTER_SZIP - * szip has the format SZIP= - * pixels per block is a even number in 2-32 and coding method is 'EC' or 'NN' - * example SZIP=8,NN - *------------------------------------------------------------------------- - */ - if (HDstrcmp(scomp, "SZIP") == 0) { - l = -1; /* mask index check */ - for (m = 0, u = i + 1; u < len; u++, m++) { - if (str[u] == ',') { - stype[m] = '\0'; /* end digit of szip */ - l = 0; /* start EC or NN search */ - u++; /* skip ',' */ - } - c = str[u]; - if (!HDisdigit(c) && l == -1) { - if (obj_list) - HDfree(obj_list); - error_msg("compression parameter not digit in <%s>\n", str); - HDexit(EXIT_FAILURE); - } - if (l == -1) - stype[m] = c; - else { - smask[l] = c; - l++; - if (l == 2) { - smask[l] = '\0'; - i = len - 1; /* end */ - (*n_objs)--; /* we counted an extra ',' */ - if (HDstrcmp(smask,"NN") == 0) - filt->cd_values[j++] = H5_SZIP_NN_OPTION_MASK; - else if (HDstrcmp(smask,"EC") == 0) - filt->cd_values[j++] = H5_SZIP_EC_OPTION_MASK; - else { - error_msg("szip mask must be 'NN' or 'EC' \n"); - HDexit(EXIT_FAILURE); - } - } - } - } /* u */ - } /*if */ - - /*------------------------------------------------------------------------- - * H5Z_FILTER_SCALEOFFSET - * scaleoffset has the format SOFF= - * scale_type can be - * integer datatype, H5Z_SO_INT (IN) - * float datatype using D-scaling method, H5Z_SO_FLOAT_DSCALE (DS) - * float datatype using E-scaling method, H5Z_SO_FLOAT_ESCALE (ES) , not yet implemented - * for integer datatypes, scale_factor denotes Minimum Bits - * for float datatypes, scale_factor denotes decimal scale factor - * examples - * SOFF=31,IN - * SOFF=3,DF - *------------------------------------------------------------------------- - */ - else if (HDstrcmp(scomp, "SOFF") == 0) { - l = -1; /* mask index check */ - for (m = 0, u = i + 1; u < len; u++, m++) { - if (str[u] == ',') { - stype[m] = '\0'; /* end digit */ - l = 0; /* start 'IN' , 'DS', or 'ES' search */ - u++; /* skip ',' */ - } - c = str[u]; - if (!HDisdigit(c) && l == -1) { - if (obj_list) - HDfree(obj_list); - error_msg("compression parameter is not a digit in <%s>\n", str); - HDexit(EXIT_FAILURE); - } - if (l == -1) - stype[m] = c; - else { - smask[l] = c; - l++; - if (l == 2) { - smask[l] = '\0'; - i = len - 1; /* end */ - (*n_objs)--; /* we counted an extra ',' */ - if (HDstrcmp(smask,"IN") == 0) - filt->cd_values[j++] = H5Z_SO_INT; - else if (HDstrcmp(smask, "DS") == H5Z_SO_FLOAT_DSCALE) - filt->cd_values[j++] = H5Z_SO_FLOAT_DSCALE; - else { - error_msg("scale type must be 'IN' or 'DS' \n"); - HDexit(EXIT_FAILURE); - } - } - } - } /* u */ - } /*if */ - - /*------------------------------------------------------------------------- - * User Defined - * has the format UD= - * BZIP2 example - * UD=307,1,9 - *------------------------------------------------------------------------- - */ - else if (HDstrcmp(scomp, "UD") == 0) { - l = -1; /* filter number index check */ - p = -1; /* CD_VAL count check */ - for (m = 0, q = 0, u = i + 1; u < len; u++, m++, q++) { - if (str[u] == ',') { - stype[q] = '\0'; /* end digit */ - if (l == -1) { - filt->filtn = HDatoi(stype); - l = 0; - } - else if (p == -1) { - filt->cd_nelmts = HDstrtoull(stype, NULL, 0); - p = 0; - } - else - filt->cd_values[j++] = (unsigned)HDstrtoul(stype, NULL, 0); - q = 0; - u++; /* skip ',' */ - } - c = str[u]; - if (!HDisdigit(c) && l == -1) { - if (obj_list) - HDfree(obj_list); - error_msg("filter number parameter is not a digit in <%s>\n", str); - HDexit(EXIT_FAILURE); - } - stype[q] = c; - } /* for u */ - stype[q] = '\0'; - } /*if */ - - /*------------------------------------------------------------------------- - * all other filters - *------------------------------------------------------------------------- - */ - else { - /* here we could have 1 or 2 digits */ - for (m = 0, u = i + 1; u < len; u++, m++) { - c = str[u]; - if (!HDisdigit(c)) { - if (obj_list) - HDfree(obj_list); - error_msg("compression parameter is not a digit in <%s>\n", str); - HDexit(EXIT_FAILURE); - } - stype[m] = c; - } /* u */ - - stype[m] = '\0'; - } /*if */ - - filt->cd_values[j++] = (unsigned) HDstrtoul(stype, NULL, 0); - if(filt->cd_nelmts == 0) - j = 0; - i += m; /* jump */ - } - else if (i == len - 1) { /*no more parameters */ - scomp[k + 1] = '\0'; - no_param = 1; - } - - /*------------------------------------------------------------------------- - * translate from string to filter symbol - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5Z_FILTER_NONE - *------------------------------------------------------------------------- - */ - if (HDstrcmp(scomp, "NONE") == 0) { - filt->filtn = H5Z_FILTER_NONE; - filt->cd_nelmts = 0; - } - - /*------------------------------------------------------------------------- - * H5Z_FILTER_DEFLATE - *------------------------------------------------------------------------- - */ - else if (HDstrcmp(scomp, "GZIP") == 0) { - filt->filtn = H5Z_FILTER_DEFLATE; - filt->cd_nelmts = 1; - if (no_param) { /*no more parameters, GZIP must have parameter */ - if (obj_list) - HDfree(obj_list); - error_msg("missing compression parameter in <%s>\n", str); - HDexit(EXIT_FAILURE); - } - } - - /*------------------------------------------------------------------------- - * H5Z_FILTER_SZIP - *------------------------------------------------------------------------- - */ - else if (HDstrcmp(scomp, "SZIP") == 0) { - filt->filtn = H5Z_FILTER_SZIP; - filt->cd_nelmts = 2; - if (no_param) { /*no more parameters, SZIP must have parameter */ - if (obj_list) - HDfree(obj_list); - error_msg("missing compression parameter in <%s>\n", str); - HDexit(EXIT_FAILURE); - } - } - - /*------------------------------------------------------------------------- - * H5Z_FILTER_SHUFFLE - *------------------------------------------------------------------------- - */ - else if (HDstrcmp(scomp, "SHUF") == 0) { - filt->filtn = H5Z_FILTER_SHUFFLE; - filt->cd_nelmts = 0; - if (m > 0) { /*shuffle does not have parameter */ - if (obj_list) - HDfree(obj_list); - error_msg("extra parameter in SHUF <%s>\n", str); - HDexit(EXIT_FAILURE); - } - } - /*------------------------------------------------------------------------- - * H5Z_FILTER_FLETCHER32 - *------------------------------------------------------------------------- - */ - else if (HDstrcmp(scomp, "FLET") == 0) { - filt->filtn = H5Z_FILTER_FLETCHER32; - filt->cd_nelmts = 0; - if (m > 0) { /*shuffle does not have parameter */ - if (obj_list) - HDfree(obj_list); - error_msg("extra parameter in FLET <%s>\n", str); - HDexit(EXIT_FAILURE); - } - } - /*------------------------------------------------------------------------- - * H5Z_FILTER_NBIT - *------------------------------------------------------------------------- - */ - else if (HDstrcmp(scomp, "NBIT") == 0) { - filt->filtn = H5Z_FILTER_NBIT; - filt->cd_nelmts = 0; - if (m > 0) { /*nbit does not have parameter */ - if (obj_list) - HDfree(obj_list); - error_msg("extra parameter in NBIT <%s>\n", str); - HDexit(EXIT_FAILURE); - } - } - /*------------------------------------------------------------------------- - * H5Z_FILTER_SCALEOFFSET - *------------------------------------------------------------------------- - */ - else if (HDstrcmp(scomp, "SOFF") == 0) { - filt->filtn = H5Z_FILTER_SCALEOFFSET; - filt->cd_nelmts = 2; - if (no_param) { /*no more parameters, SOFF must have parameter */ - if (obj_list) - HDfree(obj_list); - error_msg("missing compression parameter in <%s>\n", str); - HDexit(EXIT_FAILURE); - } - } - /*------------------------------------------------------------------------- - * User Defined Filter - *------------------------------------------------------------------------- - */ - else if (HDstrcmp(scomp, "UD") == 0) { - /* parameters does not match count */ - if (filt->cd_nelmts != j) { - if (obj_list) - HDfree(obj_list); - error_msg("incorrect number of compression parameters in <%s>\n", str); - HDexit(EXIT_FAILURE); - } - } - else { - if (obj_list) - HDfree(obj_list); - error_msg("invalid filter type in <%s>\n", str); - HDexit(EXIT_FAILURE); - } - } - } /*i*/ - - /*------------------------------------------------------------------------- - * check valid parameters - *------------------------------------------------------------------------- - */ - - switch (filt->filtn) { - /*------------------------------------------------------------------------- - * H5Z_FILTER_DEFLATE - *------------------------------------------------------------------------- - */ - case H5Z_FILTER_DEFLATE: - if (filt->cd_values[0] > 9) { - if (obj_list) - HDfree(obj_list); - error_msg("invalid compression parameter in <%s>\n", str); - HDexit(EXIT_FAILURE); - } - break; - /*------------------------------------------------------------------------- - * H5Z_FILTER_SZIP - *------------------------------------------------------------------------- - */ - case H5Z_FILTER_SZIP: - pixels_per_block = filt->cd_values[0]; - if ((pixels_per_block % 2) == 1) { - if (obj_list) - HDfree(obj_list); - error_msg("pixels_per_block is not even in <%s>\n", str); - HDexit(EXIT_FAILURE); - } - if (pixels_per_block > H5_SZIP_MAX_PIXELS_PER_BLOCK) { - if (obj_list) - HDfree(obj_list); - error_msg("pixels_per_block is too large in <%s>\n", str); - HDexit(EXIT_FAILURE); - } - if ((HDstrcmp(smask,"NN") != 0) && (HDstrcmp(smask,"EC") != 0)) { - if (obj_list) - HDfree(obj_list); - error_msg("szip mask must be 'NN' or 'EC' \n"); - HDexit(EXIT_FAILURE); - } - break; - default: - break; - }; - - return obj_list; -} - - -/*------------------------------------------------------------------------- - * Function: parse_layout - * - * Purpose: read layout info - * - * Return: a list of names, the number of names and its chunking info for - * chunked. NULL, on error - * the layout type can be: - * CHUNK, to apply chunking layout - * CONTI, to apply contiguous layout - * COMPA, to apply compact layout - * - * Example: - * "AA,B,CDE:CHUNK=10X10" - * - * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu - * - * Date: December 30, 2003 - * - *------------------------------------------------------------------------- - */ -obj_list_t* parse_layout(const char *str, unsigned *n_objs, pack_info_t *pack, /* info about layout needed */ -pack_opt_t *options) { - obj_list_t* obj_list = NULL; - unsigned i, j, n; - char c; - size_t len = HDstrlen(str); - int k, end_obj = -1, c_index; - char sobj[MAX_NC_NAME]; - char sdim[10]; - char slayout[10]; - - HDmemset(sdim, '\0', sizeof(sdim)); - HDmemset(sobj, '\0', sizeof(sobj)); - HDmemset(slayout, '\0', sizeof(slayout)); - - /* check for the end of object list and number of objects */ - for (i = 0, n = 0; i < len; i++) { - c = str[i]; - if (c == ':') - end_obj = (int) i; - if (c == ',') - n++; - } - - if (end_obj == -1) { /* missing : chunk all */ - options->all_layout = 1; - } - - n++; - obj_list = (obj_list_t*) HDmalloc(n * sizeof(obj_list_t)); - if (obj_list == NULL) { - error_msg("could not allocate object list\n"); - return NULL; - } - *n_objs = n; - - /* get object list */ - if (end_obj > 0) - for (j = 0, k = 0, n = 0; j < (unsigned) end_obj; j++, k++) { - c = str[j]; - sobj[k] = c; - if (c == ',' || j == (unsigned) (end_obj - 1)) { - if (c == ',') - sobj[k] = '\0'; - else - sobj[k + 1] = '\0'; - HDstrcpy(obj_list[n].obj, sobj); - HDmemset(sobj, 0, sizeof(sobj)); - n++; - k = -1; - } - } - - /* nothing after : */ - if (end_obj + 1 == (int) len) { - if (obj_list) - HDfree(obj_list); - error_msg("in parse layout, no characters after : in <%s>\n", str); - HDexit(EXIT_FAILURE); - } - - /* get layout info */ - for (j = (unsigned) (end_obj + 1), n = 0; n <= 5; j++, n++) { - if (n == 5) { - slayout[n] = '\0'; /*cut string */ - if (HDstrcmp(slayout, "COMPA") == 0) - pack->layout = H5D_COMPACT; - else if (HDstrcmp(slayout, "CONTI") == 0) - pack->layout = H5D_CONTIGUOUS; - else if (HDstrcmp(slayout, "CHUNK") == 0) - pack->layout = H5D_CHUNKED; - else { - error_msg("in parse layout, not a valid layout in <%s>\n", str); - HDexit(EXIT_FAILURE); - } - } - else { - c = str[j]; - slayout[n] = c; - } - } /* j */ - - if (pack->layout == H5D_CHUNKED) { - /*------------------------------------------------------------------------- - * get chunk info - *------------------------------------------------------------------------- - */ - k = 0; - if (j > len) { - if (obj_list) - HDfree(obj_list); - error_msg("in parse layout, <%s> Chunk dimensions missing\n", str); - HDexit(EXIT_FAILURE); - } - - for (i = j, c_index = 0; i < len; i++) { - c = str[i]; - sdim[k] = c; - k++; /*increment sdim index */ - - if (!HDisdigit(c) && c != 'x' && c != 'N' && c != 'O' && c != 'N' && c != 'E') { - if (obj_list) - HDfree(obj_list); - error_msg("in parse layout, <%s> Not a valid character in <%s>\n", sdim, str); - HDexit(EXIT_FAILURE); - } - - if (c == 'x' || i == len - 1) { - if (c == 'x') { - sdim[k - 1] = '\0'; - k = 0; - pack->chunk.chunk_lengths[c_index] = HDstrtoull(sdim, NULL, 0); - if (pack->chunk.chunk_lengths[c_index] == 0) { - if (obj_list) - HDfree(obj_list); - error_msg("in parse layout, <%s> conversion to number in <%s>\n", sdim, str); - HDexit(EXIT_FAILURE); - } - c_index++; - } - else if (i == len - 1) { /*no more parameters */ - sdim[k] = '\0'; - k = 0; - if (HDstrcmp(sdim,"NONE") == 0) { - pack->chunk.rank = -2; - } - else { - pack->chunk.chunk_lengths[c_index] = HDstrtoull(sdim, NULL, 0); - if (pack->chunk.chunk_lengths[c_index] == 0) { - if (obj_list) - HDfree(obj_list); - error_msg("in parse layout, <%s> conversion to number in <%s>\n", sdim, str); - HDexit(EXIT_FAILURE); - } - pack->chunk.rank = c_index + 1; - } - } /*if */ - } /*if c=='x' || i==len-1 */ - } /*i*/ - } /*H5D_CHUNKED*/ - - return obj_list; -} diff --git a/tools/h5repack/h5repack_plugin.sh.in b/tools/h5repack/h5repack_plugin.sh.in deleted file mode 100644 index c8d5bf7..0000000 --- a/tools/h5repack/h5repack_plugin.sh.in +++ /dev/null @@ -1,275 +0,0 @@ -#! /bin/sh -# -# Copyright by The HDF Group. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic document set and is -# linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have access -# to either file, you may request a copy from help@hdfgroup.org. -# -srcdir=@srcdir@ -TOP_BUILDDIR=@top_builddir@ - -# Determine backward compatibility options enabled -DEPRECATED_SYMBOLS="@DEPRECATED_SYMBOLS@" - -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -H5REPACK=h5repack # The tool name -H5REPACK_BIN=`pwd`/$H5REPACK # The path of the tool binary - -H5DUMP=../h5dump/h5dump # The h5dump tool name -H5DUMP_BIN=`pwd`/$H5DUMP # The path of the h5dump tool binary - -nerrors=0 -verbose=yes -exit_code=$EXIT_SUCCESS - -TEST_NAME=ud_plugin -FROM_DIR=`pwd`/.libs -PLUGIN_LIB="$FROM_DIR/libdynlibadd.*" -PLUGIN_LIB2="$FROM_DIR/libdynlibvers.*" -PLUGIN_LIBDIR=testdir3 -RM='rm -rf' - -GREP='grep' -CP='cp' -DIRNAME='dirname' -LS='ls' -AWK='awk' - -# source dirs -SRC_TOOLS="$srcdir/.." - -# testfiles source dirs for tools -SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles" - -TESTDIR=testplug -test -d $TESTDIR || mkdir $TESTDIR - -###################################################################### -# test files -# -------------------------------------------------------------------- -# All the test files copy from source directory to test directory -# NOTE: Keep this framework to add/remove test files. -# Any test files from other tools can be used in this framework. -# This list are also used for checking exist. -# Comment '#' without space can be used. -# -------------------------------------------------------------------- -LIST_HDF5_TEST_FILES=" -$SRC_H5REPACK_TESTFILES/h5repack_layout.h5 -$SRC_H5REPACK_TESTFILES/h5repack_layout.h5-plugin_test.ddl -$SRC_H5REPACK_TESTFILES/plugin_test.h5repack_layout.h5.tst -$SRC_H5REPACK_TESTFILES/h5repack_layout.h5-plugin_version_test.ddl -$SRC_H5REPACK_TESTFILES/plugin_version_test.h5repack_layout.h5.tst -" -#$SRC_H5REPACK_TESTFILES/h5repack_layout.UD.h5 -#$SRC_H5REPACK_TESTFILES/h5repack_layout.UD.h5-plugin_none.ddl -#$SRC_H5REPACK_TESTFILES/plugin_none.h5repack_layout.UD.h5.tst -#" - -# -# copy test files and expected output files from source dirs to test dir -# -COPY_TESTFILES="$LIST_HDF5_TEST_FILES" - -# Main Body -# Create test directories if not exists yet. -test -d $PLUGIN_LIBDIR || mkdir -p $PLUGIN_LIBDIR -if [ $? != 0 ]; then - echo "Failed to create test directory($PLUGIN_LIBDIR)" - exit $EXIT_FAILURE -fi - -# copy plugin library for test -$CP $PLUGIN_LIB $PLUGIN_LIBDIR -if [ $? != 0 ]; then - echo "Failed to copy plugin library ($PLUGIN_LIB) for test." - exit $EXIT_FAILURE -fi -$CP $PLUGIN_LIB2 $PLUGIN_LIBDIR -if [ $? != 0 ]; then - echo "Failed to copy plugin library ($PLUGIN_LIB2) for test." - exit $EXIT_FAILURE -fi - -# setup plugin path -ENVCMD="env HDF5_PLUGIN_PATH=../${PLUGIN_LIBDIR}" - -COPY_TESTFILES_TO_TESTDIR() -{ - # copy test files. Used -f to make sure get a new copy - for tstfile in $COPY_TESTFILES - do - # ignore '#' comment - echo $tstfile | tr -d ' ' | grep '^#' > /dev/null - RET=$? - if [ $RET -eq 1 ]; then - # skip cp if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=`$DIRNAME $tstfile` - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $CP -f $tstfile $TESTDIR - if [ $? -ne 0 ]; then - echo "Error: FAILED to copy $tstfile ." - - # Comment out this to CREATE expected file - exit $EXIT_FAILURE - fi - fi - fi - done -} - -CLEAN_TESTFILES_AND_TESTDIR() -{ - # skip rm if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=$SRC_H5REPACK_TESTFILES - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $RM $TESTDIR - fi -} - -# Print a $* message left justified in a field of 70 characters -# -MESSAGE() { - SPACES=" " - echo "$* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Testing". -# -TESTING() { - SPACES=" " - echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Verifying". -# -VERIFY() { - MESSAGE "Verifying $*" -} - -# This is different from $srcdir/../../bin/output_filter.sh -STDOUT_FILTER() { - result_file=$1 - tmp_file=/tmp/h5test_tmp_$$ - # Filter name of files. - cp $result_file $tmp_file - sed -e '/^Opening file/d' -e '/^Making file/d' \ - < $tmp_file > $result_file - # cleanup - rm -f $tmp_file -} - -# This runs h5repack comparing output with h5dump output -# from -pH option -# -TOOLTEST_DUMP() -{ - echo $@ - infile=$2 - outfile=out-$1.$2 - expect1="$TESTDIR/$1.$2.tst" - actual1="$TESTDIR/$1.$2.out" - actual1_err="$TESTDIR/$1.$2.err" - expect2="$TESTDIR/$2-$1.ddl" - actual2="$TESTDIR/$2-$1.out" - actual2_err="$TESTDIR/$2-$1.err" - - shift - shift - - # Run test. - TESTING $H5REPACK $@ - ( - cd $TESTDIR - $ENVCMD $H5REPACK_BIN "$@" $infile $outfile - ) >$actual1 2>$actual1_err - RET=$? - STDOUT_FILTER $actual1 - cat $actual1_err >> $actual1 - if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - if cmp -s $expect1 $actual1; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.tst) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && diff -c $expect1 $actual1 |sed 's/^/ /' - fi - VERIFY h5dump output -pH $outfile - ( - cd $TESTDIR - $ENVCMD $H5DUMP_BIN -pH $outfile - ) >$actual2 2>$actual2_err - RET=$? - cat $actual2_err >> $actual2 - - if cmp -s $expect2 $actual2; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.ddl) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && diff -c $expect2 $actual2 |sed 's/^/ /' - fi - - fi - - - rm -f $actual1 $actual1_err $actual2 $actual2_err - rm -f $outfile -} - -############################################################################## -### T H E T E S T S -############################################################################## -# prepare for test -COPY_TESTFILES_TO_TESTDIR - -# Run the test -arg="h5repack_layout.h5 -v -f UD=260,4,9,1,9,235" -TOOLTEST_DUMP plugin_version_test $arg - -arg="h5repack_layout.h5 -v -f UD=257,1,9" -TOOLTEST_DUMP plugin_test $arg - -#arg="h5repack_layout.UD.h5 -v -f NONE" -#TOOLTEST_DUMP plugin_none $arg - -# print results -if test $nerrors -ne 0 ; then - echo "$nerrors errors encountered" - exit_code=$EXIT_FAILURE -else - echo "All Plugin API tests passed." - exit_code=$EXIT_SUCCESS -fi - -# Clean up temporary files/directories -CLEAN_TESTFILES_AND_TESTDIR - -# Clean up temporary files/directories and leave -$RM $PLUGIN_LIBDIR - -exit $exit_code diff --git a/tools/h5repack/h5repack_refs.c b/tools/h5repack/h5repack_refs.c deleted file mode 100644 index f0f32c3..0000000 --- a/tools/h5repack/h5repack_refs.c +++ /dev/null @@ -1,877 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include "h5repack.h" -#include "h5diff.h" -#include "h5tools.h" - - -/*------------------------------------------------------------------------- - * local functions - *------------------------------------------------------------------------- - */ - -static const char* MapIdToName(hid_t refobj_id,trav_table_t *travt); -static int copy_refs_attr(hid_t loc_in, hid_t loc_out, pack_opt_t *options, - trav_table_t *travt, hid_t fidout); -static herr_t update_ref_value(hid_t obj_id, H5R_type_t ref_type, void *ref_in, - hid_t fid_out, void *ref_out, trav_table_t *travt); - -/*------------------------------------------------------------------------- - * Function: do_copy_refobjs - * - * Purpose: duplicate all referenced HDF5 objects in the file - * and create hard links - * - * Return: 0, ok, -1 no - * - * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu - * - * Date: December, 10, 2003 - * - *------------------------------------------------------------------------- - */ - -int do_copy_refobjs(hid_t fidin, - hid_t fidout, - trav_table_t *travt, - pack_opt_t *options) /* repack options */ -{ - int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */ - hid_t grp_in = (-1); /* read group ID */ - hid_t grp_out = (-1); /* write group ID */ - hid_t dset_in = (-1); /* read dataset ID */ - hid_t dset_out = (-1); /* write dataset ID */ - hid_t type_in = (-1); /* named type ID */ - hid_t dcpl_id = (-1); /* dataset creation property list ID */ - hid_t space_id = (-1); /* space ID */ - hid_t ftype_id = (-1); /* file data type ID */ - hid_t mtype_id = (-1); /* memory data type ID */ - size_t msize; /* memory size of memory type */ - hsize_t nelmts; /* number of elements in dataset */ - int rank; /* rank of dataset */ - hsize_t dims[H5S_MAX_RANK]; /* dimensions of dataset */ - unsigned int i, j; - int k; - named_dt_t *named_dt_head=NULL; /* Pointer to the stack of named datatypes - copied */ - - /*------------------------------------------------------------------------- - * browse - *------------------------------------------------------------------------- - */ - for(i = 0; i < travt->nobjs; i++) { - switch(travt->objs[i].type) - { - /*------------------------------------------------------------------------- - * H5TRAV_TYPE_GROUP - *------------------------------------------------------------------------- - */ - case H5TRAV_TYPE_GROUP: - /*------------------------------------------------------------------------- - * copy referenced objects in attributes - *------------------------------------------------------------------------- - */ - if((grp_out = H5Gopen2(fidout, travt->objs[i].name, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gopen2 failed"); - - if((grp_in = H5Gopen2(fidin, travt->objs[i].name, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gopen2 failed"); - - if(copy_refs_attr(grp_in, grp_out, options, travt, fidout) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_refs_attr failed"); - - if(H5Gclose(grp_out) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gclose failed"); - if(H5Gclose(grp_in) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gclose failed"); - - /*------------------------------------------------------------------------- - * check for hard links - *------------------------------------------------------------------------- - */ - if(travt->objs[i].nlinks) - for(j = 0; j < travt->objs[i].nlinks; j++) - H5Lcreate_hard(fidout, travt->objs[i].name, H5L_SAME_LOC, travt->objs[i].links[j].new_name, H5P_DEFAULT, H5P_DEFAULT); - break; - - /*------------------------------------------------------------------------- - * H5TRAV_TYPE_DATASET - *------------------------------------------------------------------------- - */ - case H5TRAV_TYPE_DATASET: - if((dset_in = H5Dopen2(fidin, travt->objs[i].name, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dopen2 failed"); - if((space_id = H5Dget_space(dset_in)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_space failed"); - if((ftype_id = H5Dget_type(dset_in)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_type failed"); - if((dcpl_id = H5Dget_create_plist(dset_in)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_create_plist failed"); - if((rank = H5Sget_simple_extent_ndims(space_id)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sget_simple_extent_ndims failed"); - if(H5Sget_simple_extent_dims(space_id, dims, NULL) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sget_simple_extent_dims failed"); - nelmts = 1; - for(k = 0; k < rank; k++) - nelmts *= dims[k]; - - if((mtype_id = h5tools_get_native_type(ftype_id)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "h5tools_get_native_type failed"); - - if((msize = H5Tget_size(mtype_id)) == 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tget_size failed"); - - /*------------------------------------------------------------------------- - * check if the dataset creation property list has filters that - * are not registered in the current configuration - * 1) the external filters GZIP and SZIP might not be available - * 2) the internal filters might be turned off - *------------------------------------------------------------------------- - */ - if(h5tools_canreadf(NULL, dcpl_id) == 1) { - /*------------------------------------------------------------------------- - * test for a valid output dataset - *------------------------------------------------------------------------- - */ - dset_out = FAIL; - - /*------------------------------------------------------------------------- - * object references are a special case - * we cannot just copy the buffers, but instead we recreate the reference - *------------------------------------------------------------------------- - */ - if(H5Tequal(mtype_id, H5T_STD_REF_OBJ)) { - hid_t refobj_id; - hobj_ref_t *refbuf = NULL; /* buffer for object references */ - hobj_ref_t *buf = NULL; - const char* refname; - unsigned u; - - /*------------------------------------------------------------------------- - * read to memory - *------------------------------------------------------------------------- - */ - if(nelmts) { - buf = (hobj_ref_t *)HDmalloc((unsigned)(nelmts * msize)); - if(buf==NULL) { - printf("cannot read into memory\n" ); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDmalloc failed"); - } /* end if */ - if(H5Dread(dset_in, mtype_id, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dread failed"); - - refbuf = (hobj_ref_t*) HDcalloc((unsigned)nelmts, msize); - if(refbuf == NULL){ - printf("cannot allocate memory\n" ); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDcalloc failed"); - } /* end if */ - for(u = 0; u < nelmts; u++) { - H5E_BEGIN_TRY { - if((refobj_id = H5Rdereference2(dset_in, H5P_DEFAULT, H5R_OBJECT, &buf[u])) < 0) - continue; - } H5E_END_TRY; - - /* get the name. a valid name could only occur - * in the second traversal of the file - */ - if((refname = MapIdToName(refobj_id, travt)) != NULL) { - /* create the reference, -1 parameter for objects */ - if(H5Rcreate(&refbuf[u], fidout, refname, H5R_OBJECT, (hid_t)-1) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Rcreate failed"); - if(options->verbose) - { - printf(FORMAT_OBJ,"dset",travt->objs[i].name ); - printf("object <%s> object reference created to <%s>\n", - travt->objs[i].name, - refname); - } - } /*refname*/ - H5Oclose(refobj_id); - } /* u */ - } /*nelmts*/ - - /*------------------------------------------------------------------------- - * create/write dataset/close - *------------------------------------------------------------------------- - */ - if((dset_out = H5Dcreate2(fidout, travt->objs[i].name, mtype_id, space_id, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dcreate2 failed"); - if(nelmts) - if(H5Dwrite(dset_out, mtype_id, H5S_ALL, H5S_ALL, H5P_DEFAULT, refbuf) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dwrite failed"); - - if(buf) - HDfree(buf); - if(refbuf) - HDfree(refbuf); - - /*------------------------------------------------------ - * copy attrs - *----------------------------------------------------*/ - if(copy_attr(dset_in, dset_out, &named_dt_head, travt, options) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_attr failed"); - } /*H5T_STD_REF_OBJ*/ - - /*------------------------------------------------------------------------- - * dataset region references - *------------------------------------------------------------------------- - */ - else if(H5Tequal(mtype_id, H5T_STD_REF_DSETREG)) - { - hid_t refobj_id; - hdset_reg_ref_t *refbuf = NULL; /* input buffer for region references */ - hdset_reg_ref_t *buf = NULL; /* output buffer */ - const char* refname; - unsigned u; - - /*------------------------------------------------------------------------- - * read input to memory - *------------------------------------------------------------------------- - */ - if(nelmts) { - buf = (hdset_reg_ref_t *)HDmalloc((unsigned)(nelmts * msize)); - if(buf == NULL) { - printf("cannot read into memory\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDmalloc failed"); - } /* end if */ - if(H5Dread(dset_in, mtype_id, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dread failed"); - - /*------------------------------------------------------------------------- - * create output - *------------------------------------------------------------------------- - */ - refbuf = (hdset_reg_ref_t *)HDcalloc(sizeof(hdset_reg_ref_t), (size_t)nelmts); /*init to zero */ - if(refbuf == NULL) { - printf("cannot allocate memory\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDcalloc failed"); - } /* end if */ - - for(u = 0; u < nelmts; u++) { - H5E_BEGIN_TRY { - if((refobj_id = H5Rdereference2(dset_in, H5P_DEFAULT, H5R_DATASET_REGION, &buf[u])) < 0) - continue; - } H5E_END_TRY; - - /* get the name. a valid name could only occur - * in the second traversal of the file - */ - if((refname = MapIdToName(refobj_id, travt)) != NULL) { - hid_t region_id; /* region id of the referenced dataset */ - - if((region_id = H5Rget_region(dset_in, H5R_DATASET_REGION, &buf[u])) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Rget_region failed"); - - /* create the reference, we need the space_id */ - if(H5Rcreate(&refbuf[u], fidout, refname, H5R_DATASET_REGION, region_id) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Rcreate failed"); - if(H5Sclose(region_id) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sclose failed"); - if(options->verbose) - { - printf(FORMAT_OBJ,"dset",travt->objs[i].name ); - printf("object <%s> region reference created to <%s>\n", - travt->objs[i].name, - refname); - } - } /*refname*/ - H5Oclose(refobj_id); - } /* u */ - } /*nelmts*/ - - /*------------------------------------------------------------------------- - * create/write dataset/close - *------------------------------------------------------------------------- - */ - if((dset_out = H5Dcreate2(fidout, travt->objs[i].name, mtype_id, space_id, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dcreate2 failed"); - if(nelmts) - if(H5Dwrite(dset_out, mtype_id, H5S_ALL, H5S_ALL, H5P_DEFAULT, refbuf) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dwrite failed"); - - if(buf) - HDfree(buf); - if(refbuf) - HDfree(refbuf); - - /*----------------------------------------------------- - * copy attrs - *----------------------------------------------------*/ - if(copy_attr(dset_in, dset_out, &named_dt_head, travt, options) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_attr failed"); - } /* H5T_STD_REF_DSETREG */ - /*------------------------------------------------------------------------- - * not references, open previously created object in 1st traversal - *------------------------------------------------------------------------- - */ - else { - if((dset_out = H5Dopen2(fidout, travt->objs[i].name, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dopen2 failed"); - } /* end else */ - - HDassert(dset_out != FAIL); - - /*------------------------------------------------------------------------- - * copy referenced objects in attributes - *------------------------------------------------------------------------- - */ - if(copy_refs_attr(dset_in, dset_out, options, travt, fidout) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_refs_attr failed"); - - /*------------------------------------------------------------------------- - * check for hard links - *------------------------------------------------------------------------- - */ - if(travt->objs[i].nlinks) - for(j = 0; j < travt->objs[i].nlinks; j++) - H5Lcreate_hard(fidout, travt->objs[i].name, H5L_SAME_LOC, travt->objs[i].links[j].new_name, H5P_DEFAULT, H5P_DEFAULT); - - if(H5Dclose(dset_out) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed"); - } /*can_read*/ - - /*------------------------------------------------------------------------- - * close - *------------------------------------------------------------------------- - */ - if(H5Tclose(ftype_id) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed"); - if(H5Tclose(mtype_id) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed"); - if(H5Pclose(dcpl_id) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - if(H5Sclose(space_id) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sclose failed"); - if(H5Dclose(dset_in) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed"); - break; - - /*------------------------------------------------------------------------- - * H5TRAV_TYPE_NAMED_DATATYPE - *------------------------------------------------------------------------- - */ - case H5TRAV_TYPE_NAMED_DATATYPE: - if((type_in = H5Topen2(fidin, travt->objs[i].name, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Topen2 failed"); - if(H5Tclose(type_in) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed"); - break; - - /*------------------------------------------------------------------------- - * H5TRAV_TYPE_LINK - *------------------------------------------------------------------------- - */ - case H5TRAV_TYPE_LINK: - /*nothing to do */ - break; - - case H5TRAV_TYPE_UNKNOWN: - case H5TRAV_TYPE_UDLINK: - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5TRAV invalid type"); - - default: - break; - } /* end switch */ - } /* end for */ - - /* Finalize (link) the stack of named datatypes (if any) - * This function is paired with copy_named_datatype() which is called - * in copy_attr(), so need to free. - */ - named_datatype_free(&named_dt_head, 0); - - return ret_value; - -done: - H5E_BEGIN_TRY { - H5Gclose(grp_in); - H5Gclose(grp_out); - H5Pclose(dcpl_id); - H5Sclose(space_id); - H5Dclose(dset_in); - H5Dclose(dset_out); - H5Tclose(ftype_id); - H5Tclose(mtype_id); - H5Tclose(type_in); - named_datatype_free(&named_dt_head, 0); - } H5E_END_TRY; - - return ret_value; -} - - -/*------------------------------------------------------------------------- - * Function: copy_refs_attr - * - * Purpose: duplicate all referenced HDF5 located in attributes - * relative to LOC_IN, which is obtained either from - * loc_id = H5Gopen2(fid, name, H5P_DEFAULT); - * loc_id = H5Dopen2(fid, name, H5P_DEFAULT); - * loc_id = H5Topen2(fid, name, H5P_DEFAULT); - * - * Return: 0, ok, -1 no - * - * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu - * - * Modifier: xcao@hdfgroup.org, 9/12/2011 - * Update values of references(object and region) for the following types: - * 1) References, - * 2) ARRAY of reference, - * 3) VLEN of references. - * 4) COMPOUND of references. - * This function does not handle references in other complicated structures, - * such as references in nested compound datatypes. - * - * Date: October, 28, 2003 - * - *------------------------------------------------------------------------- - */ - -static int copy_refs_attr(hid_t loc_in, - hid_t loc_out, - pack_opt_t *options, - trav_table_t *travt, - hid_t fidout /* for saving references */ - ) -{ - int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */ - hid_t attr_id = -1; /* attr ID */ - hid_t attr_out = -1; /* attr ID */ - hid_t space_id = -1; /* space ID */ - hid_t ftype_id = -1; /* file data type ID */ - hid_t mtype_id = -1; /* memory data type ID */ - size_t msize; /* memory size of type */ - hsize_t nelmts; /* number of elements in dataset */ - hsize_t dims[H5S_MAX_RANK];/* dimensions of dataset */ - char name[255]; - H5O_info_t oinfo; /* Object info */ - unsigned u, i, j; - int rank; - H5T_class_t type_class = -1; - hbool_t is_ref=0, is_ref_vlen=0, is_ref_array=0, is_ref_comp=0; - void *refbuf = NULL; - void *buf = NULL; - const char* refname = NULL; - unsigned *ref_comp_index = NULL; - size_t *ref_comp_size = NULL; - int ref_comp_field_n = 0; - - - if(H5Oget_info(loc_in, &oinfo) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Oget_info failed"); - - for(u = 0; u < (unsigned)oinfo.num_attrs; u++) { - is_ref = is_ref_vlen = is_ref_array = is_ref_comp = 0; - - /* open attribute */ - if((attr_id = H5Aopen_by_idx(loc_in, ".", H5_INDEX_CRT_ORDER, H5_ITER_INC, (hsize_t)u, H5P_DEFAULT, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aopen_by_idx failed"); - - /* get the file datatype */ - if((ftype_id = H5Aget_type(attr_id)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aget_type failed"); - - type_class = H5Tget_class(ftype_id); - - if((mtype_id = h5tools_get_native_type(ftype_id)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "h5tools_get_native_type failed"); - - if((msize = H5Tget_size(mtype_id)) == 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tget_size failed"); - - is_ref = (type_class == H5T_REFERENCE); - - if(type_class == H5T_VLEN ) { - hid_t base_type; - - base_type = H5Tget_super(ftype_id); - is_ref_vlen = (H5Tget_class(base_type)==H5T_REFERENCE); - msize = H5Tget_size(base_type); - H5Tclose(base_type); - } - else if(type_class == H5T_ARRAY ) { - hid_t base_type; - - base_type = H5Tget_super(ftype_id); - is_ref_array = (H5Tget_class(base_type)==H5T_REFERENCE); - msize = H5Tget_size(base_type); - H5Tclose(base_type); - } - else if(type_class == H5T_COMPOUND) { - int nmembers = H5Tget_nmembers(ftype_id) ; - - if (nmembers < 1) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tget_nmembers failed"); - - ref_comp_index = (unsigned *)HDmalloc((size_t)nmembers*sizeof(unsigned)); - ref_comp_size = (size_t *)HDmalloc((size_t)nmembers*sizeof(ref_comp_size)); - ref_comp_field_n = 0; - - for (i=0; i<(unsigned)nmembers; i++) { - hid_t mtid = H5Tget_member_type( ftype_id, i ); - - if ((H5Tget_class(mtid)==H5T_REFERENCE)) { - ref_comp_index[ref_comp_field_n] = i; - ref_comp_size[ref_comp_field_n] = H5Tget_size(mtid); - ref_comp_field_n++; - } - H5Tclose(mtid); - } - - /* if compound don't contain reference type member, free the above - * mallocs. Otherwise there can be memory leaks by the 'continue' - * statement below. */ - if (!ref_comp_field_n) { - if (ref_comp_index) { - HDfree(ref_comp_index); - ref_comp_index = NULL; - } - - if (ref_comp_size) { - HDfree(ref_comp_size); - ref_comp_size = NULL; - } - } - } - - is_ref_comp = (ref_comp_field_n > 0); - - if (!(is_ref || is_ref_vlen || is_ref_array || is_ref_comp)) { - H5Tclose(mtype_id); - H5Tclose(ftype_id); - H5Aclose(attr_id); - continue; - } - - /* get name */ - if(H5Aget_name(attr_id, 255, name) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aget_name failed"); - - /* get the dataspace handle */ - if((space_id = H5Aget_space(attr_id)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aget_space failed"); - - /* get dimensions */ - if((rank = H5Sget_simple_extent_dims(space_id, dims, NULL)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sget_simple_extent_dims failed"); - - - /*------------------------------------------------------------------------- - * elements - *------------------------------------------------------------------------- - */ - nelmts = 1; - for(j = 0; j < (unsigned)rank; j++) - nelmts *= dims[j]; - - if (is_ref_array) { - unsigned array_rank = 0; - hsize_t array_size = 1; - hsize_t array_dims[H5S_MAX_RANK]; - hid_t base_type; - - base_type = H5Tget_super(ftype_id); - msize = H5Tget_size(base_type); - H5Tclose(base_type); - - array_rank = (unsigned)H5Tget_array_ndims(mtype_id); - H5Tget_array_dims2(mtype_id, array_dims); - for(j = 0; j 0) { - /* handle object references */ - if((is_ref || is_ref_array) && (H5R_OBJ_REF_BUF_SIZE==msize)) { - buf = (hobj_ref_t *)HDmalloc((unsigned)(nelmts * msize)); - if(buf == NULL) { - printf("cannot read into memory\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDmalloc failed"); - } /* end if */ - if(H5Aread(attr_id, mtype_id, buf) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aread failed"); - - refbuf = (hobj_ref_t *)HDcalloc((unsigned)nelmts, msize); - if(refbuf == NULL) { - printf("cannot allocate memory\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDcalloc failed"); - } /* end if */ - - for(i = 0; i < (unsigned)nelmts; i++) { - if (update_ref_value(attr_id, H5R_OBJECT, &((hobj_ref_t *)buf)[i], fidout, &((hobj_ref_t *)refbuf)[i], travt)<0) - continue; - if(options->verbose) - printf("object <%s> reference created to <%s>\n", name, refname); - } /* i */ - } /* H5T_STD_REF_OBJ */ - /* handle region references */ - else if((is_ref || is_ref_array) && (H5R_DSET_REG_REF_BUF_SIZE == msize)) { - buf = (hdset_reg_ref_t *)HDmalloc((unsigned)(nelmts * msize)); - - if(buf == NULL) { - printf( "cannot read into memory\n" ); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDmalloc failed"); - } /* end if */ - if(H5Aread(attr_id, mtype_id, buf) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aread failed"); - - /*------------------------------------------------------------------------- - * create output - *------------------------------------------------------------------------- - */ - refbuf = (hdset_reg_ref_t *)HDcalloc(sizeof(hdset_reg_ref_t), (size_t)nelmts); /*init to zero */ - if(refbuf == NULL) { - printf( "cannot allocate memory\n" ); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDcalloc failed"); - } /* end if */ - - for(i = 0; i < (unsigned)nelmts; i++) { - if (update_ref_value(attr_id, H5R_DATASET_REGION, &((hdset_reg_ref_t *)buf)[i], fidout, &((hdset_reg_ref_t *)refbuf)[i], travt)<0) - continue; - if(options->verbose) - printf("object <%s> region reference created to <%s>\n", name, refname); - } - } /* H5T_STD_REF_DSETREG */ - else if (is_ref_vlen) { - /* handle VLEN of references */ - - buf = (hvl_t *)HDmalloc((unsigned)(nelmts * sizeof(hvl_t))); - refbuf = buf; /* reuse the read buffer for write */ - - if(buf == NULL) { - printf( "cannot read into memory\n" ); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDmalloc failed"); - } /* end if */ - - if(H5Aread(attr_id, mtype_id, buf) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aread failed"); - - if (H5R_OBJ_REF_BUF_SIZE==msize) { - hobj_ref_t ref_out; - - for (i=0; i<(unsigned)nelmts; i++) { - hobj_ref_t *ptr = (hobj_ref_t *)((hvl_t *)buf)[i].p; - - for (j=0; j<((hvl_t *)buf)[i].len; j++ ) { - if (update_ref_value(attr_id, H5R_OBJECT, &(ptr[j]), fidout, &ref_out, travt)<0) - continue; - HDmemcpy(&(ptr[j]), &ref_out, msize); - } - } /* for (i=0; inobjs; u++) { - if(travt->objs[u].type == (h5trav_type_t)H5O_TYPE_DATASET || - travt->objs[u].type == (h5trav_type_t)H5O_TYPE_GROUP || - travt->objs[u].type == (h5trav_type_t)H5O_TYPE_NAMED_DATATYPE) { - H5O_info_t ref_oinfo; /* Stat for the refobj id */ - - /* obtain information to identify the referenced object uniquely */ - if(H5Oget_info(refobj_id, &ref_oinfo) < 0) - goto out; - - if(ref_oinfo.addr == travt->objs[u].objno) { - ret = travt->objs[u].name; - goto out; - } /* end if */ - } /* end if */ - } /* u */ - -out: - return ret; -} - -/*------------------------------------------------------------------------- - * Function: Update_Ref_value - * - * Purpose: Update a reference value - * - * Programmer: xcao@hdfgroup.org 9/12/2011 - * - *------------------------------------------------------------------------- - */ -static herr_t update_ref_value(hid_t obj_id, H5R_type_t ref_type, void *ref_in, - hid_t fid_out, void *ref_out, trav_table_t *travt) -{ - int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */ - const char* ref_obj_name; - hid_t space_id=-1, ref_obj_id=-1; - - ref_obj_id = H5Rdereference2(obj_id, H5P_DEFAULT, ref_type, ref_in); - if (ref_obj_id < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Rdereference2 failed"); - - ref_obj_name = MapIdToName(ref_obj_id, travt); - if (ref_obj_name == NULL) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "MapIdToName failed"); - - if (ref_type == H5R_DATASET_REGION) { - space_id = H5Rget_region(obj_id, H5R_DATASET_REGION, ref_in); - if (space_id < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Rget_region failed"); - } - - if(H5Rcreate(ref_out, fid_out, ref_obj_name, ref_type, space_id) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Rcreate failed"); - -done: - H5E_BEGIN_TRY { - H5Sclose(space_id); - H5Oclose(ref_obj_id); - } H5E_END_TRY; - - return ret_value; -} - diff --git a/tools/h5repack/h5repack_verify.c b/tools/h5repack/h5repack_verify.c deleted file mode 100644 index 6765c49..0000000 --- a/tools/h5repack/h5repack_verify.c +++ /dev/null @@ -1,675 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include "h5repack.h" -#include "h5tools.h" -#include "h5tools_utils.h" - -/* number of members in an array */ -#ifndef NELMTS -# define NELMTS(X) (sizeof(X)/sizeof(X[0])) -#endif - -static int verify_layout(hid_t pid, pack_info_t *obj); -static int verify_filters(hid_t pid, hid_t tid, int nfilters, filter_info_t *filter); - - -/*------------------------------------------------------------------------- - * Function: h5repack_verify - * - * Purpose: verify if filters and layout in the input file match the output file - * - * Return: - * 1 match - * 0 do not match - * -1 error - * - * Programmer: Pedro Vicente, pvn@hdfgroup.org - * - * Date: December 19, 2003 - * Modified: December, 19, 2007 (exactly 4 years later :-) ) - * Separate into 3 cases - * 1) no filter input, get all datasets and compare DCPLs. TO DO - * 2) filter input on selected datasets, get each one trough OBJ and match - * 3) filter input on all datasets, get all objects and match - * - *------------------------------------------------------------------------- - */ - -int -h5repack_verify(const char *in_fname, const char *out_fname, pack_opt_t *options) -{ - int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */ - hid_t fidin = -1; /* file ID for input file*/ - hid_t fidout = -1; /* file ID for output file*/ - hid_t did = -1; /* dataset ID */ - hid_t pid = -1; /* dataset creation property list ID */ - hid_t sid = -1; /* space ID */ - hid_t tid = -1; /* type ID */ - unsigned int i; - trav_table_t *travt = NULL; - int ok = 1; - hid_t fcpl_in = -1; /* file creation property for input file */ - hid_t fcpl_out = -1; /* file creation property for output file */ - H5F_file_space_type_t in_strat, out_strat; /* file space handling strategy for in/output file */ - hsize_t in_thresh, out_thresh; /* free space section threshold for in/output file */ - - /* open the output file */ - if((fidout = H5Fopen(out_fname, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0 ) - return -1; - - for(i = 0; i < options->op_tbl->nelems; i++) - { - char* name = options->op_tbl->objs[i].path; - pack_info_t *obj = &options->op_tbl->objs[i]; - - /*------------------------------------------------------------------------- - * open - *------------------------------------------------------------------------- - */ - if((did = H5Dopen2(fidout, name, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dopen2 failed"); - if((sid = H5Dget_space(did)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_space failed"); - if((pid = H5Dget_create_plist(did)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_create_plist failed"); - if((tid = H5Dget_type(did)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_type failed"); - - /*------------------------------------------------------------------------- - * filter check - *------------------------------------------------------------------------- - */ - if(verify_filters(pid, tid, obj->nfilters, obj->filter) <= 0) - ok = 0; - - - /*------------------------------------------------------------------------- - * layout check - *------------------------------------------------------------------------- - */ - if((obj->layout != -1) && (verify_layout(pid, obj) == 0)) - ok = 0; - - /*------------------------------------------------------------------------- - * close - *------------------------------------------------------------------------- - */ - if(H5Pclose(pid) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - if (H5Sclose(sid) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sclose failed"); - if (H5Dclose(did) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed"); - if (H5Tclose(tid) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed"); - - } - - - /*------------------------------------------------------------------------- - * check for the "all" objects option - *------------------------------------------------------------------------- - */ - - if(options->all_filter == 1 || options->all_layout == 1) - { - - /* init table */ - trav_table_init(&travt); - - /* get the list of objects in the file */ - if(h5trav_gettable(fidout, travt) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "h5trav_gettable failed"); - - for(i = 0; i < travt->nobjs; i++) - { - char *name = travt->objs[i].name; - - if(travt->objs[i].type == H5TRAV_TYPE_DATASET) - { - - /*------------------------------------------------------------------------- - * open - *------------------------------------------------------------------------- - */ - if((did = H5Dopen2(fidout, name, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dopen2 failed"); - if((sid = H5Dget_space(did)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_space failed"); - if((pid = H5Dget_create_plist(did)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_create_plist failed"); - if((tid = H5Dget_type(did)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_type failed"); - - /*------------------------------------------------------------------------- - * filter check - *------------------------------------------------------------------------- - */ - if(options->all_filter == 1) - { - if(verify_filters(pid, tid, options->n_filter_g, options->filter_g) <= 0) - ok = 0; - } - - /*------------------------------------------------------------------------- - * layout check - *------------------------------------------------------------------------- - */ - if(options->all_layout == 1) - { - pack_info_t pack; - - init_packobject(&pack); - pack.layout = options->layout_g; - pack.chunk = options->chunk_g; - if(verify_layout(pid, &pack) == 0) - ok = 0; - } - - - /*------------------------------------------------------------------------- - * close - *------------------------------------------------------------------------- - */ - if (H5Pclose(pid) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - if (H5Sclose(sid) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sclose failed"); - if (H5Dclose(did) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed"); - if (H5Tclose(tid) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed"); - } /* if */ - - } /* i */ - - /* free table */ - trav_table_free(travt); - } - - /*------------------------------------------------------------------------- - * Verify that file space strategy and free space threshold - * are set as expected - *------------------------------------------------------------------------- - */ - - /* open the input file */ - if((fidin = H5Fopen(in_fname, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0 ) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Fopen failed"); - - /* Get file creation property list for input file */ - if((fcpl_in = H5Fget_create_plist(fidin)) < 0) { - error_msg("failed to retrieve file creation property list\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Fget_create_plist failed"); - } - - /* Get file space management info for input file */ - if(H5Pget_file_space(fcpl_in, &in_strat, &in_thresh) < 0) { - error_msg("failed to retrieve file space strategy & threshold\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pget_file_space failed"); - } - - /* Output file is already opened */ - /* Get file creation property list for output file */ - if((fcpl_out = H5Fget_create_plist(fidout)) < 0) { - error_msg("failed to retrieve file creation property list\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Fget_create_plist failed"); - } - - /* Get file space management info for output file */ - if(H5Pget_file_space(fcpl_out, &out_strat, &out_thresh) < 0) { - error_msg("failed to retrieve file space strategy & threshold\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pget_file_space failed"); - } - - /* - * If the strategy option is not set, - * file space handling strategy should be the same for both - * input & output files. - * If the strategy option is set, - * the output file's file space handling strategy should be the same - * as what is set via the strategy option - */ - if(!options->fs_strategy && out_strat != in_strat) { - error_msg("file space strategy not set as unexpected\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "file space strategy not set as unexpected"); - - } - else if(options->fs_strategy && out_strat!= options->fs_strategy) { - error_msg("file space strategy not set as unexpected\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "file space strategy not set as unexpected"); - } - - /* - * If the threshold option is not set, - * the free space section threshold should be the same for both - * input & output files. - * If the threshold option is set, - * the output file's free space section threshold should be the same - * as what is set via the threshold option. - */ - if(!options->fs_threshold && out_thresh != in_thresh) { - error_msg("free space threshold not set as unexpected\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "free space threshold not set as unexpected"); - } - else if(options->fs_threshold && out_thresh != options->fs_threshold) { - error_msg("free space threshold not set as unexpected\n"); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "free space threshold not set as unexpected"); - } - - /* Closing */ - if (H5Pclose(fcpl_in) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - if (H5Pclose(fcpl_out) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - if (H5Fclose(fidin) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Fclose failed"); - if (H5Fclose(fidout) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Fclose failed"); - - return ok; - -done: - H5E_BEGIN_TRY { - H5Pclose(fcpl_in); - H5Pclose(fcpl_out); - H5Pclose(pid); - H5Sclose(sid); - H5Dclose(did); - H5Fclose(fidin); - H5Fclose(fidout); - if (travt) - trav_table_free(travt); - } H5E_END_TRY; - - return ret_value; -} /* h5repack_verify() */ - - - -/*------------------------------------------------------------------------- - * Function: verify_layout - * - * Purpose: verify which layout is present in the property list DCPL_ID - * - * H5D_COMPACT = 0 - * H5D_CONTIGUOUS = 1 - * H5D_CHUNKED = 2 - * - * Return: 1 has, 0 does not, -1 error - * - * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu - * - * Date: December 30, 2003 - * - *------------------------------------------------------------------------- - */ - -int verify_layout(hid_t pid, - pack_info_t *obj) -{ - hsize_t chsize[64]; /* chunk size in elements */ - H5D_layout_t layout; /* layout */ - int nfilters; /* number of filters */ - int rank; /* rank */ - int i; /* index */ - - /* check if we have filters in the input object */ - if ((nfilters = H5Pget_nfilters(pid)) < 0) - return -1; - - /* a non chunked layout was requested on a filtered object */ - if (nfilters && obj->layout!=H5D_CHUNKED) - return 0; - - /* get layout */ - if ((layout = H5Pget_layout(pid)) < 0) - return -1; - - if (obj->layout != layout) - return 0; - - if (layout==H5D_CHUNKED) - { - if ((rank = H5Pget_chunk(pid,NELMTS(chsize),chsize/*out*/)) < 0) - return -1; - if (obj->chunk.rank != rank) - return 0; - for ( i=0; ichunk.chunk_lengths[i]) - return 0; - } - - return 1; -} - -/*------------------------------------------------------------------------- - * Function: h5repack_cmp_pl - * - * Purpose: compare 2 files for identical property lists of all objects - * - * Return: 1=identical, 0=not identical, -1=error - * - * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu - * - * Date: December 31, 2003 - * - *------------------------------------------------------------------------- - */ - -int h5repack_cmp_pl(const char *fname1, - const char *fname2) -{ - int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */ - hid_t fid1=-1; /* file ID */ - hid_t fid2=-1; /* file ID */ - hid_t dset1=-1; /* dataset ID */ - hid_t dset2=-1; /* dataset ID */ - hid_t gid=-1; /* group ID */ - hid_t dcpl1=-1; /* dataset creation property list ID */ - hid_t dcpl2=-1; /* dataset creation property list ID */ - hid_t gcplid=-1; /* group creation property list */ - unsigned crt_order_flag1; /* group creation order flag */ - unsigned crt_order_flag2; /* group creation order flag */ - trav_table_t *trav=NULL; - int ret=1; - unsigned int i; - - /*------------------------------------------------------------------------- - * open the files - *------------------------------------------------------------------------- - */ - - /* disable error reporting */ - H5E_BEGIN_TRY - { - - /* Open the files */ - if ((fid1 = H5Fopen(fname1,H5F_ACC_RDONLY,H5P_DEFAULT)) < 0 ) - { - error_msg("<%s>: %s\n", fname1, H5FOPENERROR ); - return -1; - } - if ((fid2 = H5Fopen(fname2,H5F_ACC_RDONLY,H5P_DEFAULT)) < 0 ) - { - error_msg("<%s>: %s\n", fname2, H5FOPENERROR ); - H5Fclose(fid1); - return -1; - } - /* enable error reporting */ - } H5E_END_TRY; - - /*------------------------------------------------------------------------- - * get file table list of objects - *------------------------------------------------------------------------- - */ - trav_table_init(&trav); - if(h5trav_gettable(fid1, trav) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "h5trav_gettable failed"); - - /*------------------------------------------------------------------------- - * traverse the suppplied object list - *------------------------------------------------------------------------- - */ - for(i = 0; i < trav->nobjs; i++) - { - - if(trav->objs[i].type == H5TRAV_TYPE_GROUP) - { - - if ((gid = H5Gopen2(fid1, trav->objs[i].name, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gopen2 failed"); - if ((gcplid = H5Gget_create_plist(gid)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gget_create_plist failed"); - if (H5Pget_link_creation_order(gcplid, &crt_order_flag1) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pget_link_creation_order failed"); - if (H5Pclose(gcplid) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - if (H5Gclose(gid) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gclose failed"); - - if ((gid = H5Gopen2(fid2, trav->objs[i].name, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gopen2 failed"); - if ((gcplid = H5Gget_create_plist(gid)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gget_create_plist failed"); - if (H5Pget_link_creation_order(gcplid, &crt_order_flag2) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pget_link_creation_order failed"); - if (H5Pclose(gcplid) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - if (H5Gclose(gid) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gclose failed"); - - if (crt_order_flag1 != crt_order_flag2) { - error_msg("property lists for <%s> are different\n",trav->objs[i].name); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "property lists failed"); - } - - } - - - - else if(trav->objs[i].type == H5TRAV_TYPE_DATASET) - { - if((dset1 = H5Dopen2(fid1, trav->objs[i].name, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dopen2 failed"); - if((dset2 = H5Dopen2(fid2, trav->objs[i].name, H5P_DEFAULT)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dopen2 failed"); - if((dcpl1 = H5Dget_create_plist(dset1)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_create_plist failed"); - if((dcpl2 = H5Dget_create_plist(dset2)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_create_plist failed"); - - /*------------------------------------------------------------------------- - * compare the property lists - *------------------------------------------------------------------------- - */ - if((ret = H5Pequal(dcpl1, dcpl2)) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pequal failed"); - - if(ret == 0) { - error_msg("property lists for <%s> are different\n",trav->objs[i].name); - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "property lists failed"); - } - - /*------------------------------------------------------------------------- - * close - *------------------------------------------------------------------------- - */ - if(H5Pclose(dcpl1) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - if(H5Pclose(dcpl2) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed"); - if(H5Dclose(dset1) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed"); - if(H5Dclose(dset2) < 0) - HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed"); - } /*if*/ - } /*i*/ - - /*------------------------------------------------------------------------- - * free - *------------------------------------------------------------------------- - */ - - trav_table_free(trav); - - /*------------------------------------------------------------------------- - * close - *------------------------------------------------------------------------- - */ - - H5Fclose(fid1); - H5Fclose(fid2); - - return ret; - -/*------------------------------------------------------------------------- -* error -*------------------------------------------------------------------------- -*/ -done: - H5E_BEGIN_TRY - { - H5Pclose(dcpl1); - H5Pclose(dcpl2); - H5Dclose(dset1); - H5Dclose(dset2); - H5Fclose(fid1); - H5Fclose(fid2); - H5Pclose(gcplid); - H5Gclose(gid); - trav_table_free(trav); - } H5E_END_TRY; - - return ret_value; -} - - -/*------------------------------------------------------------------------- - * Function: verify_filters - * - * Purpose: verify if all requested filters in the array FILTER obtained - * from user input are present in the property list PID obtained from - * the output file - * - * Return: - * 1 match - * 0 do not match - * -1 error - * - * Programmer: Pedro Vicente, pvn@hdfgroup.org - * - * Date: December 21, 2007 - * - *------------------------------------------------------------------------- - */ - -static -int verify_filters(hid_t pid, hid_t tid, int nfilters, filter_info_t *filter) -{ - int nfilters_dcpl; /* number of filters in DCPL*/ - unsigned filt_flags; /* filter flags */ - H5Z_filter_t filtn; /* filter identification number */ - unsigned cd_values[20]; /* filter client data values */ - size_t cd_nelmts; /* filter client number of values */ - char f_name[256]; /* filter name */ - size_t size; /* type size */ - int i; /* index */ - unsigned j; /* index */ - - /* get information about filters */ - if((nfilters_dcpl = H5Pget_nfilters(pid)) < 0) - return -1; - - /* if we do not have filters and the requested filter is NONE, return 1 */ - if(!nfilters_dcpl && - nfilters == 1 && - filter[0].filtn == H5Z_FILTER_NONE ) - return 1; - - /* else the numbers of filters must match */ - if (nfilters_dcpl != nfilters ) - return 0; - - /*------------------------------------------------------------------------- - * build a list with DCPL filters - *------------------------------------------------------------------------- - */ - - for( i = 0; i < nfilters_dcpl; i++) - { - cd_nelmts = NELMTS(cd_values); - filtn = H5Pget_filter2(pid, (unsigned)i, &filt_flags, &cd_nelmts, - cd_values, sizeof(f_name), f_name, NULL); - - /* filter ID */ - if (filtn != filter[i].filtn) - return 0; - - /* compare client data values. some filters do return local values */ - switch (filtn) - { - - case H5Z_FILTER_NONE: - break; - - case H5Z_FILTER_SHUFFLE: - /* 1 private client value is returned by DCPL */ - if ( cd_nelmts != H5Z_SHUFFLE_TOTAL_NPARMS && filter[i].cd_nelmts != H5Z_SHUFFLE_USER_NPARMS ) - return 0; - - /* get dataset's type size */ - if((size = H5Tget_size(tid)) <= 0) - return -1; - - /* the private client value holds the dataset's type size */ - if ( size != cd_values[0] ) - return 0; - - break; - - case H5Z_FILTER_SZIP: - /* 4 private client values are returned by DCPL */ - if ( cd_nelmts != H5Z_SZIP_TOTAL_NPARMS && filter[i].cd_nelmts != H5Z_SZIP_USER_NPARMS ) - return 0; - - /* "User" parameter for pixels-per-block (index 1) */ - if ( cd_values[H5Z_SZIP_PARM_PPB] != filter[i].cd_values[H5Z_SZIP_PARM_PPB] ) - return 0; - - break; - - case H5Z_FILTER_NBIT: - /* only client data values number of values checked */ - if ( H5Z_NBIT_USER_NPARMS != filter[i].cd_nelmts) - return 0; - break; - - case H5Z_FILTER_SCALEOFFSET: - /* only client data values checked */ - for( j = 0; j < H5Z_SCALEOFFSET_USER_NPARMS; j++) - if (cd_values[j] != filter[i].cd_values[j]) - return 0; - break; - - /* for these filters values must match, no local values set in DCPL */ - case H5Z_FILTER_FLETCHER32: - case H5Z_FILTER_DEFLATE: - - if ( cd_nelmts != filter[i].cd_nelmts) - return 0; - - for( j = 0; j < cd_nelmts; j++) - if (cd_values[j] != filter[i].cd_values[j]) - return 0; - - break; - - default: - if ( cd_nelmts != filter[i].cd_nelmts) - return 0; - - for( j = 0; j < cd_nelmts; j++) - if (cd_values[j] != filter[i].cd_values[j]) - return 0; - break; - - } /* switch */ - } - - return 1; -} - diff --git a/tools/h5repack/h5repacktst.c b/tools/h5repack/h5repacktst.c deleted file mode 100644 index 82b45fc..0000000 --- a/tools/h5repack/h5repacktst.c +++ /dev/null @@ -1,6856 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -* Copyright by The HDF Group. * -* Copyright by the Board of Trustees of the University of Illinois. * -* All rights reserved. * -* * -* This file is part of HDF5. The full HDF5 copyright notice, including * -* terms governing use, modification, and redistribution, is contained in * -* the files COPYING and Copyright.html. COPYING can be found at the root * -* of the source code distribution tree; Copyright.html can be found at the * -* root level of an installed copy of the electronic HDF5 document set and * -* is linked from the top-level documents page. It can also be found at * -* http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * -* access to either file, you may request a copy from help@hdfgroup.org. * -* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include "h5repack.h" -#include "h5test.h" -#include "h5diff.h" -#include "h5tools.h" -#include "h5tools_utils.h" - -#define GOERROR {H5_FAILED(); goto error;} - - -/* fill value test */ -#define FNAME0 "h5repack_fill.h5" -#define FNAME0OUT "h5repack_fill_out.h5" -/* HDF5 objects and all dataset datatypes */ -#define FNAME1 "h5repack_objs.h5" -#define FNAME1OUT "h5repack_objs_out.h5" -/* attributes, all datatypes */ -#define FNAME2 "h5repack_attr.h5" -#define FNAME2OUT "h5repack_attr_out.h5" -/* hard links */ -#define FNAME3 "h5repack_hlink.h5" -#define FNAME3OUT "h5repack_hlink_out.h5" -/* layout */ -#define FNAME4 "h5repack_layout.h5" -#define FNAME4OUT "h5repack_layout_out.h5" -/* H5D_ALLOC_TIME_EARLY */ -#define FNAME5 "h5repack_early.h5" -#define FNAME5OUT "h5repack_early_out.h5" -#define FNAME6 "h5repack_early2.h5" -#ifdef H5_HAVE_FILTER_SZIP -/* SZIP filter */ -#define FNAME7 "h5repack_szip.h5" -#define FNAME7OUT "h5repack_szip_out.h5" -#endif -/* GZIP filter */ -#define FNAME8 "h5repack_deflate.h5" -#define FNAME8OUT "h5repack_deflate_out.h5" -/* GZIP filter */ -#define FNAME9 "h5repack_shuffle.h5" -#define FNAME9OUT "h5repack_shuffle_out.h5" -/* Fletcher filter */ -#define FNAME10 "h5repack_fletcher.h5" -#define FNAME10OUT "h5repack_fletcher_out.h5" -/* All filters */ -#define FNAME11 "h5repack_filters.h5" -#define FNAME11OUT "h5repack_filters_out.h5" -/* NBit filter */ -#define FNAME12 "h5repack_nbit.h5" -#define FNAME12OUT "h5repack_nbit_out.h5" -/* Scale Offset filter */ -#define FNAME13 "h5repack_soffset.h5" -#define FNAME13OUT "h5repack_soffset_out.h5" -/* Big file to test read by hyperslabs */ -#define FNAME14 "h5repack_big.h5" -#define FNAME14OUT "h5repack_big_out.h5" -/* external file */ -#define FNAME15 "h5repack_ext.h5" -#define FNAME15OUT "h5repack_ext_out.h5" -/* File w/userblock */ -#define FNAME16 "h5repack_ub.h5" -#define FNAME16OUT "h5repack_ub_out.h5" -/* Named datatypes */ -#define FNAME17 "h5repack_named_dtypes.h5" -#define FNAME17OUT "h5repack_named_dtypes_out.h5" - -#define FNAME18 "h5repack_layout2.h5" - -#define FNAME_UB "ublock.bin" - -/* obj and region references */ -#define FNAME_REF "h5repack_refs.h5" - -/* obj and region references in attr of compound and vlen type */ -#define FNAME_ATTR_REF "h5repack_attr_refs.h5" - -const char *H5REPACK_FILENAMES[] = { - "h5repack_big_out", - NULL -}; - -#define H5REPACK_EXTFILE "h5repack_ext.bin" - -/* Name of tool */ -#define PROGRAMNAME "h5repacktst" - - -#define DIM1 40 -#define DIM2 20 -#define CDIM1 DIM1/2 -#define CDIM2 DIM2/2 -#define RANK 2 - -/* Size of userblock (for userblock test) */ -#define USERBLOCK_SIZE 2048 - -/* obj and region references */ -#define NAME_OBJ_DS1 "Dset1" -#define NAME_OBJ_GRP "Group" -#define NAME_OBJ_NDTYPE "NamedDatatype" -#define NAME_OBJ_DS2 "Dset2" -#define REG_REF_DS1 "Dset_REGREF" - -/*------------------------------------------------------------------------- -* prototypes -*------------------------------------------------------------------------- -*/ -static int make_all_objects(hid_t loc_id); -static int make_attributes(hid_t loc_id); -static int make_hlinks(hid_t loc_id); -static int make_early(void); -static int make_layout(hid_t loc_id); -static int make_layout2(hid_t loc_id); -static int make_layout3(hid_t loc_id); -#ifdef H5_HAVE_FILTER_SZIP -static int make_szip(hid_t loc_id); -#endif /* H5_HAVE_FILTER_SZIP */ -static int make_deflate(hid_t loc_id); -static int make_shuffle(hid_t loc_id); -static int make_fletcher32(hid_t loc_id); -static int make_nbit(hid_t loc_id); -static int make_scaleoffset(hid_t loc_id); -static int make_all_filters(hid_t loc_id); -static int make_fill(hid_t loc_id); -static int make_big(hid_t loc_id); -static int make_testfiles(void); -static int write_dset_in(hid_t loc_id,const char* dset_name,hid_t file_id,int make_diffs ); -static int write_attr_in(hid_t loc_id,const char* dset_name,hid_t fid,int make_diffs ); -static int write_dset(hid_t loc_id,int rank,hsize_t *dims,const char *dset_name,hid_t tid,void *buf ); -static int make_dset(hid_t loc_id,const char *name,hid_t sid,hid_t dcpl,void *buf); -static int make_attr(hid_t loc_id,int rank,hsize_t *dims,const char *attr_name,hid_t tid,void *buf); -static int make_dset_reg_ref(hid_t loc_id); -static int make_external(hid_t loc_id); -static int make_userblock(void); -static int verify_userblock( const char* filename); -static int make_userblock_file(void); -static int make_named_dtype(hid_t loc_id); -static int make_references(hid_t loc_id); -static int make_complex_attr_references(hid_t loc_id); - - -/*------------------------------------------------------------------------- -* Function: main -* -* Purpose: Executes h5repack tests -* -* Return: Success: zero -* Failure: 1 -* -* Programmer: Pedro Vicente -* January, 6, 2004 -* -*------------------------------------------------------------------------- -*/ - -int main (void) -{ - pack_opt_t pack_options; - diff_opt_t diff_options; - hsize_t fs_size = 0; /* free space section threshold */ - H5F_file_space_type_t fs_type = H5F_FILE_SPACE_DEFAULT; /* file space handling strategy */ - h5_stat_t file_stat; - h5_stat_size_t fsize1, fsize2; /* file sizes */ -#if defined (H5_HAVE_FILTER_SZIP) - int szip_can_encode = 0; -#endif - - h5tools_setprogname(PROGRAMNAME); - h5tools_setstatus(EXIT_SUCCESS); - - /* Initialize h5tools lib */ - h5tools_init(); - - /* initialize */ - HDmemset(&diff_options, 0, sizeof (diff_opt_t)); - HDmemset(&pack_options, 0, sizeof (pack_opt_t)); - - /* run tests */ - puts("Testing h5repack:"); - - /* make the test files */ - TESTING(" generating datasets"); - if (make_testfiles() < 0) - GOERROR; - PASSED(); - - /*------------------------------------------------------------------------- - * Format of the tests: - * - * 1) make a copy of the file with h5repack - * 2) use the h5diff function to compare the input and output file - *------------------------------------------------------------------------- - */ - - - /*------------------------------------------------------------------------- - * file with fill values - *------------------------------------------------------------------------- - */ - - TESTING(" copy of datasets (fill values)"); - - /* fs_type = 0; fs_size = 0 */ - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack(FNAME0,FNAME0OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME0,FNAME0OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME0, FNAME0OUT,&pack_options)<=0) - GOERROR; - if (h5repack_cmp_pl(FNAME0,FNAME0OUT)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - PASSED(); - - - /*------------------------------------------------------------------------- - * file with all kinds of dataset datatypes - *------------------------------------------------------------------------- - */ - TESTING(" copy of datasets (all datatypes)"); - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack(FNAME1,FNAME1OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME1,FNAME1OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME1, FNAME1OUT,&pack_options)<=0) - GOERROR; - if (h5repack_cmp_pl(FNAME1,FNAME1OUT)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - PASSED(); - - - /*------------------------------------------------------------------------- - * file with attributes - *------------------------------------------------------------------------- - */ - TESTING(" copy of datasets (attributes)"); - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack(FNAME2,FNAME2OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME2,FNAME2OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME2, FNAME2OUT,&pack_options)<=0) - GOERROR; - if (h5repack_cmp_pl(FNAME2,FNAME2OUT)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - PASSED(); - - /*------------------------------------------------------------------------- - * file with hardlinks - *------------------------------------------------------------------------- - */ - TESTING(" copy of datasets (hardlinks)"); - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack(FNAME3,FNAME3OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME3,FNAME3OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME3, FNAME3OUT,&pack_options)<=0) - GOERROR; - if (h5repack_cmp_pl(FNAME3,FNAME3OUT)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - - /*------------------------------------------------------------------------- - * alloc early test - *------------------------------------------------------------------------- - */ - TESTING(" copy of allocation early file"); - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack(FNAME5,FNAME5OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME5,FNAME5OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME5, FNAME5OUT, &pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - PASSED(); - - /*------------------------------------------------------------------------- - * the remaining files differ in the dcpl's - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * deflate - *------------------------------------------------------------------------- - */ - TESTING(" adding deflate filter (old_format)"); - -#ifdef H5_HAVE_FILTER_DEFLATE - - /*------------------------------------------------------------------------- - * test an individual object option - *------------------------------------------------------------------------- - */ - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addfilter("dset1:GZIP=9",&pack_options) < 0) - GOERROR; - if (h5repack_addlayout("dset1:CHUNK=20x10",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT, &pack_options) <= 0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - PASSED(); -#else - SKIPPED(); -#endif - - TESTING(" adding deflate filter (new format)"); -#ifdef H5_HAVE_FILTER_DEFLATE - /*------------------------------------------------------------------------- - * test an individual object option - * For new format, "dset1" should be using Fixed Array indexing - *------------------------------------------------------------------------- - */ - - if (h5repack_init (&pack_options, 0, TRUE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addfilter("dset1:GZIP=9",&pack_options) < 0) - GOERROR; - if (h5repack_addlayout("dset1:CHUNK=20x10",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT, &pack_options) <= 0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - PASSED(); -#else - SKIPPED(); -#endif - - /*------------------------------------------------------------------------- - * test all objects option - *------------------------------------------------------------------------- - */ - - TESTING(" adding deflate filter to all"); - -#ifdef H5_HAVE_FILTER_DEFLATE - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addfilter("GZIP=1",&pack_options) < 0) - GOERROR; - if (h5repack_addlayout("CHUNK=20x10",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); -#else - SKIPPED(); -#endif - - /*------------------------------------------------------------------------- - * SZIP - *------------------------------------------------------------------------- - */ - - TESTING(" adding szip filter"); - -#if defined (H5_HAVE_FILTER_SZIP) - if (h5tools_can_encode(H5Z_FILTER_SZIP) >0) { - szip_can_encode = 1; - } - - /*------------------------------------------------------------------------- - * test an individual object option - *------------------------------------------------------------------------- - */ - - if (szip_can_encode) { - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addfilter("dset2:SZIP=8,EC",&pack_options) < 0) - GOERROR; - if (h5repack_addlayout("dset2:CHUNK=20x10",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - } else { - SKIPPED(); - } -#else - SKIPPED(); -#endif - - - /*------------------------------------------------------------------------- - * test all objects option - *------------------------------------------------------------------------- - */ - TESTING(" adding szip filter to all"); - -#if defined (H5_HAVE_FILTER_SZIP) - if (szip_can_encode) { - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addfilter("SZIP=8,NN",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - } else { - SKIPPED(); - } -#else - SKIPPED(); -#endif - - - TESTING(" addding shuffle filter"); - - /*------------------------------------------------------------------------- - * test an individual object option - *------------------------------------------------------------------------- - */ - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addfilter("dset1:SHUF",&pack_options) < 0) - GOERROR; - if (h5repack_addlayout("dset1:CHUNK=20x10",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - - /*------------------------------------------------------------------------- - * test all objects option - *------------------------------------------------------------------------- - */ - - TESTING(" addding shuffle filter to all"); - - /* fs_type = H5F_FILE_SPACE_ALL_PERSIST; fs_size = 1 */ - if (h5repack_init (&pack_options, 0, FALSE, H5_INC_ENUM(H5F_file_space_type_t, fs_type), ++fs_size) < 0) - GOERROR; - if (h5repack_addfilter("SHUF",&pack_options) < 0) - GOERROR; - if (h5repack_addlayout("CHUNK=20x10",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - - - TESTING(" adding checksum filter"); - - /*------------------------------------------------------------------------- - * test an individual object option - *------------------------------------------------------------------------- - */ - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addfilter("dset1:FLET",&pack_options) < 0) - GOERROR; - if (h5repack_addlayout("dset1:CHUNK=20x10",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - - /*------------------------------------------------------------------------- - * test all objects option - *------------------------------------------------------------------------- - */ - - - TESTING(" adding checksum filter to all"); - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addfilter("FLET",&pack_options) < 0) - GOERROR; - if (h5repack_addlayout("CHUNK=20x10",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - - - TESTING(" filter queue fletcher, shuffle, deflate, szip"); - - /*------------------------------------------------------------------------- - * add some filters - *------------------------------------------------------------------------- - */ - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addlayout("dset1:CHUNK 20x10",&pack_options) < 0) - GOERROR; - if (h5repack_addfilter("dset1:FLET",&pack_options) < 0) - GOERROR; - if (h5repack_addfilter("dset1:SHUF",&pack_options) < 0) - GOERROR; - -#if defined (H5_HAVE_FILTER_SZIP) - if (szip_can_encode) { - if (h5repack_addfilter("dset1:SZIP=8,NN",&pack_options) < 0) - GOERROR; - } -#endif - -#ifdef H5_HAVE_FILTER_DEFLATE - if (h5repack_addfilter("dset1:GZIP=1",&pack_options) < 0) - GOERROR; -#endif - - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - - - TESTING(" adding layout chunked (old format)"); - - /*------------------------------------------------------------------------- - * test an individual object option - *------------------------------------------------------------------------- - */ - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addlayout("dset1:CHUNK=20x10",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT, &pack_options )<= 0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - PASSED(); - - TESTING(" adding layout chunked (new format)"); - - /*------------------------------------------------------------------------- - * test an individual object option - * For new format, "dset1" should be using Fixed Array indexing - *------------------------------------------------------------------------- - */ - - if (h5repack_init (&pack_options, 0, TRUE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addlayout("dset1:CHUNK=20x10",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT, &pack_options )<= 0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - PASSED(); - - /*------------------------------------------------------------------------- - * test all objects option - *------------------------------------------------------------------------- - */ - TESTING(" adding layout chunked to all"); - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addlayout("CHUNK=20x10",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - - TESTING(" adding layout contiguous"); - - /*------------------------------------------------------------------------- - * test an individual object option - *------------------------------------------------------------------------- - */ - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addlayout("dset1:CONTI",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - - TESTING(" adding layout contiguous to all"); - - /*------------------------------------------------------------------------- - * test all objects option - *------------------------------------------------------------------------- - */ - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addlayout("CONTI",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - /*------------------------------------------------------------------------- - * do the same test for a file with filters (chunked) - *------------------------------------------------------------------------- - */ - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addlayout("CONTI",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME8,FNAME8OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME8,FNAME8OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME8, FNAME8OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - - TESTING(" adding layout compact"); - - /*------------------------------------------------------------------------- - * test an individual object option - *------------------------------------------------------------------------- - */ - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addlayout("dset1:COMPA",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - PASSED(); - - TESTING(" adding layout compact to all"); - - /*------------------------------------------------------------------------- - * test all objects option - *------------------------------------------------------------------------- - */ - - /* fs_type = H5F_FILE_SPACE_ALL; fs_size = 2 */ - if (h5repack_init (&pack_options, 0, FALSE, H5_INC_ENUM(H5F_file_space_type_t, fs_type), ++fs_size) < 0) - GOERROR; - if (h5repack_addlayout("COMPA",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - - - TESTING(" layout compact to contiguous conversion"); - - /*------------------------------------------------------------------------- - * layout compact to contiguous conversion - *------------------------------------------------------------------------- - */ - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addlayout("dset_compact:CONTI",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - PASSED(); - - TESTING(" layout compact to chunk conversion"); - - /*------------------------------------------------------------------------- - * layout compact to chunk conversion - *------------------------------------------------------------------------- - */ - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addlayout("dset_compact:CHUNK=2x5",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - PASSED(); - - TESTING(" layout compact to compact conversion"); - - /*------------------------------------------------------------------------- - * layout compact to compact conversion - *------------------------------------------------------------------------- - */ - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addlayout("dset_compact:COMPA",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - PASSED(); - - TESTING(" layout contiguous to compact conversion"); - /*------------------------------------------------------------------------- - * layout contiguous to compact conversion - *------------------------------------------------------------------------- - */ - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addlayout("dset_contiguous:COMPA",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - PASSED(); - - TESTING(" layout contiguous to chunk conversion"); - /*------------------------------------------------------------------------- - * layout contiguous to chunk conversion - *------------------------------------------------------------------------- - */ - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addlayout("dset_contiguous:CHUNK=3x6",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - PASSED(); - - TESTING(" layout contiguous to contiguous conversion"); - - /*------------------------------------------------------------------------- - * layout contiguous to contiguous conversion - *------------------------------------------------------------------------- - */ - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addlayout("dset_contiguous:CONTI",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - PASSED(); - - TESTING(" layout chunked to compact conversion"); - /*------------------------------------------------------------------------- - * layout chunked to compact conversion - *------------------------------------------------------------------------- - */ - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addlayout("dset_chunk:COMPA",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - PASSED(); - - TESTING(" layout chunked to contiguous conversion"); - - /*------------------------------------------------------------------------- - * layout chunked to contiguous conversion - *------------------------------------------------------------------------- - */ - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addlayout("dset_chunk:CONTI",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - PASSED(); - - TESTING(" layout chunked to chunk conversion"); - /*------------------------------------------------------------------------- - * layout chunked to chunked conversion - *------------------------------------------------------------------------- - */ - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addlayout("dset_chunk:CHUNK=18x13",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - PASSED(); - - - /*------------------------------------------------------------------------- - * the following tests assume the input files have filters - * FNAME7 - * FNAME8 - * FNAME9 - * FNAME10 - * FNAME11 - *------------------------------------------------------------------------- - */ - - - TESTING(" copy of szip filter"); - -#if defined (H5_HAVE_FILTER_SZIP) - if (szip_can_encode) { - /* fs_type = H5F_FILE_SPACE_AGGR_VFD; fs_size = 3 */ - if (h5repack_init (&pack_options, 0, FALSE, H5_INC_ENUM(H5F_file_space_type_t, fs_type), ++fs_size) < 0) - GOERROR; - if (h5repack(FNAME7,FNAME7OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME7,FNAME7OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME7, FNAME7OUT,&pack_options)<=0) - GOERROR; - if (h5repack_cmp_pl(FNAME7,FNAME7OUT)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - } else { - SKIPPED(); - } -#else - SKIPPED(); -#endif - - TESTING(" removing szip filter"); - -#if defined (H5_HAVE_FILTER_SZIP) - if (szip_can_encode) { - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addfilter("dset_szip:NONE",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME7,FNAME7OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME7,FNAME7OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME7, FNAME7OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - } else { - SKIPPED(); - } -#else - SKIPPED(); -#endif - - - TESTING(" copy of deflate filter"); - -#ifdef H5_HAVE_FILTER_DEFLATE - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack(FNAME8,FNAME8OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME8,FNAME8OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME8, FNAME8OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); -#else - SKIPPED(); -#endif - - - TESTING(" removing deflate filter"); - -#ifdef H5_HAVE_FILTER_DEFLATE - if (h5repack_init (&pack_options, 0, FALSE, fs_type, ++fs_size) < 0) - GOERROR; - if (h5repack_addfilter("dset_deflate:NONE",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME8,FNAME8OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME8,FNAME8OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME8, FNAME8OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); -#else - SKIPPED(); -#endif - - - - TESTING(" copy of shuffle filter"); - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack(FNAME9,FNAME9OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME9,FNAME9OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME9, FNAME9OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - - - TESTING(" removing shuffle filter"); - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addfilter("dset_shuffle:NONE",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME9,FNAME9OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME9,FNAME9OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME9, FNAME9OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - - - TESTING(" copy of fletcher filter"); - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack(FNAME10,FNAME10OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME10,FNAME10OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME10, FNAME10OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - - - TESTING(" removing fletcher filter"); - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addfilter("dset_fletcher32:NONE",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME10,FNAME10OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME10,FNAME10OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME10, FNAME10OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - - - TESTING(" copy of nbit filter"); - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack(FNAME12,FNAME12OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME12,FNAME12OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME12, FNAME12OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - - - TESTING(" removing nbit filter"); - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addfilter("dset_nbit:NONE",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME12,FNAME12OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME12,FNAME12OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME12, FNAME12OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - - - TESTING(" adding nbit filter"); - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addfilter("dset_int31:NBIT",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME12,FNAME12OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME12,FNAME12OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME12, FNAME12OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - - - TESTING(" copy of scaleoffset filter"); - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack(FNAME13,FNAME13OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME13,FNAME13OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME13, FNAME13OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - - - TESTING(" removing scaleoffset filter"); - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addfilter("dset_scaleoffset:NONE",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME13,FNAME13OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME13,FNAME13OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME13, FNAME13OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - - - TESTING(" adding scaleoffset filter"); - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addfilter("dset_none:SOFF=31,IN",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME13,FNAME13OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME13,FNAME13OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME13, FNAME13OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - - - /*------------------------------------------------------------------------- - * file with all filters - * dset_all - * dset_deflate - * dset_szip - * dset_shuffle - * dset_fletcher32 - *------------------------------------------------------------------------- - */ - - - TESTING(" filter conversion from deflate to szip"); - -#if defined (H5_HAVE_FILTER_SZIP) && defined (H5_HAVE_FILTER_DEFLATE) - - if (szip_can_encode) { - /* fs_type = H5F_FILE_SPACE_VFD; fs_size = 4 */ - if (h5repack_init (&pack_options, 0, FALSE, H5_INC_ENUM(H5F_file_space_type_t, fs_type), ++fs_size) < 0) - GOERROR; - if (h5repack_addfilter("dset_deflate:SZIP=8,NN",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME11,FNAME11OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME11,FNAME11OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME11, FNAME11OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - } else { - SKIPPED(); - } -#else - SKIPPED(); -#endif - - TESTING(" filter conversion from szip to deflate"); - -#if defined (H5_HAVE_FILTER_SZIP) && defined (H5_HAVE_FILTER_DEFLATE) - - if (szip_can_encode) { - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addfilter("dset_szip:GZIP=1",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME11,FNAME11OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME11,FNAME11OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME11, FNAME11OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); - } else { - SKIPPED(); - } -#else - SKIPPED(); -#endif - - - /*------------------------------------------------------------------------- - * test the NONE global option - *------------------------------------------------------------------------- - */ - - TESTING(" removing all filters"); - -#if defined (H5_HAVE_FILTER_SZIP) && defined (H5_HAVE_FILTER_DEFLATE) - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addfilter("NONE",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME11,FNAME11OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME11,FNAME11OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME11, FNAME11OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); -#else - SKIPPED(); -#endif - - /*------------------------------------------------------------------------- - * test a big file - *------------------------------------------------------------------------- - */ - TESTING(" big file"); - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack(FNAME14,FNAME14OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME14,FNAME14OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME14, FNAME14OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - PASSED(); - - /*------------------------------------------------------------------------- - * test external dataset - *------------------------------------------------------------------------- - */ - TESTING(" external datasets"); - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack(FNAME15,FNAME15OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME15,FNAME15OUT,NULL,NULL,&diff_options) > 0) - GOERROR; - if (h5repack_verify(FNAME15, FNAME15OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - PASSED(); - - /*------------------------------------------------------------------------- - * test file with userblock - *------------------------------------------------------------------------- - */ - TESTING(" file with userblock"); - if(h5repack_init(&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if(h5repack(FNAME16, FNAME16OUT, &pack_options) < 0) - GOERROR; - if(h5diff(FNAME16, FNAME16OUT, NULL, NULL, &diff_options) > 0) - GOERROR; - if(h5repack_verify(FNAME16, FNAME16OUT, &pack_options) <= 0) - GOERROR; - if(verify_userblock(FNAME16OUT) < 0) - GOERROR; - if(h5repack_end(&pack_options) < 0) - GOERROR; - PASSED(); - - /*------------------------------------------------------------------------- - * test --latest options - *------------------------------------------------------------------------- - */ - TESTING(" latest file format options"); - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - pack_options.latest=1; - pack_options.grp_compact=10; - pack_options.grp_indexed=5; - pack_options.msg_size[0] = 10; - pack_options.msg_size[1] = 20; - pack_options.msg_size[2] = 30; - pack_options.msg_size[3] = 40; - pack_options.msg_size[4] = 50; - if (h5repack(FNAME1,FNAME1OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME1,FNAME1OUT,NULL,NULL,&diff_options) > 0) - GOERROR; - if (h5repack_verify(FNAME1, FNAME1OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - PASSED(); - - - /*------------------------------------------------------------------------- - * test several global filters - *------------------------------------------------------------------------- - */ - - TESTING(" several global filters"); - -#if defined (H5_HAVE_FILTER_DEFLATE) - - if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - if (h5repack_addfilter("GZIP=1",&pack_options) < 0) - GOERROR; - if (h5repack_addfilter("SHUF",&pack_options) < 0) - GOERROR; - if (h5repack(FNAME11,FNAME11OUT,&pack_options) < 0) - GOERROR; - if (h5diff(FNAME11,FNAME11OUT,NULL,NULL,&diff_options) >0) - GOERROR; - if (h5repack_verify(FNAME11, FNAME11OUT,&pack_options)<=0) - GOERROR; - if (h5repack_end (&pack_options) < 0) - GOERROR; - - PASSED(); -#else - SKIPPED(); -#endif - - - /*------------------------------------------------------------------------- - * test file with userblock - *------------------------------------------------------------------------- - */ - TESTING(" file with added userblock"); - -#ifdef H5_HAVE_FILTER_DEFLATE - - if(h5repack_init(&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - - /* add the options for a user block size and user block filename */ - pack_options.ublock_size = USERBLOCK_SIZE; - pack_options.ublock_filename = FNAME_UB; - - if(h5repack(FNAME8, FNAME8OUT, &pack_options) < 0) - GOERROR; - if(h5diff(FNAME8, FNAME8OUT, NULL, NULL, &diff_options) > 0) - GOERROR; - if(h5repack_verify(FNAME8, FNAME8OUT, &pack_options) <= 0) - GOERROR; - if(verify_userblock(FNAME8OUT) < 0) - GOERROR; - if(h5repack_end(&pack_options) < 0) - GOERROR; - - - PASSED(); -#else - SKIPPED(); -#endif - - - /*------------------------------------------------------------------------- - * test file with aligment - *------------------------------------------------------------------------- - */ - TESTING(" file with aligment"); - -#ifdef H5_HAVE_FILTER_DEFLATE - - if(h5repack_init(&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - - /* add the options for aligment */ - pack_options.alignment = 1; - pack_options.threshold = 1; - - if(h5repack(FNAME8, FNAME8OUT, &pack_options) < 0) - GOERROR; - if(h5diff(FNAME8, FNAME8OUT, NULL, NULL, &diff_options) > 0) - GOERROR; - if(h5repack_verify(FNAME8, FNAME8OUT, &pack_options) <= 0) - GOERROR; - - /* verify aligment */ - { - hsize_t threshold; - hsize_t alignment; - hid_t fapl; - hid_t fid; - - if (( fid = H5Fopen(FNAME8OUT, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0 ) - GOERROR; - if ((fapl = H5Fget_access_plist(fid)) < 0) - GOERROR; - if ( H5Pget_alignment(fapl, &threshold, &alignment ) < 0) - GOERROR; - if ( threshold != 1 ) - GOERROR; - if ( alignment != 1 ) - GOERROR; - if ( H5Pclose(fapl) < 0) - GOERROR; - if (H5Fclose(fid) < 0) - GOERROR; - - } - - - if(h5repack_end(&pack_options) < 0) - GOERROR; - - - PASSED(); -#else - SKIPPED(); -#endif - - /*------------------------------------------------------------------------- - * test file with userblock - *------------------------------------------------------------------------- - */ - TESTING(" file with committed datatypes"); - - if(h5repack_init(&pack_options, 0, FALSE, fs_type, fs_size) < 0) - GOERROR; - - if(h5repack(FNAME17, FNAME17OUT, &pack_options) < 0) - GOERROR; - if(h5diff(FNAME17, FNAME17OUT, NULL, NULL, &diff_options) > 0) - GOERROR; - if(h5repack_verify(FNAME17, FNAME17OUT, &pack_options) <= 0) - GOERROR; - if(h5repack_end(&pack_options) < 0) - GOERROR; - - - PASSED(); - - /*------------------------------------------------------------------------- - * test --metadata_block_size option - * Also verify that output file using the metadata_block_size option is - * larger than the output file one not using it. - * FNAME4 is used because it is the same as the test file used for the - * shell script version of this test (h5repack.sh). - *------------------------------------------------------------------------- - */ - TESTING(" metadata block size option"); - /* First run without metadata option. No need to verify the correctness */ - /* since this has been verified by earlier tests. Just record the file */ - /* size of the output file. */ - if(h5repack_init(&pack_options, 0, FALSE, H5F_FILE_SPACE_DEFAULT, (hsize_t)0) < 0) - GOERROR; - if(h5repack(FNAME4, FNAME4OUT, &pack_options) < 0) - GOERROR; - if(HDstat(FNAME4OUT, &file_stat) < 0) - GOERROR; - fsize1 = file_stat.st_size; - if(h5repack_end(&pack_options) < 0) - GOERROR; - - /* run it again with metadata option */ - if(h5repack_init(&pack_options, 0, FALSE, H5F_FILE_SPACE_DEFAULT, (hsize_t)0) < 0) - GOERROR; - pack_options.meta_block_size = 8192; - if(h5repack(FNAME4, FNAME4OUT, &pack_options) < 0) - GOERROR; - if(h5diff(FNAME4, FNAME4OUT, NULL, NULL, &diff_options) > 0) - GOERROR; - if(h5repack_verify(FNAME4, FNAME4OUT, &pack_options) <= 0) - GOERROR; - /* record the file size of the output file */ - if(HDstat(FNAME4OUT, &file_stat) < 0) - GOERROR; - fsize2 = file_stat.st_size; - /* verify second file size is larger than the first one */ - if(fsize2 <= fsize1) - GOERROR; - if(h5repack_end(&pack_options) < 0) - GOERROR; - PASSED(); - - - /*------------------------------------------------------------------------- - * clean temporary test files - *------------------------------------------------------------------------- - */ - { - hid_t fapl; - - fapl = h5_fileaccess(); - h5_clean_files(H5REPACK_FILENAMES, fapl); - - } - - puts("All h5repack tests passed."); - - h5tools_close(); - - return 0; - -error: - puts("***** H5REPACK TESTS FAILED *****"); - return 1; - -} - - -/*------------------------------------------------------------------------- -* Function: make_testfiles -* -* Purpose: make a test file with all types of HDF5 objects, -* datatypes and filters -* -*------------------------------------------------------------------------- -*/ -static -int make_testfiles(void) -{ - hid_t fid; - - /*------------------------------------------------------------------------- - * create a file for general copy test - *------------------------------------------------------------------------- - */ - if((fid = H5Fcreate(FNAME0,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0) - return -1; - if (make_fill(fid) < 0) - goto out; - if(H5Fclose(fid) < 0) - return -1; - - /*------------------------------------------------------------------------- - * create another file for general copy test (all datatypes) - *------------------------------------------------------------------------- - */ - if((fid = H5Fcreate(FNAME1,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0) - return -1; - if (make_all_objects(fid) < 0) - goto out; - if(H5Fclose(fid) < 0) - return -1; - - /*------------------------------------------------------------------------- - * create a file for attributes copy test - *------------------------------------------------------------------------- - */ - if((fid = H5Fcreate(FNAME2,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0) - return -1; - if (make_attributes(fid) < 0) - goto out; - if(H5Fclose(fid) < 0) - return -1; - - /*------------------------------------------------------------------------- - * create a file for hard links test - *------------------------------------------------------------------------- - */ - if((fid = H5Fcreate(FNAME3,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0) - return -1; - if (make_hlinks(fid) < 0) - goto out; - if(H5Fclose(fid) < 0) - return -1; - - /*------------------------------------------------------------------------- - * create a file for layouts test - *------------------------------------------------------------------------- - */ - if((fid = H5Fcreate(FNAME4,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0) - return -1; - if (make_layout(fid) < 0) - goto out; - if(H5Fclose(fid) < 0) - return -1; - - /*------------------------------------------------------------------------- - * create a file for layout conversion test - *------------------------------------------------------------------------- - */ - if((fid = H5Fcreate(FNAME18, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) - return -1; - - if(make_layout2(fid) < 0) - goto out; - - if(H5Fclose(fid) < 0) - return -1; - - /*------------------------------------------------------------------------- - * for test layout conversions form chunk with unlimited max dims - *------------------------------------------------------------------------- - */ - if((fid = H5Fcreate("h5repack_layout3.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) - return -1; - - if(make_layout3(fid) < 0) - goto out; - - if(H5Fclose(fid) < 0) - return -1; - - /*------------------------------------------------------------------------- - * create a file for the H5D_ALLOC_TIME_EARLY test - *------------------------------------------------------------------------- - */ - if (make_early() < 0) - goto out; - - /*------------------------------------------------------------------------- - * create a file with the SZIP filter - *------------------------------------------------------------------------- - */ -#ifdef H5_HAVE_FILTER_SZIP - if((fid = H5Fcreate(FNAME7,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0) - return -1; - if (make_szip(fid) < 0) - goto out; - if(H5Fclose(fid) < 0) - return -1; -#endif /* H5_HAVE_FILTER_SZIP */ - - - /*------------------------------------------------------------------------- - * create a file with the deflate filter - *------------------------------------------------------------------------- - */ - if((fid = H5Fcreate(FNAME8,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0) - return -1; - if (make_deflate(fid) < 0) - goto out; - if(H5Fclose(fid) < 0) - return -1; - - /*------------------------------------------------------------------------- - * create a file with the shuffle filter - *------------------------------------------------------------------------- - */ - if((fid = H5Fcreate(FNAME9,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0) - return -1; - if (make_shuffle(fid) < 0) - goto out; - if(H5Fclose(fid) < 0) - return -1; - - /*------------------------------------------------------------------------- - * create a file with the fletcher32 filter - *------------------------------------------------------------------------- - */ - if((fid = H5Fcreate(FNAME10,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0) - return -1; - if (make_fletcher32(fid) < 0) - goto out; - if(H5Fclose(fid) < 0) - return -1; - - /*------------------------------------------------------------------------- - * create a file with all the filters - *------------------------------------------------------------------------- - */ - if((fid = H5Fcreate(FNAME11,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0) - return -1; - if (make_all_filters(fid) < 0) - goto out; - if(H5Fclose(fid) < 0) - return -1; - - /*------------------------------------------------------------------------- - * create a file with the nbit filter - *------------------------------------------------------------------------- - */ - if((fid = H5Fcreate(FNAME12,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0) - return -1; - if (make_nbit(fid) < 0) - goto out; - if(H5Fclose(fid) < 0) - return -1; - - /*------------------------------------------------------------------------- - * create a file with the scaleoffset filter - *------------------------------------------------------------------------- - */ - if((fid = H5Fcreate(FNAME13,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0) - return -1; - if (make_scaleoffset(fid) < 0) - goto out; - if(H5Fclose(fid) < 0) - return -1; - - /*------------------------------------------------------------------------- - * create a big dataset - *------------------------------------------------------------------------- - */ - if((fid = H5Fcreate(FNAME14,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0) - return -1; - if (make_big(fid) < 0) - goto out; - if(H5Fclose(fid) < 0) - return -1; - - /*------------------------------------------------------------------------- - * create a file with external dataset - *------------------------------------------------------------------------- - */ - if((fid = H5Fcreate(FNAME15,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0) - return -1; - if (make_external(fid) < 0) - goto out; - if(H5Fclose(fid) < 0) - return -1; - - /*------------------------------------------------------------------------- - * create a file with userblock - *------------------------------------------------------------------------- - */ - if(make_userblock() < 0) - goto out; - - /*------------------------------------------------------------------------- - * create a userblock file - *------------------------------------------------------------------------- - */ - if(make_userblock_file() < 0) - goto out; - - /*------------------------------------------------------------------------- - * create a file with named datatypes - *------------------------------------------------------------------------- - */ - if((fid = H5Fcreate(FNAME17,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0) - return -1; - if (make_named_dtype(fid) < 0) - goto out; - if(H5Fclose(fid) < 0) - return -1; - - /*------------------------------------------------------------------------- - * create obj and region reference type datasets (bug1814) - * add attribute with int type (bug1726) - * add attribute with obj and region reference type (bug1726) - *-------------------------------------------------------------------------*/ - if((fid = H5Fcreate(FNAME_REF,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0) - return -1; - /* create reference type datasets */ - if (make_references(fid) < 0) - goto out; - if(H5Fclose(fid) < 0) - return -1; - - /*------------------------------------------------------------------------- - * create a file with obj and region references in attribute of compound and - * vlen datatype - *-------------------------------------------------------------------------*/ - if((fid = H5Fcreate(FNAME_ATTR_REF,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0) - return -1; - if (make_complex_attr_references(fid) < 0) - goto out; - if(H5Fclose(fid) < 0) - return -1; - - return 0; - -out: - H5Fclose(fid); - return -1; -} - - - -/*------------------------------------------------------------------------- -* Function: make_all_objects -* -* Purpose: make a test file with all types of HDF5 objects -* -*------------------------------------------------------------------------- -*/ -static -int make_all_objects(hid_t loc_id) -{ - hid_t did=-1; - hid_t gid=-1; - hid_t tid=-1; - hid_t rid=-1; - hid_t sid=-1; - hid_t gcplid=-1; - hsize_t dims[1]={2}; - /* compound datatype */ - typedef struct s_t - { - int a; - float b; - } s_t; - - /*------------------------------------------------------------------------- - * H5G_DATASET - *------------------------------------------------------------------------- - */ - if ((sid = H5Screate_simple(1, dims, NULL)) < 0) - goto out; - if ((did = H5Dcreate2(loc_id, "dset_referenced", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - - - /*------------------------------------------------------------------------- - * H5G_GROUP - *------------------------------------------------------------------------- - */ - if ((gid = H5Gcreate2(loc_id, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if (H5Gclose(gid) < 0) - goto out; - - /* create a group "g2" with H5P_CRT_ORDER_TRACKED set */ - if ((gcplid = H5Pcreate(H5P_GROUP_CREATE)) < 0) - goto out; - if (H5Pset_link_creation_order(gcplid, H5P_CRT_ORDER_TRACKED) < 0) - goto out; - if ((gid = H5Gcreate2(loc_id, "g2", H5P_DEFAULT, gcplid, H5P_DEFAULT)) < 0) - goto out; - if (H5Gclose(gid) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5G_TYPE - *------------------------------------------------------------------------- - */ - - /* create a compound datatype */ - if ((tid = H5Tcreate(H5T_COMPOUND, sizeof(s_t))) < 0) - goto out; - if (H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_INT) < 0) - goto out; - if (H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_FLOAT) < 0) - goto out; - if (H5Tcommit2(loc_id, "type", tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5G_LINK - *------------------------------------------------------------------------- - */ - - if (H5Lcreate_soft("dset", loc_id, "link", H5P_DEFAULT, H5P_DEFAULT) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5G_UDLINK - *------------------------------------------------------------------------- - */ - /* Create an external link. Other UD links are not supported by h5repack */ - if (H5Lcreate_external("file", "path", loc_id, "ext_link", H5P_DEFAULT, H5P_DEFAULT) < 0) - goto out; - - /*------------------------------------------------------------------------- - * write a series of datasetes at root - *------------------------------------------------------------------------- - */ - - if ((rid = H5Gopen2(loc_id, "/", H5P_DEFAULT)) < 0) - goto out; - if (write_dset_in(rid,"dset_referenced",loc_id,0) < 0) - goto out; - if (H5Gclose(rid) < 0) - goto out; - - /* close */ - if (H5Dclose(did) < 0) - goto out; - if (H5Sclose(sid) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - if (H5Pclose(gcplid) < 0) - goto out; - - return 0; - -out: - H5E_BEGIN_TRY - { - H5Dclose(did); - H5Gclose(gid); - H5Gclose(rid); - H5Sclose(sid); - H5Tclose(tid); - H5Pclose(gcplid); - } H5E_END_TRY; - return -1; -} - - -/*------------------------------------------------------------------------- -* Function: make_attributes -* -* Purpose: make a test file with all types of attributes -* -*------------------------------------------------------------------------- -*/ -static -int make_attributes(hid_t loc_id) -{ - hid_t did=-1; - hid_t gid=-1; - hid_t rid=-1; - hid_t sid=-1; - hsize_t dims[1]={2}; - - /*------------------------------------------------------------------------- - * H5G_DATASET - *------------------------------------------------------------------------- - */ - if ((sid = H5Screate_simple(1, dims, NULL)) < 0) - goto out; - if ((did = H5Dcreate2(loc_id, "dset", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5G_GROUP - *------------------------------------------------------------------------- - */ - if ((gid = H5Gcreate2(loc_id, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if ((rid = H5Gopen2(loc_id, "/", H5P_DEFAULT)) < 0) - goto out; - - /*------------------------------------------------------------------------- - * write a series of attributes on the dataset, group, and root group - *------------------------------------------------------------------------- - */ - - if ( write_attr_in(did,"dset",loc_id,0) < 0) - goto out; - if (write_attr_in(gid,"dset",loc_id,0) < 0) - goto out; - if (write_attr_in(rid,"dset",loc_id,0) < 0) - goto out; - - /* close */ - if (H5Dclose(did) < 0) - goto out; - if (H5Gclose(gid) < 0) - goto out; - if (H5Gclose(rid) < 0) - goto out; - if (H5Sclose(sid) < 0) - goto out; - - return 0; - -out: - H5E_BEGIN_TRY - { - H5Dclose(did); - H5Gclose(gid); - H5Gclose(rid); - H5Sclose(sid); - } H5E_END_TRY; - return -1; - -} - -/*------------------------------------------------------------------------- -* Function: make_hlinks -* -* Purpose: make a test file with hard links -* -*------------------------------------------------------------------------- -*/ -static -int make_hlinks(hid_t loc_id) -{ - hid_t g1id=-1; - hid_t g2id=-1; - hid_t g3id=-1; - hsize_t dims[2]={3,2}; - int buf[3][2]= {{1,1},{1,2},{2,2}}; - - /*------------------------------------------------------------------------- - * create a dataset and some hard links to it - *------------------------------------------------------------------------- - */ - - if(write_dset(loc_id, 2, dims, "dset", H5T_NATIVE_INT, buf) < 0) - return -1; - if(H5Lcreate_hard(loc_id, "dset", H5L_SAME_LOC, "link1 to dset", H5P_DEFAULT, H5P_DEFAULT) < 0) - return -1; - if(H5Lcreate_hard(loc_id, "dset", H5L_SAME_LOC, "link2 to dset", H5P_DEFAULT, H5P_DEFAULT) < 0) - return -1; - if(H5Lcreate_hard(loc_id, "dset", H5L_SAME_LOC, "link3 to dset", H5P_DEFAULT, H5P_DEFAULT) < 0) - return -1; - - /*------------------------------------------------------------------------- - * create a group and some hard links to it - *------------------------------------------------------------------------- - */ - - if((g1id = H5Gcreate2(loc_id, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if((g2id = H5Gcreate2(g1id, "g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if((g3id = H5Gcreate2(g2id, "g3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - - if(H5Lcreate_hard(loc_id, "g1", g2id, "link1 to g1", H5P_DEFAULT, H5P_DEFAULT) < 0) - goto out; - if(H5Lcreate_hard(g1id, "g2", g3id, "link1 to g2", H5P_DEFAULT, H5P_DEFAULT) < 0) - goto out; - - - /* close */ - if (H5Gclose(g1id) < 0) - goto out; - if (H5Gclose(g2id) < 0) - goto out; - if (H5Gclose(g3id) < 0) - goto out; - - return 0; - -out: - H5E_BEGIN_TRY - { - H5Gclose(g1id); - H5Gclose(g2id); - H5Gclose(g3id); - } H5E_END_TRY; - return -1; - -} - - -/*------------------------------------------------------------------------- -* Function: make_szip -* -* Purpose: make a dataset with the SZIP filter -* -*------------------------------------------------------------------------- -*/ -#ifdef H5_HAVE_FILTER_SZIP -static -int make_szip(hid_t loc_id) -{ - hid_t dcpl; /* dataset creation property list */ - hid_t sid; /* dataspace ID */ - unsigned szip_options_mask=H5_SZIP_ALLOW_K13_OPTION_MASK|H5_SZIP_NN_OPTION_MASK; - unsigned szip_pixels_per_block=8; - hsize_t dims[RANK]={DIM1,DIM2}; - hsize_t chunk_dims[RANK]={CDIM1,CDIM2}; - int buf[DIM1][DIM2]; - int i, j, n; - int szip_can_encode = 0; - - for (i=n=0; i 0) - HDclose(fd); - - return -1; -} /* end make_userblock() */ - -/*------------------------------------------------------------------------- -* Function: verify_userblock -* -* Purpose: Verify that the userblock was copied correctly -* -*------------------------------------------------------------------------- -*/ -static int -verify_userblock( const char* filename) -{ - hid_t fid = -1; - hid_t fcpl = -1; - int fd = -1; /* File descriptor for writing userblock */ - char ub[USERBLOCK_SIZE]; /* User block data */ - hsize_t ub_size = 0; /* User block size */ - ssize_t nread; /* # of bytes read */ - size_t u; /* Local index variable */ - - /* Open file with userblock */ - if((fid = H5Fopen(filename, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) - goto out; - - /* Retrieve file creation property list & userblock size */ - if((fcpl = H5Fget_create_plist(fid)) < 0) - goto out; - if(H5Pget_userblock(fcpl, &ub_size) < 0) - goto out; - - /* Verify userblock size is correct */ - if(ub_size != USERBLOCK_SIZE) - goto out; - - /* Close file creation property list */ - if(H5Pclose(fcpl) < 0) - goto out; - - if(H5Fclose(fid) < 0) - goto out; - - - /* Re-open HDF5 file, as "plain" file */ - if((fd = HDopen(filename, O_RDONLY, 0)) < 0) - goto out; - - /* Read userblock data */ - nread = HDread(fd, ub, (size_t)USERBLOCK_SIZE); - HDassert(nread == USERBLOCK_SIZE); - - /* Verify userblock data */ - for(u = 0; u < USERBLOCK_SIZE; u++) - if(ub[u] != (char)('a' + (u % 26))) - goto out; - - /* Close file */ - HDclose(fd); - - return 0; - -out: - H5E_BEGIN_TRY { - H5Pclose(fcpl); - H5Fclose(fid); - } H5E_END_TRY; - if(fd > 0) - HDclose(fd); - - return -1; -} /* end verify_userblock() */ - - -/*------------------------------------------------------------------------- -* Function: make_userblock_file -* -* Purpose: create a file for the userblock add test -* -*------------------------------------------------------------------------- -*/ -static int -make_userblock_file(void) -{ - int fd = -1; /* File descriptor for writing userblock */ - char ub[USERBLOCK_SIZE]; /* User block data */ - ssize_t nwritten; /* # of bytes written */ - size_t u; /* Local index variable */ - - /* initialize userblock data */ - for(u = 0; u < USERBLOCK_SIZE; u++) - ub[u] = (char)('a' + (char)(u % 26)); - - /* open file */ - if((fd = HDopen(FNAME_UB,O_WRONLY|O_CREAT|O_TRUNC, 0644 )) < 0) - goto out; - - /* write userblock data */ - nwritten = HDwrite(fd, ub, (size_t)USERBLOCK_SIZE); - HDassert(nwritten == USERBLOCK_SIZE); - - /* close file */ - HDclose(fd); - - return 0; - -out: - - if(fd > 0) - HDclose(fd); - - return -1; -} - -/*------------------------------------------------------------------------- -* Function: write_dset_in -* -* Purpose: write datasets in LOC_ID -* -* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu -* -* Date: November 12, 2003 -* -*------------------------------------------------------------------------- -*/ -static -int write_dset_in(hid_t loc_id, - const char* dset_name, /* for saving reference to dataset*/ - hid_t file_id, - int make_diffs /* flag to modify data buffers */) -{ - /* compound datatype */ - typedef struct s_t - { - char a; - double b; - } s_t; - - typedef enum - { - RED, - GREEN - } e_t; - - hid_t did=-1; - hid_t sid=-1; - hid_t tid=-1; - hid_t pid=-1; - unsigned i, j; - int val, k, n; - float f; - - /* create 1D attributes with dimension [2], 2 elements */ - hsize_t dims[1]={2}; - hsize_t dims1r[1]={2}; - char buf1[2][3]= {"ab","de"}; /* string */ - char buf2[2]= {1,2}; /* bitfield, opaque */ - s_t buf3[2]= {{1,2},{3,4}}; /* compound */ - hobj_ref_t buf4[2]; /* reference */ - e_t buf45[2]= {RED,GREEN}; /* enum */ - hvl_t buf5[2]; /* vlen */ - hsize_t dimarray[1]={3}; /* array dimension */ - int buf6[2][3]= {{1,2,3},{4,5,6}}; /* array */ - int buf7[2]= {1,2}; /* integer */ - float buf8[2]= {1,2}; /* float */ - - /* create 2D attributes with dimension [3][2], 6 elements */ - hsize_t dims2[2]={3,2}; - hsize_t dims2r[2]={1,1}; - char buf12[6][3]= {"ab","cd","ef","gh","ij","kl"}; /* string */ - char buf22[3][2]= {{1,2},{3,4},{5,6}}; /* bitfield, opaque */ - s_t buf32[6]= {{1,2},{3,4},{5,6},{7,8},{9,10},{11,12}}; /* compound */ - hobj_ref_t buf42[1][1]; /* reference */ - hvl_t buf52[3][2]; /* vlen */ - int buf62[6][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15},{16,17,18}}; /* array */ - int buf72[3][2]= {{1,2},{3,4},{5,6}}; /* integer */ - float buf82[3][2]= {{1,2},{3,4},{5,6}}; /* float */ - - /* create 3D attributes with dimension [4][3][2], 24 elements */ - hsize_t dims3[3]={4,3,2}; - hsize_t dims3r[3]={1,1,1}; - char buf13[24][3]= {"ab","cd","ef","gh","ij","kl","mn","pq", - "rs","tu","vw","xz","AB","CD","EF","GH", - "IJ","KL","MN","PQ","RS","TU","VW","XZ"}; /* string */ - char buf23[4][3][2]; /* bitfield, opaque */ - s_t buf33[4][3][2]; /* compound */ - hobj_ref_t buf43[1][1][1]; /* reference */ - hvl_t buf53[4][3][2]; /* vlen */ - int buf63[24][3]; /* array */ - int buf73[4][3][2]; /* integer */ - float buf83[4][3][2]; /* float */ - - - /*------------------------------------------------------------------------- - * 1D - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - - - if(make_diffs) { - for(i = 0; i < 2; i++) - for(j = 0; j < 2; j++) - buf1[i][j] = 'z'; - } - - - if ((tid = H5Tcopy(H5T_C_S1)) < 0) - goto out; - if (H5Tset_size(tid, (size_t)2) < 0) - goto out; - if (write_dset(loc_id,1,dims,"string",tid,buf1) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - - - /* create hard link */ - if (H5Lcreate_hard(loc_id, "string", H5L_SAME_LOC, "string_link", H5P_DEFAULT, H5P_DEFAULT) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - - if(make_diffs) { - for(i = 0; i < 2; i++) - buf2[i] = buf2[1] = 0; - } - - if ((tid = H5Tcopy(H5T_STD_B8LE)) < 0) - goto out; - if (write_dset(loc_id,1,dims,"bitfield",tid,buf2) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - - if(make_diffs) { - for(i = 0; i < 2; i++) { - buf3[i].a = 0; - buf3[i].b = 0; - } - } - - if ((tid = H5Tcreate(H5T_OPAQUE, (size_t)1)) < 0) - goto out; - if (H5Tset_tag(tid, "1-byte opaque type") < 0) - goto out; - if (write_dset(loc_id,1,dims,"opaque",tid,buf2) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - - - if(make_diffs) { - for(i = 0; i < 2; i++) - buf45[i] = GREEN; - } - - if ((tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t))) < 0) - goto out; - if (H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR) < 0) - goto out; - if (H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE) < 0) - goto out; - if (write_dset(loc_id,1,dims,"compound",tid,buf3) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5T_REFERENCE - *------------------------------------------------------------------------- - */ - /* object references ( H5R_OBJECT ) */ - buf4[0]=0; - buf4[1]=0; - if (dset_name) - { - if (H5Rcreate(&buf4[0],file_id,dset_name,H5R_OBJECT,(hid_t)-1) < 0) - goto out; - if (write_dset(loc_id,1,dims1r,"refobj",H5T_STD_REF_OBJ,buf4) < 0) - goto out; - } - - /* Dataset region reference ( H5R_DATASET_REGION ) */ - if (make_dset_reg_ref(loc_id) < 0) - goto out; - - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - if ((tid = H5Tcreate(H5T_ENUM, sizeof(e_t))) < 0) - goto out; - if (H5Tenum_insert(tid, "RED", (val = 0, &val)) < 0) - goto out; - if (H5Tenum_insert(tid, "GREEN", (val = 1, &val)) < 0) - goto out; - if (write_dset(loc_id,1,dims,"enum",tid,buf45) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - - buf5[0].len = 1; - buf5[0].p = HDmalloc( 1 * sizeof(int)); - ((int *)buf5[0].p)[0]=1; - buf5[1].len = 2; - buf5[1].p = HDmalloc( 2 * sizeof(int)); - ((int *)buf5[1].p)[0] = 2; - ((int *)buf5[1].p)[1] = 3; - - if(make_diffs) { - ((int *)buf5[0].p)[0] = 0; - ((int *)buf5[1].p)[0] = 0; - ((int *)buf5[1].p)[1] = 0; - } - - if ((sid = H5Screate_simple(1, dims, NULL)) < 0) - goto out; - if ((tid = H5Tvlen_create(H5T_NATIVE_INT)) < 0) - goto out; - if ((did = H5Dcreate2(loc_id, "vlen", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if (H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf5) < 0) - goto out; - if (H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf5) < 0) - goto out; - if (H5Dclose(did) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - if (H5Sclose(sid) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - - if(make_diffs) { - for(i = 0; i < 2; i++) - for(j = 0; j < 3; j++) - buf6[i][j] = 0; - } - - if ((tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray)) < 0) - goto out; - if (write_dset(loc_id, 1, dims, "array", tid, buf6) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - - { - - hsize_t TEST_BUFSIZE = (128 * 1024 * 1024); /* 128MB */ - double *dbuf; /* information to write */ - size_t size; - hsize_t sdims[] = {1}; - hsize_t tdims[] = {TEST_BUFSIZE / sizeof(double) + 1}; - unsigned u; - - /* allocate and initialize array data to write */ - size = ( TEST_BUFSIZE / sizeof(double) + 1 ) * sizeof(double); - dbuf = (double*)HDmalloc( size ); - if (NULL == dbuf) - { - printf ("\nError: Cannot allocate memory for \"arrayd\" data buffer size %dMB.\n", (int) size / 1000000 ); - goto out; - } - - for( u = 0; u < TEST_BUFSIZE / sizeof(double) + 1; u++) - dbuf[u] = u; - - if (make_diffs) - { - dbuf[5] = 0; - dbuf[6] = 0; - } - - /* create a type larger than TEST_BUFSIZE */ - if ((tid = H5Tarray_create2(H5T_NATIVE_DOUBLE, 1, tdims)) < 0) - goto out; - size = H5Tget_size(tid); - if ((sid = H5Screate_simple(1, sdims, NULL)) < 0) - goto out; - if ((did = H5Dcreate2(loc_id, "arrayd", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; -#if defined(WRITE_ARRAY) - H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dbuf); -#endif - - /* close */ - H5Dclose(did); - H5Tclose(tid); - H5Sclose(sid); - HDfree( dbuf ); - } - - /*------------------------------------------------------------------------- - * H5T_INTEGER and H5T_FLOAT - *------------------------------------------------------------------------- - */ - - if(make_diffs) { - for(i = 0; i < 2; i++) { - buf7[i] = 0; - buf8[i] = 0; - } - } - - if (write_dset(loc_id,1,dims,"integer",H5T_NATIVE_INT,buf7) < 0) - goto out; - if (write_dset(loc_id,1,dims,"float",H5T_NATIVE_FLOAT,buf8) < 0) - goto out; - - - /*------------------------------------------------------------------------- - * 2D - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - HDmemset(buf12, 'z', sizeof buf12); - } - - - if ((tid = H5Tcopy(H5T_C_S1)) < 0) - goto out; - if (H5Tset_size(tid, (size_t)2) < 0) - goto out; - if (write_dset(loc_id,2,dims2,"string2D",tid,buf12) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - - - if (make_diffs) - { - HDmemset(buf22,0,sizeof buf22); - } - - if ((tid = H5Tcopy(H5T_STD_B8LE)) < 0) - goto out; - if (write_dset(loc_id,2,dims2,"bitfield2D",tid,buf22) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - if ((tid = H5Tcreate(H5T_OPAQUE, (size_t)1)) < 0) - goto out; - if (H5Tset_tag(tid, "1-byte opaque type") < 0) - goto out; - if (write_dset(loc_id,2,dims2,"opaque2D",tid,buf22) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - HDmemset(buf32,0,sizeof buf32); - } - - if ((tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t))) < 0) - goto out; - if (H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR) < 0) - goto out; - if (H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE) < 0) - goto out; - if (write_dset(loc_id,2,dims2,"compound2D",tid,buf32) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5T_REFERENCE - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if (dset_name) - { - if (H5Rcreate(&buf42[0][0], file_id, dset_name, H5R_OBJECT, (hid_t)-1) < 0) - goto out; - if (write_dset(loc_id, 2, dims2r, "refobj2D", H5T_STD_REF_OBJ, buf42) < 0) - goto out; - } - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - - if ((tid = H5Tcreate(H5T_ENUM, sizeof(e_t))) < 0) - goto out; - if (H5Tenum_insert(tid, "RED", (val = 0, &val)) < 0) - goto out; - if (H5Tenum_insert(tid, "GREEN", (val = 1, &val)) < 0) - goto out; - if (write_dset(loc_id,2,dims2,"enum2D",tid,0) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - n = 0; - for(i = 0; i < 3; i++) { - for(j = 0; j < 2; j++) { - unsigned l; - - buf52[i][j].p = HDmalloc((i + 1) * sizeof(int)); - buf52[i][j].len = (size_t)(i + 1); - for(l = 0; l < i + 1; l++) { - if(make_diffs) - ((int *)buf52[i][j].p)[l] = 0; - else - ((int *)buf52[i][j].p)[l] = n++; - } - } - } - - if ((sid = H5Screate_simple(2, dims2, NULL)) < 0) - goto out; - if ((tid = H5Tvlen_create(H5T_NATIVE_INT)) < 0) - goto out; - if ((did = H5Dcreate2(loc_id, "vlen2D", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if (H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf52) < 0) - goto out; - if (H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf52) < 0) - goto out; - if (H5Dclose(did) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - if (H5Sclose(sid) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - HDmemset(buf62,0,sizeof buf62); - } - - - if ((tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray)) < 0) - goto out; - if (write_dset(loc_id, 2, dims2, "array2D", tid, buf62) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5T_INTEGER, write a fill value - *------------------------------------------------------------------------- - */ - - - if(make_diffs) { - HDmemset(buf72, 0, sizeof buf72); - HDmemset(buf82, 0, sizeof buf82); - } - - - if ((pid = H5Pcreate(H5P_DATASET_CREATE)) < 0) - goto out; - if ((sid = H5Screate_simple(2, dims2, NULL)) < 0) - goto out; - if ((did = H5Dcreate2(loc_id, "integer2D", H5T_NATIVE_INT, sid, H5P_DEFAULT, pid, H5P_DEFAULT)) < 0) - goto out; - if (H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf72) < 0) - goto out; - if (H5Pclose(pid) < 0) - goto out; - if (H5Dclose(did) < 0) - goto out; - if (H5Sclose(sid) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5T_FLOAT - *------------------------------------------------------------------------- - */ - - if (write_dset(loc_id,2,dims2,"float2D",H5T_NATIVE_FLOAT,buf82) < 0) - goto out; - - - /*------------------------------------------------------------------------- - * 3D - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - HDmemset(buf13,'z',sizeof buf13); - } - - if ((tid = H5Tcopy(H5T_C_S1)) < 0) - goto out; - if (H5Tset_size(tid, (size_t)2) < 0) - goto out; - if (write_dset(loc_id,3,dims3,"string3D",tid,buf13) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - - - n=1; - for(i = 0; i < 4; i++) { - for(j = 0; j < 3; j++) { - for(k = 0; k < 2; k++) { - if(make_diffs) - buf23[i][j][k] = 0; - else - buf23[i][j][k] = (char)(n++); - } - } - } - - - if ((tid = H5Tcopy(H5T_STD_B8LE)) < 0) - goto out; - if (write_dset(loc_id,3,dims3,"bitfield3D",tid,buf23) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - if ((tid = H5Tcreate(H5T_OPAQUE, (size_t)1)) < 0) - goto out; - if (H5Tset_tag(tid, "1-byte opaque type") < 0) - goto out; - if (write_dset(loc_id,3,dims3,"opaque3D",tid,buf23) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - - n=1; - for(i = 0; i < 4; i++) { - for(j = 0; j < 3; j++) { - for(k = 0; k < 2; k++) { - if(make_diffs) { - buf33[i][j][k].a = 0; - buf33[i][j][k].b = 0; - } - else { - buf33[i][j][k].a = (char)(n++); - buf33[i][j][k].b = n++; - } - } - } - } - - - if ((tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t))) < 0) - goto out; - if (H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR) < 0) - goto out; - if (H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE) < 0) - goto out; - if (write_dset(loc_id,3,dims3,"compound3D",tid,buf33) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5T_REFERENCE - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if (dset_name) - { - if (H5Rcreate(&buf43[0][0][0], file_id, dset_name, H5R_OBJECT, (hid_t)-1) < 0) - goto out; - if (write_dset(loc_id, 3, dims3r, "refobj3D", H5T_STD_REF_OBJ, buf43) < 0) - goto out; - } - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - - if ((tid = H5Tcreate(H5T_ENUM, sizeof(e_t))) < 0) - goto out; - if (H5Tenum_insert(tid, "RED", (val = 0, &val)) < 0) - goto out; - if (H5Tenum_insert(tid, "GREEN", (val = 1, &val)) < 0) - goto out; - if (write_dset(loc_id,3,dims3,"enum3D",tid,0) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - n = 0; - for(i = 0; i < 4; i++) { - for(j = 0; j < 3; j++) { - for(k = 0; k < 2; k++) { - unsigned l; - - buf53[i][j][k].p = HDmalloc((i + 1) * sizeof(int)); - buf53[i][j][k].len = (size_t)(i + 1); - for(l = 0; l < i + 1; l++) { - if(make_diffs) - ((int *)buf53[i][j][k].p)[l] = 0; - else - ((int *)buf53[i][j][k].p)[l] = n++; - } - } - } - } - - if ((sid = H5Screate_simple(3, dims3, NULL)) < 0) - goto out; - if ((tid = H5Tvlen_create(H5T_NATIVE_INT)) < 0) - goto out; - if ((did = H5Dcreate2(loc_id, "vlen3D", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if (H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf53) < 0) - goto out; - - if (H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf53) < 0) - goto out; - - if (H5Dclose(did) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - if (H5Sclose(sid) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - - - n = 1; - for(i = 0; i < 24; i++) { - for(j = 0; j < dimarray[0]; j++) { - if(make_diffs) - buf63[i][j] = 0; - else - buf63[i][j] = n++; - } - } - - if ((tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray)) < 0) - goto out; - if (write_dset(loc_id, 3, dims3, "array3D", tid, buf63) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - - /*------------------------------------------------------------------------- - * H5T_INTEGER and H5T_FLOAT - *------------------------------------------------------------------------- - */ - n=1; f=1; - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - for (k = 0; k < 2; k++) { - if (make_diffs) { - buf73[i][j][k]=0; - buf83[i][j][k]=0; - } - else { - buf73[i][j][k]=n++; - buf83[i][j][k]=f++; - } - } - } - } - if (write_dset(loc_id,3,dims3,"integer3D",H5T_NATIVE_INT,buf73) < 0) - goto out; - if (write_dset(loc_id,3,dims3,"float3D",H5T_NATIVE_FLOAT,buf83) < 0) - goto out; - - return 0; - -out: - H5E_BEGIN_TRY { - H5Pclose(pid); - H5Sclose(sid); - H5Dclose(did); - H5Tclose(tid); - } H5E_END_TRY; - return -1; -} - - - -/*------------------------------------------------------------------------- -* Function: make_dset_reg_ref -* -* Purpose: write dataset region references -* -*------------------------------------------------------------------------- -*/ - -#define SPACE1_RANK 1 -#define SPACE1_DIM1 1 -#define SPACE2_RANK 2 -#define SPACE2_DIM1 10 -#define SPACE2_DIM2 10 -static -int make_dset_reg_ref(hid_t loc_id) -{ - hid_t did1=-1; /* Dataset ID */ - hid_t did2=-1; /* Dereferenced dataset ID */ - hid_t sid1=-1; /* Dataspace ID #1 */ - hid_t sid2=-1; /* Dataspace ID #2 */ - hsize_t dims1[] = {SPACE1_DIM1}; - hsize_t dims2[] = {SPACE2_DIM1, SPACE2_DIM2}; - hsize_t start[SPACE2_RANK]; /* Starting location of hyperslab */ - hsize_t stride[SPACE2_RANK]; /* Stride of hyperslab */ - hsize_t count[SPACE2_RANK]; /* Element count of hyperslab */ - hsize_t block[SPACE2_RANK]; /* Block size of hyperslab */ - hdset_reg_ref_t *wbuf=NULL; /* buffer to write to disk */ - int *dwbuf=NULL; /* Buffer for writing numeric data to disk */ - int i; /* counting variables */ - int retval = -1; /* return value */ - - /* Allocate write & read buffers */ - wbuf = (hdset_reg_ref_t *)HDcalloc(sizeof(hdset_reg_ref_t), (size_t)SPACE1_DIM1); - dwbuf = (int *)HDmalloc(sizeof(int) * SPACE2_DIM1 * SPACE2_DIM2); - - /* Create dataspace for datasets */ - if ((sid2 = H5Screate_simple(SPACE2_RANK, dims2, NULL)) < 0) - goto out; - - /* Create a dataset */ - if ((did2 = H5Dcreate2(loc_id, "dsetreg", H5T_NATIVE_UCHAR, sid2, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - - for (i = 0; i < SPACE2_DIM1 * SPACE2_DIM2; i++) - dwbuf[i] = i * 3; - - /* Write selection to disk */ - if (H5Dwrite(did2, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dwbuf) < 0) - goto out; - - /* Create dataspace for the reference dataset */ - if ((sid1 = H5Screate_simple(SPACE1_RANK, dims1, NULL)) < 0) - goto out; - - /* Create a dataset */ - if ((did1 = H5Dcreate2(loc_id, "refreg", H5T_STD_REF_DSETREG, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - - /* Select 6x6 hyperslab for first reference */ - start[0] = 2; start[1] = 2; - stride[0] = 1; stride[1] = 1; - count[0] = 6; count[1] = 6; - block[0] = 1; block[1] = 1; - if (H5Sselect_hyperslab(sid2, H5S_SELECT_SET, start, stride, count, block) < 0) - goto out; - - - /* Store dataset region */ - if (H5Rcreate(&wbuf[0], loc_id, "dsetreg", H5R_DATASET_REGION, sid2) < 0) - goto out; - - /* Write selection to disk */ - if (H5Dwrite(did1,H5T_STD_REF_DSETREG,H5S_ALL,H5S_ALL,H5P_DEFAULT,wbuf) < 0) - goto out; - - /* Close all objects */ - if (H5Sclose(sid1) < 0) - goto out; - if (H5Dclose(did1) < 0) - goto out; - if (H5Sclose(sid2) < 0) - goto out; - if (H5Dclose(did2) < 0) - goto out; - - retval = 0; - -out: - if(wbuf) - HDfree(wbuf); - if(dwbuf) - HDfree(dwbuf); - - H5E_BEGIN_TRY - { - H5Sclose(sid1); - H5Sclose(sid2); - H5Dclose(did1); - H5Dclose(did2); - } H5E_END_TRY; - - return retval; -} - -/*------------------------------------------------------------------------- -* Function: write_attr_in -* -* Purpose: write attributes in LOC_ID (dataset, group, named datatype) -* -* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu -* -* Date: November 12, 2003 -* -*------------------------------------------------------------------------- -*/ - -static -int write_attr_in(hid_t loc_id, - const char* dset_name, /* for saving reference to dataset*/ - hid_t fid, /* for reference create */ - int make_diffs /* flag to modify data buffers */) -{ - /* Compound datatype */ - typedef struct s_t - { - char a; - double b; - } s_t; - - typedef enum - { - RED, - GREEN - } e_t; - - hid_t aid = -1; - hid_t sid = -1; - hid_t tid = -1; - int val, j, k, n; - unsigned i; - float f; - - /* create 1D attributes with dimension [2], 2 elements */ - hsize_t dims[1]={2}; - char buf1[2][3]= {"ab","de"}; /* string */ - char buf2[2]= {1,2}; /* bitfield, opaque */ - s_t buf3[2]= {{1,2},{3,4}}; /* compound */ - hobj_ref_t buf4[2]; /* reference */ - e_t buf45[2]= {RED,RED}; /* enum */ - hvl_t buf5[2]; /* vlen */ - hsize_t dimarray[1]={3}; /* array dimension */ - int buf6[2][3]= {{1,2,3},{4,5,6}}; /* array */ - int buf7[2]= {1,2}; /* integer */ - float buf8[2]= {1,2}; /* float */ - - /* create 2D attributes with dimension [3][2], 6 elements */ - hsize_t dims2[2]={3,2}; - char buf12[6][3]= {"ab","cd","ef","gh","ij","kl"}; /* string */ - char buf22[3][2]= {{1,2},{3,4},{5,6}}; /* bitfield, opaque */ - s_t buf32[6]= {{1,2},{3,4},{5,6},{7,8},{9,10},{11,12}}; /* compound */ - hobj_ref_t buf42[3][2]; /* reference */ - e_t buf452[3][2]; /* enum */ - hvl_t buf52[3][2]; /* vlen */ - int buf62[6][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15},{16,17,18}}; /* array */ - int buf72[3][2]= {{1,2},{3,4},{5,6}}; /* integer */ - float buf82[3][2]= {{1,2},{3,4},{5,6}}; /* float */ - - /* create 3D attributes with dimension [4][3][2], 24 elements */ - hsize_t dims3[3]={4,3,2}; - char buf13[24][3]= {"ab","cd","ef","gh","ij","kl","mn","pq", - "rs","tu","vw","xz","AB","CD","EF","GH", - "IJ","KL","MN","PQ","RS","TU","VW","XZ"}; /* string */ - char buf23[4][3][2]; /* bitfield, opaque */ - s_t buf33[4][3][2]; /* compound */ - hobj_ref_t buf43[4][3][2]; /* reference */ - e_t buf453[4][3][2]; /* enum */ - hvl_t buf53[4][3][2]; /* vlen */ - int buf63[24][3]; /* array */ - int buf73[4][3][2]; /* integer */ - float buf83[4][3][2]; /* float */ - - - /*------------------------------------------------------------------------- - * 1D attributes - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - for (j=0; j<2; j++) - { - buf1[i][j]='z'; - } - } - /* - buf1[2][2]= {"ab","de"}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - Attribute: and - position string of string of difference - ------------------------------------------------------------ - [ 0 ] a z - [ 0 ] b z - [ 1 ] d z - [ 1 ] e z - */ - if ((tid = H5Tcopy(H5T_C_S1)) < 0) - goto out; - if (H5Tset_size(tid, (size_t)2) < 0) - goto out; - if (make_attr(loc_id,1,dims,"string",tid,buf1) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - tid = -1; - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - buf2[i]=buf2[1]=0; - } - /* - buf2[2]= {1,2}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - Attribute: and - position bitfield of bitfield of difference - position opaque of opaque of difference - ------------------------------------------------------------ - [ 0 ] 1 0 1 - [ 1 ] 2 0 2 - */ - - if ((tid = H5Tcopy(H5T_STD_B8LE)) < 0) - goto out; - if (make_attr(loc_id,1,dims,"bitfield",tid,buf2) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - tid = -1; - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - - /* - buf2[2]= {1,2}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - Attribute: and - position opaque of opaque of difference - position opaque of opaque of difference - ------------------------------------------------------------ - [ 0 ] 1 0 1 - [ 1 ] 2 0 2 - */ - - if ((tid = H5Tcreate(H5T_OPAQUE, (size_t)1)) < 0) - goto out; - if (H5Tset_tag(tid, "1-byte opaque type") < 0) - goto out; - if (make_attr(loc_id,1,dims,"opaque",tid,buf2) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - tid = -1; - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - { - buf3[i].a=0; buf3[i].b=0; - } - } - - /* - buf3[2]= {{1,2},{3,4}}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - Attribute: and - position compound of compound of difference - ------------------------------------------------------------ - [ 0 ] 1 5 4 - [ 0 ] 2 5 3 - [ 1 ] 3 5 2 - [ 1 ] 4 5 1 - */ - - if ((tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t))) < 0) - goto out; - if (H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR) < 0) - goto out; - if (H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE) < 0) - goto out; - if (make_attr(loc_id,1,dims,"compound",tid,buf3) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - tid = -1; - - /*------------------------------------------------------------------------- - * H5T_REFERENCE - *------------------------------------------------------------------------- - */ - /* object references ( H5R_OBJECT */ - if (dset_name) - { - if (H5Rcreate(&buf4[0],fid,dset_name,H5R_OBJECT,(hid_t)-1) < 0) - goto out; - if (H5Rcreate(&buf4[1],fid,dset_name,H5R_OBJECT,(hid_t)-1) < 0) - goto out; - if (make_attr(loc_id,1,dims,"reference",H5T_STD_REF_OBJ,buf4) < 0) - goto out; - } - - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - if (make_diffs) - { - for (i=0; i<2; i++) - { - buf45[i]=GREEN; - } - } - /* - buf45[2]= {RED,RED}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - Attribute: and - position enum of enum of difference - ------------------------------------------------------------ - [ 0 ] RED GREEN - [ 1 ] RED GREEN - */ - if ((tid = H5Tcreate(H5T_ENUM, sizeof(e_t))) < 0) - goto out; - if (H5Tenum_insert(tid, "RED", (val = 0, &val)) < 0) - goto out; - if (H5Tenum_insert(tid, "GREEN", (val = 1, &val)) < 0) - goto out; - if (make_attr(loc_id,1,dims,"enum",tid,buf45) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - tid = -1; - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - - buf5[0].len = 1; - buf5[0].p = HDmalloc( 1 * sizeof(int)); - ((int *)buf5[0].p)[0]=1; - buf5[1].len = 2; - buf5[1].p = HDmalloc(2 * sizeof(int)); - ((int *)buf5[1].p)[0] = 2; - ((int *)buf5[1].p)[1] = 3; - - if(make_diffs) - { - ((int *)buf5[0].p)[0] = 0; - ((int *)buf5[1].p)[0] = 0; - ((int *)buf5[1].p)[1] = 0; - } - /* - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - position vlen of vlen of difference - ------------------------------------------------------------ - [ 0 ] 1 0 1 - [ 1 ] 2 0 2 - [ 1 ] 3 0 3 - */ - - if ((sid = H5Screate_simple(1, dims, NULL)) < 0) - goto out; - if ((tid = H5Tvlen_create(H5T_NATIVE_INT)) < 0) - goto out; - if ((aid = H5Acreate2(loc_id, "vlen", tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if (H5Awrite(aid, tid, buf5) < 0) - goto out; - if (H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf5) < 0) - goto out; - if (H5Aclose(aid) < 0) - goto out; - aid = -1; - if (H5Tclose(tid) < 0) - goto out; - tid = -1; - if (H5Sclose(sid) < 0) - goto out; - sid = -1; - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - for (j=0; j<3; j++) - { - buf6[i][j]=0; - } - } - /* - buf6[2][3]= {{1,2,3},{4,5,6}}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - Attribute: and - position array of array of difference - ------------------------------------------------------------ - [ 0 ] 1 0 1 - [ 0 ] 2 0 2 - [ 0 ] 3 0 3 - [ 1 ] 4 0 4 - [ 1 ] 5 0 5 - [ 1 ] 6 0 6 - */ - if ((tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray)) < 0) - goto out; - if (make_attr(loc_id, 1, dims, "array", tid, buf6) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - tid = -1; - - /*------------------------------------------------------------------------- - * H5T_INTEGER and H5T_FLOAT - *------------------------------------------------------------------------- - */ - - if(make_diffs) - { - for(i = 0; i < 2; i++) - { - buf7[i]=0; - buf8[i]=0; - } - } - - /* - buf7[2]= {1,2}; - buf8[2]= {1,2}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - position integer of integer of difference - ------------------------------------------------------------ - [ 0 ] 1 0 1 - [ 1 ] 2 0 2 - position float of float of difference - ------------------------------------------------------------ - [ 0 ] 1 0 1 - [ 1 ] 2 0 2 - */ - if (make_attr(loc_id,1,dims,"integer",H5T_NATIVE_INT,buf7) < 0) - goto out; - if (make_attr(loc_id,1,dims,"float",H5T_NATIVE_FLOAT,buf8) < 0) - goto out; - - - /*------------------------------------------------------------------------- - * 2D attributes - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - if (make_diffs) - { - HDmemset(buf12, 'z', sizeof buf12); - } - - /* - buf12[6][2]= {"ab","cd","ef","gh","ij","kl"}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Attribute: and - position string2D of string2D of difference - ------------------------------------------------------------ - [ 0 0 ] a z - [ 0 0 ] b z - [ 0 1 ] c z - [ 0 1 ] d z - [ 1 0 ] e z - [ 1 0 ] f z - [ 1 1 ] g z - [ 1 1 ] h z - [ 2 0 ] i z - [ 2 0 ] j z - [ 2 1 ] k z - [ 2 1 ] l z - */ - - if ((tid = H5Tcopy(H5T_C_S1)) < 0) - goto out; - if (H5Tset_size(tid, (size_t)2) < 0) - goto out; - if (make_attr(loc_id,2,dims2,"string2D",tid,buf12) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - tid = -1; - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - HDmemset(buf22,0,sizeof buf22); - } - - /* - buf22[3][2]= {{1,2},{3,4},{5,6}}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Attribute: and - position bitfield2D of bitfield2D of difference - ------------------------------------------------------------ - [ 0 0 ] 1 0 1 - [ 0 1 ] 2 0 2 - [ 1 0 ] 3 0 3 - [ 1 1 ] 4 0 4 - [ 2 0 ] 5 0 5 - [ 2 1 ] 6 0 6 - */ - - - if ((tid = H5Tcopy(H5T_STD_B8LE)) < 0) - goto out; - if (make_attr(loc_id,2,dims2,"bitfield2D",tid,buf22) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - tid = -1; - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - - /* - buf22[3][2]= {{1,2},{3,4},{5,6}}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Attribute: and - position opaque2D of opaque2D of difference - ------------------------------------------------------------ - [ 0 0 ] 1 0 1 - [ 0 1 ] 2 0 2 - [ 1 0 ] 3 0 3 - [ 1 1 ] 4 0 4 - [ 2 0 ] 5 0 5 - [ 2 1 ] 6 0 6 - */ - if ((tid = H5Tcreate(H5T_OPAQUE, (size_t)1)) < 0) - goto out; - if (H5Tset_tag(tid, "1-byte opaque type") < 0) - goto out; - if (make_attr(loc_id,2,dims2,"opaque2D",tid,buf22) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - tid = -1; - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - if (make_diffs) - { - HDmemset(buf32,0,sizeof buf32); - } - - /* - buf32[6]= {{1,2},{3,4},{5,6},{7,8},{9,10},{11,12}}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Attribute: and - position opaque2D of opaque2D of difference - ------------------------------------------------------------ - [ 0 0 ] 1 0 1 - [ 0 1 ] 2 0 2 - [ 1 0 ] 3 0 3 - [ 1 1 ] 4 0 4 - [ 2 0 ] 5 0 5 - [ 2 1 ] 6 0 6 - */ - - - if ((tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t))) < 0) - goto out; - if (H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR) < 0) - goto out; - if (H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE) < 0) - goto out; - if (make_attr(loc_id,2,dims2,"compound2D",tid,buf32) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - tid = -1; - - /*------------------------------------------------------------------------- - * H5T_REFERENCE - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if (dset_name) - { - for (i = 0; i < 3; i++) - { - for (j = 0; j < 2; j++) - { - if (H5Rcreate(&buf42[i][j],fid,dset_name,H5R_OBJECT,(hid_t)-1) < 0) - goto out; - } - } - if (make_attr(loc_id,2,dims2,"reference2D",H5T_STD_REF_OBJ,buf42) < 0) - goto out; - } - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - for (i=0; i<3; i++) - { - for (j=0; j<2; j++) - { - if (make_diffs) buf452[i][j]=GREEN; else buf452[i][j]=RED; - } - } - - /* - Attribute: and - position enum2D of enum2D of difference - ------------------------------------------------------------ - [ 0 0 ] RED GREEN - [ 0 1 ] RED GREEN - [ 1 0 ] RED GREEN - [ 1 1 ] RED GREEN - [ 2 0 ] RED GREEN - [ 2 1 ] RED GREEN - */ - - if ((tid = H5Tcreate(H5T_ENUM, sizeof(e_t))) < 0) - goto out; - if (H5Tenum_insert(tid, "RED", (val = 0, &val)) < 0) - goto out; - if (H5Tenum_insert(tid, "GREEN", (val = 1, &val)) < 0) - goto out; - if (make_attr(loc_id,2,dims2,"enum2D",tid,buf452) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - tid = -1; - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - n=0; - for(i = 0; i < 3; i++) { - for(j = 0; j < 2; j++) { - unsigned l; - - buf52[i][j].p = HDmalloc((i + 1) * sizeof(int)); - buf52[i][j].len = (size_t)(i + 1); - for(l = 0; l < i + 1; l++) - if(make_diffs) - ((int *)buf52[i][j].p)[l] = 0; - else - ((int *)buf52[i][j].p)[l] = n++; - } - } - - /* - position vlen2D of vlen2D of difference - ------------------------------------------------------------ - [ 0 1 ] 1 0 1 - [ 1 0 ] 2 0 2 - [ 1 0 ] 3 0 3 - [ 1 1 ] 4 0 4 - [ 1 1 ] 5 0 5 - [ 2 0 ] 6 0 6 - [ 2 0 ] 7 0 7 - [ 2 0 ] 8 0 8 - [ 2 1 ] 9 0 9 - [ 2 1 ] 10 0 10 - [ 2 1 ] 11 0 11 - */ - - if ((sid = H5Screate_simple(2, dims2, NULL)) < 0) - goto out; - if ((tid = H5Tvlen_create(H5T_NATIVE_INT)) < 0) - goto out; - if ((aid = H5Acreate2(loc_id, "vlen2D", tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if (H5Awrite(aid, tid, buf52) < 0) - goto out; - if (H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf52) < 0) - goto out; - if (H5Aclose(aid) < 0) - goto out; - aid = -1; - if (H5Tclose(tid) < 0) - goto out; - tid = -1; - if (H5Sclose(sid) < 0) - goto out; - sid = -1; - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - HDmemset(buf62,0,sizeof buf62); - } - /* - buf62[6][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15},{16,17,18}}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - Attribute: and - position array2D of array2D of difference - ------------------------------------------------------------ - [ 0 0 ] 1 0 1 - [ 0 0 ] 2 0 2 - [ 0 0 ] 3 0 3 - [ 0 1 ] 4 0 4 - [ 0 1 ] 5 0 5 - [ 0 1 ] 6 0 6 - [ 1 0 ] 7 0 7 - [ 1 0 ] 8 0 8 - [ 1 0 ] 9 0 9 - [ 1 1 ] 10 0 10 - [ 1 1 ] 11 0 11 - [ 1 1 ] 12 0 12 - [ 2 0 ] 13 0 13 - [ 2 0 ] 14 0 14 - [ 2 0 ] 15 0 15 - [ 2 1 ] 16 0 16 - [ 2 1 ] 17 0 17 - [ 2 1 ] 18 0 18 - */ - if ((tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray)) < 0) - goto out; - if (make_attr(loc_id, 2, dims2, "array2D", tid, buf62) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - tid = -1; - - /*------------------------------------------------------------------------- - * H5T_INTEGER and H5T_FLOAT - *------------------------------------------------------------------------- - */ - - if(make_diffs) - { - HDmemset(buf72, 0, sizeof buf72); - HDmemset(buf82, 0, sizeof buf82); - } - /* - Attribute: and - position integer2D of integer2D of difference - ------------------------------------------------------------ - [ 0 0 ] 1 0 1 - [ 0 1 ] 2 0 2 - [ 1 0 ] 3 0 3 - [ 1 1 ] 4 0 4 - [ 2 0 ] 5 0 5 - [ 2 1 ] 6 0 6 - 6 differences found - Attribute: and - position float2D of float2D of difference - ------------------------------------------------------------ - [ 0 0 ] 1 0 1 - [ 0 1 ] 2 0 2 - [ 1 0 ] 3 0 3 - [ 1 1 ] 4 0 4 - [ 2 0 ] 5 0 5 - [ 2 1 ] 6 0 6 - */ - - if (make_attr(loc_id,2,dims2,"integer2D",H5T_NATIVE_INT,buf72) < 0) - goto out; - if (make_attr(loc_id,2,dims2,"float2D",H5T_NATIVE_FLOAT,buf82) < 0) - goto out; - - - /*------------------------------------------------------------------------- - * 3D attributes - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - HDmemset(buf13,'z',sizeof buf13); - } - - /* - buf13[24][2]= {"ab","cd","ef","gh","ij","kl","mn","pq", - "rs","tu","vw","xz","AB","CD","EF","GH", - "IJ","KL","MN","PQ","RS","TU","VW","XZ"}; - - Attribute: and - position string3D of string3D of difference - ------------------------------------------------------------ - [ 0 0 0 ] a z - [ 0 0 0 ] b z - [ 0 0 1 ] c z - [ 0 0 1 ] d z - [ 0 1 0 ] e z - [ 0 1 0 ] f z - [ 0 1 1 ] g z - [ 0 1 1 ] h z - [ 0 2 0 ] i z - [ 0 2 0 ] j z - [ 0 2 1 ] k z - [ 0 2 1 ] l z - [ 1 0 0 ] m z - [ 1 0 0 ] n z - [ 1 0 1 ] p z - [ 1 0 1 ] q z - [ 1 1 0 ] r z - [ 1 1 0 ] s z - [ 1 1 1 ] t z - [ 1 1 1 ] u z - [ 1 2 0 ] v z - [ 1 2 0 ] w z - [ 1 2 1 ] x z - [ 2 0 0 ] A z - [ 2 0 0 ] B z - [ 2 0 1 ] C z - [ 2 0 1 ] D z - [ 2 1 0 ] E z - [ 2 1 0 ] F z - [ 2 1 1 ] G z - [ 2 1 1 ] H z - [ 2 2 0 ] I z - [ 2 2 0 ] J z - [ 2 2 1 ] K z - [ 2 2 1 ] L z - [ 3 0 0 ] M z - [ 3 0 0 ] N z - [ 3 0 1 ] P z - [ 3 0 1 ] Q z - [ 3 1 0 ] R z - [ 3 1 0 ] S z - [ 3 1 1 ] T z - [ 3 1 1 ] U z - [ 3 2 0 ] V z - [ 3 2 0 ] W z - [ 3 2 1 ] X z - [ 3 2 1 ] Z z - */ - - if ((tid = H5Tcopy(H5T_C_S1)) < 0) - goto out; - if (H5Tset_size(tid, (size_t)2) < 0) - goto out; - if (make_attr(loc_id,3,dims3,"string3D",tid,buf13) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - tid = -1; - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - - n=1; - for(i = 0; i < 4; i++) { - for(j = 0; j < 3; j++) { - for(k = 0; k < 2; k++) { - if(make_diffs) - buf23[i][j][k] = 0; - else - buf23[i][j][k] = (char)(n++); - } - } - } - - /* - position bitfield3D of bitfield3D of difference - ------------------------------------------------------------ - [ 0 0 0 ] 1 0 1 - [ 0 0 1 ] 2 0 2 - [ 0 1 0 ] 3 0 3 - [ 0 1 1 ] 4 0 4 - [ 0 2 0 ] 5 0 5 - [ 0 2 1 ] 6 0 6 - [ 1 0 0 ] 7 0 7 - [ 1 0 1 ] 8 0 8 - [ 1 1 0 ] 9 0 9 - [ 1 1 1 ] 10 0 10 - [ 1 2 0 ] 11 0 11 - [ 1 2 1 ] 12 0 12 - [ 2 0 0 ] 13 0 13 - [ 2 0 1 ] 14 0 14 - [ 2 1 0 ] 15 0 15 - [ 2 1 1 ] 16 0 16 - [ 2 2 0 ] 17 0 17 - [ 2 2 1 ] 18 0 18 - [ 3 0 0 ] 19 0 19 - [ 3 0 1 ] 20 0 20 - [ 3 1 0 ] 21 0 21 - [ 3 1 1 ] 22 0 22 - [ 3 2 0 ] 23 0 23 - [ 3 2 1 ] 24 0 24 - */ - - if ((tid = H5Tcopy(H5T_STD_B8LE)) < 0) - goto out; - if (make_attr(loc_id,3,dims3,"bitfield3D",tid,buf23) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - tid = -1; - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - if ((tid = H5Tcreate(H5T_OPAQUE, (size_t)1)) < 0) - goto out; - if (H5Tset_tag(tid, "1-byte opaque type") < 0) - goto out; - if (make_attr(loc_id,3,dims3,"opaque3D",tid,buf23) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - tid = -1; - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - - n=1; - for(i = 0; i < 4; i++) { - for(j = 0; j < 3; j++) { - for(k = 0; k < 2; k++) { - if(make_diffs) { - buf33[i][j][k].a = 0; - buf33[i][j][k].b = 0; - } - else { - buf33[i][j][k].a = (char)(n++); - buf33[i][j][k].b = n++; - } - } - } - } - /*position compound3D of compound3D of difference - ------------------------------------------------------------ - [ 0 0 0 ] 1 0 1 - [ 0 0 0 ] 2 0 2 - [ 0 0 1 ] 3 0 3 - [ 0 0 1 ] 4 0 4 - [ 0 1 0 ] 5 0 5 - [ 0 1 0 ] 6 0 6 - [ 0 1 1 ] 7 0 7 - [ 0 1 1 ] 8 0 8 - [ 0 2 0 ] 9 0 9 - [ 0 2 0 ] 10 0 10 - [ 0 2 1 ] 11 0 11 - [ 0 2 1 ] 12 0 12 - [ 1 0 0 ] 13 0 13 - [ 1 0 0 ] 14 0 14 - [ 1 0 1 ] 15 0 15 - [ 1 0 1 ] 16 0 16 - [ 1 1 0 ] 17 0 17 - [ 1 1 0 ] 18 0 18 - [ 1 1 1 ] 19 0 19 - [ 1 1 1 ] 20 0 20 - [ 1 2 0 ] 21 0 21 - [ 1 2 0 ] 22 0 22 - [ 1 2 1 ] 23 0 23 - [ 1 2 1 ] 24 0 24 - [ 2 0 0 ] 25 0 25 - [ 2 0 0 ] 26 0 26 - [ 2 0 1 ] 27 0 27 - [ 2 0 1 ] 28 0 28 - [ 2 1 0 ] 29 0 29 - [ 2 1 0 ] 30 0 30 - [ 2 1 1 ] 31 0 31 - [ 2 1 1 ] 32 0 32 - [ 2 2 0 ] 33 0 33 - [ 2 2 0 ] 34 0 34 - [ 2 2 1 ] 35 0 35 - [ 2 2 1 ] 36 0 36 - [ 3 0 0 ] 37 0 37 - [ 3 0 0 ] 38 0 38 - [ 3 0 1 ] 39 0 39 - [ 3 0 1 ] 40 0 40 - [ 3 1 0 ] 41 0 41 - [ 3 1 0 ] 42 0 42 - [ 3 1 1 ] 43 0 43 - [ 3 1 1 ] 44 0 44 - [ 3 2 0 ] 45 0 45 - [ 3 2 0 ] 46 0 46 - [ 3 2 1 ] 47 0 47 - [ 3 2 1 ] 48 0 48 - */ - - - - if ((tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t))) < 0) - goto out; - if (H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR) < 0) - goto out; - if (H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE) < 0) - goto out; - if (make_attr(loc_id,3,dims3,"compound3D",tid,buf33) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - tid = -1; - - /*------------------------------------------------------------------------- - * H5T_REFERENCE - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if (dset_name) - { - for (i = 0; i < 4; i++) - { - for (j = 0; j < 3; j++) - { - for (k = 0; k < 2; k++) - if (H5Rcreate(&buf43[i][j][k],fid,dset_name,H5R_OBJECT,(hid_t)-1) < 0) - goto out; - } - } - if (make_attr(loc_id,3,dims3,"reference3D",H5T_STD_REF_OBJ,buf43) < 0) - goto out; - } - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - - for (i = 0; i < 4; i++) - { - for (j = 0; j < 3; j++) - { - for (k = 0; k < 2; k++) - { - if (make_diffs) - { - buf453[i][j][k]=RED; - } - else - { - buf453[i][j][k]=GREEN; - } - } - } - } - - /* - position enum3D of enum3D of difference - ------------------------------------------------------------ - [ 0 0 0 ] GREEN RED - [ 0 0 1 ] GREEN RED - [ 0 1 0 ] GREEN RED - [ 0 1 1 ] GREEN RED - [ 0 2 0 ] GREEN RED - [ 0 2 1 ] GREEN RED - [ 1 0 0 ] GREEN RED - [ 1 0 1 ] GREEN RED - [ 1 1 0 ] GREEN RED - [ 1 1 1 ] GREEN RED - [ 1 2 0 ] GREEN RED - [ 1 2 1 ] GREEN RED - [ 2 0 0 ] GREEN RED - [ 2 0 1 ] GREEN RED - [ 2 1 0 ] GREEN RED - [ 2 1 1 ] GREEN RED - [ 2 2 0 ] GREEN RED - [ 2 2 1 ] GREEN RED - [ 3 0 0 ] GREEN RED - [ 3 0 1 ] GREEN RED - [ 3 1 0 ] GREEN RED - [ 3 1 1 ] GREEN RED - [ 3 2 0 ] GREEN RED - [ 3 2 1 ] GREEN RED - */ - - - if ((tid = H5Tcreate(H5T_ENUM, sizeof(e_t))) < 0) - goto out; - if (H5Tenum_insert(tid, "RED", (val = 0, &val)) < 0) - goto out; - if (H5Tenum_insert(tid, "GREEN", (val = 1, &val)) < 0) - goto out; - if (make_attr(loc_id,3,dims3,"enum3D",tid,buf453) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - tid = -1; - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - n=0; - for (i = 0; i < 4; i++) - { - for (j = 0; j < 3; j++) - { - for (k = 0; k < 2; k++) - { - unsigned l; - - buf53[i][j][k].p = HDmalloc((i + 1) * sizeof(int)); - buf53[i][j][k].len = (size_t)i + 1; - for (l = 0; l < i + 1; l++) - if (make_diffs) - ((int *)buf53[i][j][k].p)[l] = 0; - else - ((int *)buf53[i][j][k].p)[l] = n++; - } - } - } - /* - position vlen3D of vlen3D of difference - ------------------------------------------------------------ - [ 0 0 1 ] 1 0 1 - [ 0 1 0 ] 2 0 2 - [ 0 1 1 ] 3 0 3 - [ 0 2 0 ] 4 0 4 - [ 0 2 1 ] 5 0 5 - [ 1 0 0 ] 6 0 6 - [ 1 0 0 ] 7 0 7 - [ 1 0 1 ] 8 0 8 - [ 1 0 1 ] 9 0 9 - [ 1 1 0 ] 10 0 10 - etc - */ - if ((sid = H5Screate_simple(3, dims3, NULL)) < 0) - goto out; - if ((tid = H5Tvlen_create(H5T_NATIVE_INT)) < 0) - goto out; - if ((aid = H5Acreate2(loc_id, "vlen3D", tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if (H5Awrite(aid, tid, buf53) < 0) - goto out; - if (H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf53) < 0) - goto out; - if (H5Aclose(aid) < 0) - goto out; - aid = -1; - if (H5Tclose(tid) < 0) - goto out; - tid = -1; - if (H5Sclose(sid) < 0) - goto out; - sid = -1; - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - n=1; - for (i = 0; i < 24; i++) - { - for (j = 0; j < (int)dimarray[0]; j++) - { - if (make_diffs) buf63[i][j]=0; - else buf63[i][j]=n++; - } - } - /* - position array3D of array3D of difference - ------------------------------------------------------------ - [ 0 0 0 ] 1 0 1 - [ 0 0 0 ] 2 0 2 - [ 0 0 0 ] 3 0 3 - [ 0 0 1 ] 4 0 4 - [ 0 0 1 ] 5 0 5 - [ 0 0 1 ] 6 0 6 - [ 0 1 0 ] 7 0 7 - etc - */ - - if ((tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray)) < 0) - goto out; - if (make_attr(loc_id, 3, dims3, "array3D", tid, buf63) < 0) - goto out; - if (H5Tclose(tid) < 0) - goto out; - tid = -1; - - /*------------------------------------------------------------------------- - * H5T_INTEGER and H5T_FLOAT - *------------------------------------------------------------------------- - */ - n = 1; f = 1; - for(i = 0; i < 4; i++) - { - for(j = 0; j < 3; j++) - { - for(k = 0; k < 2; k++) - { - if(make_diffs) - { - buf73[i][j][k] = 0; - buf83[i][j][k] = 0; - } - else - { - buf73[i][j][k] = n++; - buf83[i][j][k] = f++; - } - } - } - } - - /* - position integer3D of integer3D of difference - ------------------------------------------------------------ - [ 0 0 0 ] 1 0 1 - [ 0 0 1 ] 2 0 2 - [ 0 1 0 ] 3 0 3 - [ 0 1 1 ] 4 0 4 - [ 0 2 0 ] 5 0 5 - [ 0 2 1 ] 6 0 6 - [ 1 0 0 ] 7 0 7 - [ 1 0 1 ] 8 0 8 - [ 1 1 0 ] 9 0 9 - [ 1 1 1 ] 10 0 10 - etc - */ - if (make_attr(loc_id,3,dims3,"integer3D",H5T_NATIVE_INT,buf73) < 0) - goto out; - if (make_attr(loc_id,3,dims3,"float3D",H5T_NATIVE_FLOAT,buf83) < 0) - goto out; - - - return 0; - -out: - H5E_BEGIN_TRY { - H5Aclose(aid); - H5Sclose(sid); - H5Tclose(tid); - } H5E_END_TRY; - return -1; -} - - - - -/*------------------------------------------------------------------------- -* Function: make_dset -* -* Purpose: utility function to create and write a dataset in LOC_ID -* -* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu -* -* Date: November 12, 2003 -* -*------------------------------------------------------------------------- -*/ -static -int make_dset(hid_t loc_id, - const char *name, - hid_t sid, - hid_t dcpl, - void *buf) -{ - hid_t did=-1; - - if ((did = H5Dcreate2(loc_id, name, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - return -1; - if (H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto out; - if (H5Dclose(did) < 0) - return -1; - return 0; - -out: - H5E_BEGIN_TRY { - H5Dclose(did); - } H5E_END_TRY; - return -1; -} - - -/*------------------------------------------------------------------------- -* Function: write_dset -* -* Purpose: utility function to create and write a dataset in LOC_ID -* -* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu -* -* Date: November 12, 2003 -* -*------------------------------------------------------------------------- -*/ -static -int write_dset( hid_t loc_id, - int rank, - hsize_t *dims, - const char *dset_name, - hid_t tid, - void *buf ) -{ - hid_t did=-1; - hid_t sid=-1; - - if ((sid = H5Screate_simple(rank, dims, NULL)) < 0) - return -1; - if ((did = H5Dcreate2(loc_id, dset_name, tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if (buf) - { - if(H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto out; - } - if (H5Dclose(did) < 0) - goto out; - if (H5Sclose(sid) < 0) - goto out; - - return 0; - -out: - H5E_BEGIN_TRY { - H5Dclose(did); - H5Sclose(sid); - } H5E_END_TRY; - return -1; -} - - - -/*------------------------------------------------------------------------- -* Function: make_attr -* -* Purpose: utility function to write an attribute in LOC_ID -* -* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu -* -* Date: November 12, 2003 -* -*------------------------------------------------------------------------- -*/ -static -int make_attr(hid_t loc_id, - int rank, - hsize_t *dims, - const char *attr_name, - hid_t tid, - void *buf) -{ - hid_t aid; - hid_t sid; - - if ((sid = H5Screate_simple(rank, dims, NULL)) < 0) - return -1; - if ((aid = H5Acreate2(loc_id, attr_name, tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if(buf) - { - if(H5Awrite(aid, tid, buf) < 0) - goto out; - } - if (H5Aclose(aid) < 0) - goto out; - if (H5Sclose(sid) < 0) - goto out; - return 0; - -out: - H5E_BEGIN_TRY { - H5Aclose(aid); - H5Sclose(sid); - } H5E_END_TRY; - return -1; -} - - -/*------------------------------------------------------------------------- -* Function: make_named_dtype -* -* Purpose: create a file with named datatypes in various configurations -* -*------------------------------------------------------------------------- -*/ -static -int make_named_dtype(hid_t loc_id) -{ - hsize_t dims[1] ={3}; - hid_t did=-1; - hid_t aid=-1; - hid_t sid=-1; - hid_t tid=-1; - hid_t gid=-1; - - if ((sid = H5Screate_simple(1, dims, NULL)) < 0) - goto out; - - /* Create a dataset with an anonymous committed datatype as the first thing - * h5repack sees */ - if((tid = H5Tcopy(H5T_STD_I16LE)) < 0) - goto out; - if(H5Tcommit_anon(loc_id, tid, H5P_DEFAULT, H5P_DEFAULT) < 0) - goto out; - if ((did = H5Dcreate2(loc_id, "A", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if(H5Tclose(tid) < 0) - goto out; - - /* Create an attribute on that dataset that uses a committed datatype in - * a remote group */ - if((gid = H5Gcreate2(loc_id, "M", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if(H5Gclose(gid) < 0) - goto out; - if((gid = H5Gcreate2(loc_id, "M/M", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if(H5Gclose(gid) < 0) - goto out; - if((tid = H5Tcopy(H5T_STD_I16BE)) < 0) - goto out; - if(H5Tcommit2(loc_id, "/M/M/A", tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT) < 0) - goto out; - if((aid = H5Acreate2(did, "A", tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if(H5Aclose(aid) < 0) - goto out; - if(H5Tclose(tid) < 0) - goto out; - if(H5Dclose(did) < 0) - goto out; - - /* Create a dataset in the remote group that uses a committed datatype in - * the root group */ - if((tid = H5Tcopy(H5T_STD_I32LE)) < 0) - goto out; - if(H5Tcommit2(loc_id, "N", tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT) < 0) - goto out; - if((did = H5Dcreate2(loc_id, "M/M/B", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if(H5Tclose(tid) < 0) - goto out; - - /* Create an attribute on the remote dataset that uses an anonymous - * committed datatype */ - if((tid = H5Tcopy(H5T_STD_I32BE)) < 0) - goto out; - if(H5Tcommit_anon(loc_id, tid, H5P_DEFAULT, H5P_DEFAULT) < 0) - goto out; - if((aid = H5Acreate2(did, "A", tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if(H5Aclose(aid) < 0) - goto out; - - /* Create another attribute that uses the same anonymous datatype */ - if((aid = H5Acreate2(did, "B", tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if(H5Aclose(aid) < 0) - goto out; - if(H5Tclose(tid) < 0) - goto out; - if(H5Dclose(did) < 0) - goto out; - - /* Create a dataset in the root group that uses the committed datatype in - * the root group */ - if((tid = H5Topen2(loc_id, "N", H5P_DEFAULT)) < 0) - goto out; - if((did = H5Dcreate2(loc_id, "O", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if(H5Dclose(did) < 0) - goto out; - - /* Create 2 attributes on the committed datatype that use that datatype */ - if((aid = H5Acreate2(tid, "A", tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if(H5Aclose(aid) < 0) - goto out; - if((aid = H5Acreate2(tid, "B", tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - if(H5Aclose(aid) < 0) - goto out; - if(H5Tclose(tid) < 0) - goto out; - - /* Close */ - if (H5Sclose(sid) < 0) - goto out; - - return 0; - -out: - H5E_BEGIN_TRY - { - H5Tclose(tid); - H5Aclose(aid); - H5Sclose(sid); - H5Dclose(did); - H5Gclose(gid); - } H5E_END_TRY; - return -1; -} /* end make_named_dtype() */ - -/*------------------------------------------------------------------------- - * Function: add_attr_with_objref - * - * Purpose: - * Create attributes with object reference to objects (dset, - * group, datatype). - * - * Note: - * this function depends on locally created objects, however can be modified - * to be independent as necessary - * - * Programmer: Jonathan Kim (March 23, 2010) - *------------------------------------------------------------------------*/ -static herr_t add_attr_with_objref(hid_t file_id, hid_t obj_id) -{ - int ret = SUCCEED; - int status; - /* attr obj ref */ - hsize_t dim_attr_objref[1]={3}; - hobj_ref_t data_attr_objref[3]; - - /* -------------------------------- - * add attribute with obj ref type - */ - /* ref to dset */ - status = H5Rcreate(&data_attr_objref[0],file_id,NAME_OBJ_DS1,H5R_OBJECT,(hid_t)-1); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* ref to group */ - status = H5Rcreate(&data_attr_objref[1],file_id,NAME_OBJ_GRP,H5R_OBJECT,(hid_t)-1); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* ref to datatype */ - status = H5Rcreate(&data_attr_objref[2],file_id,NAME_OBJ_NDTYPE,H5R_OBJECT,(hid_t)-1); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* create attr with obj ref type */ - status = make_attr(obj_id,1,dim_attr_objref,"Attr_OBJREF",H5T_STD_REF_OBJ,data_attr_objref); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> make_attr failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - -out: - - return ret; - -} - -/*------------------------------------------------------------------------- - * Function: add_attr_with_regref - * - * Purpose: - * Create attributes with region reference to dset - * - * Note: - * this function depends on locally created objects, however can be modified - * to be independent as necessary - * - * Programmer: Jonathan Kim (March 23, 2010) - *------------------------------------------------------------------------*/ -static herr_t add_attr_with_regref(hid_t file_id, hid_t obj_id) -{ - int ret = SUCCEED; - int status; - - /* attr region ref */ - hid_t sid_regrefed_dset=0; - hsize_t dim_regrefed_dset[2]={3,6}; - hsize_t coords_regrefed_dset[3][2] = {{0,1},{1,2},{2,3}}; - hsize_t dim_attr_regref[1]= {1}; /* dim of */ - hdset_reg_ref_t data_attr_regref[1]; - - - /* ----------------------------------- - * add attribute with region ref type - */ - sid_regrefed_dset = H5Screate_simple (2, dim_regrefed_dset, NULL); - if (sid_regrefed_dset < 0) - { - fprintf(stderr, "Error: %s %d> H5Screate_simple failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* select elements space for reference */ - status = H5Sselect_elements (sid_regrefed_dset, H5S_SELECT_SET, (size_t)3, coords_regrefed_dset[0]); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Sselect_elements failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* create region reference from elements space */ - status = H5Rcreate (&data_attr_regref[0], file_id, NAME_OBJ_DS2, H5R_DATASET_REGION, sid_regrefed_dset); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* create attr with region ref type */ - status = make_attr(obj_id,1,dim_attr_regref,"Attr_REGREF",H5T_STD_REF_DSETREG,data_attr_regref); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> make_attr failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - -out: - if (sid_regrefed_dset > 0) - H5Sclose (sid_regrefed_dset); - - return ret; - -} - -/*------------------------------------------------------------------------- - * Function: gen_refered_objs - * - * Purpose: - * Create objects (dataset, group, datatype) to be referenced - * - * Note: - * This function is to use along with gen_obj_ref() gen_region_ref() - * - * Programmer: Jonathan Kim (March 23, 2010) - *------------------------------------------------------------------------*/ -static herr_t gen_refered_objs(hid_t loc_id) -{ - int status; - herr_t ret = SUCCEED; - - /* objects (dset, group, datatype) */ - hid_t sid=0, did1=0, gid=0, tid=0; - hsize_t dims1[1]={3}; - int data[3] = {10,20,30}; - - /* Dset2 */ - hid_t sid2=0, did2=0; - hsize_t dims2[2] = {3,16}; - char data2[3][16] = {"The quick brown", "fox jumps over ", "the 5 lazy dogs"}; - - /*----------------------- - * add short dataset - * (define NAME_OBJ_DS1) - */ - sid = H5Screate_simple(1, dims1, NULL); - if (sid < 0) - { - fprintf(stderr, "Error: %s %d> H5Screate_simple failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - did1 = H5Dcreate2 (loc_id, NAME_OBJ_DS1, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (did1 < 0) - { - fprintf(stderr, "Error: %s %d> H5Dcreate2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - status = H5Dwrite(did1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Dwrite failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /*-------------- - * add group - * (define NAME_OBJ_GRP) - */ - gid = H5Gcreate2 (loc_id, NAME_OBJ_GRP, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid < 0) - { - fprintf(stderr, "Error: %s %d> H5Gcreate2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /*---------------------- - * add named datatype - * (define NAME_OBJ_NDTYPE) - */ - tid = H5Tcopy(H5T_NATIVE_INT); - status = H5Tcommit2(loc_id, NAME_OBJ_NDTYPE, tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Tcommit2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - - /*-------------------------- - * create long dataset - * (define NAME_OBJ_DS2) - */ - sid2 = H5Screate_simple (2, dims2, NULL); - if (sid2 < 0) - { - fprintf(stderr, "Error: %s %d> H5Screate_simple failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* create normal dataset which is refered */ - did2 = H5Dcreate2 (loc_id, NAME_OBJ_DS2, H5T_STD_I8LE, sid2, H5P_DEFAULT,H5P_DEFAULT,H5P_DEFAULT); - if (did2 < 0) - { - fprintf(stderr, "Error: %s %d> H5Dcreate2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* write values to dataset */ - status = H5Dwrite (did2, H5T_NATIVE_CHAR, H5S_ALL, H5S_ALL, H5P_DEFAULT, data2); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Dwrite failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - -out: - if(did1 > 0) - H5Dclose(did1); - if(gid > 0) - H5Gclose(gid); - if(tid > 0) - H5Tclose(tid); - if(sid > 0) - H5Sclose(sid); - - if(did2 > 0) - H5Dclose(did2); - if(sid2 > 0) - H5Sclose(sid2); - return ret; - -} - -/*------------------------------------------------------------------------- - * Function: gen_obj_ref - * - * Purpose: - * Generate object references to objects (dataset,group and named datatype) - * - * Note: - * copied from h5copygentest.c and upate to create named datatype - * - * Programmer: Jonathan Kim (March 18, 2010) - *------------------------------------------------------------------------*/ -static herr_t gen_obj_ref(hid_t loc_id) -{ - int status; - herr_t ret = SUCCEED; - - hid_t sid=0, oid=0; - hsize_t dims_dset_objref[1]={3}; - - /* attr with int type */ - hsize_t dim_attr_int[1]={2}; - int data_attr_int[2] = {10,20}; - - /* write buffer for obj reference */ - hobj_ref_t objref_buf[3]; - - /*--------------------------------------------------------- - * create obj references to the previously created objects. - * Passing -1 as reference is an object.*/ - - /* obj ref to dataset */ - status = H5Rcreate (&objref_buf[0], loc_id, NAME_OBJ_DS1, H5R_OBJECT, (hid_t)-1); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* obj ref to group */ - status = H5Rcreate (&objref_buf[1], loc_id, NAME_OBJ_GRP, H5R_OBJECT, (hid_t)-1); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* obj ref to named-datatype */ - status = H5Rcreate (&objref_buf[2], loc_id, NAME_OBJ_NDTYPE, H5R_OBJECT, (hid_t)-1); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /*--------------------------------------------------------- - * create dataset contain references - */ - sid = H5Screate_simple (1, dims_dset_objref, NULL); - if (sid < 0) - { - fprintf(stderr, "Error: %s %d> H5Screate_simple failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - oid = H5Dcreate2 (loc_id, "Dset_OBJREF", H5T_STD_REF_OBJ, sid, H5P_DEFAULT,H5P_DEFAULT,H5P_DEFAULT); - if (oid < 0) - { - fprintf(stderr, "Error: %s %d> H5Dcreate2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - status = H5Dwrite(oid, H5T_STD_REF_OBJ, H5S_ALL, H5S_ALL, H5P_DEFAULT, objref_buf); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Dwrite failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* add attribute with int type */ - if (make_attr(oid,1,dim_attr_int,"integer",H5T_NATIVE_INT,data_attr_int) < 0) - goto out; - - /* add attribute with obj ref */ - status = add_attr_with_objref(loc_id, oid); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> add_attr_with_objref failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* add attribute with region ref */ - status = add_attr_with_regref(loc_id, oid); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> add_attr_with_regref failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - -out: - if(oid > 0) - H5Dclose(oid); - if(sid > 0) - H5Sclose(sid); - - return ret; -} - - -/*------------------------------------------------------------------------- - * Function: gen_region_ref - * - * Purpose: Generate dataset region references - * - * Note: - * copied from h5copygentest.c - * - * Programmer: Jonathan Kim (March 18, 2010) - *------------------------------------------------------------------------*/ -static herr_t gen_region_ref(hid_t loc_id) -{ - int status; - herr_t ret = SUCCEED; - - /* target dataset */ - hid_t sid_trg=0; - hsize_t dims_trg[2] = {3,16}; - - /* dset with region ref type */ - hid_t sid_ref=0, oid_ref=0; - - /* region ref to target dataset */ - hsize_t coords[4][2] = { {0,1}, {2,11}, {1,0}, {2,4} }; - hdset_reg_ref_t rr_data[2]; - hsize_t start[2] = {0,0}; - hsize_t stride[2] = {2,11}; - hsize_t count[2] = {2,2}; - hsize_t block[2] = {1,3}; - hsize_t dims1[1] = {2}; - - /* attr with int type */ - hsize_t dim_attr_int[1]={2}; - int data_attr_int[2] = {10,20}; - - sid_trg = H5Screate_simple (2, dims_trg, NULL); - if (sid_trg < 0) - { - fprintf(stderr, "Error: %s %d> H5Screate_simple failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* select elements space for reference */ - status = H5Sselect_elements (sid_trg, H5S_SELECT_SET, (size_t)4, coords[0]); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Sselect_elements failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* create region reference from elements space */ - status = H5Rcreate (&rr_data[0], loc_id, NAME_OBJ_DS2, H5R_DATASET_REGION, sid_trg); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* select hyperslab space for reference */ - status = H5Sselect_hyperslab (sid_trg, H5S_SELECT_SET, start, stride, count, block); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Sselect_hyperslab failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* create region reference from hyperslab space */ - status = H5Rcreate (&rr_data[1], loc_id, NAME_OBJ_DS2, H5R_DATASET_REGION, sid_trg); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* Create dataspace. */ - sid_ref = H5Screate_simple (1, dims1, NULL); - if (sid_ref < 0) - { - fprintf(stderr, "Error: %s %d> H5Screate_simple failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* create region reference dataset */ - oid_ref = H5Dcreate2 (loc_id, REG_REF_DS1, H5T_STD_REF_DSETREG, sid_ref, H5P_DEFAULT,H5P_DEFAULT,H5P_DEFAULT); - if (oid_ref < 0) - { - fprintf(stderr, "Error: %s %d> H5Dcreate2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* write data as region references */ - status = H5Dwrite (oid_ref, H5T_STD_REF_DSETREG, H5S_ALL, H5S_ALL, H5P_DEFAULT, rr_data); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Dwrite failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* add attribute with int type */ - if (make_attr(oid_ref,1,dim_attr_int,"integer",H5T_NATIVE_INT,data_attr_int) < 0) - goto out; - - /* add attribute with obj ref */ - status = add_attr_with_objref(loc_id, oid_ref); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> add_attr_with_objref failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* add attribute with region ref */ - status = add_attr_with_regref(loc_id, oid_ref); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> add_attr_with_regref failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - -out: - if (oid_ref > 0) - H5Dclose (oid_ref); - if (sid_ref > 0) - H5Sclose (sid_ref); - if (sid_trg > 0) - H5Sclose (sid_trg); - - return ret; -} - -/*------------------------------------------------------------------------- -* Function: make_references -* -* Purpose: create a file with obj and region references -* -* Programmer: Jonathan Kim (March 18, 2010) -*------------------------------------------------------------------------- -*/ -static herr_t make_references(hid_t loc_id) -{ - herr_t ret = SUCCEED; - herr_t status; - - /* add target objects */ - status = gen_refered_objs(loc_id); - if (status == FAIL) - { - fprintf(stderr, "Failed to generate referenced object.\n"); - ret = FAIL; - } - - /* add object reference */ - status = gen_obj_ref(loc_id); - if (status == FAIL) - { - fprintf(stderr, "Failed to generate object reference.\n"); - ret = FAIL; - } - - /* add region reference */ - status = gen_region_ref(loc_id); - if (status == FAIL) - { - fprintf(stderr, "Failed to generate region reference.\n"); - ret = FAIL; - } - - return ret; -} - -/*------------------------------------------------------------------------- -* Function: make_complex_attr_references -* -* Purpose: -* create a file with : -* 1. obj ref in attribute of compound type -* 2. region ref in attribute of compound type -* 3. obj ref in attribute of vlen type -* 4. region ref in attribute of vlen type -* -* Programmer: Jonathan (March 25, 2010) -*------------------------------------------------------------------------- -*/ -/* obj dset */ -#define RANK_OBJ 2 -#define DIM0_OBJ 6 -#define DIM1_OBJ 10 -/* container dset */ -#define RANK_DSET 1 -#define DIM_DSET 4 -/* 1. obj references in compound attr */ -#define RANK_COMP_OBJREF 1 -#define DIM_COMP_OBJREF 3 /* for dataset, group, datatype */ -/* 2. region references in compound attr */ -#define RANK_COMP_REGREF 1 -#define DIM_COMP_REGREF 1 /* for element region */ -/* 3. obj references in vlen attr */ -#define RANK_VLEN_OBJREF 1 -#define DIM_VLEN_OBJREF 3 /* for dataset, group, datatype */ -#define LEN0_VLEN_OBJREF 1 /* dataset */ -#define LEN1_VLEN_OBJREF 1 /* group */ -#define LEN2_VLEN_OBJREF 1 /* datatype */ -/* 4. region references in vlen attr */ -#define RANK_VLEN_REGREF 1 -#define DIM_VLEN_REGREF 1 /* for element region */ -#define LEN0_VLEN_REGREF 1 /* element region */ - -static herr_t make_complex_attr_references(hid_t loc_id) -{ - herr_t ret = SUCCEED; - herr_t status; - /* - * for objects - */ - hid_t objgid=0, objdid=0, objtid=0, objsid=0; - hsize_t obj_dims[RANK_OBJ] = {DIM0_OBJ, DIM1_OBJ}; - int obj_data[DIM0_OBJ][DIM1_OBJ]= - {{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, - {10,11,12,13,14,15,16,17,18,19}, - {20,21,22,23,24,25,26,27,28,29}, - {30,31,32,33,34,35,36,37,38,39}, - {40,41,42,43,44,45,46,47,48,49}, - {50,51,52,53,54,55,56,57,58,59}}; - - /* - * group main - */ - hid_t main_gid=0; - /* - * dataset which the attribute will be attached to - */ - hsize_t main_dset_dims[RANK_DSET] = {DIM_DSET}; - hid_t main_sid=0, main_did=0; - /* - * 1. obj references in compound attr - */ - hid_t comp_objref_tid=0, comp_objref_aid=0; - typedef struct comp_objref_t { - hobj_ref_t val_objref; - int val_int; - } comp_objref_t; - comp_objref_t comp_objref_data[DIM_COMP_OBJREF]; - hid_t comp_objref_attr_sid=0; - hsize_t comp_objref_dim[RANK_COMP_OBJREF] = {DIM_COMP_OBJREF}; - - /* - * 2. region references in compound attr - */ - hid_t comp_regref_tid=0, comp_regref_aid=0; - typedef struct comp_regref_t { - hdset_reg_ref_t val_regref; - int val_int; - } comp_regref_t; - comp_regref_t comp_regref_data[DIM_COMP_REGREF]; - hid_t comp_regref_attr_sid=0; - hsize_t comp_regref_dim[RANK_COMP_REGREF] = {DIM_COMP_REGREF}; - hsize_t coords[4][2] = { {0,1}, {2,3}, {3,4}, {4,5} }; - - /* - * 3. obj references in vlen attr - */ - hid_t vlen_objref_attr_tid=0, vlen_objref_attr_sid=0; - hid_t vlen_objref_attr_id=0; - hvl_t vlen_objref_data[DIM_VLEN_OBJREF]; - hsize_t vlen_objref_dims[RANK_VLEN_OBJREF] = {DIM_VLEN_OBJREF}; - - /* - * 4. region references in vlen attr - */ - hid_t vlen_regref_attr_tid=0, vlen_regref_attr_sid=0; - hid_t vlen_regref_attr_id=0; - hvl_t vlen_regref_data[DIM_VLEN_REGREF]; - hsize_t vlen_regref_dim[RANK_VLEN_REGREF] = {DIM_VLEN_REGREF}; - - - /* --------------------------------------- - * create objects which to be referenced - */ - /* object1 group */ - objgid = H5Gcreate2(loc_id, NAME_OBJ_GRP, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* object2 dataset */ - objsid = H5Screate_simple(RANK_OBJ, obj_dims, NULL); - objdid = H5Dcreate2(loc_id, NAME_OBJ_DS1, H5T_NATIVE_INT, objsid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(objdid, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, obj_data[0]); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Dwrite failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* object3 named datatype */ - objtid = H5Tcopy(H5T_NATIVE_INT); - status = H5Tcommit2(loc_id, NAME_OBJ_NDTYPE, objtid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Tcommit2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - - /* --------------------------------------------- - * Put testing objs in this group - * create group contain dataset with attribute and the attribute has - * compound type which contain obj and region reference */ - main_gid = H5Gcreate2(loc_id, "group_main", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (main_gid < 0) - { - fprintf(stderr, "Error: %s %d> H5Gcreate2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /*---------------------------------------------------------- - * create dataset which the attribute will be attached to - */ - main_sid = H5Screate_simple(RANK_DSET, main_dset_dims, NULL); - - main_did = H5Dcreate2(main_gid, "dset_main", H5T_NATIVE_INT, main_sid, H5P_DEFAULT,H5P_DEFAULT, H5P_DEFAULT); - - status = H5Dwrite(main_did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, obj_data[0]); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Dwrite failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /*------------------------------------------------------------------- - * 1. create obj references in a attribute of compound type - */ - - /* - * create compound type for attribute - */ - comp_objref_tid = H5Tcreate (H5T_COMPOUND, sizeof(comp_objref_t)); - - H5Tinsert(comp_objref_tid, "value_objref", HOFFSET(comp_objref_t, val_objref), H5T_STD_REF_OBJ); - H5Tinsert(comp_objref_tid, "value_int", HOFFSET(comp_objref_t, val_int), H5T_NATIVE_INT); - - /* - * Create the object references into compound type - */ - /* references to dataset */ - status = H5Rcreate (&(comp_objref_data[0].val_objref), loc_id, NAME_OBJ_DS1, H5R_OBJECT,(hid_t)-1); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - comp_objref_data[0].val_int = 0; - - /* references to group */ - status = H5Rcreate (&(comp_objref_data[1].val_objref), loc_id, NAME_OBJ_GRP, H5R_OBJECT,(hid_t)-1); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - comp_objref_data[1].val_int = 10; - - /* references to datatype */ - status = H5Rcreate (&(comp_objref_data[2].val_objref), loc_id, NAME_OBJ_NDTYPE, H5R_OBJECT,(hid_t)-1); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - comp_objref_data[2].val_int = 20; - - /* - * create attribute and write the object ref - */ - comp_objref_attr_sid = H5Screate_simple (RANK_COMP_OBJREF, comp_objref_dim, NULL); - comp_objref_aid = H5Acreate2 (main_did, "Comp_OBJREF", comp_objref_tid, comp_objref_attr_sid, H5P_DEFAULT, H5P_DEFAULT); - status = H5Awrite (comp_objref_aid, comp_objref_tid, comp_objref_data); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Awrite failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /*------------------------------------------------------------------- - * 2. create region references in attribute of compound type - */ - /* - * create compound type for attribute - */ - comp_regref_tid = H5Tcreate (H5T_COMPOUND, sizeof(comp_regref_t)); - - H5Tinsert(comp_regref_tid, "value_regref", HOFFSET(comp_regref_t, val_regref), H5T_STD_REF_DSETREG); - H5Tinsert(comp_regref_tid, "value_int", HOFFSET(comp_regref_t, val_int), H5T_NATIVE_INT); - - /* - * create the region reference - */ - status = H5Sselect_elements (objsid, H5S_SELECT_SET, (size_t)4, coords[0]); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Sselect_elements failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - status = H5Rcreate (&(comp_regref_data[0].val_regref), loc_id, NAME_OBJ_DS1, H5R_DATASET_REGION, objsid); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - comp_regref_data[0].val_int = 10; - - /* - * create attribute and write the region ref - */ - comp_regref_attr_sid = H5Screate_simple (RANK_COMP_REGREF, comp_regref_dim, NULL); - comp_regref_aid = H5Acreate2 (main_did, "Comp_REGREF", comp_regref_tid, comp_regref_attr_sid, H5P_DEFAULT, H5P_DEFAULT); - status = H5Awrite (comp_regref_aid, comp_regref_tid, comp_regref_data); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Awrite failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - - /*------------------------------------------------------------------- - * 3. create obj references in attribute of vlen type - */ - /* - * prepare vlen data - */ - vlen_objref_data[0].len = LEN0_VLEN_OBJREF; - vlen_objref_data[0].p = HDmalloc (vlen_objref_data[0].len * sizeof(hobj_ref_t)); - vlen_objref_data[1].len = LEN1_VLEN_OBJREF; - vlen_objref_data[1].p = HDmalloc (vlen_objref_data[1].len * sizeof(hobj_ref_t)); - vlen_objref_data[2].len = LEN2_VLEN_OBJREF; - vlen_objref_data[2].p = HDmalloc (vlen_objref_data[2].len * sizeof(hobj_ref_t)); - - /* - * create obj references - */ - /* reference to dataset */ - status = H5Rcreate (&((hobj_ref_t*)vlen_objref_data[0].p)[0], loc_id, NAME_OBJ_DS1, H5R_OBJECT, (hid_t)-1); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - /* reference to group */ - status = H5Rcreate (&((hobj_ref_t*)vlen_objref_data[1].p)[0], loc_id, NAME_OBJ_GRP, H5R_OBJECT, (hid_t)-1); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - /* reference to datatype */ - status = H5Rcreate (&((hobj_ref_t*)vlen_objref_data[2].p)[0], loc_id, NAME_OBJ_NDTYPE, H5R_OBJECT, (hid_t)-1); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* - * create vlen type with obj reference - */ - vlen_objref_attr_tid = H5Tvlen_create (H5T_STD_REF_OBJ); - vlen_objref_attr_sid = H5Screate_simple (RANK_VLEN_OBJREF, vlen_objref_dims, NULL); - - /* - * create attribute and write the object reference - */ - vlen_objref_attr_id = H5Acreate2(main_did, "Vlen_OBJREF", vlen_objref_attr_tid, vlen_objref_attr_sid, H5P_DEFAULT, H5P_DEFAULT); - status = H5Awrite (vlen_objref_attr_id, vlen_objref_attr_tid, vlen_objref_data); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Awrite failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* close resource for vlen data */ - status = H5Dvlen_reclaim (vlen_objref_attr_tid, vlen_objref_attr_sid, H5P_DEFAULT, vlen_objref_data); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Dvlen_reclaim failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /*------------------------------------------------------------------- - * 4. create region references in a attribute of vlen type - */ - - /* - * prepare vlen data - */ - vlen_regref_data[0].len = LEN0_VLEN_REGREF; - vlen_regref_data[0].p = HDmalloc (vlen_regref_data[0].len * sizeof(hdset_reg_ref_t)); - - /* - * create region reference - */ - status = H5Sselect_elements(objsid, H5S_SELECT_SET, (size_t)4, coords[0]); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Sselect_elements failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - status = H5Rcreate (&((hdset_reg_ref_t*)vlen_regref_data[0].p)[0], loc_id, NAME_OBJ_DS1, H5R_DATASET_REGION, objsid); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* - * create vlen type with region reference - */ - vlen_regref_attr_tid = H5Tvlen_create(H5T_STD_REF_DSETREG); - vlen_regref_attr_sid = H5Screate_simple(RANK_VLEN_REGREF, vlen_regref_dim, NULL); - - /* - * create attribute and write the region reference - */ - vlen_regref_attr_id = H5Acreate2(main_did, "Vlen_REGREF", vlen_regref_attr_tid, vlen_regref_attr_sid, H5P_DEFAULT, H5P_DEFAULT); - status = H5Awrite(vlen_regref_attr_id, vlen_regref_attr_tid, vlen_regref_data); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Awrite failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* close resource for vlen data */ - status = H5Dvlen_reclaim (vlen_regref_attr_tid, vlen_regref_attr_sid, H5P_DEFAULT, vlen_regref_data); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Dvlen_reclaim failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - -out: - /* release resources */ - if (objgid > 0) - H5Gclose(objgid); - if (objsid > 0) - H5Sclose(objsid); - if (objdid > 0) - H5Dclose(objdid); - if (objtid > 0) - H5Tclose(objtid); - - if (main_gid > 0) - H5Gclose(main_gid); - if (main_sid > 0) - H5Sclose(main_sid); - if (main_did > 0) - H5Dclose(main_did); - /* comp obj ref */ - if (comp_objref_tid > 0) - H5Tclose(comp_objref_tid); - if (comp_objref_aid > 0) - H5Aclose(comp_objref_aid); - if (comp_objref_attr_sid > 0) - H5Sclose(comp_objref_attr_sid); - /* comp region ref */ - if (comp_regref_tid > 0) - H5Tclose(comp_regref_tid); - if (comp_regref_aid > 0) - H5Aclose(comp_regref_aid); - if (comp_regref_attr_sid > 0) - H5Sclose(comp_regref_attr_sid); - /* vlen obj ref */ - if (vlen_objref_attr_id > 0) - H5Aclose(vlen_objref_attr_id); - if (vlen_objref_attr_sid > 0) - H5Sclose(vlen_objref_attr_sid); - if (vlen_objref_attr_tid > 0) - H5Tclose(vlen_objref_attr_tid); - /* vlen region ref */ - if (vlen_regref_attr_id > 0) - H5Aclose(vlen_regref_attr_id); - if (vlen_regref_attr_sid > 0) - H5Sclose(vlen_regref_attr_sid); - if (vlen_regref_attr_tid > 0) - H5Tclose(vlen_regref_attr_tid); - - return ret; -} diff --git a/tools/h5repack/testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.ddl b/tools/h5repack/testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.ddl deleted file mode 100644 index fab9494..0000000 --- a/tools/h5repack/testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.ddl +++ /dev/null @@ -1,112 +0,0 @@ -HDF5 "out-vds_dset_chunk20x10x5.1_vds.h5" { -DATASET "vds_dset" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 5, 18, 8 ) / ( H5S_UNLIMITED, 18, 8 ) } - STORAGE_LAYOUT { - CHUNKED ( 20, 10, 5 ) - SIZE 16000 - } - FILTERS { - NONE - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE -9 - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - DATA { - (0,0,0): 10, 10, 10, 10, 10, 10, 10, 10, - (0,1,0): 10, 10, 10, 10, 10, 10, 10, 10, - (0,2,0): 20, 20, 20, 20, 20, 20, 20, 20, - (0,3,0): 20, 20, 20, 20, 20, 20, 20, 20, - (0,4,0): 20, 20, 20, 20, 20, 20, 20, 20, - (0,5,0): 20, 20, 20, 20, 20, 20, 20, 20, - (0,6,0): 30, 30, 30, 30, 30, 30, 30, 30, - (0,7,0): 30, 30, 30, 30, 30, 30, 30, 30, - (0,8,0): 40, 40, 40, 40, 40, 40, 40, 40, - (0,9,0): 40, 40, 40, 40, 40, 40, 40, 40, - (0,10,0): 40, 40, 40, 40, 40, 40, 40, 40, - (0,11,0): 40, 40, 40, 40, 40, 40, 40, 40, - (0,12,0): 50, 50, 50, 50, 50, 50, 50, 50, - (0,13,0): 50, 50, 50, 50, 50, 50, 50, 50, - (0,14,0): 60, 60, 60, 60, 60, 60, 60, 60, - (0,15,0): 60, 60, 60, 60, 60, 60, 60, 60, - (0,16,0): 60, 60, 60, 60, 60, 60, 60, 60, - (0,17,0): 60, 60, 60, 60, 60, 60, 60, 60, - (1,0,0): 11, 11, 11, 11, 11, 11, 11, 11, - (1,1,0): 11, 11, 11, 11, 11, 11, 11, 11, - (1,2,0): 21, 21, 21, 21, 21, 21, 21, 21, - (1,3,0): 21, 21, 21, 21, 21, 21, 21, 21, - (1,4,0): 21, 21, 21, 21, 21, 21, 21, 21, - (1,5,0): 21, 21, 21, 21, 21, 21, 21, 21, - (1,6,0): 31, 31, 31, 31, 31, 31, 31, 31, - (1,7,0): 31, 31, 31, 31, 31, 31, 31, 31, - (1,8,0): 41, 41, 41, 41, 41, 41, 41, 41, - (1,9,0): 41, 41, 41, 41, 41, 41, 41, 41, - (1,10,0): 41, 41, 41, 41, 41, 41, 41, 41, - (1,11,0): 41, 41, 41, 41, 41, 41, 41, 41, - (1,12,0): 51, 51, 51, 51, 51, 51, 51, 51, - (1,13,0): 51, 51, 51, 51, 51, 51, 51, 51, - (1,14,0): 61, 61, 61, 61, 61, 61, 61, 61, - (1,15,0): 61, 61, 61, 61, 61, 61, 61, 61, - (1,16,0): 61, 61, 61, 61, 61, 61, 61, 61, - (1,17,0): 61, 61, 61, 61, 61, 61, 61, 61, - (2,0,0): 12, 12, 12, 12, 12, 12, 12, 12, - (2,1,0): 12, 12, 12, 12, 12, 12, 12, 12, - (2,2,0): 22, 22, 22, 22, 22, 22, 22, 22, - (2,3,0): 22, 22, 22, 22, 22, 22, 22, 22, - (2,4,0): 22, 22, 22, 22, 22, 22, 22, 22, - (2,5,0): 22, 22, 22, 22, 22, 22, 22, 22, - (2,6,0): 32, 32, 32, 32, 32, 32, 32, 32, - (2,7,0): 32, 32, 32, 32, 32, 32, 32, 32, - (2,8,0): 42, 42, 42, 42, 42, 42, 42, 42, - (2,9,0): 42, 42, 42, 42, 42, 42, 42, 42, - (2,10,0): 42, 42, 42, 42, 42, 42, 42, 42, - (2,11,0): 42, 42, 42, 42, 42, 42, 42, 42, - (2,12,0): 52, 52, 52, 52, 52, 52, 52, 52, - (2,13,0): 52, 52, 52, 52, 52, 52, 52, 52, - (2,14,0): 62, 62, 62, 62, 62, 62, 62, 62, - (2,15,0): 62, 62, 62, 62, 62, 62, 62, 62, - (2,16,0): 62, 62, 62, 62, 62, 62, 62, 62, - (2,17,0): 62, 62, 62, 62, 62, 62, 62, 62, - (3,0,0): 13, 13, 13, 13, 13, 13, 13, 13, - (3,1,0): 13, 13, 13, 13, 13, 13, 13, 13, - (3,2,0): 23, 23, 23, 23, 23, 23, 23, 23, - (3,3,0): 23, 23, 23, 23, 23, 23, 23, 23, - (3,4,0): 23, 23, 23, 23, 23, 23, 23, 23, - (3,5,0): 23, 23, 23, 23, 23, 23, 23, 23, - (3,6,0): 33, 33, 33, 33, 33, 33, 33, 33, - (3,7,0): 33, 33, 33, 33, 33, 33, 33, 33, - (3,8,0): 43, 43, 43, 43, 43, 43, 43, 43, - (3,9,0): 43, 43, 43, 43, 43, 43, 43, 43, - (3,10,0): 43, 43, 43, 43, 43, 43, 43, 43, - (3,11,0): 43, 43, 43, 43, 43, 43, 43, 43, - (3,12,0): 53, 53, 53, 53, 53, 53, 53, 53, - (3,13,0): 53, 53, 53, 53, 53, 53, 53, 53, - (3,14,0): 63, 63, 63, 63, 63, 63, 63, 63, - (3,15,0): 63, 63, 63, 63, 63, 63, 63, 63, - (3,16,0): 63, 63, 63, 63, 63, 63, 63, 63, - (3,17,0): 63, 63, 63, 63, 63, 63, 63, 63, - (4,0,0): 14, 14, 14, 14, 14, 14, 14, 14, - (4,1,0): 14, 14, 14, 14, 14, 14, 14, 14, - (4,2,0): 24, 24, 24, 24, 24, 24, 24, 24, - (4,3,0): 24, 24, 24, 24, 24, 24, 24, 24, - (4,4,0): 24, 24, 24, 24, 24, 24, 24, 24, - (4,5,0): 24, 24, 24, 24, 24, 24, 24, 24, - (4,6,0): 34, 34, 34, 34, 34, 34, 34, 34, - (4,7,0): 34, 34, 34, 34, 34, 34, 34, 34, - (4,8,0): 44, 44, 44, 44, 44, 44, 44, 44, - (4,9,0): 44, 44, 44, 44, 44, 44, 44, 44, - (4,10,0): 44, 44, 44, 44, 44, 44, 44, 44, - (4,11,0): 44, 44, 44, 44, 44, 44, 44, 44, - (4,12,0): 54, 54, 54, 54, 54, 54, 54, 54, - (4,13,0): 54, 54, 54, 54, 54, 54, 54, 54, - (4,14,0): 64, 64, 64, 64, 64, 64, 64, 64, - (4,15,0): 64, 64, 64, 64, 64, 64, 64, 64, - (4,16,0): 64, 64, 64, 64, 64, 64, 64, 64, - (4,17,0): 64, 64, 64, 64, 64, 64, 64, 64 - } -} -} diff --git a/tools/h5repack/testfiles/2_vds.h5-vds_chunk3x6x9-v.ddl b/tools/h5repack/testfiles/2_vds.h5-vds_chunk3x6x9-v.ddl deleted file mode 100644 index 51df9dd..0000000 --- a/tools/h5repack/testfiles/2_vds.h5-vds_chunk3x6x9-v.ddl +++ /dev/null @@ -1,70 +0,0 @@ -HDF5 "out-vds_chunk3x6x9.2_vds.h5" { -DATASET "vds_dset" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 6, 8, 14 ) / ( H5S_UNLIMITED, 8, 14 ) } - STORAGE_LAYOUT { - CHUNKED ( 3, 6, 9 ) - SIZE 5184 - } - FILTERS { - NONE - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE -9 - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - DATA { - (0,0,0): 10, 10, 10, 10, 10, 10, 10, 40, 40, 40, 40, 40, 40, 40, - (0,1,0): 10, 10, 10, 10, 10, 10, 10, 40, 40, 40, 40, 40, 40, 40, - (0,2,0): 20, 20, 20, 20, 20, 20, 20, 40, 40, 40, 40, 40, 40, 40, - (0,3,0): 20, 20, 20, 20, 20, 20, 20, 40, 40, 40, 40, 40, 40, 40, - (0,4,0): 20, 20, 20, 20, 20, 20, 20, 40, 40, 40, 40, 40, 40, 40, - (0,5,0): 20, 20, 20, 20, 20, 20, 20, 50, 50, 50, 50, 50, 50, 50, - (0,6,0): 30, 30, 30, 30, 30, 30, 30, 50, 50, 50, 50, 50, 50, 50, - (0,7,0): 30, 30, 30, 30, 30, 30, 30, 50, 50, 50, 50, 50, 50, 50, - (1,0,0): 11, 11, 11, 11, 11, 11, 11, 41, 41, 41, 41, 41, 41, 41, - (1,1,0): 11, 11, 11, 11, 11, 11, 11, 41, 41, 41, 41, 41, 41, 41, - (1,2,0): 21, 21, 21, 21, 21, 21, 21, 41, 41, 41, 41, 41, 41, 41, - (1,3,0): 21, 21, 21, 21, 21, 21, 21, 41, 41, 41, 41, 41, 41, 41, - (1,4,0): 21, 21, 21, 21, 21, 21, 21, 41, 41, 41, 41, 41, 41, 41, - (1,5,0): 21, 21, 21, 21, 21, 21, 21, 51, 51, 51, 51, 51, 51, 51, - (1,6,0): 31, 31, 31, 31, 31, 31, 31, 51, 51, 51, 51, 51, 51, 51, - (1,7,0): 31, 31, 31, 31, 31, 31, 31, 51, 51, 51, 51, 51, 51, 51, - (2,0,0): 12, 12, 12, 12, 12, 12, 12, 42, 42, 42, 42, 42, 42, 42, - (2,1,0): 12, 12, 12, 12, 12, 12, 12, 42, 42, 42, 42, 42, 42, 42, - (2,2,0): 22, 22, 22, 22, 22, 22, 22, 42, 42, 42, 42, 42, 42, 42, - (2,3,0): 22, 22, 22, 22, 22, 22, 22, 42, 42, 42, 42, 42, 42, 42, - (2,4,0): 22, 22, 22, 22, 22, 22, 22, 42, 42, 42, 42, 42, 42, 42, - (2,5,0): 22, 22, 22, 22, 22, 22, 22, 52, 52, 52, 52, 52, 52, 52, - (2,6,0): 32, 32, 32, 32, 32, 32, 32, 52, 52, 52, 52, 52, 52, 52, - (2,7,0): 32, 32, 32, 32, 32, 32, 32, 52, 52, 52, 52, 52, 52, 52, - (3,0,0): 13, 13, 13, 13, 13, 13, 13, 43, 43, 43, 43, 43, 43, 43, - (3,1,0): 13, 13, 13, 13, 13, 13, 13, 43, 43, 43, 43, 43, 43, 43, - (3,2,0): 23, 23, 23, 23, 23, 23, 23, 43, 43, 43, 43, 43, 43, 43, - (3,3,0): 23, 23, 23, 23, 23, 23, 23, 43, 43, 43, 43, 43, 43, 43, - (3,4,0): 23, 23, 23, 23, 23, 23, 23, 43, 43, 43, 43, 43, 43, 43, - (3,5,0): 23, 23, 23, 23, 23, 23, 23, 53, 53, 53, 53, 53, 53, 53, - (3,6,0): 33, 33, 33, 33, 33, 33, 33, 53, 53, 53, 53, 53, 53, 53, - (3,7,0): 33, 33, 33, 33, 33, 33, 33, 53, 53, 53, 53, 53, 53, 53, - (4,0,0): 14, 14, 14, 14, 14, 14, 14, 44, 44, 44, 44, 44, 44, 44, - (4,1,0): 14, 14, 14, 14, 14, 14, 14, 44, 44, 44, 44, 44, 44, 44, - (4,2,0): 24, 24, 24, 24, 24, 24, 24, 44, 44, 44, 44, 44, 44, 44, - (4,3,0): 24, 24, 24, 24, 24, 24, 24, 44, 44, 44, 44, 44, 44, 44, - (4,4,0): 24, 24, 24, 24, 24, 24, 24, 44, 44, 44, 44, 44, 44, 44, - (4,5,0): 24, 24, 24, 24, 24, 24, 24, 54, 54, 54, 54, 54, 54, 54, - (4,6,0): 34, 34, 34, 34, 34, 34, 34, 54, 54, 54, 54, 54, 54, 54, - (4,7,0): 34, 34, 34, 34, 34, 34, 34, 54, 54, 54, 54, 54, 54, 54, - (5,0,0): 15, 15, 15, 15, 15, 15, 15, 45, 45, 45, 45, 45, 45, 45, - (5,1,0): 15, 15, 15, 15, 15, 15, 15, 45, 45, 45, 45, 45, 45, 45, - (5,2,0): 25, 25, 25, 25, 25, 25, 25, 45, 45, 45, 45, 45, 45, 45, - (5,3,0): 25, 25, 25, 25, 25, 25, 25, 45, 45, 45, 45, 45, 45, 45, - (5,4,0): 25, 25, 25, 25, 25, 25, 25, 45, 45, 45, 45, 45, 45, 45, - (5,5,0): 25, 25, 25, 25, 25, 25, 25, 55, 55, 55, 55, 55, 55, 55, - (5,6,0): 35, 35, 35, 35, 35, 35, 35, 55, 55, 55, 55, 55, 55, 55, - (5,7,0): 35, 35, 35, 35, 35, 35, 35, 55, 55, 55, 55, 55, 55, 55 - } -} -} diff --git a/tools/h5repack/testfiles/3_1_vds.h5-vds_chunk2x5x8-v.ddl b/tools/h5repack/testfiles/3_1_vds.h5-vds_chunk2x5x8-v.ddl deleted file mode 100644 index dcd172c..0000000 --- a/tools/h5repack/testfiles/3_1_vds.h5-vds_chunk2x5x8-v.ddl +++ /dev/null @@ -1,147 +0,0 @@ -HDF5 "out-vds_chunk2x5x8.3_1_vds.h5" { -DATASET "vds_dset" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 5, 25, 8 ) / ( H5S_UNLIMITED, 25, 8 ) } - STORAGE_LAYOUT { - CHUNKED ( 2, 5, 8 ) - SIZE 4800 - } - FILTERS { - NONE - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE -9 - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - DATA { - (0,0,0): -9, -9, -9, -9, -9, -9, -9, -9, - (0,1,0): 10, 10, 10, 10, 10, 10, 10, 10, - (0,2,0): 10, 10, 10, 10, 10, 10, 10, 10, - (0,3,0): -9, -9, -9, -9, -9, -9, -9, -9, - (0,4,0): 20, 20, 20, 20, 20, 20, 20, 20, - (0,5,0): 20, 20, 20, 20, 20, 20, 20, 20, - (0,6,0): 20, 20, 20, 20, 20, 20, 20, 20, - (0,7,0): 20, 20, 20, 20, 20, 20, 20, 20, - (0,8,0): -9, -9, -9, -9, -9, -9, -9, -9, - (0,9,0): 30, 30, 30, 30, 30, 30, 30, 30, - (0,10,0): 30, 30, 30, 30, 30, 30, 30, 30, - (0,11,0): -9, -9, -9, -9, -9, -9, -9, -9, - (0,12,0): 40, 40, 40, 40, 40, 40, 40, 40, - (0,13,0): 40, 40, 40, 40, 40, 40, 40, 40, - (0,14,0): 40, 40, 40, 40, 40, 40, 40, 40, - (0,15,0): 40, 40, 40, 40, 40, 40, 40, 40, - (0,16,0): -9, -9, -9, -9, -9, -9, -9, -9, - (0,17,0): 50, 50, 50, 50, 50, 50, 50, 50, - (0,18,0): 50, 50, 50, 50, 50, 50, 50, 50, - (0,19,0): -9, -9, -9, -9, -9, -9, -9, -9, - (0,20,0): 60, 60, 60, 60, 60, 60, 60, 60, - (0,21,0): 60, 60, 60, 60, 60, 60, 60, 60, - (0,22,0): 60, 60, 60, 60, 60, 60, 60, 60, - (0,23,0): 60, 60, 60, 60, 60, 60, 60, 60, - (0,24,0): -9, -9, -9, -9, -9, -9, -9, -9, - (1,0,0): -9, -9, -9, -9, -9, -9, -9, -9, - (1,1,0): 11, 11, 11, 11, 11, 11, 11, 11, - (1,2,0): 11, 11, 11, 11, 11, 11, 11, 11, - (1,3,0): -9, -9, -9, -9, -9, -9, -9, -9, - (1,4,0): 21, 21, 21, 21, 21, 21, 21, 21, - (1,5,0): 21, 21, 21, 21, 21, 21, 21, 21, - (1,6,0): 21, 21, 21, 21, 21, 21, 21, 21, - (1,7,0): 21, 21, 21, 21, 21, 21, 21, 21, - (1,8,0): -9, -9, -9, -9, -9, -9, -9, -9, - (1,9,0): 31, 31, 31, 31, 31, 31, 31, 31, - (1,10,0): 31, 31, 31, 31, 31, 31, 31, 31, - (1,11,0): -9, -9, -9, -9, -9, -9, -9, -9, - (1,12,0): 41, 41, 41, 41, 41, 41, 41, 41, - (1,13,0): 41, 41, 41, 41, 41, 41, 41, 41, - (1,14,0): 41, 41, 41, 41, 41, 41, 41, 41, - (1,15,0): 41, 41, 41, 41, 41, 41, 41, 41, - (1,16,0): -9, -9, -9, -9, -9, -9, -9, -9, - (1,17,0): 51, 51, 51, 51, 51, 51, 51, 51, - (1,18,0): 51, 51, 51, 51, 51, 51, 51, 51, - (1,19,0): -9, -9, -9, -9, -9, -9, -9, -9, - (1,20,0): 61, 61, 61, 61, 61, 61, 61, 61, - (1,21,0): 61, 61, 61, 61, 61, 61, 61, 61, - (1,22,0): 61, 61, 61, 61, 61, 61, 61, 61, - (1,23,0): 61, 61, 61, 61, 61, 61, 61, 61, - (1,24,0): -9, -9, -9, -9, -9, -9, -9, -9, - (2,0,0): -9, -9, -9, -9, -9, -9, -9, -9, - (2,1,0): 12, 12, 12, 12, 12, 12, 12, 12, - (2,2,0): 12, 12, 12, 12, 12, 12, 12, 12, - (2,3,0): -9, -9, -9, -9, -9, -9, -9, -9, - (2,4,0): 22, 22, 22, 22, 22, 22, 22, 22, - (2,5,0): 22, 22, 22, 22, 22, 22, 22, 22, - (2,6,0): 22, 22, 22, 22, 22, 22, 22, 22, - (2,7,0): 22, 22, 22, 22, 22, 22, 22, 22, - (2,8,0): -9, -9, -9, -9, -9, -9, -9, -9, - (2,9,0): 32, 32, 32, 32, 32, 32, 32, 32, - (2,10,0): 32, 32, 32, 32, 32, 32, 32, 32, - (2,11,0): -9, -9, -9, -9, -9, -9, -9, -9, - (2,12,0): 42, 42, 42, 42, 42, 42, 42, 42, - (2,13,0): 42, 42, 42, 42, 42, 42, 42, 42, - (2,14,0): 42, 42, 42, 42, 42, 42, 42, 42, - (2,15,0): 42, 42, 42, 42, 42, 42, 42, 42, - (2,16,0): -9, -9, -9, -9, -9, -9, -9, -9, - (2,17,0): 52, 52, 52, 52, 52, 52, 52, 52, - (2,18,0): 52, 52, 52, 52, 52, 52, 52, 52, - (2,19,0): -9, -9, -9, -9, -9, -9, -9, -9, - (2,20,0): 62, 62, 62, 62, 62, 62, 62, 62, - (2,21,0): 62, 62, 62, 62, 62, 62, 62, 62, - (2,22,0): 62, 62, 62, 62, 62, 62, 62, 62, - (2,23,0): 62, 62, 62, 62, 62, 62, 62, 62, - (2,24,0): -9, -9, -9, -9, -9, -9, -9, -9, - (3,0,0): -9, -9, -9, -9, -9, -9, -9, -9, - (3,1,0): 13, 13, 13, 13, 13, 13, 13, 13, - (3,2,0): 13, 13, 13, 13, 13, 13, 13, 13, - (3,3,0): -9, -9, -9, -9, -9, -9, -9, -9, - (3,4,0): 23, 23, 23, 23, 23, 23, 23, 23, - (3,5,0): 23, 23, 23, 23, 23, 23, 23, 23, - (3,6,0): 23, 23, 23, 23, 23, 23, 23, 23, - (3,7,0): 23, 23, 23, 23, 23, 23, 23, 23, - (3,8,0): -9, -9, -9, -9, -9, -9, -9, -9, - (3,9,0): 33, 33, 33, 33, 33, 33, 33, 33, - (3,10,0): 33, 33, 33, 33, 33, 33, 33, 33, - (3,11,0): -9, -9, -9, -9, -9, -9, -9, -9, - (3,12,0): 43, 43, 43, 43, 43, 43, 43, 43, - (3,13,0): 43, 43, 43, 43, 43, 43, 43, 43, - (3,14,0): 43, 43, 43, 43, 43, 43, 43, 43, - (3,15,0): 43, 43, 43, 43, 43, 43, 43, 43, - (3,16,0): -9, -9, -9, -9, -9, -9, -9, -9, - (3,17,0): 53, 53, 53, 53, 53, 53, 53, 53, - (3,18,0): 53, 53, 53, 53, 53, 53, 53, 53, - (3,19,0): -9, -9, -9, -9, -9, -9, -9, -9, - (3,20,0): 63, 63, 63, 63, 63, 63, 63, 63, - (3,21,0): 63, 63, 63, 63, 63, 63, 63, 63, - (3,22,0): 63, 63, 63, 63, 63, 63, 63, 63, - (3,23,0): 63, 63, 63, 63, 63, 63, 63, 63, - (3,24,0): -9, -9, -9, -9, -9, -9, -9, -9, - (4,0,0): -9, -9, -9, -9, -9, -9, -9, -9, - (4,1,0): 14, 14, 14, 14, 14, 14, 14, 14, - (4,2,0): 14, 14, 14, 14, 14, 14, 14, 14, - (4,3,0): -9, -9, -9, -9, -9, -9, -9, -9, - (4,4,0): 24, 24, 24, 24, 24, 24, 24, 24, - (4,5,0): 24, 24, 24, 24, 24, 24, 24, 24, - (4,6,0): 24, 24, 24, 24, 24, 24, 24, 24, - (4,7,0): 24, 24, 24, 24, 24, 24, 24, 24, - (4,8,0): -9, -9, -9, -9, -9, -9, -9, -9, - (4,9,0): 34, 34, 34, 34, 34, 34, 34, 34, - (4,10,0): 34, 34, 34, 34, 34, 34, 34, 34, - (4,11,0): -9, -9, -9, -9, -9, -9, -9, -9, - (4,12,0): 44, 44, 44, 44, 44, 44, 44, 44, - (4,13,0): 44, 44, 44, 44, 44, 44, 44, 44, - (4,14,0): 44, 44, 44, 44, 44, 44, 44, 44, - (4,15,0): 44, 44, 44, 44, 44, 44, 44, 44, - (4,16,0): -9, -9, -9, -9, -9, -9, -9, -9, - (4,17,0): 54, 54, 54, 54, 54, 54, 54, 54, - (4,18,0): 54, 54, 54, 54, 54, 54, 54, 54, - (4,19,0): -9, -9, -9, -9, -9, -9, -9, -9, - (4,20,0): 64, 64, 64, 64, 64, 64, 64, 64, - (4,21,0): 64, 64, 64, 64, 64, 64, 64, 64, - (4,22,0): 64, 64, 64, 64, 64, 64, 64, 64, - (4,23,0): 64, 64, 64, 64, 64, 64, 64, 64, - (4,24,0): -9, -9, -9, -9, -9, -9, -9, -9 - } -} -} diff --git a/tools/h5repack/testfiles/4_vds.h5-vds_compa-v.ddl b/tools/h5repack/testfiles/4_vds.h5-vds_compa-v.ddl deleted file mode 100644 index 1e8927c..0000000 --- a/tools/h5repack/testfiles/4_vds.h5-vds_compa-v.ddl +++ /dev/null @@ -1,58 +0,0 @@ -HDF5 "out-vds_compa.4_vds.h5" { -DATASET "vds_dset" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 9, 4, 4 ) / ( 9, 4, 4 ) } - STORAGE_LAYOUT { - COMPACT - SIZE 576 - } - FILTERS { - NONE - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE -9 - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_EARLY - } - DATA { - (0,0,0): 10, 10, 10, 10, - (0,1,0): 10, 10, 10, 10, - (0,2,0): 10, 10, 10, 10, - (0,3,0): 10, 10, 10, 10, - (1,0,0): 11, 11, 11, 11, - (1,1,0): 11, 11, 11, 11, - (1,2,0): 11, 11, 11, 11, - (1,3,0): 11, 11, 11, 11, - (2,0,0): 12, 12, 12, 12, - (2,1,0): 12, 12, 12, 12, - (2,2,0): 12, 12, 12, 12, - (2,3,0): 12, 12, 12, 12, - (3,0,0): 20, 20, 20, 20, - (3,1,0): 20, 20, 20, 20, - (3,2,0): 20, 20, 20, 20, - (3,3,0): 20, 20, 20, 20, - (4,0,0): 21, 21, 21, 21, - (4,1,0): 21, 21, 21, 21, - (4,2,0): 21, 21, 21, 21, - (4,3,0): 21, 21, 21, 21, - (5,0,0): 22, 22, 22, 22, - (5,1,0): 22, 22, 22, 22, - (5,2,0): 22, 22, 22, 22, - (5,3,0): 22, 22, 22, 22, - (6,0,0): 30, 30, 30, 30, - (6,1,0): 30, 30, 30, 30, - (6,2,0): 30, 30, 30, 30, - (6,3,0): 30, 30, 30, 30, - (7,0,0): 31, 31, 31, 31, - (7,1,0): 31, 31, 31, 31, - (7,2,0): 31, 31, 31, 31, - (7,3,0): 31, 31, 31, 31, - (8,0,0): 32, 32, 32, 32, - (8,1,0): 32, 32, 32, 32, - (8,2,0): 32, 32, 32, 32, - (8,3,0): 32, 32, 32, 32 - } -} -} diff --git a/tools/h5repack/testfiles/4_vds.h5-vds_conti-v.ddl b/tools/h5repack/testfiles/4_vds.h5-vds_conti-v.ddl deleted file mode 100644 index c499b35..0000000 --- a/tools/h5repack/testfiles/4_vds.h5-vds_conti-v.ddl +++ /dev/null @@ -1,59 +0,0 @@ -HDF5 "out-vds_conti.4_vds.h5" { -DATASET "vds_dset" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 9, 4, 4 ) / ( 9, 4, 4 ) } - STORAGE_LAYOUT { - CONTIGUOUS - SIZE 576 - OFFSET 2144 - } - FILTERS { - NONE - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE -9 - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_LATE - } - DATA { - (0,0,0): 10, 10, 10, 10, - (0,1,0): 10, 10, 10, 10, - (0,2,0): 10, 10, 10, 10, - (0,3,0): 10, 10, 10, 10, - (1,0,0): 11, 11, 11, 11, - (1,1,0): 11, 11, 11, 11, - (1,2,0): 11, 11, 11, 11, - (1,3,0): 11, 11, 11, 11, - (2,0,0): 12, 12, 12, 12, - (2,1,0): 12, 12, 12, 12, - (2,2,0): 12, 12, 12, 12, - (2,3,0): 12, 12, 12, 12, - (3,0,0): 20, 20, 20, 20, - (3,1,0): 20, 20, 20, 20, - (3,2,0): 20, 20, 20, 20, - (3,3,0): 20, 20, 20, 20, - (4,0,0): 21, 21, 21, 21, - (4,1,0): 21, 21, 21, 21, - (4,2,0): 21, 21, 21, 21, - (4,3,0): 21, 21, 21, 21, - (5,0,0): 22, 22, 22, 22, - (5,1,0): 22, 22, 22, 22, - (5,2,0): 22, 22, 22, 22, - (5,3,0): 22, 22, 22, 22, - (6,0,0): 30, 30, 30, 30, - (6,1,0): 30, 30, 30, 30, - (6,2,0): 30, 30, 30, 30, - (6,3,0): 30, 30, 30, 30, - (7,0,0): 31, 31, 31, 31, - (7,1,0): 31, 31, 31, 31, - (7,2,0): 31, 31, 31, 31, - (7,3,0): 31, 31, 31, 31, - (8,0,0): 32, 32, 32, 32, - (8,1,0): 32, 32, 32, 32, - (8,2,0): 32, 32, 32, 32, - (8,3,0): 32, 32, 32, 32 - } -} -} diff --git a/tools/h5repack/testfiles/README b/tools/h5repack/testfiles/README deleted file mode 100644 index 4096dee..0000000 --- a/tools/h5repack/testfiles/README +++ /dev/null @@ -1,5 +0,0 @@ -h5repack_nested_8bit_enum_deflated.h5: -h5repack_nested_8bit_enum.h5: - enuberated 8bit type nested in compount type. Original file provided - by a user (HDFFV-8667) as a test file. Used h5copy to extract only the - Compound type dataset. The non-deflated version is produced by h5repack. diff --git a/tools/h5repack/testfiles/deflate_limit.h5repack_layout.h5.ddl b/tools/h5repack/testfiles/deflate_limit.h5repack_layout.h5.ddl deleted file mode 100644 index 75f54fa..0000000 --- a/tools/h5repack/testfiles/deflate_limit.h5repack_layout.h5.ddl +++ /dev/null @@ -1,130 +0,0 @@ -HDF5 "out-deflate_limit.h5repack_layout.h5" { -GROUP "/" { - DATASET "dset1" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - STORAGE_LAYOUT { - CHUNKED ( 40, 20 ) - SIZE 1150 (2.783:1 COMPRESSION) - } - FILTERS { - COMPRESSION DEFLATE { LEVEL 1 } - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE H5D_FILL_VALUE_DEFAULT - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - } - DATASET "dset2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - STORAGE_LAYOUT { - CHUNKED ( 40, 20 ) - SIZE 1150 (2.783:1 COMPRESSION) - } - FILTERS { - COMPRESSION DEFLATE { LEVEL 1 } - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE H5D_FILL_VALUE_DEFAULT - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - } - DATASET "dset3" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - STORAGE_LAYOUT { - CHUNKED ( 40, 20 ) - SIZE 1150 (2.783:1 COMPRESSION) - } - FILTERS { - COMPRESSION DEFLATE { LEVEL 1 } - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE H5D_FILL_VALUE_DEFAULT - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - } - DATASET "dset4" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - STORAGE_LAYOUT { - CHUNKED ( 40, 20 ) - SIZE 1150 (2.783:1 COMPRESSION) - } - FILTERS { - COMPRESSION DEFLATE { LEVEL 1 } - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE H5D_FILL_VALUE_DEFAULT - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - } - DATASET "dset_chunk" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - STORAGE_LAYOUT { - CHUNKED ( 20, 10 ) - SIZE 1283 (2.494:1 COMPRESSION) - } - FILTERS { - COMPRESSION DEFLATE { LEVEL 1 } - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE H5D_FILL_VALUE_DEFAULT - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - } - DATASET "dset_compact" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - STORAGE_LAYOUT { - CHUNKED ( 40, 20 ) - SIZE 1150 (2.783:1 COMPRESSION) - } - FILTERS { - COMPRESSION DEFLATE { LEVEL 1 } - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE H5D_FILL_VALUE_DEFAULT - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - } - DATASET "dset_contiguous" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - STORAGE_LAYOUT { - CHUNKED ( 40, 20 ) - SIZE 1150 (2.783:1 COMPRESSION) - } - FILTERS { - COMPRESSION DEFLATE { LEVEL 1 } - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE H5D_FILL_VALUE_DEFAULT - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - } -} -} diff --git a/tools/h5repack/testfiles/h5repack-help.txt b/tools/h5repack/testfiles/h5repack-help.txt deleted file mode 100644 index 049e27d..0000000 --- a/tools/h5repack/testfiles/h5repack-help.txt +++ /dev/null @@ -1,125 +0,0 @@ -usage: h5repack [OPTIONS] file1 file2 - file1 Input HDF5 File - file2 Output HDF5 File - OPTIONS - -h, --help Print a usage message and exit - -v, --verbose Verbose mode, print object information - -V, --version Print version number and exit - -n, --native Use a native HDF5 type when repacking - -L, --latest Use latest version of file format - -c L1, --compact=L1 Maximum number of links in header messages - -d L2, --indexed=L2 Minimum number of links in the indexed format - -s S[:F], --ssize=S[:F] Shared object header message minimum size - -m M, --minimum=M Do not apply the filter to datasets smaller than M - -e E, --file=E Name of file E with the -f and -l options - -u U, --ublock=U Name of file U with user block data to be added - -b B, --block=B Size of user block to be added - -M A, --metadata_block_size=A Metadata block size for H5Pset_meta_block_size - -t T, --threshold=T Threshold value for H5Pset_alignment - -a A, --alignment=A Alignment value for H5Pset_alignment - -f FILT, --filter=FILT Filter type - -l LAYT, --layout=LAYT Layout type - -S FS_STRGY, --fs_strategy=FS_STRGY File space management strategy - -T FS_THRD, --fs_threshold=FS_THRD Free-space section threshold - - M - is an integer greater than 1, size of dataset in bytes (default is 0) - E - is a filename. - S - is an integer - U - is a filename. - T - is an integer - A - is an integer greater than zero - B - is the user block size, any value that is 512 or greater and is - a power of 2 (1024 default) - F - is the shared object header message type, any of . If F is not specified, S applies to all messages - - --enable-error-stack Prints messages from the HDF5 error stack as they - occur. - - FS_STRGY is the file space management strategy to use for the output file. - It is a string as listed below: - ALL_PERSIST - Use persistent free-space managers, aggregators and virtual file driver - for file space allocation - ALL - Use non-persistent free-space managers, aggregators and virtual file driver - for file space allocation - AGGR_VFD - Use aggregators and virtual file driver for file space allocation - VFD - Use virtual file driver for file space allocation - - FS_THRD is the free-space section threshold to use for the output file. - It is the minimum size (in bytes) of free-space sections to be tracked - by the the library's free-space managers. - - FILT - is a string with the format: - - := - - is a comma separated list of object names, meaning apply - compression only to those objects. If no names are specified, the filter - is applied to all objects - can be: - GZIP, to apply the HDF5 GZIP filter (GZIP compression) - SZIP, to apply the HDF5 SZIP filter (SZIP compression) - SHUF, to apply the HDF5 shuffle filter - FLET, to apply the HDF5 checksum filter - NBIT, to apply the HDF5 NBIT filter (NBIT compression) - SOFF, to apply the HDF5 Scale/Offset filter - UD, to apply a user defined filter - NONE, to remove all filters - is optional filter parameter information - GZIP= from 1-9 - SZIP= pixels per block is a even number in - 2-32 and coding method is either EC or NN - SHUF (no parameter) - FLET (no parameter) - NBIT (no parameter) - SOFF= scale_factor is an integer and scale_type - is either IN or DS - UD= - required values for filter_number,cd_value_count,value_1 - optional values for value_2 to value_N - NONE (no parameter) - - LAYT - is a string with the format: - - := - - is a comma separated list of object names, meaning that - layout information is supplied for those objects. If no names are - specified, the layout type is applied to all objects - can be: - CHUNK, to apply chunking layout - COMPA, to apply compact layout - CONTI, to apply contiguous layout - is optional layout information - CHUNK=DIM[xDIM...xDIM], the chunk size of each dimension - COMPA (no parameter) - CONTI (no parameter) - -Examples of use: - -1) h5repack -v -f GZIP=1 file1 file2 - - GZIP compression with level 1 to all objects - -2) h5repack -v -f dset1:SZIP=8,NN file1 file2 - - SZIP compression with 8 pixels per block and NN coding method to object dset1 - -3) h5repack -v -l dset1,dset2:CHUNK=20x10 -f dset3,dset4,dset5:NONE file1 file2 - - Chunked layout, with a layout size of 20x10, to objects dset1 and dset2 - and remove filters to objects dset3, dset4, dset5 - -4) h5repack -L -c 10 -s 20:dtype file1 file2 - - Using latest file format with maximum compact group size of 10 and - and minimum shared datatype size of 20 - -5) h5repack -f SHUF -f GZIP=1 file1 file2 - - Add both filters SHUF and GZIP in this order to all datasets - -6) h5repack -f UD=307,1,9 file1 file2 - - Add bzip2 filter to all datasets - diff --git a/tools/h5repack/testfiles/h5repack.info b/tools/h5repack/testfiles/h5repack.info deleted file mode 100644 index 216948d..0000000 --- a/tools/h5repack/testfiles/h5repack.info +++ /dev/null @@ -1 +0,0 @@ --l dset1:CHUNK=20x20 -f dset1,dset2:GZIP=1 diff --git a/tools/h5repack/testfiles/h5repack_attr.h5 b/tools/h5repack/testfiles/h5repack_attr.h5 deleted file mode 100644 index 80df0be..0000000 Binary files a/tools/h5repack/testfiles/h5repack_attr.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_attr_refs.h5 b/tools/h5repack/testfiles/h5repack_attr_refs.h5 deleted file mode 100644 index 1b0ca34..0000000 Binary files a/tools/h5repack/testfiles/h5repack_attr_refs.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_deflate.h5 b/tools/h5repack/testfiles/h5repack_deflate.h5 deleted file mode 100644 index 4988491..0000000 Binary files a/tools/h5repack/testfiles/h5repack_deflate.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_early.h5 b/tools/h5repack/testfiles/h5repack_early.h5 deleted file mode 100644 index d9a7ece..0000000 Binary files a/tools/h5repack/testfiles/h5repack_early.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_ext.bin b/tools/h5repack/testfiles/h5repack_ext.bin deleted file mode 100644 index f858094..0000000 Binary files a/tools/h5repack/testfiles/h5repack_ext.bin and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_ext.h5 b/tools/h5repack/testfiles/h5repack_ext.h5 deleted file mode 100644 index 8518b5b..0000000 Binary files a/tools/h5repack/testfiles/h5repack_ext.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_fill.h5 b/tools/h5repack/testfiles/h5repack_fill.h5 deleted file mode 100644 index ac40089..0000000 Binary files a/tools/h5repack/testfiles/h5repack_fill.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_filters.h5 b/tools/h5repack/testfiles/h5repack_filters.h5 deleted file mode 100644 index eabade8..0000000 Binary files a/tools/h5repack/testfiles/h5repack_filters.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_filters.h5-gzip_verbose_filters.tst b/tools/h5repack/testfiles/h5repack_filters.h5-gzip_verbose_filters.tst deleted file mode 100644 index 36e65b9..0000000 --- a/tools/h5repack/testfiles/h5repack_filters.h5-gzip_verbose_filters.tst +++ /dev/null @@ -1,13 +0,0 @@ -Objects to modify layout are... -Objects to apply filter are... - with GZIP filter - ...Found ------------------------------------------ - Type Filter (Compression) Name ------------------------------------------ - group / - dset /dset_all - dset GZIP (0.995:1) /dset_deflate - dset /dset_fletcher32 - dset /dset_nbit - dset /dset_shuffle diff --git a/tools/h5repack/testfiles/h5repack_fletcher.h5 b/tools/h5repack/testfiles/h5repack_fletcher.h5 deleted file mode 100644 index 16ca4ef..0000000 Binary files a/tools/h5repack/testfiles/h5repack_fletcher.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_hlink.h5 b/tools/h5repack/testfiles/h5repack_hlink.h5 deleted file mode 100644 index 80c0fcc..0000000 Binary files a/tools/h5repack/testfiles/h5repack_hlink.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_layout.UD.h5 b/tools/h5repack/testfiles/h5repack_layout.UD.h5 deleted file mode 100644 index caf2024..0000000 Binary files a/tools/h5repack/testfiles/h5repack_layout.UD.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_layout.UD.h5-plugin_none.ddl b/tools/h5repack/testfiles/h5repack_layout.UD.h5-plugin_none.ddl deleted file mode 100644 index 66c4c69..0000000 --- a/tools/h5repack/testfiles/h5repack_layout.UD.h5-plugin_none.ddl +++ /dev/null @@ -1,130 +0,0 @@ -HDF5 "out-plugin_none.h5repack_layout.UD.h5" { -GROUP "/" { - DATASET "dset1" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - STORAGE_LAYOUT { - CHUNKED ( 40, 20 ) - SIZE 3200 - } - FILTERS { - NONE - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE H5D_FILL_VALUE_DEFAULT - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - } - DATASET "dset2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - STORAGE_LAYOUT { - CHUNKED ( 40, 20 ) - SIZE 3200 - } - FILTERS { - NONE - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE H5D_FILL_VALUE_DEFAULT - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - } - DATASET "dset3" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - STORAGE_LAYOUT { - CHUNKED ( 40, 20 ) - SIZE 3200 - } - FILTERS { - NONE - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE H5D_FILL_VALUE_DEFAULT - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - } - DATASET "dset4" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - STORAGE_LAYOUT { - CHUNKED ( 40, 20 ) - SIZE 3200 - } - FILTERS { - NONE - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE H5D_FILL_VALUE_DEFAULT - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - } - DATASET "dset_chunk" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, H5S_UNLIMITED ) } - STORAGE_LAYOUT { - CHUNKED ( 20, 10 ) - SIZE 3200 - } - FILTERS { - NONE - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE H5D_FILL_VALUE_DEFAULT - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - } - DATASET "dset_compact" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - STORAGE_LAYOUT { - CHUNKED ( 40, 20 ) - SIZE 3200 - } - FILTERS { - NONE - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE H5D_FILL_VALUE_DEFAULT - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - } - DATASET "dset_contiguous" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - STORAGE_LAYOUT { - CHUNKED ( 40, 20 ) - SIZE 3200 - } - FILTERS { - NONE - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE H5D_FILL_VALUE_DEFAULT - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - } -} -} diff --git a/tools/h5repack/testfiles/h5repack_layout.h5 b/tools/h5repack/testfiles/h5repack_layout.h5 deleted file mode 100644 index 4e53766..0000000 Binary files a/tools/h5repack/testfiles/h5repack_layout.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_layout.h5-dset2_chunk_20x10-errstk.tst b/tools/h5repack/testfiles/h5repack_layout.h5-dset2_chunk_20x10-errstk.tst deleted file mode 100644 index 95cc4c6..0000000 --- a/tools/h5repack/testfiles/h5repack_layout.h5-dset2_chunk_20x10-errstk.tst +++ /dev/null @@ -1,38 +0,0 @@ -HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): - #000: (file name) line (number) in H5Dcreate2(): unable to create dataset - major: Dataset - minor: Unable to initialize object - #001: (file name) line (number) in H5D__create_named(): unable to create and link to dataset - major: Dataset - minor: Unable to initialize object - #002: (file name) line (number) in H5L_link_object(): unable to create new link to object - major: Links - minor: Unable to initialize object - #003: (file name) line (number) in H5L_create_real(): can't insert link - major: Symbol table - minor: Unable to insert object - #004: (file name) line (number) in H5G_traverse(): internal path traversal failed - major: Symbol table - minor: Object not found - #005: (file name) line (number) in H5G_traverse_real(): traversal operator failed - major: Symbol table - minor: Callback failed - #006: (file name) line (number) in H5L_link_cb(): unable to create object - major: Object header - minor: Unable to initialize object - #007: (file name) line (number) in H5O_obj_create(): unable to open object - major: Object header - minor: Can't open object - #008: (file name) line (number) in H5O__dset_create(): unable to create dataset - major: Dataset - minor: Unable to initialize object - #009: (file name) line (number) in H5D__create(): unable to construct layout information - major: Dataset - minor: Unable to initialize object - #010: (file name) line (number) in H5D__chunk_construct(): dimensionality of chunks doesn't match the dataspace - major: Dataset - minor: Bad value -H5tools-DIAG: Error detected in HDF5:tools (version (number)) thread (IDs): - #000: (file name) line (number) in do_copy_objects(): H5Dcreate2 failed - major: Failure in tools library - minor: error in function diff --git a/tools/h5repack/testfiles/h5repack_layout.h5-plugin_test.ddl b/tools/h5repack/testfiles/h5repack_layout.h5-plugin_test.ddl deleted file mode 100644 index a8b4562..0000000 --- a/tools/h5repack/testfiles/h5repack_layout.h5-plugin_test.ddl +++ /dev/null @@ -1,158 +0,0 @@ -HDF5 "out-plugin_test.h5repack_layout.h5" { -GROUP "/" { - DATASET "dset1" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - STORAGE_LAYOUT { - CHUNKED ( 40, 20 ) - SIZE 3200 (1.000:1 COMPRESSION) - } - FILTERS { - USER_DEFINED_FILTER { - FILTER_ID 257 - COMMENT dynlib1 - PARAMS { 9 } - } - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE H5D_FILL_VALUE_DEFAULT - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - } - DATASET "dset2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - STORAGE_LAYOUT { - CHUNKED ( 40, 20 ) - SIZE 3200 (1.000:1 COMPRESSION) - } - FILTERS { - USER_DEFINED_FILTER { - FILTER_ID 257 - COMMENT dynlib1 - PARAMS { 9 } - } - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE H5D_FILL_VALUE_DEFAULT - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - } - DATASET "dset3" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - STORAGE_LAYOUT { - CHUNKED ( 40, 20 ) - SIZE 3200 (1.000:1 COMPRESSION) - } - FILTERS { - USER_DEFINED_FILTER { - FILTER_ID 257 - COMMENT dynlib1 - PARAMS { 9 } - } - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE H5D_FILL_VALUE_DEFAULT - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - } - DATASET "dset4" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - STORAGE_LAYOUT { - CHUNKED ( 40, 20 ) - SIZE 3200 (1.000:1 COMPRESSION) - } - FILTERS { - USER_DEFINED_FILTER { - FILTER_ID 257 - COMMENT dynlib1 - PARAMS { 9 } - } - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE H5D_FILL_VALUE_DEFAULT - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - } - DATASET "dset_chunk" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - STORAGE_LAYOUT { - CHUNKED ( 20, 10 ) - SIZE 3200 (1.000:1 COMPRESSION) - } - FILTERS { - USER_DEFINED_FILTER { - FILTER_ID 257 - COMMENT dynlib1 - PARAMS { 9 } - } - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE H5D_FILL_VALUE_DEFAULT - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - } - DATASET "dset_compact" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - STORAGE_LAYOUT { - CHUNKED ( 40, 20 ) - SIZE 3200 (1.000:1 COMPRESSION) - } - FILTERS { - USER_DEFINED_FILTER { - FILTER_ID 257 - COMMENT dynlib1 - PARAMS { 9 } - } - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE H5D_FILL_VALUE_DEFAULT - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - } - DATASET "dset_contiguous" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - STORAGE_LAYOUT { - CHUNKED ( 40, 20 ) - SIZE 3200 (1.000:1 COMPRESSION) - } - FILTERS { - USER_DEFINED_FILTER { - FILTER_ID 257 - COMMENT dynlib1 - PARAMS { 9 } - } - } - FILLVALUE { - FILL_TIME H5D_FILL_TIME_IFSET - VALUE H5D_FILL_VALUE_DEFAULT - } - ALLOCATION_TIME { - H5D_ALLOC_TIME_INCR - } - } -} -} diff --git a/tools/h5repack/testfiles/h5repack_layout.h5-plugin_zero.tst b/tools/h5repack/testfiles/h5repack_layout.h5-plugin_zero.tst deleted file mode 100644 index 0993d5b..0000000 --- a/tools/h5repack/testfiles/h5repack_layout.h5-plugin_zero.tst +++ /dev/null @@ -1,9 +0,0 @@ -Objects to modify layout are... -Objects to apply filter are... - User Defined 250 -Making file ... ------------------------------------------ - Type Filter (Compression) Name ------------------------------------------ - group / -h5repack error: : Could not copy data to: out-plugin_zero.h5repack_layout.h5 diff --git a/tools/h5repack/testfiles/h5repack_layout.h5.ddl b/tools/h5repack/testfiles/h5repack_layout.h5.ddl deleted file mode 100644 index 00c74f4..0000000 --- a/tools/h5repack/testfiles/h5repack_layout.h5.ddl +++ /dev/null @@ -1,606 +0,0 @@ -HDF5 "h5repack_layout.h5" { -GROUP "/" { - DATASET "dset1" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - DATA { - (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - (0,18): 18, 19, - (1,0): 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - (1,16): 36, 37, 38, 39, - (2,0): 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - (2,16): 56, 57, 58, 59, - (3,0): 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - (3,16): 76, 77, 78, 79, - (4,0): 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - (4,16): 96, 97, 98, 99, - (5,0): 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - (5,13): 113, 114, 115, 116, 117, 118, 119, - (6,0): 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - (6,13): 133, 134, 135, 136, 137, 138, 139, - (7,0): 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - (7,13): 153, 154, 155, 156, 157, 158, 159, - (8,0): 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - (8,13): 173, 174, 175, 176, 177, 178, 179, - (9,0): 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - (9,13): 193, 194, 195, 196, 197, 198, 199, - (10,0): 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - (10,12): 212, 213, 214, 215, 216, 217, 218, 219, - (11,0): 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - (11,12): 232, 233, 234, 235, 236, 237, 238, 239, - (12,0): 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - (12,12): 252, 253, 254, 255, 256, 257, 258, 259, - (13,0): 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - (13,12): 272, 273, 274, 275, 276, 277, 278, 279, - (14,0): 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - (14,12): 292, 293, 294, 295, 296, 297, 298, 299, - (15,0): 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - (15,12): 312, 313, 314, 315, 316, 317, 318, 319, - (16,0): 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - (16,12): 332, 333, 334, 335, 336, 337, 338, 339, - (17,0): 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - (17,12): 352, 353, 354, 355, 356, 357, 358, 359, - (18,0): 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - (18,12): 372, 373, 374, 375, 376, 377, 378, 379, - (19,0): 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - (19,12): 392, 393, 394, 395, 396, 397, 398, 399, - (20,0): 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - (20,12): 412, 413, 414, 415, 416, 417, 418, 419, - (21,0): 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - (21,12): 432, 433, 434, 435, 436, 437, 438, 439, - (22,0): 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - (22,12): 452, 453, 454, 455, 456, 457, 458, 459, - (23,0): 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - (23,12): 472, 473, 474, 475, 476, 477, 478, 479, - (24,0): 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, - (24,12): 492, 493, 494, 495, 496, 497, 498, 499, - (25,0): 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, - (25,12): 512, 513, 514, 515, 516, 517, 518, 519, - (26,0): 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, - (26,12): 532, 533, 534, 535, 536, 537, 538, 539, - (27,0): 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - (27,12): 552, 553, 554, 555, 556, 557, 558, 559, - (28,0): 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, - (28,12): 572, 573, 574, 575, 576, 577, 578, 579, - (29,0): 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, - (29,12): 592, 593, 594, 595, 596, 597, 598, 599, - (30,0): 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, - (30,12): 612, 613, 614, 615, 616, 617, 618, 619, - (31,0): 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, - (31,12): 632, 633, 634, 635, 636, 637, 638, 639, - (32,0): 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, - (32,12): 652, 653, 654, 655, 656, 657, 658, 659, - (33,0): 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, - (33,12): 672, 673, 674, 675, 676, 677, 678, 679, - (34,0): 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, - (34,12): 692, 693, 694, 695, 696, 697, 698, 699, - (35,0): 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, - (35,12): 712, 713, 714, 715, 716, 717, 718, 719, - (36,0): 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, - (36,12): 732, 733, 734, 735, 736, 737, 738, 739, - (37,0): 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, - (37,12): 752, 753, 754, 755, 756, 757, 758, 759, - (38,0): 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, - (38,12): 772, 773, 774, 775, 776, 777, 778, 779, - (39,0): 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, - (39,12): 792, 793, 794, 795, 796, 797, 798, 799 - } - } - DATASET "dset2" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - DATA { - (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - (0,18): 18, 19, - (1,0): 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - (1,16): 36, 37, 38, 39, - (2,0): 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - (2,16): 56, 57, 58, 59, - (3,0): 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - (3,16): 76, 77, 78, 79, - (4,0): 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - (4,16): 96, 97, 98, 99, - (5,0): 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - (5,13): 113, 114, 115, 116, 117, 118, 119, - (6,0): 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - (6,13): 133, 134, 135, 136, 137, 138, 139, - (7,0): 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - (7,13): 153, 154, 155, 156, 157, 158, 159, - (8,0): 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - (8,13): 173, 174, 175, 176, 177, 178, 179, - (9,0): 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - (9,13): 193, 194, 195, 196, 197, 198, 199, - (10,0): 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - (10,12): 212, 213, 214, 215, 216, 217, 218, 219, - (11,0): 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - (11,12): 232, 233, 234, 235, 236, 237, 238, 239, - (12,0): 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - (12,12): 252, 253, 254, 255, 256, 257, 258, 259, - (13,0): 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - (13,12): 272, 273, 274, 275, 276, 277, 278, 279, - (14,0): 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - (14,12): 292, 293, 294, 295, 296, 297, 298, 299, - (15,0): 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - (15,12): 312, 313, 314, 315, 316, 317, 318, 319, - (16,0): 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - (16,12): 332, 333, 334, 335, 336, 337, 338, 339, - (17,0): 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - (17,12): 352, 353, 354, 355, 356, 357, 358, 359, - (18,0): 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - (18,12): 372, 373, 374, 375, 376, 377, 378, 379, - (19,0): 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - (19,12): 392, 393, 394, 395, 396, 397, 398, 399, - (20,0): 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - (20,12): 412, 413, 414, 415, 416, 417, 418, 419, - (21,0): 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - (21,12): 432, 433, 434, 435, 436, 437, 438, 439, - (22,0): 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - (22,12): 452, 453, 454, 455, 456, 457, 458, 459, - (23,0): 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - (23,12): 472, 473, 474, 475, 476, 477, 478, 479, - (24,0): 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, - (24,12): 492, 493, 494, 495, 496, 497, 498, 499, - (25,0): 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, - (25,12): 512, 513, 514, 515, 516, 517, 518, 519, - (26,0): 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, - (26,12): 532, 533, 534, 535, 536, 537, 538, 539, - (27,0): 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - (27,12): 552, 553, 554, 555, 556, 557, 558, 559, - (28,0): 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, - (28,12): 572, 573, 574, 575, 576, 577, 578, 579, - (29,0): 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, - (29,12): 592, 593, 594, 595, 596, 597, 598, 599, - (30,0): 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, - (30,12): 612, 613, 614, 615, 616, 617, 618, 619, - (31,0): 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, - (31,12): 632, 633, 634, 635, 636, 637, 638, 639, - (32,0): 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, - (32,12): 652, 653, 654, 655, 656, 657, 658, 659, - (33,0): 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, - (33,12): 672, 673, 674, 675, 676, 677, 678, 679, - (34,0): 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, - (34,12): 692, 693, 694, 695, 696, 697, 698, 699, - (35,0): 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, - (35,12): 712, 713, 714, 715, 716, 717, 718, 719, - (36,0): 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, - (36,12): 732, 733, 734, 735, 736, 737, 738, 739, - (37,0): 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, - (37,12): 752, 753, 754, 755, 756, 757, 758, 759, - (38,0): 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, - (38,12): 772, 773, 774, 775, 776, 777, 778, 779, - (39,0): 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, - (39,12): 792, 793, 794, 795, 796, 797, 798, 799 - } - } - DATASET "dset3" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - DATA { - (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - (0,18): 18, 19, - (1,0): 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - (1,16): 36, 37, 38, 39, - (2,0): 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - (2,16): 56, 57, 58, 59, - (3,0): 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - (3,16): 76, 77, 78, 79, - (4,0): 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - (4,16): 96, 97, 98, 99, - (5,0): 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - (5,13): 113, 114, 115, 116, 117, 118, 119, - (6,0): 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - (6,13): 133, 134, 135, 136, 137, 138, 139, - (7,0): 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - (7,13): 153, 154, 155, 156, 157, 158, 159, - (8,0): 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - (8,13): 173, 174, 175, 176, 177, 178, 179, - (9,0): 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - (9,13): 193, 194, 195, 196, 197, 198, 199, - (10,0): 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - (10,12): 212, 213, 214, 215, 216, 217, 218, 219, - (11,0): 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - (11,12): 232, 233, 234, 235, 236, 237, 238, 239, - (12,0): 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - (12,12): 252, 253, 254, 255, 256, 257, 258, 259, - (13,0): 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - (13,12): 272, 273, 274, 275, 276, 277, 278, 279, - (14,0): 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - (14,12): 292, 293, 294, 295, 296, 297, 298, 299, - (15,0): 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - (15,12): 312, 313, 314, 315, 316, 317, 318, 319, - (16,0): 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - (16,12): 332, 333, 334, 335, 336, 337, 338, 339, - (17,0): 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - (17,12): 352, 353, 354, 355, 356, 357, 358, 359, - (18,0): 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - (18,12): 372, 373, 374, 375, 376, 377, 378, 379, - (19,0): 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - (19,12): 392, 393, 394, 395, 396, 397, 398, 399, - (20,0): 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - (20,12): 412, 413, 414, 415, 416, 417, 418, 419, - (21,0): 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - (21,12): 432, 433, 434, 435, 436, 437, 438, 439, - (22,0): 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - (22,12): 452, 453, 454, 455, 456, 457, 458, 459, - (23,0): 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - (23,12): 472, 473, 474, 475, 476, 477, 478, 479, - (24,0): 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, - (24,12): 492, 493, 494, 495, 496, 497, 498, 499, - (25,0): 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, - (25,12): 512, 513, 514, 515, 516, 517, 518, 519, - (26,0): 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, - (26,12): 532, 533, 534, 535, 536, 537, 538, 539, - (27,0): 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - (27,12): 552, 553, 554, 555, 556, 557, 558, 559, - (28,0): 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, - (28,12): 572, 573, 574, 575, 576, 577, 578, 579, - (29,0): 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, - (29,12): 592, 593, 594, 595, 596, 597, 598, 599, - (30,0): 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, - (30,12): 612, 613, 614, 615, 616, 617, 618, 619, - (31,0): 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, - (31,12): 632, 633, 634, 635, 636, 637, 638, 639, - (32,0): 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, - (32,12): 652, 653, 654, 655, 656, 657, 658, 659, - (33,0): 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, - (33,12): 672, 673, 674, 675, 676, 677, 678, 679, - (34,0): 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, - (34,12): 692, 693, 694, 695, 696, 697, 698, 699, - (35,0): 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, - (35,12): 712, 713, 714, 715, 716, 717, 718, 719, - (36,0): 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, - (36,12): 732, 733, 734, 735, 736, 737, 738, 739, - (37,0): 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, - (37,12): 752, 753, 754, 755, 756, 757, 758, 759, - (38,0): 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, - (38,12): 772, 773, 774, 775, 776, 777, 778, 779, - (39,0): 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, - (39,12): 792, 793, 794, 795, 796, 797, 798, 799 - } - } - DATASET "dset4" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - DATA { - (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - (0,18): 18, 19, - (1,0): 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - (1,16): 36, 37, 38, 39, - (2,0): 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - (2,16): 56, 57, 58, 59, - (3,0): 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - (3,16): 76, 77, 78, 79, - (4,0): 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - (4,16): 96, 97, 98, 99, - (5,0): 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - (5,13): 113, 114, 115, 116, 117, 118, 119, - (6,0): 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - (6,13): 133, 134, 135, 136, 137, 138, 139, - (7,0): 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - (7,13): 153, 154, 155, 156, 157, 158, 159, - (8,0): 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - (8,13): 173, 174, 175, 176, 177, 178, 179, - (9,0): 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - (9,13): 193, 194, 195, 196, 197, 198, 199, - (10,0): 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - (10,12): 212, 213, 214, 215, 216, 217, 218, 219, - (11,0): 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - (11,12): 232, 233, 234, 235, 236, 237, 238, 239, - (12,0): 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - (12,12): 252, 253, 254, 255, 256, 257, 258, 259, - (13,0): 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - (13,12): 272, 273, 274, 275, 276, 277, 278, 279, - (14,0): 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - (14,12): 292, 293, 294, 295, 296, 297, 298, 299, - (15,0): 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - (15,12): 312, 313, 314, 315, 316, 317, 318, 319, - (16,0): 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - (16,12): 332, 333, 334, 335, 336, 337, 338, 339, - (17,0): 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - (17,12): 352, 353, 354, 355, 356, 357, 358, 359, - (18,0): 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - (18,12): 372, 373, 374, 375, 376, 377, 378, 379, - (19,0): 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - (19,12): 392, 393, 394, 395, 396, 397, 398, 399, - (20,0): 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - (20,12): 412, 413, 414, 415, 416, 417, 418, 419, - (21,0): 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - (21,12): 432, 433, 434, 435, 436, 437, 438, 439, - (22,0): 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - (22,12): 452, 453, 454, 455, 456, 457, 458, 459, - (23,0): 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - (23,12): 472, 473, 474, 475, 476, 477, 478, 479, - (24,0): 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, - (24,12): 492, 493, 494, 495, 496, 497, 498, 499, - (25,0): 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, - (25,12): 512, 513, 514, 515, 516, 517, 518, 519, - (26,0): 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, - (26,12): 532, 533, 534, 535, 536, 537, 538, 539, - (27,0): 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - (27,12): 552, 553, 554, 555, 556, 557, 558, 559, - (28,0): 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, - (28,12): 572, 573, 574, 575, 576, 577, 578, 579, - (29,0): 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, - (29,12): 592, 593, 594, 595, 596, 597, 598, 599, - (30,0): 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, - (30,12): 612, 613, 614, 615, 616, 617, 618, 619, - (31,0): 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, - (31,12): 632, 633, 634, 635, 636, 637, 638, 639, - (32,0): 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, - (32,12): 652, 653, 654, 655, 656, 657, 658, 659, - (33,0): 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, - (33,12): 672, 673, 674, 675, 676, 677, 678, 679, - (34,0): 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, - (34,12): 692, 693, 694, 695, 696, 697, 698, 699, - (35,0): 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, - (35,12): 712, 713, 714, 715, 716, 717, 718, 719, - (36,0): 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, - (36,12): 732, 733, 734, 735, 736, 737, 738, 739, - (37,0): 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, - (37,12): 752, 753, 754, 755, 756, 757, 758, 759, - (38,0): 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, - (38,12): 772, 773, 774, 775, 776, 777, 778, 779, - (39,0): 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, - (39,12): 792, 793, 794, 795, 796, 797, 798, 799 - } - } - DATASET "dset_chunk" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, H5S_UNLIMITED ) } - DATA { - (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - (0,18): 18, 19, - (1,0): 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - (1,16): 36, 37, 38, 39, - (2,0): 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - (2,16): 56, 57, 58, 59, - (3,0): 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - (3,16): 76, 77, 78, 79, - (4,0): 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - (4,16): 96, 97, 98, 99, - (5,0): 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - (5,13): 113, 114, 115, 116, 117, 118, 119, - (6,0): 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - (6,13): 133, 134, 135, 136, 137, 138, 139, - (7,0): 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - (7,13): 153, 154, 155, 156, 157, 158, 159, - (8,0): 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - (8,13): 173, 174, 175, 176, 177, 178, 179, - (9,0): 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - (9,13): 193, 194, 195, 196, 197, 198, 199, - (10,0): 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - (10,12): 212, 213, 214, 215, 216, 217, 218, 219, - (11,0): 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - (11,12): 232, 233, 234, 235, 236, 237, 238, 239, - (12,0): 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - (12,12): 252, 253, 254, 255, 256, 257, 258, 259, - (13,0): 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - (13,12): 272, 273, 274, 275, 276, 277, 278, 279, - (14,0): 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - (14,12): 292, 293, 294, 295, 296, 297, 298, 299, - (15,0): 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - (15,12): 312, 313, 314, 315, 316, 317, 318, 319, - (16,0): 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - (16,12): 332, 333, 334, 335, 336, 337, 338, 339, - (17,0): 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - (17,12): 352, 353, 354, 355, 356, 357, 358, 359, - (18,0): 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - (18,12): 372, 373, 374, 375, 376, 377, 378, 379, - (19,0): 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - (19,12): 392, 393, 394, 395, 396, 397, 398, 399, - (20,0): 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - (20,12): 412, 413, 414, 415, 416, 417, 418, 419, - (21,0): 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - (21,12): 432, 433, 434, 435, 436, 437, 438, 439, - (22,0): 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - (22,12): 452, 453, 454, 455, 456, 457, 458, 459, - (23,0): 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - (23,12): 472, 473, 474, 475, 476, 477, 478, 479, - (24,0): 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, - (24,12): 492, 493, 494, 495, 496, 497, 498, 499, - (25,0): 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, - (25,12): 512, 513, 514, 515, 516, 517, 518, 519, - (26,0): 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, - (26,12): 532, 533, 534, 535, 536, 537, 538, 539, - (27,0): 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - (27,12): 552, 553, 554, 555, 556, 557, 558, 559, - (28,0): 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, - (28,12): 572, 573, 574, 575, 576, 577, 578, 579, - (29,0): 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, - (29,12): 592, 593, 594, 595, 596, 597, 598, 599, - (30,0): 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, - (30,12): 612, 613, 614, 615, 616, 617, 618, 619, - (31,0): 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, - (31,12): 632, 633, 634, 635, 636, 637, 638, 639, - (32,0): 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, - (32,12): 652, 653, 654, 655, 656, 657, 658, 659, - (33,0): 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, - (33,12): 672, 673, 674, 675, 676, 677, 678, 679, - (34,0): 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, - (34,12): 692, 693, 694, 695, 696, 697, 698, 699, - (35,0): 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, - (35,12): 712, 713, 714, 715, 716, 717, 718, 719, - (36,0): 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, - (36,12): 732, 733, 734, 735, 736, 737, 738, 739, - (37,0): 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, - (37,12): 752, 753, 754, 755, 756, 757, 758, 759, - (38,0): 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, - (38,12): 772, 773, 774, 775, 776, 777, 778, 779, - (39,0): 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, - (39,12): 792, 793, 794, 795, 796, 797, 798, 799 - } - } - DATASET "dset_compact" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - DATA { - (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - (0,18): 18, 19, - (1,0): 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - (1,16): 36, 37, 38, 39, - (2,0): 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - (2,16): 56, 57, 58, 59, - (3,0): 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - (3,16): 76, 77, 78, 79, - (4,0): 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - (4,16): 96, 97, 98, 99, - (5,0): 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - (5,13): 113, 114, 115, 116, 117, 118, 119, - (6,0): 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - (6,13): 133, 134, 135, 136, 137, 138, 139, - (7,0): 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - (7,13): 153, 154, 155, 156, 157, 158, 159, - (8,0): 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - (8,13): 173, 174, 175, 176, 177, 178, 179, - (9,0): 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - (9,13): 193, 194, 195, 196, 197, 198, 199, - (10,0): 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - (10,12): 212, 213, 214, 215, 216, 217, 218, 219, - (11,0): 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - (11,12): 232, 233, 234, 235, 236, 237, 238, 239, - (12,0): 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - (12,12): 252, 253, 254, 255, 256, 257, 258, 259, - (13,0): 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - (13,12): 272, 273, 274, 275, 276, 277, 278, 279, - (14,0): 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - (14,12): 292, 293, 294, 295, 296, 297, 298, 299, - (15,0): 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - (15,12): 312, 313, 314, 315, 316, 317, 318, 319, - (16,0): 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - (16,12): 332, 333, 334, 335, 336, 337, 338, 339, - (17,0): 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - (17,12): 352, 353, 354, 355, 356, 357, 358, 359, - (18,0): 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - (18,12): 372, 373, 374, 375, 376, 377, 378, 379, - (19,0): 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - (19,12): 392, 393, 394, 395, 396, 397, 398, 399, - (20,0): 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - (20,12): 412, 413, 414, 415, 416, 417, 418, 419, - (21,0): 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - (21,12): 432, 433, 434, 435, 436, 437, 438, 439, - (22,0): 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - (22,12): 452, 453, 454, 455, 456, 457, 458, 459, - (23,0): 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - (23,12): 472, 473, 474, 475, 476, 477, 478, 479, - (24,0): 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, - (24,12): 492, 493, 494, 495, 496, 497, 498, 499, - (25,0): 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, - (25,12): 512, 513, 514, 515, 516, 517, 518, 519, - (26,0): 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, - (26,12): 532, 533, 534, 535, 536, 537, 538, 539, - (27,0): 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - (27,12): 552, 553, 554, 555, 556, 557, 558, 559, - (28,0): 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, - (28,12): 572, 573, 574, 575, 576, 577, 578, 579, - (29,0): 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, - (29,12): 592, 593, 594, 595, 596, 597, 598, 599, - (30,0): 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, - (30,12): 612, 613, 614, 615, 616, 617, 618, 619, - (31,0): 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, - (31,12): 632, 633, 634, 635, 636, 637, 638, 639, - (32,0): 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, - (32,12): 652, 653, 654, 655, 656, 657, 658, 659, - (33,0): 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, - (33,12): 672, 673, 674, 675, 676, 677, 678, 679, - (34,0): 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, - (34,12): 692, 693, 694, 695, 696, 697, 698, 699, - (35,0): 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, - (35,12): 712, 713, 714, 715, 716, 717, 718, 719, - (36,0): 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, - (36,12): 732, 733, 734, 735, 736, 737, 738, 739, - (37,0): 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, - (37,12): 752, 753, 754, 755, 756, 757, 758, 759, - (38,0): 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, - (38,12): 772, 773, 774, 775, 776, 777, 778, 779, - (39,0): 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, - (39,12): 792, 793, 794, 795, 796, 797, 798, 799 - } - } - DATASET "dset_contiguous" { - DATATYPE H5T_STD_I32LE - DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) } - DATA { - (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - (0,18): 18, 19, - (1,0): 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - (1,16): 36, 37, 38, 39, - (2,0): 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - (2,16): 56, 57, 58, 59, - (3,0): 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - (3,16): 76, 77, 78, 79, - (4,0): 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - (4,16): 96, 97, 98, 99, - (5,0): 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - (5,13): 113, 114, 115, 116, 117, 118, 119, - (6,0): 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - (6,13): 133, 134, 135, 136, 137, 138, 139, - (7,0): 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - (7,13): 153, 154, 155, 156, 157, 158, 159, - (8,0): 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - (8,13): 173, 174, 175, 176, 177, 178, 179, - (9,0): 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - (9,13): 193, 194, 195, 196, 197, 198, 199, - (10,0): 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - (10,12): 212, 213, 214, 215, 216, 217, 218, 219, - (11,0): 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - (11,12): 232, 233, 234, 235, 236, 237, 238, 239, - (12,0): 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - (12,12): 252, 253, 254, 255, 256, 257, 258, 259, - (13,0): 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - (13,12): 272, 273, 274, 275, 276, 277, 278, 279, - (14,0): 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - (14,12): 292, 293, 294, 295, 296, 297, 298, 299, - (15,0): 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - (15,12): 312, 313, 314, 315, 316, 317, 318, 319, - (16,0): 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - (16,12): 332, 333, 334, 335, 336, 337, 338, 339, - (17,0): 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - (17,12): 352, 353, 354, 355, 356, 357, 358, 359, - (18,0): 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - (18,12): 372, 373, 374, 375, 376, 377, 378, 379, - (19,0): 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - (19,12): 392, 393, 394, 395, 396, 397, 398, 399, - (20,0): 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - (20,12): 412, 413, 414, 415, 416, 417, 418, 419, - (21,0): 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - (21,12): 432, 433, 434, 435, 436, 437, 438, 439, - (22,0): 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - (22,12): 452, 453, 454, 455, 456, 457, 458, 459, - (23,0): 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - (23,12): 472, 473, 474, 475, 476, 477, 478, 479, - (24,0): 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, - (24,12): 492, 493, 494, 495, 496, 497, 498, 499, - (25,0): 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, - (25,12): 512, 513, 514, 515, 516, 517, 518, 519, - (26,0): 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, - (26,12): 532, 533, 534, 535, 536, 537, 538, 539, - (27,0): 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - (27,12): 552, 553, 554, 555, 556, 557, 558, 559, - (28,0): 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, - (28,12): 572, 573, 574, 575, 576, 577, 578, 579, - (29,0): 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, - (29,12): 592, 593, 594, 595, 596, 597, 598, 599, - (30,0): 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, - (30,12): 612, 613, 614, 615, 616, 617, 618, 619, - (31,0): 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, - (31,12): 632, 633, 634, 635, 636, 637, 638, 639, - (32,0): 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, - (32,12): 652, 653, 654, 655, 656, 657, 658, 659, - (33,0): 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, - (33,12): 672, 673, 674, 675, 676, 677, 678, 679, - (34,0): 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, - (34,12): 692, 693, 694, 695, 696, 697, 698, 699, - (35,0): 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, - (35,12): 712, 713, 714, 715, 716, 717, 718, 719, - (36,0): 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, - (36,12): 732, 733, 734, 735, 736, 737, 738, 739, - (37,0): 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, - (37,12): 752, 753, 754, 755, 756, 757, 758, 759, - (38,0): 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, - (38,12): 772, 773, 774, 775, 776, 777, 778, 779, - (39,0): 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, - (39,12): 792, 793, 794, 795, 796, 797, 798, 799 - } - } -} -} diff --git a/tools/h5repack/testfiles/h5repack_layout2.h5 b/tools/h5repack/testfiles/h5repack_layout2.h5 deleted file mode 100644 index f6821e5..0000000 Binary files a/tools/h5repack/testfiles/h5repack_layout2.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_layout3.h5 b/tools/h5repack/testfiles/h5repack_layout3.h5 deleted file mode 100644 index 6d2de41..0000000 Binary files a/tools/h5repack/testfiles/h5repack_layout3.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_layouto.h5 b/tools/h5repack/testfiles/h5repack_layouto.h5 deleted file mode 100644 index a038e68..0000000 Binary files a/tools/h5repack/testfiles/h5repack_layouto.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_named_dtypes.h5 b/tools/h5repack/testfiles/h5repack_named_dtypes.h5 deleted file mode 100644 index 85c1352..0000000 Binary files a/tools/h5repack/testfiles/h5repack_named_dtypes.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_nbit.h5 b/tools/h5repack/testfiles/h5repack_nbit.h5 deleted file mode 100644 index ac71bee..0000000 Binary files a/tools/h5repack/testfiles/h5repack_nbit.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_nested_8bit_enum.h5 b/tools/h5repack/testfiles/h5repack_nested_8bit_enum.h5 deleted file mode 100644 index f1bd8e9..0000000 Binary files a/tools/h5repack/testfiles/h5repack_nested_8bit_enum.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_nested_8bit_enum_deflated.h5 b/tools/h5repack/testfiles/h5repack_nested_8bit_enum_deflated.h5 deleted file mode 100644 index 2e66da2..0000000 Binary files a/tools/h5repack/testfiles/h5repack_nested_8bit_enum_deflated.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_objs.h5 b/tools/h5repack/testfiles/h5repack_objs.h5 deleted file mode 100644 index 284b0ac..0000000 Binary files a/tools/h5repack/testfiles/h5repack_objs.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_refs.h5 b/tools/h5repack/testfiles/h5repack_refs.h5 deleted file mode 100644 index 2a1ec9b..0000000 Binary files a/tools/h5repack/testfiles/h5repack_refs.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_shuffle.h5 b/tools/h5repack/testfiles/h5repack_shuffle.h5 deleted file mode 100644 index c14e2cb..0000000 Binary files a/tools/h5repack/testfiles/h5repack_shuffle.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_soffset.h5 b/tools/h5repack/testfiles/h5repack_soffset.h5 deleted file mode 100644 index 2acd867..0000000 Binary files a/tools/h5repack/testfiles/h5repack_soffset.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/h5repack_szip.h5 b/tools/h5repack/testfiles/h5repack_szip.h5 deleted file mode 100644 index b16d169..0000000 Binary files a/tools/h5repack/testfiles/h5repack_szip.h5 and /dev/null differ diff --git a/tools/h5repack/testfiles/plugin_none.h5repack_layout.UD.h5.tst b/tools/h5repack/testfiles/plugin_none.h5repack_layout.UD.h5.tst deleted file mode 100644 index 4fb6906..0000000 --- a/tools/h5repack/testfiles/plugin_none.h5repack_layout.UD.h5.tst +++ /dev/null @@ -1,14 +0,0 @@ -Objects to modify layout are... -Objects to apply filter are... - Uncompress all ------------------------------------------ - Type Filter (Compression) Name ------------------------------------------ - group / - dset (1.000:1) /dset1 - dset (1.000:1) /dset2 - dset (1.000:1) /dset3 - dset (1.000:1) /dset4 - dset (1.000:1) /dset_chunk - dset (1.000:1) /dset_compact - dset (1.000:1) /dset_contiguous diff --git a/tools/h5repack/testfiles/plugin_test.h5repack_layout.h5.tst b/tools/h5repack/testfiles/plugin_test.h5repack_layout.h5.tst deleted file mode 100644 index 7f9bd6e..0000000 --- a/tools/h5repack/testfiles/plugin_test.h5repack_layout.h5.tst +++ /dev/null @@ -1,14 +0,0 @@ -Objects to modify layout are... -Objects to apply filter are... - User Defined 257 ------------------------------------------ - Type Filter (Compression) Name ------------------------------------------ - group / - dset UD (1.000:1) /dset1 - dset UD (1.000:1) /dset2 - dset UD (1.000:1) /dset3 - dset UD (1.000:1) /dset4 - dset UD (1.000:1) /dset_chunk - dset UD (1.000:1) /dset_compact - dset UD (1.000:1) /dset_contiguous diff --git a/tools/h5repack/testfiles/ublock.bin b/tools/h5repack/testfiles/ublock.bin deleted file mode 100644 index b2d03f3..0000000 --- a/tools/h5repack/testfiles/ublock.bin +++ /dev/null @@ -1 +0,0 @@ -abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrst \ No newline at end of file diff --git a/tools/h5repack/testh5repack_detect_szip.c b/tools/h5repack/testh5repack_detect_szip.c deleted file mode 100644 index e91b2f7..0000000 --- a/tools/h5repack/testh5repack_detect_szip.c +++ /dev/null @@ -1,62 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include -#include "h5repack.h" -#include "h5tools.h" -#include "h5tools_utils.h" -#include "h5test.h" - - -/* Name of tool */ -#define PROGRAMNAME "h5repack_detect_szip" - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: detects szip encoder, prints "yes" or "no" to stdout. - * Intended to be used in test scripts. - * - * Return: - * - * Programmer: - * - * Date: - * - * Comments: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ - - -int main(void) -{ - h5tools_setprogname(PROGRAMNAME); - h5tools_setstatus(EXIT_SUCCESS); - - /* Initialize h5tools lib */ - h5tools_init(); - -#ifdef H5_HAVE_FILTER_SZIP - if (h5tools_can_encode(H5Z_FILTER_SZIP) == 1) { - printf("yes\n"); - return(1); - } -#endif /* H5_HAVE_FILTER_SZIP */ - printf("no\n"); - return(0); -} diff --git a/tools/h5stat/CMakeLists.txt b/tools/h5stat/CMakeLists.txt deleted file mode 100644 index 02721d4..0000000 --- a/tools/h5stat/CMakeLists.txt +++ /dev/null @@ -1,56 +0,0 @@ -cmake_minimum_required (VERSION 3.1.0) -PROJECT (HDF5_TOOLS_H5STAT) - -#----------------------------------------------------------------------------- -# Setup include Directories -#----------------------------------------------------------------------------- -INCLUDE_DIRECTORIES (${HDF5_TOOLS_DIR}/lib) - -# -------------------------------------------------------------------- -# Add the h5stat executables -# -------------------------------------------------------------------- -add_executable (h5stat ${HDF5_TOOLS_H5STAT_SOURCE_DIR}/h5stat.c) -TARGET_NAMING (h5stat STATIC) -TARGET_C_PROPERTIES (h5stat STATIC " " " ") -target_link_libraries (h5stat ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) -set_target_properties (h5stat PROPERTIES FOLDER tools) -set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5stat") - -set (H5_DEP_EXECUTABLES h5stat) - -if (BUILD_TESTING) - # -------------------------------------------------------------------- - # Add the h5stat test executables - # -------------------------------------------------------------------- - if (HDF5_BUILD_GENERATORS) - add_executable (h5stat_gentest ${HDF5_TOOLS_H5STAT_SOURCE_DIR}/h5stat_gentest.c) - TARGET_NAMING (h5stat_gentest STATIC) - TARGET_C_PROPERTIES (h5stat_gentest STATIC " " " ") - target_link_libraries (h5stat_gentest ${HDF5_LIB_TARGET}) - set_target_properties (h5stat_gentest PROPERTIES FOLDER generator/tools) - - #add_test (NAME h5stat_gentest COMMAND $) - endif (HDF5_BUILD_GENERATORS) - - include (CMakeTests.cmake) -endif (BUILD_TESTING) - -############################################################################## -############################################################################## -### I N S T A L L A T I O N ### -############################################################################## -############################################################################## - -#----------------------------------------------------------------------------- -# Rules for Installation of tools using make Install target -#----------------------------------------------------------------------------- - -#INSTALL_PROGRAM_PDB (h5stat ${HDF5_INSTALL_BIN_DIR} toolsapplications) - -install ( - TARGETS - h5stat - EXPORT - ${HDF5_EXPORTED_TARGETS} - RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications -) diff --git a/tools/h5stat/CMakeTests.cmake b/tools/h5stat/CMakeTests.cmake deleted file mode 100644 index fea358a..0000000 --- a/tools/h5stat/CMakeTests.cmake +++ /dev/null @@ -1,237 +0,0 @@ - -############################################################################## -############################################################################## -### T E S T I N G ### -############################################################################## -############################################################################## - - # -------------------------------------------------------------------- - # Copy all the HDF5 files from the test directory into the source directory - # -------------------------------------------------------------------- - set (HDF5_REFERENCE_FILES - h5stat_help1.ddl - h5stat_help2.ddl - h5stat_notexist.ddl - h5stat_nofile.ddl - h5stat_filters.ddl - h5stat_filters-file.ddl - h5stat_filters-F.ddl - h5stat_filters-d.ddl - h5stat_filters-g.ddl - h5stat_filters-dT.ddl - h5stat_filters-UD.ddl - h5stat_filters-UT.ddl - h5stat_tsohm.ddl - h5stat_newgrat.ddl - h5stat_newgrat-UG.ddl - h5stat_newgrat-UA.ddl - h5stat_err1_links.ddl - h5stat_links1.ddl - h5stat_links2.ddl - h5stat_links3.ddl - h5stat_links4.ddl - h5stat_links5.ddl - h5stat_err1_dims.ddl - h5stat_dims1.ddl - h5stat_dims2.ddl - h5stat_err1_numattrs.ddl - h5stat_err2_numattrs.ddl - h5stat_numattrs1.ddl - h5stat_numattrs2.ddl - h5stat_numattrs3.ddl - h5stat_numattrs4.ddl - ) - set (HDF5_REFERENCE_TEST_FILES - h5stat_filters.h5 - h5stat_tsohm.h5 - h5stat_newgrat.h5 - h5stat_threshold.h5 - ) - - foreach (ddl_file ${HDF5_REFERENCE_FILES}) - HDFTEST_COPY_FILE("${HDF5_TOOLS_H5STAT_SOURCE_DIR}/testfiles/${ddl_file}" "${PROJECT_BINARY_DIR}/${ddl_file}" "h5stat_files") - endforeach (ddl_file ${HDF5_REFERENCE_FILES}) - - foreach (h5_file ${HDF5_REFERENCE_TEST_FILES}) - HDFTEST_COPY_FILE("${HDF5_TOOLS_H5STAT_SOURCE_DIR}/testfiles/${h5_file}" "${PROJECT_BINARY_DIR}/${h5_file}" "h5stat_files") - endforeach (h5_file ${HDF5_REFERENCE_TEST_FILES}) - add_custom_target(h5stat_files ALL COMMENT "Copying files needed by h5stat tests" DEPENDS ${h5stat_files_list}) - -############################################################################## -############################################################################## -### T H E T E S T S M A C R O S ### -############################################################################## -############################################################################## - - MACRO (ADD_H5_TEST resultfile resultcode) - # If using memchecker add tests without using scripts - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME H5STAT-${resultfile} COMMAND $ ${ARGN}) - if (NOT ${resultcode} STREQUAL "0") - set_tests_properties (H5STAT-${resultfile} PROPERTIES WILL_FAIL "true") - endif (NOT ${resultcode} STREQUAL "0") - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5STAT-${resultfile} PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5STAT-${resultfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS=${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" - -D "TEST_OUTPUT=${resultfile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}.ddl" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_TEST file) - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## - - if (HDF5_ENABLE_USING_MEMCHECKER) - # Remove any output file left over from previous test run - add_test ( - NAME H5STAT-clearall-objects - COMMAND ${CMAKE_COMMAND} - -E remove - h5stat_help1.out - h5stat_help1.out.err - h5stat_help2.out - h5stat_help2.out.err - h5stat_notexist.out - h5stat_notexist.out.err - h5stat_nofile.out - h5stat_nofile.out.err - h5stat_filters.out - h5stat_filters.out.err - h5stat_filters-file.out - h5stat_filters-file.out.err - h5stat_filters-F.out - h5stat_filters-F.out.err - h5stat_filters-d.out - h5stat_filters-d.out.err - h5stat_filters-g.out - h5stat_filters-g.out.err - h5stat_filters-dT.out - h5stat_filters-dT.out.err - h5stat_filters-UD.out - h5stat_filters-UD.out.err - h5stat_filters-UT.out - h5stat_filters-UT.out.err - h5stat_tsohm.out - h5stat_tsohm.out.err - h5stat_newgrat.out - h5stat_newgrat.out.err - h5stat_newgrat-UG.out - h5stat_newgrat-UG.out.err - h5stat_newgrat-UA.out - h5stat_newgrat-UA.out.err - h5stat_err1_links.out - h5stat_err1_links.out.err - h5stat_links1.out - h5stat_links1.out.err - h5stat_links2.out - h5stat_links2.out.err - h5stat_links3.out - h5stat_links3.out.err - h5stat_links4.out - h5stat_links4.out.err - h5stat_links5.out - h5stat_links5.out.err - h5stat_err1_dims.out - h5stat_err1_dims.out.err - h5stat_dims1.out - h5stat_dims1.out.err - h5stat_dims2.out - h5stat_dims2.out.err - h5stat_err1_numattrs.out - h5stat_err1_numattrs.out.err - h5stat_err2_numattrs.out - h5stat_err2_numattrs.out.err - h5stat_numattrs1.out - h5stat_numattrs1.out.err - h5stat_numattrs2.out - h5stat_numattrs2.out.err - h5stat_numattrs3.out - h5stat_numattrs3.out.err - h5stat_numattrs4.out - h5stat_numattrs4.out.err - ) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5STAT-clearall-objects PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - set (last_test "H5STAT-clearall-objects") - endif (HDF5_ENABLE_USING_MEMCHECKER) - -# Test for help flag - ADD_H5_TEST (h5stat_help1 0 -h) - ADD_H5_TEST (h5stat_help2 0 --help) - -# Test when h5stat a file that does not exist - ADD_H5_TEST (h5stat_notexist 1 notexist.h5) - ADD_H5_TEST (h5stat_nofile 1 '') - -# Test file with groups, compressed datasets, user-applied fileters, etc. -# h5stat_filters.h5 is a copy of ../../testfiles/tfilters.h5 as of release 1.8.0-alpha4 - ADD_H5_TEST (h5stat_filters 0 h5stat_filters.h5) - ADD_H5_TEST (h5stat_filters-file 0 -f h5stat_filters.h5) - ADD_H5_TEST (h5stat_filters-F 0 -F h5stat_filters.h5) - ADD_H5_TEST (h5stat_filters-d 0 -d h5stat_filters.h5) - ADD_H5_TEST (h5stat_filters-g 0 -g h5stat_filters.h5) - ADD_H5_TEST (h5stat_filters-dT 0 -dT h5stat_filters.h5) - ADD_H5_TEST (h5stat_filters-UD 0 -D h5stat_filters.h5) - ADD_H5_TEST (h5stat_filters-UT 0 -T h5stat_filters.h5) -# h5stat_tsohm.h5 is a copy of ../../../test/tsohm.h5 generated by tsohm.c -# as of release 1.8.7-snap0 (on a 64-bit machine) - ADD_H5_TEST (h5stat_tsohm 0 h5stat_tsohm.h5) -# h5stat_newgrat.h5 is generated by h5stat_gentest.c - ADD_H5_TEST (h5stat_newgrat 0 h5stat_newgrat.h5) - ADD_H5_TEST (h5stat_newgrat-UG 0 -G h5stat_newgrat.h5) - ADD_H5_TEST (h5stat_newgrat-UA 0 -A h5stat_newgrat.h5) -# -# Tests for -l (--links) option on h5stat_threshold.h5: -# -l 0 (incorrect threshold value) -# -g -l 8 -# --links=8 -# --links=20 -g - ADD_H5_TEST (h5stat_err1_links 1 -l 0 h5stat_threshold.h5) - ADD_H5_TEST (h5stat_links1 0 -g -l 8 h5stat_threshold.h5) - ADD_H5_TEST (h5stat_links2 0 --links=8 h5stat_threshold.h5) - ADD_H5_TEST (h5stat_links3 0 --links=20 -g h5stat_threshold.h5) -# -# Tests for -l (--links) option on h5stat_newgrat.h5: -# -g -# -g -l 40000 - ADD_H5_TEST (h5stat_links4 0 -g h5stat_newgrat.h5) - ADD_H5_TEST (h5stat_links5 0 -g -l 40000 h5stat_newgrat.h5) -# -# Tests for -m (--dims) option on h5stat_threshold.h5 -# -d --dims=-1 (incorrect threshold value) -# -gd -m 5 -# -d --di=15 - ADD_H5_TEST (h5stat_err1_dims 1 -d --dims=-1 h5stat_threshold.h5) - ADD_H5_TEST (h5stat_dims1 0 -gd -m 5 h5stat_threshold.h5) - ADD_H5_TEST (h5stat_dims2 0 -d --di=15 h5stat_threshold.h5) -# -# Tests for -a option on h5stat_threshold.h5 -# -a -2 (incorrect threshold value) -# --numattrs (without threshold value) -# -AS -a 10 -# -a 1 -# -A --numattrs=25 - ADD_H5_TEST (h5stat_err1_numattrs 1 -a -2 h5stat_threshold.h5) - ADD_H5_TEST (h5stat_err2_numattrs 1 --numattrs h5stat_threshold.h5) - ADD_H5_TEST (h5stat_numattrs1 0 -AS -a 10 h5stat_threshold.h5) - ADD_H5_TEST (h5stat_numattrs2 0 -a 1 h5stat_threshold.h5) - ADD_H5_TEST (h5stat_numattrs3 0 -A --numattrs=25 h5stat_threshold.h5) -# -# Tests for -a option on h5stat_newgrat.h5 -# -A -a 100 - ADD_H5_TEST (h5stat_numattrs4 0 -A -a 100 h5stat_newgrat.h5) -# diff --git a/tools/h5stat/Makefile.am b/tools/h5stat/Makefile.am deleted file mode 100644 index 2a5921f..0000000 --- a/tools/h5stat/Makefile.am +++ /dev/null @@ -1,55 +0,0 @@ -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -## -## Makefile.am -## Run automake to generate a Makefile.in from this file. -# -# HDF5 Library Makefile(.in) -# - -include $(top_srcdir)/config/commence.am - -# Include src directory -AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib - -#test script and program -TEST_PROG=h5stat_gentest -TEST_SCRIPT=testh5stat.sh - -check_PROGRAMS=$(TEST_PROG) -check_SCRIPTS=$(TEST_SCRIPT) -SCRIPT_DEPEND=h5stat$(EXEEXT) - -# These are our main targets, the tools -bin_PROGRAMS=h5stat -bin_SCRIPTS= - -# Add h5stat specific linker flags here -h5stat_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) - -# Tell automake to clean h5redeploy script -CLEANFILES= - -# Temporary files. *.h5 are generated by h5repart_gentest. They should -# copied to the testfiles/ directory if update is required. fst_family*.h5 -# and scd_family*.h5 were created by setting the HDF5_NOCLEANUP variable. -CHECK_CLEANFILES+=*.h5 ../testfiles/fst_family*.h5 ../testfiles/scd_family*.h5 - -# These were generated by configure. Remove them only when distclean. -DISTCLEANFILES=testh5stat.sh - -# All programs rely on hdf5 library and h5tools library -LDADD=$(LIBH5TOOLS) $(LIBHDF5) - -include $(top_srcdir)/config/conclude.am diff --git a/tools/h5stat/h5stat.c b/tools/h5stat/h5stat.c deleted file mode 100644 index a331014..0000000 --- a/tools/h5stat/h5stat.c +++ /dev/null @@ -1,1815 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include -#include -#include "H5private.h" /* Generic Functions */ -#include "h5tools.h" -#include "h5tools_utils.h" -#include "h5tools_ref.h" -#include "h5trav.h" -#include "hdf5.h" - -/* Name of tool */ -#define PROGRAMNAME "h5stat" - -/* Parameters to control statistics gathered */ - -/* Default threshold for small groups/datasets/attributes */ -#define DEF_SIZE_SMALL_GROUPS 10 -#define DEF_SIZE_SMALL_DSETS 10 -#define DEF_SIZE_SMALL_ATTRS 10 - -#define SIZE_SMALL_SECTS 10 - -#define H5_NFILTERS_IMPL 8 /* Number of currently implemented filters + one to - accommodate for user-define filters + one - to accomodate datasets whithout any filters */ - -/* File space management strategies: see H5Fpublic.h for declarations */ -const char *FS_STRATEGY_NAME[] = { - "unknown", - "H5F_FILE_SPACE_ALL_PERSIST", - "H5F_FILE_SPACE_ALL", - "H5F_FILE_SPACE_AGGR_VFD", - "H5F_FILE_SPACE_VFD", - NULL -}; - -/* Datatype statistics for datasets */ -typedef struct dtype_info_t { - hid_t tid; /* ID of datatype */ - unsigned long count; /* Number of types found */ - unsigned long named; /* Number of types that are named */ -} dtype_info_t; - -typedef struct ohdr_info_t { - hsize_t total_size; /* Total size of object headers */ - hsize_t free_size; /* Total free space in object headers */ -} ohdr_info_t; - -/* Info to pass to the iteration functions */ -typedef struct iter_t { - hid_t fid; /* File ID */ - hsize_t filesize; /* Size of the file */ - unsigned long uniq_groups; /* Number of unique groups */ - unsigned long uniq_dsets; /* Number of unique datasets */ - unsigned long uniq_dtypes; /* Number of unique named datatypes */ - unsigned long uniq_links; /* Number of unique links */ - unsigned long uniq_others; /* Number of other unique objects */ - - unsigned long max_links; /* Maximum # of links to an object */ - hsize_t max_fanout; /* Maximum fanout from a group */ - unsigned long *num_small_groups; /* Size of small groups tracked */ - unsigned group_nbins; /* Number of bins for group counts */ - unsigned long *group_bins; /* Pointer to array of bins for group counts */ - ohdr_info_t group_ohdr_info; /* Object header information for groups */ - - hsize_t max_attrs; /* Maximum attributes from a group */ - unsigned long *num_small_attrs; /* Size of small attributes tracked */ - unsigned attr_nbins; /* Number of bins for attribute counts */ - unsigned long *attr_bins; /* Pointer to array of bins for attribute counts */ - - unsigned max_dset_rank; /* Maximum rank of dataset */ - unsigned long dset_rank_count[H5S_MAX_RANK]; /* Number of datasets of each rank */ - hsize_t max_dset_dims; /* Maximum dimension size of dataset */ - unsigned long *small_dset_dims; /* Size of dimensions of small datasets tracked */ - unsigned long dset_layouts[H5D_NLAYOUTS]; /* Type of storage for each dataset */ - unsigned long dset_comptype[H5_NFILTERS_IMPL]; /* Number of currently implemented filters */ - unsigned long dset_ntypes; /* Number of diff. dataset datatypes found */ - dtype_info_t *dset_type_info; /* Pointer to dataset datatype information found */ - unsigned dset_dim_nbins; /* Number of bins for dataset dimensions */ - unsigned long *dset_dim_bins; /* Pointer to array of bins for dataset dimensions */ - ohdr_info_t dset_ohdr_info; /* Object header information for datasets */ - hsize_t dset_storage_size; /* Size of raw data for datasets */ - hsize_t dset_external_storage_size; /* Size of raw data for datasets with external storage */ - ohdr_info_t dtype_ohdr_info; /* Object header information for datatypes */ - hsize_t groups_btree_storage_size; /* btree size for group */ - hsize_t groups_heap_storage_size; /* heap size for group */ - hsize_t attrs_btree_storage_size; /* btree size for attributes (1.8) */ - hsize_t attrs_heap_storage_size; /* fractal heap size for attributes (1.8) */ - hsize_t SM_hdr_storage_size; /* header size for SOHM table (1.8) */ - hsize_t SM_index_storage_size; /* index (btree & list) size for SOHM table (1.8) */ - hsize_t SM_heap_storage_size; /* fractal heap size for SOHM table (1.8) */ - hsize_t super_size; /* superblock size */ - hsize_t super_ext_size; /* superblock extension size */ - hsize_t ublk_size; /* user block size (if exists) */ - H5F_file_space_type_t fs_strategy; /* File space management strategy */ - hsize_t fs_threshold; /* Free-space section threshold */ - hsize_t free_space; /* amount of freespace in the file */ - hsize_t free_hdr; /* size of free space manager metadata in the file */ - unsigned long num_small_sects[SIZE_SMALL_SECTS]; /* Size of small free-space sections */ - unsigned sect_nbins; /* Number of bins for free-space section sizes */ - unsigned long *sect_bins; /* Pointer to array of bins for free-space section sizes */ - hsize_t datasets_index_storage_size;/* meta size for chunked dataset's indexing type */ - hsize_t datasets_heap_storage_size; /* heap size for dataset with external storage */ - unsigned long nexternal; /* Number of external files for a dataset */ - int local; /* Flag to indicate iteration over the object*/ -} iter_t; - - -static int display_all = TRUE; - -/* Enable the printing of selected statistics */ -static int display_file = FALSE; /* display file information */ -static int display_group = FALSE; /* display groups information */ -static int display_dset = FALSE; /* display datasets information */ -static int display_dset_dtype_meta = FALSE; /* display datasets' datatype information */ -static int display_attr = FALSE; /* display attributes information */ -static int display_free_sections = FALSE; /* display free space information */ -static int display_summary = FALSE; /* display summary of file space information */ - -static int display_file_metadata = FALSE; /* display file space info for file's metadata */ -static int display_group_metadata = FALSE; /* display file space info for groups' metadata */ -static int display_dset_metadata = FALSE; /* display file space info for datasets' metadata */ - -static int display_object = FALSE; /* not implemented yet */ - -/* Initialize threshold for small groups/datasets/attributes */ -static int sgroups_threshold = DEF_SIZE_SMALL_GROUPS; -static int sdsets_threshold = DEF_SIZE_SMALL_DSETS; -static int sattrs_threshold = DEF_SIZE_SMALL_ATTRS; - -/* a structure for handling the order command-line parameters come in */ -struct handler_t { - size_t obj_count; - char **obj; -}; - -static const char *s_opts ="Aa:Ddm:FfhGgl:sSTO:V"; -/* e.g. "filemetadata" has to precede "file"; "groupmetadata" has to precede "group" etc. */ -static struct long_options l_opts[] = { - {"help", no_arg, 'h'}, - {"hel", no_arg, 'h'}, - {"he", no_arg, 'h'}, - {"filemetadata", no_arg, 'F'}, - {"filemetadat", no_arg, 'F'}, - {"filemetada", no_arg, 'F'}, - {"filemetad", no_arg, 'F'}, - {"filemeta", no_arg, 'F'}, - {"filemet", no_arg, 'F'}, - {"fileme", no_arg, 'F'}, - {"filem", no_arg, 'F'}, - {"file", no_arg, 'f'}, - {"fil", no_arg, 'f'}, - {"fi", no_arg, 'f'}, - {"groupmetadata", no_arg, 'G'}, - {"groupmetadat", no_arg, 'G'}, - {"groupmetada", no_arg, 'G'}, - {"groupmetad", no_arg, 'G'}, - {"groupmeta", no_arg, 'G'}, - {"groupmet", no_arg, 'G'}, - {"groupme", no_arg, 'G'}, - {"groupm", no_arg, 'G'}, - {"group", no_arg, 'g'}, - {"grou", no_arg, 'g'}, - {"gro", no_arg, 'g'}, - {"gr", no_arg, 'g'}, - { "links", require_arg, 'l' }, - { "link", require_arg, 'l' }, - { "lin", require_arg, 'l' }, - { "li", require_arg, 'l' }, - {"dsetmetadata", no_arg, 'D'}, - {"dsetmetadat", no_arg, 'D'}, - {"dsetmetada", no_arg, 'D'}, - {"dsetmetad", no_arg, 'D'}, - {"dsetmeta", no_arg, 'D'}, - {"dsetmet", no_arg, 'D'}, - {"dsetme", no_arg, 'D'}, - {"dsetm", no_arg, 'D'}, - {"dset", no_arg, 'd'}, - {"dse", no_arg, 'd'}, - {"ds", no_arg, 'd'}, - {"dims", require_arg, 'm'}, - {"dim", require_arg, 'm'}, - {"di", require_arg, 'm'}, - {"dtypemetadata", no_arg, 'T'}, - {"dtypemetadat", no_arg, 'T'}, - {"dtypemetada", no_arg, 'T'}, - {"dtypemetad", no_arg, 'T'}, - {"dtypemeta", no_arg, 'T'}, - {"dtypemet", no_arg, 'T'}, - {"dtypeme", no_arg, 'T'}, - {"dtypem", no_arg, 'T'}, - {"dtype", no_arg, 'T'}, - {"dtyp", no_arg, 'T'}, - {"dty", no_arg, 'T'}, - {"dt", no_arg, 'T'}, - { "object", require_arg, 'O' }, - { "objec", require_arg, 'O' }, - { "obje", require_arg, 'O' }, - { "obj", require_arg, 'O' }, - { "ob", require_arg, 'O' }, - { "version", no_arg, 'V' }, - { "versio", no_arg, 'V' }, - { "versi", no_arg, 'V' }, - { "vers", no_arg, 'V' }, - { "ver", no_arg, 'V' }, - { "ve", no_arg, 'V' }, - { "attribute", no_arg, 'A' }, - { "attribut", no_arg, 'A' }, - { "attribu", no_arg, 'A' }, - { "attrib", no_arg, 'A' }, - { "attri", no_arg, 'A' }, - { "attr", no_arg, 'A' }, - { "att", no_arg, 'A' }, - { "at", no_arg, 'A' }, - { "numattrs", require_arg, 'a' }, - { "numattr", require_arg, 'a' }, - { "numatt", require_arg, 'a' }, - { "numat", require_arg, 'a' }, - { "numa", require_arg, 'a' }, - { "num", require_arg, 'a' }, - { "nu", require_arg, 'a' }, - { "freespace", no_arg, 's' }, - { "freespac", no_arg, 's' }, - { "freespa", no_arg, 's' }, - { "freesp", no_arg, 's' }, - { "frees", no_arg, 's' }, - { "free", no_arg, 's' }, - { "fre", no_arg, 's' }, - { "fr", no_arg, 's' }, - { "summary", no_arg, 'S' }, - { "summar", no_arg, 'S' }, - { "summa", no_arg, 'S' }, - { "summ", no_arg, 'S' }, - { "sum", no_arg, 'S' }, - { "su", no_arg, 'S' }, - { NULL, 0, '\0' } -}; - -static void -leave(int ret) -{ - h5tools_close(); - HDexit(ret); -} - - - -/*------------------------------------------------------------------------- - * Function: usage - * - * Purpose: Compute the ceiling of log_10(x) - * - * Return: >0 on success, 0 on failure - * - *------------------------------------------------------------------------- - */ -static void usage(const char *prog) -{ - HDfflush(stdout); - HDfprintf(stdout, "Usage: %s [OPTIONS] file\n", prog); - HDfprintf(stdout, "\n"); - HDfprintf(stdout, " OPTIONS\n"); - HDfprintf(stdout, " -h, --help Print a usage message and exit\n"); - HDfprintf(stdout, " -V, --version Print version number and exit\n"); - HDfprintf(stdout, " -f, --file Print file information\n"); - HDfprintf(stdout, " -F, --filemetadata Print file space information for file's metadata\n"); - HDfprintf(stdout, " -g, --group Print group information\n"); - HDfprintf(stdout, " -l N, --links=N Set the threshold for the # of links when printing\n"); - HDfprintf(stdout, " information for small groups. N is an integer greater\n"); - HDfprintf(stdout, " than 0. The default threshold is 10.\n"); - HDfprintf(stdout, " -G, --groupmetadata Print file space information for groups' metadata\n"); - HDfprintf(stdout, " -d, --dset Print dataset information\n"); - HDfprintf(stdout, " -m N, --dims=N Set the threshold for the dimension sizes when printing\n"); - HDfprintf(stdout, " information for small datasets. N is an integer greater\n"); - HDfprintf(stdout, " than 0. The default threshold is 10.\n"); - HDfprintf(stdout, " -D, --dsetmetadata Print file space information for datasets' metadata\n"); - HDfprintf(stdout, " -T, --dtypemetadata Print datasets' datatype information\n"); - HDfprintf(stdout, " -A, --attribute Print attribute information\n"); - HDfprintf(stdout, " -a N, --numattrs=N Set the threshold for the # of attributes when printing\n"); - HDfprintf(stdout, " information for small # of attributes. N is an integer greater\n"); - HDfprintf(stdout, " than 0. The default threshold is 10.\n"); - HDfprintf(stdout, " -s, --freespace Print free space information\n"); - HDfprintf(stdout, " -S, --summary Print summary of file space information\n"); -} - - -/*------------------------------------------------------------------------- - * Function: ceil_log10 - * - * Purpose: Compute the ceiling of log_10(x) - * - * Return: >0 on success, 0 on failure - * - * Programmer: Quincey Koziol - * Monday, August 22, 2005 - * - *------------------------------------------------------------------------- - */ -H5_ATTR_CONST static unsigned -ceil_log10(unsigned long x) -{ - unsigned long pow10 = 1; - unsigned ret = 0; - - while(x >= pow10) { - pow10 *= 10; - ret++; - } /* end while */ - - return ret; -} /* ceil_log10() */ - - -/*------------------------------------------------------------------------- - * Function: attribute_stats - * - * Purpose: Gather statistics about attributes on an object - * - * Return: Success: 0 - * - * Failure: -1 - * - * Programmer: Quincey Koziol - * Tuesday, July 17, 2007 - * - *------------------------------------------------------------------------- - */ -static herr_t -attribute_stats(iter_t *iter, const H5O_info_t *oi) -{ - unsigned bin; /* "bin" the number of objects falls in */ - - /* Update dataset & attribute metadata info */ - iter->attrs_btree_storage_size += oi->meta_size.attr.index_size; - iter->attrs_heap_storage_size += oi->meta_size.attr.heap_size; - - /* Update small # of attribute count & limits */ - if(oi->num_attrs <= (hsize_t)sattrs_threshold) - (iter->num_small_attrs[(size_t)oi->num_attrs])++; - if(oi->num_attrs > iter->max_attrs) - iter->max_attrs = oi->num_attrs; - - /* Add attribute count to proper bin */ - bin = ceil_log10((unsigned long)oi->num_attrs); - if((bin + 1) > iter->attr_nbins) { - iter->attr_bins = (unsigned long *)HDrealloc(iter->attr_bins, (bin + 1) * sizeof(unsigned long)); - HDassert(iter->attr_bins); - - /* Initialize counts for intermediate bins */ - while(iter->attr_nbins < bin) - iter->attr_bins[iter->attr_nbins++] = 0; - iter->attr_nbins++; - - /* Initialize count for new bin */ - iter->attr_bins[bin] = 1; - } /* end if */ - else - (iter->attr_bins[bin])++; - - return 0; -} /* end attribute_stats() */ - - -/*------------------------------------------------------------------------- - * Function: group_stats - * - * Purpose: Gather statistics about the group - * - * Return: Success: 0 - * - * Failure: -1 - * - * Programmer: Quincey Koziol - * Tuesday, August 16, 2005 - * - * Modifications: Refactored code from the walk_function - * EIP, Wednesday, August 16, 2006 - * - * Vailin Choi 12 July 2007 - * 1. Gathered storage info for btree and heap - * (groups and attributes) - * 2. Gathered info for attributes - * - * Vailin Choi 14 July 2007 - * Cast "num_objs" and "num_attrs" to size_t - * Due to the -Mbounds problem for the pgi-32 bit compiler on indexing - * - *------------------------------------------------------------------------- - */ -static herr_t -group_stats(iter_t *iter, const char *name, const H5O_info_t *oi) -{ - H5G_info_t ginfo; /* Group information */ - unsigned bin; /* "bin" the number of objects falls in */ - herr_t ret; - - /* Gather statistics about this type of object */ - iter->uniq_groups++; - - /* Get object header information */ - iter->group_ohdr_info.total_size += oi->hdr.space.total; - iter->group_ohdr_info.free_size += oi->hdr.space.free; - - /* Get group information */ - ret = H5Gget_info_by_name(iter->fid, name, &ginfo, H5P_DEFAULT); - HDassert(ret >= 0); - - /* Update link stats */ - /* Collect statistics for small groups */ - if(ginfo.nlinks < (hsize_t)sgroups_threshold) - (iter->num_small_groups[(size_t)ginfo.nlinks])++; - /* Determine maximum link count */ - if(ginfo.nlinks > iter->max_fanout) - iter->max_fanout = ginfo.nlinks; - - /* Add group count to proper bin */ - bin = ceil_log10((unsigned long)ginfo.nlinks); - if((bin + 1) > iter->group_nbins) { - /* Allocate more storage for info about dataset's datatype */ - iter->group_bins = (unsigned long *)HDrealloc(iter->group_bins, (bin + 1) * sizeof(unsigned long)); - HDassert(iter->group_bins); - - /* Initialize counts for intermediate bins */ - while(iter->group_nbins < bin) - iter->group_bins[iter->group_nbins++] = 0; - iter->group_nbins++; - - /* Initialize count for new bin */ - iter->group_bins[bin] = 1; - } /* end if */ - else - (iter->group_bins[bin])++; - - /* Update group metadata info */ - iter->groups_btree_storage_size += oi->meta_size.obj.index_size; - iter->groups_heap_storage_size += oi->meta_size.obj.heap_size; - - /* Update attribute metadata info */ - ret = attribute_stats(iter, oi); - HDassert(ret >= 0); - - return 0; -} /* end group_stats() */ - - -/*------------------------------------------------------------------------- - * Function: dataset_stats - * - * Purpose: Gather statistics about the dataset - * - * Return: Success: 0 - * - * Failure: -1 - * - * Programmer: Quincey Koziol - * Tuesday, August 16, 2005 - * - *------------------------------------------------------------------------- - */ -static herr_t -dataset_stats(iter_t *iter, const char *name, const H5O_info_t *oi) -{ - unsigned bin; /* "bin" the number of objects falls in */ - hid_t did; /* Dataset ID */ - hid_t sid; /* Dataspace ID */ - hid_t tid; /* Datatype ID */ - hid_t dcpl; /* Dataset creation property list ID */ - hsize_t dims[H5S_MAX_RANK];/* Dimensions of dataset */ - H5D_layout_t lout; /* Layout of dataset */ - unsigned type_found; /* Whether the dataset's datatype was */ - /* already found */ - int ndims; /* Number of dimensions of dataset */ - hsize_t storage; /* Size of dataset storage */ - unsigned u; /* Local index variable */ - int num_ext; /* Number of external files for a dataset */ - int nfltr; /* Number of filters for a dataset */ - H5Z_filter_t fltr; /* Filter identifier */ - herr_t ret; - - /* Gather statistics about this type of object */ - iter->uniq_dsets++; - - /* Get object header information */ - iter->dset_ohdr_info.total_size += oi->hdr.space.total; - iter->dset_ohdr_info.free_size += oi->hdr.space.free; - - did = H5Dopen2(iter->fid, name, H5P_DEFAULT); - HDassert(did > 0); - - /* Update dataset metadata info */ - iter->datasets_index_storage_size += oi->meta_size.obj.index_size; - iter->datasets_heap_storage_size += oi->meta_size.obj.heap_size; - - /* Update attribute metadata info */ - ret = attribute_stats(iter, oi); - HDassert(ret >= 0); - - /* Get storage info */ - storage = H5Dget_storage_size(did); - - /* Gather layout statistics */ - dcpl = H5Dget_create_plist(did); - HDassert(dcpl > 0); - - lout = H5Pget_layout(dcpl); - HDassert(lout >= 0); - - /* Object header's total size for H5D_COMPACT layout includes raw data size */ - /* "storage" also includes H5D_COMPACT raw data size */ - if(lout == H5D_COMPACT) - iter->dset_ohdr_info.total_size -= storage; - - /* Track the layout type for dataset */ - (iter->dset_layouts[lout])++; - - /* Get the number of external files for the dataset */ - num_ext = H5Pget_external_count(dcpl); - assert (num_ext >= 0); - - /* Accumulate raw data size accordingly */ - if(num_ext) { - iter->nexternal += (unsigned long)num_ext; - iter->dset_external_storage_size += (unsigned long)storage; - } else - iter->dset_storage_size += storage; - - /* Gather dataspace statistics */ - sid = H5Dget_space(did); - HDassert(sid > 0); - - ndims = H5Sget_simple_extent_dims(sid, dims, NULL); - HDassert(ndims >= 0); - - /* Check for larger rank of dataset */ - if((unsigned)ndims > iter->max_dset_rank) - iter->max_dset_rank = (unsigned)ndims; - - /* Track the number of datasets with each rank */ - (iter->dset_rank_count[ndims])++; - - /* Only gather dim size statistics on 1-D datasets */ - if(ndims == 1) { - /* Determine maximum dimension size */ - if(dims[0] > iter->max_dset_dims) - iter->max_dset_dims = dims[0]; - /* Collect statistics for small datasets */ - if(dims[0] < (hsize_t)sdsets_threshold) - (iter->small_dset_dims[(size_t)dims[0]])++; - - /* Add dim count to proper bin */ - bin = ceil_log10((unsigned long)dims[0]); - if((bin + 1) > iter->dset_dim_nbins) { - /* Allocate more storage for info about dataset's datatype */ - iter->dset_dim_bins = (unsigned long *)HDrealloc(iter->dset_dim_bins, (bin + 1) * sizeof(unsigned long)); - HDassert(iter->dset_dim_bins); - - /* Initialize counts for intermediate bins */ - while(iter->dset_dim_nbins < bin) - iter->dset_dim_bins[iter->dset_dim_nbins++] = 0; - iter->dset_dim_nbins++; - - /* Initialize count for this bin */ - iter->dset_dim_bins[bin] = 1; - } /* end if */ - else - (iter->dset_dim_bins[bin])++; - } /* end if */ - - ret = H5Sclose(sid); - HDassert(ret >= 0); - - /* Gather datatype statistics */ - tid = H5Dget_type(did); - HDassert(tid > 0); - - type_found = FALSE; - for(u = 0; u < iter->dset_ntypes; u++) - if(H5Tequal(iter->dset_type_info[u].tid, tid) > 0) { - type_found = TRUE; - break; - } /* end for */ - if(type_found) - (iter->dset_type_info[u].count)++; - else { - unsigned curr_ntype = (unsigned)iter->dset_ntypes; - - /* Increment # of datatypes seen for datasets */ - iter->dset_ntypes++; - - /* Allocate more storage for info about dataset's datatype */ - iter->dset_type_info = (dtype_info_t *)HDrealloc(iter->dset_type_info, iter->dset_ntypes * sizeof(dtype_info_t)); - HDassert(iter->dset_type_info); - - /* Initialize information about datatype */ - iter->dset_type_info[curr_ntype].tid = H5Tcopy(tid); - HDassert(iter->dset_type_info[curr_ntype].tid > 0); - iter->dset_type_info[curr_ntype].count = 1; - iter->dset_type_info[curr_ntype].named = 0; - - /* Set index for later */ - u = curr_ntype; - } /* end else */ - - /* Check if the datatype is a named datatype */ - if(H5Tcommitted(tid) > 0) - (iter->dset_type_info[u].named)++; - - ret = H5Tclose(tid); - HDassert(ret >= 0); - - /* Track different filters */ - if((nfltr = H5Pget_nfilters(dcpl)) >= 0) { - if(nfltr == 0) - iter->dset_comptype[0]++; - for(u = 0; u < (unsigned)nfltr; u++) { - fltr = H5Pget_filter2(dcpl, u, 0, 0, 0, 0, 0, NULL); - if(fltr >= 0) { - if(fltr < (H5_NFILTERS_IMPL - 1)) - iter->dset_comptype[fltr]++; - else - iter->dset_comptype[H5_NFILTERS_IMPL - 1]++; /*other filters*/ - } /* end if */ - } /* end for */ - } /* endif nfltr */ - - ret = H5Pclose(dcpl); - HDassert(ret >= 0); - - ret = H5Dclose(did); - HDassert(ret >= 0); - - return 0; -} /* end dataset_stats() */ - - -/*------------------------------------------------------------------------- - * Function: datatype_stats - * - * Purpose: Gather statistics about the datatype - * - * Return: Success: 0 - * Failure: -1 - * - * Programmer: Vailin Choi; July 7th, 2009 - * - *------------------------------------------------------------------------- - */ -static herr_t -datatype_stats(iter_t *iter, const H5O_info_t *oi) -{ - herr_t ret; - - /* Gather statistics about this type of object */ - iter->uniq_dtypes++; - - /* Get object header information */ - iter->dtype_ohdr_info.total_size += oi->hdr.space.total; - iter->dtype_ohdr_info.free_size += oi->hdr.space.free; - - /* Update attribute metadata info */ - ret = attribute_stats(iter, oi); - HDassert(ret >= 0); - - return 0; -} /* end datatype_stats() */ - - -/*------------------------------------------------------------------------- - * Function: obj_stats - * - * Purpose: Gather statistics about an object - * - * Return: Success: 0 - * Failure: -1 - * - * Programmer: Quincey Koziol - * Tuesday, November 6, 2007 - * - *------------------------------------------------------------------------- - */ -static herr_t -obj_stats(const char *path, const H5O_info_t *oi, const char *already_visited, - void *_iter) -{ - iter_t *iter = (iter_t *)_iter; - - /* If the object has already been seen then just return */ - if(NULL == already_visited) { - /* Gather some general statistics about the object */ - if(oi->rc > iter->max_links) - iter->max_links = oi->rc; - - switch(oi->type) { - case H5O_TYPE_GROUP: - group_stats(iter, path, oi); - break; - - case H5O_TYPE_DATASET: - dataset_stats(iter, path, oi); - break; - - case H5O_TYPE_NAMED_DATATYPE: - datatype_stats(iter, oi); - break; - - case H5O_TYPE_UNKNOWN: - case H5O_TYPE_NTYPES: - default: - /* Gather statistics about this type of object */ - iter->uniq_others++; - break; - } /* end switch */ - } /* end if */ - - return 0; -} /* end obj_stats() */ - - -/*------------------------------------------------------------------------- - * Function: lnk_stats - * - * Purpose: Gather statistics about a link - * - * Return: Success: 0 - * - * Failure: -1 - * - * Programmer: Quincey Koziol - * Tuesday, November 6, 2007 - * - *------------------------------------------------------------------------- - */ -static herr_t -lnk_stats(const char H5_ATTR_UNUSED *path, const H5L_info_t *li, void *_iter) -{ - iter_t *iter = (iter_t *)_iter; - - switch(li->type) { - case H5L_TYPE_SOFT: - case H5L_TYPE_EXTERNAL: - /* Gather statistics about links and UD links */ - iter->uniq_links++; - break; - - case H5L_TYPE_HARD: - case H5L_TYPE_MAX: - case H5L_TYPE_ERROR: - default: - /* Gather statistics about this type of object */ - iter->uniq_others++; - break; - } /* end switch() */ - - return 0; -} /* end lnk_stats() */ - -/*------------------------------------------------------------------------- - * Function: freespace_stats - * - * Purpose: Gather statistics for free space sections in the file - * - * Return: Success: 0 - * Failure: -1 - * - * Programmer: Vailin Choi; July 7th, 2009 - * - *------------------------------------------------------------------------- - */ -static herr_t -freespace_stats(hid_t fid, iter_t *iter) -{ - H5F_sect_info_t *sect_info = NULL; /* Free space sections */ - ssize_t nsects; /* Number of free space sections */ - size_t u; /* Local index variable */ - - /* Query section information */ - if((nsects = H5Fget_free_sections(fid, H5FD_MEM_DEFAULT, 0, NULL)) < 0) - return(FAIL); - else if(nsects) { - if(NULL == (sect_info = (H5F_sect_info_t *)HDcalloc((size_t)nsects, sizeof(H5F_sect_info_t)))) - return(FAIL); - nsects = H5Fget_free_sections(fid, H5FD_MEM_DEFAULT, (size_t)nsects, sect_info); - HDassert(nsects); - } /* end else-if */ - - for(u = 0; u < (size_t)nsects; u++) { - unsigned bin; /* "bin" the number of objects falls in */ - - if(sect_info[u].size < SIZE_SMALL_SECTS) - (iter->num_small_sects[(size_t)sect_info[u].size])++; - - /* Add section size to proper bin */ - bin = ceil_log10((unsigned long)sect_info[u].size); - if(bin >= iter->sect_nbins) { - /* Allocate more storage for section info */ - iter->sect_bins = (unsigned long *)HDrealloc(iter->sect_bins, (bin + 1) * sizeof(unsigned long)); - HDassert(iter->sect_bins); - - /* Initialize counts for intermediate bins */ - while(iter->sect_nbins < bin) - iter->sect_bins[iter->sect_nbins++] = 0; - iter->sect_nbins++; - - /* Initialize count for this bin */ - iter->sect_bins[bin] = 1; - } /* end if */ - else - (iter->sect_bins[bin])++; - } /* end for */ - - if(sect_info) - HDfree(sect_info); - - return 0; -} /* end freespace_stats() */ - - -/*------------------------------------------------------------------------- - * Function: hand_free - * - * Purpose: Free handler structure - * - * Return: Success: 0 - * - * Failure: Never fails - * - *------------------------------------------------------------------------- - */ -static void -hand_free(struct handler_t *hand) -{ - if(hand) { - unsigned u; - - for(u = 0; u < hand->obj_count; u++) - if(hand->obj[u]) { - HDfree(hand->obj[u]); - hand->obj[u] = NULL; - } /* end if */ - hand->obj_count = 0; - HDfree(hand->obj); - HDfree(hand); - } /* end if */ -} /* end hand_free() */ - - -/*------------------------------------------------------------------------- - * Function: parse_command_line - * - * Purpose: Parses command line and sets up global variable to control output - * - * Return: Success: 0 - * - * Failure: -1 - * - * Programmer: Elena Pourmal - * Saturday, August 12, 2006 - * - *------------------------------------------------------------------------- - */ -static int -parse_command_line(int argc, const char *argv[], struct handler_t **hand_ret) -{ - int opt; - unsigned u; - struct handler_t *hand = NULL; - - /* parse command line options */ - while((opt = get_option(argc, argv, s_opts, l_opts)) != EOF) { - switch((char)opt) { - case 'h': - usage(h5tools_getprogname()); - h5tools_setstatus(EXIT_SUCCESS); - goto done; - break; - - case 'V': - print_version(h5tools_getprogname()); - h5tools_setstatus(EXIT_SUCCESS); - goto done; - break; - - case 'F': - display_all = FALSE; - display_file_metadata = TRUE; - break; - - case 'f': - display_all = FALSE; - display_file = TRUE; - break; - - case 'G': - display_all = FALSE; - display_group_metadata = TRUE; - break; - - case 'g': - display_all = FALSE; - display_group = TRUE; - break; - - case 'l': - if(opt_arg) { - sgroups_threshold = HDatoi(opt_arg); - if(sgroups_threshold < 1) { - error_msg("Invalid threshold for small groups\n"); - goto error; - } - } else - error_msg("Missing threshold for small groups\n"); - - break; - - case 'D': - display_all = FALSE; - display_dset_metadata = TRUE; - break; - - case 'd': - display_all = FALSE; - display_dset = TRUE; - break; - - case 'm': - if(opt_arg) { - sdsets_threshold = HDatoi(opt_arg); - if(sdsets_threshold < 1) { - error_msg("Invalid threshold for small datasets\n"); - goto error; - } - } else - error_msg("Missing threshold for small datasets\n"); - - break; - - case 'T': - display_all = FALSE; - display_dset_dtype_meta = TRUE; - break; - - case 'A': - display_all = FALSE; - display_attr = TRUE; - break; - - case 'a': - if(opt_arg) { - sattrs_threshold = HDatoi(opt_arg); - if(sattrs_threshold < 1) { - error_msg("Invalid threshold for small # of attributes\n"); - goto error; - } - } else - error_msg("Missing threshold for small # of attributes\n"); - - break; - - case 's': - display_all = FALSE; - display_free_sections = TRUE; - break; - - case 'S': - display_all = FALSE; - display_summary = TRUE; - break; - - case 'O': - display_all = FALSE; - display_object = TRUE; - - /* Allocate space to hold the command line info */ - if(NULL == (hand = (struct handler_t *)HDcalloc((size_t)1, sizeof(struct handler_t)))) { - error_msg("unable to allocate memory for object struct\n"); - goto error; - } /* end if */ - - /* Allocate space to hold the object strings */ - hand->obj_count = (size_t)argc; - if(NULL == (hand->obj = (char **)HDcalloc((size_t)argc, sizeof(char *)))) { - error_msg("unable to allocate memory for object array\n"); - goto error; - } /* end if */ - - /* Store object names */ - for(u = 0; u < hand->obj_count; u++) - if(NULL == (hand->obj[u] = HDstrdup(opt_arg))) { - error_msg("unable to allocate memory for object name\n"); - goto error; - } /* end if */ - break; - - default: - usage(h5tools_getprogname()); - goto error; - } /* end switch */ - } /* end while */ - - /* check for file name to be processed */ - if(argc <= opt_ind) { - error_msg("missing file name\n"); - usage(h5tools_getprogname()); - goto error; - } /* end if */ - - /* Set handler structure */ - *hand_ret = hand; - -done: - return 0; - -error: - hand_free(hand); - h5tools_setstatus(EXIT_FAILURE); - - return -1; -} - - -/*------------------------------------------------------------------------- - * Function: iter_free - * - * Purpose: Free iter structure - * - * Return: Success: 0 - * - * Failure: Never fails - * - *------------------------------------------------------------------------- - */ -static void -iter_free(iter_t *iter) -{ - - /* Clear array of bins for group counts */ - if(iter->group_bins) { - HDfree(iter->group_bins); - iter->group_bins = NULL; - } /* end if */ - - /* Clear array for tracking small groups */ - if(iter->num_small_groups) { - HDfree(iter->num_small_groups); - iter->num_small_groups = NULL; - } /* end if */ - - /* Clear array of bins for attribute counts */ - if(iter->attr_bins) { - HDfree(iter->attr_bins); - iter->attr_bins = NULL; - } /* end if */ - - /* Clear array for tracking small attributes */ - if(iter->num_small_attrs) { - HDfree(iter->num_small_attrs); - iter->num_small_attrs= NULL; - } /* end if */ - - /* Clear dataset datatype information found */ - if(iter->dset_type_info) { - HDfree(iter->dset_type_info); - iter->dset_type_info = NULL; - } /* end if */ - - /* Clear array of bins for dataset dimensions */ - if(iter->dset_dim_bins) { - HDfree(iter->dset_dim_bins); - iter->dset_dim_bins = NULL; - } /* end if */ - - /* Clear array of tracking 1-D small datasets */ - if(iter->small_dset_dims) { - HDfree(iter->small_dset_dims); - iter->small_dset_dims = NULL; - } /* end if */ - - /* Clear array of bins for free-space section sizes */ - if(iter->sect_bins) { - HDfree(iter->sect_bins); - iter->sect_bins = NULL; - } /* end if */ -} /* end iter_free() */ - - -/*------------------------------------------------------------------------- - * Function: print_file_info - * - * Purpose: Prints information about file - * - * Return: Success: 0 - * - * Failure: Never fails - * - * Programmer: Elena Pourmal - * Saturday, August 12, 2006 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static herr_t -print_file_info(const iter_t *iter) -{ - printf("File information\n"); - printf("\t# of unique groups: %lu\n", iter->uniq_groups); - printf("\t# of unique datasets: %lu\n", iter->uniq_dsets); - printf("\t# of unique named datatypes: %lu\n", iter->uniq_dtypes); - printf("\t# of unique links: %lu\n", iter->uniq_links); - printf("\t# of unique other: %lu\n", iter->uniq_others); - printf("\tMax. # of links to object: %lu\n", iter->max_links); - HDfprintf(stdout, "\tMax. # of objects in group: %Hu\n", iter->max_fanout); - - return 0; -} /* print_file_info() */ - - -/*------------------------------------------------------------------------- - * Function: print_file_metadata - * - * Purpose: Prints file space information for file's metadata - * - * Return: Success: 0 - * - * Failure: Never fails - * - * Programmer: Elena Pourmal - * Saturday, August 12, 2006 - * - *------------------------------------------------------------------------- - */ -static herr_t -print_file_metadata(const iter_t *iter) -{ - HDfprintf(stdout, "File space information for file metadata (in bytes):\n"); - HDfprintf(stdout, "\tSuperblock: %Hu\n", iter->super_size); - HDfprintf(stdout, "\tSuperblock extension: %Hu\n", iter->super_ext_size); - HDfprintf(stdout, "\tUser block: %Hu\n", iter->ublk_size); - - HDfprintf(stdout, "\tObject headers: (total/unused)\n"); - HDfprintf(stdout, "\t\tGroups: %Hu/%Hu\n", - iter->group_ohdr_info.total_size, - iter->group_ohdr_info.free_size); - HDfprintf(stdout, "\t\tDatasets(exclude compact data): %Hu/%Hu\n", - iter->dset_ohdr_info.total_size, - iter->dset_ohdr_info.free_size); - HDfprintf(stdout, "\t\tDatatypes: %Hu/%Hu\n", - iter->dtype_ohdr_info.total_size, - iter->dtype_ohdr_info.free_size); - - HDfprintf(stdout, "\tGroups:\n"); - HDfprintf(stdout, "\t\tB-tree/List: %Hu\n", iter->groups_btree_storage_size); - HDfprintf(stdout, "\t\tHeap: %Hu\n", iter->groups_heap_storage_size); - - HDfprintf(stdout, "\tAttributes:\n"); - HDfprintf(stdout, "\t\tB-tree/List: %Hu\n", iter->attrs_btree_storage_size); - HDfprintf(stdout, "\t\tHeap: %Hu\n", iter->attrs_heap_storage_size); - - HDfprintf(stdout, "\tChunked datasets:\n"); - HDfprintf(stdout, "\t\tIndex: %Hu\n", iter->datasets_index_storage_size); - - HDfprintf(stdout, "\tDatasets:\n"); - HDfprintf(stdout, "\t\tHeap: %Hu\n", iter->datasets_heap_storage_size); - - HDfprintf(stdout, "\tShared Messages:\n"); - HDfprintf(stdout, "\t\tHeader: %Hu\n", iter->SM_hdr_storage_size); - HDfprintf(stdout, "\t\tB-tree/List: %Hu\n", iter->SM_index_storage_size); - HDfprintf(stdout, "\t\tHeap: %Hu\n", iter->SM_heap_storage_size); - - HDfprintf(stdout, "\tFree-space managers:\n"); - HDfprintf(stdout, "\t\tHeader: %Hu\n", iter->free_hdr); - HDfprintf(stdout, "\t\tAmount of free space: %Hu\n", iter->free_space); - - return 0; -} /* print_file_metadata() */ - - -/*------------------------------------------------------------------------- - * Function: print_group_info - * - * Purpose: Prints information about groups in the file - * - * Return: Success: 0 - * - * Failure: Never fails - * - * Programmer: Elena Pourmal - * Saturday, August 12, 2006 - * - * Modifications: - * bug #1253; Oct 6th 2008; Vailin Choi - * Fixed segmentation fault: print iter->group_bins[0] when - * there is iter->group_nbins - * - *------------------------------------------------------------------------- - */ -static herr_t -print_group_info(const iter_t *iter) -{ - unsigned long power; /* Temporary "power" for bins */ - unsigned long total; /* Total count for various statistics */ - unsigned u; /* Local index variable */ - - printf("Small groups (with 0 to %u links):\n", sgroups_threshold-1); - total = 0; - for(u = 0; u < (unsigned)sgroups_threshold; u++) { - if(iter->num_small_groups[u] > 0) { - printf("\t# of groups with %u link(s): %lu\n", u, iter->num_small_groups[u]); - total += iter->num_small_groups[u]; - } /* end if */ - } /* end for */ - printf("\tTotal # of small groups: %lu\n", total); - - printf("Group bins:\n"); - total = 0; - if((iter->group_nbins > 0) && (iter->group_bins[0] > 0)) { - printf("\t# of groups with 0 link: %lu\n", iter->group_bins[0]); - total = iter->group_bins[0]; - } /* end if */ - power = 1; - for(u = 1; u < iter->group_nbins; u++) { - if(iter->group_bins[u] > 0) { - printf("\t# of groups with %lu - %lu links: %lu\n", power, (power * 10) - 1, - iter->group_bins[u]); - total += iter->group_bins[u]; - } /* end if */ - power *= 10; - } /* end for */ - printf("\tTotal # of groups: %lu\n", total); - - return 0; -} /* print_group_info() */ - - -/*------------------------------------------------------------------------- - * Function: print_group_metadata - * - * Purpose: Prints file space information for groups' metadata - * - * Return: Success: 0 - * - * Failure: Never fails - * - * Programmer: Vailin Choi; October 2009 - * - *------------------------------------------------------------------------- - */ -static herr_t -print_group_metadata(const iter_t *iter) -{ - printf("File space information for groups' metadata (in bytes):\n"); - - HDfprintf(stdout, "\tObject headers (total/unused): %Hu/%Hu\n", - iter->group_ohdr_info.total_size, iter->group_ohdr_info.free_size); - - HDfprintf(stdout, "\tB-tree/List: %Hu\n", iter->groups_btree_storage_size); - HDfprintf(stdout, "\tHeap: %Hu\n", iter->groups_heap_storage_size); - - return 0; -} /* print_group_metadata() */ - - -/*------------------------------------------------------------------------- - * Function: print_dataset_info - * - * Purpose: Prints information about datasets in the file - * - * Return: Success: 0 - * - * Failure: Never fails - * - * Programmer: Elena Pourmal - * Saturday, August 12, 2006 - * - *------------------------------------------------------------------------- - */ -static herr_t -print_dataset_info(const iter_t *iter) -{ - unsigned long power; /* Temporary "power" for bins */ - unsigned long total; /* Total count for various statistics */ - unsigned u; /* Local index variable */ - - if(iter->uniq_dsets > 0) { - printf("Dataset dimension information:\n"); - printf("\tMax. rank of datasets: %u\n", iter->max_dset_rank); - printf("\tDataset ranks:\n"); - for(u = 0; u < H5S_MAX_RANK; u++) - if(iter->dset_rank_count[u] > 0) - printf("\t\t# of dataset with rank %u: %lu\n", u, iter->dset_rank_count[u]); - - printf("1-D Dataset information:\n"); - HDfprintf(stdout, "\tMax. dimension size of 1-D datasets: %Hu\n", iter->max_dset_dims); - printf("\tSmall 1-D datasets (with dimension sizes 0 to %u):\n", sdsets_threshold - 1); - total = 0; - for(u = 0; u < (unsigned)sdsets_threshold; u++) { - if(iter->small_dset_dims[u] > 0) { - printf("\t\t# of datasets with dimension sizes %u: %lu\n", u, - iter->small_dset_dims[u]); - total += iter->small_dset_dims[u]; - } /* end if */ - } /* end for */ - printf("\t\tTotal # of small datasets: %lu\n", total); - - /* Protect against no datasets in file */ - if(iter->dset_dim_nbins > 0) { - printf("\t1-D Dataset dimension bins:\n"); - total = 0; - if(iter->dset_dim_bins[0] > 0) { - printf("\t\t# of datasets with dimension size 0: %lu\n", iter->dset_dim_bins[0]); - total = iter->dset_dim_bins[0]; - } /* end if */ - power = 1; - for(u = 1; u < iter->dset_dim_nbins; u++) { - if(iter->dset_dim_bins[u] > 0) { - printf("\t\t# of datasets with dimension size %lu - %lu: %lu\n", power, (power * 10) - 1, - iter->dset_dim_bins[u]); - total += iter->dset_dim_bins[u]; - } /* end if */ - power *= 10; - } /* end for */ - printf("\t\tTotal # of datasets: %lu\n", total); - } /* end if */ - - printf("Dataset storage information:\n"); - HDfprintf(stdout, "\tTotal raw data size: %Hu\n", iter->dset_storage_size); - HDfprintf(stdout, "\tTotal external raw data size: %Hu\n", iter->dset_external_storage_size); - - printf("Dataset layout information:\n"); - for(u = 0; u < H5D_NLAYOUTS; u++) - printf("\tDataset layout counts[%s]: %lu\n", (u == H5D_COMPACT ? "COMPACT" : - (u == H5D_CONTIGUOUS ? "CONTIG" : (u == H5D_CHUNKED ? "CHUNKED" : "VIRTUAL"))), iter->dset_layouts[u]); - printf("\tNumber of external files : %lu\n", iter->nexternal); - - printf("Dataset filters information:\n"); - printf("\tNumber of datasets with:\n"); - printf("\t\tNO filter: %lu\n", iter->dset_comptype[H5Z_FILTER_ERROR+1]); - printf("\t\tGZIP filter: %lu\n", iter->dset_comptype[H5Z_FILTER_DEFLATE]); - printf("\t\tSHUFFLE filter: %lu\n", iter->dset_comptype[H5Z_FILTER_SHUFFLE]); - printf("\t\tFLETCHER32 filter: %lu\n", iter->dset_comptype[H5Z_FILTER_FLETCHER32]); - printf("\t\tSZIP filter: %lu\n", iter->dset_comptype[H5Z_FILTER_SZIP]); - printf("\t\tNBIT filter: %lu\n", iter->dset_comptype[H5Z_FILTER_NBIT]); - printf("\t\tSCALEOFFSET filter: %lu\n", iter->dset_comptype[H5Z_FILTER_SCALEOFFSET]); - printf("\t\tUSER-DEFINED filter: %lu\n", iter->dset_comptype[H5_NFILTERS_IMPL-1]); - } /* end if */ - - return 0; -} /* print_dataset_info() */ - - -/*------------------------------------------------------------------------- - * Function: print_dataset_metadata - * - * Purpose: Prints file space information for datasets' metadata - * - * Return: Success: 0 - * - * Failure: Never fails - * - * Programmer: Vailin Choi; October 2009 - * - *------------------------------------------------------------------------- - */ -static herr_t -print_dset_metadata(const iter_t *iter) -{ - printf("File space information for datasets' metadata (in bytes):\n"); - - HDfprintf(stdout, "\tObject headers (total/unused): %Hu/%Hu\n", - iter->dset_ohdr_info.total_size, iter->dset_ohdr_info.free_size); - - HDfprintf(stdout, "\tIndex for Chunked datasets: %Hu\n", - iter->datasets_index_storage_size); - HDfprintf(stdout, "\tHeap: %Hu\n", iter->datasets_heap_storage_size); - - return 0; -} /* print_dset_metadata() */ - - -/*------------------------------------------------------------------------- - * Function: print_dset_dtype_meta - * - * Purpose: Prints datasets' datatype information - * - * Return: Success: 0 - * - * Failure: Never fails - * - * Programmer: Vailin Choi; October 2009 - * - *------------------------------------------------------------------------- - */ -static herr_t -print_dset_dtype_meta(const iter_t *iter) -{ - unsigned long total; /* Total count for various statistics */ - size_t dtype_size; /* Size of encoded datatype */ - unsigned u; /* Local index variable */ - - if(iter->dset_ntypes) { - printf("Dataset datatype information:\n"); - printf("\t# of unique datatypes used by datasets: %lu\n", iter->dset_ntypes); - total = 0; - for(u = 0; u < iter->dset_ntypes; u++) { - H5Tencode(iter->dset_type_info[u].tid, NULL, &dtype_size); - printf("\tDataset datatype #%u:\n", u); - printf("\t\tCount (total/named) = (%lu/%lu)\n", - iter->dset_type_info[u].count, iter->dset_type_info[u].named); - printf("\t\tSize (desc./elmt) = (%lu/%lu)\n", (unsigned long)dtype_size, - (unsigned long)H5Tget_size(iter->dset_type_info[u].tid)); - H5Tclose(iter->dset_type_info[u].tid); - total += iter->dset_type_info[u].count; - } /* end for */ - printf("\tTotal dataset datatype count: %lu\n", total); - } /* end if */ - - return 0; -} /* print_dset_dtype_meta() */ - - -/*------------------------------------------------------------------------- - * Function: print_attr_info - * - * Purpose: Prints information about attributes in the file - * - * Return: Success: 0 - * - * Failure: Never fails - * - * Programmer: Vailin Choi - * July 12, 2007 - * - *------------------------------------------------------------------------- - */ -static herr_t -print_attr_info(const iter_t *iter) -{ - unsigned long power; /* Temporary "power" for bins */ - unsigned long total; /* Total count for various statistics */ - unsigned u; /* Local index variable */ - - printf("Small # of attributes (objects with 1 to %u attributes):\n", sattrs_threshold); - total = 0; - for(u = 1; u <= (unsigned)sattrs_threshold; u++) { - if(iter->num_small_attrs[u] > 0) { - printf("\t# of objects with %u attributes: %lu\n", u, iter->num_small_attrs[u]); - total += iter->num_small_attrs[u]; - } /* end if */ - } /* end for */ - printf("\tTotal # of objects with small # of attributes: %lu\n", total); - - printf("Attribute bins:\n"); - total = 0; - power = 1; - for(u = 1; u < iter->attr_nbins; u++) { - if(iter->attr_bins[u] > 0) { - printf("\t# of objects with %lu - %lu attributes: %lu\n", power, (power * 10) - 1, - iter->attr_bins[u]); - total += iter->attr_bins[u]; - } /* end if */ - power *= 10; - } /* end for */ - printf("\tTotal # of objects with attributes: %lu\n", total); - printf("\tMax. # of attributes to objects: %lu\n", (unsigned long)iter->max_attrs); - - return 0; -} /* print_attr_info() */ - - -/*------------------------------------------------------------------------- - * Function: print_freespace_info - * - * Purpose: Prints information about free space in the file - * - * Return: Success: 0 - * - * Failure: Never fails - * - * Programmer: Vailin Choi; July 7th, 2009 - * - *------------------------------------------------------------------------- - */ -static herr_t -print_freespace_info(const iter_t *iter) -{ - unsigned long power; /* Temporary "power" for bins */ - unsigned long total; /* Total count for various statistics */ - unsigned u; /* Local index variable */ - - HDfprintf(stdout, "Free-space section threshold: %Hu bytes\n", iter->fs_threshold); - printf("Small size free-space sections (< %u bytes):\n", (unsigned)SIZE_SMALL_SECTS); - total = 0; - for(u = 0; u < SIZE_SMALL_SECTS; u++) { - if(iter->num_small_sects[u] > 0) { - printf("\t# of sections of size %u: %lu\n", u, iter->num_small_sects[u]); - total += iter->num_small_sects[u]; - } /* end if */ - } /* end for */ - printf("\tTotal # of small size sections: %lu\n", total); - - printf("Free-space section bins:\n"); - - total = 0; - power = 1; - for(u = 1; u < iter->sect_nbins; u++) { - if(iter->sect_bins[u] > 0) { - printf("\t# of sections of size %lu - %lu: %lu\n", power, (power * 10) - 1, - iter->sect_bins[u]); - total += iter->sect_bins[u]; - } /* end if */ - power *= 10; - } /* end for */ - printf("\tTotal # of sections: %lu\n", total); - - return 0; -} /* print_freespace_info() */ - - -/*------------------------------------------------------------------------- - * Function: print_storage_summary - * - * Purpose: Prints file space information for the file - * - * Return: Success: 0 - * - * Failure: Never fails - * - * Programmer: Vailin Choi; August 2009 - * - *------------------------------------------------------------------------- - */ -static herr_t -print_storage_summary(const iter_t *iter) -{ - hsize_t total_meta = 0; - hsize_t unaccount = 0; - double percent = 0.0f; - - HDfprintf(stdout, "File space management strategy: %s\n", FS_STRATEGY_NAME[iter->fs_strategy]); - printf("Summary of file space information:\n"); - total_meta = - iter->super_size + iter->super_ext_size + iter->ublk_size + - iter->group_ohdr_info.total_size + - iter->dset_ohdr_info.total_size + - iter->dtype_ohdr_info.total_size + - iter->groups_btree_storage_size + - iter->groups_heap_storage_size + - iter->attrs_btree_storage_size + - iter->attrs_heap_storage_size + - iter->datasets_index_storage_size + - iter->datasets_heap_storage_size + - iter->SM_hdr_storage_size + - iter->SM_index_storage_size + - iter->SM_heap_storage_size + - iter->free_hdr; - - HDfprintf(stdout, " File metadata: %Hu bytes\n", total_meta); - HDfprintf(stdout, " Raw data: %Hu bytes\n", iter->dset_storage_size); - - percent = ((double)iter->free_space / (double)iter->filesize) * (double)100.0f; - HDfprintf(stdout, " Amount/Percent of tracked free space: %Hu bytes/%3.1f%\n", - iter->free_space, percent); - - if(iter->filesize < (total_meta + iter->dset_storage_size + iter->free_space)) { - unaccount = (total_meta + iter->dset_storage_size + iter->free_space) - iter->filesize; - HDfprintf(stdout, " ??? File has %Hu more bytes accounted for than its size! ???\n", unaccount); - } - else { - unaccount = iter->filesize - (total_meta + iter->dset_storage_size + iter->free_space); - HDfprintf(stdout, " Unaccounted space: %Hu bytes\n", unaccount); - } - - HDfprintf(stdout, "Total space: %Hu bytes\n", total_meta + iter->dset_storage_size + iter->free_space + unaccount); - - if(iter->nexternal) - HDfprintf(stdout, "External raw data: %Hu bytes\n", iter->dset_external_storage_size); - - return 0; -} /* print_storage_summary() */ - - -/*------------------------------------------------------------------------- - * Function: print_file_statistics - * - * Purpose: Prints file statistics - * - * Return: Success: 0 - * - * Failure: Never fails - * - * Programmer: Elena Pourmal - * Saturday, August 12, 2006 - * - *------------------------------------------------------------------------- - */ -static void -print_file_statistics(const iter_t *iter) -{ - if(display_all) { - display_file = TRUE; - display_group = TRUE; - display_dset = TRUE; - display_dset_dtype_meta = TRUE; - display_attr = TRUE; - display_free_sections = TRUE; - display_summary = TRUE; - - display_file_metadata = TRUE; - display_group_metadata = TRUE; - display_dset_metadata = TRUE; - } - - if(display_file) print_file_info(iter); - if(display_file_metadata) print_file_metadata(iter); - - if(display_group) print_group_info(iter); - if(!display_all && display_group_metadata) print_group_metadata(iter); - - if(display_dset) print_dataset_info(iter); - if(display_dset_dtype_meta) print_dset_dtype_meta(iter); - if(!display_all && display_dset_metadata) print_dset_metadata(iter); - - if(display_attr) print_attr_info(iter); - if(display_free_sections) print_freespace_info(iter); - if(display_summary) print_storage_summary(iter); -} /* print_file_statistics() */ - - -/*------------------------------------------------------------------------- - * Function: print_object_statistics - * - * Purpose: Prints object statistics - * - * Return: Success: 0 - * - * Failure: Never fails - * - * Programmer: Elena Pourmal - * Thursday, August 17, 2006 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -print_object_statistics(const char *name) -{ - printf("Object name %s\n", name); -} /* print_object_statistics() */ - - -/*------------------------------------------------------------------------- - * Function: print_statistics - * - * Purpose: Prints statistics - * - * Return: Success: 0 - * - * Failure: Never fails - * - * Programmer: Elena Pourmal - * Thursday, August 17, 2006 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -print_statistics(const char *name, const iter_t *iter) -{ - if(display_object) - print_object_statistics(name); - else - print_file_statistics(iter); -} /* print_statistics() */ - - -/*------------------------------------------------------------------------- - * Function: main - * - * Modifications: - * 2/2010; Vailin Choi - * Get the size of user block - * - *------------------------------------------------------------------------- - */ -int -main(int argc, const char *argv[]) -{ - iter_t iter; - const char *fname = NULL; - hid_t fid = -1; - struct handler_t *hand = NULL; - - h5tools_setprogname(PROGRAMNAME); - h5tools_setstatus(EXIT_SUCCESS); - - /* Disable error reporting */ - H5Eset_auto2(H5E_DEFAULT, NULL, NULL); - - /* Initialize h5tools lib */ - h5tools_init(); - - HDmemset(&iter, 0, sizeof(iter)); - - if(parse_command_line(argc, argv, &hand) < 0) - goto done; - - fname = argv[opt_ind]; - - /* Check for filename given */ - if(fname) { - hid_t fcpl; - H5F_info2_t finfo; - - printf("Filename: %s\n", fname); - - fid = H5Fopen(fname, H5F_ACC_RDONLY, H5P_DEFAULT); - if(fid < 0) { - error_msg("unable to open file \"%s\"\n", fname); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } /* end if */ - - /* Initialize iter structure */ - iter.fid = fid; - - if(H5Fget_filesize(fid, &iter.filesize) < 0) - warn_msg("Unable to retrieve file size\n"); - HDassert(iter.filesize != 0); - - /* Get storge info for file-level structures */ - if(H5Fget_info2(fid, &finfo) < 0) - warn_msg("Unable to retrieve file info\n"); - else { - iter.super_size = finfo.super.super_size; - iter.super_ext_size = finfo.super.super_ext_size; - iter.SM_hdr_storage_size = finfo.sohm.hdr_size; - iter.SM_index_storage_size = finfo.sohm.msgs_info.index_size; - iter.SM_heap_storage_size = finfo.sohm.msgs_info.heap_size; - iter.free_space = finfo.free.tot_space; - iter.free_hdr = finfo.free.meta_size; - } /* end else */ - - iter.num_small_groups = (unsigned long *)HDcalloc((size_t)sgroups_threshold, sizeof(unsigned long)); - iter.num_small_attrs = (unsigned long *)HDcalloc((size_t)(sattrs_threshold+1), sizeof(unsigned long)); - iter.small_dset_dims = (unsigned long *)HDcalloc((size_t)sdsets_threshold, sizeof(unsigned long)); - - if(iter.num_small_groups == NULL || iter.num_small_attrs == NULL || iter.small_dset_dims == NULL) { - error_msg("Unable to allocate memory for tracking small groups/datasets/attributes\n"); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - - if((fcpl = H5Fget_create_plist(fid)) < 0) - warn_msg("Unable to retrieve file creation property\n"); - - if(H5Pget_userblock(fcpl, &iter.ublk_size) < 0) - warn_msg("Unable to retrieve userblock size\n"); - - if(H5Pget_file_space(fcpl, &iter.fs_strategy, &iter.fs_threshold) < 0) - warn_msg("Unable to retrieve file space information\n"); - HDassert(iter.fs_strategy != 0 && iter.fs_strategy < H5F_FILE_SPACE_NTYPES); - - /* get information for free-space sections */ - if(freespace_stats(fid, &iter) < 0) - warn_msg("Unable to retrieve freespace info\n"); - - /* Walk the objects or all file */ - if(display_object) { - unsigned u; - - for(u = 0; u < hand->obj_count; u++) { - if(h5trav_visit(fid, hand->obj[u], TRUE, TRUE, obj_stats, lnk_stats, &iter) < 0) - warn_msg("Unable to traverse object \"%s\"\n", hand->obj[u]); - else - print_statistics(hand->obj[u], &iter); - } /* end for */ - } /* end if */ - else { - if(h5trav_visit(fid, "/", TRUE, TRUE, obj_stats, lnk_stats, &iter) < 0) - warn_msg("Unable to traverse objects/links in file \"%s\"\n", fname); - else - print_statistics("/", &iter); - } /* end else */ - } /* end if */ - -done: - hand_free(hand); - - /* Free iter structure */ - iter_free(&iter); - - if(fid >= 0 && H5Fclose(fid) < 0) { - error_msg("unable to close file \"%s\"\n", fname); - h5tools_setstatus(EXIT_FAILURE); - } /* end if */ - - leave(h5tools_getstatus()); -} /* end main() */ - diff --git a/tools/h5stat/h5stat_gentest.c b/tools/h5stat/h5stat_gentest.c deleted file mode 100644 index b1ab168..0000000 --- a/tools/h5stat/h5stat_gentest.c +++ /dev/null @@ -1,449 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * Generate the binary hdf5 files for the h5stat tests. - * Usage: just execute the program without any arguments will - * generate all the binary hdf5 files - * - * If you regenerate the test files (e.g., changing some code, - * trying it on a new platform, ...), you need to verify the correctness - * of the expected output and update the corresponding *.ddl files. - */ -#include "hdf5.h" - -/* For gen_newgrat_file() */ -#define NEWGRAT_FILE "h5stat_newgrat.h5" -#define DATASET_NAME "DATASET_NAME" -#define GROUP_NAME "GROUP" -#define ATTR_NAME "ATTR" -#define NUM_GRPS 35000 -#define NUM_ATTRS 100 - -/* Declarations for gen_idx_file() */ -#define IDX_FILE "h5stat_idx.h5" -#define DSET "dset" -#define DSET_FILTER "dset_filter" - -/* For gen_threshold_file() */ -#define THRESHOLD_FILE "h5stat_threshold.h5" -#define THRES_ATTR_NAME "attr" -#define THRES_ATTR_GRP_NAME "grp_attr" -#define THRES_DSET_NAME "dset" -#define THRES_NUM 10 -#define THRES_NUM_25 25 - -/* - * Generate HDF5 file with latest format with - * NUM_GRPS groups and NUM_ATTRS attributes for the dataset - */ -static void -gen_newgrat_file(const char *fname) -{ - hid_t fcpl = -1; /* File creation property */ - hid_t fapl = -1; /* File access property */ - hid_t fid = -1; /* File id */ - hid_t gid = -1; /* Group id */ - hid_t tid = -1; /* Datatype id */ - hid_t sid = -1; /* Dataspace id */ - hid_t attr_id = -1; /* Attribute id */ - hid_t did = -1; /* Dataset id */ - char name[30]; /* Group name */ - char attrname[30]; /* Attribute name */ - int i; /* Local index variable */ - - /* Get a copy file access property list */ - if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) - goto error; - - /* Set to use latest library format */ - if(H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0) - goto error; - - /* Get a copy of file creation property list */ - if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) - goto error; - - /* Set file space handling strategy */ - if(H5Pset_file_space(fcpl, H5F_FILE_SPACE_ALL_PERSIST, (hsize_t)0) < 0) - goto error; - - /* Create file */ - if((fid = H5Fcreate(fname, H5F_ACC_TRUNC, fcpl, fapl)) < 0) - goto error; - - /* Create NUM_GRPS groups in the root group */ - for(i = 1; i <= NUM_GRPS; i++) { - sprintf(name, "%s%d", GROUP_NAME,i); - if((gid = H5Gcreate2(fid, name, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - if(H5Gclose(gid) < 0) - goto error; - } /* end for */ - - /* Create a datatype to commit and use */ - if((tid = H5Tcopy(H5T_NATIVE_INT)) < 0) - goto error; - - /* Create dataspace for dataset */ - if((sid = H5Screate(H5S_SCALAR)) < 0) - goto error; - - /* Create dataset */ - if((did = H5Dcreate2(fid, DATASET_NAME, tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - - /* Create NUM_ATTRS for the dataset */ - for(i = 1; i <= NUM_ATTRS; i++) { - sprintf(attrname, "%s%d", ATTR_NAME,i); - if((attr_id = H5Acreate2(did, attrname, tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - if(H5Aclose(attr_id) < 0) - goto error; - } /* end for */ - - /* Close dataset, dataspace, datatype, file */ - if(H5Pclose(fapl) < 0) - goto error; - if(H5Pclose(fcpl) < 0) - goto error; - if(H5Dclose(did) < 0) - goto error; - if(H5Sclose(sid) < 0) - goto error; - if(H5Tclose(tid) < 0) - goto error; - if(H5Fclose(fid) < 0) - goto error; - -error: - H5E_BEGIN_TRY { - H5Pclose(fapl); - H5Pclose(fcpl); - H5Aclose(attr_id); - H5Dclose(did); - H5Tclose(tid); - H5Sclose(sid); - H5Gclose(gid); - H5Fclose(fid); - } H5E_END_TRY; -} /* gen_newgrat_file() */ - -/* - * Generate an HDF5 file with groups, datasets, attributes for testing the options: - * -l N (--links=N): Set the threshold for # of links when printing information for small groups. - * -m N (--dims=N): Set the threshold for the # of dimension sizes when printing information for small datasets. - * -a N (--numattrs=N): Set the threshold for the # of attributes when printing information for small # of attributes. - */ -static void -gen_threshold_file(const char *fname) -{ - hid_t fid; /* File ID */ - hid_t sid0, sid1, sid2, sid3, sid4; /* Dataspace IDs */ - hid_t did; /* Dataset ID */ - hid_t attr_id; /* Attribute ID */ - hid_t gid; /* Group ID */ - hsize_t two_dims[] = {2, 5}; /* Dimension array */ - hsize_t one_dims[] = {6}; /* Dimension array */ - hsize_t zero_dims[] = {0}; /* Dimension array */ - char name[30]; /* Name */ - unsigned i; /* Local index variable */ - - /* Create file */ - if((fid = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - - /* Create 1-D dataspace with zero dimension size */ - if((sid0 = H5Screate_simple(1, zero_dims, NULL)) < 0) - goto error; - - /* Create 1-D dataspace with non-zero dimension size*/ - if((sid1 = H5Screate_simple(1, one_dims, NULL)) < 0) - goto error; - - /* Create 2-D dataspace */ - if((sid2 = H5Screate_simple(2, two_dims, NULL)) < 0) - goto error; - - /* Create scalar dataspace */ - if((sid3 = H5Screate(H5S_SCALAR)) < 0) - goto error; - - /* Create null dataspace */ - if((sid4 = H5Screate(H5S_NULL)) < 0) - goto error; - - /* Create an attribute for the root group */ - if((attr_id = H5Acreate2(fid, "attr", H5T_NATIVE_INT, sid1, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - if(H5Aclose(attr_id) < 0) - goto error; - - /* Create 1-D dataset with zero dimension size for the root group */ - if((did = H5Dcreate2(fid, "zero_dset", H5T_NATIVE_UCHAR, sid0, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - - /* Create 11 attributes for the dataset */ - for(i = 1; i <= (THRES_NUM+1); i++) { - sprintf(name, "%s%d", THRES_ATTR_NAME,i); - if((attr_id = H5Acreate2(did, name, H5T_NATIVE_INT, sid1, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - if(H5Aclose(attr_id) < 0) - goto error; - } - if(H5Dclose(did) < 0) - goto error; - - /* Create dataset with scalar dataspace for the root group */ - if((did = H5Dcreate2(fid, "scalar_dset", H5T_NATIVE_UCHAR, sid3, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - if(H5Dclose(did) < 0) - goto error; - - /* Create dataset with null dataspace for the root group */ - if((did = H5Dcreate2(fid, "null_dset", H5T_NATIVE_UCHAR, sid4, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - if(H5Dclose(did) < 0) - goto error; - - /* Create 2-D dataset for the root group */ - if((did = H5Dcreate2(fid, "dset", H5T_NATIVE_UCHAR, sid2, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - - /* Create 10 attributes for the 2-D dataset */ - for(i = 1; i <= THRES_NUM; i++) { - sprintf(name, "%s%d", THRES_ATTR_NAME,i); - if((attr_id = H5Acreate2(did, name, H5T_NATIVE_INT, sid1, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - if(H5Aclose(attr_id) < 0) - goto error; - } - if(H5Dclose(did) < 0) - goto error; - - /* Create first group */ - if((gid = H5Gcreate2(fid, "group1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - - /* Create an attribute for the group */ - if((attr_id = H5Acreate2(gid, "ATTR", H5T_NATIVE_INT, sid3, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - - /* Close attribute */ - if(H5Aclose(attr_id) < 0) - goto error; - - /* Create 10 1-D datasets with non-zero dimension size for the group */ - for(i = 1; i <= THRES_NUM; i++) { - /* set up dataset name */ - sprintf(name, "%s%d", THRES_DSET_NAME,i); - - /* Create the dataset */ - if((did = H5Dcreate2(gid, name, H5T_NATIVE_UCHAR, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - - /* Close the dataset */ - if(H5Dclose(did) < 0) - goto error; - } - - /* Close the group */ - if(H5Gclose(gid) < 0) - goto error; - - - /* Create second group */ - if((gid = H5Gcreate2(fid, "group2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - - /* Create 25 attributes for the group */ - for(i = 1; i <= THRES_NUM_25; i++) { - /* Set up attribute name */ - sprintf(name, "%s%d", THRES_ATTR_GRP_NAME,i); - - /* Create the attribute */ - if((attr_id = H5Acreate2(gid, name, H5T_NATIVE_INT, sid2, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - - /* Close the attribute */ - if(H5Aclose(attr_id) < 0) - goto error; - } - - /* Close the group */ - if(H5Gclose(gid) < 0) - goto error; - - /* Create third group */ - if((gid = H5Gcreate2(fid, "group3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - - /* Create 9 1-D datasets with non-zero dimension size for the group */ - for(i = 1; i < THRES_NUM; i++) { - /* set up dataset name */ - sprintf(name, "%s%d", THRES_DSET_NAME,i); - - /* Create the dataset */ - if((did = H5Dcreate2(gid, name, H5T_NATIVE_UCHAR, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; - - /* Close the dataset */ - if(H5Dclose(did) < 0) - goto error; - } - - /* Close the group */ - if(H5Gclose(gid) < 0) - goto error; - - - /* Close dataspaces */ - if(H5Sclose(sid0) < 0) - goto error; - if(H5Sclose(sid1) < 0) - goto error; - if(H5Sclose(sid2) < 0) - goto error; - if(H5Sclose(sid3) < 0) - goto error; - if(H5Sclose(sid4) < 0) - goto error; - - /* Close file */ - if(H5Fclose(fid) < 0) - goto error; - -error: - H5E_BEGIN_TRY { - H5Gclose(gid); - H5Aclose(attr_id); - H5Dclose(did); - H5Sclose(sid0); - H5Sclose(sid1); - H5Sclose(sid2); - H5Sclose(sid3); - H5Sclose(sid4); - H5Fclose(fid); - } H5E_END_TRY; - -} /* gen_threshold_file() */ - -/* - * Function: gen_idx_file - * - * Purpose: Create a file with datasets that use Fixed Array indexing: - * one dataset: fixed dimension, chunked layout, w/o filters - * one dataset: fixed dimension, chunked layout, w/ filters - * - */ -static void -gen_idx_file(const char *fname) -{ - hid_t fapl = -1; /* file access property id */ - hid_t fid = -1; /* file id */ - hid_t sid = -1; /* space id */ - hid_t dcpl = -1; /* dataset creation property id */ - hid_t did = -1, did2 = -1; /* dataset id */ - hsize_t dims[1] = {10}; /* dataset dimension */ - hsize_t c_dims[1] = {2}; /* chunk dimension */ - int i; /* local index variable */ - int buf[10]; /* data buffer */ - - /* Get a copy of the file access property */ - if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) - goto error; - - /* Set the "use the latest format" bounds for creating objects in the file */ - if(H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0) - goto error; - - /* Create file */ - if((fid = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) - goto error; - - /* Create data */ - for(i = 0; i < 10; i++) - buf[i] = i; - - /* Set chunk */ - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) - goto error; - - if(H5Pset_chunk(dcpl, 1, c_dims) < 0) - goto error; - - /* Create a 1D dataset */ - if((sid = H5Screate_simple(1, dims, NULL)) < 0) - goto error; - if((did = H5Dcreate2(fid, DSET, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - - /* Write to the dataset */ - if(H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto error; - -#if defined (H5_HAVE_FILTER_DEFLATE) - /* set deflate data */ - if(H5Pset_deflate(dcpl, 9) < 0) - goto error; - - /* Create and write the dataset */ - if((did2 = H5Dcreate2(fid, DSET_FILTER, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - if(H5Dwrite(did2, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto error; - - /* Close the dataset */ - if(H5Dclose(did2) < 0) - goto error; -#endif - - /* closing: dataspace, dataset, file */ - if(H5Pclose(fapl) < 0) - goto error; - if(H5Pclose(dcpl) < 0) - goto error; - if(H5Sclose(sid) < 0) - goto error; - if(H5Dclose(did) < 0) - goto error; - if(H5Fclose(fid) < 0) - goto error; - -error: - H5E_BEGIN_TRY { - H5Pclose(fapl); - H5Pclose(dcpl); - H5Sclose(sid); - H5Dclose(did); - H5Fclose(fid); -#if defined (H5_HAVE_FILTER_DEFLATE) - H5Dclose(did2); -#endif - } H5E_END_TRY; - -} /* gen_idx_file() */ - -int main(void) -{ - gen_newgrat_file(NEWGRAT_FILE); - gen_threshold_file(THRESHOLD_FILE); - - /* Generate an HDF file to test for datasets with Fixed Array indexing */ - gen_idx_file(IDX_FILE); - - return 0; -} - diff --git a/tools/h5stat/testfiles/h5stat_dims1.ddl b/tools/h5stat/testfiles/h5stat_dims1.ddl deleted file mode 100644 index 07b2900..0000000 --- a/tools/h5stat/testfiles/h5stat_dims1.ddl +++ /dev/null @@ -1,45 +0,0 @@ -Filename: h5stat_threshold.h5 -Small groups (with 0 to 9 links): - # of groups with 0 link(s): 1 - # of groups with 7 link(s): 1 - # of groups with 9 link(s): 1 - Total # of small groups: 3 -Group bins: - # of groups with 0 link: 1 - # of groups with 1 - 9 links: 2 - # of groups with 10 - 99 links: 1 - Total # of groups: 4 -Dataset dimension information: - Max. rank of datasets: 2 - Dataset ranks: - # of dataset with rank 0: 2 - # of dataset with rank 1: 20 - # of dataset with rank 2: 1 -1-D Dataset information: - Max. dimension size of 1-D datasets: 6 - Small 1-D datasets (with dimension sizes 0 to 4): - # of datasets with dimension sizes 0: 1 - Total # of small datasets: 1 - 1-D Dataset dimension bins: - # of datasets with dimension size 0: 1 - # of datasets with dimension size 1 - 9: 19 - Total # of datasets: 20 -Dataset storage information: - Total raw data size: 0 - Total external raw data size: 0 -Dataset layout information: - Dataset layout counts[COMPACT]: 0 - Dataset layout counts[CONTIG]: 23 - Dataset layout counts[CHUNKED]: 0 - Dataset layout counts[VIRTUAL]: 0 - Number of external files : 0 -Dataset filters information: - Number of datasets with: - NO filter: 23 - GZIP filter: 0 - SHUFFLE filter: 0 - FLETCHER32 filter: 0 - SZIP filter: 0 - NBIT filter: 0 - SCALEOFFSET filter: 0 - USER-DEFINED filter: 0 diff --git a/tools/h5stat/testfiles/h5stat_dims2.ddl b/tools/h5stat/testfiles/h5stat_dims2.ddl deleted file mode 100644 index dbccd05..0000000 --- a/tools/h5stat/testfiles/h5stat_dims2.ddl +++ /dev/null @@ -1,36 +0,0 @@ -Filename: h5stat_threshold.h5 -Dataset dimension information: - Max. rank of datasets: 2 - Dataset ranks: - # of dataset with rank 0: 2 - # of dataset with rank 1: 20 - # of dataset with rank 2: 1 -1-D Dataset information: - Max. dimension size of 1-D datasets: 6 - Small 1-D datasets (with dimension sizes 0 to 14): - # of datasets with dimension sizes 0: 1 - # of datasets with dimension sizes 6: 19 - Total # of small datasets: 20 - 1-D Dataset dimension bins: - # of datasets with dimension size 0: 1 - # of datasets with dimension size 1 - 9: 19 - Total # of datasets: 20 -Dataset storage information: - Total raw data size: 0 - Total external raw data size: 0 -Dataset layout information: - Dataset layout counts[COMPACT]: 0 - Dataset layout counts[CONTIG]: 23 - Dataset layout counts[CHUNKED]: 0 - Dataset layout counts[VIRTUAL]: 0 - Number of external files : 0 -Dataset filters information: - Number of datasets with: - NO filter: 23 - GZIP filter: 0 - SHUFFLE filter: 0 - FLETCHER32 filter: 0 - SZIP filter: 0 - NBIT filter: 0 - SCALEOFFSET filter: 0 - USER-DEFINED filter: 0 diff --git a/tools/h5stat/testfiles/h5stat_err1_dims.ddl b/tools/h5stat/testfiles/h5stat_err1_dims.ddl deleted file mode 100644 index 86d375b..0000000 --- a/tools/h5stat/testfiles/h5stat_err1_dims.ddl +++ /dev/null @@ -1 +0,0 @@ -h5stat error: Invalid threshold for small datasets diff --git a/tools/h5stat/testfiles/h5stat_err1_links.ddl b/tools/h5stat/testfiles/h5stat_err1_links.ddl deleted file mode 100644 index d43207c..0000000 --- a/tools/h5stat/testfiles/h5stat_err1_links.ddl +++ /dev/null @@ -1 +0,0 @@ -h5stat error: Invalid threshold for small groups diff --git a/tools/h5stat/testfiles/h5stat_err1_numattrs.ddl b/tools/h5stat/testfiles/h5stat_err1_numattrs.ddl deleted file mode 100644 index 01b6c18..0000000 --- a/tools/h5stat/testfiles/h5stat_err1_numattrs.ddl +++ /dev/null @@ -1 +0,0 @@ -h5stat error: Invalid threshold for small # of attributes diff --git a/tools/h5stat/testfiles/h5stat_err2_numattrs.ddl b/tools/h5stat/testfiles/h5stat_err2_numattrs.ddl deleted file mode 100644 index 01b6c18..0000000 --- a/tools/h5stat/testfiles/h5stat_err2_numattrs.ddl +++ /dev/null @@ -1 +0,0 @@ -h5stat error: Invalid threshold for small # of attributes diff --git a/tools/h5stat/testfiles/h5stat_filters-F.ddl b/tools/h5stat/testfiles/h5stat_filters-F.ddl deleted file mode 100644 index d44445b..0000000 --- a/tools/h5stat/testfiles/h5stat_filters-F.ddl +++ /dev/null @@ -1,26 +0,0 @@ -Filename: h5stat_filters.h5 -File space information for file metadata (in bytes): - Superblock: 96 - Superblock extension: 0 - User block: 0 - Object headers: (total/unused) - Groups: 48/8 - Datasets(exclude compact data): 4136/1344 - Datatypes: 80/0 - Groups: - B-tree/List: 1200 - Heap: 288 - Attributes: - B-tree/List: 0 - Heap: 0 - Chunked datasets: - Index: 31392 - Datasets: - Heap: 72 - Shared Messages: - Header: 0 - B-tree/List: 0 - Heap: 0 - Free-space managers: - Header: 0 - Amount of free space: 0 diff --git a/tools/h5stat/testfiles/h5stat_filters-UD.ddl b/tools/h5stat/testfiles/h5stat_filters-UD.ddl deleted file mode 100644 index 4efafd1..0000000 --- a/tools/h5stat/testfiles/h5stat_filters-UD.ddl +++ /dev/null @@ -1,5 +0,0 @@ -Filename: h5stat_filters.h5 -File space information for datasets' metadata (in bytes): - Object headers (total/unused): 4136/1344 - Index for Chunked datasets: 31392 - Heap: 72 diff --git a/tools/h5stat/testfiles/h5stat_filters-UT.ddl b/tools/h5stat/testfiles/h5stat_filters-UT.ddl deleted file mode 100644 index d8de31f..0000000 --- a/tools/h5stat/testfiles/h5stat_filters-UT.ddl +++ /dev/null @@ -1,10 +0,0 @@ -Filename: h5stat_filters.h5 -Dataset datatype information: - # of unique datatypes used by datasets: 2 - Dataset datatype #0: - Count (total/named) = (14/0) - Size (desc./elmt) = (14/4) - Dataset datatype #1: - Count (total/named) = (1/0) - Size (desc./elmt) = (14/4) - Total dataset datatype count: 15 diff --git a/tools/h5stat/testfiles/h5stat_filters-d.ddl b/tools/h5stat/testfiles/h5stat_filters-d.ddl deleted file mode 100644 index 6e6dd61..0000000 --- a/tools/h5stat/testfiles/h5stat_filters-d.ddl +++ /dev/null @@ -1,32 +0,0 @@ -Filename: h5stat_filters.h5 -Dataset dimension information: - Max. rank of datasets: 2 - Dataset ranks: - # of dataset with rank 1: 1 - # of dataset with rank 2: 14 -1-D Dataset information: - Max. dimension size of 1-D datasets: 100 - Small 1-D datasets (with dimension sizes 0 to 9): - Total # of small datasets: 0 - 1-D Dataset dimension bins: - # of datasets with dimension size 100 - 999: 1 - Total # of datasets: 1 -Dataset storage information: - Total raw data size: 8659 - Total external raw data size: 400 -Dataset layout information: - Dataset layout counts[COMPACT]: 1 - Dataset layout counts[CONTIG]: 2 - Dataset layout counts[CHUNKED]: 12 - Dataset layout counts[VIRTUAL]: 0 - Number of external files : 2 -Dataset filters information: - Number of datasets with: - NO filter: 7 - GZIP filter: 2 - SHUFFLE filter: 2 - FLETCHER32 filter: 2 - SZIP filter: 2 - NBIT filter: 2 - SCALEOFFSET filter: 1 - USER-DEFINED filter: 1 diff --git a/tools/h5stat/testfiles/h5stat_filters-dT.ddl b/tools/h5stat/testfiles/h5stat_filters-dT.ddl deleted file mode 100644 index b14ca9f..0000000 --- a/tools/h5stat/testfiles/h5stat_filters-dT.ddl +++ /dev/null @@ -1,41 +0,0 @@ -Filename: h5stat_filters.h5 -Dataset dimension information: - Max. rank of datasets: 2 - Dataset ranks: - # of dataset with rank 1: 1 - # of dataset with rank 2: 14 -1-D Dataset information: - Max. dimension size of 1-D datasets: 100 - Small 1-D datasets (with dimension sizes 0 to 9): - Total # of small datasets: 0 - 1-D Dataset dimension bins: - # of datasets with dimension size 100 - 999: 1 - Total # of datasets: 1 -Dataset storage information: - Total raw data size: 8659 - Total external raw data size: 400 -Dataset layout information: - Dataset layout counts[COMPACT]: 1 - Dataset layout counts[CONTIG]: 2 - Dataset layout counts[CHUNKED]: 12 - Dataset layout counts[VIRTUAL]: 0 - Number of external files : 2 -Dataset filters information: - Number of datasets with: - NO filter: 7 - GZIP filter: 2 - SHUFFLE filter: 2 - FLETCHER32 filter: 2 - SZIP filter: 2 - NBIT filter: 2 - SCALEOFFSET filter: 1 - USER-DEFINED filter: 1 -Dataset datatype information: - # of unique datatypes used by datasets: 2 - Dataset datatype #0: - Count (total/named) = (14/0) - Size (desc./elmt) = (14/4) - Dataset datatype #1: - Count (total/named) = (1/0) - Size (desc./elmt) = (14/4) - Total dataset datatype count: 15 diff --git a/tools/h5stat/testfiles/h5stat_filters-file.ddl b/tools/h5stat/testfiles/h5stat_filters-file.ddl deleted file mode 100644 index 5f7eff9..0000000 --- a/tools/h5stat/testfiles/h5stat_filters-file.ddl +++ /dev/null @@ -1,9 +0,0 @@ -Filename: h5stat_filters.h5 -File information - # of unique groups: 1 - # of unique datasets: 15 - # of unique named datatypes: 1 - # of unique links: 0 - # of unique other: 0 - Max. # of links to object: 1 - Max. # of objects in group: 16 diff --git a/tools/h5stat/testfiles/h5stat_filters-g.ddl b/tools/h5stat/testfiles/h5stat_filters-g.ddl deleted file mode 100644 index 290c82a..0000000 --- a/tools/h5stat/testfiles/h5stat_filters-g.ddl +++ /dev/null @@ -1,6 +0,0 @@ -Filename: h5stat_filters.h5 -Small groups (with 0 to 9 links): - Total # of small groups: 0 -Group bins: - # of groups with 10 - 99 links: 1 - Total # of groups: 1 diff --git a/tools/h5stat/testfiles/h5stat_filters.ddl b/tools/h5stat/testfiles/h5stat_filters.ddl deleted file mode 100644 index 1a4fd72..0000000 --- a/tools/h5stat/testfiles/h5stat_filters.ddl +++ /dev/null @@ -1,97 +0,0 @@ -Filename: h5stat_filters.h5 -File information - # of unique groups: 1 - # of unique datasets: 15 - # of unique named datatypes: 1 - # of unique links: 0 - # of unique other: 0 - Max. # of links to object: 1 - Max. # of objects in group: 16 -File space information for file metadata (in bytes): - Superblock: 96 - Superblock extension: 0 - User block: 0 - Object headers: (total/unused) - Groups: 48/8 - Datasets(exclude compact data): 4136/1344 - Datatypes: 80/0 - Groups: - B-tree/List: 1200 - Heap: 288 - Attributes: - B-tree/List: 0 - Heap: 0 - Chunked datasets: - Index: 31392 - Datasets: - Heap: 72 - Shared Messages: - Header: 0 - B-tree/List: 0 - Heap: 0 - Free-space managers: - Header: 0 - Amount of free space: 0 -Small groups (with 0 to 9 links): - Total # of small groups: 0 -Group bins: - # of groups with 10 - 99 links: 1 - Total # of groups: 1 -Dataset dimension information: - Max. rank of datasets: 2 - Dataset ranks: - # of dataset with rank 1: 1 - # of dataset with rank 2: 14 -1-D Dataset information: - Max. dimension size of 1-D datasets: 100 - Small 1-D datasets (with dimension sizes 0 to 9): - Total # of small datasets: 0 - 1-D Dataset dimension bins: - # of datasets with dimension size 100 - 999: 1 - Total # of datasets: 1 -Dataset storage information: - Total raw data size: 8659 - Total external raw data size: 400 -Dataset layout information: - Dataset layout counts[COMPACT]: 1 - Dataset layout counts[CONTIG]: 2 - Dataset layout counts[CHUNKED]: 12 - Dataset layout counts[VIRTUAL]: 0 - Number of external files : 2 -Dataset filters information: - Number of datasets with: - NO filter: 7 - GZIP filter: 2 - SHUFFLE filter: 2 - FLETCHER32 filter: 2 - SZIP filter: 2 - NBIT filter: 2 - SCALEOFFSET filter: 1 - USER-DEFINED filter: 1 -Dataset datatype information: - # of unique datatypes used by datasets: 2 - Dataset datatype #0: - Count (total/named) = (14/0) - Size (desc./elmt) = (14/4) - Dataset datatype #1: - Count (total/named) = (1/0) - Size (desc./elmt) = (14/4) - Total dataset datatype count: 15 -Small # of attributes (objects with 1 to 10 attributes): - Total # of objects with small # of attributes: 0 -Attribute bins: - Total # of objects with attributes: 0 - Max. # of attributes to objects: 0 -Free-space section threshold: 1 bytes -Small size free-space sections (< 10 bytes): - Total # of small size sections: 0 -Free-space section bins: - Total # of sections: 0 -File space management strategy: H5F_FILE_SPACE_ALL -Summary of file space information: - File metadata: 37312 bytes - Raw data: 8659 bytes - Amount/Percent of tracked free space: 0 bytes/0.0% - Unaccounted space: 301 bytes -Total space: 46272 bytes -External raw data: 400 bytes diff --git a/tools/h5stat/testfiles/h5stat_filters.h5 b/tools/h5stat/testfiles/h5stat_filters.h5 deleted file mode 100644 index 5b5f4bb..0000000 Binary files a/tools/h5stat/testfiles/h5stat_filters.h5 and /dev/null differ diff --git a/tools/h5stat/testfiles/h5stat_help1.ddl b/tools/h5stat/testfiles/h5stat_help1.ddl deleted file mode 100644 index d2a8715..0000000 --- a/tools/h5stat/testfiles/h5stat_help1.ddl +++ /dev/null @@ -1,24 +0,0 @@ -Usage: h5stat [OPTIONS] file - - OPTIONS - -h, --help Print a usage message and exit - -V, --version Print version number and exit - -f, --file Print file information - -F, --filemetadata Print file space information for file's metadata - -g, --group Print group information - -l N, --links=N Set the threshold for the # of links when printing - information for small groups. N is an integer greater - than 0. The default threshold is 10. - -G, --groupmetadata Print file space information for groups' metadata - -d, --dset Print dataset information - -m N, --dims=N Set the threshold for the dimension sizes when printing - information for small datasets. N is an integer greater - than 0. The default threshold is 10. - -D, --dsetmetadata Print file space information for datasets' metadata - -T, --dtypemetadata Print datasets' datatype information - -A, --attribute Print attribute information - -a N, --numattrs=N Set the threshold for the # of attributes when printing - information for small # of attributes. N is an integer greater - than 0. The default threshold is 10. - -s, --freespace Print free space information - -S, --summary Print summary of file space information diff --git a/tools/h5stat/testfiles/h5stat_help2.ddl b/tools/h5stat/testfiles/h5stat_help2.ddl deleted file mode 100644 index d2a8715..0000000 --- a/tools/h5stat/testfiles/h5stat_help2.ddl +++ /dev/null @@ -1,24 +0,0 @@ -Usage: h5stat [OPTIONS] file - - OPTIONS - -h, --help Print a usage message and exit - -V, --version Print version number and exit - -f, --file Print file information - -F, --filemetadata Print file space information for file's metadata - -g, --group Print group information - -l N, --links=N Set the threshold for the # of links when printing - information for small groups. N is an integer greater - than 0. The default threshold is 10. - -G, --groupmetadata Print file space information for groups' metadata - -d, --dset Print dataset information - -m N, --dims=N Set the threshold for the dimension sizes when printing - information for small datasets. N is an integer greater - than 0. The default threshold is 10. - -D, --dsetmetadata Print file space information for datasets' metadata - -T, --dtypemetadata Print datasets' datatype information - -A, --attribute Print attribute information - -a N, --numattrs=N Set the threshold for the # of attributes when printing - information for small # of attributes. N is an integer greater - than 0. The default threshold is 10. - -s, --freespace Print free space information - -S, --summary Print summary of file space information diff --git a/tools/h5stat/testfiles/h5stat_idx.ddl b/tools/h5stat/testfiles/h5stat_idx.ddl deleted file mode 100644 index b26f1a4..0000000 --- a/tools/h5stat/testfiles/h5stat_idx.ddl +++ /dev/null @@ -1,93 +0,0 @@ -Filename: h5stat_idx.h5 -File information - # of unique groups: 1 - # of unique datasets: 2 - # of unique named datatypes: 0 - # of unique links: 0 - # of unique other: 0 - Max. # of links to object: 1 - Max. # of objects in group: 2 -File space information for file metadata (in bytes): - Superblock: 48 - Superblock extension: 0 - User block: 0 - Object headers: (total/unused) - Groups: 147/47 - Datasets(exclude compact data): 568/362 - Datatypes: 0/0 - Groups: - B-tree/List: 0 - Heap: 0 - Attributes: - B-tree/List: 0 - Heap: 0 - Chunked datasets: - Index: 202 - Datasets: - Heap: 0 - Shared Messages: - Header: 0 - B-tree/List: 0 - Heap: 0 - Free-space managers: - Header: 0 - Amount of free space: 0 -Small groups (with 0 to 9 links): - # of groups with 2 link(s): 1 - Total # of small groups: 1 -Group bins: - # of groups with 1 - 9 links: 1 - Total # of groups: 1 -Dataset dimension information: - Max. rank of datasets: 1 - Dataset ranks: - # of dataset with rank 1: 2 -1-D Dataset information: - Max. dimension size of 1-D datasets: 10 - Small 1-D datasets (with dimension sizes 0 to 9): - Total # of small datasets: 0 - 1-D Dataset dimension bins: - # of datasets with dimension size 10 - 99: 2 - Total # of datasets: 2 -Dataset storage information: - Total raw data size: 110 - Total external raw data size: 0 -Dataset layout information: - Dataset layout counts[COMPACT]: 0 - Dataset layout counts[CONTIG]: 0 - Dataset layout counts[CHUNKED]: 2 - Dataset layout counts[VIRTUAL]: 0 - Number of external files : 0 -Dataset filters information: - Number of datasets with: - NO filter: 1 - GZIP filter: 1 - SHUFFLE filter: 0 - FLETCHER32 filter: 0 - SZIP filter: 0 - NBIT filter: 0 - SCALEOFFSET filter: 0 - USER-DEFINED filter: 0 -Dataset datatype information: - # of unique datatypes used by datasets: 1 - Dataset datatype #0: - Count (total/named) = (2/0) - Size (desc./elmt) = (14/4) - Total dataset datatype count: 2 -Small # of attributes (objects with 1 to 10 attributes): - Total # of objects with small # of attributes: 0 -Attribute bins: - Total # of objects with attributes: 0 - Max. # of attributes to objects: 0 -Free-space section threshold: 1 bytes -Small size free-space sections (< 10 bytes): - Total # of small size sections: 0 -Free-space section bins: - Total # of sections: 0 -File space management strategy: H5F_FILE_SPACE_ALL -Summary of file space information: - File metadata: 965 bytes - Raw data: 110 bytes - Amount/Percent of tracked free space: 0 bytes/0.0% - Unaccounted space: 1131 bytes -Total space: 2206 bytes diff --git a/tools/h5stat/testfiles/h5stat_idx.h5 b/tools/h5stat/testfiles/h5stat_idx.h5 deleted file mode 100644 index 303d1f8..0000000 Binary files a/tools/h5stat/testfiles/h5stat_idx.h5 and /dev/null differ diff --git a/tools/h5stat/testfiles/h5stat_links1.ddl b/tools/h5stat/testfiles/h5stat_links1.ddl deleted file mode 100644 index c650f15..0000000 --- a/tools/h5stat/testfiles/h5stat_links1.ddl +++ /dev/null @@ -1,10 +0,0 @@ -Filename: h5stat_threshold.h5 -Small groups (with 0 to 7 links): - # of groups with 0 link(s): 1 - # of groups with 7 link(s): 1 - Total # of small groups: 2 -Group bins: - # of groups with 0 link: 1 - # of groups with 1 - 9 links: 2 - # of groups with 10 - 99 links: 1 - Total # of groups: 4 diff --git a/tools/h5stat/testfiles/h5stat_links2.ddl b/tools/h5stat/testfiles/h5stat_links2.ddl deleted file mode 100644 index 4622884..0000000 --- a/tools/h5stat/testfiles/h5stat_links2.ddl +++ /dev/null @@ -1,105 +0,0 @@ -Filename: h5stat_threshold.h5 -File information - # of unique groups: 4 - # of unique datasets: 23 - # of unique named datatypes: 0 - # of unique links: 0 - # of unique other: 0 - Max. # of links to object: 1 - Max. # of objects in group: 10 -File space information for file metadata (in bytes): - Superblock: 96 - Superblock extension: 0 - User block: 0 - Object headers: (total/unused) - Groups: 3576/0 - Datasets(exclude compact data): 7896/2912 - Datatypes: 0/0 - Groups: - B-tree/List: 3816 - Heap: 744 - Attributes: - B-tree/List: 0 - Heap: 0 - Chunked datasets: - Index: 0 - Datasets: - Heap: 0 - Shared Messages: - Header: 0 - B-tree/List: 0 - Heap: 0 - Free-space managers: - Header: 0 - Amount of free space: 0 -Small groups (with 0 to 7 links): - # of groups with 0 link(s): 1 - # of groups with 7 link(s): 1 - Total # of small groups: 2 -Group bins: - # of groups with 0 link: 1 - # of groups with 1 - 9 links: 2 - # of groups with 10 - 99 links: 1 - Total # of groups: 4 -Dataset dimension information: - Max. rank of datasets: 2 - Dataset ranks: - # of dataset with rank 0: 2 - # of dataset with rank 1: 20 - # of dataset with rank 2: 1 -1-D Dataset information: - Max. dimension size of 1-D datasets: 6 - Small 1-D datasets (with dimension sizes 0 to 9): - # of datasets with dimension sizes 0: 1 - # of datasets with dimension sizes 6: 19 - Total # of small datasets: 20 - 1-D Dataset dimension bins: - # of datasets with dimension size 0: 1 - # of datasets with dimension size 1 - 9: 19 - Total # of datasets: 20 -Dataset storage information: - Total raw data size: 0 - Total external raw data size: 0 -Dataset layout information: - Dataset layout counts[COMPACT]: 0 - Dataset layout counts[CONTIG]: 23 - Dataset layout counts[CHUNKED]: 0 - Dataset layout counts[VIRTUAL]: 0 - Number of external files : 0 -Dataset filters information: - Number of datasets with: - NO filter: 23 - GZIP filter: 0 - SHUFFLE filter: 0 - FLETCHER32 filter: 0 - SZIP filter: 0 - NBIT filter: 0 - SCALEOFFSET filter: 0 - USER-DEFINED filter: 0 -Dataset datatype information: - # of unique datatypes used by datasets: 1 - Dataset datatype #0: - Count (total/named) = (23/0) - Size (desc./elmt) = (14/1) - Total dataset datatype count: 23 -Small # of attributes (objects with 1 to 10 attributes): - # of objects with 1 attributes: 2 - # of objects with 10 attributes: 1 - Total # of objects with small # of attributes: 3 -Attribute bins: - # of objects with 1 - 9 attributes: 2 - # of objects with 10 - 99 attributes: 3 - Total # of objects with attributes: 5 - Max. # of attributes to objects: 25 -Free-space section threshold: 1 bytes -Small size free-space sections (< 10 bytes): - Total # of small size sections: 0 -Free-space section bins: - Total # of sections: 0 -File space management strategy: H5F_FILE_SPACE_ALL -Summary of file space information: - File metadata: 16128 bytes - Raw data: 0 bytes - Amount/Percent of tracked free space: 0 bytes/0.0% - Unaccounted space: 184 bytes -Total space: 16312 bytes diff --git a/tools/h5stat/testfiles/h5stat_links3.ddl b/tools/h5stat/testfiles/h5stat_links3.ddl deleted file mode 100644 index f80471a..0000000 --- a/tools/h5stat/testfiles/h5stat_links3.ddl +++ /dev/null @@ -1,12 +0,0 @@ -Filename: h5stat_threshold.h5 -Small groups (with 0 to 19 links): - # of groups with 0 link(s): 1 - # of groups with 7 link(s): 1 - # of groups with 9 link(s): 1 - # of groups with 10 link(s): 1 - Total # of small groups: 4 -Group bins: - # of groups with 0 link: 1 - # of groups with 1 - 9 links: 2 - # of groups with 10 - 99 links: 1 - Total # of groups: 4 diff --git a/tools/h5stat/testfiles/h5stat_links4.ddl b/tools/h5stat/testfiles/h5stat_links4.ddl deleted file mode 100644 index 94feffd..0000000 --- a/tools/h5stat/testfiles/h5stat_links4.ddl +++ /dev/null @@ -1,8 +0,0 @@ -Filename: h5stat_newgrat.h5 -Small groups (with 0 to 9 links): - # of groups with 0 link(s): 35000 - Total # of small groups: 35000 -Group bins: - # of groups with 0 link: 35000 - # of groups with 10000 - 99999 links: 1 - Total # of groups: 35001 diff --git a/tools/h5stat/testfiles/h5stat_links5.ddl b/tools/h5stat/testfiles/h5stat_links5.ddl deleted file mode 100644 index 6f33bed..0000000 --- a/tools/h5stat/testfiles/h5stat_links5.ddl +++ /dev/null @@ -1,9 +0,0 @@ -Filename: h5stat_newgrat.h5 -Small groups (with 0 to 39999 links): - # of groups with 0 link(s): 35000 - # of groups with 35001 link(s): 1 - Total # of small groups: 35001 -Group bins: - # of groups with 0 link: 35000 - # of groups with 10000 - 99999 links: 1 - Total # of groups: 35001 diff --git a/tools/h5stat/testfiles/h5stat_newgrat-UA.ddl b/tools/h5stat/testfiles/h5stat_newgrat-UA.ddl deleted file mode 100644 index a5ee7e8..0000000 --- a/tools/h5stat/testfiles/h5stat_newgrat-UA.ddl +++ /dev/null @@ -1,7 +0,0 @@ -Filename: h5stat_newgrat.h5 -Small # of attributes (objects with 1 to 10 attributes): - Total # of objects with small # of attributes: 0 -Attribute bins: - # of objects with 100 - 999 attributes: 1 - Total # of objects with attributes: 1 - Max. # of attributes to objects: 100 diff --git a/tools/h5stat/testfiles/h5stat_newgrat-UG.ddl b/tools/h5stat/testfiles/h5stat_newgrat-UG.ddl deleted file mode 100644 index 41195ac..0000000 --- a/tools/h5stat/testfiles/h5stat_newgrat-UG.ddl +++ /dev/null @@ -1,5 +0,0 @@ -Filename: h5stat_newgrat.h5 -File space information for groups' metadata (in bytes): - Object headers (total/unused): 5145147/3220092 - B-tree/List: 470054 - Heap: 739045 diff --git a/tools/h5stat/testfiles/h5stat_newgrat.ddl b/tools/h5stat/testfiles/h5stat_newgrat.ddl deleted file mode 100644 index e305f58..0000000 --- a/tools/h5stat/testfiles/h5stat_newgrat.ddl +++ /dev/null @@ -1,95 +0,0 @@ -Filename: h5stat_newgrat.h5 -File information - # of unique groups: 35001 - # of unique datasets: 1 - # of unique named datatypes: 0 - # of unique links: 0 - # of unique other: 0 - Max. # of links to object: 1 - Max. # of objects in group: 35001 -File space information for file metadata (in bytes): - Superblock: 48 - Superblock extension: 119 - User block: 0 - Object headers: (total/unused) - Groups: 5145147/3220092 - Datasets(exclude compact data): 414/312 - Datatypes: 0/0 - Groups: - B-tree/List: 470054 - Heap: 739045 - Attributes: - B-tree/List: 2598 - Heap: 4431 - Chunked datasets: - Index: 0 - Datasets: - Heap: 0 - Shared Messages: - Header: 0 - B-tree/List: 0 - Heap: 0 - Free-space managers: - Header: 180 - Amount of free space: 132 -Small groups (with 0 to 9 links): - # of groups with 0 link(s): 35000 - Total # of small groups: 35000 -Group bins: - # of groups with 0 link: 35000 - # of groups with 10000 - 99999 links: 1 - Total # of groups: 35001 -Dataset dimension information: - Max. rank of datasets: 0 - Dataset ranks: - # of dataset with rank 0: 1 -1-D Dataset information: - Max. dimension size of 1-D datasets: 0 - Small 1-D datasets (with dimension sizes 0 to 9): - Total # of small datasets: 0 -Dataset storage information: - Total raw data size: 0 - Total external raw data size: 0 -Dataset layout information: - Dataset layout counts[COMPACT]: 0 - Dataset layout counts[CONTIG]: 1 - Dataset layout counts[CHUNKED]: 0 - Dataset layout counts[VIRTUAL]: 0 - Number of external files : 0 -Dataset filters information: - Number of datasets with: - NO filter: 1 - GZIP filter: 0 - SHUFFLE filter: 0 - FLETCHER32 filter: 0 - SZIP filter: 0 - NBIT filter: 0 - SCALEOFFSET filter: 0 - USER-DEFINED filter: 0 -Dataset datatype information: - # of unique datatypes used by datasets: 1 - Dataset datatype #0: - Count (total/named) = (1/0) - Size (desc./elmt) = (14/4) - Total dataset datatype count: 1 -Small # of attributes (objects with 1 to 10 attributes): - Total # of objects with small # of attributes: 0 -Attribute bins: - # of objects with 100 - 999 attributes: 1 - Total # of objects with attributes: 1 - Max. # of attributes to objects: 100 -Free-space section threshold: 1 bytes -Small size free-space sections (< 10 bytes): - # of sections of size 1: 1 - Total # of small size sections: 1 -Free-space section bins: - # of sections of size 1 - 9: 1 - # of sections of size 10 - 99: 4 - Total # of sections: 5 -File space management strategy: H5F_FILE_SPACE_ALL_PERSIST -Summary of file space information: - File metadata: 6362036 bytes - Raw data: 0 bytes - Amount/Percent of tracked free space: 132 bytes/0.0% - Unaccounted space: 0 bytes -Total space: 6362168 bytes diff --git a/tools/h5stat/testfiles/h5stat_newgrat.h5 b/tools/h5stat/testfiles/h5stat_newgrat.h5 deleted file mode 100644 index c919b71..0000000 Binary files a/tools/h5stat/testfiles/h5stat_newgrat.h5 and /dev/null differ diff --git a/tools/h5stat/testfiles/h5stat_nofile.ddl b/tools/h5stat/testfiles/h5stat_nofile.ddl deleted file mode 100644 index d8a8b2c..0000000 --- a/tools/h5stat/testfiles/h5stat_nofile.ddl +++ /dev/null @@ -1,25 +0,0 @@ -Usage: h5stat [OPTIONS] file - - OPTIONS - -h, --help Print a usage message and exit - -V, --version Print version number and exit - -f, --file Print file information - -F, --filemetadata Print file space information for file's metadata - -g, --group Print group information - -l N, --links=N Set the threshold for the # of links when printing - information for small groups. N is an integer greater - than 0. The default threshold is 10. - -G, --groupmetadata Print file space information for groups' metadata - -d, --dset Print dataset information - -m N, --dims=N Set the threshold for the dimension sizes when printing - information for small datasets. N is an integer greater - than 0. The default threshold is 10. - -D, --dsetmetadata Print file space information for datasets' metadata - -T, --dtypemetadata Print datasets' datatype information - -A, --attribute Print attribute information - -a N, --numattrs=N Set the threshold for the # of attributes when printing - information for small # of attributes. N is an integer greater - than 0. The default threshold is 10. - -s, --freespace Print free space information - -S, --summary Print summary of file space information -h5stat error: missing file name diff --git a/tools/h5stat/testfiles/h5stat_notexist.ddl b/tools/h5stat/testfiles/h5stat_notexist.ddl deleted file mode 100644 index cc25e43..0000000 --- a/tools/h5stat/testfiles/h5stat_notexist.ddl +++ /dev/null @@ -1,2 +0,0 @@ -Filename: notexist.h5 -h5stat error: unable to open file "notexist.h5" diff --git a/tools/h5stat/testfiles/h5stat_numattrs1.ddl b/tools/h5stat/testfiles/h5stat_numattrs1.ddl deleted file mode 100644 index fb5568d..0000000 --- a/tools/h5stat/testfiles/h5stat_numattrs1.ddl +++ /dev/null @@ -1,17 +0,0 @@ -Filename: h5stat_threshold.h5 -Small # of attributes (objects with 1 to 10 attributes): - # of objects with 1 attributes: 2 - # of objects with 10 attributes: 1 - Total # of objects with small # of attributes: 3 -Attribute bins: - # of objects with 1 - 9 attributes: 2 - # of objects with 10 - 99 attributes: 3 - Total # of objects with attributes: 5 - Max. # of attributes to objects: 25 -File space management strategy: H5F_FILE_SPACE_ALL -Summary of file space information: - File metadata: 16128 bytes - Raw data: 0 bytes - Amount/Percent of tracked free space: 0 bytes/0.0% - Unaccounted space: 184 bytes -Total space: 16312 bytes diff --git a/tools/h5stat/testfiles/h5stat_numattrs2.ddl b/tools/h5stat/testfiles/h5stat_numattrs2.ddl deleted file mode 100644 index ccb23c1..0000000 --- a/tools/h5stat/testfiles/h5stat_numattrs2.ddl +++ /dev/null @@ -1,105 +0,0 @@ -Filename: h5stat_threshold.h5 -File information - # of unique groups: 4 - # of unique datasets: 23 - # of unique named datatypes: 0 - # of unique links: 0 - # of unique other: 0 - Max. # of links to object: 1 - Max. # of objects in group: 10 -File space information for file metadata (in bytes): - Superblock: 96 - Superblock extension: 0 - User block: 0 - Object headers: (total/unused) - Groups: 3576/0 - Datasets(exclude compact data): 7896/2912 - Datatypes: 0/0 - Groups: - B-tree/List: 3816 - Heap: 744 - Attributes: - B-tree/List: 0 - Heap: 0 - Chunked datasets: - Index: 0 - Datasets: - Heap: 0 - Shared Messages: - Header: 0 - B-tree/List: 0 - Heap: 0 - Free-space managers: - Header: 0 - Amount of free space: 0 -Small groups (with 0 to 9 links): - # of groups with 0 link(s): 1 - # of groups with 7 link(s): 1 - # of groups with 9 link(s): 1 - Total # of small groups: 3 -Group bins: - # of groups with 0 link: 1 - # of groups with 1 - 9 links: 2 - # of groups with 10 - 99 links: 1 - Total # of groups: 4 -Dataset dimension information: - Max. rank of datasets: 2 - Dataset ranks: - # of dataset with rank 0: 2 - # of dataset with rank 1: 20 - # of dataset with rank 2: 1 -1-D Dataset information: - Max. dimension size of 1-D datasets: 6 - Small 1-D datasets (with dimension sizes 0 to 9): - # of datasets with dimension sizes 0: 1 - # of datasets with dimension sizes 6: 19 - Total # of small datasets: 20 - 1-D Dataset dimension bins: - # of datasets with dimension size 0: 1 - # of datasets with dimension size 1 - 9: 19 - Total # of datasets: 20 -Dataset storage information: - Total raw data size: 0 - Total external raw data size: 0 -Dataset layout information: - Dataset layout counts[COMPACT]: 0 - Dataset layout counts[CONTIG]: 23 - Dataset layout counts[CHUNKED]: 0 - Dataset layout counts[VIRTUAL]: 0 - Number of external files : 0 -Dataset filters information: - Number of datasets with: - NO filter: 23 - GZIP filter: 0 - SHUFFLE filter: 0 - FLETCHER32 filter: 0 - SZIP filter: 0 - NBIT filter: 0 - SCALEOFFSET filter: 0 - USER-DEFINED filter: 0 -Dataset datatype information: - # of unique datatypes used by datasets: 1 - Dataset datatype #0: - Count (total/named) = (23/0) - Size (desc./elmt) = (14/1) - Total dataset datatype count: 23 -Small # of attributes (objects with 1 to 1 attributes): - # of objects with 1 attributes: 2 - Total # of objects with small # of attributes: 2 -Attribute bins: - # of objects with 1 - 9 attributes: 2 - # of objects with 10 - 99 attributes: 3 - Total # of objects with attributes: 5 - Max. # of attributes to objects: 25 -Free-space section threshold: 1 bytes -Small size free-space sections (< 10 bytes): - Total # of small size sections: 0 -Free-space section bins: - Total # of sections: 0 -File space management strategy: H5F_FILE_SPACE_ALL -Summary of file space information: - File metadata: 16128 bytes - Raw data: 0 bytes - Amount/Percent of tracked free space: 0 bytes/0.0% - Unaccounted space: 184 bytes -Total space: 16312 bytes diff --git a/tools/h5stat/testfiles/h5stat_numattrs3.ddl b/tools/h5stat/testfiles/h5stat_numattrs3.ddl deleted file mode 100644 index de8d6a3..0000000 --- a/tools/h5stat/testfiles/h5stat_numattrs3.ddl +++ /dev/null @@ -1,12 +0,0 @@ -Filename: h5stat_threshold.h5 -Small # of attributes (objects with 1 to 25 attributes): - # of objects with 1 attributes: 2 - # of objects with 10 attributes: 1 - # of objects with 11 attributes: 1 - # of objects with 25 attributes: 1 - Total # of objects with small # of attributes: 5 -Attribute bins: - # of objects with 1 - 9 attributes: 2 - # of objects with 10 - 99 attributes: 3 - Total # of objects with attributes: 5 - Max. # of attributes to objects: 25 diff --git a/tools/h5stat/testfiles/h5stat_numattrs4.ddl b/tools/h5stat/testfiles/h5stat_numattrs4.ddl deleted file mode 100644 index 2b0122a..0000000 --- a/tools/h5stat/testfiles/h5stat_numattrs4.ddl +++ /dev/null @@ -1,8 +0,0 @@ -Filename: h5stat_newgrat.h5 -Small # of attributes (objects with 1 to 100 attributes): - # of objects with 100 attributes: 1 - Total # of objects with small # of attributes: 1 -Attribute bins: - # of objects with 100 - 999 attributes: 1 - Total # of objects with attributes: 1 - Max. # of attributes to objects: 100 diff --git a/tools/h5stat/testfiles/h5stat_threshold.h5 b/tools/h5stat/testfiles/h5stat_threshold.h5 deleted file mode 100644 index 9f7c8c8..0000000 Binary files a/tools/h5stat/testfiles/h5stat_threshold.h5 and /dev/null differ diff --git a/tools/h5stat/testfiles/h5stat_tsohm.ddl b/tools/h5stat/testfiles/h5stat_tsohm.ddl deleted file mode 100644 index 4cf33fc..0000000 --- a/tools/h5stat/testfiles/h5stat_tsohm.ddl +++ /dev/null @@ -1,90 +0,0 @@ -Filename: h5stat_tsohm.h5 -File information - # of unique groups: 1 - # of unique datasets: 3 - # of unique named datatypes: 0 - # of unique links: 0 - # of unique other: 0 - Max. # of links to object: 1 - Max. # of objects in group: 3 -File space information for file metadata (in bytes): - Superblock: 48 - Superblock extension: 40 - User block: 0 - Object headers: (total/unused) - Groups: 51/2 - Datasets(exclude compact data): 852/447 - Datatypes: 0/0 - Groups: - B-tree/List: 872 - Heap: 120 - Attributes: - B-tree/List: 0 - Heap: 0 - Chunked datasets: - Index: 0 - Datasets: - Heap: 0 - Shared Messages: - Header: 38 - B-tree/List: 550 - Heap: 1279 - Free-space managers: - Header: 0 - Amount of free space: 0 -Small groups (with 0 to 9 links): - # of groups with 3 link(s): 1 - Total # of small groups: 1 -Group bins: - # of groups with 1 - 9 links: 1 - Total # of groups: 1 -Dataset dimension information: - Max. rank of datasets: 2 - Dataset ranks: - # of dataset with rank 2: 3 -1-D Dataset information: - Max. dimension size of 1-D datasets: 0 - Small 1-D datasets (with dimension sizes 0 to 9): - Total # of small datasets: 0 -Dataset storage information: - Total raw data size: 0 - Total external raw data size: 0 -Dataset layout information: - Dataset layout counts[COMPACT]: 0 - Dataset layout counts[CONTIG]: 0 - Dataset layout counts[CHUNKED]: 3 - Dataset layout counts[VIRTUAL]: 0 - Number of external files : 0 -Dataset filters information: - Number of datasets with: - NO filter: 3 - GZIP filter: 0 - SHUFFLE filter: 0 - FLETCHER32 filter: 0 - SZIP filter: 0 - NBIT filter: 0 - SCALEOFFSET filter: 0 - USER-DEFINED filter: 0 -Dataset datatype information: - # of unique datatypes used by datasets: 1 - Dataset datatype #0: - Count (total/named) = (3/0) - Size (desc./elmt) = (14/8) - Total dataset datatype count: 3 -Small # of attributes (objects with 1 to 10 attributes): - Total # of objects with small # of attributes: 0 -Attribute bins: - Total # of objects with attributes: 0 - Max. # of attributes to objects: 0 -Free-space section threshold: 1 bytes -Small size free-space sections (< 10 bytes): - Total # of small size sections: 0 -Free-space section bins: - Total # of sections: 0 -File space management strategy: H5F_FILE_SPACE_ALL -Summary of file space information: - File metadata: 3850 bytes - Raw data: 0 bytes - Amount/Percent of tracked free space: 0 bytes/0.0% - Unaccounted space: 0 bytes -Total space: 3850 bytes diff --git a/tools/h5stat/testfiles/h5stat_tsohm.h5 b/tools/h5stat/testfiles/h5stat_tsohm.h5 deleted file mode 100644 index e6c89f6..0000000 Binary files a/tools/h5stat/testfiles/h5stat_tsohm.h5 and /dev/null differ diff --git a/tools/h5stat/testh5stat.sh.in b/tools/h5stat/testh5stat.sh.in deleted file mode 100644 index cbb732c..0000000 --- a/tools/h5stat/testh5stat.sh.in +++ /dev/null @@ -1,318 +0,0 @@ -#! /bin/sh -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -# -# Tests for the h5stat tool -# -# Modifcations: -# Vailin Choi; July 2013 -# Add tests for -l, -m, -a options -# - -srcdir=@srcdir@ - -# Determine which filters are available -USE_FILTER_SZIP="@USE_FILTER_SZIP@" -USE_FILTER_DEFLATE="@USE_FILTER_DEFLATE@" - -TESTNAME=h5stat -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -STAT=h5stat # The tool name -STAT_BIN=`pwd`/$STAT # The path of the tool binary - -RM='rm -rf' -CMP='cmp -s' -DIFF='diff -c' -CP='cp' -DIRNAME='dirname' -LS='ls' -AWK='awk' - -nerrors=0 -verbose=yes - -# source dirs -SRC_TOOLS="$srcdir/.." -SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles" - -# testfiles source dirs for tools -SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles" -SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles" -SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles" -SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles" -SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles" -SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles" - -TESTDIR=./testfiles -test -d $TESTDIR || mkdir $TESTDIR - -###################################################################### -# test files -# -------------------------------------------------------------------- -# All the test files copy from source directory to test directory -# NOTE: Keep this framework to add/remove test files. -# Any test files from other tools can be used in this framework. -# This list are also used for checking exist. -# Comment '#' without space can be used. -# -------------------------------------------------------------------- -LIST_HDF5_TEST_FILES=" -$SRC_H5STAT_TESTFILES/h5stat_filters.h5 -$SRC_H5STAT_TESTFILES/h5stat_tsohm.h5 -$SRC_H5STAT_TESTFILES/h5stat_newgrat.h5 -$SRC_H5STAT_TESTFILES/h5stat_idx.h5 -$SRC_H5STAT_TESTFILES/h5stat_threshold.h5 -" - -LIST_OTHER_TEST_FILES=" -$SRC_H5STAT_TESTFILES/h5stat_help1.ddl -$SRC_H5STAT_TESTFILES/h5stat_help2.ddl -$SRC_H5STAT_TESTFILES/h5stat_notexist.ddl -$SRC_H5STAT_TESTFILES/h5stat_nofile.ddl -$SRC_H5STAT_TESTFILES/h5stat_filters.ddl -$SRC_H5STAT_TESTFILES/h5stat_filters-file.ddl -$SRC_H5STAT_TESTFILES/h5stat_filters-F.ddl -$SRC_H5STAT_TESTFILES/h5stat_filters-d.ddl -$SRC_H5STAT_TESTFILES/h5stat_filters-g.ddl -$SRC_H5STAT_TESTFILES/h5stat_filters-dT.ddl -$SRC_H5STAT_TESTFILES/h5stat_filters-UD.ddl -$SRC_H5STAT_TESTFILES/h5stat_filters-UT.ddl -$SRC_H5STAT_TESTFILES/h5stat_tsohm.ddl -$SRC_H5STAT_TESTFILES/h5stat_newgrat.ddl -$SRC_H5STAT_TESTFILES/h5stat_newgrat-UG.ddl -$SRC_H5STAT_TESTFILES/h5stat_newgrat-UA.ddl -$SRC_H5STAT_TESTFILES/h5stat_idx.ddl -$SRC_H5STAT_TESTFILES/h5stat_err1_links.ddl -$SRC_H5STAT_TESTFILES/h5stat_links1.ddl -$SRC_H5STAT_TESTFILES/h5stat_links2.ddl -$SRC_H5STAT_TESTFILES/h5stat_links3.ddl -$SRC_H5STAT_TESTFILES/h5stat_links4.ddl -$SRC_H5STAT_TESTFILES/h5stat_links5.ddl -$SRC_H5STAT_TESTFILES/h5stat_err1_dims.ddl -$SRC_H5STAT_TESTFILES/h5stat_dims1.ddl -$SRC_H5STAT_TESTFILES/h5stat_dims2.ddl -$SRC_H5STAT_TESTFILES/h5stat_err1_numattrs.ddl -$SRC_H5STAT_TESTFILES/h5stat_err2_numattrs.ddl -$SRC_H5STAT_TESTFILES/h5stat_numattrs1.ddl -$SRC_H5STAT_TESTFILES/h5stat_numattrs2.ddl -$SRC_H5STAT_TESTFILES/h5stat_numattrs3.ddl -$SRC_H5STAT_TESTFILES/h5stat_numattrs4.ddl -" - -# -# copy test files and expected output files from source dirs to test dir -# -COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES" - -COPY_TESTFILES_TO_TESTDIR() -{ - # copy test files. Used -f to make sure get a new copy - for tstfile in $COPY_TESTFILES - do - # ignore '#' comment - echo $tstfile | tr -d ' ' | grep '^#' > /dev/null - RET=$? - if [ $RET -eq 1 ]; then - # skip cp if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=`$DIRNAME $tstfile` - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $CP -f $tstfile $TESTDIR - if [ $? -ne 0 ]; then - echo "Error: FAILED to copy $tstfile ." - - # Comment out this to CREATE expected file - exit $EXIT_FAILURE - fi - fi - fi - done -} - -CLEAN_TESTFILES_AND_TESTDIR() -{ - # skip rm if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=$SRC_H5STAT_TESTFILES - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $RM $TESTDIR - fi -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Testing". -# -TESTING() { - SPACES=" " - echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Source in the output filter function definitions. -. $srcdir/../../bin/output_filter.sh - -# Run a test and print PASS or *FAIL*. If a test fails then increment -# the `nerrors' global variable and (if $verbose is set) display the -# difference between the actual output and the expected output. The -# expected output is given as the first argument to this function and -# the actual output file is calculated by replacing the `.ddl' with -# `.out'. The actual output is not removed if $HDF5_NOCLEANUP has a -# non-zero value. -# -TOOLTEST() { - expect="$TESTDIR/$1" - actual="$TESTDIR/`basename $1 .ddl`.out" - actual_err="$TESTDIR/`basename $1 .ddl`.err" - actual_sav=${actual}-sav - actual_err_sav=${actual_err}-sav - shift - - # Run test. - TESTING $STAT $@ - ( - cd $TESTDIR - $RUNSERIAL $STAT_BIN $@ - ) >$actual 2>$actual_err - - # save actual and actual_err in case they are needed later. - cp $actual $actual_sav - STDOUT_FILTER $actual - cp $actual_err $actual_err_sav - STDERR_FILTER $actual_err - cat $actual_err >> $actual - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.ddl) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err $actual_sav $actual_err_sav - fi -} - - -# Print a "SKIP" message -SKIP() { - TESTING $STAT $@ - echo " -SKIP-" -} - - - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## -# prepare for test -COPY_TESTFILES_TO_TESTDIR - -# Test for help flag -TOOLTEST h5stat_help1.ddl -h -TOOLTEST h5stat_help2.ddl --help -# Test when h5stat a file that does not exist -TOOLTEST h5stat_notexist.ddl notexist.h5 -TOOLTEST h5stat_nofile.ddl '' - -# Test file with groups, compressed datasets, user-applied fileters, etc. -# h5stat_filters.h5 is a copy of ../../testfiles/tfilters.h5 as of release 1.8.0-alpha4 -TOOLTEST h5stat_filters.ddl h5stat_filters.h5 -TOOLTEST h5stat_filters-file.ddl -f h5stat_filters.h5 -TOOLTEST h5stat_filters-F.ddl -F h5stat_filters.h5 -TOOLTEST h5stat_filters-d.ddl -d h5stat_filters.h5 -TOOLTEST h5stat_filters-g.ddl -g h5stat_filters.h5 -TOOLTEST h5stat_filters-dT.ddl -dT h5stat_filters.h5 -TOOLTEST h5stat_filters-UD.ddl -D h5stat_filters.h5 -TOOLTEST h5stat_filters-UT.ddl -T h5stat_filters.h5 -# -# h5stat_tsohm.h5 is a copy of ../../../test/tsohm.h5 generated by tsohm.c -# as of release 1.8.7-snap0 (on a 64-bit machine) -TOOLTEST h5stat_tsohm.ddl h5stat_tsohm.h5 -# h5stat_newgrat.h5 is generated by h5stat_gentest.c -TOOLTEST h5stat_newgrat.ddl h5stat_newgrat.h5 -TOOLTEST h5stat_newgrat-UG.ddl -G h5stat_newgrat.h5 -TOOLTEST h5stat_newgrat-UA.ddl -A h5stat_newgrat.h5 -# h5stat_idx.h5 is generated by h5stat_gentest.c -TOOLTEST h5stat_idx.ddl h5stat_idx.h5 -# -# Tests for -l (--links) option on h5stat_threshold.h5: -# -l 0 (incorrect threshold value) -# -g -l 8 -# --links=8 -# --links=20 -g -TOOLTEST h5stat_err1_links.ddl -l 0 h5stat_threshold.h5 -TOOLTEST h5stat_links1.ddl -g -l 8 h5stat_threshold.h5 -TOOLTEST h5stat_links2.ddl --links=8 h5stat_threshold.h5 -TOOLTEST h5stat_links3.ddl --links=20 -g h5stat_threshold.h5 -# -# Tests for -l (--links) option on h5stat_newgrat.h5: -# -g -# -g -l 40000 -TOOLTEST h5stat_links4.ddl -g h5stat_newgrat.h5 -TOOLTEST h5stat_links5.ddl -g -l 40000 h5stat_newgrat.h5 -# -# Tests for -m (--dims) option on h5stat_threshold.h5 -# -d --dims=-1 (incorrect threshold value) -# -gd -m 5 -# -d --di=15 -TOOLTEST h5stat_err1_dims.ddl -d --dims=-1 h5stat_threshold.h5 -TOOLTEST h5stat_dims1.ddl -gd -m 5 h5stat_threshold.h5 -TOOLTEST h5stat_dims2.ddl -d --di=15 h5stat_threshold.h5 -# -# Tests for -a option on h5stat_threshold.h5 -# -a -2 (incorrect threshold value) -# --numattrs (without threshold value) -# -AS -a 10 -# -a 1 -# -A --numattrs=25 -TOOLTEST h5stat_err1_numattrs.ddl -a -2 h5stat_threshold.h5 -TOOLTEST h5stat_err2_numattrs.ddl --numattrs h5stat_threshold.h5 -TOOLTEST h5stat_numattrs1.ddl -AS -a 10 h5stat_threshold.h5 -TOOLTEST h5stat_numattrs2.ddl -a 1 h5stat_threshold.h5 -TOOLTEST h5stat_numattrs3.ddl -A --numattrs=25 h5stat_threshold.h5 -# -# Tests for -a option on h5stat_newgrat.h5 -# -A -a 100 -TOOLTEST h5stat_numattrs4.ddl -A -a 100 h5stat_newgrat.h5 -# - -# Clean up temporary files/directories -CLEAN_TESTFILES_AND_TESTDIR - -if test $nerrors -eq 0 ; then - echo "All $TESTNAME tests passed." - exit $EXIT_SUCCESS -else - echo "$TESTNAME tests failed with $nerrors errors." - exit $EXIT_FAILURE -fi - diff --git a/tools/misc/CMakeLists.txt b/tools/misc/CMakeLists.txt deleted file mode 100644 index f7ca039..0000000 --- a/tools/misc/CMakeLists.txt +++ /dev/null @@ -1,92 +0,0 @@ -cmake_minimum_required (VERSION 3.1.0) -PROJECT (HDF5_TOOLS_MISC) - -#----------------------------------------------------------------------------- -# Setup include Directories -#----------------------------------------------------------------------------- -INCLUDE_DIRECTORIES (${HDF5_TOOLS_DIR}/lib) - -# -------------------------------------------------------------------- -# Add the misc executables -# -------------------------------------------------------------------- -#-- Misc Executables -add_executable (h5debug ${HDF5_TOOLS_MISC_SOURCE_DIR}/h5debug.c) -TARGET_NAMING (h5debug STATIC) -TARGET_C_PROPERTIES (h5debug STATIC " " " ") -target_link_libraries (h5debug ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) -set_target_properties (h5debug PROPERTIES FOLDER tools) -set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5debug") - -add_executable (h5repart ${HDF5_TOOLS_MISC_SOURCE_DIR}/h5repart.c) -TARGET_NAMING (h5repart STATIC) -TARGET_C_PROPERTIES (h5repart STATIC " " " ") -target_link_libraries (h5repart ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) -set_target_properties (h5repart PROPERTIES FOLDER tools) -set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5repart") - -add_executable (h5mkgrp ${HDF5_TOOLS_MISC_SOURCE_DIR}/h5mkgrp.c) -TARGET_NAMING (h5mkgrp STATIC) -TARGET_C_PROPERTIES (h5mkgrp STATIC " " " ") -target_link_libraries (h5mkgrp ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) -set_target_properties (h5mkgrp PROPERTIES FOLDER tools) -set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5mkgrp") - -set (H5_DEP_EXECUTABLES - h5debug - h5repart - h5mkgrp -) - -#----------------------------------------------------------------------------- -# Generate the h5cc file containing settings needed to compile programs -#----------------------------------------------------------------------------- -#if (NOT WIN32) -# configure_file (${HDF5_TOOLS_MISC_SOURCE_DIR}/h5cc.in ${HDF5_BINARY_DIR}/h5cc @ONLY) -#endif (NOT WIN32) - -if (BUILD_TESTING) - # -------------------------------------------------------------------- - # Add the misc test executables - # -------------------------------------------------------------------- - if (HDF5_BUILD_GENERATORS) - add_executable (h5repart_gentest ${HDF5_TOOLS_MISC_SOURCE_DIR}/h5repart_gentest.c) - TARGET_NAMING (h5repart_gentest STATIC) - TARGET_C_PROPERTIES (h5repart_gentest STATIC " " " ") - target_link_libraries (h5repart_gentest ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) - set_target_properties (h5repart_gentest PROPERTIES FOLDER generator/tools) - #add_test (NAME h5repart_gentest COMMAND $) - - add_subdirectory (${HDF5_TOOLS_MISC_SOURCE_DIR}/vds) - - endif (HDF5_BUILD_GENERATORS) - - add_executable (h5repart_test ${HDF5_TOOLS_MISC_SOURCE_DIR}/repart_test.c) - TARGET_NAMING (h5repart_test STATIC) - TARGET_C_PROPERTIES (h5repart_test STATIC " " " ") - target_link_libraries (h5repart_test ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) - set_target_properties (h5repart_test PROPERTIES FOLDER tools) - - include (CMakeTests.cmake) -endif (BUILD_TESTING) - -############################################################################## -############################################################################## -### I N S T A L L A T I O N ### -############################################################################## -############################################################################## - -#----------------------------------------------------------------------------- -# Rules for Installation of tools using make Install target -#----------------------------------------------------------------------------- - -#INSTALL_PROGRAM_PDB (h5debug ${HDF5_INSTALL_BIN_DIR} toolsapplications) -#INSTALL_PROGRAM_PDB (h5repart ${HDF5_INSTALL_BIN_DIR} toolsapplications) -#INSTALL_PROGRAM_PDB (h5mkgrp ${HDF5_INSTALL_BIN_DIR} toolsapplications) - -install ( - TARGETS - h5debug h5repart h5mkgrp - EXPORT - ${HDF5_EXPORTED_TARGETS} - RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications -) diff --git a/tools/misc/CMakeTests.cmake b/tools/misc/CMakeTests.cmake deleted file mode 100644 index bc2760b..0000000 --- a/tools/misc/CMakeTests.cmake +++ /dev/null @@ -1,253 +0,0 @@ - -############################################################################## -############################################################################## -### T E S T I N G ### -############################################################################## -############################################################################## - - # -------------------------------------------------------------------- - # Copy all the HDF5 files from the source directory into the test directory - # -------------------------------------------------------------------- - set (HDF5_REFERENCE_TEST_FILES - family_file00000.h5 - family_file00001.h5 - family_file00002.h5 - family_file00003.h5 - family_file00004.h5 - family_file00005.h5 - family_file00006.h5 - family_file00007.h5 - family_file00008.h5 - family_file00009.h5 - family_file00010.h5 - family_file00011.h5 - family_file00012.h5 - family_file00013.h5 - family_file00014.h5 - family_file00015.h5 - family_file00016.h5 - family_file00017.h5 - ) - - foreach (h5_file ${HDF5_REFERENCE_TEST_FILES}) - HDFTEST_COPY_FILE("${HDF5_TOOLS_SRC_DIR}/testfiles/${h5_file}" "${PROJECT_BINARY_DIR}/${h5_file}" "h5repart_files") - endforeach (h5_file ${HDF5_REFERENCE_TEST_FILES}) - add_custom_target(h5repart_files ALL COMMENT "Copying files needed by h5repart tests" DEPENDS ${h5repart_files_list}) - - set (HDF5_MKGRP_TEST_FILES - #h5mkgrp_help.txt - #h5mkgrp_version - h5mkgrp_single.ls - h5mkgrp_single_v.ls - h5mkgrp_single_p.ls - h5mkgrp_single_l.ls - h5mkgrp_several.ls - h5mkgrp_several_v.ls - h5mkgrp_several_p.ls - h5mkgrp_several_l.ls - h5mkgrp_nested_p.ls - h5mkgrp_nested_lp.ls - h5mkgrp_nested_mult_p.ls - h5mkgrp_nested_mult_lp.ls - ) - - # make test dir - file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - - foreach (h5_mkgrp_file ${HDF5_MKGRP_TEST_FILES}) - HDFTEST_COPY_FILE("${HDF5_TOOLS_SRC_DIR}/testfiles/${h5_mkgrp_file}" "${PROJECT_BINARY_DIR}/testfiles/${h5_mkgrp_file}" "h5mkgrp_files") - endforeach (h5_mkgrp_file ${HDF5_MKGRP_TEST_FILES}) - - HDFTEST_COPY_FILE("${PROJECT_SOURCE_DIR}/testfiles/h5mkgrp_help.txt" "${PROJECT_BINARY_DIR}/testfiles/h5mkgrp_help.txt" "h5mkgrp_files") - add_custom_target(h5mkgrp_files ALL COMMENT "Copying files needed by h5mkgrp tests" DEPENDS ${h5mkgrp_files_list}) - - configure_file (${PROJECT_SOURCE_DIR}/testfiles/h5mkgrp_version.txt.in ${PROJECT_BINARY_DIR}/testfiles/h5mkgrp_version.txt @ONLY) - -############################################################################## -############################################################################## -### T H E T E S T S M A C R O S ### -############################################################################## -############################################################################## - - MACRO (ADD_H5_TEST resultfile resultcode resultoption) - if (NOT HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5MKGRP-${resultfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove - ${resultfile}.h5 - ) - set_tests_properties (H5MKGRP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - - add_test ( - NAME H5MKGRP-${resultfile} - COMMAND $ ${resultoption} ${resultfile}.h5 ${ARGN} - ) - set_tests_properties (H5MKGRP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - if (HDF5_ENABLE_USING_MEMCHECKER) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5MKGRP-${resultfile} PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - else (HDF5_ENABLE_USING_MEMCHECKER) - set_tests_properties (H5MKGRP-${resultfile} PROPERTIES DEPENDS H5MKGRP-${resultfile}-clear-objects) - add_test ( - NAME H5MKGRP-${resultfile}-h5ls - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=-v;-r;${resultfile}.h5" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" - -D "TEST_OUTPUT=${resultfile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_MASK_MOD=true" - -D "TEST_REFERENCE=${resultfile}.ls" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5MKGRP-${resultfile}-h5ls PROPERTIES DEPENDS H5MKGRP-${resultfile}) - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_TEST resultfile resultcode resultoption) - - MACRO (ADD_H5_CMP resultfile resultcode) - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME H5MKGRP_CMP-${resultfile} COMMAND $ ${ARGN}) - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5MKGRP_CMP-${resultfile}-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove - ${resultfile}.h5 - ) - set_tests_properties (H5MKGRP_CMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - add_test ( - NAME H5MKGRP_CMP-${resultfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" - -D "TEST_OUTPUT=${resultfile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}.txt" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - set_tests_properties (H5MKGRP_CMP-${resultfile} PROPERTIES DEPENDS H5MKGRP_CMP-${resultfile}-clear-objects) - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_H5_CMP resultfile resultcode) - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## - - ###################### H5REPART ######################### - # Remove any output file left over from previous test run - add_test ( - NAME H5REPART-clearall-objects - COMMAND ${CMAKE_COMMAND} - -E remove - fst_family00000.h5 - scd_family00000.h5 - scd_family00001.h5 - scd_family00002.h5 - scd_family00003.h5 - family_to_sec2.h5 - ) - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5REPART-clearall-objects PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - set (last_test "H5REPART-clearall-objects") - - # repartition family member size to 20,000 bytes. - add_test (NAME H5REPART-h5repart_20K COMMAND $ -m 20000 family_file%05d.h5 fst_family%05d.h5) - set_tests_properties (H5REPART-h5repart_20K PROPERTIES DEPENDS H5REPART-clearall-objects) - - # repartition family member size to 5 KB. - add_test (NAME H5REPART-h5repart_5K COMMAND $ -m 5k family_file%05d.h5 scd_family%05d.h5) - set_tests_properties (H5REPART-h5repart_5K PROPERTIES DEPENDS H5REPART-clearall-objects) - - # convert family file to sec2 file of 20,000 bytes - add_test (NAME H5REPART-h5repart_sec2 COMMAND $ -m 20000 -family_to_sec2 family_file%05d.h5 family_to_sec2.h5) - set_tests_properties (H5REPART-h5repart_sec2 PROPERTIES DEPENDS H5REPART-clearall-objects) - - # test the output files repartitioned above. - add_test (NAME H5REPART-h5repart_test COMMAND $) - set_tests_properties (H5REPART-h5repart_test PROPERTIES DEPENDS "H5REPART-clearall-objects;H5REPART-h5repart_20K;H5REPART-h5repart_5K;H5REPART-h5repart_sec2") - - set (H5_DEP_EXECUTABLES ${H5_DEP_EXECUTABLES} - h5repart_test - ) - - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5MKGRP-clearall-objects - COMMAND ${CMAKE_COMMAND} - -E remove - h5mkgrp_help.out - h5mkgrp_help.out.err - h5mkgrp_version.out - h5mkgrp_version.out.err - h5mkgrp_single.h5 - h5mkgrp_single.out - h5mkgrp_single.out.err - h5mkgrp_single_v.h5 - h5mkgrp_single_v.out - h5mkgrp_single_v.out.err - h5mkgrp_single_p.h5 - h5mkgrp_single_p.out - h5mkgrp_single_p.out.err - h5mkgrp_single_l.h5 - h5mkgrp_single_l.out - h5mkgrp_single_l.out.err - h5mkgrp_several.h5 - h5mkgrp_several.out - h5mkgrp_several.out.err - h5mkgrp_several_v.h5 - h5mkgrp_several_v.out - h5mkgrp_several_v.out.err - h5mkgrp_several_p.h5 - h5mkgrp_several_p.out - h5mkgrp_several_p.out.err - h5mkgrp_several_l.h5 - h5mkgrp_several_l.out - h5mkgrp_several_l.out.err - h5mkgrp_nested_p.h5 - h5mkgrp_nested_p.out - h5mkgrp_nested_p.out.err - h5mkgrp_nested_lp.h5 - h5mkgrp_nested_lp.out - h5mkgrp_nested_lp.out.err - h5mkgrp_nested_mult_p.h5 - h5mkgrp_nested_mult_p.out - h5mkgrp_nested_mult_p.out.err - h5mkgrp_nested_mult_lp.h5 - h5mkgrp_nested_mult_lp.out - h5mkgrp_nested_mult_lp.out.err - ) - set_tests_properties (H5MKGRP-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5MKGRP-clearall-objects PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - set (last_test "H5MKGRP-clearall-objects") - endif (HDF5_ENABLE_USING_MEMCHECKER) - - # Check that help & version is displayed properly - ADD_H5_CMP (h5mkgrp_help 0 "-h") - ADD_H5_CMP (h5mkgrp_version 0 "-V") - - # Create single group at root level - ADD_H5_TEST (h5mkgrp_single 0 "" single) - ADD_H5_TEST (h5mkgrp_single_v 0 "-v" single) - ADD_H5_TEST (h5mkgrp_single_p 0 "-p" single) - ADD_H5_TEST (h5mkgrp_single_l 0 "-l" latest) - - # Create several groups at root level - ADD_H5_TEST (h5mkgrp_several 0 "" one two) - ADD_H5_TEST (h5mkgrp_several_v 0 "-v" one two) - ADD_H5_TEST (h5mkgrp_several_p 0 "-p" one two) - ADD_H5_TEST (h5mkgrp_several_l 0 "-l" one two) - - # Create various nested groups - ADD_H5_TEST (h5mkgrp_nested_p 0 "-p" /one/two) - ADD_H5_TEST (h5mkgrp_nested_lp 0 "-lp" /one/two) - ADD_H5_TEST (h5mkgrp_nested_mult_p 0 "-p" /one/two /three/four) - ADD_H5_TEST (h5mkgrp_nested_mult_lp 0 "-lp" /one/two /three/four) diff --git a/tools/misc/Makefile.am b/tools/misc/Makefile.am deleted file mode 100644 index fdfe8f7..0000000 --- a/tools/misc/Makefile.am +++ /dev/null @@ -1,76 +0,0 @@ -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -## -## Makefile.am -## Run automake to generate a Makefile.in from this file. -# -# HDF5 Library Makefile(.in) -# - -include $(top_srcdir)/config/commence.am - -SUBDIRS=vds - -# Include src directory -AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib - -#test scripts and programs -TEST_PROG=h5repart_gentest talign -TEST_SCRIPT=testh5repart.sh testh5mkgrp.sh - -check_PROGRAMS=$(TEST_PROG) repart_test -check_SCRIPTS=$(TEST_SCRIPT) -SCRIPT_DEPEND=h5repart$(EXEEXT) h5mkgrp$(EXEEXT) - -# These are our main targets, the tools -bin_PROGRAMS=h5debug h5repart h5mkgrp -bin_SCRIPTS=h5redeploy - -# Add h5debug, h5repart, and h5mkgrp specific linker flags here -h5debug_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) -h5repart_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) -h5mkgrp_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) - -# Tell automake to clean h5redeploy script -CLEANFILES=h5redeploy - -# Temporary files. *.h5 are generated by h5repart_gentest. They should -# copied to the testfiles/ directory if update is required. fst_family*.h5 -# and scd_family*.h5 were created by setting the HDF5_NOCLEANUP variable. -CHECK_CLEANFILES+=*.h5 ../testfiles/fst_family*.h5 ../testfiles/scd_family*.h5 - -# These were generated by configure. Remove them only when distclean. -DISTCLEANFILES=h5cc testh5repart.sh - -# All programs rely on hdf5 library and h5tools library -LDADD=$(LIBH5TOOLS) $(LIBHDF5) - -# h5cc needs custom install and uninstall rules, since it may be -# named h5pcc if hdf5 is being built in parallel mode. -if BUILD_PARALLEL_CONDITIONAL - H5CC_NAME=h5pcc -else - H5CC_NAME=h5cc -endif - -install-exec-local: - @$(INSTALL) h5cc $(DESTDIR)$(bindir)/$(H5CC_NAME) -uninstall-local: - @$(RM) $(DESTDIR)$(bindir)/$(H5CC_NAME) - -# How to build h5redeploy script -h5redeploy: h5redeploy.in - @cp $(srcdir)/$@.in $@ - -include $(top_srcdir)/config/conclude.am diff --git a/tools/misc/h5cc.in b/tools/misc/h5cc.in deleted file mode 100644 index 1645855..0000000 --- a/tools/misc/h5cc.in +++ /dev/null @@ -1,401 +0,0 @@ -#! /bin/sh -## -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -## - -# This tool is adapted from the mpicc command of the MPICH Software. - -############################################################################ -## ## -## Things You May Have to Modify: ## -## ## -## If the following paths don't point to the place were HDF5 is installed ## -## on your system (i.e., you received a binary distribution or moved the ## -## files from the originally installed directory to another directory) ## -## then modify them accordingly to represent the new paths. ## -## ## -############################################################################ -prefix="@prefix@" -exec_prefix="@exec_prefix@" -libdir="@libdir@" -includedir="@includedir@" -HL="@HL@" - -############################################################################ -## ## -## Things You Can Modify to Override HDF5 Library Build Components: ## -## ## -## (Advanced usage - know what you're doing - you're on your own here.) ## -## The four variables below can be used to insert paths and flags in ## -## CPPFLAGS, CFLAGS, LDFLAGS, or LIBS in the h5cc compile line: ## -## $CLINKER $H5BLD_CPPFLAGS $CPPFLAGS $H5BLD_CFLAGS $CFLAGS $LDFLAGS ## -## $LIBS $clibpath $link_objs $link_args $shared_link ## -## ## -## These settings can be overriden by setting HDF5_CFLAGS, ## -## HDF5_CPPFLAGS, HDF5_LDFLAGS, or HDF5_LIBS in the environment. ## -## ## -############################################################################ -CFLAGSBASE="" -CPPFLAGSBASE="" -LDFLAGSBASE="" -LIBSBASE="" - -############################################################################ -## ## -## You shouldn't have to modify anything below this line. ## -## ## -############################################################################ - -# Constants definitions -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -host_os="@host_os@" - -prog_name="`basename $0`" - -allargs="" -compile_args="" -libraries="" -link_args="" -link_objs="" -clibpath="" - -do_link="yes" -do_compile="no" -dash_o="no" -dash_c="no" -get_output_file="no" - -SHOW="eval" -CCBASE="@CC@" -CLINKERBASE="@CC@" - -# CFLAGS, CPPFLAGS and LDFLAGS are reserved for use by the script user. -# FLAGS brought from the hdf5 build are put in H5BLD_*FLAGS. - -# User's CPPFLAGS and CFLAGS come after their H5BLD counterparts. User's -# LDFLAGS come just before clibpath, user's LIBS come after $link_objs and -# before the hdf5 libraries in $link_args, followed by any external library -# paths and libraries from AM_LDFLAGS, LDFLAGS, AM_LIBS or LIBS carried in -# from the hdf5 build. The order of the flags is intended to give precedence -# to the user's flags. -H5BLD_CFLAGS="@AM_CFLAGS@ @CFLAGS@" -H5BLD_CPPFLAGS="@AM_CPPFLAGS@ @CPPFLAGS@" -H5BLD_LDFLAGS="@AM_LDFLAGS@ @LDFLAGS@" -H5BLD_LIBS="@LIBS@" - -CC="${HDF5_CC:-$CCBASE}" -CLINKER="${HDF5_CLINKER:-$CLINKERBASE}" -CFLAGS="${HDF5_CFLAGS:-$CFLAGSBASE}" -CPPFLAGS="${HDF5_CPPFLAGS:-$CPPFLAGSBASE}" -LDFLAGS="${HDF5_LDFLAGS:-$LDFLAGSBASE}" -LIBS="${HDF5_LIBS:-$LIBSBASE}" - -# If a static library is available, the default will be to use it. If the only -# available library is shared, it will be used by default. The user can -# override either default, although choosing an unavailable library will result -# in link errors. -STATIC_AVAILABLE="@enable_static@" -if test "${STATIC_AVAILABLE}" = "yes"; then - USE_SHARED_LIB="${HDF5_USE_SHLIB:-no}" -else - USE_SHARED_LIB="${HDF5_USE_SHLIB:-yes}" -fi - - -usage() { - # A wonderfully informative "usage" message. - echo "usage: $prog_name [OPTIONS] " - echo " OPTIONS:" - echo " -help This help message." - echo " -echo Show all the shell commands executed" - echo " -prefix=DIR Prefix directory to find HDF5 lib/ and include/" - echo " subdirectories [default: $prefix]" - # A wonderfully informative "usage" message. - echo "usage: $prog_name [OPTIONS] " - echo " OPTIONS:" - echo " -help This help message." - echo " -echo Show all the shell commands executed" - echo " -prefix=DIR Prefix directory to find HDF5 lib/ and include/" - echo " subdirectories [default: $prefix]" - echo " -show Show the commands without executing them" - echo " -showconfig Show the HDF5 library configuration summary" - echo " -shlib Compile with shared HDF5 libraries [default for hdf5 built" - echo " without static libraries]" - echo " -noshlib Compile with static HDF5 libraries [default for hdf5 built" - echo " with static libraries]" - echo " " - echo " - the normal compile line options for your compiler." - echo " $prog_name uses the same compiler you used to compile" - echo " HDF5. Check with your compiler's man pages for more" - echo " information on which options are needed." - echo " " - echo " You can override the compiler, linker, and whether or not to use static" - echo " or shared libraries to compile your program by setting the following" - echo " environment variables accordingly:" - echo " " - echo " HDF5_CC - use a different C compiler" - echo " HDF5_CLINKER - use a different linker" - echo " HDF5_USE_SHLIB=[yes|no] - use shared or static version of the HDF5 library" - echo " [default: no except when built with only" - echo " shared libraries]" - echo " " - echo " You can also add or change paths and flags to the compile line using" - echo " the following environment varibles or by assigning them to their counterparts" - echo " in the 'Things You Can Modify to Override...'" section of $prog_name - echo " " - echo " Variable Current value to be replaced" - echo " HDF5_CPPFLAGS \"$CPPFLAGSBASE\"" - echo " HDF5_CFLAGS \"$CFLAGSBASE\"" - echo " HDF5_LDFLAGS \"$LDFLAGSBASE\"" - echo " HDF5_LIBS \"$LIBSBASE\"" - echo " " - echo " Note that adding library paths to HDF5_LDFLAGS where another hdf5 version" - echo " is located may link your program with that other hdf5 library version." - echo " " - exit $EXIT_FAILURE -} - -# Show the configuration summary of the library recorded in the -# libhdf5.settings file reside in the lib directory. -showconfigure() -{ - cat ${libdir}/libhdf5.settings - status=$? -} - -# Main -status=$EXIT_SUCCESS - -if test "$#" = "0"; then - # No parameters specified, issue usage statement and exit. - usage -fi - -case "$CC" in - gcc) - kind="gcc" - ;; - mpicc|mpcc|mpicc_r) - # Is this gcc masquarading as an MPI compiler? - if test "`${CC} -v 2>&1 | sed -n 2p | cut -c1-3`" = "gcc"; then - kind="gcc" - else - # Nope - kind="$host_os" - fi - ;; - *) - kind="$host_os" - ;; -esac - -for arg in $@ ; do - if test "x$get_output_file" = "xyes"; then - link_args="$link_args $arg" - output_file="$arg" - get_output_file="no" - continue - fi - - case "$arg" in - -c) - allargs="$allargs $arg" - compile_args="$compile_args $arg" - - if test "x$do_link" = "xyes" -a -n "$output_file"; then - compile_args="$compile_args -o $output_file" - fi - - do_link="no" - dash_c="yes" - ;; - -o) - allargs="$allargs $arg" - dash_o="yes" - - if test "x$dash_c" = "xyes"; then - compile_args="$compile_args $arg" - else - link_args="$link_args $arg" - do_link="yes" - get_output_file="yes" - fi - ;; - -E|-M|-MT) - allargs="$allargs $arg" - compile_args="$compile_args $arg" - dash_c="yes" - do_link="no" - ;; - -l*) - libraries=" $libraries $arg " - allargs="$allargs $arg" - ;; - -prefix=*) - prefix="`expr "$arg" : '-prefix=\(.*\)'`" - ;; - -echo) - set -x - ;; - -show) - SHOW="echo" - ;; - -showconfig) - showconfigure - exit $status - ;; - -shlib) - USE_SHARED_LIB="yes" - ;; - -noshlib) - USE_SHARED_LIB="no" - ;; - -help) - usage - ;; - *\"*) - qarg="'"$arg"'" - allargs="$allargs $qarg" - ;; - *\'*) - qarg='\"'"$arg"'\"' - allargs="$allargs $qarg" - ;; - *) - allargs="$allargs $qarg" - - if test -s "$arg"; then - ext=`expr "$arg" : '.*\(\..*\)'` - - if test "x$ext" = "x.c"; then - do_compile="yes" - compile_args="$compile_args $arg" - fname=`basename $arg .c` - link_objs="$link_objs $fname.o" - elif test "x$ext" = "x.o"; then - if test "x$dash_c" = "xyes"; then - compile_args="$compile_args $arg" - else - do_link="yes" - link_objs="$link_objs $arg" - fi - elif test "x$ext" = "x.a"; then - # This is an archive that we're linking in - libraries=" $libraries $arg " - else - compile_args="$compile_args $arg" - link_args="$link_args $arg" - fi - else - compile_args="$compile_args $arg" - link_args="$link_args $arg" - fi - ;; - esac -done - -if test "$dash_c" = "yes" -a "$do_compile" = no -a "$do_link" = no ; then - # -c was specified. Force do_compile on. - do_compile=yes -fi - -if test "x$do_compile" = "xyes"; then - if test "x$dash_c" != "xyes"; then - compile_args="-c $compile_args" - fi - - $SHOW $CC -I$includedir $H5BLD_CPPFLAGS $CPPFLAGS $H5BLD_CFLAGS $CFLAGS $compile_args - status=$? - - if test "$status" != "0"; then - exit $status - fi -fi - -if test "x$do_link" = "xyes"; then - shared_link="" -# conditionnaly link with the hl library - if test "X$HL" = "Xhl"; then - libraries=" $libraries -lhdf5_hl -lhdf5 " - else - libraries=" $libraries -lhdf5 " - fi - link_args="$link_args -L${libdir}" - - case "$kind" in - gcc|linux*) - # MacOS X doesn't support the "-Wl,-rpath -Wl," style of linker flags. - # It appears to want none of them specified. - case "$host_os" in - darwin*) flag="" ;; - *) flag="-Wl,-rpath -Wl," ;; - esac - ;; - hpux*) flag="-Wl,+b -Wl," ;; - freebsd*|solaris*) flag="-R" ;; - rs6000*|aix*) flag="-L" ;; - sgi) flag="-rpath " ;; - *) flag="" ;; - esac - - if test -n "$flag"; then - shared_link="${flag}${libdir}" - fi - - if test "x$USE_SHARED_LIB" != "xyes"; then - # The "-lhdf5" & "-lhdf5_hl" flags are in here already...This is a static - # compile though, so change it to the static version (.a) of the library. - new_libraries="" - for lib in $libraries; do - case "$lib" in - -lhdf5) - new_libraries="$new_libraries ${libdir}/libhdf5.a" - ;; - -lhdf5_hl) - new_libraries="$new_libraries ${libdir}/libhdf5_hl.a" - ;; - *) - new_libraries="$new_libraries $lib" - ;; - esac - done - libraries="$new_libraries" - fi - - for lib in $libraries; do - if echo $link_args | grep " $lib " > /dev/null || - echo $link_args | grep " $lib$" > /dev/null; then - : - else - link_args="$link_args $lib " - fi - done - - # The LIBS are just a bunch of -l* libraries necessary for the HDF5 - # module. It's okay if they're included twice in the compile line. - link_args="$link_args $H5BLD_LDFLAGS $H5BLD_LIBS" - - # User's CPPFLAGS and CFLAGS come after their H5BLD counterparts. User's - # LDFLAGS come just before clibpath, user's LIBS come after $link_objs and - # before the hdf5 libraries in $link_args, followed by any external library - # paths and libraries from AM_LDFLAGS, LDFLAGS, AM_LIBS or LIBS carried in - # from the hdf5 build. The order of the flags is intended to give precedence - # to the user's flags. - $SHOW $CLINKER $H5BLD_CPPFLAGS $CPPFLAGS $H5BLD_CFLAGS $CFLAGS $LDFLAGS $clibpath $link_objs $LIBS $link_args $shared_link - status=$? -fi - -exit $status diff --git a/tools/misc/h5debug.c b/tools/misc/h5debug.c deleted file mode 100644 index ae64952..0000000 --- a/tools/misc/h5debug.c +++ /dev/null @@ -1,723 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/*------------------------------------------------------------------------- - * - * Created: debug.c - * Jul 18 1997 - * Robb Matzke - * - * Purpose: Debugs an existing HDF5 file at a low level. - * - *------------------------------------------------------------------------- - */ -#define H5A_FRIEND /*suppress error about including H5Apkg */ -#define H5B2_FRIEND /*suppress error about including H5B2pkg */ -#define H5B2_TESTING /*suppress warning about H5B2 testing funcs*/ -#define H5D_FRIEND /*suppress error about including H5Dpkg */ -#define H5EA_FRIEND /*suppress error about including H5EApkg */ -#define H5EA_TESTING /*suppress warning about H5EA testing funcs*/ -#define H5FA_FRIEND /*suppress error about including H5FApkg */ -#define H5FA_TESTING /*suppress warning about H5FA testing funcs*/ -#define H5F_FRIEND /*suppress error about including H5Fpkg */ -#define H5G_FRIEND /*suppress error about including H5Gpkg */ -#define H5HF_FRIEND /*suppress error about including H5HFpkg */ -#define H5O_FRIEND /*suppress error about including H5Opkg */ -#define H5SM_FRIEND /*suppress error about including H5SMpkg */ - -#include "H5private.h" /* Generic Functions */ -#include "H5Apkg.h" /* Attributes */ -#include "H5B2pkg.h" /* v2 B-trees */ -#include "H5Dpkg.h" /* Datasets */ -#include "H5Eprivate.h" /* Error handling */ -#include "H5EApkg.h" /* Extensible Arrays */ -#include "H5FApkg.h" /* Fixed Arrays */ -#include "H5Fpkg.h" /* File access */ -#include "H5FSprivate.h" /* Free space manager */ -#include "H5Gpkg.h" /* Groups */ -#include "H5HFpkg.h" /* Fractal heaps */ -#include "H5HGprivate.h" /* Global Heaps */ -#include "H5Iprivate.h" /* IDs */ -#include "H5Opkg.h" /* Object headers */ -#include "H5SMpkg.h" /* Implicitly shared messages */ - -/* File drivers */ -#include "H5FDfamily.h" - -#define VCOL 50 - - -/*------------------------------------------------------------------------- - * Function: get_H5B2_class - * - * Purpose: Determine the v2 B-tree class from the buffer read in. - * B-trees are debugged through the B-tree subclass. The subclass - * identifier is two bytes after the B-tree signature. - * - * Return: Non-NULL on success/NULL on failure - * - * Programmer: Quincey Koziol - * koziol@hdfgroup.org - * Sep 11 2008 - * - *------------------------------------------------------------------------- - */ -static const H5B2_class_t * -get_H5B2_class(const uint8_t *sig) -{ - H5B2_subid_t subtype = (H5B2_subid_t)sig[H5_SIZEOF_MAGIC + 1]; - const H5B2_class_t *cls; - - switch(subtype) { - case H5B2_TEST_ID: - cls = H5B2_TEST; - break; - - case H5B2_FHEAP_HUGE_INDIR_ID: - cls = H5HF_HUGE_BT2_INDIR; - break; - - case H5B2_FHEAP_HUGE_FILT_INDIR_ID: - cls = H5HF_HUGE_BT2_FILT_INDIR; - break; - - case H5B2_FHEAP_HUGE_DIR_ID: - cls = H5HF_HUGE_BT2_DIR; - break; - - case H5B2_FHEAP_HUGE_FILT_DIR_ID: - cls = H5HF_HUGE_BT2_FILT_DIR; - break; - - case H5B2_GRP_DENSE_NAME_ID: - cls = H5G_BT2_NAME; - break; - - case H5B2_GRP_DENSE_CORDER_ID: - cls = H5G_BT2_CORDER; - break; - - case H5B2_SOHM_INDEX_ID: - cls = H5SM_INDEX; - break; - - case H5B2_ATTR_DENSE_NAME_ID: - cls = H5A_BT2_NAME; - break; - - case H5B2_ATTR_DENSE_CORDER_ID: - cls = H5A_BT2_CORDER; - break; - - case H5B2_CDSET_ID: - cls = H5D_BT2; - break; - - case H5B2_CDSET_FILT_ID: - cls = H5D_BT2_FILT; - break; - - case H5B2_TEST2_ID: - cls = H5B2_TEST2; - break; - - case H5B2_NUM_BTREE_ID: - default: - HDfprintf(stderr, "Unknown v2 B-tree subtype %u\n", (unsigned)(subtype)); - HDexit(4); - } /* end switch */ - - return(cls); -} /* end get_H5B2_class() */ - - -/*------------------------------------------------------------------------- - * Function: get_H5EA_class - * - * Purpose: Determine the extensible array class from the buffer read in. - * Extensible arrays are debugged through the array subclass. - * The subclass identifier is two bytes after the signature. - * - * Return: Non-NULL on success/NULL on failure - * - * Programmer: Quincey Koziol - * koziol@hdfgroup.org - * Sep 11 2008 - * - *------------------------------------------------------------------------- - */ -static const H5EA_class_t * -get_H5EA_class(const uint8_t *sig) -{ - H5EA_cls_id_t clsid = (H5EA_cls_id_t)sig[H5_SIZEOF_MAGIC + 1]; - const H5EA_class_t *cls; - - switch(clsid) { - case H5EA_CLS_TEST_ID: - cls = H5EA_CLS_TEST; - break; - - case H5EA_CLS_CHUNK_ID: - cls = H5EA_CLS_CHUNK; - break; - - case H5EA_CLS_FILT_CHUNK_ID: - cls = H5EA_CLS_FILT_CHUNK; - break; - - case H5EA_NUM_CLS_ID: - default: - HDfprintf(stderr, "Unknown extensible array class %u\n", (unsigned)(clsid)); - HDexit(4); - } /* end switch */ - - return(cls); -} /* end get_H5EA_class() */ - - -/*------------------------------------------------------------------------- - * Function: get_H5FA_class - * - * Purpose: Determine the fixed array class from the buffer read in. - * Extensible arrays are debugged through the array subclass. - * The subclass identifier is two bytes after the signature. - * - * Return: Non-NULL on success/NULL on failure - * - * Programmer: Quincey Koziol - * koziol@hdfgroup.org - * Sep 11 2008 - * - *------------------------------------------------------------------------- - */ -static const H5FA_class_t * -get_H5FA_class(const uint8_t *sig) -{ - H5FA_cls_id_t clsid = (H5FA_cls_id_t)sig[H5_SIZEOF_MAGIC + 1]; - const H5FA_class_t *cls; - - switch(clsid) { - case H5FA_CLS_TEST_ID: - cls = H5FA_CLS_TEST; - break; - - case H5FA_CLS_CHUNK_ID: - cls = H5FA_CLS_CHUNK; - break; - - case H5FA_CLS_FILT_CHUNK_ID: - cls = H5FA_CLS_FILT_CHUNK; - break; - - case H5FA_NUM_CLS_ID: - default: - HDfprintf(stderr, "Unknown fixed array class %u\n", (unsigned)(clsid)); - HDexit(4); - } /* end switch */ - - return(cls); -} /* end get_H5FA_class() */ - - -/*------------------------------------------------------------------------- - * Function: main - * - * Usage: debug FILENAME [OFFSET] - * - * Return: Success: exit (0) - * - * Failure: exit (non-zero) - * - * Programmer: Robb Matzke - * matzke@llnl.gov - * Jul 18 1997 - * - *------------------------------------------------------------------------- - */ -int -main(int argc, char *argv[]) -{ - hid_t fid, fapl, dxpl; - H5F_t *f; - haddr_t addr = 0, extra = 0, extra2 = 0, extra3 = 0, extra4 = 0; - uint8_t sig[H5F_SIGNATURE_LEN]; - size_t u; - H5E_auto2_t func; - void *edata; - herr_t status = SUCCEED; - - if(argc == 1) { - HDfprintf(stderr, "Usage: %s filename [signature-addr [extra]]\n", argv[0]); - HDexit(1); - } /* end if */ - - /* Initialize the library */ - if(H5open() < 0) { - HDfprintf(stderr, "cannot initialize the library\n"); - HDexit(1); - } /* end if */ - - /* Disable error reporting */ - H5Eget_auto2(H5E_DEFAULT, &func, &edata); - H5Eset_auto2(H5E_DEFAULT, NULL, NULL); - - /* - * Open the file and get the file descriptor. - */ - dxpl = H5AC_ind_read_dxpl_id; - if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) { - HDfprintf(stderr, "cannot create file access property list\n"); - HDexit(1); - } /* end if */ - if(HDstrchr(argv[1], '%')) - if(H5Pset_fapl_family (fapl, (hsize_t)0, H5P_DEFAULT) < 0) { - fprintf(stderr, "cannot set file access property list\n"); - HDexit(1); - } - if((fid = H5Fopen(argv[1], H5F_ACC_RDONLY, fapl)) < 0) { - HDfprintf(stderr, "cannot open file\n"); - HDexit(1); - } /* end if */ - if(NULL == (f = (H5F_t *)H5I_object(fid))) { - HDfprintf(stderr, "cannot obtain H5F_t pointer\n"); - HDexit(2); - } /* end if */ - - /* Ignore metadata tags while using h5debug */ - if(H5AC_ignore_tags(f) < 0) { - HDfprintf(stderr, "cannot ignore metadata tags\n"); - HDexit(1); - } - - /* - * Parse command arguments. - */ - if(argc > 2) - addr = (haddr_t)HDstrtoll(argv[2], NULL, 0); - if(argc > 3) - extra = (haddr_t)HDstrtoll(argv[3], NULL, 0); - if(argc > 4) - extra2 = (haddr_t)HDstrtoll(argv[4], NULL, 0); - if(argc > 5) - extra3 = (haddr_t)HDstrtoll(argv[5], NULL, 0); - if(argc > 6) - extra4 = (haddr_t)HDstrtoll(argv[6], NULL, 0); - - /* - * Read the signature at the specified file position. - */ - HDfprintf(stdout, "Reading signature at address %a (rel)\n", addr); - if(H5F_block_read(f, H5FD_MEM_SUPER, addr, sizeof(sig), dxpl, sig) < 0) { - HDfprintf(stderr, "cannot read signature\n"); - HDexit(3); - } - if(!HDmemcmp(sig, H5F_SIGNATURE, (size_t)H5F_SIGNATURE_LEN)) { - /* - * Debug the file's super block. - */ - status = H5F_debug(f, stdout, 0, VCOL); - - } else if(!HDmemcmp(sig, H5HL_MAGIC, (size_t)H5_SIZEOF_MAGIC)) { - /* - * Debug a local heap. - */ - status = H5HL_debug(f, H5AC_ind_read_dxpl_id, addr, stdout, 0, VCOL); - - } else if(!HDmemcmp (sig, H5HG_MAGIC, (size_t)H5_SIZEOF_MAGIC)) { - /* - * Debug a global heap collection. - */ - status = H5HG_debug (f, H5AC_ind_read_dxpl_id, addr, stdout, 0, VCOL); - - } else if(!HDmemcmp(sig, H5G_NODE_MAGIC, (size_t)H5_SIZEOF_MAGIC)) { - /* - * Debug a symbol table node. - */ - - /* Check for extra parameters */ - if(extra == 0) { - HDfprintf(stderr, "\nWarning: Providing the group's local heap address will give more information\n"); - HDfprintf(stderr, "Symbol table node usage:\n"); - HDfprintf(stderr, "\th5debug
\n\n"); - } /* end if */ - - status = H5G_node_debug(f, H5AC_ind_read_dxpl_id, addr, stdout, 0, VCOL, extra); - - } else if(!HDmemcmp(sig, H5B_MAGIC, (size_t)H5_SIZEOF_MAGIC)) { - /* - * Debug a B-tree. B-trees are debugged through the B-tree - * subclass. The subclass identifier is the byte immediately - * after the B-tree signature. - */ - H5B_subid_t subtype = (H5B_subid_t)sig[H5_SIZEOF_MAGIC]; - unsigned ndims; - uint32_t dim[H5O_LAYOUT_NDIMS]; - - switch(subtype) { - case H5B_SNODE_ID: - /* Check for extra parameters */ - if(extra == 0) { - HDfprintf(stderr, "\nWarning: Providing the group's local heap address will give more information\n"); - HDfprintf(stderr, "B-tree symbol table node usage:\n"); - HDfprintf(stderr, "\th5debug
\n\n"); - HDexit(4); - } /* end if */ - - status = H5G_node_debug(f, H5AC_ind_read_dxpl_id, addr, stdout, 0, VCOL, extra); - break; - - case H5B_CHUNK_ID: - /* Check for extra parameters */ - if(extra == 0) { - HDfprintf(stderr, "ERROR: Need number of dimensions of chunk in order to dump chunk B-tree node\n"); - HDfprintf(stderr, "B-tree chunked storage node usage:\n"); - HDfprintf(stderr, "\th5debug <# of dimensions> ...\n"); - HDexit(4); - } /* end if */ - - /* Build array of chunk dimensions */ - ndims = (unsigned)extra; - dim[0] = (uint32_t)extra2; - if(ndims > 1) - dim[1] = (uint32_t)extra3; - if(ndims > 2) - dim[2] = (uint32_t)extra4; - - /* Check for dimension error */ - if(ndims > 3) { - HDfprintf(stderr, "ERROR: Only 3 dimensions support currently (fix h5debug)\n"); - HDfprintf(stderr, "B-tree chunked storage node usage:\n"); - HDfprintf(stderr, "\th5debug <# of dimensions> ...\n"); - HDexit(4); - } /* end for */ - for(u = 0; u < ndims; u++) - if(0 == dim[u]) { - HDfprintf(stderr, "ERROR: Chunk dimensions should be >0\n"); - HDfprintf(stderr, "B-tree chunked storage node usage:\n"); - HDfprintf(stderr, "\th5debug <# of dimensions> ...\n"); - HDexit(4); - } /* end if */ - - /* Set the last dimension (the element size) to zero */ - dim[ndims] = 0; - - status = H5D_btree_debug(f, H5AC_ind_read_dxpl_id, addr, stdout, 0, VCOL, ndims, dim); - break; - - case H5B_NUM_BTREE_ID: - default: - HDfprintf(stderr, "Unknown v1 B-tree subtype %u\n", (unsigned)(subtype)); - HDexit(4); - } - - } else if(!HDmemcmp(sig, H5B2_HDR_MAGIC, (size_t)H5_SIZEOF_MAGIC)) { - /* - * Debug a v2 B-tree header. - */ - const H5B2_class_t *cls = get_H5B2_class(sig); - HDassert(cls); - - if((cls == H5D_BT2 || cls == H5D_BT2_FILT) && extra == 0) { - HDfprintf(stderr, "ERROR: Need v2 B-tree header address and object header address containing the layout message in order to dump header\n"); - HDfprintf(stderr, "v2 B-tree hdr usage:\n"); - HDfprintf(stderr, "\th5debug \n"); - HDexit(4); - } /* end if */ - - status = H5B2__hdr_debug(f, H5AC_ind_read_dxpl_id, addr, stdout, 0, VCOL, cls, (haddr_t)extra); - - } else if(!HDmemcmp(sig, H5B2_INT_MAGIC, (size_t)H5_SIZEOF_MAGIC)) { - /* - * Debug a v2 B-tree internal node. - */ - const H5B2_class_t *cls = get_H5B2_class(sig); - HDassert(cls); - - /* Check for enough valid parameters */ - if((cls == H5D_BT2 || cls == H5D_BT2_FILT) && - (extra == 0 || extra2 == 0 || extra3 == 0 || extra4 == 0)) { - - fprintf(stderr, "ERROR: Need v2 B-tree header address, the node's number of records, depth, and object header address containing the layout message in order to dump internal node\n"); - fprintf(stderr, "NOTE: Leaf nodes are depth 0, the internal nodes above them are depth 1, etc.\n"); - fprintf(stderr, "v2 B-tree internal node usage:\n"); - fprintf(stderr, "\th5debug \n"); - HDexit(4); - - } else if(extra == 0 || extra2 == 0 || extra3 == 0) { - HDfprintf(stderr, "ERROR: Need v2 B-tree header address and the node's number of records and depth in order to dump internal node\n"); - HDfprintf(stderr, "NOTE: Leaf nodes are depth 0, the internal nodes above them are depth 1, etc.\n"); - HDfprintf(stderr, "v2 B-tree internal node usage:\n"); - HDfprintf(stderr, "\th5debug \n"); - HDexit(4); - } /* end if */ - - status = H5B2__int_debug(f, H5AC_ind_read_dxpl_id, addr, stdout, 0, VCOL, cls, extra, (unsigned)extra2, (unsigned)extra3, (haddr_t)extra4); - - } else if(!HDmemcmp(sig, H5B2_LEAF_MAGIC, (size_t)H5_SIZEOF_MAGIC)) { - /* - * Debug a v2 B-tree leaf node. - */ - const H5B2_class_t *cls = get_H5B2_class(sig); - HDassert(cls); - - /* Check for enough valid parameters */ - if((cls == H5D_BT2 || cls == H5D_BT2_FILT) && - (extra == 0 || extra2 == 0 || extra3 == 0 )) { - - fprintf(stderr, "ERROR: Need v2 B-tree header address, number of records, and object header address containing the layout message in order to dump leaf node\n"); - fprintf(stderr, "v2 B-tree leaf node usage:\n"); - fprintf(stderr, "\th5debug \n"); - HDexit(4); - - } else if(extra == 0 || extra2 == 0) { - HDfprintf(stderr, "ERROR: Need v2 B-tree header address and number of records in order to dump leaf node\n"); - HDfprintf(stderr, "v2 B-tree leaf node usage:\n"); - HDfprintf(stderr, "\th5debug \n"); - HDexit(4); - } /* end if */ - - status = H5B2__leaf_debug(f, H5AC_ind_read_dxpl_id, addr, stdout, 0, VCOL, cls, extra, (unsigned)extra2, (haddr_t)extra3); - - } else if(!HDmemcmp(sig, H5HF_HDR_MAGIC, (size_t)H5_SIZEOF_MAGIC)) { - /* - * Debug a fractal heap header. - */ - status = H5HF_hdr_debug(f, H5AC_ind_read_dxpl_id, addr, stdout, 0, VCOL); - - } else if(!HDmemcmp(sig, H5HF_DBLOCK_MAGIC, (size_t)H5_SIZEOF_MAGIC)) { - /* - * Debug a fractal heap direct block. - */ - - /* Check for enough valid parameters */ - if(extra == 0 || extra2 == 0) { - HDfprintf(stderr, "ERROR: Need fractal heap header address and size of direct block in order to dump direct block\n"); - HDfprintf(stderr, "Fractal heap direct block usage:\n"); - HDfprintf(stderr, "\th5debug \n"); - HDexit(4); - } /* end if */ - - status = H5HF_dblock_debug(f, H5AC_ind_read_dxpl_id, addr, stdout, 0, VCOL, extra, (size_t)extra2); - - } else if(!HDmemcmp(sig, H5HF_IBLOCK_MAGIC, (size_t)H5_SIZEOF_MAGIC)) { - /* - * Debug a fractal heap indirect block. - */ - - /* Check for enough valid parameters */ - if(extra == 0 || extra2 == 0) { - HDfprintf(stderr, "ERROR: Need fractal heap header address and number of rows in order to dump indirect block\n"); - HDfprintf(stderr, "Fractal heap indirect block usage:\n"); - HDfprintf(stderr, "\th5debug \n"); - HDexit(4); - } /* end if */ - - status = H5HF_iblock_debug(f, H5AC_ind_read_dxpl_id, addr, stdout, 0, VCOL, extra, (unsigned)extra2); - - } else if(!HDmemcmp(sig, H5FS_HDR_MAGIC, (size_t)H5_SIZEOF_MAGIC)) { - /* - * Debug a free space header. - */ - - status = H5FS_debug(f, H5AC_ind_read_dxpl_id, addr, stdout, 0, VCOL); - - } else if(!HDmemcmp(sig, H5FS_SINFO_MAGIC, (size_t)H5_SIZEOF_MAGIC)) { - /* - * Debug free space serialized sections. - */ - - /* Check for enough valid parameters */ - if(extra == 0 || extra2 == 0) { - HDfprintf(stderr, "ERROR: Need free space header address and client address in order to dump serialized sections\n"); - HDfprintf(stderr, "Free space serialized sections usage:\n"); - HDfprintf(stderr, "\th5debug \n"); - HDexit(4); - } /* end if */ - - status = H5FS_sects_debug(f, H5AC_ind_read_dxpl_id, addr, stdout, 0, VCOL, extra, extra2); - - } else if(!HDmemcmp(sig, H5SM_TABLE_MAGIC, (size_t)H5_SIZEOF_MAGIC)) { - /* - * Debug shared message master table. - */ - - status = H5SM_table_debug(f, H5AC_ind_read_dxpl_id, addr, stdout, 0, VCOL, (unsigned) UFAIL, (unsigned) UFAIL); - - } else if(!HDmemcmp(sig, H5SM_LIST_MAGIC, (size_t)H5_SIZEOF_MAGIC)) { - /* - * Debug shared message list index. - */ - - /* Check for enough valid parameters */ - if(extra == 0) { - HDfprintf(stderr, "ERROR: Need shared message header address in order to shared message list\n"); - HDfprintf(stderr, "Shared message list usage:\n"); - HDfprintf(stderr, "\th5debug \n"); - HDexit(4); - } /* end if */ - - status = H5SM_list_debug(f, H5AC_ind_read_dxpl_id, addr, stdout, 0, VCOL, (haddr_t)extra); - - } else if(!HDmemcmp(sig, H5EA_HDR_MAGIC, (size_t)H5_SIZEOF_MAGIC)) { - /* - * Debug an extensible aray header. - */ - const H5EA_class_t *cls = get_H5EA_class(sig); - HDassert(cls); - - /* Check for enough valid parameters */ - if(extra == 0) { - HDfprintf(stderr, "ERROR: Need object header address containing the layout message in order to dump header\n"); - HDfprintf(stderr, "Extensible array header block usage:\n"); - HDfprintf(stderr, "\th5debug \n"); - HDexit(4); - } /* end if */ - - status = H5EA__hdr_debug(f, H5AC_ind_read_dxpl_id, addr, stdout, 0, VCOL, cls, extra); - - } else if(!HDmemcmp(sig, H5EA_IBLOCK_MAGIC, (size_t)H5_SIZEOF_MAGIC)) { - /* - * Debug an extensible aray index block. - */ - const H5EA_class_t *cls = get_H5EA_class(sig); - HDassert(cls); - - /* Check for enough valid parameters */ - if(extra == 0 || extra2 == 0) { - HDfprintf(stderr, "ERROR: Need extensible array header address and object header address containing the layout message in order to dump index block\n"); - HDfprintf(stderr, "Extensible array index block usage:\n"); - HDfprintf(stderr, "\th5debug \n"); - HDexit(4); - } /* end if */ - - status = H5EA__sblock_debug(f, H5AC_ind_read_dxpl_id, addr, stdout, 0, VCOL, cls, extra, (unsigned)extra2, extra3); - - } else if(!HDmemcmp(sig, H5EA_DBLOCK_MAGIC, (size_t)H5_SIZEOF_MAGIC)) { - /* - * Debug an extensible aray data block. - */ - const H5EA_class_t *cls = get_H5EA_class(sig); - HDassert(cls); - - /* Check for enough valid parameters */ - if(extra == 0 || extra2 == 0 || extra3 == 0) { - HDfprintf(stderr, "ERROR: Need extensible array header address, # of elements in data block and object header address containing the layout message in order to dump data block\n"); - HDfprintf(stderr, "Extensible array data block usage:\n"); - HDfprintf(stderr, "\th5debug <# of elements in data block> \n"); - HDexit(4); - } /* end if */ - - status = H5FA__hdr_debug(f, H5AC_ind_read_dxpl_id, addr, stdout, 0, VCOL, cls, extra); - - } else if(!HDmemcmp(sig, H5FA_DBLOCK_MAGIC, (size_t)H5_SIZEOF_MAGIC)) { - /* - * Debug a fixed array data block. - */ - const H5FA_class_t *cls = get_H5FA_class(sig); - HDassert(cls); - - /* Check for enough valid parameters */ - if(extra == 0 || extra2 == 0) { - HDfprintf(stderr, "ERROR: Need fixed array header address and object header address containing the layout message in order to dump data block\n"); - HDfprintf(stderr, "fixed array data block usage:\n"); - HDfprintf(stderr, "\th5debug \n"); - HDexit(4); - } /* end if */ - - status = H5FA__dblock_debug(f, H5AC_ind_read_dxpl_id, addr, stdout, 0, VCOL, cls, extra, extra2); - - } else if(!HDmemcmp(sig, H5O_HDR_MAGIC, (size_t)H5_SIZEOF_MAGIC)) { - /* - * Debug v2 object header (which have signatures). - */ - - status = H5O_debug(f, H5AC_ind_read_dxpl_id, addr, stdout, 0, VCOL); - - } else if(sig[0] == H5O_VERSION_1) { - /* - * This could be a v1 object header. Since they don't have a signature - * it's a somewhat "ify" detection. - */ - status = H5O_debug(f, H5AC_ind_read_dxpl_id, addr, stdout, 0, VCOL); - - } else { - /* - * Got some other unrecognized signature. - */ - printf("%-*s ", VCOL, "Signature:"); - for (u = 0; u < sizeof(sig); u++) { - if (sig[u] > ' ' && sig[u] <= '~' && '\\' != sig[u]) - HDputchar(sig[u]); - else if ('\\' == sig[u]) { - HDputchar('\\'); - HDputchar('\\'); - } else - printf("\\%03o", sig[u]); - } - HDputchar('\n'); - - HDfprintf(stderr, "unknown signature\n"); - HDexit(4); - } /* end else */ - - /* Check for an error when dumping information */ - if(status < 0) { - HDfprintf(stderr, "An error occurred!\n"); - H5Eprint2(H5E_DEFAULT, stderr); - HDexit(5); - } /* end if */ - - H5Pclose(fapl); - H5Fclose(fid); - - H5Eset_auto2(H5E_DEFAULT, func, edata); - - return 0; -} /* main() */ - diff --git a/tools/misc/h5mkgrp.c b/tools/misc/h5mkgrp.c deleted file mode 100644 index ad2d306..0000000 --- a/tools/misc/h5mkgrp.c +++ /dev/null @@ -1,336 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -#include "H5private.h" -#include "h5tools.h" -#include "h5tools_utils.h" -#include -#include - -/* Name of tool */ -#define PROGRAMNAME "h5mkgrp" - -/* Exit status for tools library routines */ -int d_status = EXIT_SUCCESS; - -/* command-line options: short and long-named parameters */ -static const char *s_opts = "hlpvV"; -static struct long_options l_opts[] = { - { "help", no_arg, 'h' }, - { "latest", no_arg, 'l' }, - { "parents", no_arg, 'p' }, - { "verbose", no_arg, 'v' }, - { "version", no_arg, 'V' }, - { NULL, 0, '\0' } -}; - -/* Command line parameter settings */ -typedef struct { - char *fname; /* File name to operate on */ - hbool_t latest; /* Whether file should use latest format versions */ - hbool_t verbose; /* Whether output should be verbose */ - hbool_t parents; /* Whether to create intermediate groups */ - size_t ngroups; /* Number of groups to create */ - char **groups; /* Pointer to array of group names */ -} param_t; -param_t params; /* Command line parameter settings */ - - -/*------------------------------------------------------------------------- - * Function: leave - * - * Purpose: Shutdown MPI and/or HDF5 and call exit() - * - * Return: Does not return - * - * Programmer: Quincey Koziol, 2/13/2007 - * - *------------------------------------------------------------------------- - */ -static void -leave(int ret) -{ - size_t curr_group; - - if (params.fname) - HDfree (params.fname); - if (params.ngroups) { - for(curr_group = 0; curr_group < params.ngroups; curr_group++) - HDfree (params.groups[curr_group]); - HDfree (params.groups); - } - h5tools_close(); - HDexit(ret); -} /* end leave() */ - - -/*------------------------------------------------------------------------- - * Function: usage - * - * Purpose: Prints a usage message on stderr and then returns. - * - * Return: void - * - * Programmer: Quincey Koziol, 2/13/2007 - * - *------------------------------------------------------------------------- - */ -static void -usage(void) -{ - HDfprintf(stdout, "\ -usage: h5mkgrp [OPTIONS] FILE GROUP...\n\ - OPTIONS\n\ - -h, --help Print a usage message and exit\n\ - -l, --latest Use latest version of file format to create groups\n\ - -p, --parents No error if existing, make parent groups as needed\n\ - -v, --verbose Print information about OBJECTS and OPTIONS\n\ - -V, --version Print version number and exit\n"); -} /* end usage() */ - - -/*------------------------------------------------------------------------- - * Function: parse_command_line - * - * Purpose: Parses command line and sets up global variable to control output - * - * Return: Success: 0 - * Failure: -1 - * - * Programmer: Quincey Koziol, 2/13/2007 - * - *------------------------------------------------------------------------- - */ -static int -parse_command_line(int argc, const char *argv[], param_t *parms) -{ - int opt; /* Option from command line */ - size_t curr_group; /* Current group name to copy */ - - /* Check for empty command line */ - if(argc == 1) { - usage(); - leave(EXIT_SUCCESS); - } /* end if */ - - /* Parse command line options */ - while((opt = get_option(argc, argv, s_opts, l_opts)) != EOF) { - switch((char)opt) { - /* Display 'help' */ - case 'h': - usage(); - leave(EXIT_SUCCESS); - - /* Create objects with the latest version of the format */ - case 'l': - parms->latest = TRUE; - break; - - /* Create parent groups */ - case 'p': - parms->parents = TRUE; - break; - - /* Verbose output */ - case 'v': - parms->verbose = TRUE; - break; - - /* Display version */ - case 'V': - print_version(h5tools_getprogname()); - leave(EXIT_SUCCESS); - - /* Bad command line argument */ - default: - usage(); - leave(EXIT_FAILURE); - } /* end switch */ - } /* end while */ - - /* Check for file name to be processed */ - if(argc <= opt_ind) { - error_msg("missing file name\n"); - usage(); - leave(EXIT_FAILURE); - } /* end if */ - - /* Retrieve file name */ - parms->fname = HDstrdup(argv[opt_ind]); - opt_ind++; - - /* Check for group(s) to be created */ - if(argc <= opt_ind) { - error_msg("missing group name(s)\n"); - usage(); - leave(EXIT_FAILURE); - } /* end if */ - - /* Allocate space for the group name pointers */ - parms->ngroups = (size_t)(argc - opt_ind); - parms->groups = (char **)HDmalloc(parms->ngroups * sizeof(char *)); - - /* Retrieve the group names */ - curr_group = 0; - while(opt_ind < argc) { - parms->groups[curr_group] = HDstrdup(argv[opt_ind]); - curr_group++; - opt_ind++; - } /* end while */ - -#ifdef QAK -HDfprintf(stderr, "parms->parents = %t\n", parms->parents); -HDfprintf(stderr, "parms->verbose = %t\n", parms->verbose); -HDfprintf(stderr, "parms->fname = '%s'\n", parms->fname); -HDfprintf(stderr, "parms->ngroups = %Zu\n", parms->ngroups); -for(curr_group = 0; curr_group < parms->ngroups; curr_group++) - HDfprintf(stderr, "parms->group[%Zu] = '%s'\n", curr_group, parms->groups[curr_group]); -#endif /* QAK */ - - return(0); -} /* parse_command_line() */ - - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: Create group(s) in an HDF5 file - * - * Programmer: Quincey Koziol, 2/13/2007 - * - *------------------------------------------------------------------------- - */ -int -main(int argc, const char *argv[]) -{ - hid_t fid; /* HDF5 file ID */ - hid_t fapl_id; /* File access property list ID */ - hid_t lcpl_id; /* Link creation property list ID */ - size_t curr_group; /* Current group to create */ - - h5tools_setprogname(PROGRAMNAME); - h5tools_setstatus(EXIT_SUCCESS); - - /* Disable the HDF5 library's error reporting */ - H5Eset_auto2(H5E_DEFAULT, NULL, NULL); - - /* Initialize h5tools lib */ - h5tools_init(); - - /* Parse command line */ - HDmemset(¶ms, 0, sizeof(params)); - if(parse_command_line(argc, argv, ¶ms) < 0) { - error_msg("unable to parse command line arguments\n"); - leave(EXIT_FAILURE); - } /* end if */ - - /* Create file access property list */ - if((fapl_id = H5Pcreate(H5P_FILE_ACCESS)) < 0) { - error_msg("Could not create file access property list\n"); - leave(EXIT_FAILURE); - } /* end if */ - - /* Check for creating groups with new format version */ - if(params.latest) { - /* Set the "use the latest version of the format" bounds */ - if(H5Pset_libver_bounds(fapl_id, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0) { - error_msg("Could not set property for using latest version of the format\n"); - leave(EXIT_FAILURE); - } /* end if */ - - /* Display some output if requested */ - if(params.verbose) - printf("%s: Creating groups with latest version of the format\n", h5tools_getprogname()); - } /* end if */ - - /* Attempt to open an existing HDF5 file first */ - fid = h5tools_fopen(params.fname, H5F_ACC_RDWR, fapl_id, NULL, NULL, 0); - - /* If we couldn't open an existing file, try creating file */ - /* (use "EXCL" instead of "TRUNC", so we don't blow away existing non-HDF5 file) */ - if(fid < 0) - fid = H5Fcreate(params.fname, H5F_ACC_EXCL, H5P_DEFAULT, fapl_id); - - /* Test for error in opening file */ - if(fid < 0) { - error_msg("Could not open output file '%s'\n", params.fname); - leave(EXIT_FAILURE); - } /* end if */ - - /* Create link creation property list */ - if((lcpl_id = H5Pcreate(H5P_LINK_CREATE)) < 0) { - error_msg("Could not create link creation property list\n"); - leave(EXIT_FAILURE); - } /* end if */ - - /* Check for creating intermediate groups */ - if(params.parents) { - /* Set the intermediate group creation property */ - if(H5Pset_create_intermediate_group(lcpl_id, TRUE) < 0) { - error_msg("Could not set property for creating parent groups\n"); - leave(EXIT_FAILURE); - } /* end if */ - - /* Display some output if requested */ - if(params.verbose) - printf("%s: Creating parent groups\n", h5tools_getprogname()); - } /* end if */ - - /* Loop over creating requested groups */ - for(curr_group = 0; curr_group < params.ngroups; curr_group++) { - hid_t gid; /* Group ID */ - - /* Attempt to create a group */ - if((gid = H5Gcreate2(fid, params.groups[curr_group], lcpl_id, H5P_DEFAULT, H5P_DEFAULT)) < 0) { - error_msg("Could not create group '%s'\n", params.groups[curr_group]); - leave(EXIT_FAILURE); - } /* end if */ - - /* Close the group */ - if(H5Gclose(gid) < 0) { - error_msg("Could not close group '%s'??\n", params.groups[curr_group]); - leave(EXIT_FAILURE); - } /* end if */ - - /* Display some output if requested */ - if(params.verbose) - printf("%s: created group '%s'\n", h5tools_getprogname(), params.groups[curr_group]); - } /* end for */ - - /* Close link creation property list */ - if(H5Pclose(lcpl_id) < 0) { - error_msg("Could not close link creation property list\n"); - leave(EXIT_FAILURE); - } /* end if */ - - /* Close file */ - if(H5Fclose(fid) < 0) { - error_msg("Could not close output file '%s'??\n", params.fname); - leave(EXIT_FAILURE); - } /* end if */ - - /* Close file access property list */ - if(H5Pclose(fapl_id) < 0) { - error_msg("Could not close file access property list\n"); - leave(EXIT_FAILURE); - } /* end if */ - - /* Shut down h5tools lib */ - h5tools_close(); - - leave(EXIT_SUCCESS); -} /* end main() */ - diff --git a/tools/misc/h5perf_gentest.c b/tools/misc/h5perf_gentest.c deleted file mode 100644 index 50c18c1..0000000 --- a/tools/misc/h5perf_gentest.c +++ /dev/null @@ -1,598 +0,0 @@ -/***************************************************************************** - This test generates attributes, groups, and datasets of many types. It - creates a large number of attributes, groups, and datasets by specifying - -a, -g, -d options respectively. Using "-h" option to see details. - - Programmer: Peter Cao , Jan. 2013 - ****************************************************************************/ - -#include "hdf5.h" -#include -#include - -#define FNAME "test_perf.h5" -#define NGROUPS 20 -#define NDSETS 20 -#define NATTRS 20 -#define DIM0 40 -#define NROWS 100 -#define NTYPES 9 -#define MAXVLEN 10 -#define FIXED_LEN 8 - -typedef enum { SOLID=0, LIQUID, GAS, PLASMA } phase_t; - -typedef struct { - int i; - unsigned long long l; - float f; - double d; - char s[FIXED_LEN]; - phase_t e; - float f_array[FIXED_LEN]; - hvl_t i_vlen; - char *s_vlen; -} test_comp_t; - -typedef struct { - int zipcode; - char *city; -} zipcode_t; - -int add_attrs(hid_t oid, int idx); -int add_attr(hid_t oid, const char *name, hid_t tid, hid_t sid, void *buf) ; -herr_t create_perf_test_file(const char *fname, int ngrps, int ndsets, - int nattrs, hsize_t nrows, hsize_t dim0, hsize_t chunk, int vlen, - int compressed, int latest); - -int main (int argc, char *argv[]) -{ - char fname[32]; - int i, ngrps=NGROUPS, ndsets=NDSETS, nattrs=NATTRS, dim0=DIM0, - chunk=DIM0/10+1, nrows=NROWS, vlen=MAXVLEN, l=0, z=0; - - memset(fname, 0, 32); - for (i=1; i, Jan. 2013 - ****************************************************************************/ -herr_t create_perf_test_file(const char *fname, int ngrps, int ndsets, - int nattrs, hsize_t nrows, hsize_t dim0, hsize_t chunk, int vlen, - int compressed, int latest) -{ - int i, j, k; - hid_t fid, sid_null, sid_scalar, sid_1d, sid_2d, did, aid, sid_2, sid_large, - fapl=H5P_DEFAULT, dcpl=H5P_DEFAULT, gid1, gid2, cmp_tid, tid_str, - tid_enum, tid_array_f, tid_vlen_i, tid_vlen_s; - char name[32], tmp_name1[32], tmp_name2[32], tmp_name3[32]; - hsize_t dims[1]={dim0}, dims2d[2]={dim0, (dim0/4+1)}, dims_array[1]={FIXED_LEN}, - dim1[1]={2}; - char *enum_names[4] = {"SOLID", "LIQUID", "GAS", "PLASMA"}; - test_comp_t *buf_comp=NULL, *buf_comp_large=NULL; - int *buf_int=NULL; - float (*buf_float_a)[FIXED_LEN]=NULL; - double **buf_double2d=NULL; - hvl_t *buf_vlen_i=NULL; - char (*buf_str)[FIXED_LEN]; - char **buf_vlen_s=NULL; - hobj_ref_t buf_ref[2]; - hdset_reg_ref_t buf_reg_ref[2]; - size_t offset, len; - herr_t status; - char *names[NTYPES] = { "int", "ulong", "float", "double", "fixed string", - "enum", "fixed float array", "vlen int array", "vlen strings"}; - hid_t types[NTYPES] = { H5T_NATIVE_INT, H5T_NATIVE_UINT64, H5T_NATIVE_FLOAT, - H5T_NATIVE_DOUBLE, tid_str, tid_enum, tid_array_f, tid_vlen_i, tid_vlen_s}; - hsize_t coords[4][2] = { {0, 1}, {3, 5}, {1, 0}, {2, 4}}, start=0, stride=1, count=1; - - if (nrows < NROWS) nrows = NROWS; - if (ngrpsdim0) chunk=dim0/4; - if (chunk<1) chunk = 1; - if (vlen<1) vlen = MAXVLEN; - - /* create fixed string datatype */ - types[4] = tid_str = H5Tcopy (H5T_C_S1); - H5Tset_size (tid_str, FIXED_LEN); - - /* create enum datatype */ - types[5] = tid_enum = H5Tenum_create(H5T_NATIVE_INT); - for (i = (int) SOLID; i <= (int) PLASMA; i++) { - phase_t val = (phase_t) i; - status = H5Tenum_insert (tid_enum, enum_names[i], &val); - } - - /* create float array datatype */ - types[6] = tid_array_f = H5Tarray_create (H5T_NATIVE_FLOAT, 1, dims_array); - - /* create variable length integer datatypes */ - types[7] = tid_vlen_i = H5Tvlen_create (H5T_NATIVE_INT); - - /* create variable length string datatype */ - types[8] = tid_vlen_s = H5Tcopy (H5T_C_S1); - H5Tset_size (tid_vlen_s, H5T_VARIABLE); - - /* create compound datatypes */ - cmp_tid = H5Tcreate (H5T_COMPOUND, sizeof (test_comp_t)); - offset = 0; - for (i=0; i0) { - H5Pset_chunk (dcpl, 1, &chunk); - } - - /* set dataset compression */ - if (compressed) { - if (chunk<=0) { - chunk = dim0/10+1;; - H5Pset_chunk (dcpl, 1, &chunk); - } - H5Pset_shuffle (dcpl); - H5Pset_deflate (dcpl, 6); - } - - /* allocate buffers */ - buf_comp = (test_comp_t *)calloc(dim0, sizeof(test_comp_t)); - buf_comp_large = (test_comp_t *)calloc(nrows, sizeof(test_comp_t)); - buf_int = (int *)calloc(dim0, sizeof(int)); - buf_float_a = malloc(dim0*sizeof(*buf_float_a)); - buf_vlen_i = (hvl_t *)calloc(dim0, sizeof (hvl_t)); - buf_vlen_s = (char **)calloc(dim0, sizeof(char *)); - buf_str = malloc(dim0*sizeof (*buf_str)); - - /* allocate array of doulbe pointers */ - buf_double2d = (double **)calloc(dims2d[0],sizeof(double *)); - /* allocate a contigous chunk of memory for the data */ - buf_double2d[0] = (double *)calloc( dims2d[0]*dims2d[1],sizeof(double) ); - /* assign memory city to pointer array */ - for (i=1; i ]" - echo " -libdir=DIR New directory for the HDF5 lib directory" - echo " [default: /lib]" - echo " -includedir=DIR New directory for the HDF5 header files" - echo " [default: /include]" - echo " -tool=TOOL Tool to update. TOOL must be in the current" - echo " directory and writable. [default: $h5tools]" - echo " -show Show the commands without executing them" - echo " " - exit $EXIT_FAILURE -} - -# display variable values -dump_vars(){ - echo "====Showing all variable values=====" - echo prefix=$prefix - echo h5tools=$h5tools - echo "====End Showing=====" -} - -# show actions to be taken -show_action() -{ - echo "Update the following tools because they are now installed at a new directory" - for t in $foundtools; do - echo "${t}:" - echo " current setting=`sed -e '/^prefix=/s/prefix=//p' -e d $t`" - echo " new setting="\""$prefix"\" - done -} - - -# Report Error message -ERROR() -{ - echo "***ERROR***" - echo "$1" -} - -# Main -# -############################################################################ -## Installation directories: ## -## prefix architecture-independent files. ## -## exec_prefix architecture-dependent files, default is . ## -## libdir libraries, default is /lib. ## -## includedir header files, default is . ## -## Not used here: ## -## bindir executables, . ## -############################################################################ -# Initialization -h5tools="h5cc h5pcc h5fc h5pfc h5c++" # possible hdf5 tools -foundtools= # tools found and will be modified -fmode= # force mode, default is off -prefix= -exec_prefix= -libdir= -includedir= - -# Parse options -for arg in $@ ; do - case "$arg" in - -prefix=*) - prefix="`echo $arg | cut -f2 -d=`" - ;; - -exec-prefix=*) - exec_prefix="`echo $arg | cut -f2 -d=`" - ;; - -libdir=*) - libdir="`echo $arg | cut -f2 -d=`" - ;; - -includedir=*) - includedir="`echo $arg | cut -f2 -d=`" - ;; - -echo) - set -x - ;; - -show) - SHOW="echo" - ;; - -tool=*) - h5tools="`echo $arg | cut -f2 -d=`" - ;; - -help|help) - usage - ;; - -force) - fmode=yes - ;; - *) - ERROR "Unknown Option($arg)" - usage - exit $EXIT_FAILURE - ;; - esac -done - -# Set to default value, one above where i am, if not given by user -if [ -z "$prefix" ]; then - prefix=`(cd ..;pwd)` -fi -if [ -z "$exec_prefix" ]; then - exec_prefix='${prefix}' # use single quotes to prevent expansion of $ -fi -if [ -z "$libdir" ]; then - libdir='${exec_prefix}'/lib # use single quotes to prevent expansion of $ -fi -if [ -z "$includedir" ]; then - includedir='${prefix}'/include # use single quotes to prevent expansion of $ -fi - -for x in $h5tools; do - if [ -f $x ]; then - foundtools="$foundtools $x" - if [ ! -w $x ]; then - ERROR "h5tool($x) is not writable" - exit $EXIT_FAILURE - fi - fi -done - -if [ -z "$foundtools" ]; then - ERROR "found no tools to modify" - exit $EXIT_FAILURE -fi - -# Show actions to be taken and get consent -show_action -# Ask confirmation unless fmode is on -if [ x-$fmode = x- ]; then - echo "Continue? (yes/no)" - read ansx - ans=`echo $ansx | tr "[A-Z]" "[a-z]"` - if [ x-$ans != x-yes ]; then - echo ABORT. No tools changed. - exit $EXIT_FAILURE - fi -fi - - -# Create the update commands -CMDFILE=/tmp/h5redeploy.$$ -touch $CMDFILE -chmod 0600 $CMDFILE -echo "/^prefix=/c" >> $CMDFILE -echo prefix=\""$prefix"\" >> $CMDFILE -echo . >> $CMDFILE -echo "/^exec_prefix=/c" >> $CMDFILE -echo exec_prefix=\""$exec_prefix"\" >> $CMDFILE -echo . >> $CMDFILE -echo "/^libdir=/c" >> $CMDFILE -echo libdir=\""$libdir"\" >> $CMDFILE -echo . >> $CMDFILE -echo "/^includedir=/c" >> $CMDFILE -echo includedir=\""$includedir"\" >> $CMDFILE -echo . >> $CMDFILE -(echo w; echo q) >> $CMDFILE - - -# Update them -if [ "$SHOW" = "echo" ]; then - echo "===Update commands are:====" - cat $CMDFILE - echo "===End Update commands=====" -fi - -for t in $foundtools; do - echo Update $t ... - COMMAND="ed - $t" - if [ "$SHOW" = "echo" ]; then - echo $COMMAND - else - $COMMAND < $CMDFILE - fi -done - - -# Cleanup -rm -f $CMDFILE -exit $EXIT_SUCCESS diff --git a/tools/misc/h5repart.c b/tools/misc/h5repart.c deleted file mode 100644 index e44c957..0000000 --- a/tools/misc/h5repart.c +++ /dev/null @@ -1,510 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * Programmer: Robb Matzke - * Wednesday, May 13, 1998 - * - * Purpose: Repartitions a file family. This program can be used to - * split a single file into a family of files, join a family of - * files into a single file, or copy one family to another while - * changing the size of the family members. It can also be used - * to copy a single file to a single file with holes. - */ - -/* See H5private.h for how to include system headers */ -#include "hdf5.h" -#include "H5private.h" -#ifdef H5_STDC_HEADERS -# include -# include -# include -# include -# include -# include -#endif - -#ifdef H5_HAVE_UNISTD_H -# include -# include -#endif - -#ifdef H5_HAVE_SYS_STAT_H -# include -#endif - -#ifndef FALSE -# define FALSE 0 -#endif -#ifndef TRUE -# define TRUE 1 -#endif -# define NAMELEN 4096 -#define GB *1024*1024*1024 - -#ifndef MIN -# define MIN(X,Y) ((X)<(Y)?(X):(Y)) -#endif -#ifndef MIN3 -# define MIN3(X,Y,Z) MIN(MIN(X,Y),Z) -#endif - -/*Make these 2 private properties(defined in H5Fprivate.h) available to h5repart. - *The first one updates the member file size in the superblock. The second one - *change file driver from family to sec2. */ -#define H5F_ACS_FAMILY_NEWSIZE_NAME "family_newsize" -#define H5F_ACS_FAMILY_TO_SEC2_NAME "family_to_sec2" - - -/*------------------------------------------------------------------------- - * Function: usage - * - * Purpose: Prints a usage message. - * - * Return: void - * - * Programmer: Robb Matzke - * Wednesday, May 13, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -usage (const char *progname) -{ - fprintf(stderr, "usage: %s [-v] [-V] [-[b|m] N[g|m|k]] [-family_to_sec2] SRC DST\n", - progname); - fprintf(stderr, " -v Produce verbose output\n"); - fprintf(stderr, " -V Print a version number and exit\n"); - fprintf(stderr, " -b N The I/O block size, defaults to 1kB\n"); - fprintf(stderr, " -m N The destination member size or 1GB\n"); - fprintf(stderr, " -family_to_sec2 Change file driver from family to sec2\n"); - fprintf(stderr, " SRC The name of the source file\n"); - fprintf(stderr, " DST The name of the destination files\n"); - fprintf(stderr, "Sizes may be suffixed with `g' for GB, `m' for MB or " - "`k' for kB.\n"); - fprintf(stderr, "File family names include an integer printf " - "format such as `%%d'\n"); - exit (EXIT_FAILURE); -} - - -/*------------------------------------------------------------------------- - * Function: get_size - * - * Purpose: Reads a size option of the form `-XNS' where `X' is any - * letter, `N' is a multi-character positive decimal number, and - * `S' is an optional suffix letter in the set [GgMmk]. The - * option may also be split among two arguments as: `-X NS'. - * The input value of ARGNO is the argument number for the - * switch in the ARGV vector and ARGC is the number of entries - * in that vector. - * - * Return: Success: The value N multiplied according to the - * suffix S. On return ARGNO will be the number - * of the next argument to process. - * - * Failure: Calls usage() which exits with a non-zero - * status. - * - * Programmer: Robb Matzke - * Wednesday, May 13, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static off_t -get_size (const char *progname, int *argno, int argc, char *argv[]) -{ - off_t retval=-1; - char *suffix; - - if (isdigit ((int)(argv[*argno][2]))) { - retval = strtol (argv[*argno]+2, &suffix, 10); - (*argno)++; - } else if (argv[*argno][2] || *argno+1>=argc) { - usage (progname); - } else { - retval = strtol (argv[*argno+1], &suffix, 0); - if (suffix==argv[*argno+1]) usage (progname); - *argno += 2; - } - if (suffix && suffix[0] && !suffix[1]) { - switch (*suffix) { - case 'G': - case 'g': - retval *= 1024 * 1024 * 1024; - break; - case 'M': - case 'm': - retval *= 1024 * 1024; - break; - case 'k': - retval *= 1024; - break; - default: - usage (progname); - } - } else if (suffix && suffix[0]) { - usage (progname); - } - return retval; -} - - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: Split an hdf5 file - * - * Return: Success: - * - * Failure: - * - * Programmer: Robb Matzke - * Wednesday, May 13, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -int -main (int argc, char *argv[]) -{ - const char *prog_name; /*program name */ - size_t blk_size=1024; /*size of each I/O block */ - char *buf=NULL; /*I/O block buffer */ - size_t n, i; /*counters */ - ssize_t nio; /*I/O return value */ - int argno=1; /*program argument number */ - int src, dst=-1; /*source & destination files */ - int need_seek=FALSE; /*destination needs to seek? */ - int need_write; /*data needs to be written? */ - h5_stat_t sb; /*temporary file stat buffer */ - - int verbose=FALSE; /*display file names? */ - - const char *src_gen_name; /*general source name */ - char *src_name=NULL; /*source member name */ - - int src_is_family; /*is source name a family name? */ - int src_membno=0; /*source member number */ - - const char *dst_gen_name; /*general destination name */ - char *dst_name=NULL; /*destination member name */ - int dst_is_family; /*is dst name a family name? */ - int dst_membno=0; /*destination member number */ - - off_t left_overs=0; /*amount of zeros left over */ - off_t src_offset=0; /*offset in source member */ - off_t dst_offset=0; /*offset in destination member */ - off_t src_size; /*source logical member size */ - off_t src_act_size; /*source actual member size */ - off_t dst_size=1 GB; /*destination logical memb size */ - hid_t fapl; /*file access property list */ - hid_t file; - hsize_t hdsize; /*destination logical memb size */ - hbool_t family_to_sec2=FALSE; /*change family to sec2 driver? */ - - /* - * Get the program name from argv[0]. Use only the last component. - */ - if ((prog_name=strrchr (argv[0], '/'))) prog_name++; - else prog_name = argv[0]; - - /* - * Parse switches. - */ - while (argno=argc) usage (prog_name); - src_gen_name = argv[argno++]; - sprintf (src_name, src_gen_name, src_membno); - src_is_family = strcmp (src_name, src_gen_name); - - if ((src=HDopen(src_name, O_RDONLY,0))<0) { - perror (src_name); - exit (EXIT_FAILURE); - } - - if (HDfstat(src, &sb)<0) { - perror ("fstat"); - exit (EXIT_FAILURE); - } - src_size = src_act_size = sb.st_size; - if (verbose) fprintf (stderr, "< %s\n", src_name); - - /* - * Get the name for the destination file and open the first member. - */ - if (argno>=argc) usage (prog_name); - dst_gen_name = argv[argno++]; - sprintf (dst_name, dst_gen_name, dst_membno); - dst_is_family = strcmp (dst_name, dst_gen_name); - - if ((dst=HDopen (dst_name, O_RDWR|O_CREAT|O_TRUNC, 0666))<0) { - perror (dst_name); - exit (EXIT_FAILURE); - } - if (verbose) fprintf (stderr, "> %s\n", dst_name); - - /* No more arguments */ - if (argnosrc_size) { - fprintf (stderr, "%s: member truncated to %lu bytes\n", - src_name, (unsigned long)src_size); - } - src_offset = 0; - if (verbose) fprintf (stderr, "< %s\n", src_name); - } - - /* - * Update the destination offset, opening a new member if one will be - * needed. The first member is extended to the logical member size - * but other members might be smaller if they end with a hole. - */ - dst_offset = dst_offset + (off_t)n; - if (dst_is_family && dst_offset==dst_size) { - if (0==dst_membno) { - if (HDlseek (dst, dst_size-1, SEEK_SET)<0) { - perror ("HDHDlseek"); - exit (EXIT_FAILURE); - } - if (HDread (dst, buf, 1)<0) { - perror ("read"); - exit (EXIT_FAILURE); - } - if (HDlseek (dst, dst_size-1, SEEK_SET)<0) { - perror ("HDlseek"); - exit (EXIT_FAILURE); - } - if (HDwrite (dst, buf, 1)<0) { - perror ("write"); - exit (EXIT_FAILURE); - } - } - HDclose (dst); - sprintf (dst_name, dst_gen_name, ++dst_membno); - if ((dst=HDopen (dst_name, O_RDWR|O_CREAT|O_TRUNC, 0666))<0) { - perror (dst_name); - exit (EXIT_FAILURE); - } - dst_offset = 0; - need_seek = FALSE; - if (verbose) fprintf (stderr, "> %s\n", dst_name); - } - } - - /* - * Make sure the last family member is the right size and then close it. - * The last member can't end with a hole or hdf5 will think that the - * family has been truncated. - */ - if (need_seek) { - if (HDlseek (dst, dst_offset-1, SEEK_SET)<0) { - perror ("HDlseek"); - exit (EXIT_FAILURE); - } - if (HDread (dst, buf, 1)<0) { - perror ("read"); - exit (EXIT_FAILURE); - } - if (HDlseek (dst, dst_offset-1, SEEK_SET)<0) { - perror ("HDlseek"); - exit (EXIT_FAILURE); - } - if (HDwrite (dst, buf, 1)<0) { - perror ("write"); - exit (EXIT_FAILURE); - } - } - HDclose (dst); - - /* Modify family driver information saved in superblock through private property. - * These private properties are for this tool only. */ - if ((fapl=H5Pcreate(H5P_FILE_ACCESS))<0) { - perror ("H5Pcreate"); - exit (EXIT_FAILURE); - } - - if(family_to_sec2) { - /* The user wants to change file driver from family to sec2. Open the file - * with sec2 driver. This property signals the library to ignore the family - * driver information saved in the superblock. */ - if(H5Pset(fapl, H5F_ACS_FAMILY_TO_SEC2_NAME, &family_to_sec2) < 0) { - perror ("H5Pset"); - exit (EXIT_FAILURE); - } - } else { - /* Modify family size saved in superblock through private property. It signals - * library to save the new member size(specified in command line) in superblock. - * This private property is for this tool only. */ - if(H5Pset_fapl_family(fapl, H5F_FAMILY_DEFAULT, H5P_DEFAULT) < 0) { - perror ("H5Pset_fapl_family"); - exit (EXIT_FAILURE); - } - - /* Set the property of the new member size as hsize_t */ - hdsize = (hsize_t)dst_size; - if(H5Pset(fapl, H5F_ACS_FAMILY_NEWSIZE_NAME, &hdsize) < 0) { - perror ("H5Pset"); - exit (EXIT_FAILURE); - } - } - - /* If the new file is a family file, try to open file for "read and write" to - * flush metadata. Flushing metadata will update the superblock to the new - * member size. If the original file is a family file and the new file is a sec2 - * file, the property FAMILY_TO_SEC2 will signal the library to switch to sec2 - * driver when the new file is opened. If the original file is a sec2 file and the - * new file can only be a sec2 file, reopen the new file should fail. There's - * nothing to do in this case. */ - H5E_BEGIN_TRY { - file=H5Fopen(dst_gen_name, H5F_ACC_RDWR, fapl); - } H5E_END_TRY; - - if(file>=0) { - if(H5Fclose(file)<0) { - perror ("H5Fclose"); - exit (EXIT_FAILURE); - } /* end if */ - } /* end if */ - - if(H5Pclose(fapl)<0) { - perror ("H5Pclose"); - exit (EXIT_FAILURE); - } /* end if */ - - /* Free resources and return */ - HDfree(src_name); - HDfree(dst_name); - HDfree(buf); - return EXIT_SUCCESS; -} /* end main */ diff --git a/tools/misc/h5repart_gentest.c b/tools/misc/h5repart_gentest.c deleted file mode 100644 index 8a34694..0000000 --- a/tools/misc/h5repart_gentest.c +++ /dev/null @@ -1,101 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * Programmer: Raymond Lu - * June 1, 2005 - * - * Purpose: Generate a family file of 1024 bytes for each member - * for h5repart test. - */ -#include "hdf5.h" -#include "H5private.h" - -#define FAMILY_NUMBER 4 -#define FAMILY_SIZE 1024 -#define FILENAME "family_file%05d.h5" - -static int buf[FAMILY_NUMBER][FAMILY_SIZE]; - -int main(void) -{ - hid_t file=(-1), fapl, space=(-1), dset=(-1); - char dname[]="dataset"; - int i, j; - hsize_t dims[2]={FAMILY_NUMBER, FAMILY_SIZE}; - - /* Set property list and file name for FAMILY driver */ - if ((fapl=H5Pcreate(H5P_FILE_ACCESS)) < 0) { - perror ("H5Pcreate"); - exit (EXIT_FAILURE); - } - - if(H5Pset_fapl_family(fapl, (hsize_t)FAMILY_SIZE, H5P_DEFAULT) < 0) { - perror ("H5Pset_fapl_family"); - exit (EXIT_FAILURE); - } - - if((file = H5Fcreate(FILENAME, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) { - perror("H5Fcreate"); - exit(EXIT_FAILURE); - } - - /* Create and write dataset */ - if((space = H5Screate_simple(2, dims, NULL)) < 0) { - perror("H5Screate_simple"); - exit(EXIT_FAILURE); - } - - - if((dset = H5Dcreate2(file, dname, H5T_NATIVE_INT, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) { - perror("H5Dcreate2"); - exit(EXIT_FAILURE); - } - - - for(i = 0; i - * June 1, 2005 - * - * Purpose: This program tests family files after being repartitioned - * by h5repart. It simply tries to reopen the files with - * correct family driver and member size. - */ -#include "hdf5.h" - -#define KB 1024 -#define FAMILY_H5REPART_SIZE1 20000 -#define FAMILY_H5REPART_SIZE2 (5*KB) -#define MAX(a,b) (a>b ? a:b) - -const char *FILENAME[] = { - "fst_family%05d.h5", - "scd_family%05d.h5", - "family_to_sec2.h5", - NULL -}; - -herr_t test_family_h5repart_opens(void); -herr_t test_sec2_h5repart_opens(void); - - -/*------------------------------------------------------------------------- - * Function: test_family_h5repart_opens - * - * Purpose: Tries to reopen family files. - * - * Return: Success: exit(0) - * - * Failure: exit(1) - * - * Programmer: Raymond Lu - * June 1, 2005 - * - * Modifications: - *------------------------------------------------------------------------- - */ -herr_t -test_family_h5repart_opens(void) -{ - hid_t file=(-1), fapl=(-1); - - /* open 1st file(single member file) with correct family size(20000 byte) */ - if ((fapl=H5Pcreate(H5P_FILE_ACCESS))<0) - goto error; - - if(H5Pset_fapl_family(fapl, (hsize_t)FAMILY_H5REPART_SIZE1, H5P_DEFAULT)<0) - goto error; - - if((file=H5Fopen(FILENAME[0], H5F_ACC_RDWR, fapl))<0) - goto error; - - if(H5Fclose(file)<0) - goto error; - - /* open 2nd file(multiple member files) with correct family size(5KB) */ - if(H5Pset_fapl_family(fapl, (hsize_t)FAMILY_H5REPART_SIZE2, H5P_DEFAULT)<0) - goto error; - - if((file=H5Fopen(FILENAME[1], H5F_ACC_RDWR, fapl))<0) - goto error; - - if(H5Fclose(file)<0) - goto error; - - return 0; - -error: - H5E_BEGIN_TRY { - H5Fclose(file); - } H5E_END_TRY; - return -1; -} - - -/*------------------------------------------------------------------------- - * Function: test_sec2_h5repart_opens - * - * Purpose: Tries to reopen a sec2 file. - * - * Return: Success: exit(0) - * - * Failure: exit(1) - * - * Programmer: Raymond Lu - * June 21, 2005 - * - * Modifications: - *------------------------------------------------------------------------- - */ -herr_t -test_sec2_h5repart_opens(void) -{ - hid_t file=(-1); - - /* open the sec2 file */ - if((file=H5Fopen(FILENAME[2], H5F_ACC_RDWR, H5P_DEFAULT))<0) - goto error; - - if(H5Fclose(file)<0) - goto error; - - return 0; - -error: - H5E_BEGIN_TRY { - H5Fclose(file); - } H5E_END_TRY; - return -1; -} - - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: Tests h5repart-ed family files - * - * Return: Success: exit(0) - * - * Failure: exit(1) - * - * Programmer: Raymond Lu - * June 1, 2005 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -int -main(void) -{ - int nerrors=0; - - nerrors += test_family_h5repart_opens()<0 ?1:0; - nerrors += test_sec2_h5repart_opens()<0 ?1:0; - - if (nerrors) goto error; - - return 0; - -error: - nerrors = MAX(1, nerrors); - printf("***** %d FAMILY FILE TEST%s FAILED! *****\n", - nerrors, 1 == nerrors ? "" : "S"); - return 1; -} diff --git a/tools/misc/talign.c b/tools/misc/talign.c deleted file mode 100644 index be373e7..0000000 --- a/tools/misc/talign.c +++ /dev/null @@ -1,244 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * Small program to illustrate the "misalignment" of members within a compound - * datatype, in a datatype fixed by H5Tget_native_type(). - */ -#include -#include -/*#include *//* Required for unlink() */ - -#include "hdf5.h" -#include "H5private.h" -#include "h5tools.h" - -const char *fname = "talign.h5"; -const char *setname = "align"; - -/* - * This program assumes that there is no extra space between the members 'Ok' - * and 'Not Ok', (there shouldn't be because they are of the same atomic type - * H5T_NATIVE_FLOAT, and they are placed within the compound next to one - * another per construction) - */ - -int main(void) -{ - hid_t fil=-1, spc=-1, set=-1; - hid_t cs6=-1, cmp=-1, fix=-1; - hid_t cmp1=-1, cmp2=-1, cmp3=-1; - hid_t plist=-1; - hid_t array_dt=-1; - - hsize_t dim[2]; - hsize_t cdim[4]; - - char string5[5]; - float fok[2] = {1234.0f, 2341.0f}; - float fnok[2] = {5678.0f, 6785.0f}; - float *fptr = NULL; - - char *data = NULL; - - int result = 0; - herr_t error = 1; - - printf("%-70s", "Testing alignment in compound datatypes"); - - strcpy(string5, "Hi!"); - HDunlink(fname); - fil = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - if (fil < 0) { - puts("*FAILED*"); - return 1; - } - - H5E_BEGIN_TRY { - (void)H5Ldelete(fil, setname, H5P_DEFAULT); - } H5E_END_TRY; - - cs6 = H5Tcopy(H5T_C_S1); - H5Tset_size(cs6, sizeof(string5)); - H5Tset_strpad(cs6, H5T_STR_NULLPAD); - - cmp = H5Tcreate(H5T_COMPOUND, sizeof(fok) + sizeof(string5) + sizeof(fnok)); - H5Tinsert(cmp, "Awkward length", 0, cs6); - - cdim[0] = sizeof(fok) / sizeof(float); - array_dt = H5Tarray_create2(H5T_NATIVE_FLOAT, 1, cdim); - H5Tinsert(cmp, "Ok", sizeof(string5), array_dt); - H5Tclose(array_dt); - - cdim[0] = sizeof(fnok) / sizeof(float); - array_dt = H5Tarray_create2(H5T_NATIVE_FLOAT, 1, cdim); - H5Tinsert(cmp, "Not Ok", sizeof(fok) + sizeof(string5), array_dt); - H5Tclose(array_dt); - - fix = h5tools_get_native_type(cmp); - - cmp1 = H5Tcreate(H5T_COMPOUND, sizeof(fok)); - - cdim[0] = sizeof(fok) / sizeof(float); - array_dt = H5Tarray_create2(H5T_NATIVE_FLOAT, 1, cdim); - H5Tinsert(cmp1, "Ok", 0, array_dt); - H5Tclose(array_dt); - - cmp2 = H5Tcreate(H5T_COMPOUND, sizeof(string5)); - H5Tinsert(cmp2, "Awkward length", 0, cs6); - - cmp3 = H5Tcreate(H5T_COMPOUND, sizeof(fnok)); - - cdim[0] = sizeof(fnok) / sizeof(float); - array_dt = H5Tarray_create2(H5T_NATIVE_FLOAT, 1, cdim); - H5Tinsert(cmp3, "Not Ok", 0, array_dt); - H5Tclose(array_dt); - - plist = H5Pcreate(H5P_DATASET_XFER); - if((error = H5Pset_preserve(plist, 1)) < 0) - goto out; - - /* - * Create a small dataset, and write data into it we write each field - * in turn so that we are avoid alignment issues at this point - */ - dim[0] = 1; - spc = H5Screate_simple(1, dim, NULL); - set = H5Dcreate2(fil, setname, cmp, spc, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - H5Dwrite(set, cmp1, spc, H5S_ALL, plist, fok); - H5Dwrite(set, cmp2, spc, H5S_ALL, plist, string5); - H5Dwrite(set, cmp3, spc, H5S_ALL, plist, fnok); - - H5Dclose(set); - - /* Now open the set, and read it back in */ - data = (char *)HDmalloc(H5Tget_size(fix)); - - if(!data) { - perror("malloc() failed"); - abort(); - } - - set = H5Dopen2(fil, setname, H5P_DEFAULT); - - H5Dread(set, fix, spc, H5S_ALL, H5P_DEFAULT, data); - fptr = (float *)(data + H5Tget_member_offset(fix, 1)); - H5Dclose(set); - -out: - if(error < 0) { - result = 1; - puts("*FAILED - HDF5 library error*"); - } else if(!(H5_FLT_ABS_EQUAL(fok[0], fptr[0])) - || !(H5_FLT_ABS_EQUAL(fok[1], fptr[1])) - || !(H5_FLT_ABS_EQUAL(fnok[0], fptr[2])) - || !(H5_FLT_ABS_EQUAL(fnok[1], fptr[3]))) { - char *mname; - - result = 1; - mname = H5Tget_member_name(fix, 0); - printf("%14s (%2d) %6s = %s\n", - mname ? mname : "(null)", (int)H5Tget_member_offset(fix,0), - string5, (char *)(data + H5Tget_member_offset(fix, 0))); - if(mname) - H5free_memory(mname); - - fptr = (float *)(data + H5Tget_member_offset(fix, 1)); - mname = H5Tget_member_name(fix, 1); - printf("Data comparison:\n" - "%14s (%2d) %6f = %f\n" - " %6f = %f\n", - mname ? mname : "(null)", (int)H5Tget_member_offset(fix,1), - (double)fok[0], (double)fptr[0], - (double)fok[1], (double)fptr[1]); - if(mname) - H5free_memory(mname); - - fptr = (float *)(data + H5Tget_member_offset(fix, 2)); - mname = H5Tget_member_name(fix, 2); - printf("%14s (%2d) %6f = %f\n" - " %6f = %6f\n", - mname ? mname : "(null)", (int)H5Tget_member_offset(fix,2), - (double)fnok[0], (double)fptr[0], - (double)fnok[1], (double)fptr[1]); - if(mname) - H5free_memory(mname); - - fptr = (float *)(data + H5Tget_member_offset(fix, 1)); - printf("\n" - "Short circuit\n" - " %6f = %f\n" - " %6f = %f\n" - " %6f = %f\n" - " %6f = %f\n", - (double)fok[0], (double)fptr[0], - (double)fok[1], (double)fptr[1], - (double)fnok[0], (double)fptr[2], - (double)fnok[1], (double)fptr[3]); - puts("*FAILED - compound type alignmnent problem*"); - } else { - puts(" PASSED"); - } - - if(data) - HDfree(data); - H5Sclose(spc); - H5Tclose(cs6); - H5Tclose(cmp); - H5Tclose(fix); - H5Tclose(cmp1); - H5Tclose(cmp2); - H5Tclose(cmp3); - H5Pclose(plist); - H5Fclose(fil); - HDunlink(fname); - fflush(stdout); - return result; -} - -/*------------------------------------------------------------------------- - * Function: h5tools_get_native_type - * - * Purpose: Wrapper around H5Tget_native_type() to work around - * Problems with bitfields. - * - * Return: Success: datatype ID - * - * Failure: FAIL - * - * Programmer: Quincey Koziol - * Tuesday, October 5, 2004 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -hid_t -h5tools_get_native_type(hid_t type) -{ - hid_t p_type; - H5T_class_t type_class; - - type_class = H5Tget_class(type); - if(type_class==H5T_BITFIELD) - p_type=H5Tcopy(type); - else - p_type = H5Tget_native_type(type,H5T_DIR_DEFAULT); - - return(p_type); -} - diff --git a/tools/misc/testfiles/h5mkgrp_help.txt b/tools/misc/testfiles/h5mkgrp_help.txt deleted file mode 100644 index ba130f6..0000000 --- a/tools/misc/testfiles/h5mkgrp_help.txt +++ /dev/null @@ -1,7 +0,0 @@ -usage: h5mkgrp [OPTIONS] FILE GROUP... - OPTIONS - -h, --help Print a usage message and exit - -l, --latest Use latest version of file format to create groups - -p, --parents No error if existing, make parent groups as needed - -v, --verbose Print information about OBJECTS and OPTIONS - -V, --version Print version number and exit diff --git a/tools/misc/testfiles/h5mkgrp_version.txt.in b/tools/misc/testfiles/h5mkgrp_version.txt.in deleted file mode 100644 index 75c13a5..0000000 --- a/tools/misc/testfiles/h5mkgrp_version.txt.in +++ /dev/null @@ -1 +0,0 @@ -h5mkgrp: Version @HDF5_PACKAGE_VERSION_STRING@ diff --git a/tools/misc/testh5mkgrp.sh.in b/tools/misc/testh5mkgrp.sh.in deleted file mode 100644 index a0413e1..0000000 --- a/tools/misc/testh5mkgrp.sh.in +++ /dev/null @@ -1,325 +0,0 @@ -#! /bin/sh -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -# -# Tests for the h5mkgrp tool -# -# Quincey Koziol (koziol@hdfgroup.org) -# Tuesday, February 13, 2007 -# - -srcdir=@srcdir@ - -TESTNAME=h5mkgrp -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -H5MKGRP=h5mkgrp # The tool name -H5MKGRP_BIN=`pwd`/$H5MKGRP # The path of the tool binary -H5LS=h5ls # The h5ls tool name -H5LS_ARGS=-vr # Arguments to the h5ls tool -H5LS_BIN=`pwd`/../h5ls/$H5LS # The path of the h5ls tool binary - -RM='rm -rf' -CMP='cmp' -DIFF='diff -c' -CP='cp' -DIRNAME='dirname' -LS='ls' -AWK='awk' - -nerrors=0 -verbose=yes - -# source dirs -SRC_TOOLS="$srcdir/../" - -SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles" -# testfiles source dirs for tools -SRC_H5MKGRP_TESTFILES="$SRC_TOOLS/misc/testfiles" - -TESTDIR=./testgrp -test -d $TESTDIR || mkdir -p $TESTDIR - -###################################################################### -# test files -# -------------------------------------------------------------------- -# All the test files copy from source directory to test directory -# NOTE: Keep this framework to add/remove test files. -# Any test files from other tools can be used in this framework. -# This list are also used for checking exist. -# Comment '#' without space can be used. -# -------------------------------------------------------------------- - -CMP='cmp -s' -DIFF='diff -c' - -# -# copy test files and expected output files from source dirs to test dir -# -COPY_TESTFILES=" -$SRC_H5MKGRP_TESTFILES/h5mkgrp_help.txt -$SRC_TOOLS_TESTFILES/h5mkgrp_single.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_single_v.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_single_p.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_single_l.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_several.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_several_v.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_several_p.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_several_l.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_nested_p.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_nested_lp.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_nested_mult_p.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_nested_mult_lp.ls -" - -COPY_TESTFILES_TO_TESTDIR() -{ - # copy test files. Used -f to make sure get a new copy - for tstfile in $COPY_TESTFILES - do - # ignore '#' comment - echo $tstfile | tr -d ' ' | grep '^#' > /dev/null - RET=$? - if [ $RET -eq 1 ]; then - # skip cp if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=`$DIRNAME $tstfile` - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $CP -f $tstfile $TESTDIR - if [ $? -ne 0 ]; then - echo "Error: FAILED to copy $tstfile ." - - # Comment out this to CREATE expected file - exit $EXIT_FAILURE - fi - fi - fi - done -} - -CLEAN_TESTFILES_AND_TESTDIR() -{ - # skip rm if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=$SRC_H5MKGRP_TESTFILES - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $RM $TESTDIR - fi -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Testing". -TESTING() -{ - SPACES=" " - echo "Testing $* $SPACES" |cut -c1-70 |tr -d '\012' -} - -# Source in the output filter function definitions. -. $srcdir/../../bin/output_filter.sh - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Verifying". -# -VERIFY_H5LS() -{ - SPACES=" " - echo "Verifying h5ls file structure $* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Run a test and print PASS or *FAIL*. If h5mkgrp can complete -# with exit status 0, consider it pass. If a test fails then increment -# the `nerrors' global variable. -# Assumed arguments: -# $* arguments for h5mkgrp. - -TOOLTEST() -{ - TESTING $H5MKGRP $@ - ( - cd $TESTDIR - $RUNSERIAL $H5MKGRP_BIN $@ - ) > output.out - RET=$? - if [ $RET != 0 ]; then - echo "*FAILED*" - echo "failed result is:" - cat output.out - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f output.out - fi - fi -} - -# Call the h5ls tool to verify the correct output data in the destination file -# -H5LSTEST() -{ - expect="$TESTDIR/`basename $1 .h5`.ls" - actual="$TESTDIR/`basename $1 .h5`.out" - actual_sav=${actual}-sav - - # Stderr is included in stdout so that the diff can detect - # any unexpected output from that stream too. - VERIFY_H5LS $@ - ( - cd $TESTDIR - $RUNSERIAL $H5LS_BIN $H5LS_ARGS $@ - ) 2>&1 |sed 's/Modified:.*/Modified: XXXX-XX-XX XX:XX:XX XXX/' >$actual - - # save actual in case it is needed later. - cp $actual $actual_sav - STDOUT_FILTER $actual - STDERR_FILTER $actual - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.ls) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_sav - fi -} - -# Single run of tool -# -# Assumed arguments: -# $1 is test file name -# $2 is h5mkgrp options -# $* are groups to create -RUNTEST() -{ - FILEOUT=$1 - shift - H5MKGRP_ARGS=$1 - shift - - # Remove any output file left over from previous test run - rm -f $FILEOUT - - # Run test - TOOLTEST $H5MKGRP_ARGS $FILEOUT $@ - - # Verify that the file created above is correct - H5LSTEST $FILEOUT - - # Remove output file created, if the "no cleanup" environment variable is - # not defined - if test -z "$HDF5_NOCLEANUP"; then - rm -f $TESTDIR/$FILEOUT - fi -} - -# Single run of tool -# -# Assumed arguments: -# $1 is test expected output file -# $2 is h5mkgrp options -# $* are groups to create -CMPTEST() -{ - FILEOUT=$1 - expect="$TESTDIR/`basename $1 .h5`.txt" - actual="$TESTDIR/`basename $1 .h5`.out" - actual_err="$TESTDIR/`basename $1 .h5`.err" - shift - - # Stderr is included in stdout so that the diff can detect - # any unexpected output from that stream too. - TESTING $H5MKGRP $@ - ( - cd $TESTDIR - $RUNSERIAL $H5MKGRP_BIN $@ - ) >$actual 2>$actual_err - cat $actual_err >> $actual - - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.txt) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err - fi -} - -############################################################################## -### T H E T E S T S ### -############################################################################## -# prepare for test -COPY_TESTFILES_TO_TESTDIR - -# Check that help & version is displayed properly -CMPTEST h5mkgrp_help.h5 "-h" -#CMPTEST h5mkgrp_version.h5 "-V" - -# Create single group at root level -RUNTEST h5mkgrp_single.h5 " " single -RUNTEST h5mkgrp_single_v.h5 "-v" single -RUNTEST h5mkgrp_single_p.h5 "-p" single -RUNTEST h5mkgrp_single_l.h5 "-l" latest - -# Create several groups at root level -RUNTEST h5mkgrp_several.h5 " " one two -RUNTEST h5mkgrp_several_v.h5 "-v" one two -RUNTEST h5mkgrp_several_p.h5 "-p" one two -RUNTEST h5mkgrp_several_l.h5 "-l" one two - -# Create various nested groups -RUNTEST h5mkgrp_nested_p.h5 "-p" /one/two -RUNTEST h5mkgrp_nested_lp.h5 "-lp" /one/two -RUNTEST h5mkgrp_nested_mult_p.h5 "-p" /one/two /three/four -RUNTEST h5mkgrp_nested_mult_lp.h5 "-lp" /one/two /three/four - -# Clean up temporary files/directories -CLEAN_TESTFILES_AND_TESTDIR - -if test $nerrors -eq 0 ; then - echo "All $TESTNAME tests passed." - exit $EXIT_SUCCESS -else - echo "$TESTNAME tests failed with $nerrors errors." - exit $EXIT_FAILURE -fi diff --git a/tools/misc/testh5repart.sh.in b/tools/misc/testh5repart.sh.in deleted file mode 100644 index fc33e0e..0000000 --- a/tools/misc/testh5repart.sh.in +++ /dev/null @@ -1,116 +0,0 @@ -#! /bin/sh -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -# -# Tests for the h5repart tool - -srcdir=@srcdir@ - -TESTNAME=h5repart -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -REPART=h5repart # The tool name -REPART_BIN=`pwd`/$REPART # The path of the tool binary - -REPARTED_FAM=repart_test # The test name -REPARTED_FAM_BIN=`pwd`/$REPARTED_FAM # The path of the test binary - -nerrors=0 -verbose=yes - -test -d ../testfiles || mkdir ../testfiles - -actual_dir=`pwd`/../testfiles - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Testing". -# -TESTING() { - SPACES=" " - echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Run a test and print PASS or *FAIL*. If a test fails then increment -# the `nerrors' global variable. -# -TOOLTEST() { - # Run tool test. - TESTING $REPART $@ - ( -# echo - cd $srcdir/../testfiles - $RUNSERIAL $REPART_BIN $@ - ) - - if test $? -eq 0; then - echo " PASSED" - else - echo " FAILED" - nerrors=`expr $nerrors + 1` - fi -} - -OUTPUTTEST() { - # Run test program. - TESTING $REPARTED_FAM $@ - ( - cd $actual_dir - $RUNSERIAL $REPARTED_FAM_BIN $@ - ) - - if test $? -eq 0; then - echo " PASSED" - else - echo " FAILED" - nerrors=`expr $nerrors + 1` - fi -} - -# Print a "SKIP" message -SKIP() { - TESTING $REPART $@ - echo " -SKIP-" -} - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## - -# repartition family member size to 20,000 bytes. -TOOLTEST -m 20000 family_file%05d.h5 $actual_dir/fst_family%05d.h5 -# repartition family member size to 5 KB. -TOOLTEST -m 5k family_file%05d.h5 $actual_dir/scd_family%05d.h5 -# convert family file to sec2 file of 20,000 bytes -TOOLTEST -m 20000 -family_to_sec2 family_file%05d.h5 $actual_dir/family_to_sec2.h5 - -# test the output files repartitioned above. -OUTPUTTEST -echo - -# Clean up output file -if test -z "$HDF5_NOCLEANUP"; then - cd $actual_dir - rm -f fst_family*.h5 scd_family*.h5 family_to_sec2.h5 -fi - -if test $nerrors -eq 0 ; then - echo "All $TESTNAME tests passed." - exit $EXIT_SUCCESS -else - echo "$TESTNAME tests failed with $nerrors errors." - exit $EXIT_FAILURE -fi diff --git a/tools/misc/vds/CMakeLists.txt b/tools/misc/vds/CMakeLists.txt deleted file mode 100644 index dcf883c..0000000 --- a/tools/misc/vds/CMakeLists.txt +++ /dev/null @@ -1,28 +0,0 @@ -cmake_minimum_required (VERSION 3.1.0) -PROJECT (HDF5_TOOLS_MISC_VDS) - -#----------------------------------------------------------------------------- -# Setup include Directories -#----------------------------------------------------------------------------- -INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib) - -MACRO (ADD_H5_GENERATOR genfile) - add_executable (${genfile} ${HDF5_TOOLS_MISC_VDS_SOURCE_DIR}/${genfile}.c) - TARGET_NAMING (${genfile} STATIC) - TARGET_C_PROPERTIES (${genfile} STATIC " " " ") - target_link_libraries (${genfile} ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) - set_target_properties (${genfile} PROPERTIES FOLDER generator/tools) -ENDMACRO (ADD_H5_GENERATOR genfile) - -# generator executables -set (H5_GENERATORS - UC_1_one_dim_gen - UC_2_two_dims_gen - UC_3_gaps_gen - UC_4_printf_gen - UC_5_stride_gen -) - -foreach (gen ${H5_GENERATORS}) - ADD_H5_GENERATOR (${gen}) -endforeach (gen ${H5_GENERATORS}) diff --git a/tools/misc/vds/Makefile.am b/tools/misc/vds/Makefile.am deleted file mode 100644 index f1ef80c..0000000 --- a/tools/misc/vds/Makefile.am +++ /dev/null @@ -1,38 +0,0 @@ -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -## -## Makefile.am -## Run automake to generate a Makefile.in from this file. -# -# HDF5 Library Makefile(.in) -# - -include $(top_srcdir)/config/commence.am - -# Include src directory -AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib - -#test scripts and programs -TEST_PROG=UC_1_one_dim_gen UC_2_two_dims_gen UC_3_gaps_gen UC_4_printf_gen \ - UC_5_stride_gen - -check_PROGRAMS=$(TEST_PROG) - -# Temporary files. -CHECK_CLEANFILES+=*.h5 - -# All programs rely on hdf5 library and h5tools library -LDADD=$(LIBH5TOOLS) $(LIBHDF5) - -include $(top_srcdir)/config/conclude.am diff --git a/tools/misc/vds/UC_1.h b/tools/misc/vds/UC_1.h deleted file mode 100644 index 2150cfa..0000000 --- a/tools/misc/vds/UC_1.h +++ /dev/null @@ -1,121 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#ifndef UC_1_H -#define UC_1_H - -#include "hdf5.h" - -#include "UC_common.h" - -/* - * Definitions for VDS use case 1 - * - * Datasets have a single unlimited dimension and two fixed dimensions. They - * are mapped along a single dimension in the VDS with no gaps between them. - */ - -/* virtual dataset <---> source dataset mapping and sizes - - ***************** --+ - * A * K - ***************** --+ - * * | - * B * N - * * | - ***************** --+ - * C * - ***************** - * * - * D * - * * - ***************** - * E * - ***************** - * * - * F * - * * - ***************** - - | | - +-------M-------+ - - - dim[0] - / - / - / - -----> dim[2] - | - | - | - dim[1] - - */ - - -#define UC_1_N_SOURCES 6 - -/* Dataset dimensions */ -#define UC_1_SM_HEIGHT 2 /* K */ -#define UC_1_LG_HEIGHT 4 /* N */ -#define UC_1_SM_LG_HEIGHT 6 /* SM_HEIGHT + LG_HEIGHT */ -#define UC_1_FULL_HEIGHT 18 /* (3 * K) + (3 * N) */ -#define UC_1_HALF_HEIGHT 9 -#define UC_1_WIDTH 8 /* M */ -#define UC_1_HALF_WIDTH 4 - -#define UC_1_N_MAX_PLANES H5S_UNLIMITED /* max number of planes */ -#define UC_1_N_TEST_PLANES 5 /* number of planes we write */ - -/* Dataset datatypes */ -#define UC_1_SOURCE_DATATYPE H5T_STD_I32LE -#define UC_1_VDS_DATATYPE H5T_STD_I32LE - -/* Starting size of datasets, both source and VDS */ -static hsize_t UC_1_DIMS[UC_1_N_SOURCES][RANK] = { - {0, UC_1_SM_HEIGHT, UC_1_WIDTH}, - {0, UC_1_LG_HEIGHT, UC_1_WIDTH}, - {0, UC_1_SM_HEIGHT, UC_1_WIDTH}, - {0, UC_1_LG_HEIGHT, UC_1_WIDTH}, - {0, UC_1_SM_HEIGHT, UC_1_WIDTH}, - {0, UC_1_LG_HEIGHT, UC_1_WIDTH} -}; - -/* Maximum size of datasets, both source and VDS */ -static hsize_t UC_1_MAX_DIMS[UC_1_N_SOURCES][RANK] = { - {UC_1_N_MAX_PLANES, UC_1_SM_HEIGHT, UC_1_WIDTH}, - {UC_1_N_MAX_PLANES, UC_1_LG_HEIGHT, UC_1_WIDTH}, - {UC_1_N_MAX_PLANES, UC_1_SM_HEIGHT, UC_1_WIDTH}, - {UC_1_N_MAX_PLANES, UC_1_LG_HEIGHT, UC_1_WIDTH}, - {UC_1_N_MAX_PLANES, UC_1_SM_HEIGHT, UC_1_WIDTH}, - {UC_1_N_MAX_PLANES, UC_1_LG_HEIGHT, UC_1_WIDTH} -}; - -/* File names for source datasets */ -static char UC_1_FILE_NAMES[UC_1_N_SOURCES][NAME_LEN] = { - {"1_a.h5"}, - {"1_b.h5"}, - {"1_c.h5"}, - {"1_d.h5"}, - {"1_e.h5"}, - {"1_f.h5"} -}; - -/* Dataset names */ -static char UC_1_SOURCE_DSET_PATH[NAME_LEN] = "/source_dset"; - -#endif /* UC_1_H */ - diff --git a/tools/misc/vds/UC_1_one_dim_gen.c b/tools/misc/vds/UC_1_one_dim_gen.c deleted file mode 100644 index f47b982..0000000 --- a/tools/misc/vds/UC_1_one_dim_gen.c +++ /dev/null @@ -1,269 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * File/dataset generator for VDS use case 1 - * - * See the header file for a description. - */ - -#include -#include - -#include "hdf5.h" - -#include "UC_common.h" -#include "UC_1.h" - -static hsize_t UC_1_VDS_DIMS[RANK] = {0, UC_1_FULL_HEIGHT, UC_1_WIDTH}; -static hsize_t UC_1_VDS_MAX_DIMS[RANK] = {UC_1_N_MAX_PLANES, UC_1_FULL_HEIGHT, UC_1_WIDTH}; - -/* Planes */ -static hsize_t UC_1_PLANES[UC_1_N_SOURCES][RANK] = { - {1, UC_1_SM_HEIGHT, UC_1_WIDTH}, - {1, UC_1_LG_HEIGHT, UC_1_WIDTH}, - {1, UC_1_SM_HEIGHT, UC_1_WIDTH}, - {1, UC_1_LG_HEIGHT, UC_1_WIDTH}, - {1, UC_1_SM_HEIGHT, UC_1_WIDTH}, - {1, UC_1_LG_HEIGHT, UC_1_WIDTH} -}; - -/* VDS file name */ -static char UC_1_VDS_FILE_NAME[NAME_LEN] = "1_vds.h5"; - -/* Dataset names */ -static char UC_1_SOURCE_DSET_NAME[NAME_LEN] = "source_dset"; -static char UC_1_VDS_DSET_NAME[NAME_LEN] = "vds_dset"; - -/* Fill values */ -static int UC_1_FILL_VALUES[UC_1_N_SOURCES] = { - -1, - -2, - -3, - -4, - -5, - -6 -}; -static int UC_1_VDS_FILL_VALUE = -9; - -int -main(void) -{ - hid_t src_sid = -1; /* source dataset's dataspace ID */ - hid_t src_dcplid = -1; /* source dataset property list ID */ - - hid_t vds_sid = -1; /* VDS dataspace ID */ - hid_t vds_dcplid = -1; /* VDS dataset property list ID */ - - hid_t fid = -1; /* HDF5 file ID */ - hid_t did = -1; /* dataset ID */ - hid_t msid = -1; /* memory dataspace ID */ - hid_t fsid = -1; /* file dataspace ID */ - - hsize_t extent[RANK]; /* dataset extents */ - hsize_t start[RANK]; /* starting point for hyperslab */ - hsize_t map_start = 0; /* starting point in the VDS map */ - - int *buffer = NULL; /* data buffer */ - hsize_t count = 0; /* number of elements in a plane */ - int n_planes = -1; /* number of planes to write */ - int value = -1; /* value written to datasets */ - - int i; /* iterator */ - int j; /* iterator */ - hsize_t k; /* iterator */ - - - /* Start by creating the virtual dataset (VDS) dataspace and creation - * property list. The individual source datasets are then created - * and the VDS map (stored in the VDS property list) is updated. - */ - - /* Create VDS dcpl */ - if((vds_dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) - UC_ERROR - if(H5Pset_fill_value(vds_dcplid, UC_1_VDS_DATATYPE, - &UC_1_VDS_FILL_VALUE) < 0) - UC_ERROR - - /* Create VDS dataspace */ - if((vds_sid = H5Screate_simple(RANK, UC_1_VDS_DIMS, - UC_1_VDS_MAX_DIMS)) < 0) - UC_ERROR - - /************************************ - * Create source files and datasets * - ************************************/ - - start[0] = 0; - start[1] = 0; - start[2] = 0; - map_start = 0; - - for(i = 0; i < UC_1_N_SOURCES; i++) { - - /* Create source dataset dcpl */ - if((src_dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) - UC_ERROR - if(H5Pset_chunk(src_dcplid, RANK, UC_1_PLANES[i]) < 0) - UC_ERROR - if(H5Pset_fill_value(src_dcplid, UC_1_SOURCE_DATATYPE, - &UC_1_FILL_VALUES[i]) < 0) - UC_ERROR - if(0 != i % 2) - if(H5Pset_deflate(src_dcplid, COMPRESSION_LEVEL) < 0) - UC_ERROR - - /* Create source file, dataspace, and dataset */ - if((fid = H5Fcreate(UC_1_FILE_NAMES[i], H5F_ACC_TRUNC, - H5P_DEFAULT, H5P_DEFAULT)) < 0) - UC_ERROR - if((src_sid = H5Screate_simple(RANK, UC_1_DIMS[i], - UC_1_MAX_DIMS[i])) < 0) - UC_ERROR - if((did = H5Dcreate2(fid, UC_1_SOURCE_DSET_NAME, - UC_1_SOURCE_DATATYPE, src_sid, - H5P_DEFAULT, src_dcplid, H5P_DEFAULT)) < 0) - UC_ERROR - - /* Set the dataset's extent (will eventually vary with i) */ - extent[0] = UC_1_N_TEST_PLANES; - extent[1] = UC_1_PLANES[i][1]; - extent[2] = UC_1_PLANES[i][2]; - if(H5Dset_extent(did, extent) < 0) - UC_ERROR - - /* Create a data buffer that represents a plane */ - count = UC_1_PLANES[i][1] * UC_1_PLANES[i][2]; - if(NULL == (buffer = (int *)malloc(count * sizeof(int)))) - UC_ERROR - - /* Create the memory dataspace */ - if((msid = H5Screate_simple(RANK, UC_1_PLANES[i], NULL)) < 0) - UC_ERROR - - /* Get the file dataspace */ - if((fsid = H5Dget_space(did)) < 0) - UC_ERROR - - /* Write planes to the dataset, number will eventually vary with i */ - n_planes = UC_1_N_TEST_PLANES; - for(j = 0; j < n_planes; j++) { - - value = ((i + 1) * 10) + j; - for(k = 0; k < count; k++) - buffer[k] = value; - - start[0] = (hsize_t)j; - start[1] = 0; - start[2] = 0; - if(H5Sselect_hyperslab(fsid, H5S_SELECT_SET, start, NULL, UC_1_PLANES[i], NULL) < 0) - UC_ERROR - if(H5Dwrite(did, H5T_NATIVE_INT, msid, fsid, H5P_DEFAULT, buffer) < 0) - UC_ERROR - - } /* end for */ - - /* set up hyperslabs for source and destination datasets */ - start[0] = 0; - start[1] = 0; - start[2] = 0; - if(H5Sselect_hyperslab(src_sid, H5S_SELECT_SET, start, NULL, - UC_1_MAX_DIMS[i], NULL) < 0) - UC_ERROR - start[0] = 0; - start[1] = map_start; - start[2] = 0; - if(H5Sselect_hyperslab(vds_sid, H5S_SELECT_SET, start, NULL, - UC_1_MAX_DIMS[i], NULL) < 0) - UC_ERROR - map_start += UC_1_PLANES[i][1]; - - /* Add VDS mapping */ - if(H5Pset_virtual(vds_dcplid, vds_sid, UC_1_FILE_NAMES[i], - UC_1_SOURCE_DSET_PATH, src_sid) < 0) - UC_ERROR - - /* close */ - if(H5Sclose(src_sid) < 0) - UC_ERROR - if(H5Pclose(src_dcplid) < 0) - UC_ERROR - if(H5Sclose(msid) < 0) - UC_ERROR - if(H5Sclose(fsid) < 0) - UC_ERROR - if(H5Dclose(did) < 0) - UC_ERROR - if(H5Fclose(fid) < 0) - UC_ERROR - free(buffer); - - } /* end for */ - - - /******************* - * Create VDS file * - *******************/ - - /* file */ - if((fid = H5Fcreate(UC_1_VDS_FILE_NAME, H5F_ACC_TRUNC, - H5P_DEFAULT, H5P_DEFAULT)) < 0) - UC_ERROR - - /* dataset */ - if((did = H5Dcreate2(fid, UC_1_VDS_DSET_NAME, UC_1_VDS_DATATYPE, vds_sid, - H5P_DEFAULT, vds_dcplid, H5P_DEFAULT)) < 0) - UC_ERROR - - /* close */ - if(H5Pclose(vds_dcplid) < 0) - UC_ERROR - if(H5Sclose(vds_sid) < 0) - UC_ERROR - if(H5Dclose(did) < 0) - UC_ERROR - if(H5Fclose(fid) < 0) - UC_ERROR - - return EXIT_SUCCESS; - -error: - - H5E_BEGIN_TRY { - if(src_sid >= 0) - (void)H5Sclose(src_sid); - if(src_dcplid >= 0) - (void)H5Pclose(src_dcplid); - if(vds_sid >= 0) - (void)H5Sclose(vds_sid); - if(vds_dcplid >= 0) - (void)H5Pclose(vds_dcplid); - if(fid >= 0) - (void)H5Fclose(fid); - if(did >= 0) - (void)H5Dclose(did); - if(msid >= 0) - (void)H5Sclose(msid); - if(fsid >= 0) - (void)H5Sclose(fsid); - if(buffer != NULL) - free(buffer); - } H5E_END_TRY - - return EXIT_FAILURE; - -} /* end main */ - diff --git a/tools/misc/vds/UC_2.h b/tools/misc/vds/UC_2.h deleted file mode 100644 index fe3f350..0000000 --- a/tools/misc/vds/UC_2.h +++ /dev/null @@ -1,110 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#ifndef UC_2_H -#define UC_2_H - -#include "hdf5.h" - -/* - * Definitions for VDS use case 2 - * - * Datasets have a single unlimited dimension and two fixed dimensions. They - * are mapped along two dimensions in the VDS with no gaps between them. - */ - -/* virtual dataset <---> source dataset mapping and sizes - - ********************************** - * A * * - ***************** D * - * * * - * B * * - * ****************** - ***************** E * - * C * * - ********************************** - - - dim[0] - / - / - / - -----> dim[2] - | - | - | - dim[1] - - */ - -#define UC_2_N_SOURCES 5 - -/* Dataset dimensions */ -#define UC_2_A_HEIGHT 2 -#define UC_2_B_HEIGHT 4 -#define UC_2_AB_HEIGHT 6 /* For hyperslab start position */ -#define UC_2_C_HEIGHT 2 -#define UC_2_D_HEIGHT 5 -#define UC_2_E_HEIGHT 3 -#define UC_2_FULL_HEIGHT 8 /* A+B+C and D+E */ -#define UC_2_WIDTH 7 -#define UC_2_FULL_WIDTH 14 /* 2*width */ - -#define UC_2_N_PLANES_IN_SERIES 3 /* number of planes in a series of sub-images */ -#define UC_2_N_MAX_PLANES H5S_UNLIMITED /* max number of planes */ -#define UC_2_N_TEST_PLANES 6 /* number of planes we write */ - -/* Dataset datatypes */ -#define UC_2_SOURCE_DATATYPE H5T_STD_I32LE -#define UC_2_VDS_DATATYPE H5T_STD_I32LE - -/* Starting size of datasets, both source and VDS */ -static hsize_t UC_2_DIMS[UC_2_N_SOURCES][RANK] = { - {0, UC_2_A_HEIGHT, UC_2_WIDTH}, - {0, UC_2_B_HEIGHT, UC_2_WIDTH}, - {0, UC_2_C_HEIGHT, UC_2_WIDTH}, - {0, UC_2_D_HEIGHT, UC_2_WIDTH}, - {0, UC_2_E_HEIGHT, UC_2_WIDTH} -}; - -/* Maximum size of datasets, both source and VDS */ -static hsize_t UC_2_MAX_DIMS[UC_2_N_SOURCES][RANK] = { - {UC_2_N_MAX_PLANES, UC_2_A_HEIGHT, UC_2_WIDTH}, - {UC_2_N_MAX_PLANES, UC_2_B_HEIGHT, UC_2_WIDTH}, - {UC_2_N_MAX_PLANES, UC_2_C_HEIGHT, UC_2_WIDTH}, - {UC_2_N_MAX_PLANES, UC_2_D_HEIGHT, UC_2_WIDTH}, - {UC_2_N_MAX_PLANES, UC_2_E_HEIGHT, UC_2_WIDTH} -}; - -/* File names for source datasets */ -static char UC_2_FILE_NAMES[UC_2_N_SOURCES][NAME_LEN] = { - {"2_a.h5"}, - {"2_b.h5"}, - {"2_c.h5"}, - {"2_d.h5"}, - {"2_e.h5"} -}; - -/* VDS file name */ -#define UC_2_VDS_FILE_NAME "2_vds.h5" - -/* Dataset names */ -#define UC_2_SOURCE_DSET_NAME "source_dset" -#define UC_2_SOURCE_DSET_PATH "/source_dset" -#define UC_2_VDS_DSET_NAME "vds_dset" - -#endif /* UC_2_H */ - diff --git a/tools/misc/vds/UC_2_two_dims_gen.c b/tools/misc/vds/UC_2_two_dims_gen.c deleted file mode 100644 index d08cc5f..0000000 --- a/tools/misc/vds/UC_2_two_dims_gen.c +++ /dev/null @@ -1,270 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * File/dataset generator for VDS use case 2 - * - * See the header file for a description. - */ - - -#include - -#include "hdf5.h" - -#include "UC_common.h" -#include "UC_2.h" - -static hsize_t UC_2_VDS_DIMS[RANK] = {0, UC_2_FULL_HEIGHT, UC_2_FULL_WIDTH}; -static hsize_t UC_2_VDS_MAX_DIMS[RANK] = {UC_2_N_MAX_PLANES, UC_2_FULL_HEIGHT, UC_2_FULL_WIDTH}; - -/* Positions of source datasets in the VDS */ -static hsize_t UC_2_POSITIONS[UC_2_N_SOURCES][RANK] = { - /* A */ {0, 0, 0}, - /* B */ {0, UC_2_A_HEIGHT, 0}, - /* C */ {0, UC_2_AB_HEIGHT, 0}, - /* D */ {0, 0, UC_2_WIDTH}, - /* E */ {0, UC_2_D_HEIGHT, UC_2_WIDTH} -}; - -/* Planes */ -static hsize_t UC_2_PLANES[UC_2_N_SOURCES][RANK] = { - {1, UC_2_A_HEIGHT, UC_2_WIDTH}, - {1, UC_2_B_HEIGHT, UC_2_WIDTH}, - {1, UC_2_C_HEIGHT, UC_2_WIDTH}, - {1, UC_2_D_HEIGHT, UC_2_WIDTH}, - {1, UC_2_E_HEIGHT, UC_2_WIDTH} -}; - -/* Chunk dimensions */ -static hsize_t UC_2_CHUNK_DIMS[UC_2_N_SOURCES][RANK] = { - {UC_2_N_PLANES_IN_SERIES, UC_2_A_HEIGHT, UC_2_WIDTH}, - {UC_2_N_PLANES_IN_SERIES, UC_2_B_HEIGHT, UC_2_WIDTH}, - {UC_2_N_PLANES_IN_SERIES, UC_2_C_HEIGHT, UC_2_WIDTH}, - {UC_2_N_PLANES_IN_SERIES, UC_2_D_HEIGHT, UC_2_WIDTH}, - {UC_2_N_PLANES_IN_SERIES, UC_2_E_HEIGHT, UC_2_WIDTH} -}; - -/* Fill values */ -static int UC_2_FILL_VALUES[UC_2_N_SOURCES] = { - -1, - -2, - -3, - -4, - -5 -}; -static int UC_2_VDS_FILL_VALUE = -9; - -int -main(void) -{ - hid_t src_sid = -1; /* source dataset's dataspace ID */ - hid_t src_dcplid = -1; /* source dataset property list ID */ - - hid_t vds_sid = -1; /* VDS dataspace ID */ - hid_t vds_dcplid = -1; /* VDS dataset property list ID */ - - hid_t fid = -1; /* HDF5 file ID */ - hid_t did = -1; /* dataset ID */ - hid_t msid = -1; /* memory dataspace ID */ - hid_t fsid = -1; /* file dataspace ID */ - - hsize_t start[RANK]; /* starting point for hyperslab */ - hsize_t extent[RANK]; /* dataset extents */ - - int *buffer = NULL; /* data buffer */ - int value = -1; /* value written to datasets */ - hsize_t count = 0; /* number of elements in a plane */ - int n_planes = -1; /* number of planes to write */ - - int i; /* iterator */ - int j; /* iterator */ - hsize_t k; /* iterator */ - - - /* Start by creating the virtual dataset (VDS) dataspace and creation - * property list. The individual source datasets are then created - * and the VDS map (stored in the VDS property list) is updated. - */ - - /* Create VDS dcpl */ - if((vds_dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) - UC_ERROR - if(H5Pset_fill_value(vds_dcplid, UC_2_VDS_DATATYPE, - &UC_2_VDS_FILL_VALUE) < 0) - UC_ERROR - - /* Create VDS dataspace */ - if((vds_sid = H5Screate_simple(RANK, UC_2_VDS_DIMS, - UC_2_VDS_MAX_DIMS)) < 0) - UC_ERROR - - /************************************ - * Create source files and datasets * - ************************************/ - - start[0] = 0; - start[1] = 0; - start[2] = 0; - - for(i = 0; i < UC_2_N_SOURCES; i++) { - - /* source dataset dcpl */ - if((src_dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) - UC_ERROR - if(H5Pset_chunk(src_dcplid, RANK, UC_2_CHUNK_DIMS[i]) < 0) - UC_ERROR - if(H5Pset_fill_value(src_dcplid, UC_2_SOURCE_DATATYPE, - &UC_2_FILL_VALUES[i]) < 0) - UC_ERROR - if(H5Pset_deflate(src_dcplid, COMPRESSION_LEVEL) < 0) - UC_ERROR - - /* Create source file, dataspace, and dataset */ - if((fid = H5Fcreate(UC_2_FILE_NAMES[i], H5F_ACC_TRUNC, - H5P_DEFAULT, H5P_DEFAULT)) < 0) - UC_ERROR - if((src_sid = H5Screate_simple(RANK, UC_2_DIMS[i], - UC_2_MAX_DIMS[i])) < 0) - UC_ERROR - if((did = H5Dcreate2(fid, UC_2_SOURCE_DSET_NAME, - UC_2_SOURCE_DATATYPE, src_sid, - H5P_DEFAULT, src_dcplid, H5P_DEFAULT)) < 0) - UC_ERROR - - /* Set the dataset's extent (will eventually vary with i) */ - extent[0] = UC_2_N_TEST_PLANES; - extent[1] = UC_2_PLANES[i][1]; - extent[2] = UC_2_PLANES[i][2]; - if(H5Dset_extent(did, extent) < 0) - UC_ERROR - - /* Create a data buffer that represents a plane */ - count = UC_2_PLANES[i][1] * UC_2_PLANES[i][2]; - if(NULL == (buffer = (int *)malloc(count * sizeof(int)))) - UC_ERROR - - /* Create the memory dataspace */ - if((msid = H5Screate_simple(RANK, UC_2_PLANES[i], NULL)) < 0) - UC_ERROR - - /* Get the file dataspace */ - if((fsid = H5Dget_space(did)) < 0) - UC_ERROR - - /* Write planes to the dataset, number will eventually vary with i */ - n_planes = UC_2_N_TEST_PLANES; - for(j = 0; j < n_planes; j++) { - - value = ((i + 1) * 10) + j; - for(k = 0; k < count; k++) - buffer[k] = value; - - start[0] = (hsize_t)j; - start[1] = 0; - start[2] = 0; - if(H5Sselect_hyperslab(fsid, H5S_SELECT_SET, start, NULL, UC_2_PLANES[i], NULL) < 0) - UC_ERROR - if(H5Dwrite(did, H5T_NATIVE_INT, msid, fsid, H5P_DEFAULT, buffer) < 0) - UC_ERROR - - } /* end for */ - - /* set up hyperslabs for source and destination datasets */ - start[0] = 0; - start[1] = 0; - start[2] = 0; - if(H5Sselect_hyperslab(src_sid, H5S_SELECT_SET, start, NULL, - UC_2_MAX_DIMS[i], NULL) < 0) - UC_ERROR - if(H5Sselect_hyperslab(vds_sid, H5S_SELECT_SET, UC_2_POSITIONS[i], NULL, - UC_2_MAX_DIMS[i], NULL) < 0) - UC_ERROR - - /* Add VDS mapping */ - if(H5Pset_virtual(vds_dcplid, vds_sid, UC_2_FILE_NAMES[i], - UC_2_SOURCE_DSET_PATH, src_sid) < 0) - UC_ERROR - - /* close */ - if(H5Sclose(msid) < 0) - UC_ERROR - if(H5Sclose(fsid) < 0) - UC_ERROR - if(H5Sclose(src_sid) < 0) - UC_ERROR - if(H5Pclose(src_dcplid) < 0) - UC_ERROR - if(H5Dclose(did) < 0) - UC_ERROR - if(H5Fclose(fid) < 0) - UC_ERROR - free(buffer); - - } /* end for */ - - /******************************* - * Create VDS file and dataset * - *******************************/ - - /* file */ - if((fid = H5Fcreate(UC_2_VDS_FILE_NAME, H5F_ACC_TRUNC, - H5P_DEFAULT, H5P_DEFAULT)) < 0) - UC_ERROR - - /* dataset */ - if((did = H5Dcreate2(fid, UC_2_VDS_DSET_NAME, UC_2_VDS_DATATYPE, vds_sid, - H5P_DEFAULT, vds_dcplid, H5P_DEFAULT)) < 0) - UC_ERROR - - /* close */ - if(H5Pclose(vds_dcplid) < 0) - UC_ERROR - if(H5Sclose(vds_sid) < 0) - UC_ERROR - if(H5Dclose(did) < 0) - UC_ERROR - if(H5Fclose(fid) < 0) - UC_ERROR - - return EXIT_SUCCESS; - -error: - - H5E_BEGIN_TRY { - if(src_sid >= 0) - (void)H5Sclose(src_sid); - if(src_dcplid >= 0) - (void)H5Pclose(src_dcplid); - if(vds_sid >= 0) - (void)H5Sclose(vds_sid); - if(vds_dcplid >= 0) - (void)H5Pclose(vds_dcplid); - if(fid >= 0) - (void)H5Fclose(fid); - if(did >= 0) - (void)H5Dclose(did); - if(msid >= 0) - (void)H5Sclose(msid); - if(fsid >= 0) - (void)H5Sclose(fsid); - if(buffer != NULL) - free(buffer); - } H5E_END_TRY - - return EXIT_FAILURE; - -} /* end main() */ - diff --git a/tools/misc/vds/UC_3.h b/tools/misc/vds/UC_3.h deleted file mode 100644 index 0654a48..0000000 --- a/tools/misc/vds/UC_3.h +++ /dev/null @@ -1,74 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#ifndef UC_3_H -#define UC_3_H - -#include "hdf5.h" - -#include "UC_1.h" -#include "UC_2.h" - -/* - * Definitions for VDS use case 3 - * - * Datasets have a single unlimited dimension and one or two fixed - * dimensions (they are reused from use cases 1 and 2). In this use case, - * the datasets are mapped in the VDS with gaps between them. - */ - -/* VDS dimensions - * Height and width are large enough to encompass the - * mapped source datasets with gaps. - */ -#define UC_31_VDS_HEIGHT 25 /* full height + 7 (gaps of 1) */ -#define UC_31_VDS_WIDTH 8 /* full width + 0 (no gaps) */ -#define UC_32_VDS_HEIGHT 13 /* full height + 5 */ -#define UC_32_VDS_WIDTH 19 /* full width + 5 */ -#define UC_31_GAP 1 - -/* VDS datatypes */ -#define UC_31_VDS_DATATYPE H5T_STD_I32LE -#define UC_32_VDS_DATATYPE H5T_STD_I32LE - -/* Starting size of virtual datasets */ -static hsize_t UC_31_VDS_DIMS[RANK] = {0, UC_31_VDS_HEIGHT, UC_31_VDS_WIDTH}; -static hsize_t UC_32_VDS_DIMS[RANK] = {0, UC_32_VDS_HEIGHT, UC_32_VDS_WIDTH}; - -/* Maximum size of virtual datasets */ -static hsize_t UC_31_VDS_MAX_DIMS[RANK] = {UC_1_N_MAX_PLANES, UC_31_VDS_HEIGHT, UC_31_VDS_WIDTH}; -static hsize_t UC_32_VDS_MAX_DIMS[RANK] = {UC_2_N_MAX_PLANES, UC_32_VDS_HEIGHT, UC_32_VDS_WIDTH}; - -/* Positions of mapped source datasets */ -static hsize_t UC_32_POSITIONS[UC_2_N_SOURCES][RANK] = { - /* A */ {0, 1, 1}, - /* B */ {0, 4, 0}, - /* C */ {0, 11, 4}, - /* D */ {0, 1, 9}, - /* E */ {0, 8, 12} -}; - -/* VDS file names */ -#define UC_31_VDS_FILE_NAME "3_1_vds.h5" -#define UC_32_VDS_FILE_NAME "3_2_vds.h5" - -/* Dataset name */ -#define UC_3_VDS_DSET_NAME "vds_dset" - -/* Fill value */ -static int UC_3_VDS_FILL_VALUE = -9; - -#endif /* UC_3_H */ - diff --git a/tools/misc/vds/UC_3_gaps_gen.c b/tools/misc/vds/UC_3_gaps_gen.c deleted file mode 100644 index 7cb208b..0000000 --- a/tools/misc/vds/UC_3_gaps_gen.c +++ /dev/null @@ -1,255 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * File/dataset generator for VDS use case 3 - * - * See the header file for a description. - */ - -#include -#include - -#include - -#include "UC_common.h" -#include "UC_3.h" - -/* Create the VDS that uses use case 1 files */ -static herr_t -create_3_1_vds(void) -{ - hid_t src_sid = -1; /* source dataset's dataspace ID */ - hid_t vds_sid = -1; /* VDS dataspace ID */ - hid_t vds_dcplid = -1; /* VDS dataset property list ID */ - - hid_t fid = -1; /* HDF5 file ID */ - hid_t did = -1; /* dataset ID */ - - hsize_t start[RANK]; /* source starting point for hyperslab */ - hsize_t position[RANK]; /* vds mapping positions */ - - int i; /* iterator */ - - /* Create VDS dcpl */ - if((vds_dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) - UC_ERROR - if(H5Pset_fill_value(vds_dcplid, UC_31_VDS_DATATYPE, - &UC_3_VDS_FILL_VALUE) < 0) - UC_ERROR - - /* Create VDS dataspace */ - if((vds_sid = H5Screate_simple(RANK, UC_31_VDS_DIMS, - UC_31_VDS_MAX_DIMS)) < 0) - UC_ERROR - - /* Set starting positions */ - start[0] = 0; - start[1] = 0; - start[2] = 0; - - position[0] = 0; - position[1] = UC_31_GAP; - position[2] = 0; - - /****************************** - * Create source-VDS mappings * - ******************************/ - for(i = 0; i < UC_1_N_SOURCES; i++) { - - if((src_sid = H5Screate_simple(RANK, UC_1_DIMS[i], - UC_1_MAX_DIMS[i])) < 0) - UC_ERROR - - /* set up hyperslabs for source and destination datasets */ - if(H5Sselect_hyperslab(src_sid, H5S_SELECT_SET, start, NULL, - UC_1_MAX_DIMS[i], NULL) < 0) - UC_ERROR - if(H5Sselect_hyperslab(vds_sid, H5S_SELECT_SET, position, - NULL, UC_1_MAX_DIMS[i], NULL) < 0) - UC_ERROR - position[1] += UC_1_DIMS[i][1] + UC_31_GAP; - - /* Add VDS mapping */ - if(H5Pset_virtual(vds_dcplid, vds_sid, UC_1_FILE_NAMES[i], - UC_1_SOURCE_DSET_PATH, src_sid) < 0) - UC_ERROR - if(H5Sclose(src_sid) < 0) - UC_ERROR - - } /* end for */ - - /******************************* - * Create VDS file and dataset * - *******************************/ - - /* file */ - if((fid = H5Fcreate(UC_31_VDS_FILE_NAME, H5F_ACC_TRUNC, - H5P_DEFAULT, H5P_DEFAULT)) < 0) - UC_ERROR - - /* dataset */ - if((did = H5Dcreate2(fid, UC_3_VDS_DSET_NAME, UC_31_VDS_DATATYPE, vds_sid, - H5P_DEFAULT, vds_dcplid, H5P_DEFAULT)) < 0) - UC_ERROR - - /* close */ - if(H5Pclose(vds_dcplid) < 0) - UC_ERROR - if(H5Sclose(vds_sid) < 0) - UC_ERROR - if(H5Dclose(did) < 0) - UC_ERROR - if(H5Fclose(fid) < 0) - UC_ERROR - - return 0; - -error: - - H5E_BEGIN_TRY { - if(vds_sid >= 0) - (void)H5Sclose(vds_sid); - if(vds_dcplid >= 0) - (void)H5Pclose(vds_dcplid); - if(fid >= 0) - (void)H5Fclose(fid); - if(did >= 0) - (void)H5Dclose(did); - } H5E_END_TRY - - return -1; - -} /* end create_3_1_vds() */ - -/* Create the VDS that uses use case 2 files */ -static herr_t -create_3_2_vds(void) -{ - hid_t src_sid = -1; /* source dataset's dataspace ID */ - hid_t vds_sid = -1; /* VDS dataspace ID */ - hid_t vds_dcplid = -1; /* VDS dataset property list ID */ - - hid_t fid = -1; /* HDF5 file ID */ - hid_t did = -1; /* dataset ID */ - - hsize_t start[RANK]; /* source starting point for hyperslab */ - - int i; /* iterator */ - - /* Create VDS dcpl */ - if((vds_dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) - UC_ERROR - if(H5Pset_fill_value(vds_dcplid, UC_32_VDS_DATATYPE, - &UC_3_VDS_FILL_VALUE) < 0) - UC_ERROR - - /* Create VDS dataspace */ - if((vds_sid = H5Screate_simple(RANK, UC_32_VDS_DIMS, - UC_32_VDS_MAX_DIMS)) < 0) - UC_ERROR - - /* Set starting positions */ - start[0] = 0; - start[1] = 0; - start[2] = 0; - - /****************************** - * Create source-VDS mappings * - ******************************/ - for(i = 0; i < UC_2_N_SOURCES; i++) { - - if((src_sid = H5Screate_simple(RANK, UC_2_DIMS[i], - UC_2_MAX_DIMS[i])) < 0) - UC_ERROR - - /* set up hyperslabs for source and destination datasets */ - if(H5Sselect_hyperslab(src_sid, H5S_SELECT_SET, start, NULL, - UC_2_MAX_DIMS[i], NULL) < 0) - UC_ERROR - if(H5Sselect_hyperslab(vds_sid, H5S_SELECT_SET, UC_32_POSITIONS[i], - NULL, UC_2_MAX_DIMS[i], NULL) < 0) - UC_ERROR - - /* Add VDS mapping */ - if(H5Pset_virtual(vds_dcplid, vds_sid, UC_2_FILE_NAMES[i], - UC_2_SOURCE_DSET_PATH, src_sid) < 0) - UC_ERROR - if(H5Sclose(src_sid) < 0) - UC_ERROR - - } /* end for */ - - /******************************* - * Create VDS file and dataset * - *******************************/ - - /* file */ - if((fid = H5Fcreate(UC_32_VDS_FILE_NAME, H5F_ACC_TRUNC, - H5P_DEFAULT, H5P_DEFAULT)) < 0) - UC_ERROR - - /* dataset */ - if((did = H5Dcreate2(fid, UC_3_VDS_DSET_NAME, UC_32_VDS_DATATYPE, vds_sid, - H5P_DEFAULT, vds_dcplid, H5P_DEFAULT)) < 0) - UC_ERROR - - /* close */ - if(H5Pclose(vds_dcplid) < 0) - UC_ERROR - if(H5Sclose(vds_sid) < 0) - UC_ERROR - if(H5Dclose(did) < 0) - UC_ERROR - if(H5Fclose(fid) < 0) - UC_ERROR - - return 0; - -error: - - H5E_BEGIN_TRY { - if(vds_sid >= 0) - (void)H5Sclose(vds_sid); - if(vds_dcplid >= 0) - (void)H5Pclose(vds_dcplid); - if(fid >= 0) - (void)H5Fclose(fid); - if(did >= 0) - (void)H5Dclose(did); - } H5E_END_TRY - - return -1; - -} /* end create_3_2_vds() */ - -int -main(void) -{ - - if(create_3_1_vds() < 0) - UC_ERROR - - if(create_3_2_vds() < 0) - UC_ERROR - - return EXIT_SUCCESS; - -error: - - return EXIT_FAILURE; - -} /* end main() */ - diff --git a/tools/misc/vds/UC_4.h b/tools/misc/vds/UC_4.h deleted file mode 100644 index bfcafed..0000000 --- a/tools/misc/vds/UC_4.h +++ /dev/null @@ -1,86 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#ifndef UC_4_H -#define UC_4_H - -#include "hdf5.h" - -#include "UC_common.h" - -/* - * Definitions for VDS use case 4 - * - * Source datasets have three fixed dimensions. In this use case, the - * datasets are mapped consecutively in the VDS along a single dimension with - * no gaps between them. Datasets are automatically loaded using a - * printf-like format string for the file name. - */ - -/* virtual dataset <---> source dataset mapping and sizes */ - -#define UC_4_N_SOURCES 3 - -/* Dataset dimensions */ -#define UC_4_SRC_PLANES 3 -#define UC_4_HEIGHT 4 -#define UC_4_WIDTH 4 - -/* max number of planes for VDS (sources are finite) */ -#define UC_4_VDS_MAX_PLANES H5S_UNLIMITED -#define UC_4_N_TEST_PLANES 9 /* number of planes in the VDS */ - -/* Dataset datatypes */ -#define UC_4_SOURCE_DATATYPE H5T_STD_I32LE -#define UC_4_VDS_DATATYPE H5T_STD_I32LE - -/* Starting size of datasets, both source and VDS */ -static hsize_t UC_4_SOURCE_DIMS[RANK] = {0, UC_4_HEIGHT, UC_4_WIDTH}; -static hsize_t UC_4_VDS_DIMS[RANK] = {0, UC_4_HEIGHT, UC_4_WIDTH}; - -/* Max size of datasets, both source and VDS */ -static hsize_t UC_4_SOURCE_MAX_DIMS[RANK] = {UC_4_SRC_PLANES, UC_4_HEIGHT, UC_4_WIDTH}; -static hsize_t UC_4_VDS_MAX_DIMS[RANK] = {UC_4_VDS_MAX_PLANES, UC_4_HEIGHT, UC_4_WIDTH}; - -/* Planes (both source and VDS) */ -static hsize_t UC_4_PLANE[RANK] = {1, UC_4_HEIGHT, UC_4_WIDTH}; - -/* File names for source datasets */ -static char UC_4_FILE_NAMES[UC_4_N_SOURCES][NAME_LEN] = { - {"4_0.h5"}, - {"4_1.h5"}, - {"4_2.h5"} -}; -static char UC_4_MAPPING_FILE_NAME[NAME_LEN] = "4_%b.h5"; - -/* VDS file name */ -static char UC_4_VDS_FILE_NAME[NAME_LEN] = "4_vds.h5"; - -/* Dataset names */ -static char UC_4_SOURCE_DSET_NAME[NAME_LEN] = "source_dset"; -static char UC_4_SOURCE_DSET_PATH[NAME_LEN] = "/source_dset"; -static char UC_4_VDS_DSET_NAME[NAME_LEN] = "vds_dset"; - -/* Fill values */ -static int UC_4_FILL_VALUES[UC_4_N_SOURCES] = { - -1, - -2, - -3 -}; -static int UC_4_VDS_FILL_VALUE = -9; - -#endif /* UC_4_H */ - - diff --git a/tools/misc/vds/UC_4_printf_gen.c b/tools/misc/vds/UC_4_printf_gen.c deleted file mode 100644 index d067d47..0000000 --- a/tools/misc/vds/UC_4_printf_gen.c +++ /dev/null @@ -1,219 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * File/dataset generator for VDS use case 4 - * - * See the header file for a description. - */ - -#include - -#include - -#include "UC_common.h" -#include "UC_4.h" - -int -main(void) -{ - hid_t src_sid = -1; /* source dataset's dataspace ID */ - hid_t src_dcplid = -1; /* source dataset property list ID */ - - hid_t vds_sid = -1; /* VDS dataspace ID */ - hid_t vds_dcplid = -1; /* VDS dataset property list ID */ - - hid_t fid = -1; /* HDF5 file ID */ - hid_t did = -1; /* dataset ID */ - hid_t msid = -1; /* memory dataspace ID */ - hid_t fsid = -1; /* file dataspace ID */ - - /* Hyperslab arrays */ - hsize_t start[RANK] = {0, 0, 0}; - hsize_t count[RANK] = {H5S_UNLIMITED, 1, 1}; - - int *buffer = NULL; /* data buffer */ - int value = -1; /* value written to datasets */ - - hsize_t n = 0; /* number of elements in a plane */ - - int i; /* iterator */ - int j; /* iterator */ - hsize_t k; /* iterator */ - - /************************************ - * Create source files and datasets * - ************************************/ - - /* Create source dataspace ID */ - if((src_sid = H5Screate_simple(RANK, UC_4_SOURCE_DIMS, - UC_4_SOURCE_MAX_DIMS)) < 0) - UC_ERROR - if(H5Sselect_hyperslab(src_sid, H5S_SELECT_SET, start, NULL, - UC_4_SOURCE_MAX_DIMS, NULL) < 0) - UC_ERROR - - /* Create source files and datasets */ - for(i = 0; i < UC_4_N_SOURCES; i++) { - - /* source dataset dcpl */ - if((src_dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) - UC_ERROR - if(H5Pset_chunk(src_dcplid, RANK, UC_4_PLANE) < 0) - UC_ERROR - if(H5Pset_fill_value(src_dcplid, UC_4_SOURCE_DATATYPE, - &UC_4_FILL_VALUES[i]) < 0) - UC_ERROR - if(H5Pset_deflate(src_dcplid, COMPRESSION_LEVEL) < 0) - UC_ERROR - - /* Create source file and dataset */ - if((fid = H5Fcreate(UC_4_FILE_NAMES[i], H5F_ACC_TRUNC, - H5P_DEFAULT, H5P_DEFAULT)) < 0) - UC_ERROR - if((did = H5Dcreate2(fid, UC_4_SOURCE_DSET_NAME, - UC_4_SOURCE_DATATYPE, src_sid, - H5P_DEFAULT, src_dcplid, H5P_DEFAULT)) < 0) - UC_ERROR - - /* Set the dataset's extent */ - if(H5Dset_extent(did, UC_4_SOURCE_MAX_DIMS) < 0) - UC_ERROR - - /* Create a data buffer that represents a plane */ - n = UC_4_PLANE[1] * UC_4_PLANE[2]; - if(NULL == (buffer = (int *)malloc(n * sizeof(int)))) - UC_ERROR - - /* Create the memory dataspace */ - if((msid = H5Screate_simple(RANK, UC_4_PLANE, NULL)) < 0) - UC_ERROR - - /* Get the file dataspace */ - if((fsid = H5Dget_space(did)) < 0) - UC_ERROR - - /* Write planes to the dataset */ - for(j = 0; j < UC_4_SRC_PLANES; j++) { - - value = ((i + 1) * 10) + j; - for(k = 0; k < n; k++) - buffer[k] = value; - - start[0] = (hsize_t)j; - start[1] = 0; - start[2] = 0; - if(H5Sselect_hyperslab(fsid, H5S_SELECT_SET, start, NULL, UC_4_PLANE, NULL) < 0) - UC_ERROR - if(H5Dwrite(did, H5T_NATIVE_INT, msid, fsid, H5P_DEFAULT, buffer) < 0) - UC_ERROR - - } /* end for */ - - /* close */ - if(H5Sclose(msid) < 0) - UC_ERROR - if(H5Sclose(fsid) < 0) - UC_ERROR - if(H5Pclose(src_dcplid) < 0) - UC_ERROR - if(H5Dclose(did) < 0) - UC_ERROR - if(H5Fclose(fid) < 0) - UC_ERROR - free(buffer); - - } /* end for */ - - /******************* - * Create VDS file * - *******************/ - - /* Create file */ - if((fid = H5Fcreate(UC_4_VDS_FILE_NAME, H5F_ACC_TRUNC, - H5P_DEFAULT, H5P_DEFAULT)) < 0) - UC_ERROR - - /* Create VDS dcpl */ - if((vds_dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) - UC_ERROR - if(H5Pset_fill_value(vds_dcplid, UC_4_VDS_DATATYPE, - &UC_4_VDS_FILL_VALUE) < 0) - UC_ERROR - - /* Create VDS dataspace */ - if((vds_sid = H5Screate_simple(RANK, UC_4_VDS_DIMS, - UC_4_VDS_MAX_DIMS)) < 0) - UC_ERROR - start[0] = 0; - start[1] = 0; - start[2] = 0; - if(H5Sselect_hyperslab(vds_sid, H5S_SELECT_SET, start, - UC_4_SOURCE_MAX_DIMS, count, UC_4_SOURCE_MAX_DIMS) < 0) - UC_ERROR - - /* Add VDS mapping - The mapped file name uses a printf-like - * naming scheme that automatically maps new files. - */ - if(H5Pset_virtual(vds_dcplid, vds_sid, UC_4_MAPPING_FILE_NAME, - UC_4_SOURCE_DSET_PATH, src_sid) < 0) - UC_ERROR - - /* Create dataset */ - if((did = H5Dcreate2(fid, UC_4_VDS_DSET_NAME, UC_4_VDS_DATATYPE, vds_sid, - H5P_DEFAULT, vds_dcplid, H5P_DEFAULT)) < 0) - UC_ERROR - - /* close */ - if(H5Sclose(src_sid) < 0) - UC_ERROR - if(H5Pclose(vds_dcplid) < 0) - UC_ERROR - if(H5Sclose(vds_sid) < 0) - UC_ERROR - if(H5Dclose(did) < 0) - UC_ERROR - if(H5Fclose(fid) < 0) - UC_ERROR - - return EXIT_SUCCESS; - -error: - - H5E_BEGIN_TRY { - if(src_sid >= 0) - (void)H5Sclose(src_sid); - if(src_dcplid >= 0) - (void)H5Pclose(src_dcplid); - if(vds_sid >= 0) - (void)H5Sclose(vds_sid); - if(vds_dcplid >= 0) - (void)H5Pclose(vds_dcplid); - if(fid >= 0) - (void)H5Fclose(fid); - if(did >= 0) - (void)H5Dclose(did); - if(msid >= 0) - (void)H5Sclose(msid); - if(fsid >= 0) - (void)H5Sclose(fsid); - if(buffer != NULL) - free(buffer); - } H5E_END_TRY - - return EXIT_FAILURE; - -} /* end main() */ - diff --git a/tools/misc/vds/UC_5.h b/tools/misc/vds/UC_5.h deleted file mode 100644 index 96b2af3..0000000 --- a/tools/misc/vds/UC_5.h +++ /dev/null @@ -1,83 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#ifndef UC_5_H -#define UC_5_H - -#include - -#include "UC_common.h" - -/* - * Definitions for VDS use case 5 - * - * Source datasets have one unlimited dimension and two fixed dimensions. In - * this use case, the datasets are mapped in the VDS so that alternating - * planes in the source are interleaved in the VDS. - */ - -/* virtual dataset <---> source dataset mapping and sizes */ - -#define UC_5_N_SOURCES 3 - -/* Dataset dimensions */ -#define UC_5_SRC_PLANES 3 -#define UC_5_HEIGHT 4 -#define UC_5_WIDTH 4 - -/* max number of planes for datasets */ -#define UC_5_MAX_PLANES H5S_UNLIMITED -#define UC_5_N_TEST_PLANES 9 /* number of planes in VDS */ - -/* Dataset datatypes */ -#define UC_5_SOURCE_DATATYPE H5T_STD_I32LE -#define UC_5_VDS_DATATYPE H5T_STD_I32LE - -/* Starting size of datasets, both source and VDS */ -static hsize_t UC_5_SOURCE_DIMS[RANK] = {0, UC_5_HEIGHT, UC_5_WIDTH}; -static hsize_t UC_5_VDS_DIMS[RANK] = {0, UC_5_HEIGHT, UC_5_WIDTH}; - -/* Max size of datasets, both source and VDS */ -static hsize_t UC_5_SOURCE_MAX_DIMS[RANK] = {UC_5_MAX_PLANES, UC_5_HEIGHT, UC_5_WIDTH}; -static hsize_t UC_5_VDS_MAX_DIMS[RANK] = {UC_5_MAX_PLANES, UC_5_HEIGHT, UC_5_WIDTH}; - -/* Planes (both source and VDS) */ -static hsize_t UC_5_PLANE[RANK] = {1, UC_5_HEIGHT, UC_5_WIDTH}; - -/* File names for source datasets */ -static char UC_5_FILE_NAMES[UC_5_N_SOURCES][NAME_LEN] = { - {"5_a.h5"}, - {"5_b.h5"}, - {"5_c.h5"} -}; - -/* VDS file name */ -static char UC_5_VDS_FILE_NAME[NAME_LEN] = "5_vds.h5"; - -/* Dataset names */ -static char UC_5_SOURCE_DSET_NAME[NAME_LEN] = "source_dset"; -static char UC_5_SOURCE_DSET_PATH[NAME_LEN] = "/source_dset"; -static char UC_5_VDS_DSET_NAME[NAME_LEN] = "vds_dset"; - -/* Fill values */ -static int UC_5_FILL_VALUES[UC_5_N_SOURCES] = { - -1, - -2, - -3 -}; -static int UC_5_VDS_FILL_VALUE = -9; - -#endif /* UC_5_H */ - diff --git a/tools/misc/vds/UC_5_stride_gen.c b/tools/misc/vds/UC_5_stride_gen.c deleted file mode 100644 index 38d24a6..0000000 --- a/tools/misc/vds/UC_5_stride_gen.c +++ /dev/null @@ -1,243 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * File/dataset generator for VDS use case 5 - * - * See the header file for a description. - */ - -#include - -#include - -#include "UC_common.h" -#include "UC_5.h" - -int -main(void) -{ - hid_t src_sid = -1; /* source dataset's dataspace ID */ - hid_t src_dcplid = -1; /* source dataset property list ID */ - - hid_t vds_sid = -1; /* VDS dataspace ID */ - hid_t vds_dcplid = -1; /* VDS dataset property list ID */ - - hid_t fid = -1; /* HDF5 file ID */ - hid_t did = -1; /* dataset ID */ - hid_t msid = -1; /* memory dataspace ID */ - hid_t fsid = -1; /* file dataspace ID */ - - hsize_t extent[RANK]; /* source dataset extents */ - hsize_t start[RANK]; /* starting point for hyperslab */ - hsize_t stride[RANK]; /* hypserslab stride */ - hsize_t count[RANK]; /* hypserslab count */ - hsize_t map_start = 0; /* starting point in the VDS map */ - - int *buffer = NULL; /* data buffer */ - int value = -1; /* value written to datasets */ - - hsize_t n = 0; /* number of elements in a plane */ - - int i; /* iterator */ - int j; /* iterator */ - hsize_t k; /* iterator */ - - /* Start by creating the virtual dataset (VDS) dataspace and creation - * property list. The individual source datasets are then created - * and the VDS map (stored in the VDS property list) is updated. - */ - - /* Create VDS dcpl */ - if((vds_dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) - UC_ERROR - if(H5Pset_fill_value(vds_dcplid, UC_5_VDS_DATATYPE, - &UC_5_VDS_FILL_VALUE) < 0) - UC_ERROR - - /* Create VDS dataspace */ - if((vds_sid = H5Screate_simple(RANK, UC_5_VDS_DIMS, - UC_5_VDS_MAX_DIMS)) < 0) - UC_ERROR - - /********************************* - * Map source files and datasets * - *********************************/ - - /* Hyperslab array setup */ - start[0] = 0; - start[1] = 0; - start[2] = 0; - map_start = 0; - - stride[0] = UC_5_N_SOURCES; - stride[1] = 1; - stride[2] = 1; - - count[0] = H5S_UNLIMITED; - count[1] = 1; - count[2] = 1; - - extent[0] = UC_5_SRC_PLANES; - extent[1] = UC_5_HEIGHT; - extent[2] = UC_5_WIDTH; - - for(i = 0; i < UC_5_N_SOURCES; i++) { - - /* source dataset dcpl */ - if((src_dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) - UC_ERROR - if(H5Pset_chunk(src_dcplid, RANK, UC_5_PLANE) < 0) - UC_ERROR - if(H5Pset_fill_value(src_dcplid, UC_5_SOURCE_DATATYPE, - &UC_5_FILL_VALUES[i]) < 0) - UC_ERROR - if(H5Pset_deflate(src_dcplid, COMPRESSION_LEVEL) < 0) - UC_ERROR - - /* Create source file, dataspace, and dataset */ - if((fid = H5Fcreate(UC_5_FILE_NAMES[i], H5F_ACC_TRUNC, - H5P_DEFAULT, H5P_DEFAULT)) < 0) - UC_ERROR - if((src_sid = H5Screate_simple(RANK, UC_5_SOURCE_DIMS, - UC_5_SOURCE_MAX_DIMS)) < 0) - UC_ERROR - if((did = H5Dcreate2(fid, UC_5_SOURCE_DSET_NAME, - UC_5_SOURCE_DATATYPE, src_sid, - H5P_DEFAULT, src_dcplid, H5P_DEFAULT)) < 0) - UC_ERROR - - /* Set the dataset's extent */ - if(H5Dset_extent(did, extent) < 0) - UC_ERROR - - /* Create a data buffer that represents a plane */ - n = UC_5_PLANE[1] * UC_5_PLANE[2]; - if(NULL == (buffer = (int *)malloc(n * sizeof(int)))) - UC_ERROR - - /* Create the memory dataspace */ - if((msid = H5Screate_simple(RANK, UC_5_PLANE, NULL)) < 0) - UC_ERROR - - /* Get the file dataspace */ - if((fsid = H5Dget_space(did)) < 0) - UC_ERROR - - /* Write planes to the dataset */ - for(j = 0; j < UC_5_SRC_PLANES; j++) { - - value = ((i + 1) * 10) + j; - for(k = 0; k < n; k++) - buffer[k] = value; - - start[0] = (hsize_t)j; - start[1] = 0; - start[2] = 0; - if(H5Sselect_hyperslab(fsid, H5S_SELECT_SET, start, NULL, UC_5_PLANE, NULL) < 0) - UC_ERROR - if(H5Dwrite(did, H5T_NATIVE_INT, msid, fsid, H5P_DEFAULT, buffer) < 0) - UC_ERROR - - } /* end for */ - - /* set up hyperslabs for source and destination datasets */ - start[0] = 0; - start[1] = 0; - start[2] = 0; - if(H5Sselect_hyperslab(src_sid, H5S_SELECT_SET, start, NULL, - UC_5_SOURCE_MAX_DIMS, NULL) < 0) - UC_ERROR - start[0] = map_start; - if(H5Sselect_hyperslab(vds_sid, H5S_SELECT_SET, start, stride, - count, UC_5_PLANE) < 0) - UC_ERROR - map_start += 1; - - /* Add VDS mapping */ - if(H5Pset_virtual(vds_dcplid, vds_sid, UC_5_FILE_NAMES[i], - UC_5_SOURCE_DSET_PATH, src_sid) < 0) - UC_ERROR - - /* close */ - if(H5Sclose(msid) < 0) - UC_ERROR - if(H5Sclose(fsid) < 0) - UC_ERROR - if(H5Sclose(src_sid) < 0) - UC_ERROR - if(H5Pclose(src_dcplid) < 0) - UC_ERROR - if(H5Dclose(did) < 0) - UC_ERROR - if(H5Fclose(fid) < 0) - UC_ERROR - free(buffer); - - } /* end for */ - - /******************* - * Create VDS file * - *******************/ - - /* file */ - if((fid = H5Fcreate(UC_5_VDS_FILE_NAME, H5F_ACC_TRUNC, - H5P_DEFAULT, H5P_DEFAULT)) < 0) - UC_ERROR - - /* dataset */ - if((did = H5Dcreate2(fid, UC_5_VDS_DSET_NAME, UC_5_VDS_DATATYPE, vds_sid, - H5P_DEFAULT, vds_dcplid, H5P_DEFAULT)) < 0) - UC_ERROR - - /* close */ - if(H5Pclose(vds_dcplid) < 0) - UC_ERROR - if(H5Sclose(vds_sid) < 0) - UC_ERROR - if(H5Dclose(did) < 0) - UC_ERROR - if(H5Fclose(fid) < 0) - UC_ERROR - - return EXIT_SUCCESS; - -error: - - H5E_BEGIN_TRY { - if(src_sid >= 0) - (void)H5Sclose(src_sid); - if(src_dcplid >= 0) - (void)H5Pclose(src_dcplid); - if(vds_sid >= 0) - (void)H5Sclose(vds_sid); - if(vds_dcplid >= 0) - (void)H5Pclose(vds_dcplid); - if(fid >= 0) - (void)H5Fclose(fid); - if(did >= 0) - (void)H5Dclose(did); - if(msid >= 0) - (void)H5Sclose(msid); - if(fsid >= 0) - (void)H5Sclose(fsid); - if(buffer != NULL) - free(buffer); - } H5E_END_TRY - - return EXIT_FAILURE; - -} /* end main() */ - diff --git a/tools/misc/vds/UC_common.h b/tools/misc/vds/UC_common.h deleted file mode 100644 index 0e61016..0000000 --- a/tools/misc/vds/UC_common.h +++ /dev/null @@ -1,41 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#ifndef USE_CASE_COMMON_H -#define USE_CASE_COMMON_H - -/****************************************** - * Symbols used across multiple use cases * - ******************************************/ - -/* All datasets are 3D */ -#define RANK 3 - -/* Lengths of string identifiers (file, dataset names, etc.) */ -#define NAME_LEN 32 - -/* Compression level */ -#define COMPRESSION_LEVEL 7 - -/* Booleans */ -#define TRUE 1 -#define FALSE 0 - -/* Testing macros */ -#define AT() printf (" at %s:%d in %s()...\n", __FILE__, __LINE__, __func__); -#define UC_ERROR {puts("*ERROR*"); fflush(stdout); AT(); goto error;} - -#endif /* USE_CASE_COMMON_H */ - diff --git a/tools/perform/CMakeLists.txt b/tools/perform/CMakeLists.txt deleted file mode 100644 index 0a38b21..0000000 --- a/tools/perform/CMakeLists.txt +++ /dev/null @@ -1,126 +0,0 @@ -cmake_minimum_required (VERSION 3.1.0) -PROJECT (HDF5_PERFORM ) - -#----------------------------------------------------------------------------- -# Apply Definitions to compiler in this directory and below -#----------------------------------------------------------------------------- -add_definitions (${HDF_EXTRA_C_FLAGS}) - -#----------------------------------------------------------------------------- -# Setup include Directories -#----------------------------------------------------------------------------- -INCLUDE_DIRECTORIES (${HDF5_TEST_SRC_DIR}) -INCLUDE_DIRECTORIES (${HDF5_TOOLS_DIR}/lib ) - -# -------------------------------------------------------------------- -# Add the executables -# -------------------------------------------------------------------- -#-- Adding test for h5perf_serial -set (h5perf_serial_SOURCES - ${HDF5_PERFORM_SOURCE_DIR}/sio_perf.c - ${HDF5_PERFORM_SOURCE_DIR}/sio_engine.c -) -add_executable (h5perf_serial ${h5perf_serial_SOURCES}) -TARGET_NAMING (h5perf_serial STATIC) -TARGET_C_PROPERTIES (h5perf_serial STATIC " " " ") -target_link_libraries (h5perf_serial ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) -set_target_properties (h5perf_serial PROPERTIES FOLDER perform) - -if (HDF5_BUILD_PERFORM_STANDALONE) - #-- Adding test for h5perf_serial_alone - set (h5perf_serial_alone_SOURCES - ${HDF5_PERFORM_SOURCE_DIR}/sio_perf.c - ${HDF5_PERFORM_SOURCE_DIR}/sio_engine.c - ) - add_executable (h5perf_serial_alone ${h5perf_serial_alone_SOURCES}) - TARGET_NAMING (h5perf_serial_alone STATIC) - TARGET_C_PROPERTIES (h5perf_serial_alone STATIC " " " ") - target_link_libraries (h5perf_serial_alone ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) - set_target_properties (h5perf_serial_alone PROPERTIES FOLDER perform) - set_property (TARGET h5perf_serial_alone - APPEND PROPERTY COMPILE_DEFINITIONS STANDALONE - ) -endif (HDF5_BUILD_PERFORM_STANDALONE) - -#-- Adding test for chunk -set (chunk_SOURCES - ${HDF5_PERFORM_SOURCE_DIR}/chunk.c -) -ADD_EXECUTABLE(chunk ${chunk_SOURCES}) -TARGET_NAMING (chunk STATIC) -TARGET_C_PROPERTIES (chunk STATIC " " " ") -TARGET_LINK_LIBRARIES(chunk ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) -set_target_properties (chunk PROPERTIES FOLDER perform) - -#-- Adding test for iopipe -set (iopipe_SOURCES - ${HDF5_PERFORM_SOURCE_DIR}/iopipe.c -) -add_executable (iopipe ${iopipe_SOURCES}) -TARGET_NAMING (iopipe STATIC) -TARGET_C_PROPERTIES (iopipe STATIC " " " ") -target_link_libraries (iopipe ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) -set_target_properties (iopipe PROPERTIES FOLDER perform) - -#-- Adding test for overhead -set (overhead_SOURCES - ${HDF5_PERFORM_SOURCE_DIR}/overhead.c -) -add_executable (overhead ${overhead_SOURCES}) -TARGET_NAMING (overhead STATIC) -TARGET_C_PROPERTIES (overhead STATIC " " " ") -target_link_libraries (overhead ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) -set_target_properties (overhead PROPERTIES FOLDER perform) - -if (BUILD_TESTING) -#-- Adding test for perf_meta - set (perf_meta_SOURCES - ${HDF5_PERFORM_SOURCE_DIR}/perf_meta.c - ) - add_executable (perf_meta ${perf_meta_SOURCES}) - TARGET_NAMING (perf_meta STATIC) - TARGET_C_PROPERTIES (perf_meta STATIC " " " ") - target_link_libraries (perf_meta ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET}) - set_target_properties (perf_meta PROPERTIES FOLDER perform) -endif (BUILD_TESTING) - -#-- Adding test for zip_perf -set (zip_perf_SOURCES - ${HDF5_PERFORM_SOURCE_DIR}/zip_perf.c -) -add_executable (zip_perf ${zip_perf_SOURCES}) -TARGET_NAMING (zip_perf STATIC) -TARGET_C_PROPERTIES (zip_perf STATIC " " " ") -target_link_libraries (zip_perf ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) -set_target_properties (zip_perf PROPERTIES FOLDER perform) - -if (H5_HAVE_PARALLEL AND BUILD_TESTING) - #-- Adding test for h5perf - set (h5perf_SOURCES - ${HDF5_PERFORM_SOURCE_DIR}/pio_perf.c - ${HDF5_PERFORM_SOURCE_DIR}/pio_engine.c - ) - add_executable (h5perf ${h5perf_SOURCES}) - TARGET_NAMING (h5perf STATIC) - TARGET_C_PROPERTIES (h5perf STATIC " " " ") - target_link_libraries (h5perf ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET}) - set_target_properties (h5perf PROPERTIES FOLDER perform) - - if (HDF5_BUILD_PERFORM_STANDALONE) - #-- Adding test for h5perf - set (h5perf_alone_SOURCES - ${HDF5_PERFORM_SOURCE_DIR}/pio_perf.c - ${HDF5_PERFORM_SOURCE_DIR}/pio_engine.c - ) - add_executable (h5perf_alone ${h5perf_alone_SOURCES}) - TARGET_NAMING (h5perf_alone STATIC) - TARGET_C_PROPERTIES (h5perf_alone STATIC " " " ") - target_link_libraries (h5perf_alone ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET}) - set_target_properties (h5perf_alone PROPERTIES FOLDER perform) - set_property (TARGET h5perf_alone - APPEND PROPERTY COMPILE_DEFINITIONS STANDALONE - ) - endif (HDF5_BUILD_PERFORM_STANDALONE) -endif (H5_HAVE_PARALLEL AND BUILD_TESTING) - -include (CMakeTests.cmake) diff --git a/tools/perform/CMakeTests.cmake b/tools/perform/CMakeTests.cmake deleted file mode 100644 index 0ea40a3..0000000 --- a/tools/perform/CMakeTests.cmake +++ /dev/null @@ -1,54 +0,0 @@ - -############################################################################## -############################################################################## -### T E S T I N G ### -############################################################################## -############################################################################## - -HDFTEST_COPY_FILE("${HDF5_TOOLS_DIR}/testfiles/tfilters.h5" "${PROJECT_BINARY_DIR}/tfilters.h5" "zip_perf_files") -add_custom_target(zip_perf_files ALL COMMENT "Copying files needed by zip_perf tests" DEPENDS ${zip_perf_list}) - -#----------------------------------------------------------------------------- -# Add Tests -#----------------------------------------------------------------------------- - -# Remove any output file left over from previous test run -add_test ( - NAME PERFORM_h5perform-clear-objects - COMMAND ${CMAKE_COMMAND} - -E remove - chunk.h5 - iopipe.h5 - iopipe.raw - x-diag-rd.dat - x-diag-wr.dat - x-rowmaj-rd.dat - x-rowmaj-wr.dat - x-gnuplot -) - -add_test (NAME PERFORM_h5perf_serial COMMAND $) -set_tests_properties (PERFORM_h5perf_serial PROPERTIES TIMEOUT 1800) - -if (HDF5_BUILD_PERFORM_STANDALONE) - add_test (NAME PERFORM_h5perf_serial_alone COMMAND $) -endif (HDF5_BUILD_PERFORM_STANDALONE) - -add_test (NAME PERFORM_chunk COMMAND $) - -add_test (NAME PERFORM_iopipe COMMAND $) - -add_test (NAME PERFORM_overhead COMMAND $) - -add_test (NAME PERFORM_perf_meta COMMAND $) - -add_test (NAME PERFORM_zip_perf_help COMMAND $ "-h") -add_test (NAME PERFORM_zip_perf COMMAND $ tfilters.h5) - -if (H5_HAVE_PARALLEL) - add_test (NAME PERFORM_h5perf COMMAND ${MPIEXEC} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_POSTFLAGS} $) - - if (HDF5_BUILD_PERFORM_STANDALONE) - add_test (NAME PERFORM_h5perf_alone COMMAND ${MPIEXEC} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_POSTFLAGS} $) - endif (HDF5_BUILD_PERFORM_STANDALONE) -endif (H5_HAVE_PARALLEL) diff --git a/tools/perform/COPYING b/tools/perform/COPYING deleted file mode 100644 index 6903daf..0000000 --- a/tools/perform/COPYING +++ /dev/null @@ -1,16 +0,0 @@ - - Copyright by The HDF Group and - The Board of Trustees of the University of Illinois. - All rights reserved. - - The files and subdirectories in this directory are part of HDF5. - The full HDF5 copyright notice, including terms governing use, - modification, and redistribution, is contained in the files COPYING - and Copyright.html. COPYING can be found at the root of the source - code distribution tree; Copyright.html can be found at the root - level of an installed copy of the electronic HDF5 document set and - is linked from the top-level documents page. It can also be found - at http://www.hdfgroup.org/HDF5/doc/Copyright.html. If you do not - have access to either file, you may request a copy from - help@hdfgroup.org. - diff --git a/tools/perform/Makefile.am b/tools/perform/Makefile.am deleted file mode 100644 index 1af0e7f..0000000 --- a/tools/perform/Makefile.am +++ /dev/null @@ -1,79 +0,0 @@ -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -## -## Makefile.am -## Run automake to generate a Makefile.in from this file. -## -# -# HDF5 Library Performance Makefile(.in) -# - -include $(top_srcdir)/config/commence.am - -AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/test -I$(top_srcdir)/tools/lib - -# bin_PROGRAMS will be installed. -if BUILD_PARALLEL_CONDITIONAL - bin_PROGRAMS=h5perf_serial h5perf -else - bin_PROGRAMS=h5perf_serial -endif - -# Add h5perf and h5perf_serial specific linker flags here -h5perf_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) -h5perf_serial_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) - -# Some programs are not built or run by default, but can be built by hand or by -# specifying --enable-build-all at configure time. -# Also, some of these programs should only be built in parallel. -# Currently there is no such program. -if BUILD_PARALLEL_CONDITIONAL - PARA_BUILD_ALL= -endif -if BUILD_ALL_CONDITIONAL - BUILD_ALL_PROGS=$(PARA_BUILD_ALL) -endif - -# Define programs that will be run in 'make check' -# List them in the order they should be run. -# Parallel test programs. -if BUILD_PARALLEL_CONDITIONAL - TEST_PROG_PARA=h5perf perf -endif -# Serial test programs. -TEST_PROG = iopipe chunk overhead zip_perf perf_meta h5perf_serial $(BUILD_ALL_PROGS) - -# check_PROGRAMS will be built but not installed. Do not any executable -# that is in bin_PROGRAMS already. Otherwise, it will be removed twice in -# "make clean" and some systems, e.g., AIX, do not like it. -check_PROGRAMS= iopipe chunk overhead zip_perf perf_meta $(BUILD_ALL_PROGS) perf - -h5perf_SOURCES=pio_perf.c pio_engine.c -h5perf_serial_SOURCES=sio_perf.c sio_engine.c - -# These are the files that `make clean' (and derivatives) will remove from -# this directory. -CLEANFILES=*.h5 *.raw *.dat x-gnuplot perftest.out - -# All of the programs depend on the main hdf5 library, and some of them -# depend on test or tools library. -LDADD=$(LIBHDF5) -h5perf_LDADD=$(LIBH5TOOLS) $(LIBH5TEST) $(LIBHDF5) -h5perf_serial_LDADD=$(LIBH5TOOLS) $(LIBH5TEST) $(LIBHDF5) -perf_LDADD=$(LIBH5TEST) $(LIBHDF5) -iopipe_LDADD=$(LIBH5TEST) $(LIBHDF5) -zip_perf_LDADD=$(LIBH5TOOLS) $(LIBH5TEST) $(LIBHDF5) -perf_meta_LDADD=$(LIBH5TEST) $(LIBHDF5) - -include $(top_srcdir)/config/conclude.am diff --git a/tools/perform/build_h5perf_alone.sh b/tools/perform/build_h5perf_alone.sh deleted file mode 100755 index b65e863..0000000 --- a/tools/perform/build_h5perf_alone.sh +++ /dev/null @@ -1,28 +0,0 @@ -#! /bin/sh -x -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -# -# Name: build_h5perf_alone.sh -# -# Puporse: Build the h5perf tool by standalone mode. -# -# Created: Albert Cheng, 2005/09/18 -# -# Modification: -# - -# Default to use h5pcc to build h5perf unless $H5CC is defined. -# -h5pcc=${H5CC:-h5pcc} -$h5pcc -DSTANDALONE pio_perf.c pio_engine.c pio_timer.c -o h5perf diff --git a/tools/perform/build_h5perf_serial_alone.sh b/tools/perform/build_h5perf_serial_alone.sh deleted file mode 100755 index 2566609..0000000 --- a/tools/perform/build_h5perf_serial_alone.sh +++ /dev/null @@ -1,28 +0,0 @@ -#! /bin/sh -x -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -# -# Name: build_h5perf_serial_alone.sh -# -# Puporse: Build the h5perf_serial tool by standalone mode. -# -# Created: Christian Chilan, 2008/09/02 -# -# Modification: -# - -# Default to use h5cc to build h5perf_serial unless $H5CC is defined. -# -h5cc=${H5CC:-h5cc} -$h5cc -DSTANDALONE sio_perf.c sio_engine.c sio_timer.c -o h5perf_serial diff --git a/tools/perform/chunk.c b/tools/perform/chunk.c deleted file mode 100644 index b1419ee..0000000 --- a/tools/perform/chunk.c +++ /dev/null @@ -1,550 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * Programmer: Robb Matzke - * Thursday, May 14, 1998 - * - * Purpose: Checks the effect of various I/O request sizes and raw data - * cache sizes. Performance depends on the amount of data read - * from disk and we use a filter to get that number. - */ - -/* See H5private.h for how to include headers */ -#undef NDEBUG -#include "hdf5.h" - -#ifdef H5_STDC_HEADERS -# include -# include -# include -# include -#endif - -/* Solaris Studio defines attribute, but for the attributes we need */ -#if !defined(H5_HAVE_ATTRIBUTE) || defined __cplusplus || defined(__SUNPRO_C) -# undef __attribute__ -# define __attribute__(X) /*void*/ -# define H5_ATTR_UNUSED /*void*/ -#else -# define H5_ATTR_UNUSED __attribute__((unused)) -#endif - -#define FILE_NAME "chunk.h5" -#define LINESPOINTS "lines" -#define CH_SIZE 100 /*squared in terms of bytes */ -#define DS_SIZE 20 /*squared in terms of chunks */ -#define FILTER_COUNTER 305 -#define READ 0 -#define WRITE 1 -#define MIN(X,Y) ((X)<(Y)?(X):(Y)) -#define MAX(X,Y) ((X)>(Y)?(X):(Y)) -#define SQUARE(X) ((X)*(X)) - -/* The row-major test */ -#define RM_CACHE_STRT 25 -#define RM_CACHE_END 25 -#define RM_CACHE_DELT 5 -#define RM_START (double)0.50F -#define RM_END (double)5.00F -#define RM_DELTA (double)0.50F -#define RM_W0 0.0F -#define RM_NRDCC 521 - -/* Diagonal test */ -#define DIAG_CACHE_STRT 25 -#define DIAG_CACHE_END 25 -#define DIAG_CACHE_DELT 5 -#define DIAG_START (double)0.50F -#define DIAG_END (double)5.00F -#define DIAG_DELTA (double)0.50F -/* #define DIAG_W0 0.65F */ -/* #define DIAG_NRDCC 521 */ - -static size_t nio_g; -static hid_t fapl_g = -1; - -/* Local function prototypes */ -static size_t -counter (unsigned H5_ATTR_UNUSED flags, size_t cd_nelmts, - const unsigned *cd_values, size_t nbytes, - size_t *buf_size, void **buf); - -/* This message derives from H5Z */ -const H5Z_class2_t H5Z_COUNTER[1] = {{ - H5Z_CLASS_T_VERS, /* H5Z_class_t version */ - FILTER_COUNTER, /* Filter id number */ - 1, 1, /* Encoding and decoding enabled */ - "counter", /* Filter name for debugging */ - NULL, /* The "can apply" callback */ - NULL, /* The "set local" callback */ - counter, /* The actual filter function */ -}}; - - -/*------------------------------------------------------------------------- - * Function: counter - * - * Purpose: Count number of bytes but don't do anything. - * - * Return: Success: src_nbytes-1 - * - * Failure: never fails - * - * Programmer: Robb Matzke - * Thursday, May 14, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static size_t -counter (unsigned H5_ATTR_UNUSED flags, size_t H5_ATTR_UNUSED cd_nelmts, - const unsigned H5_ATTR_UNUSED *cd_values, size_t nbytes, - size_t H5_ATTR_UNUSED *buf_size, void H5_ATTR_UNUSED **buf) -{ - nio_g += nbytes; - return nbytes; -} - - -/*------------------------------------------------------------------------- - * Function: create_dataset - * - * Purpose: Creates a square dataset with square chunks, registers a - * stupid compress/uncompress pair for counting I/O, and - * initializes the dataset. The chunk size is in bytes, the - * dataset size is in terms of chunks. - * - * Return: void - * - * Programmer: Robb Matzke - * Thursday, May 14, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -create_dataset (void) -{ - hid_t file, space, dcpl, dset; - hsize_t size[2]; - signed char *buf; - - /* The file */ - file = H5Fcreate (FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_g); - - /* The data space */ - size[0] = size[1] = DS_SIZE * CH_SIZE; - space = H5Screate_simple(2, size, size); - - /* The storage layout and compression */ - dcpl = H5Pcreate(H5P_DATASET_CREATE); - size[0] = size[1] = CH_SIZE; - H5Pset_chunk(dcpl, 2, size); - H5Zregister(H5Z_COUNTER); - H5Pset_filter(dcpl, FILTER_COUNTER, 0, 0, NULL); - - /* The dataset */ - dset = H5Dcreate2(file, "dset", H5T_NATIVE_SCHAR, space, H5P_DEFAULT, dcpl, H5P_DEFAULT); - assert(dset>=0); - - /* The data */ - buf = (signed char *)calloc(1, SQUARE (DS_SIZE*CH_SIZE)); - H5Dwrite(dset, H5T_NATIVE_SCHAR, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - free(buf); - - /* Close */ - H5Dclose(dset); - H5Sclose(space); - H5Pclose(dcpl); - H5Fclose(file); -} - - -/*------------------------------------------------------------------------- - * Function: test_rowmaj - * - * Purpose: Reads the entire dataset using the specified size-squared - * I/O requests in row major order. - * - * Return: Efficiency: data requested divided by data actually read. - * - * Programmer: Robb Matzke - * Thursday, May 14, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static double -test_rowmaj (int op, size_t cache_size, size_t io_size) -{ - hid_t file, dset, mem_space, file_space; - signed char *buf = (signed char *)calloc (1, (size_t)(SQUARE(io_size))); - hsize_t i, j, hs_size[2]; - hsize_t hs_offset[2]; - int mdc_nelmts; - size_t rdcc_nelmts; - double w0; - - H5Pget_cache (fapl_g, &mdc_nelmts, &rdcc_nelmts, NULL, &w0); -#ifdef RM_W0 - w0 = RM_W0; -#endif -#ifdef RM_NRDCC - rdcc_nelmts = RM_NRDCC; -#endif - H5Pset_cache (fapl_g, mdc_nelmts, rdcc_nelmts, - cache_size*SQUARE (CH_SIZE), w0); - file = H5Fopen(FILE_NAME, H5F_ACC_RDWR, fapl_g); - dset = H5Dopen2(file, "dset", H5P_DEFAULT); - file_space = H5Dget_space(dset); - nio_g = 0; - - for (i=0; i0) nio -= SQUARE (io_size-offset); - } - - free (buf); - H5Sclose (file_space); - H5Dclose (dset); - H5Fclose (file); - - /* - * The extra cast in the following statement is a bug workaround for the - * Win32 version 5.0 compiler. - * 1998-11-06 ptl - */ - return (double)nio/(double)nio_g; -} - - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: See file prologue. - * - * Return: Success: - * - * Failure: - * - * Programmer: Robb Matzke - * Thursday, May 14, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -int -main (void) -{ - size_t io_size; - double effic, io_percent; - FILE *f, *d; - size_t cache_size; - double w0; - - /* - * Create a global file access property list. - */ - fapl_g = H5Pcreate (H5P_FILE_ACCESS); - H5Pget_cache (fapl_g, NULL, NULL, NULL, &w0); - - /* Create the file */ - create_dataset (); - f = fopen ("x-gnuplot", "w"); - - printf("Test %8s %8s %8s\n", "CacheSz", "ChunkSz", "Effic"); - printf("--------- -------- -------- --------\n"); - -#if 1 - /* - * Test row-major reading of the dataset with various sizes of request - * windows. - */ - if (RM_CACHE_STRT==RM_CACHE_END) { - fprintf (f, "set yrange [0:1.2]\n"); - fprintf (f, "set ytics 0, 0.1, 1\n"); - fprintf (f, "set xlabel \"%s\"\n", - "Request size as a fraction of chunk size"); - fprintf (f, "set ylabel \"Efficiency\"\n"); - fprintf (f, "set title \"Cache %d chunks, w0=%g, " - "Size=(total=%d, chunk=%d)\"\n", - RM_CACHE_STRT, w0, DS_SIZE*CH_SIZE, CH_SIZE); - } else { - fprintf (f, "set autoscale\n"); - fprintf (f, "set hidden3d\n"); - } - - fprintf (f, "set terminal postscript\nset output \"x-rowmaj-rd.ps\"\n"); - fprintf (f, "%s \"x-rowmaj-rd.dat\" title \"RowMaj-Read\" with %s\n", - RM_CACHE_STRT==RM_CACHE_END?"plot":"splot", - LINESPOINTS); - fprintf (f, "set terminal x11\nreplot\n"); - d = fopen ("x-rowmaj-rd.dat", "w"); - for (cache_size=RM_CACHE_STRT; - cache_size<=RM_CACHE_END; - cache_size+=RM_CACHE_DELT) { - for (io_percent=RM_START; io_percent<=RM_END; io_percent+=RM_DELTA) { - io_size = MAX (1, (size_t)(CH_SIZE*io_percent)); - printf ("Rowmaj-rd %8d %8.2f", (int)cache_size, io_percent); - fflush (stdout); - effic = test_rowmaj (READ, cache_size, io_size); - printf (" %8.2f\n", effic); - if (RM_CACHE_STRT==RM_CACHE_END) { - fprintf (d, "%g %g\n", io_percent, effic); - } else { - fprintf (d, "%g\n", effic); - } - } - fprintf (d, "\n"); - } - fclose (d); - fprintf (f, "pause -1\n"); -#endif - -#if 1 - /* - * Test row-major writing of the dataset with various sizes of request - * windows. - */ - if (RM_CACHE_STRT==RM_CACHE_END) { - fprintf (f, "set yrange [0:1.2]\n"); - fprintf (f, "set ytics 0, 0.1, 1\n"); - fprintf (f, "set xlabel \"%s\"\n", - "Request size as a fraction of chunk size"); - fprintf (f, "set ylabel \"Efficiency\"\n"); - fprintf (f, "set title \"Cache %d chunks,w0=%g, " - "Size=(total=%d, chunk=%d)\"\n", - RM_CACHE_STRT, w0, DS_SIZE*CH_SIZE, CH_SIZE); - } else { - fprintf (f, "set autoscale\n"); - fprintf (f, "set hidden3d\n"); - } - - fprintf (f, "set terminal postscript\nset output \"x-rowmaj-wr.ps\"\n"); - fprintf (f, "%s \"x-rowmaj-wr.dat\" title \"RowMaj-Write\" with %s\n", - RM_CACHE_STRT==RM_CACHE_END?"plot":"splot", - LINESPOINTS); - fprintf (f, "set terminal x11\nreplot\n"); - d = fopen ("x-rowmaj-wr.dat", "w"); - for (cache_size=RM_CACHE_STRT; - cache_size<=RM_CACHE_END; - cache_size+=RM_CACHE_DELT) { - for (io_percent=RM_START; io_percent<=RM_END; io_percent+=RM_DELTA) { - io_size = MAX (1, (size_t)(CH_SIZE*io_percent)); - printf ("Rowmaj-wr %8d %8.2f", (int)cache_size, io_percent); - fflush (stdout); - effic = test_rowmaj (WRITE, cache_size, io_size); - printf (" %8.2f\n", effic); - if (RM_CACHE_STRT==RM_CACHE_END) { - fprintf (d, "%g %g\n", io_percent, effic); - } else { - fprintf (d, "%g\n", effic); - } - } - fprintf (d, "\n"); - } - fclose (d); - fprintf (f, "pause -1\n"); -#endif - -#if 1 - /* - * Test diagonal read - */ - if (DIAG_CACHE_STRT==DIAG_CACHE_END) { - fprintf (f, "set yrange [0:1.2]\n"); - fprintf (f, "set ytics 0, 0.1, 1\n"); - fprintf (f, "set xlabel \"%s\"\n", - "Request size as a fraction of chunk size"); - fprintf (f, "set ylabel \"Efficiency\"\n"); - fprintf (f, "set title \"Cache %d chunks,w0=%g, " - "Size=(total=%d, chunk=%d)\"\n", - DIAG_CACHE_STRT, w0, DS_SIZE*CH_SIZE, CH_SIZE); - } else { - fprintf (f, "set autoscale\n"); - fprintf (f, "set hidden3d\n"); - } - fprintf (f, "set terminal postscript\nset output \"x-diag-rd.ps\"\n"); - fprintf (f, "%s \"x-diag-rd.dat\" title \"Diag-Read\" with %s\n", - DIAG_CACHE_STRT==DIAG_CACHE_END?"plot":"splot", LINESPOINTS); - fprintf (f, "set terminal x11\nreplot\n"); - d = fopen ("x-diag-rd.dat", "w"); - for (cache_size=DIAG_CACHE_STRT; - cache_size<=DIAG_CACHE_END; - cache_size+=DIAG_CACHE_DELT) { - for (io_percent=DIAG_START; io_percent<=DIAG_END; io_percent+=DIAG_DELTA) { - io_size = MAX (1, (size_t)(CH_SIZE*io_percent)); - printf ("Diag-rd %8d %8.2f", (int)cache_size, io_percent); - fflush (stdout); - effic = test_diag (READ, cache_size, io_size, MAX (1, io_size/2)); - printf (" %8.2f\n", effic); - if (DIAG_CACHE_STRT==DIAG_CACHE_END) { - fprintf (d, "%g %g\n", io_percent, effic); - } else { - fprintf (d, "%g\n", effic); - } - } - fprintf (d, "\n"); - } - fclose (d); - fprintf (f, "pause -1\n"); -#endif - -#if 1 - /* - * Test diagonal write - */ - if (DIAG_CACHE_STRT==DIAG_CACHE_END) { - fprintf (f, "set yrange [0:1.2]\n"); - fprintf (f, "set ytics 0, 0.1, 1\n"); - fprintf (f, "set xlabel \"%s\"\n", - "Request size as a fraction of chunk size"); - fprintf (f, "set ylabel \"Efficiency\"\n"); - fprintf (f, "set title \"Cache %d chunks, w0=%g, " - "Size=(total=%d, chunk=%d)\"\n", - DIAG_CACHE_STRT, w0, DS_SIZE*CH_SIZE, CH_SIZE); - } else { - fprintf (f, "set autoscale\n"); - fprintf (f, "set hidden3d\n"); - } - fprintf (f, "set terminal postscript\nset output \"x-diag-wr.ps\"\n"); - fprintf (f, "%s \"x-diag-wr.dat\" title \"Diag-Write\" with %s\n", - DIAG_CACHE_STRT==DIAG_CACHE_END?"plot":"splot", LINESPOINTS); - fprintf (f, "set terminal x11\nreplot\n"); - d = fopen ("x-diag-wr.dat", "w"); - for (cache_size=DIAG_CACHE_STRT; - cache_size<=DIAG_CACHE_END; - cache_size+=DIAG_CACHE_DELT) { - for (io_percent=DIAG_START; - io_percent<=DIAG_END; - io_percent+=DIAG_DELTA) { - io_size = MAX (1, (size_t)(CH_SIZE*io_percent)); - printf ("Diag-wr %8d %8.2f", (int)cache_size, io_percent); - fflush (stdout); - effic = test_diag (WRITE, cache_size, io_size, MAX (1, io_size/2)); - printf (" %8.2f\n", effic); - if (DIAG_CACHE_STRT==DIAG_CACHE_END) { - fprintf (d, "%g %g\n", io_percent, effic); - } else { - fprintf (d, "%g\n", effic); - } - } - fprintf (d, "\n"); - } - fclose (d); - fprintf (f, "pause -1\n"); -#endif - - - H5Pclose (fapl_g); - fclose (f); - return 0; -} - diff --git a/tools/perform/gen_report.pl b/tools/perform/gen_report.pl deleted file mode 100755 index 285f5d7..0000000 --- a/tools/perform/gen_report.pl +++ /dev/null @@ -1,527 +0,0 @@ -#!/usr/bin/perl -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -# - -# -# Generates an ASCII and Excel-importable file of tables representing -# the output of running the "pio_perf" command. The name of the input -# file is important. The name should reflect the command-line options -# used in the performance test. It needs to be of the form: -# -# f#[GMK].i#.d#.X#[GMK].x#[GMK]..* -# -# For example: -# -# PIO_output_f1G.i2.d1.X2M.x128K.frost -# -# for a 1GB sized file ran for 2 iterations with 1 dataset from xfer -# buffer size of 128KB to 2MB on the frost machine. -# -# The output file will have the same name as the input, but will append -# ".ascii" for the ASCII file and ".excel" for the Excel-importable -# file. -# -# The data structure used in this program looks like: -# -# %results = { -# num_proc => ( -# %xfer_size => ( -# %posix = { -# 'write-only' => ##, -# 'write-close' => ##, -# 'read-only' => ##, -# 'read-close' => ## -# }, -# %mpio = { -# 'write-only' => ##, -# 'write-close' => ##, -# 'read-only' => ##, -# 'read-close' => ## -# }, -# %phdf = { -# 'write-only' => ##, -# 'write-close' => ##, -# 'read-only' => ##, -# 'read-close' => ## -# } -# ) -# ) -# } - -use IO::Handle; -use Getopt::Long; -use List::Util qw[max]; - -if ($#ARGV == -1) { - usage(); -} - -my ($ascii_output, $excel_output); - -GetOptions("data_type=s"=>\$data_type, - "buffer_size=i"=>\$transfer_buffer_size, - "procs=i"=>\$num_procs_graph, - "help!"=>\$help, - "throughput=s"=>\$throughput_type, - "io_type=i"=>\$io_type, - "3d!"=>\$plot_3d); - -usage() if $help or !@ARGV; - -$throughput_type = "average" if !$throughput_type; -$io_type = 7 if !$io_type; - -foreach my $arg (@ARGV) { - - if ($arg !~ /^-/) { - $arg =~ /f([0-9]+.)\.i([0-9]+)\.d([0-9]+)\.X([0-9]+.)\.x([0-9]+.)\.(.*)/; - - my $output = $arg . $1 . ".X" . $4 . ".x" . $5 . "." . $6; - - $ascii_output = $output . ".ascii"; - $excel_output = $output . ".excel"; - - open(INPUT, "<$arg") or die "error: cannot open file $arg: $!\n"; - open(ASCII_OUTPUT, ">$ascii_output") or - die "error: cannot open file $ascii_output: $!\n"; - open(EXCEL_OUTPUT, ">$excel_output") or - die "error: cannot open file $excel_output: $!\n"; - } - else - { - die "error: unrecognized option: $arg\n"; - } -} - -my %results; -my $num_procs = 0; -my ($xfer_size, $avg_type, $type); - -my $posix = 0, $mpio = 1, $phdf5 = 2; - -##"==== End of Parameters ====" - -while () { - if (/Number of processors = ([0-9]+)/) { - $num_procs = $1; - } - - if (/Transfer Buffer Size: ([0-9]+)/) { - $xfer_size = $1; - } - - $type = $posix if /POSIX/; - $type = $mpio if /MPIO/; - $type = $phdf5 if /PHDF5/; - - if (/Write Open/) { - $avg_type = "write-close"; - } elsif (/Write/) { - $avg_type = "write-only"; - } elsif (/Read Open/) { - $avg_type = "read-close"; - } elsif (/Read/) { - $avg_type = "read-only"; - } - - if($throughput_type eq "max") - { - if (/Maximum Throughput: ( {0,2}[0-9]+\.[0-9]{2}) MB\/s/) { - $results{$num_procs}{$xfer_size}[$type]{$avg_type} = $1; - } - } - elsif($throughput_type eq "min") - { - if (/Minimum Throughput: ( {0,2}[0-9]+\.[0-9]{2}) MB\/s/) { - $results{$num_procs}{$xfer_size}[$type]{$avg_type} = $1; - } - } - elsif($throughput_type eq "average") - { - if (/Average Throughput: ( {0,2}[0-9]+\.[0-9]{2}) MB\/s/) { - $results{$num_procs}{$xfer_size}[$type]{$avg_type} = $1; - } - } -} - -sub usage { - print "Usage: gen_reporl.pl [options] FILE - options are:\n - -data_type \"data_type\" plots the results for \"write-only\",\"read-only\", \"write-close\", or \"read-close\" (default is write-only)\n - -buffer_size \"buffer_size\" plots data from this buffer size (in kilobytes, default is 128)\n - -procs \"num_procs\" plots data from the run with num_procs processors (default is the highest number of processors for which there is data).\n - -throughput \"throughput_type\" plots either the \"max\", \"min\", or \"average\" throughput (default is average)\n - -io_type \"io_type\" where \"io_type\" is the bitwise or of the io_type for which plotting is desired (1 for POSIX, 2 for MPIO, 4 for PHDF5 (default is 7 (all))\n - -3d if present, does a 3d plot in addition to the normal ones\n"; - - exit 1; -} - -sub create_excel_output_header { - my $output_header; - my $kb = 1024; - my $mb = $kb * $kb; - - foreach my $key (sort { $a <=> $b } keys(%{$results{$num_procs}})) { - if ($key < $mb) { - $key /= $kb; - $output_header .= "\t". $key . "K"; - } else { - $key /= $mb; - $output_header .= "\t". $key . "M"; - } - } - - $output_header; -} - -sub create_excel_output_string { - my ($t) = @_; - my $output_content = ""; - - foreach my $procs (sort { $b <=> $a } keys(%results)) { - $output_content .= "\n$procs Procs"; - $output_content .= "\n" . create_excel_output_header; - $output_content .= "\n POSIX"; - - foreach my $xfer (sort { $a <=> $b } keys(%{$results{$procs}})) { - $output_content .= "\t$results{$procs}{$xfer}[0]{$t}"; - } - - $output_content .= "\n MPIO"; - - foreach my $xfer (sort { $a <=> $b } keys(%{$results{$procs}})) { - $output_content .= "\t$results{$procs}{$xfer}[1]{$t}"; - } - - $output_content .= "\n PHDF5"; - - foreach my $xfer (sort { $a <=> $b } keys(%{$results{$procs}})) { - $output_content .= "\t$results{$procs}{$xfer}[2]{$t}"; - } - - $output_content .= "\n"; - } - - $output_content; -} - -sub is_defined { - my ($t) = @_; - my $def = 1; - - foreach my $procs (sort { $b <=> $a } keys(%results)) { - foreach my $xfer (sort { $a <=> $b } keys(%{$results{$procs}})) { - if (!defined($results{$procs}{$xfer}[0]{$t})) { - $def = 0; - } - } - - foreach my $xfer (sort { $a <=> $b } keys(%{$results{$procs}})) { - if (!defined($results{$procs}{$xfer}[0]{$t})) { - $def = 0; - } - } - - foreach my $xfer (sort { $a <=> $b } keys(%{$results{$procs}})) { - if (!defined($results{$procs}{$xfer}[0]{$t})) { - $def = 0; - } - } - } - - $def; -} - -sub write_excel_file { - print EXCEL_OUTPUT "\nWrite-Only\n"; - print EXCEL_OUTPUT create_excel_output_string("write-only"); - print EXCEL_OUTPUT "\nWrite-Close\n"; - print EXCEL_OUTPUT create_excel_output_string("write-close"); - - if (is_defined("read-only")) { - print EXCEL_OUTPUT "\nRead-Only\n"; - print EXCEL_OUTPUT create_excel_output_string("read-only"); - print EXCEL_OUTPUT "\nRead-Close\n"; - print EXCEL_OUTPUT create_excel_output_string("read-close"); - } -} - -sub create_ascii_output_header { - my $output_header = " " x 12 . "|"; - my $kb = 1024; - my $mb = $kb * $kb; - - foreach my $key (sort { $a <=> $b } keys(%{$results{$num_procs}})) { - if ($key < $mb) { - $key /= $kb; - $output_header = sprintf("$output_header %-4s |", $key . "K"); - } else { - $key /= $mb; - $output_header = sprintf("$output_header %-4s |", $key . "M"); - } - } - - $output_header; -} - -sub create_ascii_output_string { - my ($t) = @_; - my $output_content = ""; - my $output_header = create_ascii_output_header; - - foreach my $procs (sort { $b <=> $a } keys(%results)) { - $output_content .= "\n$procs Procs"; - $output_content .= "\n$output_header\n"; - $output_content .= "-" x length($output_header); - $output_content .= "\n POSIX |"; - - foreach my $xfer (sort { $a <=> $b } keys(%{$results{$procs}})) { - $output_content = sprintf("$output_content %-6s |", - $results{$procs}{$xfer}[0]{$t}); - } - - $output_content .= "\n "; - $output_content .= "-" x (length($output_header) - 4); - $output_content .= "\n MPI/IO |"; - - foreach my $xfer (sort { $a <=> $b } keys(%{$results{$procs}})) { - $output_content = sprintf("$output_content %-6s |", - $results{$procs}{$xfer}[1]{$t}); - } - - $output_content .= "\n "; - $output_content .= "-" x (length($output_header) - 4); - $output_content .= "\n PHDF5 |"; - - foreach my $xfer (sort { $a <=> $b } keys(%{$results{$procs}})) { - $output_content = sprintf("$output_content %-6s |", - $results{$procs}{$xfer}[2]{$t}); - } - - $output_content .= "\n"; - $output_content .= "=" x length($output_header); - $output_content .= "\n"; - } - - $output_content; -} - -sub write_ascii_file { - print ASCII_OUTPUT "\nWrite-Only"; - print ASCII_OUTPUT "\n----------\n"; - print ASCII_OUTPUT create_ascii_output_string("write-only"); - print ASCII_OUTPUT "\n\nWrite-Close"; - print ASCII_OUTPUT "\n-----------\n"; - print ASCII_OUTPUT create_ascii_output_string("write-close"); - - if (is_defined("read-only")) { - print ASCII_OUTPUT "\n\nRead-Only"; - print ASCII_OUTPUT "\n---------\n"; - print ASCII_OUTPUT create_ascii_output_string("read-only"); - print ASCII_OUTPUT "\n\nRead-Close"; - print ASCII_OUTPUT "\n----------\n"; - print ASCII_OUTPUT create_ascii_output_string("read-close"); - } -} - -sub draw_plot -{ - my($p_3d) = @_; - - if($p_3d) - { - $counter = 3; - print GNUPLOT_PIPE "splot "; - } - else - { - $counter = 2; - print GNUPLOT_PIPE "plot "; - } - - if($io_type & 1) { - print GNUPLOT_PIPE " \"gnuplot.data\" using 1:"; - - if($p_3d) { print GNUPLOT_PIPE "2:"; } - - print GNUPLOT_PIPE $counter . " title 'POSIX' with linespoints"; - $counter = $counter + 1; - } - if($io_type & 2) { - if($io_type & 1) { print GNUPLOT_PIPE ", "; } - print GNUPLOT_PIPE "\"gnuplot.data\" using 1:"; - - if($p_3d) { print GNUPLOT_PIPE "2:"; } - - print GNUPLOT_PIPE $counter . " title 'MPIO' with linespoints"; - $counter = $counter + 1; - if($io_type & 4) { print GNUPLOT_PIPE ", ";} - } - if($io_type & 4) { - print GNUPLOT_PIPE " \"gnuplot.data\" using 1:"; - - if($p_3d) { print GNUPLOT_PIPE "2:"; } - - print GNUPLOT_PIPE $counter . " title 'PHDF5' with linespoints"; - - } - print GNUPLOT_PIPE "\n"; -} - - -sub plot_default_graph1 { - open(GNUPLOT_DATA_OUTPUT, ">gnuplot.data") or - die "error: cannot open file gnuplot.data: $!\n"; - - $transfer_buffer_size = 128 if !$transfer_buffer_size; - $data_type = "write-only" if !$data_type; - - #set up the plot - print GNUPLOT_PIPE "set term x11 1\n"; - print GNUPLOT_PIPE "set xlabel \"Number of Processors\"\n"; - print GNUPLOT_PIPE "set title \"" . $data_type . " Performance (Speed vs. Num. Procs)\"\n"; - print GNUPLOT_PIPE "set ylabel \"Bandwdith (MB/s)\"\n"; - print GNUPLOT_PIPE "set label 1 \"Transfer buffer size: " . $transfer_buffer_size . "K\" at graph 0.7, graph 0.7 left \n"; - -#the next line attempts to hack gnuplot to get around it's inability to linearly scale, but logarithmically label an axis - print GNUPLOT_PIPE "set xtics (\"1\" 1, \"2\" 2, \"4\" 4, \"8\" 8, \"16\" 16, \"32\" 32, \"64\" 64, \"128\" 128, \"256\" 256, \"512\" 512, \"1024\" 1024)\n"; - - - foreach $proc (sort { $a <=> $b }( keys %results )) - { - print GNUPLOT_DATA_OUTPUT $proc . "\t"; - if($io_type & 1) { - print GNUPLOT_DATA_OUTPUT $results{$proc}{$transfer_buffer_size*1024}[0]{$data_type} . "\t"; - } - if($io_type & 2) { - print GNUPLOT_DATA_OUTPUT $results{$proc}{$transfer_buffer_size*1024}[1]{$data_type}. "\t"; - } - if($io_type & 4) { - print GNUPLOT_DATA_OUTPUT $results{$proc}{$transfer_buffer_size*1024}[2]{$data_type}; - } - print GNUPLOT_DATA_OUTPUT "\n"; - - } - - close(GNUPLOT_DATA_OUTPUT); - - draw_plot(0); - - unlink(GNUPLOT_DATA_OUTPUT); - -} - - -sub plot_default_graph2 { - open(GNUPLOT_DATA_OUTPUT, ">gnuplot.data") or - die "error: cannot open file gnuplot.data: $!\n"; - - $num_procs_graph = max(sort { $a <=> $b }( keys %results )) if !$num_procs_graph; - print "min-rpocs: " . $num_procs_graph; - $data_type = "write-only" if !$data_type; - - #set up the plot - print GNUPLOT_PIPE "set term x11 2\n"; - print GNUPLOT_PIPE "set xlabel \"Transfer Buffer Size (in bytes)\"\n"; - print GNUPLOT_PIPE "set title \"" . $data_type . " Performance (Speed vs. Transfer Buffer Size)\"\n"; - print GNUPLOT_PIPE "set ylabel \"Bandwdith (MB/s)\"\n"; - print GNUPLOT_PIPE "set label 1 \"Procs: " . $num_procs_graph . "\" at graph 0.7, graph 0.7 left \n"; - -#the next line attempts to hack gnuplot to get around it's inability to linearly scale, but logarithmically label an axis - print GNUPLOT_PIPE "set xtics (\"4K\" 4*1024, \"8K\" 8*1024, \"16K\" 16*1024, \"32K\" 32*1024, \"64K\" 64*1024, \"128K\" 128*1024, \"256K\" 256*1024, \"512K\" 512*1024, \"1M\" 1024*1024, \"2M\" 2048*1024, \"4M\" 4096*1024, \"8M\" 8192*1024, \"16M\" 16384*1024)\n"; - - foreach $xfer (sort {$a <=> $b} ( keys %{$results{$num_procs_graph}} )) - { - print GNUPLOT_DATA_OUTPUT $xfer . "\t"; - if($io_type & 1) { - print GNUPLOT_DATA_OUTPUT $results{$num_procs_graph}{$xfer}[0]{$data_type} . "\t"; - } - if($io_type & 2) { - print GNUPLOT_DATA_OUTPUT $results{$num_procs_graph}{$xfer}[1]{$data_type}. "\t"; - } - if($io_type & 4) { - print GNUPLOT_DATA_OUTPUT $results{$num_procs_graph}{$xfer}[2]{$data_type}; - } - print GNUPLOT_DATA_OUTPUT "\n"; - - } - - close(GNUPLOT_DATA_OUTPUT); - - draw_plot(0); - - unlink(GNUPLOT_DATA_OUTPUT); -} - -sub plot_3d_graph3 { - open(GNUPLOT_DATA_OUTPUT, ">gnuplot.data") or - die "error: cannot open file gnuplot.data: $!\n"; - - #set up the plot - print GNUPLOT_PIPE "set term x11 3\n"; - print GNUPLOT_PIPE "set xlabel \"Num. Processors\"\n"; - print GNUPLOT_PIPE "set title \"Write Speed v. No. Procs v. Buffer Size\"\n"; - print GNUPLOT_PIPE "set ylabel \"Buffer Size (bytes)\"\n"; - print GNUPLOT_PIPE "set zlabel \"Bandwidth (in MB/s)\"\n"; - print GNUPLOT_PIPE "set nolabel\n"; - print GNUPLOT_PIPE "set dgrid3d 30,30\n"; - print GNUPLOT_PIPE "set hidden3d\n"; - -#the next lines attempts to hack gnuplot to get around it's inability to linearly scale, but logarithmically label an axis - print GNUPLOT_PIPE "set xtics (\"1\" 1, \"2\" 2, \"4\" 4, \"8\" 8, \"16\" 16, \"32\" 32, \"64\" 64, \"128\" 128, \"256\" 256, \"512\" 512, \"1024\" 1024)\n"; - print GNUPLOT_PIPE "set ytics (\"4K\" 4*1024, \"8K\" 8*1024, \"16K\" 16*1024, \"32K\" 32*1024, \"64K\" 64*1024, \"128K\" 128*1024, \"256K\" 256*1024, \"512K\" 512*1024, \"1M\" 1024*1024, \"2M\" 2048*1024, \"4M\" 4096*1024, \"8M\" 8192*1024, \"16M\" 16384*1024)\n"; - - -#Read speed on z-axis, processors on x, buffer size on y. - - foreach $proc (sort { $a <=> $b }( keys %results )) - { - foreach $xfer (sort {$a <=> $b} ( keys %{$results{$proc}} )) - { - print GNUPLOT_DATA_OUTPUT $proc . "\t" . $xfer . "\t"; - if($io_type & 1) { - print GNUPLOT_DATA_OUTPUT $results{$proc}{$xfer}[0]{"write-only"} . "\t"; - } - if($io_type & 2) { - print GNUPLOT_DATA_OUTPUT $results{$proc}{$xfer}[1]{"write-only"}. "\t"; - } - if($io_type & 4) { - print GNUPLOT_DATA_OUTPUT $results{$proc}{$xfer}[2]{"write-only"}; - } - print GNUPLOT_DATA_OUTPUT "\n"; - - } - } - - close(GNUPLOT_DATA_OUTPUT); - - draw_plot(1); - - unlink(GNUPLOT_DATA_OUTPUT); -} - -open(GNUPLOT_PIPE, "| tee gnuplot.script | gnuplot -persist") || die "Couldn't run gnuplot: $!\n"; -GNUPLOT_PIPE->autoflush(1); - -write_excel_file; -write_ascii_file; -plot_default_graph1; -sleep 1; -plot_default_graph2; -sleep 1; - -plot_3d_graph3 if $plot_3d; -close(GNUPLOT_PIPE); diff --git a/tools/perform/iopipe.c b/tools/perform/iopipe.c deleted file mode 100644 index fd62d37..0000000 --- a/tools/perform/iopipe.c +++ /dev/null @@ -1,508 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * Programmer: Robb Matzke - * Thursday, March 12, 1998 - */ - -/* See H5private.h for how to include headers */ -#include "hdf5.h" - -#include "H5private.h" - -#ifdef H5_HAVE_SYS_TIMEB -#include -#endif - - -#define RAW_FILE_NAME "iopipe.raw" -#define HDF5_FILE_NAME "iopipe.h5" -#define HEADING "%-16s" -#define PROGRESS '=' - -#if 0 -/* Normal testing */ -#define REQUEST_SIZE_X 4579 -#define REQUEST_SIZE_Y 4579 -#define NREAD_REQUESTS 45 -#define NWRITE_REQUESTS 45 -#else -/* Speedy testing */ -#define REQUEST_SIZE_X 1000 -#define REQUEST_SIZE_Y 1000 -#define NREAD_REQUESTS 45 -#define NWRITE_REQUESTS 45 -#endif - - -/*------------------------------------------------------------------------- - * Function: print_stats - * - * Purpose: Prints statistics - * - * Return: void - * - * Programmer: Robb Matzke - * Thursday, March 12, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -#ifdef H5_HAVE_GETRUSAGE -static void -print_stats (const char *prefix, - struct rusage *r_start, struct rusage *r_stop, - struct timeval *t_start, struct timeval *t_stop, - size_t nbytes) -#else /* H5_HAVE_GETRUSAGE */ -static void -print_stats (const char *prefix, - struct timeval *r_start, struct timeval *r_stop, - struct timeval *t_start, struct timeval *t_stop, - size_t nbytes) -#endif /* H5_HAVE_GETRUSAGE */ -{ - double e_time, bw; -#ifdef H5_HAVE_GETRUSAGE - double u_time, s_time; - - u_time = ((double)(r_stop->ru_utime.tv_sec)+ - (double)(r_stop->ru_utime.tv_usec)/(double)1000000.0F) - - ((double)(r_start->ru_utime.tv_sec)+ - (double)(r_start->ru_utime.tv_usec)/(double)1000000.0F); - - s_time = ((double)(r_stop->ru_stime.tv_sec)+ - (double)(r_stop->ru_stime.tv_usec)/(double)1000000.0F) - - ((double)(r_start->ru_stime.tv_sec)+ - (double)(r_start->ru_stime.tv_usec)/(double)1000000.0F); -#endif -#ifndef H5_HAVE_SYS_TIMEB - e_time = ((double)(t_stop->tv_sec)+ - (double)(t_stop->tv_usec)/(double)1000000.0F) - - ((double)(t_start->tv_sec)+ - (double)(t_start->tv_usec)/(double)1000000.0F); -#else - e_time = ((double)(t_stop->tv_sec)+ - (double)(t_stop->tv_usec)/(double)1000.0F) - - ((double)(t_start->tv_sec)+ - (double)(t_start->tv_usec)/(double)1000.0F); -#endif - bw = (double)nbytes / e_time; - -#ifdef H5_HAVE_GETRUSAGE - printf (HEADING "%1.2fuser %1.2fsystem %1.2felapsed %1.2fMB/s\n", - prefix, u_time, s_time, e_time, bw/(1024*1024)); -#else - printf (HEADING "%1.2felapsed %1.2fMB/s\n", - prefix, e_time, bw/(1024*1024)); -#endif - -} - - -/*------------------------------------------------------------------------- - * Function: synchronize - * - * Purpose: - * - * Return: void - * - * Programmer: Robb Matzke - * Thursday, March 12, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -synchronize (void) -{ -#ifdef H5_HAVE_SYSTEM -#if defined(H5_HAVE_WIN32_API) && ! defined(__CYGWIN__) - _flushall(); -#else - int status; - - status = HDsystem("sync"); - HDassert(status >= 0); - - status = HDsystem("df >/dev/null"); - HDassert(status >= 0); -#endif -#endif -} - - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: - * - * Return: Success: - * - * Failure: - * - * Programmer: Robb Matzke - * Thursday, March 12, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -int -main (void) -{ - static hsize_t size[2] = {REQUEST_SIZE_X, REQUEST_SIZE_Y}; - static unsigned nread = NREAD_REQUESTS, nwrite = NWRITE_REQUESTS; - - unsigned char *the_data = NULL; - hid_t file, dset, file_space = -1; - herr_t status; -#ifdef H5_HAVE_GETRUSAGE - struct rusage r_start, r_stop; -#else - struct timeval r_start, r_stop; -#endif - struct timeval t_start, t_stop; - int fd; - unsigned u; - hssize_t n; - off_t offset; - hsize_t start[2]; - hsize_t count[2]; - - -#ifdef H5_HAVE_SYS_TIMEB - struct _timeb *tbstart = malloc(sizeof(struct _timeb)); - struct _timeb *tbstop = malloc(sizeof(struct _timeb)); -#endif - /* - * The extra cast in the following statement is a bug workaround for the - * Win32 version 5.0 compiler. - * 1998-11-06 ptl - */ - printf ("I/O request size is %1.1fMB\n", - (double)(hssize_t)(size[0]*size[1])/(double)1024.0F*(double)1024); - - /* Open the files */ - file = H5Fcreate (HDF5_FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - assert (file>=0); - fd = HDopen (RAW_FILE_NAME, O_RDWR|O_CREAT|O_TRUNC, 0666); - assert (fd>=0); - - /* Create the dataset */ - file_space = H5Screate_simple (2, size, size); - assert(file_space >= 0); - dset = H5Dcreate2(file, "dset", H5T_NATIVE_UCHAR, file_space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - assert(dset >= 0); - the_data = (unsigned char *)malloc((size_t)(size[0] * size[1])); - - /* initial fill for lazy malloc */ - HDmemset(the_data, 0xAA, (size_t)(size[0] * size[1])); - - /* Fill raw */ - synchronize (); -#ifdef H5_HAVE_GETRUSAGE - HDgetrusage(RUSAGE_SELF, &r_start); -#endif -#ifdef H5_HAVE_GETTIMEOFDAY - HDgettimeofday(&t_start, NULL); -#else -#ifdef H5_HAVE_SYS_TIMEB - _ftime(tbstart); -#endif -#endif - fprintf (stderr, HEADING, "fill raw"); - for(u = 0; u < nwrite; u++) { - putc (PROGRESS, stderr); - HDfflush(stderr); - HDmemset(the_data, 0xAA, (size_t)(size[0]*size[1])); - } -#ifdef H5_HAVE_GETRUSAGE - HDgetrusage(RUSAGE_SELF, &r_stop); -#endif -#ifdef H5_HAVE_GETTIMEOFDAY - HDgettimeofday(&t_stop, NULL); -#else -#ifdef H5_HAVE_SYS_TIMEB - _ftime(tbstop); - t_start.tv_sec = tbstart->time; - t_start.tv_usec = tbstart->millitm; - t_stop.tv_sec = tbstop->time; - t_stop.tv_usec = tbstop->millitm; -#endif -#endif - putc ('\n', stderr); - print_stats ("fill raw", - &r_start, &r_stop, &t_start, &t_stop, - (size_t)(nread*size[0]*size[1])); - - - /* Fill hdf5 */ - synchronize (); -#ifdef H5_HAVE_GETRUSAGE - HDgetrusage(RUSAGE_SELF, &r_start); -#endif -#ifdef H5_HAVE_GETTIMEOFDAY - HDgettimeofday(&t_start, NULL); -#else -#ifdef H5_HAVE_SYS_TIMEB - _ftime(tbstart); -#endif -#endif - fprintf (stderr, HEADING, "fill hdf5"); - for(u = 0; u < nread; u++) { - putc (PROGRESS, stderr); - HDfflush(stderr); - status = H5Dread (dset, H5T_NATIVE_UCHAR, file_space, file_space, - H5P_DEFAULT, the_data); - assert (status>=0); - } -#ifdef H5_HAVE_GETRUSAGE - HDgetrusage(RUSAGE_SELF, &r_stop); -#endif -#ifdef H5_HAVE_GETTIMEOFDAY - HDgettimeofday(&t_stop, NULL); -#else -#ifdef H5_HAVE_SYS_TIMEB - _ftime(tbstop); - t_start.tv_sec = tbstart->time; - t_start.tv_usec = tbstart->millitm; - t_stop.tv_sec = tbstop->time; - t_stop.tv_usec = tbstop->millitm; -#endif -#endif - putc ('\n', stderr); - print_stats ("fill hdf5", - &r_start, &r_stop, &t_start, &t_stop, - (size_t)(nread*size[0]*size[1])); - - /* Write the raw dataset */ - synchronize (); -#ifdef H5_HAVE_GETRUSAGE - HDgetrusage(RUSAGE_SELF, &r_start); -#endif -#ifdef H5_HAVE_GETTIMEOFDAY - HDgettimeofday(&t_start, NULL); -#else -#ifdef H5_HAVE_SYS_TIMEB - _ftime(tbstart); -#endif -#endif - fprintf (stderr, HEADING, "out raw"); - for(u = 0; u < nwrite; u++) { - putc (PROGRESS, stderr); - HDfflush(stderr); - offset = HDlseek (fd, (off_t)0, SEEK_SET); - assert (0==offset); - n = HDwrite (fd, the_data, (size_t)(size[0]*size[1])); - assert (n>=0 && (size_t)n==size[0]*size[1]); - } -#ifdef H5_HAVE_GETRUSAGE - HDgetrusage(RUSAGE_SELF, &r_stop); -#endif -#ifdef H5_HAVE_GETTIMEOFDAY - HDgettimeofday(&t_stop, NULL); -#else -#ifdef H5_HAVE_SYS_TIMEB - _ftime(tbstop); - t_start.tv_sec = tbstart->time; - t_start.tv_usec = tbstart->millitm; - t_stop.tv_sec = tbstop->time; - t_stop.tv_usec = tbstop->millitm; -#endif -#endif - putc ('\n', stderr); - print_stats ("out raw", - &r_start, &r_stop, &t_start, &t_stop, - (size_t)(nread*size[0]*size[1])); - - /* Write the hdf5 dataset */ - synchronize (); -#ifdef H5_HAVE_GETRUSAGE - HDgetrusage(RUSAGE_SELF, &r_start); -#endif -#ifdef H5_HAVE_GETTIMEOFDAY - HDgettimeofday(&t_start, NULL); -#else -#ifdef H5_HAVE_SYS_TIMEB - _ftime(tbstart); -#endif -#endif - fprintf (stderr, HEADING, "out hdf5"); - for(u = 0; u < nwrite; u++) { - putc (PROGRESS, stderr); - HDfflush(stderr); - status = H5Dwrite (dset, H5T_NATIVE_UCHAR, H5S_ALL, H5S_ALL, - H5P_DEFAULT, the_data); - assert (status>=0); - } -#ifdef H5_HAVE_GETRUSAGE - HDgetrusage(RUSAGE_SELF, &r_stop); -#endif -#ifdef H5_HAVE_GETTIMEOFDAY - HDgettimeofday(&t_stop, NULL); -#else -#ifdef H5_HAVE_SYS_TIMEB - _ftime(tbstop); - t_start.tv_sec = tbstart->time; - t_start.tv_usec = tbstart->millitm; - t_stop.tv_sec = tbstop->time; - t_stop.tv_usec = tbstop->millitm; -#endif -#endif - putc ('\n', stderr); - print_stats ("out hdf5", - &r_start, &r_stop, &t_start, &t_stop, - (size_t)(nread*size[0]*size[1])); - - /* Read the raw dataset */ - synchronize (); -#ifdef H5_HAVE_GETRUSAGE - HDgetrusage(RUSAGE_SELF, &r_start); -#endif -#ifdef H5_HAVE_GETTIMEOFDAY - HDgettimeofday(&t_start, NULL); -#else -#ifdef H5_HAVE_SYS_TIMEB - _ftime(tbstart); -#endif -#endif - fprintf (stderr, HEADING, "in raw"); - for(u = 0; u < nread; u++) { - putc (PROGRESS, stderr); - HDfflush(stderr); - offset = HDlseek (fd, (off_t)0, SEEK_SET); - assert (0==offset); - n = HDread (fd, the_data, (size_t)(size[0]*size[1])); - assert (n>=0 && (size_t)n==size[0]*size[1]); - } -#ifdef H5_HAVE_GETRUSAGE - HDgetrusage(RUSAGE_SELF, &r_stop); -#endif -#ifdef H5_HAVE_GETTIMEOFDAY - HDgettimeofday(&t_stop, NULL); -#else -#ifdef H5_HAVE_SYS_TIMEB - _ftime(tbstop); - t_start.tv_sec = tbstart->time; - t_start.tv_usec = tbstart->millitm; - t_stop.tv_sec = tbstop->time; - t_stop.tv_usec = tbstop->millitm; -#endif -#endif - putc ('\n', stderr); - print_stats ("in raw", - &r_start, &r_stop, &t_start, &t_stop, - (size_t)(nread*size[0]*size[1])); - - - /* Read the hdf5 dataset */ - synchronize (); -#ifdef H5_HAVE_GETRUSAGE - HDgetrusage(RUSAGE_SELF, &r_start); -#endif -#ifdef H5_HAVE_GETTIMEOFDAY - HDgettimeofday(&t_start, NULL); -#else -#ifdef H5_HAVE_SYS_TIMEB - _ftime(tbstart); -#endif -#endif - fprintf (stderr, HEADING, "in hdf5"); - for(u = 0; u < nread; u++) { - putc (PROGRESS, stderr); - HDfflush(stderr); - status = H5Dread (dset, H5T_NATIVE_UCHAR, file_space, file_space, - H5P_DEFAULT, the_data); - assert (status>=0); - } -#ifdef H5_HAVE_GETRUSAGE - HDgetrusage(RUSAGE_SELF, &r_stop); -#endif -#ifdef H5_HAVE_GETTIMEOFDAY - HDgettimeofday(&t_stop, NULL); -#else -#ifdef H5_HAVE_SYS_TIMEB - _ftime(tbstop); - t_start.tv_sec = tbstart->time; - t_start.tv_usec = tbstart->millitm; - t_stop.tv_sec = tbstop->time; - t_stop.tv_usec = tbstop->millitm; -#endif -#endif - putc ('\n', stderr); - print_stats ("in hdf5", - &r_start, &r_stop, &t_start, &t_stop, - (size_t)(nread*size[0]*size[1])); - - /* Read hyperslab */ - assert (size[0]>20 && size[1]>20); - start[0] = start[1] = 10; - count[0] = count[1] = size[0]-20; - status = H5Sselect_hyperslab (file_space, H5S_SELECT_SET, start, NULL, count, NULL); - assert (status>=0); - synchronize (); -#ifdef H5_HAVE_GETRUSAGE - HDgetrusage(RUSAGE_SELF, &r_start); -#endif -#ifdef H5_HAVE_GETTIMEOFDAY - HDgettimeofday(&t_start, NULL); -#else -#ifdef H5_HAVE_SYS_TIMEB - _ftime(tbstart); -#endif -#endif - fprintf (stderr, HEADING, "in hdf5 partial"); - for(u = 0; u < nread; u++) { - putc (PROGRESS, stderr); - HDfflush(stderr); - status = H5Dread (dset, H5T_NATIVE_UCHAR, file_space, file_space, - H5P_DEFAULT, the_data); - assert (status>=0); - } -#ifdef H5_HAVE_GETRUSAGE - HDgetrusage(RUSAGE_SELF, &r_stop); -#endif -#ifdef H5_HAVE_GETTIMEOFDAY - HDgettimeofday(&t_stop, NULL); -#else -#ifdef H5_HAVE_SYS_TIMEB - _ftime(tbstop); - t_start.tv_sec = tbstart->time; - t_start.tv_usec = tbstart->millitm; - t_stop.tv_sec = tbstop->time; - t_stop.tv_usec = tbstop->millitm; -#endif -#endif - putc('\n', stderr); - print_stats("in hdf5 partial", - &r_start, &r_stop, &t_start, &t_stop, - (size_t)(nread*count[0]*count[1])); - - - - /* Close everything */ - HDclose(fd); - H5Dclose(dset); - H5Sclose(file_space); - H5Fclose(file); - free(the_data); - - return 0; -} - diff --git a/tools/perform/overhead.c b/tools/perform/overhead.c deleted file mode 100644 index 98093c7..0000000 --- a/tools/perform/overhead.c +++ /dev/null @@ -1,408 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * Programmer: Robb Matzke - * Monday, September 28, 1998 - * - * Purpose: Creates a chunked dataset and measures the storage overhead. - */ - -/* See H5private.h for how to include headers */ -#undef NDEBUG -#include "hdf5.h" -#include "H5private.h" - -#ifdef H5_STDC_HEADERS -# include -# include -# include -# include -# include -#endif - -#ifdef H5_HAVE_IO_H -# include -#endif - -#ifdef H5_HAVE_UNISTD_H -# include -# include -#endif - -/* Solaris Studio defines attribute, but for the attributes we need */ -#if !defined(H5_HAVE_ATTRIBUTE) || defined __cplusplus || defined(__SUNPRO_C) -# undef __attribute__ -# define __attribute__(X) /*void*/ -# define H5_ATTR_UNUSED /*void*/ -#else -# define H5_ATTR_UNUSED __attribute__((unused)) -#endif - -#define FILE_NAME_1 "overhead.h5" -#ifndef FALSE -#define FALSE 0 -#endif /* FALSE */ -#ifndef TRUE -#define TRUE 1 -#endif /* TRUE */ - -typedef enum fill_t { - FILL_ALL, - FILL_FORWARD, - FILL_REVERSE, - FILL_INWARD, - FILL_OUTWARD, - FILL_RANDOM -} fill_t; - - -/*------------------------------------------------------------------------- - * Function: usage - * - * Purpose: Prints a usage message and exits. - * - * Return: never returns - * - * Programmer: Robb Matzke - * Wednesday, September 30, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -usage(const char *prog) -{ - fprintf(stderr, "usage: %s [STYLE|cache] [LEFT [MIDDLE [RIGHT]]]\n", - prog); - fprintf(stderr, "\ - STYLE is the order that the dataset is filled and should be one of:\n\ - forward -- Fill the dataset from lowest address to highest\n\ - address. This style tests the right split ratio.\n\ - reverse -- Fill the dataset from highest address to lowest\n\ - address. This is the reverse order of `forward' and\n\ - tests the left split ratio.\n\ - inward -- Fill beginning at both the lowest and highest\n\ - addresses and work in toward the center of the\n\ - dataset. This tests the middle split ratio.\n\ - outward -- Start at the center of the dataset and work outward\n\ - toward the lowest and highest addresses. This tests\n\ - both left and right split ratios.\n\ - random -- Write the chunks of the dataset in random order. This\n\ - tests all split ratios.\n\ - If no fill style is specified then all fill styles are tried and a\n\ - single value is printed for each one.\n\ -\n\ - If the word `cache' is used instead of a fill style then the raw data\n\ - cache is enabled. It is not possible to enable the raw data cache when\n\ - a specific fill style is used because H5Fflush() is called after each\n\ - chunk is written in order to calculate overhead during the test. If\n\ - the cache is enabled then chunks are written to disk in different orders\n\ - than the actual H5Dwrite() calls in the test due to collisions and the\n\ - resulting B-tree will be split differently.\n\ -\n\ - LEFT, MIDDLE, and RIGHT are the ratios to use for splitting and should\n\ - be values between zero and one, inclusive.\n"); - exit(1); -} - - -/*------------------------------------------------------------------------- - * Function: cleanup - * - * Purpose: Removes test files - * - * Return: void - * - * Programmer: Robb Matzke - * Thursday, June 4, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -cleanup (void) -{ - if (!getenv ("HDF5_NOCLEANUP")) { - remove (FILE_NAME_1); - } -} - - -/*------------------------------------------------------------------------- - * Function: display_error_cb - * - * Purpose: Displays the error stack after printing "*FAILED*". - * - * Return: Success: 0 - * - * Failure: -1 - * - * Programmer: Robb Matzke - * Wednesday, March 4, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static herr_t -display_error_cb (hid_t estack, void H5_ATTR_UNUSED *client_data) -{ - puts ("*FAILED*"); - H5Eprint2(estack, stdout); - - return 0; -} - - -/*------------------------------------------------------------------------- - * Function: test - * - * Purpose: The guts of the test - * - * Return: Success: 0 - * - * Failure: number of errors - * - * Programmer: Robb Matzke - * Wednesday, September 30, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static int -test(fill_t fill_style, const double splits[], - hbool_t verbose, hbool_t use_rdcc) -{ - hid_t file = (-1), fapl = (-1), dcpl = (-1), xfer = (-1), mspace = (-1), fspace = (-1), dset = (-1); - hsize_t ch_size[1] = {1}; /*chunk size */ - hsize_t cur_size[1] = {1000}; /*current dataset size */ - hsize_t max_size[1] = {H5S_UNLIMITED}; /*maximum dataset size */ - hsize_t hs_start[1]; /*hyperslab start offset*/ - hsize_t hs_count[1] = {1}; /*hyperslab nelmts */ - int fd = (-1); /*h5 file direct */ - int *had = NULL; /*for random filling */ - const char *sname=NULL; /*fill style nam */ - int mdc_nelmts; /*num meta objs to cache*/ - hsize_t i, k; - int j; - h5_stat_t sb; - - if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) goto error; - if(!use_rdcc) { - if(H5Pget_cache(fapl, &mdc_nelmts, NULL, NULL, NULL) < 0) goto error; - if(H5Pset_cache(fapl, mdc_nelmts, 0, 0, 0.0F) < 0) goto error; - } - if((file = H5Fcreate(FILE_NAME_1, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) goto error; - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) goto error; - if(H5Pset_chunk(dcpl, 1, ch_size) < 0) goto error; - if((xfer = H5Pcreate(H5P_DATASET_XFER)) < 0) goto error; - if(H5Pset_btree_ratios(xfer, splits[0], splits[1], splits[2]) < 0) goto error; - if((fspace = H5Screate_simple(1, cur_size, max_size)) < 0) goto error; - if((mspace = H5Screate_simple(1, ch_size, ch_size)) < 0) goto error; - if((dset = H5Dcreate2(file, "chunked", H5T_NATIVE_INT, - fspace, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) goto error; - if ((fd=HDopen(FILE_NAME_1, O_RDONLY, 0666)) < 0) goto error; - - if(FILL_RANDOM==fill_style) - had = (int *)calloc((size_t)cur_size[0], sizeof(int)); - - for (i=1; i<=cur_size[0]; i++) { - - /* Decide which chunk to write to */ - switch (fill_style) { - case FILL_FORWARD: - hs_start[0] = i-1; - break; - case FILL_REVERSE: - hs_start[0] = cur_size[0]-i; - break; - case FILL_INWARD: - hs_start[0] = i%2 ? i/2 : cur_size[0]-i/2; - break; - case FILL_OUTWARD: - k = (cur_size[0] - i) + 1; - hs_start[0] = k % 2 ? (k / 2) : (hsize_t)((hssize_t)cur_size[0] - (hssize_t)(k / 2)); - break; - case FILL_RANDOM: - for (j=HDrand()%(int)cur_size[0]; had[j]; j=(j+1)%(int)cur_size[0]) - /*void*/; - hs_start[0] = (hsize_t)j; - had[j] = 1; - break; - case FILL_ALL: - abort(); - default: - /* unknown request */ - HDfprintf(stderr, "Unknown fill style\n"); - goto error; - break; - } - - /* Write the chunk */ - if (H5Sselect_hyperslab(fspace, H5S_SELECT_SET, hs_start, NULL, - hs_count, NULL) < 0) goto error; - if (H5Dwrite(dset, H5T_NATIVE_INT, mspace, fspace, xfer, &i) < 0) { - goto error; - } - - /* Determine overhead */ - if (verbose) { - if (H5Fflush(file, H5F_SCOPE_LOCAL) < 0) goto error; - if (HDfstat(fd, &sb) < 0) goto error; - printf("%4lu %8.3f ***\n", - (unsigned long)i, - (double)(sb.st_size - (HDoff_t)(i * sizeof(int))) / (double)i); - } - } - - if(had) { - free(had); - had = NULL; - } /* end if */ - - H5Dclose(dset); - H5Sclose(mspace); - H5Sclose(fspace); - H5Pclose(dcpl); - H5Pclose(xfer); - H5Fclose(file); - - if (!verbose) { - switch (fill_style) { - case FILL_FORWARD: - sname = "forward"; - break; - case FILL_REVERSE: - sname = "reverse"; - break; - case FILL_INWARD: - sname = "inward"; - break; - case FILL_OUTWARD: - sname = "outward"; - break; - case FILL_RANDOM: - sname = "random"; - break; - case FILL_ALL: - abort(); - default: - /* unknown request */ - HDfprintf(stderr, "Unknown fill style\n"); - goto error; - break; - } - - if (HDfstat(fd, &sb) < 0) goto error; - printf("%-7s %8.3f\n", sname, - (double)(sb.st_size - (HDoff_t)(cur_size[0] * sizeof(int))) / - (double)cur_size[0]); - } - HDclose(fd); - - return 0; - - error: - H5Dclose(dset); - H5Sclose(mspace); - H5Sclose(fspace); - H5Pclose(dcpl); - H5Pclose(xfer); - H5Fclose(file); - if(had) - free(had); - HDclose(fd); - return 1; -} - - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: - * - * Return: Success: zero - * - * Failure: non-zero - * - * Programmer: Robb Matzke - * Monday, September 28, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -int -main(int argc, char *argv[]) -{ - hid_t xfer; - fill_t fill_style = FILL_ALL; - hbool_t use_cache = FALSE; - double splits[3]; - int i, j, nerrors=0; - - /* Default split ratios */ - H5Eset_auto2(H5E_DEFAULT, display_error_cb, NULL); - - if((xfer = H5Pcreate(H5P_DATASET_XFER)) < 0) goto error; - if(H5Pget_btree_ratios(xfer, splits+0, splits+1, splits+2) < 0) goto error; - if(H5Pclose(xfer) < 0) goto error; - - /* Parse command-line options */ - for(i = 1, j = 0; i < argc; i++) { - if (!strcmp(argv[i], "forward")) { - fill_style = FILL_FORWARD; - } else if (!strcmp(argv[i], "reverse")) { - fill_style = FILL_REVERSE; - } else if (!strcmp(argv[i], "inward")) { - fill_style = FILL_INWARD; - } else if (!strcmp(argv[i], "outward")) { - fill_style = FILL_OUTWARD; - } else if (!strcmp(argv[i], "random")) { - fill_style = FILL_RANDOM; - } else if (!strcmp(argv[i], "cache")) { - use_cache = TRUE; - } else if (j<3 && (isdigit(argv[i][0]) || '.'==argv[i][0])) { - splits[j++] = strtod(argv[i], NULL); - } else { - usage(argv[0]); - } - } - - if (FILL_ALL==fill_style) { - printf("%-7s %8s\n", "Style", "Bytes/Chunk"); - printf("%-7s %8s\n", "-----", "-----------"); - nerrors += test(FILL_FORWARD, splits, FALSE, use_cache); - nerrors += test(FILL_REVERSE, splits, FALSE, use_cache); - nerrors += test(FILL_INWARD, splits, FALSE, use_cache); - nerrors += test(FILL_OUTWARD, splits, FALSE, use_cache); - nerrors += test(FILL_RANDOM, splits, FALSE, use_cache); - } - else { - if (use_cache) usage(argv[0]); - nerrors += test(fill_style, splits, TRUE, FALSE); - } - if (nerrors>0) goto error; - cleanup(); - return 0; - - error: - fprintf(stderr, "*** ERRORS DETECTED ***\n"); - return 1; -} diff --git a/tools/perform/perf.c b/tools/perform/perf.c deleted file mode 100644 index 7b9590c..0000000 --- a/tools/perform/perf.c +++ /dev/null @@ -1,494 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * Author: Albert Cheng of NCSA, May 1, 2001. - * This is derived from code given to me by Robert Ross. - * - * NOTE: This code assumes that all command line arguments make it out to all - * the processes that make up the parallel job, which isn't always the case. - * So if it doesn't work on some platform, that might be why. - */ - -#include "hdf5.h" -#include "H5private.h" - -#ifdef H5_HAVE_PARALLEL - -#ifdef H5_STDC_HEADERS -#include -#include -#include -#include -#include -#endif - -#ifdef H5_HAVE_UNISTD_H -#include -#include -#endif - -#ifdef H5_HAVE_SYS_STAT_H -#include -#endif - -#if defined(H5_TIME_WITH_SYS_TIME) -# include -# include -#elif defined(H5_HAVE_SYS_TIME_H) -# include -#else -# include -#endif - -#include -#ifndef MPI_FILE_NULL /*MPIO may be defined in mpi.h already */ -# include -#endif - -/* Macro definitions */ -/* Verify: - * if val is false (0), print mesg and if fatal is true (non-zero), die. - */ -#define H5FATAL 1 -#define VRFY(val, mesg, fatal) do { \ - if (!val) { \ - printf("Proc %d: ", mynod); \ - printf("*** Assertion failed (%s) at line %4d in %s\n", \ - mesg, (int)__LINE__, __FILE__); \ - if (fatal){ \ - fflush(stdout); \ - goto die_jar_jar_die; \ - } \ - } \ -} while(0) -#define RANK 1 -#define MAX_PATH 1024 - -hsize_t dims[RANK]; /* dataset dim sizes */ -hsize_t block[RANK], stride[RANK], count[RANK]; -hssize_t start[RANK]; -hid_t fid; /* HDF5 file ID */ -hid_t acc_tpl; /* File access templates */ -hid_t sid; /* Dataspace ID */ -hid_t file_dataspace; /* File dataspace ID */ -hid_t mem_dataspace; /* memory dataspace ID */ -hid_t dataset; /* Dataset ID */ -hsize_t opt_alignment = 1; -hsize_t opt_threshold = 1; -int opt_split_vfd = 0; -char *meta_ext, *raw_ext; /* holds the meta and raw file extension if */ - /* opt_split_vfd is set */ - - -/* DEFAULT VALUES FOR OPTIONS */ -int64_t opt_block = 1048576*16; -int opt_iter = 1; -int opt_stripe = -1; -int opt_correct = 0; -int amode = O_RDWR | O_CREAT; -char opt_file[256] = "perftest.out"; -char opt_pvfstab[256] = "notset"; -int opt_pvfstab_set = 0; - -const char *FILENAME[] = { - opt_file, - NULL -}; - -/* function prototypes */ -static int parse_args(int argc, char **argv); - -extern int errno; - -/* globals needed for getopt */ -extern char *optarg; - -int main(int argc, char **argv) -{ - char *buf, *tmp, *buf2, *tmp2, *check; - int i, j, mynod=0, nprocs=1, err, my_correct = 1, correct, myerrno; - double stim, etim; - double write_tim = 0; - double read_tim = 0; - double read_bw, write_bw; - double max_read_tim, max_write_tim; - double min_read_tim, min_write_tim; - double ave_read_tim, ave_write_tim; - int64_t iter_jump = 0; - int64_t seek_position = 0; - MPI_File fh; - MPI_Status status; - int nchars; - char filename[MAX_PATH]; - herr_t ret; /* Generic return value */ - - /* startup MPI and determine the rank of this process */ - MPI_Init(&argc,&argv); - MPI_Comm_size(MPI_COMM_WORLD, &nprocs); - MPI_Comm_rank(MPI_COMM_WORLD, &mynod); - - /* parse the command line arguments */ - parse_args(argc, argv); - - if (mynod == 0) printf("# Using hdf5-io calls.\n"); - - /* kindof a weird hack- if the location of the pvfstab file was - * specified on the command line, then spit out this location into - * the appropriate environment variable: */ - -#if H5_HAVE_SETENV -/* no setenv or unsetenv */ - if (opt_pvfstab_set) { - if((setenv("PVFSTAB_FILE", opt_pvfstab, 1)) < 0){ - perror("setenv"); - goto die_jar_jar_die; - } - } -#endif - - /* this is how much of the file data is covered on each iteration of - * the test. used to help determine the seek offset on each - * iteration */ - iter_jump = nprocs * opt_block; - - /* setup a buffer of data to write */ - if (!(tmp = (char *) malloc(opt_block + 256))) { - perror("malloc"); - goto die_jar_jar_die; - } - buf = tmp + 128 - (((long)tmp) % 128); /* align buffer */ - - if (opt_correct) { - /* do the same buffer setup for verifiable data */ - if (!(tmp2 = (char *) malloc(opt_block + 256))) { - perror("malloc2"); - goto die_jar_jar_die; - } - buf2 = tmp + 128 - (((long)tmp) % 128); - } - - /* setup file access template with parallel IO access. */ - if (opt_split_vfd){ - hid_t mpio_pl; - - mpio_pl = H5Pcreate (H5P_FILE_ACCESS); - VRFY((acc_tpl >= 0), "", H5FATAL); - ret = H5Pset_fapl_mpio(mpio_pl, MPI_COMM_WORLD, MPI_INFO_NULL); - VRFY((ret >= 0), "", H5FATAL); - - /* set optional allocation alignment */ - if (opt_alignment*opt_threshold != 1){ - ret = H5Pset_alignment(acc_tpl, opt_threshold, opt_alignment ); - VRFY((ret >= 0), "H5Pset_alignment succeeded", !H5FATAL); - } - - /* setup file access template */ - acc_tpl = H5Pcreate (H5P_FILE_ACCESS); - VRFY((acc_tpl >= 0), "", H5FATAL); - ret = H5Pset_fapl_split(acc_tpl, meta_ext, mpio_pl, raw_ext, mpio_pl); - VRFY((ret >= 0), "H5Pset_fapl_split succeeded", H5FATAL); - ret = H5Pclose(mpio_pl); - VRFY((ret >= 0), "H5Pclose mpio_pl succeeded", H5FATAL); - }else{ - /* setup file access template */ - acc_tpl = H5Pcreate (H5P_FILE_ACCESS); - VRFY((acc_tpl >= 0), "", H5FATAL); - ret = H5Pset_fapl_mpio(acc_tpl, MPI_COMM_WORLD, MPI_INFO_NULL); - VRFY((ret >= 0), "", H5FATAL); - - /* set optional allocation alignment */ - if (opt_alignment*opt_threshold != 1){ - ret = H5Pset_alignment(acc_tpl, opt_threshold, opt_alignment ); - VRFY((ret >= 0), "H5Pset_alignment succeeded", !H5FATAL); - } - } - - h5_fixname_no_suffix(FILENAME[0], acc_tpl, filename, sizeof filename); - - /* create the parallel file */ - fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, acc_tpl); - VRFY((fid >= 0), "H5Fcreate succeeded", H5FATAL); - - /* define a contiquous dataset of opt_iter*nprocs*opt_block chars */ - dims[0] = opt_iter * nprocs * opt_block; - sid = H5Screate_simple(RANK, dims, NULL); - VRFY((sid >= 0), "H5Screate_simple succeeded", H5FATAL); - dataset = H5Dcreate2(fid, "Dataset1", H5T_NATIVE_CHAR, sid, - H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - VRFY((dataset >= 0), "H5Dcreate2 succeeded", H5FATAL); - - /* create the memory dataspace and the file dataspace */ - dims[0] = opt_block; - mem_dataspace = H5Screate_simple(RANK, dims, NULL); - VRFY((mem_dataspace >= 0), "", H5FATAL); - file_dataspace = H5Dget_space(dataset); - VRFY((file_dataspace >= 0), "H5Dget_space succeeded", H5FATAL); - - /* now each process writes a block of opt_block chars in round robbin - * fashion until the whole dataset is covered. - */ - for(j=0; j < opt_iter; j++) { - /* setup a file dataspace selection */ - start[0] = (j*iter_jump)+(mynod*opt_block); - stride[0] = block[0] = opt_block; - count[0]= 1; - ret=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, block); - VRFY((ret >= 0), "H5Sset_hyperslab succeeded", H5FATAL); - - if (opt_correct) /* fill in buffer for iteration */ { - for (i=mynod+j, check=buf; i= 0), "H5Dwrite dataset1 succeeded", !H5FATAL); - - /* discover the ending time of the operation */ - etim = MPI_Wtime(); - - write_tim += (etim - stim); - - /* we are done with this "write" iteration */ - } - - /* close dataset and file */ - ret=H5Dclose(dataset); - VRFY((ret >= 0), "H5Dclose succeeded", H5FATAL); - ret=H5Fclose(fid); - VRFY((ret >= 0), "H5Fclose succeeded", H5FATAL); - - - - /* wait for everyone to synchronize at this point */ - MPI_Barrier(MPI_COMM_WORLD); - - /* reopen the file for reading */ - fid=H5Fopen(filename,H5F_ACC_RDONLY,acc_tpl); - VRFY((fid >= 0), "", H5FATAL); - - /* open the dataset */ - dataset = H5Dopen2(fid, "Dataset1", H5P_DEFAULT); - VRFY((dataset >= 0), "H5Dopen succeeded", H5FATAL); - - /* we can re-use the same mem_dataspace and file_dataspace - * the H5Dwrite used since the dimension size is the same. - */ - - /* we are going to repeat the read the same pattern the write used */ - for (j=0; j < opt_iter; j++) { - /* setup a file dataspace selection */ - start[0] = (j*iter_jump)+(mynod*opt_block); - stride[0] = block[0] = opt_block; - count[0]= 1; - ret=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, block); - VRFY((ret >= 0), "H5Sset_hyperslab succeeded", H5FATAL); - /* seek to the appropriate spot give the current iteration and - * rank within the MPI processes */ - - /* discover the start time */ - MPI_Barrier(MPI_COMM_WORLD); - stim = MPI_Wtime(); - - /* read in the file data */ - if (!opt_correct){ - ret = H5Dread(dataset, H5T_NATIVE_CHAR, mem_dataspace, file_dataspace, H5P_DEFAULT, buf); - } - else{ - ret = H5Dread(dataset, H5T_NATIVE_CHAR, mem_dataspace, file_dataspace, H5P_DEFAULT, buf2); - } - myerrno = errno; - - /* discover the end time */ - etim = MPI_Wtime(); - read_tim += (etim - stim); - VRFY((ret >= 0), "H5Dwrite dataset1 succeeded", !H5FATAL); - - - if (ret < 0) fprintf(stderr, "node %d, read error, loc = %Ld: %s\n", - mynod, mynod*opt_block, strerror(myerrno)); - - /* if the user wanted to check correctness, compare the write - * buffer to the read buffer */ - if (opt_correct && memcmp(buf, buf2, opt_block)) { - fprintf(stderr, "node %d, correctness test failed\n", mynod); - my_correct = 0; - MPI_Allreduce(&my_correct, &correct, 1, MPI_INT, MPI_MIN, - MPI_COMM_WORLD); - } - - /* we are done with this read iteration */ - } - - /* close dataset and file */ - ret=H5Dclose(dataset); - VRFY((ret >= 0), "H5Dclose succeeded", H5FATAL); - ret=H5Fclose(fid); - VRFY((ret >= 0), "H5Fclose succeeded", H5FATAL); - ret=H5Pclose(acc_tpl); - VRFY((ret >= 0), "H5Pclose succeeded", H5FATAL); - - /* compute the read and write times */ - MPI_Allreduce(&read_tim, &max_read_tim, 1, MPI_DOUBLE, MPI_MAX, - MPI_COMM_WORLD); - MPI_Allreduce(&read_tim, &min_read_tim, 1, MPI_DOUBLE, MPI_MIN, - MPI_COMM_WORLD); - MPI_Allreduce(&read_tim, &ave_read_tim, 1, MPI_DOUBLE, MPI_SUM, - MPI_COMM_WORLD); - - /* calculate the average from the sum */ - ave_read_tim = ave_read_tim / nprocs; - - MPI_Allreduce(&write_tim, &max_write_tim, 1, MPI_DOUBLE, MPI_MAX, - MPI_COMM_WORLD); - MPI_Allreduce(&write_tim, &min_write_tim, 1, MPI_DOUBLE, MPI_MIN, - MPI_COMM_WORLD); - MPI_Allreduce(&write_tim, &ave_write_tim, 1, MPI_DOUBLE, MPI_SUM, - MPI_COMM_WORLD); - - /* calculate the average from the sum */ - ave_write_tim = ave_write_tim / nprocs; - - /* print out the results on one node */ - if (mynod == 0) { - read_bw = ((int64_t)(opt_block*nprocs*opt_iter))/(max_read_tim*1000000.0); - write_bw = ((int64_t)(opt_block*nprocs*opt_iter))/(max_write_tim*1000000.0); - - printf("nr_procs = %d, nr_iter = %d, blk_sz = %ld\n", nprocs, - opt_iter, (long)opt_block); - - printf("# total_size = %ld\n", (long)(opt_block*nprocs*opt_iter)); - - printf("# Write: min_time = %f, max_time = %f, mean_time = %f\n", - min_write_tim, max_write_tim, ave_write_tim); - printf("# Read: min_time = %f, max_time = %f, mean_time = %f\n", - min_read_tim, max_read_tim, ave_read_tim); - - printf("Write bandwidth = %f Mbytes/sec\n", write_bw); - printf("Read bandwidth = %f Mbytes/sec\n", read_bw); - - if (opt_correct) { - printf("Correctness test %s.\n", correct ? "passed" : "failed"); - } - } - - -die_jar_jar_die: - -#if H5_HAVE_SETENV -/* no setenv or unsetenv */ - /* clear the environment variable if it was set earlier */ - if (opt_pvfstab_set){ - unsetenv("PVFSTAB_FILE"); - } -#endif - - free(tmp); - if (opt_correct) free(tmp2); - - MPI_Finalize(); - - return(0); -} - -static int -parse_args(int argc, char **argv) -{ - int c; - - while ((c = getopt(argc, argv, "s:b:i:f:p:a:2:c")) != EOF) { - switch (c) { - case 's': /* stripe */ - opt_stripe = atoi(optarg); - break; - case 'b': /* block size */ - opt_block = atoi(optarg); - break; - case 'i': /* iterations */ - opt_iter = atoi(optarg); - break; - case 'f': /* filename */ - strncpy(opt_file, optarg, 255); - FILENAME[0] = opt_file; - break; - case 'p': /* pvfstab file */ - strncpy(opt_pvfstab, optarg, 255); - opt_pvfstab_set = 1; - break; - case 'a': /* aligned allocation. - * syntax: -a/ - * e.g., -a4096/512 allocate at 4096 bytes - * boundary if request size >= 512. - */ - {char *p; - opt_alignment = atoi(optarg); - if (p=(char*)strchr(optarg, '/')) - opt_threshold = atoi(p+1); - } - HDfprintf(stdout, - "alignment/threshold=%Hu/%Hu\n", - opt_alignment, opt_threshold); - break; - case '2': /* use 2-files, i.e., split file driver */ - opt_split_vfd=1; - /* get meta and raw file extension. */ - /* syntax is , */ - meta_ext = raw_ext = optarg; - while (*raw_ext != '\0'){ - if (*raw_ext == ','){ - *raw_ext = '\0'; - raw_ext++; - break; - } - raw_ext++; - } - printf("split-file-vfd used: %s,%s\n", - meta_ext, raw_ext); - break; - case 'c': /* correctness */ - opt_correct = 1; - break; - case '?': /* unknown */ - default: - break; - } - } - - return(0); -} - -/* - * Local variables: - * c-indent-level: 3 - * c-basic-offset: 3 - * tab-width: 3 - * End: - */ - -#else /* H5_HAVE_PARALLEL */ -/* dummy program since H5_HAVE_PARALLEL is not configured in */ -int -main(int H5_ATTR_UNUSED argc, char H5_ATTR_UNUSED **argv) -{ - printf("No parallel performance because parallel is not configured in\n"); - return(0); -} -#endif /* H5_HAVE_PARALLEL */ - diff --git a/tools/perform/perf_meta.c b/tools/perform/perf_meta.c deleted file mode 100644 index 2c3a19c..0000000 --- a/tools/perform/perf_meta.c +++ /dev/null @@ -1,850 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * Programmer: Raymond Lu - * Friday, Oct 3, 2004 - * - * Purpose: Tests performance of metadata - */ - -#include "h5test.h" - -#ifdef H5_HAVE_PARALLEL -#define MAINPROCESS (!mpi_rank) /* define process 0 as main process */ -#endif /*H5_HAVE_PARALLEL*/ - -/* File_Access_type bits */ -#define FACC_DEFAULT 0x0 /* serial as default */ -#define FACC_MPIO 0x1 /* MPIO */ - -/* Which test to run */ -int RUN_TEST = 0x0; /* all tests as default */ -int TEST_1 = 0x1; /* Test 1 */ -int TEST_2 = 0x2; /* Test 2 */ -int TEST_3 = 0x4; /* Test 3 */ - - -const char *FILENAME[] = { - "meta_perf_1", - "meta_perf_2", - "meta_perf_3", - NULL -}; - -/* Default values for performance. Can be changed through command line options */ -int NUM_DSETS = 16; -int NUM_ATTRS = 8; -int BATCH_ATTRS = 2; -hbool_t flush_dset = FALSE; -hbool_t flush_attr = FALSE; -int nerrors = 0; /* errors count */ -hid_t fapl; - -/* Data space IDs */ -hid_t space; -hid_t small_space; - -/* Performance data */ -typedef struct p_time { - double total; - double avg; - double max; - double min; - double start; - char func[32]; -} p_time; - -/*Test file access type for parallel. MPIO as default */ -int facc_type = FACC_DEFAULT; - -double retrieve_time(void); -void perf(p_time *perf_t, double start_t, double end_t); -void print_perf(p_time, p_time, p_time); - - -/*------------------------------------------------------------------------- - * Function: parse_options - * - Purpose: Parse command line options - * - * Programmer: Raymond Lu - * Friday, Oct 3, 2003 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static int -parse_options(int argc, char **argv) -{ - int t; - - /* Use default values */ - if(argc==1) - return(0); - - while (--argc){ - if (**(++argv) != '-'){ - break; - }else{ - switch(*(*argv+1)){ - case 'h': /* Help page */ - return(1); - - case 'd': /* Number of datasets */ - NUM_DSETS = atoi((*argv+1)+1); - if (NUM_DSETS < 0){ - nerrors++; - return(1); - } - break; - - case 'a': /* Number of attributes per dataset */ - NUM_ATTRS = atoi((*argv+1)+1); - if (NUM_ATTRS < 0){ - nerrors++; - return(1); - } - break; - - case 'n': /* Number of attributes to be created in batch */ - BATCH_ATTRS = atoi((*argv+1)+1); - if (BATCH_ATTRS < 0){ - nerrors++; - return(1); - } - break; - - case 'm': /* Use the MPI-IO driver */ - facc_type = FACC_MPIO; - break; - - case 'f': /* Call H5Fflush for each dataset or attribute */ - if(!strcmp("a", (*argv+2))) - flush_attr = TRUE; - else if(!strcmp("d", (*argv+2))) - flush_dset = TRUE; - else { - nerrors++; - return(1); - } - break; - - case 't': /* Which test to run */ - t = atoi((*argv+1)+1); - if (t < 1 || t > 3){ - nerrors++; - return(1); - } - if(t == 1) - RUN_TEST |= TEST_1; - else if(t == 2) - RUN_TEST |= TEST_2; - else - RUN_TEST |= TEST_3; - - break; - - default: nerrors++; - return(1); - } - } - } /*while*/ - - /* Check valid values */ -#ifndef H5_HAVE_PARALLEL - if(facc_type == FACC_MPIO) - { - nerrors++; - return(1); - } -#endif /*H5_HAVE_PARALLEL*/ - - if(NUM_ATTRS && !BATCH_ATTRS) - NUM_ATTRS = 0; - - if(!NUM_ATTRS && BATCH_ATTRS) - BATCH_ATTRS = 0; - - if(!NUM_DSETS) { - nerrors++; - return(1); - } - - if(NUM_ATTRS && BATCH_ATTRS) { - if(BATCH_ATTRS > NUM_ATTRS || NUM_ATTRS % BATCH_ATTRS) { - nerrors++; - return(1); - } - } - - return(0); -} - - -/*------------------------------------------------------------------------- - * Function: usage - * - Purpose: Prints help page - * - * Programmer: Raymond Lu - * Friday, Oct 3, 2003 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -usage(void) -{ - printf("Usage: perf_meta [-h] [-m] [-d]" - "[-a]\n" - "\t[-n] [-f