diff options
Diffstat (limited to 'tools')
91 files changed, 2833 insertions, 690 deletions
diff --git a/tools/Makefile.in b/tools/Makefile.in index 2e07a983..37be50f 100644 --- a/tools/Makefile.in +++ b/tools/Makefile.in @@ -419,16 +419,17 @@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ AR = @AR@ +ASSERTS = @ASSERTS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_MODE = @BUILD_MODE@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ CFLAGS = @CFLAGS@ -CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ @@ -441,7 +442,6 @@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_VERSION = @CXX_VERSION@ CYGPATH_W = @CYGPATH_W@ -DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -503,8 +503,8 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTRUMENT = @INSTRUMENT@ INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@ +INTERNAL_DEBUG_OUTPUT = @INTERNAL_DEBUG_OUTPUT@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ @@ -515,11 +515,11 @@ LL_PATH = @LL_PATH@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_STATIC_EXEC = @LT_STATIC_EXEC@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MEMORYALLOCSANITYCHECK = @MEMORYALLOCSANITYCHECK@ +METADATATRACEFILE = @METADATATRACEFILE@ MKDIR_P = @MKDIR_P@ MPE = @MPE@ NM = @NM@ @@ -527,6 +527,7 @@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@ OBJEXT = @OBJEXT@ +OPTIMIZATION = @OPTIMIZATION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ @@ -550,6 +551,7 @@ PAC_FORTRAN_NATIVE_REAL_KIND = @PAC_FORTRAN_NATIVE_REAL_KIND@ PAC_FORTRAN_NATIVE_REAL_SIZEOF = @PAC_FORTRAN_NATIVE_REAL_SIZEOF@ PARALLEL = @PARALLEL@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PROFILING = @PROFILING@ RANLIB = @RANLIB@ ROOT = @ROOT@ RUNPARALLEL = @RUNPARALLEL@ @@ -565,6 +567,7 @@ STATIC_EXEC = @STATIC_EXEC@ STATIC_SHARED = @STATIC_SHARED@ STRICT_FORMAT_CHECKS = @STRICT_FORMAT_CHECKS@ STRIP = @STRIP@ +SYMBOLS = @SYMBOLS@ TESTPARALLEL = @TESTPARALLEL@ THREADSAFE = @THREADSAFE@ TIME = @TIME@ diff --git a/tools/h5copy/Makefile.in b/tools/h5copy/Makefile.in index db0ef9e..532f269 100644 --- a/tools/h5copy/Makefile.in +++ b/tools/h5copy/Makefile.in @@ -427,16 +427,17 @@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ AR = @AR@ +ASSERTS = @ASSERTS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_MODE = @BUILD_MODE@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ CFLAGS = @CFLAGS@ -CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ @@ -449,7 +450,6 @@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_VERSION = @CXX_VERSION@ CYGPATH_W = @CYGPATH_W@ -DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -511,8 +511,8 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTRUMENT = @INSTRUMENT@ INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@ +INTERNAL_DEBUG_OUTPUT = @INTERNAL_DEBUG_OUTPUT@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ @@ -523,11 +523,11 @@ LL_PATH = @LL_PATH@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_STATIC_EXEC = @LT_STATIC_EXEC@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MEMORYALLOCSANITYCHECK = @MEMORYALLOCSANITYCHECK@ +METADATATRACEFILE = @METADATATRACEFILE@ MKDIR_P = @MKDIR_P@ MPE = @MPE@ NM = @NM@ @@ -535,6 +535,7 @@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@ OBJEXT = @OBJEXT@ +OPTIMIZATION = @OPTIMIZATION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ @@ -558,6 +559,7 @@ PAC_FORTRAN_NATIVE_REAL_KIND = @PAC_FORTRAN_NATIVE_REAL_KIND@ PAC_FORTRAN_NATIVE_REAL_SIZEOF = @PAC_FORTRAN_NATIVE_REAL_SIZEOF@ PARALLEL = @PARALLEL@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PROFILING = @PROFILING@ RANLIB = @RANLIB@ ROOT = @ROOT@ RUNPARALLEL = @RUNPARALLEL@ @@ -573,6 +575,7 @@ STATIC_EXEC = @STATIC_EXEC@ STATIC_SHARED = @STATIC_SHARED@ STRICT_FORMAT_CHECKS = @STRICT_FORMAT_CHECKS@ STRIP = @STRIP@ +SYMBOLS = @SYMBOLS@ TESTPARALLEL = @TESTPARALLEL@ THREADSAFE = @THREADSAFE@ TIME = @TIME@ diff --git a/tools/h5diff/Makefile.in b/tools/h5diff/Makefile.in index 28b2c25..d83cdf1 100644 --- a/tools/h5diff/Makefile.in +++ b/tools/h5diff/Makefile.in @@ -434,16 +434,17 @@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ AR = @AR@ +ASSERTS = @ASSERTS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_MODE = @BUILD_MODE@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ CFLAGS = @CFLAGS@ -CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ @@ -456,7 +457,6 @@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_VERSION = @CXX_VERSION@ CYGPATH_W = @CYGPATH_W@ -DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -518,8 +518,8 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTRUMENT = @INSTRUMENT@ INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@ +INTERNAL_DEBUG_OUTPUT = @INTERNAL_DEBUG_OUTPUT@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ @@ -530,11 +530,11 @@ LL_PATH = @LL_PATH@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_STATIC_EXEC = @LT_STATIC_EXEC@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MEMORYALLOCSANITYCHECK = @MEMORYALLOCSANITYCHECK@ +METADATATRACEFILE = @METADATATRACEFILE@ MKDIR_P = @MKDIR_P@ MPE = @MPE@ NM = @NM@ @@ -542,6 +542,7 @@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@ OBJEXT = @OBJEXT@ +OPTIMIZATION = @OPTIMIZATION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ @@ -565,6 +566,7 @@ PAC_FORTRAN_NATIVE_REAL_KIND = @PAC_FORTRAN_NATIVE_REAL_KIND@ PAC_FORTRAN_NATIVE_REAL_SIZEOF = @PAC_FORTRAN_NATIVE_REAL_SIZEOF@ PARALLEL = @PARALLEL@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PROFILING = @PROFILING@ RANLIB = @RANLIB@ ROOT = @ROOT@ RUNPARALLEL = @RUNPARALLEL@ @@ -580,6 +582,7 @@ STATIC_EXEC = @STATIC_EXEC@ STATIC_SHARED = @STATIC_SHARED@ STRICT_FORMAT_CHECKS = @STRICT_FORMAT_CHECKS@ STRIP = @STRIP@ +SYMBOLS = @SYMBOLS@ TESTPARALLEL = @TESTPARALLEL@ THREADSAFE = @THREADSAFE@ TIME = @TIME@ diff --git a/tools/h5dump/CMakeTestsVDS.cmake b/tools/h5dump/CMakeTestsVDS.cmake index 58287fa..cc68896 100644 --- a/tools/h5dump/CMakeTestsVDS.cmake +++ b/tools/h5dump/CMakeTestsVDS.cmake @@ -22,6 +22,11 @@ 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 @@ -47,6 +52,14 @@ 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 ) @@ -184,6 +197,12 @@ 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 @@ -196,6 +215,10 @@ 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 "") @@ -225,6 +248,9 @@ 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 @@ -235,4 +261,6 @@ 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/Makefile.in b/tools/h5dump/Makefile.in index f6d54d7..0b5802c 100644 --- a/tools/h5dump/Makefile.in +++ b/tools/h5dump/Makefile.in @@ -434,16 +434,17 @@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ AR = @AR@ +ASSERTS = @ASSERTS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_MODE = @BUILD_MODE@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ CFLAGS = @CFLAGS@ -CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ @@ -456,7 +457,6 @@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_VERSION = @CXX_VERSION@ CYGPATH_W = @CYGPATH_W@ -DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -518,8 +518,8 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTRUMENT = @INSTRUMENT@ INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@ +INTERNAL_DEBUG_OUTPUT = @INTERNAL_DEBUG_OUTPUT@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ @@ -530,11 +530,11 @@ LL_PATH = @LL_PATH@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_STATIC_EXEC = @LT_STATIC_EXEC@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MEMORYALLOCSANITYCHECK = @MEMORYALLOCSANITYCHECK@ +METADATATRACEFILE = @METADATATRACEFILE@ MKDIR_P = @MKDIR_P@ MPE = @MPE@ NM = @NM@ @@ -542,6 +542,7 @@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@ OBJEXT = @OBJEXT@ +OPTIMIZATION = @OPTIMIZATION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ @@ -565,6 +566,7 @@ PAC_FORTRAN_NATIVE_REAL_KIND = @PAC_FORTRAN_NATIVE_REAL_KIND@ PAC_FORTRAN_NATIVE_REAL_SIZEOF = @PAC_FORTRAN_NATIVE_REAL_SIZEOF@ PARALLEL = @PARALLEL@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PROFILING = @PROFILING@ RANLIB = @RANLIB@ ROOT = @ROOT@ RUNPARALLEL = @RUNPARALLEL@ @@ -580,6 +582,7 @@ STATIC_EXEC = @STATIC_EXEC@ STATIC_SHARED = @STATIC_SHARED@ STRICT_FORMAT_CHECKS = @STRICT_FORMAT_CHECKS@ STRIP = @STRIP@ +SYMBOLS = @SYMBOLS@ TESTPARALLEL = @TESTPARALLEL@ THREADSAFE = @THREADSAFE@ TIME = @TIME@ diff --git a/tools/h5dump/errfiles/tdset-2.err b/tools/h5dump/errfiles/tdset-2.err index 775351e..e594c1b 100644 --- a/tools/h5dump/errfiles/tdset-2.err +++ b/tools/h5dump/errfiles/tdset-2.err @@ -19,7 +19,7 @@ HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): 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 + major: Links minor: Object not found #001: (file name) line (number) in H5L_get_info(): name doesn't exist major: Symbol table diff --git a/tools/h5dump/errfiles/tperror.err b/tools/h5dump/errfiles/tperror.err index 29f9e7f..b469029 100644 --- a/tools/h5dump/errfiles/tperror.err +++ b/tools/h5dump/errfiles/tperror.err @@ -19,7 +19,7 @@ HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): 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 + major: Links minor: Object not found #001: (file name) line (number) in H5L_get_info(): name doesn't exist major: Symbol table diff --git a/tools/h5dump/h5dump.c b/tools/h5dump/h5dump.c index ffba581..7c24fa4 100644 --- a/tools/h5dump/h5dump.c +++ b/tools/h5dump/h5dump.c @@ -71,7 +71,7 @@ struct handler_t { */ /* 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:"; +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' }, @@ -190,6 +190,8 @@ static struct long_options l_opts[] = { { "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' } }; @@ -256,6 +258,8 @@ usage(const char *prog) 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"); @@ -1121,6 +1125,16 @@ parse_start: } 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': diff --git a/tools/h5dump/h5dump.h b/tools/h5dump/h5dump.h index 2b1fb04..7cf4efd 100644 --- a/tools/h5dump/h5dump.h +++ b/tools/h5dump/h5dump.h @@ -78,6 +78,8 @@ int enable_error_stack= FALSE; /* re-enable error stack */ 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] */ diff --git a/tools/h5dump/h5dump_ddl.c b/tools/h5dump/h5dump_ddl.c index fd50710..09751ab 100644 --- a/tools/h5dump/h5dump_ddl.c +++ b/tools/h5dump/h5dump_ddl.c @@ -26,12 +26,12 @@ typedef struct { hid_t fid; /* File ID being traversed */ - char *op_name; /* Object name wanted */ + char *op_name; /* Object name wanted */ } trav_handle_udata_t; typedef struct { - char *path; /* Path of object being searched */ - char *op_name; /* Object name wanted */ + char *path; /* Path of object being searched */ + char *op_name; /* Object name wanted */ } trav_attr_udata_t; /* callback function used by H5Literate() */ @@ -90,7 +90,7 @@ dump_dataspace(hid_t space) HDmemset(&ctx, 0, sizeof(ctx)); ctx.indent_level = dump_indent/COL; ctx.cur_column = dump_indent; - + h5tools_dump_dataspace(rawoutstream, outputformat, &ctx, space); } @@ -117,19 +117,19 @@ dump_attr_cb(hid_t oid, const char *attr_name, const H5A_info_t H5_ATTR_UNUSED * 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) { @@ -155,7 +155,7 @@ dump_attr_cb(hid_t oid, const char *attr_name, const H5A_info_t H5_ATTR_UNUSED * h5tools_setstatus(EXIT_FAILURE); ret = FAIL; } - + return ret; } @@ -185,6 +185,7 @@ 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 */ @@ -199,7 +200,7 @@ dump_all_cb(hid_t group, const char *name, const H5L_info_t *linfo, void H5_ATTR HDmemset(&ctx, 0, sizeof(ctx)); ctx.indent_level = dump_indent/COL; ctx.cur_column = dump_indent; - + string_dataformat = *outputformat; if (fp_format) { @@ -222,8 +223,8 @@ dump_all_cb(hid_t group, const char *name, const H5L_info_t *linfo, void H5_ATTR if(!obj_path) { ret = FAIL; goto done; - } - + } + HDstrcpy(obj_path, prefix); HDstrcat(obj_path, "/"); HDstrcat(obj_path, name); @@ -269,7 +270,20 @@ dump_all_cb(hid_t group, const char *name, const H5L_info_t *linfo, void H5_ATTR break; case H5O_TYPE_DATASET: - if((obj = H5Dopen2(group, name, H5P_DEFAULT)) >= 0) { + 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 */ @@ -308,9 +322,11 @@ dump_all_cb(hid_t group, const char *name, const H5L_info_t *linfo, void H5_ATTR 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); @@ -347,18 +363,24 @@ dump_all_cb(hid_t group, const char *name, const H5L_info_t *linfo, void H5_ATTR 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) + H5Pclose(dapl_id && dapl_id != H5P_DEFAULT); error_msg("unable to dump dataset \"%s\"\n", name); h5tools_setstatus(EXIT_FAILURE); ret = FAIL; @@ -370,7 +392,7 @@ dump_all_cb(hid_t group, const char *name, const H5L_info_t *linfo, void H5_ATTR 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); @@ -408,7 +430,7 @@ dump_all_cb(hid_t group, const char *name, const H5L_info_t *linfo, void H5_ATTR 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 */ @@ -558,7 +580,7 @@ dump_all_cb(hid_t group, const char *name, const H5L_info_t *linfo, void H5_ATTR done: h5tools_str_close(&buffer); - + if(obj_path) HDfree(obj_path); return ret; @@ -650,7 +672,7 @@ dump_named_datatype(hid_t tid, const char *name) HDmemset(&ctx, 0, sizeof(ctx)); ctx.indent_level = dump_indent/COL; ctx.cur_column = dump_indent; - + string_dataformat = *outputformat; if (fp_format) { @@ -685,7 +707,7 @@ dump_named_datatype(hid_t tid, const char *name) } ctx.need_prefix = TRUE; - + /* Render the element */ h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "%s \"%s\" %s", @@ -718,7 +740,7 @@ dump_named_datatype(hid_t tid, const char *name) else found_obj->displayed = TRUE; } /* end if */ - + /* Render the element */ h5tools_str_reset(&buffer); h5tools_print_datatype(rawoutstream, &buffer, outputformat, &ctx, tid, FALSE); @@ -726,7 +748,7 @@ dump_named_datatype(hid_t tid, const char *name) 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 */ @@ -813,7 +835,7 @@ dump_group(hid_t gid, const char *name) HDmemset(&ctx, 0, sizeof(ctx)); ctx.indent_level = dump_indent/COL; ctx.cur_column = dump_indent; - + string_dataformat = *outputformat; if (fp_format) { @@ -839,7 +861,7 @@ dump_group(hid_t gid, const char *name) 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; @@ -948,7 +970,7 @@ dump_dataset(hid_t did, const char *name, struct subset_t *sset) HDmemset(&ctx, 0, sizeof(ctx)); ctx.indent_level = dump_indent/COL; ctx.cur_column = dump_indent; - + string_dataformat = *outputformat; if (fp_format) { @@ -982,7 +1004,7 @@ dump_dataset(hid_t did, const char *name, struct subset_t *sset) 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", @@ -994,7 +1016,7 @@ dump_dataset(hid_t did, const char *name, struct subset_t *sset) dump_indent += COL; ctx.indent_level++; - + type = H5Dget_type(did); h5dump_type_table = type_table; h5tools_dump_datatype(rawoutstream, outputformat, &ctx, type); @@ -1018,6 +1040,7 @@ dump_dataset(hid_t did, const char *name, struct subset_t *sset) if(display_data) { int data_loop = 1; int i; + if(display_packed_bits) data_loop = packed_bits_num; for(i=0; i<data_loop; i++) { @@ -1042,7 +1065,7 @@ dump_dataset(hid_t did, const char *name, struct subset_t *sset) 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; @@ -1079,7 +1102,7 @@ dump_dataset(hid_t did, const char *name, struct subset_t *sset) 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)) { @@ -1189,7 +1212,7 @@ dump_fcpl(hid_t fid) fdriver=H5Pget_driver(fapl); H5Pclose(fapl); #endif - + /*------------------------------------------------------------------------- * SUPER_BLOCK *------------------------------------------------------------------------- @@ -1308,54 +1331,54 @@ 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 i; - int j; - int k; - char *obj_op_name; + int i; + int j; + int k; + char *obj_op_name; char *obj_name; - trav_attr_udata_t *attr_data = (trav_attr_udata_t*)_op_data; + trav_attr_udata_t *attr_data = (trav_attr_udata_t*)_op_data; char *buf = attr_data->path; - char *op_name = attr_data->op_name; + 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--; + 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; + h5tools_setstatus(EXIT_FAILURE); + ret = FAIL; } else { - if(HDstrcmp(attr_name, obj_op_name)==0) { - /* object name */ - i = (int)HDstrlen(buf); - j = (int)HDstrlen(op_name); - k = (size_t)i + 1 + (size_t)j + 1 + 2; - obj_name = (char *)HDmalloc((size_t)k); - if(obj_name == NULL) { - h5tools_setstatus(EXIT_FAILURE); - ret = FAIL; - } - else { - HDmemset(obj_name, '\0', (size_t)k); - if(op_name[0] != '/') { - HDstrncat(obj_name, buf, (size_t)i + 1); - if(buf[i-1] != '/') - HDstrncat(obj_name, "/", (size_t)2); - } - HDstrncat(obj_name, op_name, (size_t)j + 1); - - handle_attributes(oid, obj_name, NULL, 0, NULL); - HDfree(obj_name); - } - } - HDfree(obj_op_name); + if(HDstrcmp(attr_name, obj_op_name)==0) { + /* object name */ + i = (int)HDstrlen(buf); + j = (int)HDstrlen(op_name); + k = (size_t)i + 1 + (size_t)j + 1 + 2; + obj_name = (char *)HDmalloc((size_t)k); + if(obj_name == NULL) { + h5tools_setstatus(EXIT_FAILURE); + ret = FAIL; + } + else { + HDmemset(obj_name, '\0', (size_t)k); + if(op_name[0] != '/') { + HDstrncat(obj_name, buf, (size_t)i + 1); + if(buf[i-1] != '/') + HDstrncat(obj_name, "/", (size_t)2); + } + HDstrncat(obj_name, op_name, (size_t)j + 1); + + handle_attributes(oid, obj_name, NULL, 0, NULL); + HDfree(obj_name); + } + } + HDfree(obj_op_name); } return ret; } /* end attr_search() */ @@ -1363,7 +1386,7 @@ attr_search(hid_t oid, const char *attr_name, const H5A_info_t H5_ATTR_UNUSED *a 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; + trav_handle_udata_t *handle_data = (trav_handle_udata_t*)_op_data; char *op_name = (char*)handle_data->op_name; trav_attr_udata_t attr_data; @@ -1372,22 +1395,22 @@ obj_search(const char *path, const H5O_info_t *oi, const char H5_ATTR_UNUSED *al 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 */ + 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; @@ -1397,48 +1420,48 @@ static herr_t lnk_search(const char *path, const H5L_info_t *li, void *_op_data) { int search_len; - int k; + int k; char *search_name; - trav_handle_udata_t *handle_data = (trav_handle_udata_t*)_op_data; + trav_handle_udata_t *handle_data = (trav_handle_udata_t*)_op_data; char *op_name = (char*)handle_data->op_name; search_len = HDstrlen(op_name); if(search_len > 0 && op_name[0] != '/') { - k = 2; + k = 2; } else k = 1; - search_name = (char *)HDmalloc((size_t)(search_len + k)); + search_name = (char *)HDmalloc((size_t)(search_len + k)); if(search_name == NULL) { - error_msg("creating temporary link\n"); - h5tools_setstatus(EXIT_FAILURE); + error_msg("creating temporary link\n"); + h5tools_setstatus(EXIT_FAILURE); } else { - if (k == 2) { - HDstrcpy(search_name, "/"); - HDstrncat(search_name, op_name, (size_t)search_len + 1); - } - else - HDstrncpy(search_name, op_name, (size_t)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); + if (k == 2) { + HDstrcpy(search_name, "/"); + HDstrncat(search_name, op_name, (size_t)search_len + 1); + } + else + HDstrncpy(search_name, op_name, (size_t)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() */ @@ -1465,7 +1488,7 @@ handle_paths(hid_t fid, const char *path_name, void H5_ATTR_UNUSED * data, int H hid_t gcpl_id; unsigned crt_order_flags; unsigned attr_crt_order_flags; - trav_handle_udata_t handle_udata; /* User data for traversal */ + 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"); @@ -1489,12 +1512,12 @@ handle_paths(hid_t fid, const char *path_name, void H5_ATTR_UNUSED * data, int H h5tools_setstatus(EXIT_FAILURE); } - handle_udata.fid = fid; - handle_udata.op_name = (char*)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); - } + handle_udata.fid = fid; + handle_udata.op_name = (char*)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); + } } } @@ -1536,7 +1559,7 @@ handle_attributes(hid_t fid, const char *attr, void H5_ATTR_UNUSED * data, int H /* find the last / */ while(j >= 0) { - if (attr[j] == '/' && (j==0 || (j>0 && attr[j-1]!='\\'))) + if (attr[j] == '/' && (j==0 || (j>0 && attr[j-1]!='\\'))) break; j--; } @@ -1571,7 +1594,7 @@ handle_attributes(hid_t fid, const char *attr, void H5_ATTR_UNUSED * data, int H string_dataformat.do_escape = display_escape; outputformat = &string_dataformat; - attr_name = h5tools_str_replace(attr + j + 1, "\\/", "/"); + 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) { @@ -1627,7 +1650,7 @@ handle_attributes(hid_t fid, const char *attr, void H5_ATTR_UNUSED * data, int H } /* end if */ HDfree(obj_name); - HDfree(attr_name); + HDfree(attr_name); dump_indent -= COL; return; @@ -1635,9 +1658,9 @@ error: h5tools_setstatus(EXIT_FAILURE); if(obj_name) HDfree(obj_name); - - if (attr_name) - HDfree(attr_name); + + if (attr_name) + HDfree(attr_name); H5E_BEGIN_TRY { H5Oclose(oid); @@ -1672,10 +1695,24 @@ handle_datasets(hid_t fid, const char *dset, void *data, int pe, const char *dis { 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((dsetid = H5Dopen2(fid, dset, H5P_DEFAULT)) < 0) { + 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); } @@ -1752,7 +1789,7 @@ handle_datasets(hid_t fid, const char *dset, void *data, int pe, const char *dis h5tools_setstatus(EXIT_FAILURE); return; } - + /*------------------------------------------------------------------------- * check for block overlap *------------------------------------------------------------------------- @@ -1785,7 +1822,7 @@ handle_datasets(hid_t fid, const char *dset, void *data, int pe, const char *dis 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; @@ -1801,7 +1838,8 @@ handle_datasets(hid_t fid, const char *dset, void *data, int pe, const char *dis 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); } @@ -1884,11 +1922,11 @@ handle_links(hid_t fid, const char *links, void H5_ATTR_UNUSED * data, int H5_AT 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"); @@ -1925,12 +1963,12 @@ handle_links(hid_t fid, const char *links, void H5_ATTR_UNUSED * data, int H5_AT 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); diff --git a/tools/h5dump/h5dump_extern.h b/tools/h5dump/h5dump_extern.h index 08f9e36..62477d0 100644 --- a/tools/h5dump/h5dump_extern.h +++ b/tools/h5dump/h5dump_extern.h @@ -77,6 +77,8 @@ extern int enable_error_stack; /* re-enable error stack */ 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] */ diff --git a/tools/h5dump/testh5dumpvds.sh.in b/tools/h5dump/testh5dumpvds.sh.in index b15606f..850c03a 100644 --- a/tools/h5dump/testh5dumpvds.sh.in +++ b/tools/h5dump/testh5dumpvds.sh.in @@ -98,6 +98,14 @@ $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=" @@ -113,6 +121,11 @@ $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=" @@ -480,6 +493,9 @@ if test $USE_FILTER_DEFLATE = "yes" ; then 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 @@ -490,6 +506,8 @@ if test $USE_FILTER_DEFLATE = "yes" ; then 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 diff --git a/tools/h5format_convert/Makefile.in b/tools/h5format_convert/Makefile.in index 79bc42f..fd31dce 100644 --- a/tools/h5format_convert/Makefile.in +++ b/tools/h5format_convert/Makefile.in @@ -432,16 +432,17 @@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ AR = @AR@ +ASSERTS = @ASSERTS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_MODE = @BUILD_MODE@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ CFLAGS = @CFLAGS@ -CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ @@ -454,7 +455,6 @@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_VERSION = @CXX_VERSION@ CYGPATH_W = @CYGPATH_W@ -DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -516,8 +516,8 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTRUMENT = @INSTRUMENT@ INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@ +INTERNAL_DEBUG_OUTPUT = @INTERNAL_DEBUG_OUTPUT@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ @@ -528,11 +528,11 @@ LL_PATH = @LL_PATH@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_STATIC_EXEC = @LT_STATIC_EXEC@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MEMORYALLOCSANITYCHECK = @MEMORYALLOCSANITYCHECK@ +METADATATRACEFILE = @METADATATRACEFILE@ MKDIR_P = @MKDIR_P@ MPE = @MPE@ NM = @NM@ @@ -540,6 +540,7 @@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@ OBJEXT = @OBJEXT@ +OPTIMIZATION = @OPTIMIZATION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ @@ -563,6 +564,7 @@ PAC_FORTRAN_NATIVE_REAL_KIND = @PAC_FORTRAN_NATIVE_REAL_KIND@ PAC_FORTRAN_NATIVE_REAL_SIZEOF = @PAC_FORTRAN_NATIVE_REAL_SIZEOF@ PARALLEL = @PARALLEL@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PROFILING = @PROFILING@ RANLIB = @RANLIB@ ROOT = @ROOT@ RUNPARALLEL = @RUNPARALLEL@ @@ -578,6 +580,7 @@ STATIC_EXEC = @STATIC_EXEC@ STATIC_SHARED = @STATIC_SHARED@ STRICT_FORMAT_CHECKS = @STRICT_FORMAT_CHECKS@ STRIP = @STRIP@ +SYMBOLS = @SYMBOLS@ TESTPARALLEL = @TESTPARALLEL@ THREADSAFE = @THREADSAFE@ TIME = @TIME@ diff --git a/tools/h5format_convert/h5fc_gentest.c b/tools/h5format_convert/h5fc_gentest.c index 888aa27..54ef3df 100644 --- a/tools/h5format_convert/h5fc_gentest.c +++ b/tools/h5format_convert/h5fc_gentest.c @@ -23,15 +23,30 @@ * 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" + +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 OLD_V1_FILE "h5fc_v1.h5" -#define DSET_NON_CHUNKED "DSET_NON_CHUNKED" #define DSET_BT1 "DSET_BT1" #define DSET_NDATA_BT1 "DSET_NDATA_BT1" +#define DSET_COMPACT "DSET_COMPACT" +#define DSET_CONTIGUOUS "DSET_CONTIGUOUS" -#define LATEST_V3_FILE "h5fc_latest_v3.h5" #define DSET_EA "DSET_EA" #define DSET_NDATA_EA "DSET_NDATA_EA" #define DSET_BT2 "DSET_BT2" @@ -41,58 +56,84 @@ #define DSET_NONE "DSET_NONE" #define DSET_NDATA_NONE "DSET_NDATA_NONE" -#define NON_V3_FILE "h5fc_non_v3.h5" - -#define EDGE_V3_FILE "h5fc_edge_v3.h5" #define DSET_EDGE "DSET_EDGE" +#define ISTORE_IK 64 + /* - * Function: gen_old() + * Function: gen_latest() * - * Create an old format file with: - * 1) 1 non-chunked dataset - * 2) 2 chunked datasets with version 1 B-tree chunk indexing type: with/without data + * Create a file with write+latest-format--this will result in v3 superblock+latest version support: + * 1) 2 chunked datasets with extensible array chunk indexing type (with/without data) + * 2) 2 chunked datasets with version 2 B-tree chunk indexing type (with/without data) + * 3) 2 chunked datasets with fixed array chunk indexing type (with/without data) + * 4) 2 chunked datasets with implicit array chunk indexing type (with/without data) + */ + +/* + * Function: gen_non() + * + * Create a file with SWMR write+non-latest-format--this will result in v3 superbock+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_old(const char *fname) +gen_non(const char *fname) { - hid_t fid = -1; /* file id */ - hid_t fcpl = -1; - hid_t gid = -1; /* group id */ - hid_t sid = -1; /* space id */ - hid_t dcpl = -1; /* dataset creation property id */ + hid_t fid = -1; /* file id */ + 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((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; - /* Create file */ - if((fid = H5Fcreate(fname, H5F_ACC_TRUNC, fcpl, H5P_DEFAULT)) < 0) + /* Create a new file with SWMR_WRITE + non-latest-format */ + if((fid = H5Fcreate(fname, H5F_ACC_TRUNC|H5F_ACC_SWMR_WRITE, fcpl, H5P_DEFAULT)) < 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 non-chunked dataset + * Create a chunked dataset with extensible array chunk indexing type (without data) */ /* Create dataspace */ - if((sid = H5Screate_simple(1, dims1, NULL)) < 0) + 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_NON_CHUNKED, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) + if((did1 = H5Dcreate2(fid, DSET_NDATA_EA, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) goto error; /* Closing */ @@ -102,114 +143,70 @@ gen_old(const char *fname) goto error; /* - * Create two chunked datasets with version 1 B-tree chunk indexing type - * (one with data, one without data) + * Create a chunked dataset with version 2 B-tree chunk indexing type (with data) */ - /* 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 dataspace */ - if((sid = H5Screate_simple(2, dims2, NULL)) < 0) + 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_BT1, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) + /* Create the dataset */ + if((did1 = H5Dcreate2(gid, DSET_BT2, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) goto error; - if((did2 = H5Dcreate2(gid, DSET_BT1, 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) + /* Write to the dataset */ + if(H5Dwrite(did1, H5T_NATIVE_INT, 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(did1) < 0) goto error; - if(H5Dclose(did2) < 0) + 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); - } H5E_END_TRY; + /* Re-open the file with old format */ + if((fid = H5Fopen(fname, H5F_ACC_RDWR, H5P_DEFAULT)) < 0) + goto error; -} /* gen_old() */ + /* Open the group */ + if((gid = H5Gopen2(fid, GROUP, H5P_DEFAULT)) < 0) + goto error; -/* - * Function: gen_latest() - * - * Create a file with write+latest-format--this will result in v3 superblock+latest version support: - * 1) 2 chunked datasets with extensible array chunk indexing type (with/without data) - * 2) 2 chunked datasets with version 2 B-tree chunk indexing type (with/without data) - * 3) 2 chunked datasets with fixed array chunk indexing type (with/without data) - * 4) 2 chunked datasets with implicit array chunk indexing type (with/without data) - */ -static void -gen_latest(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 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 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 */ + /* + * Create a dataset with version 2 B-btree chunk indexing type (without data) + */ - /* Create a new format file */ - if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) + /* Set chunk */ + if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) goto error; - if(H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0) + if(H5Pset_chunk(dcpl, 2, c_dims) < 0) goto error; - if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) - goto error; - if(H5Pset_shared_mesg_nindexes(fcpl, 4) < 0) - goto error; - - if((fid = H5Fcreate(fname, H5F_ACC_TRUNC, fcpl, fapl)) < 0) + /* Create dataspace */ + max_dims[0] = H5S_UNLIMITED; + max_dims[1] = H5S_UNLIMITED; + if((sid = H5Screate_simple(2, dims2, max_dims)) < 0) goto error; - /* Create a group */ - if((gid = H5Gcreate2(fid, GROUP, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) + /* Create the dataset */ + if((did1 = H5Dcreate2(fid, DSET_NDATA_BT2, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) goto error; - /* Set chunk */ - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) - goto error; - if(H5Pset_chunk(dcpl, 2, c_dims) < 0) + /* Close the dataspace */ + if(H5Sclose(sid) < 0) goto error; - /* - * Create 2 chunked datasets with extensible array chunk indexing type - * (one with data; one without data) + /* + * Create a dataset with extensible array chunk indexing type (with data) in the group */ /* Create dataspace */ @@ -218,127 +215,155 @@ gen_latest(const char *fname) 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) + /* Create the dataset */ + if((did2 = H5Dcreate2(gid, 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 */ + /* 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 2 chunked datasets with version 2 B-tree chunk indexing type - * (one with data; one without data) + * Create a compact dataset in the group */ /* 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) + if((sid = H5Screate_simple(1, dims1, NULL)) < 0) goto error; - /* Create the 2 datasets */ - if((did1 = H5Dcreate2(fid, DSET_NDATA_BT2, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) + if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) goto error; - - if((did2 = H5Dcreate2(gid, DSET_BT2, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) + if(H5Pset_layout(dcpl, H5D_COMPACT) < 0) goto error; - /* Write to one dataset */ - if(H5Dwrite(did2, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) + /* Create the dataset */ + if((did1 = H5Dcreate2(gid, DSET_COMPACT, 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; - if(H5Dclose(did2) < 0) + if(H5Pclose(dcpl) < 0) + goto error; + if(H5Sclose(sid) < 0) goto error; - /* - * Create 2 chunked datasets with fixed array chunk indexing type - * (one with data; one without data) + /* + * Create a contiguous dataset with (2d with data) in the file */ - - /* Create dataspace */ - max_dims[0] = 20; - max_dims[1] = 10; - if((sid = H5Screate_simple(2, dims2, max_dims)) < 0) + if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) goto error; - - /* Create the datasets */ - if((did1 = H5Dcreate2(fid, DSET_FA, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) + if(H5Pset_layout(dcpl, H5D_CONTIGUOUS) < 0) goto error; - if((did2 = H5Dcreate2(gid, DSET_NDATA_FA, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) + 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(did1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) + 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(H5Dclose(did1) < 0) + + if(H5Gclose(gid) < 0) goto error; - if(H5Dclose(did2) < 0) + if(H5Fclose(fid) < 0) goto error; +error: + H5E_BEGIN_TRY { + H5Pclose(dcpl); + H5Sclose(sid); + H5Dclose(did1); + H5Dclose(did2); + H5Gclose(gid); + H5Fclose(fid); + } H5E_END_TRY; - /* - * Create 2 chunked datasets with implicit chunk indexing type - * (one with data; one without data) - */ +} /* gen_non() */ - /* Create dataspace */ - if((sid = H5Screate_simple(2, dims2, NULL)) < 0) - goto error; +/* + * 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 */ - /* Set early allocation */ - if(H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_EARLY) < 0) + /* Create a new format file */ + if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) goto error; - - /* Create the 2 datasets */ - if((did1 = H5Dcreate2(fid, DSET_NONE, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) + 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; - if((did2 = H5Dcreate2(gid, DSET_NDATA_NONE, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) + /* 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; - /* Write to one dataset */ - if(H5Dwrite(did1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) + /* 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(H5Dclose(did1) < 0) - goto error; - if(H5Dclose(did2) < 0) + if(H5Pclose(dcpl) < 0) goto error; if(H5Sclose(sid) < 0) goto error; - - if(H5Pclose(dcpl) < 0) + if(H5Dclose(did) < 0) goto error; - if(H5Gclose(gid) < 0) + if(H5Pclose(fapl) < 0) goto error; if(H5Fclose(fid) < 0) goto error; @@ -347,34 +372,35 @@ error: H5E_BEGIN_TRY { H5Pclose(dcpl); H5Sclose(sid); - H5Dclose(did1); - H5Dclose(did2); - H5Gclose(gid); + H5Dclose(did); H5Fclose(fid); H5Pclose(fapl); } H5E_END_TRY; -} /* gen_latest() */ +} /* gen_edge() */ + /* - * Function: gen_non() + * Function: gen_ext() * - * Create a file with SWMR write+non-latest-format--this will result in v3 superbock+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 non-chunked dataset + * 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_non(const char *fname) +gen_ext(const char *fname, unsigned new, unsigned what) { - hid_t fid = -1; /* file id */ - hid_t fcpl = -1; /* file creation property list */ - hid_t gid = -1; /* group id */ + 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 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 */ @@ -383,43 +409,75 @@ gen_non(const char *fname) 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; - /* Create a new file with SWMR_WRITE + non-latest-format */ - if((fid = H5Fcreate(fname, H5F_ACC_TRUNC|H5F_ACC_SWMR_WRITE, fcpl, H5P_DEFAULT)) < 0) + if(new) { + /* Create a new format file */ + if(H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0) + goto error; + } + + /* 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, 0, (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; - /* 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 a contiguous dataset */ /* Create dataspace */ - max_dims[0] = 10; - max_dims[1] = H5S_UNLIMITED; - if((sid = H5Screate_simple(2, dims2, max_dims)) < 0) + if((sid = H5Screate_simple(1, dims1, NULL)) < 0) goto error; /* Create the dataset */ - if((did1 = H5Dcreate2(fid, DSET_NDATA_EA, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) + if((did1 = H5Dcreate2(fid, DSET_CONTIGUOUS, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) goto error; /* Closing */ @@ -429,22 +487,29 @@ gen_non(const char *fname) goto error; /* - * Create a chunked dataset with version 2 B-tree chunk indexing type (with data) + * Create 2 chunked datasets with extensible array 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 dataset */ - if((did1 = H5Dcreate2(gid, DSET_BT2, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) + /* Create the 2 datasets */ + if((did1 = H5Dcreate2(gid, DSET_NDATA_EA, 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) + 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 */ @@ -452,61 +517,61 @@ gen_non(const char *fname) goto error; if(H5Dclose(did1) < 0) goto error; - if(H5Pclose(dcpl) < 0) - goto error; - if(H5Gclose(gid) < 0) - goto error; - if(H5Fclose(fid) < 0) - goto error; - - /* Re-open the file with old format */ - if((fid = H5Fopen(fname, H5F_ACC_RDWR, H5P_DEFAULT)) < 0) + if(H5Dclose(did2) < 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) + /* + * Create 2 chunked datasets with version 2 B-tree chunk indexing type + * (one with data; one 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] = 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(fid, DSET_NDATA_BT2, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) + /* Create the 2 datasets */ + if((did1 = H5Dcreate2(fid, DSET_NDATA_BT2, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) goto error; - /* Close the dataspace */ + 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 a dataset with version extensible array chunk indexing type (with data) in the group + * Create 2 chunked datasets with fixed array chunk indexing type + * (one with data; one without data) */ /* Create dataspace */ - max_dims[0] = 10; - max_dims[1] = H5S_UNLIMITED; + max_dims[0] = 20; + max_dims[1] = 10; 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) + /* 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(did2, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) + if(H5Dwrite(did1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) goto error; /* Closing */ @@ -517,106 +582,42 @@ gen_non(const char *fname) if(H5Dclose(did2) < 0) goto error; + /* - * Create a non-chunked dataset in the group + * Create 2 chunked datasets with implicit chunk indexing type + * (one with data; one without data) */ /* Create dataspace */ - if((sid = H5Screate_simple(1, dims1, NULL)) < 0) + if((sid = H5Screate_simple(2, dims2, NULL)) < 0) goto error; - /* Create the dataset */ - if((did1 = H5Dcreate2(gid, DSET_NON_CHUNKED, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) + /* Set early allocation */ + if(H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_EARLY) < 0) goto error; - /* Closing */ - if(H5Sclose(sid) < 0) - goto error; - if(H5Dclose(did1) < 0) + /* Create the 2 datasets */ + if((did1 = H5Dcreate2(fid, DSET_NONE, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) goto error; - if(H5Gclose(gid) < 0) - goto error; - if(H5Fclose(fid) < 0) - goto error; - if(H5Pclose(dcpl) < 0) + if((did2 = H5Dcreate2(gid, DSET_NDATA_NONE, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) goto error; -error: - H5E_BEGIN_TRY { - H5Pclose(dcpl); - H5Sclose(sid); - H5Dclose(did1); - H5Dclose(did2); - H5Gclose(gid); - 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) + /* Write to one dataset */ + if(H5Dwrite(did1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) goto error; - /* Set chunk, filter, no-filter-edge-chunk */ - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) + /* Closing */ + if(H5Dclose(did1) < 0) goto error; - if(H5Pset_chunk(dcpl, 2, c_dims) < 0) + if(H5Dclose(did2) < 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) + if(H5Sclose(sid) < 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) + if(H5Gclose(gid) < 0) goto error; if(H5Fclose(fid) < 0) goto error; @@ -625,25 +626,39 @@ error: H5E_BEGIN_TRY { H5Pclose(dcpl); H5Sclose(sid); - H5Dclose(did); + H5Dclose(did1); + H5Dclose(did2); + H5Gclose(gid); H5Fclose(fid); H5Pclose(fapl); + H5Pclose(fcpl); } H5E_END_TRY; -} /* gen_edge() */ +} /* gen_ext() */ int main(void) { - /* Generate an old format file with v1 superbock */ - gen_old(OLD_V1_FILE); - - /* Generate a latest-format file with v3 superblock */ - gen_latest(LATEST_V3_FILE); + unsigned i, new; /* 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 for testing */ + /* Generate a new format file with a no-filter-edge-chunk dataset */ gen_edge(EDGE_V3_FILE); + + /* Generate old/new format file with/without messages in the superblock extension */ + for(new = FALSE; new <= TRUE; new++) { + for(i = 0; i < 8; i++) { + char filename[50]; + + HDmemset(filename, 0, sizeof(filename)); + if(!new) + HDstrcat(filename, "old_"); + HDstrcat(filename, FILENAME[i]); + + gen_ext(filename, new, i); + } + } /* end for new */ + return 0; } diff --git a/tools/h5format_convert/h5format_convert.c b/tools/h5format_convert/h5format_convert.c index a80e332..105ac5d 100644 --- a/tools/h5format_convert/h5format_convert.c +++ b/tools/h5format_convert/h5format_convert.c @@ -88,16 +88,20 @@ static void usage(const char *prog) printf("Examples of use:\n"); printf("\n"); printf("h5format_convert -d /group/dataset file_name\n"); - printf(" Convert the chunk indexing type to version 1 B-tree\n"); - printf(" for the chunked dataset </group/dataset> in the HDF5 file <file_name>.\n"); + printf(" Convert the dataset </group/dataset> in the HDF5 file <file_name>:\n"); + printf(" a. chunked dataset: convert the chunk indexing type to version 1 B-tree\n"); + printf(" b. compact/contiguous dataset: downgrade the layout version to 3\n"); + printf(" c. virtual dataset: no action\n"); printf("\n"); printf("h5format_convert file_name\n"); - printf(" Convert the chunk indexing type to version 1 B-tree\n"); - printf(" for all the chunked datasets in the HDF5 file <file_name>.\n"); + printf(" Convert all datasets in the HDF5 file <file_name>:\n"); + printf(" a. chunked dataset: convert the chunk indexing type to version 1 B-tree\n"); + printf(" b. compact/contiguous dataset: downgrade the layout version to 3\n"); + printf(" c. virtual dataset: no action\n"); printf("\n"); printf("h5format_convert -n -d /group/dataset file_name\n"); printf(" Go through all the steps except the actual conversion when \n"); - printf(" converting the chunked dataset </group/dataset> in the HDF5 file <file_name>.\n"); + printf(" converting the dataset </group/dataset> in the HDF5 file <file_name>.\n"); } /* usage() */ /*------------------------------------------------------------------------- @@ -200,11 +204,15 @@ leave(int ret) /*------------------------------------------------------------------------- * Function: convert() * - * Purpose: To change the chunk indexing type for the dataset to version 1 B-tree. - * -- the dataset has to be chunked - * -- the dataset's chunk indexing type is not already version 1 B-tree. - * If the above conditions are not fulfilled, the tool will not perform - * the conversion but will exit with success. + * 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 @@ -244,34 +252,49 @@ convert(hid_t fid, const char *dname) } else if(verbose_g) printf("Retrieve the dataset's layout\n"); - /* No further action if not a chunked dataset */ - if(layout_type != H5D_CHUNKED) { - if(verbose_g) - printf("Dataset is not chunked: no further action\n"); - h5tools_setstatus(EXIT_SUCCESS); - goto done; + switch(layout_type) { + case H5D_CHUNKED: + if(verbose_g) + printf("Dataset is a chunked dataset\n"); - } else if(verbose_g) - printf("Verify the 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) + printf("Retrieve the dataset's chunk indexing type\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; + if(idx_type == H5D_CHUNK_IDX_BTREE) { + if(verbose_g) + printf("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) + printf("Dataset's chunk indexing type is not version 1 B-tree\n"); + break; - } else if(verbose_g) - printf("Retrieve the dataset's chunk indexing type\n"); + case H5D_CONTIGUOUS: + if(verbose_g) + printf("Dataset is a contiguous dataset: downgrade layout version as needed\n"); + break; - /* No further action if the chunk indexing type is already version 1 B-tree */ - if(idx_type == H5D_CHUNK_IDX_BTREE) { - if(verbose_g) - printf("Chunk indexing type is already version 1 B-tree: no further action\n"); - h5tools_setstatus(EXIT_SUCCESS); - goto done; + case H5D_COMPACT: + if(verbose_g) + printf("Dataset is a compact dataset: downgrade layout version as needed\n"); + break; + + case H5D_VIRTUAL: + if(verbose_g) + printf("No further action for virtual dataset\n"); + goto done; - } else if (verbose_g) - printf("Verify the dataset's chunk indexing type is not version 1 B-tree\n"); + 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) { @@ -284,12 +307,11 @@ convert(hid_t fid, const char *dname) if(verbose_g) printf("Converting the dataset...\n"); - /* Convert the dataset's chunk indexing type to version 1 B-tree */ + /* Downgrade the dataset */ if(H5Dformat_convert(did) < 0) { - error_msg("unable to convert chunk indexing for \"%s\"\n", dname); + error_msg("unable to downgrade dataset for \"%s\"\n", dname); h5tools_setstatus(EXIT_FAILURE); goto error; - } else if(verbose_g) printf("Done\n"); @@ -377,9 +399,6 @@ main(int argc, const char *argv[]) H5E_auto2_t func; void *edata; hid_t fid = -1; - hid_t fcpl = -1; - H5F_file_space_type_t strategy; - hsize_t threshold; h5tools_setprogname(PROGRAMNAME); h5tools_setstatus(EXIT_SUCCESS); @@ -408,28 +427,6 @@ main(int argc, const char *argv[]) } else if(verbose_g) printf("Open the file %s\n", fname_g); - /* A temporaray fix: - * need to handle H5O_FSINFO_ID message when downgrade superblock version from 3 to 2 - */ - if((fcpl = H5Fget_create_plist(fid)) < 0) { - error_msg("unable to get file creation property list for \"%s\"\n", fname_g); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - if(H5Pget_file_space(fcpl, &strategy, &threshold) < 0) { - error_msg("unable to get file space strategy/threshold\n"); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - /* Check for non-default strategy/threshold: - * --whether there is H5O_FSINFO_ID message in the superblock extension - */ - if(strategy != H5F_FILE_SPACE_ALL || threshold != 1) { - error_msg("unable to convert due to non-default file space strategy/threshold\n"); - h5tools_setstatus(EXIT_FAILURE); - goto done; - } - if(dset_g) { /* Convert a specified dataset in the file */ if(verbose_g) printf("Going to process dataset: %s...\n", dname_g); @@ -443,16 +440,17 @@ main(int argc, const char *argv[]) } if(verbose_g) { - if(noop_g) { - printf("Not processing the file's superblock version...\n"); - h5tools_setstatus(EXIT_SUCCESS); - goto done; - } - printf("Processing the file's superblock version...\n"); + if(noop_g) { + printf("Not processing the file's superblock...\n"); + h5tools_setstatus(EXIT_SUCCESS); + goto done; + } + printf("Processing the file's superblock...\n"); } - if(H5Fformat_convert_super(fid) < 0) { - error_msg("unable to convert file's superblock version\"%s\"\n", fname_g); + /* 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; } diff --git a/tools/h5format_convert/testfiles/h5fc_d_file.ddl b/tools/h5format_convert/testfiles/h5fc_d_file.ddl index 3641a4f..ad7a2f4 100644 --- a/tools/h5format_convert/testfiles/h5fc_d_file.ddl +++ b/tools/h5format_convert/testfiles/h5fc_d_file.ddl @@ -9,14 +9,18 @@ usage: h5format_convert [OPTIONS] file_name Examples of use: h5format_convert -d /group/dataset file_name - Convert the chunk indexing type to version 1 B-tree - for the chunked dataset </group/dataset> in the HDF5 file <file_name>. + Convert the dataset </group/dataset> in the HDF5 file <file_name>: + 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 the chunk indexing type to version 1 B-tree - for all the chunked datasets in the HDF5 file <file_name>. + Convert all datasets in the HDF5 file <file_name>: + 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 chunked dataset </group/dataset> in the HDF5 file <file_name>. + converting the dataset </group/dataset> in the HDF5 file <file_name>. h5format_convert error: missing file name diff --git a/tools/h5format_convert/testfiles/h5fc_dname.ddl b/tools/h5format_convert/testfiles/h5fc_dname.ddl index c391764..0de42cb 100644 --- a/tools/h5format_convert/testfiles/h5fc_dname.ddl +++ b/tools/h5format_convert/testfiles/h5fc_dname.ddl @@ -9,14 +9,18 @@ usage: h5format_convert [OPTIONS] file_name Examples of use: h5format_convert -d /group/dataset file_name - Convert the chunk indexing type to version 1 B-tree - for the chunked dataset </group/dataset> in the HDF5 file <file_name>. + Convert the dataset </group/dataset> in the HDF5 file <file_name>: + 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 the chunk indexing type to version 1 B-tree - for all the chunked datasets in the HDF5 file <file_name>. + Convert all datasets in the HDF5 file <file_name>: + 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 chunked dataset </group/dataset> in the HDF5 file <file_name>. + converting the dataset </group/dataset> in the HDF5 file <file_name>. h5format_convert error: No dataset name diff --git a/tools/h5format_convert/testfiles/h5fc_ext1_f.ddl b/tools/h5format_convert/testfiles/h5fc_ext1_f.ddl new file mode 100644 index 0000000..fb5192d --- /dev/null +++ b/tools/h5format_convert/testfiles/h5fc_ext1_f.ddl @@ -0,0 +1,58 @@ +HDF5 "./testfiles/tmp.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 Binary files differnew file mode 100644 index 0000000..b5c5867 --- /dev/null +++ b/tools/h5format_convert/testfiles/h5fc_ext1_f.h5 diff --git a/tools/h5format_convert/testfiles/h5fc_ext1_i.ddl b/tools/h5format_convert/testfiles/h5fc_ext1_i.ddl new file mode 100644 index 0000000..2fff4ac --- /dev/null +++ b/tools/h5format_convert/testfiles/h5fc_ext1_i.ddl @@ -0,0 +1,58 @@ +HDF5 "./testfiles/tmp.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 Binary files differnew file mode 100644 index 0000000..960a8d5 --- /dev/null +++ b/tools/h5format_convert/testfiles/h5fc_ext1_i.h5 diff --git a/tools/h5format_convert/testfiles/h5fc_ext1_s.ddl b/tools/h5format_convert/testfiles/h5fc_ext1_s.ddl new file mode 100644 index 0000000..fb5192d --- /dev/null +++ b/tools/h5format_convert/testfiles/h5fc_ext1_s.ddl @@ -0,0 +1,58 @@ +HDF5 "./testfiles/tmp.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 Binary files differnew file mode 100644 index 0000000..103bde6 --- /dev/null +++ b/tools/h5format_convert/testfiles/h5fc_ext1_s.h5 diff --git a/tools/h5format_convert/testfiles/h5fc_ext2_if.ddl b/tools/h5format_convert/testfiles/h5fc_ext2_if.ddl new file mode 100644 index 0000000..2fff4ac --- /dev/null +++ b/tools/h5format_convert/testfiles/h5fc_ext2_if.ddl @@ -0,0 +1,58 @@ +HDF5 "./testfiles/tmp.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 Binary files differnew file mode 100644 index 0000000..88e42e7 --- /dev/null +++ b/tools/h5format_convert/testfiles/h5fc_ext2_if.h5 diff --git a/tools/h5format_convert/testfiles/h5fc_ext2_is.ddl b/tools/h5format_convert/testfiles/h5fc_ext2_is.ddl new file mode 100644 index 0000000..2fff4ac --- /dev/null +++ b/tools/h5format_convert/testfiles/h5fc_ext2_is.ddl @@ -0,0 +1,58 @@ +HDF5 "./testfiles/tmp.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 Binary files differnew file mode 100644 index 0000000..4d76436 --- /dev/null +++ b/tools/h5format_convert/testfiles/h5fc_ext2_is.h5 diff --git a/tools/h5format_convert/testfiles/h5fc_ext2_sf.ddl b/tools/h5format_convert/testfiles/h5fc_ext2_sf.ddl new file mode 100644 index 0000000..fb5192d --- /dev/null +++ b/tools/h5format_convert/testfiles/h5fc_ext2_sf.ddl @@ -0,0 +1,58 @@ +HDF5 "./testfiles/tmp.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 Binary files differnew file mode 100644 index 0000000..c59a3ca --- /dev/null +++ b/tools/h5format_convert/testfiles/h5fc_ext2_sf.h5 diff --git a/tools/h5format_convert/testfiles/h5fc_ext3_isf.ddl b/tools/h5format_convert/testfiles/h5fc_ext3_isf.ddl new file mode 100644 index 0000000..2fff4ac --- /dev/null +++ b/tools/h5format_convert/testfiles/h5fc_ext3_isf.ddl @@ -0,0 +1,58 @@ +HDF5 "./testfiles/tmp.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 Binary files differnew file mode 100644 index 0000000..d00fc55 --- /dev/null +++ b/tools/h5format_convert/testfiles/h5fc_ext3_isf.h5 diff --git a/tools/h5format_convert/testfiles/h5fc_latest_v3.h5 b/tools/h5format_convert/testfiles/h5fc_ext_none.h5 Binary files differindex f7de743..b1b1553 100644 --- a/tools/h5format_convert/testfiles/h5fc_latest_v3.h5 +++ b/tools/h5format_convert/testfiles/h5fc_ext_none.h5 diff --git a/tools/h5format_convert/testfiles/h5fc_help.ddl b/tools/h5format_convert/testfiles/h5fc_help.ddl index 9081ab8..aef8c63 100644 --- a/tools/h5format_convert/testfiles/h5fc_help.ddl +++ b/tools/h5format_convert/testfiles/h5fc_help.ddl @@ -9,13 +9,17 @@ usage: h5format_convert [OPTIONS] file_name Examples of use: h5format_convert -d /group/dataset file_name - Convert the chunk indexing type to version 1 B-tree - for the chunked dataset </group/dataset> in the HDF5 file <file_name>. + Convert the dataset </group/dataset> in the HDF5 file <file_name>: + 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 the chunk indexing type to version 1 B-tree - for all the chunked datasets in the HDF5 file <file_name>. + Convert all datasets in the HDF5 file <file_name>: + 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 chunked dataset </group/dataset> in the HDF5 file <file_name>. + converting the dataset </group/dataset> in the HDF5 file <file_name>. diff --git a/tools/h5format_convert/testfiles/h5fc_non_v3.h5 b/tools/h5format_convert/testfiles/h5fc_non_v3.h5 Binary files differindex b1bffa8..af2e8c4 100644 --- a/tools/h5format_convert/testfiles/h5fc_non_v3.h5 +++ b/tools/h5format_convert/testfiles/h5fc_non_v3.h5 diff --git a/tools/h5format_convert/testfiles/h5fc_nooption.ddl b/tools/h5format_convert/testfiles/h5fc_nooption.ddl index 9081ab8..aef8c63 100644 --- a/tools/h5format_convert/testfiles/h5fc_nooption.ddl +++ b/tools/h5format_convert/testfiles/h5fc_nooption.ddl @@ -9,13 +9,17 @@ usage: h5format_convert [OPTIONS] file_name Examples of use: h5format_convert -d /group/dataset file_name - Convert the chunk indexing type to version 1 B-tree - for the chunked dataset </group/dataset> in the HDF5 file <file_name>. + Convert the dataset </group/dataset> in the HDF5 file <file_name>: + 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 the chunk indexing type to version 1 B-tree - for all the chunked datasets in the HDF5 file <file_name>. + Convert all datasets in the HDF5 file <file_name>: + 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 chunked dataset </group/dataset> in the HDF5 file <file_name>. + converting the dataset </group/dataset> in the HDF5 file <file_name>. diff --git a/tools/h5format_convert/testfiles/h5fc_v_all.ddl b/tools/h5format_convert/testfiles/h5fc_v_all.ddl index 5a35c55..5e7365d 100644 --- a/tools/h5format_convert/testfiles/h5fc_v_all.ddl +++ b/tools/h5format_convert/testfiles/h5fc_v_all.ddl @@ -1,27 +1,77 @@ Process command line options Open the file tmp.h5 Processing all datasets in the file... -Going to process dataset:/DSET_NDATA_BT1... +Going to process dataset:/DSET_CONTIGUOUS... Open the dataset Retrieve the dataset's layout -Verify the dataset is a chunked dataset +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 -Chunk indexing type is already version 1 B-tree: no further action +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_NON_CHUNKED... +Going to process dataset:/GROUP/DSET_BT2... Open the dataset Retrieve the dataset's layout -Dataset is not chunked: no further action +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_BT1... +Going to process dataset:/GROUP/DSET_NDATA_NONE... Open the dataset Retrieve the dataset's layout -Verify the dataset is a chunked dataset +Dataset is a chunked dataset Retrieve the dataset's chunk indexing type -Chunk indexing type is already version 1 B-tree: no further action +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 version... +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 index c96b647..c501eb0 100644 --- a/tools/h5format_convert/testfiles/h5fc_v_bt1.ddl +++ b/tools/h5format_convert/testfiles/h5fc_v_bt1.ddl @@ -1,12 +1,12 @@ Process command line options Open the file tmp.h5 -Going to process dataset: /GROUP/DSET_BT1... +Going to process dataset: /GROUP/DSET_BT2... Open the dataset Retrieve the dataset's layout -Verify the dataset is a chunked dataset +Dataset is a chunked dataset Retrieve the dataset's chunk indexing type -Chunk indexing type is already version 1 B-tree: no further action +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 version... +Processing the file's superblock... Close the file diff --git a/tools/h5format_convert/testfiles/h5fc_v_n_1d.ddl b/tools/h5format_convert/testfiles/h5fc_v_n_1d.ddl index a7a622a..ff5da4a 100644 --- a/tools/h5format_convert/testfiles/h5fc_v_n_1d.ddl +++ b/tools/h5format_convert/testfiles/h5fc_v_n_1d.ddl @@ -4,11 +4,11 @@ Open the file tmp.h5 Going to process dataset: /DSET_EA... Open the dataset Retrieve the dataset's layout -Verify the dataset is a chunked dataset +Dataset is a chunked dataset Retrieve the dataset's chunk indexing type -Verify the dataset's chunk indexing type is not version 1 B-tree +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 version... +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 index 3e92568..d2ffbbf 100644 --- a/tools/h5format_convert/testfiles/h5fc_v_n_all.ddl +++ b/tools/h5format_convert/testfiles/h5fc_v_n_all.ddl @@ -2,47 +2,55 @@ Process command line options It is noop... Open the file tmp.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 -Verify the dataset is a chunked dataset +Dataset is a chunked dataset Retrieve the dataset's chunk indexing type -Verify the dataset's chunk indexing type is not version 1 B-tree +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 -Verify the dataset is a chunked dataset +Dataset is a chunked dataset Retrieve the dataset's chunk indexing type -Verify the dataset's chunk indexing type is not version 1 B-tree +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 -Verify the dataset is a chunked dataset +Dataset is a chunked dataset Retrieve the dataset's chunk indexing type -Verify the dataset's chunk indexing type is not version 1 B-tree +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_EA... +Going to process dataset:/GROUP/DSET_COMPACT... Open the dataset Retrieve the dataset's layout -Verify the dataset is a chunked dataset -Retrieve the dataset's chunk indexing type -Verify the dataset's chunk indexing type is not version 1 B-tree +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_NON_CHUNKED... +Going to process dataset:/GROUP/DSET_EA... Open the dataset Retrieve the dataset's layout -Dataset is not chunked: no further action +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 version... +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 index bdf3380..ba794a7 100644 --- a/tools/h5format_convert/testfiles/h5fc_v_ndata_bt1.ddl +++ b/tools/h5format_convert/testfiles/h5fc_v_ndata_bt1.ddl @@ -1,13 +1,13 @@ Process command line options It is noop... Open the file tmp.h5 -Going to process dataset: /DSET_NDATA_BT1... +Going to process dataset: /DSET_NDATA_BT2... Open the dataset Retrieve the dataset's layout -Verify the dataset is a chunked dataset +Dataset is a chunked dataset Retrieve the dataset's chunk indexing type -Chunk indexing type is already version 1 B-tree: no further action +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 version... +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 index 4caafe9..aba0740 100644 --- a/tools/h5format_convert/testfiles/h5fc_v_non_chunked.ddl +++ b/tools/h5format_convert/testfiles/h5fc_v_non_chunked.ddl @@ -1,10 +1,12 @@ Process command line options Open the file tmp.h5 -Going to process dataset: /DSET_NON_CHUNKED... +Going to process dataset: /DSET_CONTIGUOUS... Open the dataset Retrieve the dataset's layout -Dataset is not chunked: no further action +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 version... +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 new file mode 100644 index 0000000..fb5192d --- /dev/null +++ b/tools/h5format_convert/testfiles/old_h5fc_ext1_f.ddl @@ -0,0 +1,58 @@ +HDF5 "./testfiles/tmp.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 Binary files differnew file mode 100644 index 0000000..3cbc7f4 --- /dev/null +++ b/tools/h5format_convert/testfiles/old_h5fc_ext1_f.h5 diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext1_i.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext1_i.ddl new file mode 100644 index 0000000..c906082 --- /dev/null +++ b/tools/h5format_convert/testfiles/old_h5fc_ext1_i.ddl @@ -0,0 +1,58 @@ +HDF5 "./testfiles/tmp.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 Binary files differnew file mode 100644 index 0000000..a2c9187 --- /dev/null +++ b/tools/h5format_convert/testfiles/old_h5fc_ext1_i.h5 diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext1_s.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext1_s.ddl new file mode 100644 index 0000000..fb5192d --- /dev/null +++ b/tools/h5format_convert/testfiles/old_h5fc_ext1_s.ddl @@ -0,0 +1,58 @@ +HDF5 "./testfiles/tmp.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 Binary files differnew file mode 100644 index 0000000..fdf4f33 --- /dev/null +++ b/tools/h5format_convert/testfiles/old_h5fc_ext1_s.h5 diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext2_if.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext2_if.ddl new file mode 100644 index 0000000..2fff4ac --- /dev/null +++ b/tools/h5format_convert/testfiles/old_h5fc_ext2_if.ddl @@ -0,0 +1,58 @@ +HDF5 "./testfiles/tmp.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 Binary files differnew file mode 100644 index 0000000..6bf0a2f --- /dev/null +++ b/tools/h5format_convert/testfiles/old_h5fc_ext2_if.h5 diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext2_is.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext2_is.ddl new file mode 100644 index 0000000..2fff4ac --- /dev/null +++ b/tools/h5format_convert/testfiles/old_h5fc_ext2_is.ddl @@ -0,0 +1,58 @@ +HDF5 "./testfiles/tmp.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 Binary files differnew file mode 100644 index 0000000..c0c7ecc --- /dev/null +++ b/tools/h5format_convert/testfiles/old_h5fc_ext2_is.h5 diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext2_sf.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext2_sf.ddl new file mode 100644 index 0000000..fb5192d --- /dev/null +++ b/tools/h5format_convert/testfiles/old_h5fc_ext2_sf.ddl @@ -0,0 +1,58 @@ +HDF5 "./testfiles/tmp.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 Binary files differnew file mode 100644 index 0000000..055cabf --- /dev/null +++ b/tools/h5format_convert/testfiles/old_h5fc_ext2_sf.h5 diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext3_isf.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext3_isf.ddl new file mode 100644 index 0000000..2fff4ac --- /dev/null +++ b/tools/h5format_convert/testfiles/old_h5fc_ext3_isf.ddl @@ -0,0 +1,58 @@ +HDF5 "./testfiles/tmp.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 Binary files differnew file mode 100644 index 0000000..f4caaf4 --- /dev/null +++ b/tools/h5format_convert/testfiles/old_h5fc_ext3_isf.h5 diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext_none.h5 b/tools/h5format_convert/testfiles/old_h5fc_ext_none.h5 Binary files differnew file mode 100644 index 0000000..d0bf344 --- /dev/null +++ b/tools/h5format_convert/testfiles/old_h5fc_ext_none.h5 diff --git a/tools/h5format_convert/testh5fc.sh.in b/tools/h5format_convert/testh5fc.sh.in index dc5aa48..f712434 100644 --- a/tools/h5format_convert/testh5fc.sh.in +++ b/tools/h5format_convert/testh5fc.sh.in @@ -41,6 +41,8 @@ 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' @@ -79,10 +81,24 @@ TMPFILE=tmp.h5 # Comment '#' without space can be used. # -------------------------------------------------------------------- LIST_HDF5_TEST_FILES=" -$SRC_H5FORMCONV_TESTFILES/h5fc_v1.h5 -$SRC_H5FORMCONV_TESTFILES/h5fc_latest_v3.h5 $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 " LIST_OTHER_TEST_FILES=" @@ -98,6 +114,20 @@ $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 " # @@ -199,14 +229,7 @@ TOOLTEST_OUT() { cat $actual_err >> $actual # Compare output - if $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 + COMPARE_OUT $expect $actual # Clean up output file if test -z "$HDF5_NOCLEANUP"; then @@ -243,8 +266,8 @@ CHECKING() { echo "Verifying $* $SPACES" | cut -c1-80 | tr -d '\012' } -# $1 dataset name # Assume $TESTDIR/$TMPFILE is the converted test file +# $1 dataset name IDX_CHECK() { CHECKING $1 $RUNSERIAL $CHK_IDX_BIN $TESTDIR/$TMPFILE $1 @@ -258,6 +281,39 @@ IDX_CHECK() { 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/$TMPFILE > $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 $@ @@ -284,31 +340,31 @@ TOOLTEST_OUT h5fc_nooption.ddl '' TOOLTEST_OUT h5fc_nonexistfile.ddl nonexist.h5 # # -# h5format_convert -d h5fc_v1.h5 (just -d option, file exists) -# h5format_convert --dname h5fc_v1.h5 (just --dname option, file exists) +# 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 h5fc_v1.h5 (dataset does not exist, file exists) -TOOLTEST_OUT h5fc_d_file.ddl h5fc_v1.h5 -d -TOOLTEST_OUT h5fc_d_file.ddl h5fc_v1.h5 --dname +# 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 h5fc_v1.h5 --dname=nonexist +TOOLTEST_OUT h5fc_nonexistdset_file.ddl old_h5fc_ext_none.h5 --dname=nonexist # # # -# h5format_convert -d /DSET_NON_CHUNKED -v h5fc_v1.h5 (verbose, non-chunked dataset) -# h5format_convert -d /GROUP/DSET_BT1 --verbose h5fc_v1.h5 (verbose, bt1 dataset) -# h5format_convert -d /DSET_NDATA_BT1 -v -n h5fc_v1.h5 (verbose, noop, bt1+nodata dataset) -# h5format_convert -v h5fc_v1.h5 (verbose, all datasets) -TOOLTEST_OUT h5fc_v_non_chunked.ddl h5fc_v1.h5 -d /DSET_NON_CHUNKED -v -TOOLTEST_OUT h5fc_v_bt1.ddl h5fc_v1.h5 -d /GROUP/DSET_BT1 --verbose -TOOLTEST_OUT h5fc_v_ndata_bt1.ddl h5fc_v1.h5 -d /DSET_NDATA_BT1 -v -n -TOOLTEST_OUT h5fc_v_all.ddl h5fc_v1.h5 -v +# 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_latest_v3.h5 (verbose, noop, one ea dataset) +# 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_latest_v3.h5 -d /DSET_EA -v -n +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 # # @@ -316,45 +372,45 @@ TOOLTEST_OUT h5fc_v_n_all.ddl h5fc_non_v3.h5 -v -n # 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_latest_v3.h5 -# h5format_convert -d /GROUP/DSET_NDATA_EA h5fc_latest_v3.h5 -# h5format_convert -d /GROUP/DSET_BT2 h5fc_latest_v3.h5 -# h5format_convert -d /DSET_NDATA_BT2 h5fc_latest_v3.h5 -# h5format_convert -d /DSET_FA h5fc_latest_v3.h5 -# h5format_convert -d /GROUP/DSET_FA h5fc_latest_v3.h5 -# h5format_convert -d /DSET_NONE h5fc_latest_v3.h5 -# h5format_convert -d /GROUP/DSET_NONE h5fc_latest_v3.h5 -TOOLTEST h5fc_latest_v3.h5 -d /DSET_EA +# 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 -d /DSET_EA IDX_CHECK /DSET_EA # -TOOLTEST h5fc_latest_v3.h5 -d /GROUP/DSET_NDATA_EA +TOOLTEST h5fc_ext_none.h5 -d /GROUP/DSET_NDATA_EA IDX_CHECK /GROUP/DSET_NDATA_EA # -TOOLTEST h5fc_latest_v3.h5 -d /GROUP/DSET_BT2 +TOOLTEST h5fc_ext_none.h5 -d /GROUP/DSET_BT2 IDX_CHECK /GROUP/DSET_BT2 # -TOOLTEST h5fc_latest_v3.h5 -d /DSET_NDATA_BT2 +TOOLTEST h5fc_ext_none.h5 -d /DSET_NDATA_BT2 IDX_CHECK /DSET_NDATA_BT2 # -TOOLTEST h5fc_latest_v3.h5 -d /DSET_FA +TOOLTEST h5fc_ext_none.h5 -d /DSET_FA IDX_CHECK /DSET_FA # -TOOLTEST h5fc_latest_v3.h5 -d /GROUP/DSET_NDATA_FA +TOOLTEST h5fc_ext_none.h5 -d /GROUP/DSET_NDATA_FA IDX_CHECK /GROUP/DSET_NDATA_FA # -TOOLTEST h5fc_latest_v3.h5 -d /DSET_NONE +TOOLTEST h5fc_ext_none.h5 -d /DSET_NONE IDX_CHECK /DSET_NONE # -TOOLTEST h5fc_latest_v3.h5 -d /GROUP/DSET_NDATA_NONE +TOOLTEST h5fc_ext_none.h5 -d /GROUP/DSET_NDATA_NONE IDX_CHECK /GROUP/DSET_NDATA_NONE # # # # No output from tests: just check exit code -# h5format_convert -d /DSET_NDATA_BT1 h5fc_v1.h5 (v1-btree dataset) -# h5format_convert -d /GROUP/DSET_NON_CHUNKED h5fc_non_v3.h5 (non-chunked dataset) -TOOLTEST h5fc_v1.h5 -d /DSET_NDATA_BT1 -TOOLTEST h5fc_non_v3.h5 -d /GROUP/DSET_NON_CHUNKED +# 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 # # # @@ -386,6 +442,44 @@ TOOLTEST h5fc_edge_v3.h5 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 +H5DUMP_CHECK h5fc_ext1_i.h5 h5fc_ext1_i.ddl +TOOLTEST h5fc_ext1_s.h5 +H5DUMP_CHECK h5fc_ext1_s.h5 h5fc_ext1_s.ddl +TOOLTEST h5fc_ext1_f.h5 +H5DUMP_CHECK h5fc_ext1_f.h5 h5fc_ext1_f.ddl +# +TOOLTEST h5fc_ext2_if.h5 +H5DUMP_CHECK h5fc_ext2_if.h5 h5fc_ext2_if.ddl +TOOLTEST h5fc_ext2_is.h5 +H5DUMP_CHECK h5fc_ext2_is.h5 h5fc_ext2_is.ddl +TOOLTEST h5fc_ext2_sf.h5 +H5DUMP_CHECK h5fc_ext2_sf.h5 h5fc_ext2_sf.ddl +# +TOOLTEST h5fc_ext3_isf.h5 +H5DUMP_CHECK h5fc_ext3_isf.h5 h5fc_ext3_isf.ddl +# +# +# +TOOLTEST old_h5fc_ext1_i.h5 +H5DUMP_CHECK old_h5fc_ext1_i.h5 old_h5fc_ext1_i.ddl +TOOLTEST old_h5fc_ext1_s.h5 +H5DUMP_CHECK old_h5fc_ext1_s.h5 old_h5fc_ext1_s.ddl +TOOLTEST old_h5fc_ext1_f.h5 +H5DUMP_CHECK old_h5fc_ext1_f.h5 old_h5fc_ext1_f.ddl +# +TOOLTEST old_h5fc_ext2_if.h5 +H5DUMP_CHECK old_h5fc_ext2_if.h5 old_h5fc_ext2_if.ddl +TOOLTEST old_h5fc_ext2_is.h5 +H5DUMP_CHECK old_h5fc_ext2_is.h5 old_h5fc_ext2_is.ddl +TOOLTEST old_h5fc_ext2_sf.h5 +H5DUMP_CHECK old_h5fc_ext2_sf.h5 old_h5fc_ext2_sf.ddl +# +TOOLTEST old_h5fc_ext3_isf.h5 +H5DUMP_CHECK old_h5fc_ext3_isf.h5 old_h5fc_ext3_isf.ddl # # Clean up temporary files/directories CLEAN_TESTFILES_AND_TESTDIR diff --git a/tools/h5import/Makefile.in b/tools/h5import/Makefile.in index 9744c03..efc6aeb 100644 --- a/tools/h5import/Makefile.in +++ b/tools/h5import/Makefile.in @@ -427,16 +427,17 @@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ AR = @AR@ +ASSERTS = @ASSERTS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_MODE = @BUILD_MODE@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ CFLAGS = @CFLAGS@ -CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ @@ -449,7 +450,6 @@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_VERSION = @CXX_VERSION@ CYGPATH_W = @CYGPATH_W@ -DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -511,8 +511,8 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTRUMENT = @INSTRUMENT@ INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@ +INTERNAL_DEBUG_OUTPUT = @INTERNAL_DEBUG_OUTPUT@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ @@ -523,11 +523,11 @@ LL_PATH = @LL_PATH@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_STATIC_EXEC = @LT_STATIC_EXEC@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MEMORYALLOCSANITYCHECK = @MEMORYALLOCSANITYCHECK@ +METADATATRACEFILE = @METADATATRACEFILE@ MKDIR_P = @MKDIR_P@ MPE = @MPE@ NM = @NM@ @@ -535,6 +535,7 @@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@ OBJEXT = @OBJEXT@ +OPTIMIZATION = @OPTIMIZATION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ @@ -558,6 +559,7 @@ PAC_FORTRAN_NATIVE_REAL_KIND = @PAC_FORTRAN_NATIVE_REAL_KIND@ PAC_FORTRAN_NATIVE_REAL_SIZEOF = @PAC_FORTRAN_NATIVE_REAL_SIZEOF@ PARALLEL = @PARALLEL@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PROFILING = @PROFILING@ RANLIB = @RANLIB@ ROOT = @ROOT@ RUNPARALLEL = @RUNPARALLEL@ @@ -573,6 +575,7 @@ STATIC_EXEC = @STATIC_EXEC@ STATIC_SHARED = @STATIC_SHARED@ STRICT_FORMAT_CHECKS = @STRICT_FORMAT_CHECKS@ STRIP = @STRIP@ +SYMBOLS = @SYMBOLS@ TESTPARALLEL = @TESTPARALLEL@ THREADSAFE = @THREADSAFE@ TIME = @TIME@ diff --git a/tools/h5jam/Makefile.in b/tools/h5jam/Makefile.in index d864971..0c25e28 100644 --- a/tools/h5jam/Makefile.in +++ b/tools/h5jam/Makefile.in @@ -439,16 +439,17 @@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ AR = @AR@ +ASSERTS = @ASSERTS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_MODE = @BUILD_MODE@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ CFLAGS = @CFLAGS@ -CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ @@ -461,7 +462,6 @@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_VERSION = @CXX_VERSION@ CYGPATH_W = @CYGPATH_W@ -DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -523,8 +523,8 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTRUMENT = @INSTRUMENT@ INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@ +INTERNAL_DEBUG_OUTPUT = @INTERNAL_DEBUG_OUTPUT@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ @@ -535,11 +535,11 @@ LL_PATH = @LL_PATH@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_STATIC_EXEC = @LT_STATIC_EXEC@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MEMORYALLOCSANITYCHECK = @MEMORYALLOCSANITYCHECK@ +METADATATRACEFILE = @METADATATRACEFILE@ MKDIR_P = @MKDIR_P@ MPE = @MPE@ NM = @NM@ @@ -547,6 +547,7 @@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@ OBJEXT = @OBJEXT@ +OPTIMIZATION = @OPTIMIZATION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ @@ -570,6 +571,7 @@ PAC_FORTRAN_NATIVE_REAL_KIND = @PAC_FORTRAN_NATIVE_REAL_KIND@ PAC_FORTRAN_NATIVE_REAL_SIZEOF = @PAC_FORTRAN_NATIVE_REAL_SIZEOF@ PARALLEL = @PARALLEL@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PROFILING = @PROFILING@ RANLIB = @RANLIB@ ROOT = @ROOT@ RUNPARALLEL = @RUNPARALLEL@ @@ -585,6 +587,7 @@ STATIC_EXEC = @STATIC_EXEC@ STATIC_SHARED = @STATIC_SHARED@ STRICT_FORMAT_CHECKS = @STRICT_FORMAT_CHECKS@ STRIP = @STRIP@ +SYMBOLS = @SYMBOLS@ TESTPARALLEL = @TESTPARALLEL@ THREADSAFE = @THREADSAFE@ TIME = @TIME@ diff --git a/tools/h5ls/Makefile.in b/tools/h5ls/Makefile.in index 616ec9b..5c14ded 100644 --- a/tools/h5ls/Makefile.in +++ b/tools/h5ls/Makefile.in @@ -419,16 +419,17 @@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ AR = @AR@ +ASSERTS = @ASSERTS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_MODE = @BUILD_MODE@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ CFLAGS = @CFLAGS@ -CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ @@ -441,7 +442,6 @@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_VERSION = @CXX_VERSION@ CYGPATH_W = @CYGPATH_W@ -DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -503,8 +503,8 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTRUMENT = @INSTRUMENT@ INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@ +INTERNAL_DEBUG_OUTPUT = @INTERNAL_DEBUG_OUTPUT@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ @@ -515,11 +515,11 @@ LL_PATH = @LL_PATH@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_STATIC_EXEC = @LT_STATIC_EXEC@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MEMORYALLOCSANITYCHECK = @MEMORYALLOCSANITYCHECK@ +METADATATRACEFILE = @METADATATRACEFILE@ MKDIR_P = @MKDIR_P@ MPE = @MPE@ NM = @NM@ @@ -527,6 +527,7 @@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@ OBJEXT = @OBJEXT@ +OPTIMIZATION = @OPTIMIZATION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ @@ -550,6 +551,7 @@ PAC_FORTRAN_NATIVE_REAL_KIND = @PAC_FORTRAN_NATIVE_REAL_KIND@ PAC_FORTRAN_NATIVE_REAL_SIZEOF = @PAC_FORTRAN_NATIVE_REAL_SIZEOF@ PARALLEL = @PARALLEL@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PROFILING = @PROFILING@ RANLIB = @RANLIB@ ROOT = @ROOT@ RUNPARALLEL = @RUNPARALLEL@ @@ -565,6 +567,7 @@ STATIC_EXEC = @STATIC_EXEC@ STATIC_SHARED = @STATIC_SHARED@ STRICT_FORMAT_CHECKS = @STRICT_FORMAT_CHECKS@ STRIP = @STRIP@ +SYMBOLS = @SYMBOLS@ TESTPARALLEL = @TESTPARALLEL@ THREADSAFE = @THREADSAFE@ TIME = @TIME@ diff --git a/tools/h5ls/h5ls.c b/tools/h5ls/h5ls.c index c962e80..91e1c93 100644 --- a/tools/h5ls/h5ls.c +++ b/tools/h5ls/h5ls.c @@ -974,7 +974,7 @@ print_enum_type(h5tools_str_t *buffer, hid_t type, int ind) /* Release resources */ for(i = 0; i < (unsigned)nmembs; i++) - HDfree(name[i]); + H5free_memory(name[i]); HDfree(name); HDfree(value); } @@ -1857,13 +1857,10 @@ dataset_list2(hid_t dset, const char H5_ATTR_UNUSED *name) if (vmaps) { size_t next; - ssize_t ssize_out; h5tools_str_append(&buffer, " %-10s {%ld} Source {\n", "Maps:", vmaps); for (next = 0; next < (unsigned) vmaps; next++) { - ssize_out = H5Pget_virtual_filename(dcpl, next, NULL, 0); H5Pget_virtual_filename(dcpl, next, f_name, sizeof(f_name)); - ssize_out = H5Pget_virtual_dsetname(dcpl, next, NULL, 0); H5Pget_virtual_dsetname(dcpl, next, dset_name, sizeof(dset_name)); h5tools_str_append(&buffer, " %-10s ", " "); print_string(&buffer, f_name, TRUE); diff --git a/tools/h5repack/CMakeLists.txt b/tools/h5repack/CMakeLists.txt index 7631ae8..9b1fbcf 100644 --- a/tools/h5repack/CMakeLists.txt +++ b/tools/h5repack/CMakeLists.txt @@ -58,7 +58,7 @@ 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 + SHARED ${HDF5_PACKAGE_SOVERSION} HDF5_TOOL_PLUGIN_LIB_NAME_RELEASE HDF5_TOOL_PLUGIN_LIB_NAME_DEBUG ) @@ -72,13 +72,13 @@ if (BUILD_TESTING) TARGET ${HDF5_TOOL_PLUGIN_LIB_TARGET} POST_BUILD COMMAND ${CMAKE_COMMAND} - ARGS -E copy_if_different + ARGS -E copy_if_different "$<TARGET_FILE:${HDF5_TOOL_PLUGIN_LIB_TARGET}>" "${CMAKE_BINARY_DIR}/plugins/$<TARGET_FILE_NAME:${HDF5_TOOL_PLUGIN_LIB_TARGET}>" ) include (CMakeTests.cmake) - + endif (BUILD_TESTING) ############################################################################## diff --git a/tools/h5repack/Makefile.in b/tools/h5repack/Makefile.in index 9cc1a32..d1093dc 100644 --- a/tools/h5repack/Makefile.in +++ b/tools/h5repack/Makefile.in @@ -451,16 +451,17 @@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ AR = @AR@ +ASSERTS = @ASSERTS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_MODE = @BUILD_MODE@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ CFLAGS = @CFLAGS@ -CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ @@ -473,7 +474,6 @@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_VERSION = @CXX_VERSION@ CYGPATH_W = @CYGPATH_W@ -DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -535,8 +535,8 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTRUMENT = @INSTRUMENT@ INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@ +INTERNAL_DEBUG_OUTPUT = @INTERNAL_DEBUG_OUTPUT@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ @@ -547,11 +547,11 @@ LL_PATH = @LL_PATH@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_STATIC_EXEC = @LT_STATIC_EXEC@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MEMORYALLOCSANITYCHECK = @MEMORYALLOCSANITYCHECK@ +METADATATRACEFILE = @METADATATRACEFILE@ MKDIR_P = @MKDIR_P@ MPE = @MPE@ NM = @NM@ @@ -559,6 +559,7 @@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@ OBJEXT = @OBJEXT@ +OPTIMIZATION = @OPTIMIZATION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ @@ -582,6 +583,7 @@ PAC_FORTRAN_NATIVE_REAL_KIND = @PAC_FORTRAN_NATIVE_REAL_KIND@ PAC_FORTRAN_NATIVE_REAL_SIZEOF = @PAC_FORTRAN_NATIVE_REAL_SIZEOF@ PARALLEL = @PARALLEL@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PROFILING = @PROFILING@ RANLIB = @RANLIB@ ROOT = @ROOT@ RUNPARALLEL = @RUNPARALLEL@ @@ -597,6 +599,7 @@ STATIC_EXEC = @STATIC_EXEC@ STATIC_SHARED = @STATIC_SHARED@ STRICT_FORMAT_CHECKS = @STRICT_FORMAT_CHECKS@ STRIP = @STRIP@ +SYMBOLS = @SYMBOLS@ TESTPARALLEL = @TESTPARALLEL@ THREADSAFE = @THREADSAFE@ TIME = @TIME@ diff --git a/tools/h5stat/Makefile.in b/tools/h5stat/Makefile.in index 782bf79..0329c57 100644 --- a/tools/h5stat/Makefile.in +++ b/tools/h5stat/Makefile.in @@ -429,16 +429,17 @@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ AR = @AR@ +ASSERTS = @ASSERTS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_MODE = @BUILD_MODE@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ CFLAGS = @CFLAGS@ -CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ @@ -451,7 +452,6 @@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_VERSION = @CXX_VERSION@ CYGPATH_W = @CYGPATH_W@ -DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -513,8 +513,8 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTRUMENT = @INSTRUMENT@ INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@ +INTERNAL_DEBUG_OUTPUT = @INTERNAL_DEBUG_OUTPUT@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ @@ -525,11 +525,11 @@ LL_PATH = @LL_PATH@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_STATIC_EXEC = @LT_STATIC_EXEC@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MEMORYALLOCSANITYCHECK = @MEMORYALLOCSANITYCHECK@ +METADATATRACEFILE = @METADATATRACEFILE@ MKDIR_P = @MKDIR_P@ MPE = @MPE@ NM = @NM@ @@ -537,6 +537,7 @@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@ OBJEXT = @OBJEXT@ +OPTIMIZATION = @OPTIMIZATION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ @@ -560,6 +561,7 @@ PAC_FORTRAN_NATIVE_REAL_KIND = @PAC_FORTRAN_NATIVE_REAL_KIND@ PAC_FORTRAN_NATIVE_REAL_SIZEOF = @PAC_FORTRAN_NATIVE_REAL_SIZEOF@ PARALLEL = @PARALLEL@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PROFILING = @PROFILING@ RANLIB = @RANLIB@ ROOT = @ROOT@ RUNPARALLEL = @RUNPARALLEL@ @@ -575,6 +577,7 @@ STATIC_EXEC = @STATIC_EXEC@ STATIC_SHARED = @STATIC_SHARED@ STRICT_FORMAT_CHECKS = @STRICT_FORMAT_CHECKS@ STRIP = @STRIP@ +SYMBOLS = @SYMBOLS@ TESTPARALLEL = @TESTPARALLEL@ THREADSAFE = @THREADSAFE@ TIME = @TIME@ diff --git a/tools/lib/CMakeLists.txt b/tools/lib/CMakeLists.txt index 38c84a2..0b39a2b 100644 --- a/tools/lib/CMakeLists.txt +++ b/tools/lib/CMakeLists.txt @@ -61,7 +61,7 @@ if (BUILD_SHARED_LIBS) set_global_variable (HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_TOOLS_LIBSH_TARGET}") H5_SET_LIB_OPTIONS ( ${HDF5_TOOLS_LIBSH_TARGET} ${HDF5_TOOLS_LIB_NAME} - SHARED + SHARED ${HDF5_TOOLS_PACKAGE_SOVERSION} HDF5_TOOLS_LIB_NAME_RELEASE HDF5_TOOLS_LIB_NAME_DEBUG ) diff --git a/tools/lib/Makefile.in b/tools/lib/Makefile.in index 9b4c3a7..8b5224d 100644 --- a/tools/lib/Makefile.in +++ b/tools/lib/Makefile.in @@ -416,16 +416,17 @@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ AR = @AR@ +ASSERTS = @ASSERTS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_MODE = @BUILD_MODE@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ CFLAGS = @CFLAGS@ -CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ @@ -438,7 +439,6 @@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_VERSION = @CXX_VERSION@ CYGPATH_W = @CYGPATH_W@ -DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -500,8 +500,8 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTRUMENT = @INSTRUMENT@ INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@ +INTERNAL_DEBUG_OUTPUT = @INTERNAL_DEBUG_OUTPUT@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ @@ -512,11 +512,11 @@ LL_PATH = @LL_PATH@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_STATIC_EXEC = @LT_STATIC_EXEC@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MEMORYALLOCSANITYCHECK = @MEMORYALLOCSANITYCHECK@ +METADATATRACEFILE = @METADATATRACEFILE@ MKDIR_P = @MKDIR_P@ MPE = @MPE@ NM = @NM@ @@ -524,6 +524,7 @@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@ OBJEXT = @OBJEXT@ +OPTIMIZATION = @OPTIMIZATION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ @@ -547,6 +548,7 @@ PAC_FORTRAN_NATIVE_REAL_KIND = @PAC_FORTRAN_NATIVE_REAL_KIND@ PAC_FORTRAN_NATIVE_REAL_SIZEOF = @PAC_FORTRAN_NATIVE_REAL_SIZEOF@ PARALLEL = @PARALLEL@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PROFILING = @PROFILING@ RANLIB = @RANLIB@ ROOT = @ROOT@ RUNPARALLEL = @RUNPARALLEL@ @@ -562,6 +564,7 @@ STATIC_EXEC = @STATIC_EXEC@ STATIC_SHARED = @STATIC_SHARED@ STRICT_FORMAT_CHECKS = @STRICT_FORMAT_CHECKS@ STRIP = @STRIP@ +SYMBOLS = @SYMBOLS@ TESTPARALLEL = @TESTPARALLEL@ THREADSAFE = @THREADSAFE@ TIME = @TIME@ diff --git a/tools/misc/Makefile.in b/tools/misc/Makefile.in index c027976..76aa536 100644 --- a/tools/misc/Makefile.in +++ b/tools/misc/Makefile.in @@ -514,16 +514,17 @@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ AR = @AR@ +ASSERTS = @ASSERTS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_MODE = @BUILD_MODE@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ CFLAGS = @CFLAGS@ -CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ @@ -536,7 +537,6 @@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_VERSION = @CXX_VERSION@ CYGPATH_W = @CYGPATH_W@ -DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -598,8 +598,8 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTRUMENT = @INSTRUMENT@ INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@ +INTERNAL_DEBUG_OUTPUT = @INTERNAL_DEBUG_OUTPUT@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ @@ -610,11 +610,11 @@ LL_PATH = @LL_PATH@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_STATIC_EXEC = @LT_STATIC_EXEC@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MEMORYALLOCSANITYCHECK = @MEMORYALLOCSANITYCHECK@ +METADATATRACEFILE = @METADATATRACEFILE@ MKDIR_P = @MKDIR_P@ MPE = @MPE@ NM = @NM@ @@ -622,6 +622,7 @@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@ OBJEXT = @OBJEXT@ +OPTIMIZATION = @OPTIMIZATION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ @@ -645,6 +646,7 @@ PAC_FORTRAN_NATIVE_REAL_KIND = @PAC_FORTRAN_NATIVE_REAL_KIND@ PAC_FORTRAN_NATIVE_REAL_SIZEOF = @PAC_FORTRAN_NATIVE_REAL_SIZEOF@ PARALLEL = @PARALLEL@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PROFILING = @PROFILING@ RANLIB = @RANLIB@ ROOT = @ROOT@ RUNPARALLEL = @RUNPARALLEL@ @@ -660,6 +662,7 @@ STATIC_EXEC = @STATIC_EXEC@ STATIC_SHARED = @STATIC_SHARED@ STRICT_FORMAT_CHECKS = @STRICT_FORMAT_CHECKS@ STRIP = @STRIP@ +SYMBOLS = @SYMBOLS@ TESTPARALLEL = @TESTPARALLEL@ THREADSAFE = @THREADSAFE@ TIME = @TIME@ diff --git a/tools/misc/h5debug.c b/tools/misc/h5debug.c index aac14db..b4cbfee 100644 --- a/tools/misc/h5debug.c +++ b/tools/misc/h5debug.c @@ -129,6 +129,10 @@ get_H5B2_class(const uint8_t *sig) 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)); diff --git a/tools/misc/vds/Makefile.in b/tools/misc/vds/Makefile.in index 065ce09..d2af32e 100644 --- a/tools/misc/vds/Makefile.in +++ b/tools/misc/vds/Makefile.in @@ -435,16 +435,17 @@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ AR = @AR@ +ASSERTS = @ASSERTS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_MODE = @BUILD_MODE@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ CFLAGS = @CFLAGS@ -CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ @@ -457,7 +458,6 @@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_VERSION = @CXX_VERSION@ CYGPATH_W = @CYGPATH_W@ -DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -519,8 +519,8 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTRUMENT = @INSTRUMENT@ INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@ +INTERNAL_DEBUG_OUTPUT = @INTERNAL_DEBUG_OUTPUT@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ @@ -531,11 +531,11 @@ LL_PATH = @LL_PATH@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_STATIC_EXEC = @LT_STATIC_EXEC@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MEMORYALLOCSANITYCHECK = @MEMORYALLOCSANITYCHECK@ +METADATATRACEFILE = @METADATATRACEFILE@ MKDIR_P = @MKDIR_P@ MPE = @MPE@ NM = @NM@ @@ -543,6 +543,7 @@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@ OBJEXT = @OBJEXT@ +OPTIMIZATION = @OPTIMIZATION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ @@ -566,6 +567,7 @@ PAC_FORTRAN_NATIVE_REAL_KIND = @PAC_FORTRAN_NATIVE_REAL_KIND@ PAC_FORTRAN_NATIVE_REAL_SIZEOF = @PAC_FORTRAN_NATIVE_REAL_SIZEOF@ PARALLEL = @PARALLEL@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PROFILING = @PROFILING@ RANLIB = @RANLIB@ ROOT = @ROOT@ RUNPARALLEL = @RUNPARALLEL@ @@ -581,6 +583,7 @@ STATIC_EXEC = @STATIC_EXEC@ STATIC_SHARED = @STATIC_SHARED@ STRICT_FORMAT_CHECKS = @STRICT_FORMAT_CHECKS@ STRIP = @STRIP@ +SYMBOLS = @SYMBOLS@ TESTPARALLEL = @TESTPARALLEL@ THREADSAFE = @THREADSAFE@ TIME = @TIME@ diff --git a/tools/perform/Makefile.in b/tools/perform/Makefile.in index d8066ad..5f375f5 100644 --- a/tools/perform/Makefile.in +++ b/tools/perform/Makefile.in @@ -457,16 +457,17 @@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ AR = @AR@ +ASSERTS = @ASSERTS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_MODE = @BUILD_MODE@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ CFLAGS = @CFLAGS@ -CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ @@ -479,7 +480,6 @@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_VERSION = @CXX_VERSION@ CYGPATH_W = @CYGPATH_W@ -DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -541,8 +541,8 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTRUMENT = @INSTRUMENT@ INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@ +INTERNAL_DEBUG_OUTPUT = @INTERNAL_DEBUG_OUTPUT@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ @@ -553,11 +553,11 @@ LL_PATH = @LL_PATH@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_STATIC_EXEC = @LT_STATIC_EXEC@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MEMORYALLOCSANITYCHECK = @MEMORYALLOCSANITYCHECK@ +METADATATRACEFILE = @METADATATRACEFILE@ MKDIR_P = @MKDIR_P@ MPE = @MPE@ NM = @NM@ @@ -565,6 +565,7 @@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@ OBJEXT = @OBJEXT@ +OPTIMIZATION = @OPTIMIZATION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ @@ -588,6 +589,7 @@ PAC_FORTRAN_NATIVE_REAL_KIND = @PAC_FORTRAN_NATIVE_REAL_KIND@ PAC_FORTRAN_NATIVE_REAL_SIZEOF = @PAC_FORTRAN_NATIVE_REAL_SIZEOF@ PARALLEL = @PARALLEL@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PROFILING = @PROFILING@ RANLIB = @RANLIB@ ROOT = @ROOT@ RUNPARALLEL = @RUNPARALLEL@ @@ -603,6 +605,7 @@ STATIC_EXEC = @STATIC_EXEC@ STATIC_SHARED = @STATIC_SHARED@ STRICT_FORMAT_CHECKS = @STRICT_FORMAT_CHECKS@ STRIP = @STRIP@ +SYMBOLS = @SYMBOLS@ TESTPARALLEL = @TESTPARALLEL@ THREADSAFE = @THREADSAFE@ TIME = @TIME@ diff --git a/tools/testfiles/h5dump-help.txt b/tools/testfiles/h5dump-help.txt index 444dd97..7ebefc6 100644 --- a/tools/testfiles/h5dump-help.txt +++ b/tools/testfiles/h5dump-help.txt @@ -25,6 +25,8 @@ usage: h5dump [OPTIONS] files P can be the absolute path or just a relative path. -A, --onlyattr Print the header and value of attributes Optional value 0 suppresses printing attributes. + --vds-view-first-missing Set the VDS bounds to first missing mapped elements. + --vds-gap-size=N Set the missing file gap size, N=non-negative integers --------------- Object Property Options --------------- -i, --object-ids Print the object ids -p, --properties Print dataset filters, storage layout and fill value diff --git a/tools/testfiles/pbits/tnofilename-with-packed-bits.ddl b/tools/testfiles/pbits/tnofilename-with-packed-bits.ddl index 64a2880..1a1b7e8 100644 --- a/tools/testfiles/pbits/tnofilename-with-packed-bits.ddl +++ b/tools/testfiles/pbits/tnofilename-with-packed-bits.ddl @@ -25,6 +25,8 @@ usage: h5dump [OPTIONS] files P can be the absolute path or just a relative path. -A, --onlyattr Print the header and value of attributes Optional value 0 suppresses printing attributes. + --vds-view-first-missing Set the VDS bounds to first missing mapped elements. + --vds-gap-size=N Set the missing file gap size, N=non-negative integers --------------- Object Property Options --------------- -i, --object-ids Print the object ids -p, --properties Print dataset filters, storage layout and fill value diff --git a/tools/testfiles/pbits/tpbitsIncomplete.ddl b/tools/testfiles/pbits/tpbitsIncomplete.ddl index cdb1f91..2a2778a 100644 --- a/tools/testfiles/pbits/tpbitsIncomplete.ddl +++ b/tools/testfiles/pbits/tpbitsIncomplete.ddl @@ -25,6 +25,8 @@ usage: h5dump [OPTIONS] files P can be the absolute path or just a relative path. -A, --onlyattr Print the header and value of attributes Optional value 0 suppresses printing attributes. + --vds-view-first-missing Set the VDS bounds to first missing mapped elements. + --vds-gap-size=N Set the missing file gap size, N=non-negative integers --------------- Object Property Options --------------- -i, --object-ids Print the object ids -p, --properties Print dataset filters, storage layout and fill value diff --git a/tools/testfiles/pbits/tpbitsLengthExceeded.ddl b/tools/testfiles/pbits/tpbitsLengthExceeded.ddl index 6d2492a..5e00073 100644 --- a/tools/testfiles/pbits/tpbitsLengthExceeded.ddl +++ b/tools/testfiles/pbits/tpbitsLengthExceeded.ddl @@ -25,6 +25,8 @@ usage: h5dump [OPTIONS] files P can be the absolute path or just a relative path. -A, --onlyattr Print the header and value of attributes Optional value 0 suppresses printing attributes. + --vds-view-first-missing Set the VDS bounds to first missing mapped elements. + --vds-gap-size=N Set the missing file gap size, N=non-negative integers --------------- Object Property Options --------------- -i, --object-ids Print the object ids -p, --properties Print dataset filters, storage layout and fill value diff --git a/tools/testfiles/pbits/tpbitsLengthPositive.ddl b/tools/testfiles/pbits/tpbitsLengthPositive.ddl index 4f56619..f2574d4 100644 --- a/tools/testfiles/pbits/tpbitsLengthPositive.ddl +++ b/tools/testfiles/pbits/tpbitsLengthPositive.ddl @@ -25,6 +25,8 @@ usage: h5dump [OPTIONS] files P can be the absolute path or just a relative path. -A, --onlyattr Print the header and value of attributes Optional value 0 suppresses printing attributes. + --vds-view-first-missing Set the VDS bounds to first missing mapped elements. + --vds-gap-size=N Set the missing file gap size, N=non-negative integers --------------- Object Property Options --------------- -i, --object-ids Print the object ids -p, --properties Print dataset filters, storage layout and fill value diff --git a/tools/testfiles/pbits/tpbitsMaxExceeded.ddl b/tools/testfiles/pbits/tpbitsMaxExceeded.ddl index 3432433..15c0abc 100644 --- a/tools/testfiles/pbits/tpbitsMaxExceeded.ddl +++ b/tools/testfiles/pbits/tpbitsMaxExceeded.ddl @@ -25,6 +25,8 @@ usage: h5dump [OPTIONS] files P can be the absolute path or just a relative path. -A, --onlyattr Print the header and value of attributes Optional value 0 suppresses printing attributes. + --vds-view-first-missing Set the VDS bounds to first missing mapped elements. + --vds-gap-size=N Set the missing file gap size, N=non-negative integers --------------- Object Property Options --------------- -i, --object-ids Print the object ids -p, --properties Print dataset filters, storage layout and fill value diff --git a/tools/testfiles/pbits/tpbitsOffsetExceeded.ddl b/tools/testfiles/pbits/tpbitsOffsetExceeded.ddl index e51a09e..c62e290 100644 --- a/tools/testfiles/pbits/tpbitsOffsetExceeded.ddl +++ b/tools/testfiles/pbits/tpbitsOffsetExceeded.ddl @@ -25,6 +25,8 @@ usage: h5dump [OPTIONS] files P can be the absolute path or just a relative path. -A, --onlyattr Print the header and value of attributes Optional value 0 suppresses printing attributes. + --vds-view-first-missing Set the VDS bounds to first missing mapped elements. + --vds-gap-size=N Set the missing file gap size, N=non-negative integers --------------- Object Property Options --------------- -i, --object-ids Print the object ids -p, --properties Print dataset filters, storage layout and fill value diff --git a/tools/testfiles/pbits/tpbitsOffsetNegative.ddl b/tools/testfiles/pbits/tpbitsOffsetNegative.ddl index ba6e46d..5621a60 100644 --- a/tools/testfiles/pbits/tpbitsOffsetNegative.ddl +++ b/tools/testfiles/pbits/tpbitsOffsetNegative.ddl @@ -25,6 +25,8 @@ usage: h5dump [OPTIONS] files P can be the absolute path or just a relative path. -A, --onlyattr Print the header and value of attributes Optional value 0 suppresses printing attributes. + --vds-view-first-missing Set the VDS bounds to first missing mapped elements. + --vds-gap-size=N Set the missing file gap size, N=non-negative integers --------------- Object Property Options --------------- -i, --object-ids Print the object ids -p, --properties Print dataset filters, storage layout and fill value diff --git a/tools/h5format_convert/testfiles/h5fc_v1.h5 b/tools/testfiles/vds/a.h5 Binary files differindex d3d66f8..fa19535 100644 --- a/tools/h5format_convert/testfiles/h5fc_v1.h5 +++ b/tools/testfiles/vds/a.h5 diff --git a/tools/testfiles/vds/b.h5 b/tools/testfiles/vds/b.h5 Binary files differnew file mode 100644 index 0000000..08449ca --- /dev/null +++ b/tools/testfiles/vds/b.h5 diff --git a/tools/testfiles/vds/c.h5 b/tools/testfiles/vds/c.h5 Binary files differnew file mode 100644 index 0000000..ba9af30 --- /dev/null +++ b/tools/testfiles/vds/c.h5 diff --git a/tools/testfiles/vds/d.h5 b/tools/testfiles/vds/d.h5 Binary files differnew file mode 100644 index 0000000..8eceb4a --- /dev/null +++ b/tools/testfiles/vds/d.h5 diff --git a/tools/testfiles/vds/f-0.h5 b/tools/testfiles/vds/f-0.h5 Binary files differnew file mode 100644 index 0000000..242df07 --- /dev/null +++ b/tools/testfiles/vds/f-0.h5 diff --git a/tools/testfiles/vds/f-3.h5 b/tools/testfiles/vds/f-3.h5 Binary files differnew file mode 100644 index 0000000..539c1c9 --- /dev/null +++ b/tools/testfiles/vds/f-3.h5 diff --git a/tools/testfiles/vds/vds-eiger.h5 b/tools/testfiles/vds/vds-eiger.h5 Binary files differnew file mode 100644 index 0000000..23d1fd3 --- /dev/null +++ b/tools/testfiles/vds/vds-eiger.h5 diff --git a/tools/testfiles/vds/vds-first.ddl b/tools/testfiles/vds/vds-first.ddl new file mode 100644 index 0000000..97b1ecf --- /dev/null +++ b/tools/testfiles/vds/vds-first.ddl @@ -0,0 +1,210 @@ +HDF5 "vds-percival-unlim-maxmin.h5" { +GROUP "/" { + DATASET "VDS-Percival-unlim-maxmin" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 20, 10, 10 ) / ( H5S_UNLIMITED, 10, 10 ) } + DATA { + (0,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (1,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (2,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (3,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (4,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (5,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (6,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (7,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (8,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (9,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (10,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (11,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (12,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (13,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (14,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (15,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (16,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (17,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (18,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (19,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40 + } + } +} +} diff --git a/tools/testfiles/vds/vds-gap1.ddl b/tools/testfiles/vds/vds-gap1.ddl new file mode 100644 index 0000000..cace781 --- /dev/null +++ b/tools/testfiles/vds/vds-gap1.ddl @@ -0,0 +1,58 @@ +HDF5 "vds-eiger.h5" { +DATASET "/VDS-Eiger" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 5, 10, 10 ) / ( H5S_UNLIMITED, 10, 10 ) } + DATA { + (0,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + } +} +} diff --git a/tools/testfiles/vds/vds-gap2.ddl b/tools/testfiles/vds/vds-gap2.ddl new file mode 100644 index 0000000..24da48f --- /dev/null +++ b/tools/testfiles/vds/vds-gap2.ddl @@ -0,0 +1,210 @@ +HDF5 "vds-eiger.h5" { +GROUP "/" { + DATASET "VDS-Eiger" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 20, 10, 10 ) / ( H5S_UNLIMITED, 10, 10 ) } + DATA { + (0,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (5,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (5,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (5,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (5,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (5,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (5,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (5,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (5,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (5,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (5,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (6,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (6,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (6,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (6,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (6,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (6,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (6,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (6,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (6,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (6,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (7,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (7,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (7,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (7,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (7,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (7,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (7,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (7,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (7,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (7,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (8,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (8,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (8,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (8,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (8,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (8,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (8,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (8,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (8,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (8,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (9,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (9,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (9,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (9,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (9,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (9,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (9,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (9,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (9,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (9,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (10,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (10,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (10,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (10,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (10,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (10,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (10,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (10,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (10,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (10,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (11,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (11,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (11,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (11,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (11,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (11,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (11,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (11,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (11,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (11,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (12,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (12,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (12,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (12,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (12,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (12,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (12,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (12,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (12,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (12,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (13,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (13,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (13,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (13,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (13,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (13,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (13,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (13,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (13,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (13,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (14,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (14,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (14,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (14,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (14,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (14,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (14,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (14,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (14,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (14,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (15,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (15,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (15,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (15,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (15,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (15,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (15,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (15,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (15,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (15,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (16,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (16,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (16,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (16,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (16,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (16,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (16,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (16,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (16,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (16,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (17,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (17,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (17,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (17,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (17,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (17,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (17,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (17,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (17,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (17,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (19,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (19,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (19,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (19,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (19,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (19,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (19,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (19,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (19,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (19,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 + } + } +} +} diff --git a/tools/testfiles/vds/vds-percival-unlim-maxmin.h5 b/tools/testfiles/vds/vds-percival-unlim-maxmin.h5 Binary files differnew file mode 100644 index 0000000..b7f8827 --- /dev/null +++ b/tools/testfiles/vds/vds-percival-unlim-maxmin.h5 diff --git a/tools/testfiles/vds/vds_layout-eiger.ddl b/tools/testfiles/vds/vds_layout-eiger.ddl new file mode 100644 index 0000000..0ea4994 --- /dev/null +++ b/tools/testfiles/vds/vds_layout-eiger.ddl @@ -0,0 +1,87 @@ +HDF5 "vds-eiger.h5" { +GROUP "/" { + DATASET "VDS-Eiger" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 5, 10, 10 ) / ( H5S_UNLIMITED, 10, 10 ) } + STORAGE_LAYOUT { + MAPPING 0 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (5,1,1) + COUNT (H5S_UNLIMITED,1,1) + BLOCK (5,10,10) + } + } + SOURCE { + FILE "f-%b.h5" + DATASET "A" + SELECTION ALL + } + } + } + FILTERS { + NONE + } + FILLVALUE { + FILL_TIME H5D_FILL_TIME_IFSET + VALUE 0 + } + ALLOCATION_TIME { + H5D_ALLOC_TIME_LATE + } + DATA { + (0,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (0,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (2,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (3,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (4,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + } + } +} +} diff --git a/tools/testfiles/vds/vds_layout-maxmin.ddl b/tools/testfiles/vds/vds_layout-maxmin.ddl new file mode 100644 index 0000000..0b5b583 --- /dev/null +++ b/tools/testfiles/vds/vds_layout-maxmin.ddl @@ -0,0 +1,422 @@ +HDF5 "vds-percival-unlim-maxmin.h5" { +GROUP "/" { + DATASET "VDS-Percival-unlim-maxmin" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 32, 10, 10 ) / ( H5S_UNLIMITED, 10, 10 ) } + STORAGE_LAYOUT { + MAPPING 0 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (4,1,1) + COUNT (H5S_UNLIMITED,1,1) + BLOCK (1,10,10) + } + } + SOURCE { + FILE "a.h5" + DATASET "A" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (H5S_UNLIMITED,1,1) + BLOCK (1,10,10) + } + } + } + MAPPING 1 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (1,0,0) + STRIDE (4,1,1) + COUNT (H5S_UNLIMITED,1,1) + BLOCK (1,10,10) + } + } + SOURCE { + FILE "b.h5" + DATASET "B" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (H5S_UNLIMITED,1,1) + BLOCK (1,10,10) + } + } + } + MAPPING 2 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (2,0,0) + STRIDE (4,1,1) + COUNT (H5S_UNLIMITED,1,1) + BLOCK (1,10,10) + } + } + SOURCE { + FILE "c.h5" + DATASET "C" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (H5S_UNLIMITED,1,1) + BLOCK (1,10,10) + } + } + } + MAPPING 3 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (3,0,0) + STRIDE (4,1,1) + COUNT (H5S_UNLIMITED,1,1) + BLOCK (1,10,10) + } + } + SOURCE { + FILE "d.h5" + DATASET "D" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (H5S_UNLIMITED,1,1) + BLOCK (1,10,10) + } + } + } + } + FILTERS { + NONE + } + FILLVALUE { + FILL_TIME H5D_FILL_TIME_IFSET + VALUE 0 + } + ALLOCATION_TIME { + H5D_ALLOC_TIME_LATE + } + DATA { + (0,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (1,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (2,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (3,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (4,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (5,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (6,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (7,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (8,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (9,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (10,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (11,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (12,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (13,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (14,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (15,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (16,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (17,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (18,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (19,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (20,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (20,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (20,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (20,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (20,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (20,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (20,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (20,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (20,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (20,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (21,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (21,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (21,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (21,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (21,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (21,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (21,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (21,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (21,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (21,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (22,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (22,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (22,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (22,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (22,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (22,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (22,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (22,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (22,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (22,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (23,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (23,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (23,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (23,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (23,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (23,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (23,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (23,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (23,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (23,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (24,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (24,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (24,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (24,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (24,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (24,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (24,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (24,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (24,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (24,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (25,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (25,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (25,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (25,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (25,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (25,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (25,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (25,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (25,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (25,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (26,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (26,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (26,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (26,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (26,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (26,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (26,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (26,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (26,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (26,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (27,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (27,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (27,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (27,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (27,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (27,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (27,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (27,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (27,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (27,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (28,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (28,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (28,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (28,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (28,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (28,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (28,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (28,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (28,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (28,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (29,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (29,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (29,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (29,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (29,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (29,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (29,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (29,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (29,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (29,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (30,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (30,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (30,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (30,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (30,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (30,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (30,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (30,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (30,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (30,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (31,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (31,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (31,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (31,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (31,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (31,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (31,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (31,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (31,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (31,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40 + } + } +} +} |