summaryrefslogtreecommitdiffstats
path: root/tools/h5repack
diff options
context:
space:
mode:
authorAllen Byrne <byrn@hdfgroup.org>2016-10-27 15:04:42 (GMT)
committerAllen Byrne <byrn@hdfgroup.org>2016-10-27 15:04:42 (GMT)
commit5b562d9ce9b2945d0378b9c03e01f42923da80f4 (patch)
tree3fa67d9656f2b32330e3fe31996952f60f71cdb9 /tools/h5repack
parentb34423f620b470e1c5dc38cdd3abbd5fe8adc4ec (diff)
downloadhdf5-5b562d9ce9b2945d0378b9c03e01f42923da80f4.zip
hdf5-5b562d9ce9b2945d0378b9c03e01f42923da80f4.tar.gz
hdf5-5b562d9ce9b2945d0378b9c03e01f42923da80f4.tar.bz2
Split tools into src and test - remove folders
Diffstat (limited to 'tools/h5repack')
-rw-r--r--tools/h5repack/CMakeLists.txt114
-rw-r--r--tools/h5repack/CMakeTests.cmake1153
-rw-r--r--tools/h5repack/Makefile.am79
-rw-r--r--tools/h5repack/dynlib_rpk.c97
-rw-r--r--tools/h5repack/h5repack.c942
-rw-r--r--tools/h5repack/h5repack.h243
-rw-r--r--tools/h5repack/h5repack.sh.in1265
-rw-r--r--tools/h5repack/h5repack_copy.c1581
-rw-r--r--tools/h5repack/h5repack_filters.c493
-rw-r--r--tools/h5repack/h5repack_main.c664
-rw-r--r--tools/h5repack/h5repack_opttable.c367
-rw-r--r--tools/h5repack/h5repack_parse.c616
-rw-r--r--tools/h5repack/h5repack_plugin.sh.in275
-rw-r--r--tools/h5repack/h5repack_refs.c877
-rw-r--r--tools/h5repack/h5repack_verify.c675
-rw-r--r--tools/h5repack/h5repacktst.c6856
-rw-r--r--tools/h5repack/testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.ddl112
-rw-r--r--tools/h5repack/testfiles/2_vds.h5-vds_chunk3x6x9-v.ddl70
-rw-r--r--tools/h5repack/testfiles/3_1_vds.h5-vds_chunk2x5x8-v.ddl147
-rw-r--r--tools/h5repack/testfiles/4_vds.h5-vds_compa-v.ddl58
-rw-r--r--tools/h5repack/testfiles/4_vds.h5-vds_conti-v.ddl59
-rw-r--r--tools/h5repack/testfiles/README5
-rw-r--r--tools/h5repack/testfiles/deflate_limit.h5repack_layout.h5.ddl130
-rw-r--r--tools/h5repack/testfiles/h5repack-help.txt125
-rw-r--r--tools/h5repack/testfiles/h5repack.info1
-rw-r--r--tools/h5repack/testfiles/h5repack_attr.h5bin21856 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_attr_refs.h5bin10336 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_deflate.h5bin6336 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_early.h5bin3074224 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_ext.binbin8 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_ext.h5bin1464 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_fill.h5bin2168 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_filters.h5bin27604 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_filters.h5-gzip_verbose_filters.tst13
-rw-r--r--tools/h5repack/testfiles/h5repack_fletcher.h5bin7232 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_hlink.h5bin6544 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_layout.UD.h5bin43744 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_layout.UD.h5-plugin_none.ddl130
-rw-r--r--tools/h5repack/testfiles/h5repack_layout.h5bin29480 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_layout.h5-dset2_chunk_20x10-errstk.tst38
-rw-r--r--tools/h5repack/testfiles/h5repack_layout.h5-plugin_test.ddl158
-rw-r--r--tools/h5repack/testfiles/h5repack_layout.h5-plugin_zero.tst9
-rw-r--r--tools/h5repack/testfiles/h5repack_layout.h5.ddl606
-rw-r--r--tools/h5repack/testfiles/h5repack_layout2.h5bin6808 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_layout3.h5bin491840 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_layouto.h5bin1576 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_named_dtypes.h5bin4320 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_nbit.h5bin13208 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_nested_8bit_enum.h5bin273992 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_nested_8bit_enum_deflated.h5bin120630 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_objs.h5bin19738 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_refs.h5bin10336 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_shuffle.h5bin7216 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_soffset.h5bin12452 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/h5repack_szip.h5bin5588 -> 0 bytes
-rw-r--r--tools/h5repack/testfiles/plugin_none.h5repack_layout.UD.h5.tst14
-rw-r--r--tools/h5repack/testfiles/plugin_test.h5repack_layout.h5.tst14
-rw-r--r--tools/h5repack/testfiles/ublock.bin1
-rw-r--r--tools/h5repack/testh5repack_detect_szip.c62
59 files changed, 0 insertions, 18049 deletions
diff --git a/tools/h5repack/CMakeLists.txt b/tools/h5repack/CMakeLists.txt
deleted file mode 100644
index 4a21605..0000000
--- a/tools/h5repack/CMakeLists.txt
+++ /dev/null
@@ -1,114 +0,0 @@
-cmake_minimum_required (VERSION 3.1.0)
-PROJECT (HDF5_TOOLS_H5REPACK)
-
-#-----------------------------------------------------------------------------
-# Setup include Directories
-#-----------------------------------------------------------------------------
-INCLUDE_DIRECTORIES (${HDF5_TOOLS_DIR}/lib)
-INCLUDE_DIRECTORIES (${HDF5_TEST_SRC_DIR})
-
-# --------------------------------------------------------------------
-# Add h5Repack executables
-# --------------------------------------------------------------------
-set (REPACK_COMMON_SOURCES
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_copy.c
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_filters.c
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_opttable.c
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_parse.c
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_refs.c
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_verify.c
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack.c
-)
-
-add_executable (h5repack ${REPACK_COMMON_SOURCES} ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_main.c)
-TARGET_NAMING (h5repack STATIC)
-TARGET_C_PROPERTIES (h5repack STATIC " " " ")
-target_link_libraries (h5repack ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
-set_target_properties (h5repack PROPERTIES FOLDER tools)
-set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5repack")
-
-set (H5_DEP_EXECUTABLES h5repack)
-
-if (BUILD_TESTING)
- # --------------------------------------------------------------------
- # Add h5Repack test executables
- # --------------------------------------------------------------------
- add_executable (testh5repack_detect_szip ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testh5repack_detect_szip.c)
- TARGET_NAMING (testh5repack_detect_szip STATIC)
- TARGET_C_PROPERTIES (testh5repack_detect_szip STATIC " " " ")
- target_link_libraries (testh5repack_detect_szip ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
- set_target_properties (testh5repack_detect_szip PROPERTIES FOLDER tools)
-
- add_executable (h5repacktest ${REPACK_COMMON_SOURCES} ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repacktst.c)
- TARGET_NAMING (h5repacktest STATIC)
- TARGET_C_PROPERTIES (h5repacktest STATIC " " " ")
- target_link_libraries (h5repacktest ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
- set_target_properties (h5repacktest PROPERTIES FOLDER tools)
-
- #-----------------------------------------------------------------------------
- # If plugin library tests can be tested
- #-----------------------------------------------------------------------------
- set (HDF5_TOOL_PLUGIN_LIB_CORENAME "dynlibadd")
- set (HDF5_TOOL_PLUGIN_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_TOOL_PLUGIN_LIB_CORENAME}")
- set (HDF5_TOOL_PLUGIN_LIB_TARGET ${HDF5_TOOL_PLUGIN_LIB_CORENAME})
- set (HDF5_TOOL_PLUGIN_LIB_VCORENAME "dynlibvers")
- set (HDF5_TOOL_PLUGIN_LIB_VNAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_TOOL_PLUGIN_LIB_VCORENAME}")
- set (HDF5_TOOL_PLUGIN_LIB_VTARGET ${HDF5_TOOL_PLUGIN_LIB_VCORENAME})
- add_definitions (${HDF_EXTRA_C_FLAGS})
- INCLUDE_DIRECTORIES (${HDF5_SRC_DIR})
-
- add_library (${HDF5_TOOL_PLUGIN_LIB_TARGET} SHARED dynlib_rpk.c)
- TARGET_C_PROPERTIES (${HDF5_TOOL_PLUGIN_LIB_TARGET} SHARED " " " ")
- target_link_libraries (${HDF5_TOOL_PLUGIN_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
- H5_SET_LIB_OPTIONS (${HDF5_TOOL_PLUGIN_LIB_TARGET} ${HDF5_TOOL_PLUGIN_LIB_NAME} SHARED ${HDF5_PACKAGE_SOVERSION})
-
- add_library (${HDF5_TOOL_PLUGIN_LIB_VTARGET} SHARED dynlib_vrpk.c)
- TARGET_C_PROPERTIES (${HDF5_TOOL_PLUGIN_LIB_VTARGET} SHARED " " " ")
- target_link_libraries (${HDF5_TOOL_PLUGIN_LIB_VTARGET} ${HDF5_TEST_LIB_TARGET})
- H5_SET_LIB_OPTIONS (${HDF5_TOOL_PLUGIN_LIB_VTARGET} ${HDF5_TOOL_PLUGIN_LIB_VNAME} SHARED ${HDF5_PACKAGE_SOVERSION})
-
- # make plugins dir
- file (MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/plugins")
- #-----------------------------------------------------------------------------
- # Copy plugin library to a plugins folder
- #-----------------------------------------------------------------------------
- add_custom_command (
- TARGET ${HDF5_TOOL_PLUGIN_LIB_TARGET}
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy_if_different
- "$<TARGET_FILE:${HDF5_TOOL_PLUGIN_LIB_TARGET}>"
- "${CMAKE_BINARY_DIR}/plugins/$<TARGET_FILE_NAME:${HDF5_TOOL_PLUGIN_LIB_TARGET}>"
- )
- add_custom_command (
- TARGET ${HDF5_TOOL_PLUGIN_LIB_VTARGET}
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy_if_different
- "$<TARGET_FILE:${HDF5_TOOL_PLUGIN_LIB_VTARGET}>"
- "${CMAKE_BINARY_DIR}/plugins/$<TARGET_FILE_NAME:${HDF5_TOOL_PLUGIN_LIB_VTARGET}>"
- )
-
- include (CMakeTests.cmake)
-
-endif (BUILD_TESTING)
-
-##############################################################################
-##############################################################################
-### I N S T A L L A T I O N ###
-##############################################################################
-##############################################################################
-
-#-----------------------------------------------------------------------------
-# Rules for Installation of tools using make Install target
-#-----------------------------------------------------------------------------
-
-#INSTALL_PROGRAM_PDB (h5repack ${HDF5_INSTALL_BIN_DIR} toolsapplications)
-
-install (
- TARGETS
- h5repack
- EXPORT
- ${HDF5_EXPORTED_TARGETS}
- RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications
-)
diff --git a/tools/h5repack/CMakeTests.cmake b/tools/h5repack/CMakeTests.cmake
deleted file mode 100644
index e8ee00f..0000000
--- a/tools/h5repack/CMakeTests.cmake
+++ /dev/null
@@ -1,1153 +0,0 @@
-
-##############################################################################
-##############################################################################
-### T E S T I N G ###
-##############################################################################
-##############################################################################
-
- if (HDF5_TEST_VFD)
- set (VFD_LIST
- sec2
- stdio
- core
- split
- multi
- family
- )
-
- if (DIRECT_VFD)
- set (VFD_LIST ${VFD_LIST} direct)
- endif (DIRECT_VFD)
-
- MACRO (ADD_VFD_TEST vfdname resultcode)
- add_test (
- NAME H5REPACK-VFD-${vfdname}-h5repacktest
- COMMAND "${CMAKE_COMMAND}"
- -D "TEST_PROGRAM=$<TARGET_FILE:h5repacktest>"
- -D "TEST_ARGS:STRING="
- -D "TEST_VFD:STRING=${vfdname}"
- -D "TEST_EXPECT=${resultcode}"
- -D "TEST_OUTPUT=h5repacktest"
- -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
- -P "${HDF_RESOURCES_DIR}/vfdTest.cmake"
- )
- if (NOT "${last_test}" STREQUAL "")
- set_tests_properties (H5REPACK-VFD-${vfdname}-h5repacktest PROPERTIES DEPENDS ${last_test})
- endif (NOT "${last_test}" STREQUAL "")
- set (last_test "H5REPACK-VFD-${vfdname}-h5repacktest")
- ENDMACRO (ADD_VFD_TEST)
- endif (HDF5_TEST_VFD)
-
- # --------------------------------------------------------------------
- # Copy all the HDF5 files from the source directory into the test directory
- # --------------------------------------------------------------------
- set (LIST_HDF5_TEST_FILES
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_attr.h5
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_attr_refs.h5
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_deflate.h5
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_early.h5
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_ext.h5
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_fill.h5
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_filters.h5
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_fletcher.h5
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_hlink.h5
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layouto.h5
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout2.h5
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout3.h5
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.UD.h5
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_named_dtypes.h5
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_nbit.h5
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_objs.h5
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_refs.h5
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_shuffle.h5
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_soffset.h5
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_szip.h5
- # h5diff/testfile
- ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr1.h5
- # tools/testfiles
- ${HDF5_TOOLS_DIR}/testfiles/tfamily00000.h5
- ${HDF5_TOOLS_DIR}/testfiles/tfamily00001.h5
- ${HDF5_TOOLS_DIR}/testfiles/tfamily00002.h5
- ${HDF5_TOOLS_DIR}/testfiles/tfamily00003.h5
- ${HDF5_TOOLS_DIR}/testfiles/tfamily00004.h5
- ${HDF5_TOOLS_DIR}/testfiles/tfamily00005.h5
- ${HDF5_TOOLS_DIR}/testfiles/tfamily00006.h5
- ${HDF5_TOOLS_DIR}/testfiles/tfamily00007.h5
- ${HDF5_TOOLS_DIR}/testfiles/tfamily00008.h5
- ${HDF5_TOOLS_DIR}/testfiles/tfamily00009.h5
- ${HDF5_TOOLS_DIR}/testfiles/tfamily00010.h5
- # tools/testfiles/vds
- ${HDF5_TOOLS_DIR}/testfiles/vds/1_a.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/1_b.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/1_c.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/1_d.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/1_e.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/1_f.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/1_vds.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/2_a.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/2_b.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/2_c.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/2_d.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/2_e.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/2_vds.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/3_1_vds.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/3_2_vds.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/4_0.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/4_1.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/4_2.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/4_vds.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/5_a.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/5_b.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/5_c.h5
- ${HDF5_TOOLS_DIR}/testfiles/vds/5_vds.h5
- )
-
- set (LIST_OTHER_TEST_FILES
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack-help.txt
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_ext.bin
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/ublock.bin
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack.info
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/deflate_limit.h5repack_layout.h5.ddl
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5.ddl
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_filters.h5-gzip_verbose_filters.tst
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5-dset2_chunk_20x10-errstk.tst
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5-plugin_test.ddl
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/plugin_test.h5repack_layout.h5.tst
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.UD.h5-plugin_none.ddl
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/plugin_none.h5repack_layout.UD.h5.tst
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5-plugin_version_test.ddl
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/plugin_version_test.h5repack_layout.h5.tst
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.ddl
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/2_vds.h5-vds_chunk3x6x9-v.ddl
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/3_1_vds.h5-vds_chunk2x5x8-v.ddl
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/4_vds.h5-vds_compa-v.ddl
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/4_vds.h5-vds_conti-v.ddl
- ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5-plugin_zero.tst
- )
-
- foreach (h5_file ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
- get_filename_component(fname "${h5_file}" NAME)
- HDFTEST_COPY_FILE("${h5_file}" "${PROJECT_BINARY_DIR}/testfiles/${fname}" "h5repack_files")
- endforeach (h5_file ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
- add_custom_target(h5repack_files ALL COMMENT "Copying files needed by h5repack tests" DEPENDS ${h5repack_files_list})
-
-##############################################################################
-##############################################################################
-### T H E T E S T S M A C R O S ###
-##############################################################################
-##############################################################################
-
- MACRO (ADD_HELP_TEST testname resultcode)
- # If using memchecker add tests without using scripts
- if (HDF5_ENABLE_USING_MEMCHECKER)
- add_test (NAME H5REPACK-${testname} COMMAND $<TARGET_FILE:h5repack> ${ARGN})
- set_tests_properties (H5REPACK-${testname} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
- if (NOT "${last_test}" STREQUAL "")
- set_tests_properties (H5REPACK-${testname} PROPERTIES DEPENDS ${last_test})
- endif ()
- set (last_test "H5REPACK-${testname}")
- else (HDF5_ENABLE_USING_MEMCHECKER)
- add_test (
- NAME H5REPACK-h5repack-${testname}
- COMMAND "${CMAKE_COMMAND}"
- -D "TEST_PROGRAM=$<TARGET_FILE:h5repack>"
- -D "TEST_ARGS:STRING=${ARGN}"
- -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
- -D "TEST_OUTPUT=h5repack-${testname}.out"
- -D "TEST_EXPECT=${resultcode}"
- -D "TEST_REFERENCE=h5repack-${testname}.txt"
- -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake"
- )
- endif (HDF5_ENABLE_USING_MEMCHECKER)
- ENDMACRO (ADD_HELP_TEST)
-
- MACRO (ADD_H5_TEST_OLD testname testtype testfile)
- if ("${testtype}" STREQUAL "SKIP")
- if (NOT HDF5_ENABLE_USING_MEMCHECKER)
- add_test (
- NAME H5REPACK_OLD-${testname}-SKIPPED
- COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} -i ${PROJECT_BINARY_DIR}/testfiles/${testfile} -o ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}"
- )
- endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
- else ("${testtype}" STREQUAL "SKIP")
- add_test (
- NAME H5REPACK_OLD-${testname}
- COMMAND $<TARGET_FILE:h5repack> ${ARGN} -i ${PROJECT_BINARY_DIR}/testfiles/${testfile} -o ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}
- )
- if (NOT "${last_test}" STREQUAL "")
- set_tests_properties (H5REPACK_OLD-${testname} PROPERTIES DEPENDS ${last_test})
- endif ()
- add_test (
- NAME H5REPACK_OLD-${testname}_DFF
- COMMAND $<TARGET_FILE:h5diff> ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}
- )
- set_tests_properties (H5REPACK_OLD-${testname}_DFF PROPERTIES DEPENDS H5REPACK_OLD-${testname})
- endif ("${testtype}" STREQUAL "SKIP")
- ENDMACRO (ADD_H5_TEST_OLD)
-
- MACRO (ADD_H5_TEST testname testtype testfile)
- if ("${testtype}" STREQUAL "SKIP")
- if (NOT HDF5_ENABLE_USING_MEMCHECKER)
- add_test (
- NAME H5REPACK-${testname}-SKIPPED
- COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}"
- )
- endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
- else ("${testtype}" STREQUAL "SKIP")
- add_test (
- NAME H5REPACK-${testname}
- COMMAND $<TARGET_FILE:h5repack> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}
- )
- if (NOT "${last_test}" STREQUAL "")
- set_tests_properties (H5REPACK-${testname} PROPERTIES DEPENDS ${last_test})
- endif ()
- add_test (
- NAME H5REPACK-${testname}_DFF
- COMMAND $<TARGET_FILE:h5diff> ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}
- )
- set_tests_properties (H5REPACK-${testname}_DFF PROPERTIES DEPENDS H5REPACK-${testname})
- endif ("${testtype}" STREQUAL "SKIP")
- ENDMACRO (ADD_H5_TEST)
-
- MACRO (ADD_H5_CMP_TEST testname testfilter testtype resultcode resultfile)
- if ("${testtype}" STREQUAL "SKIP")
- if (NOT HDF5_ENABLE_USING_MEMCHECKER)
- add_test (
- NAME H5REPACK_CMP-${testname}-SKIPPED
- COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}"
- )
- endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
- else ("${testtype}" STREQUAL "SKIP")
- # If using memchecker add tests without using scripts
- if (HDF5_ENABLE_USING_MEMCHECKER)
- add_test (
- NAME H5REPACK_CMP-${testname}
- COMMAND $<TARGET_FILE:h5repack> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile})
- else (HDF5_ENABLE_USING_MEMCHECKER)
- add_test (
- NAME H5REPACK_CMP-${testname}
- COMMAND "${CMAKE_COMMAND}"
- -D "TEST_PROGRAM=$<TARGET_FILE:h5repack>"
- -D "TEST_ARGS:STRING=${ARGN};${resultfile};out-${testname}.${resultfile}"
- -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
- -D "TEST_OUTPUT=${resultfile}-${testname}.out"
- -D "TEST_EXPECT=${resultcode}"
- -D "TEST_FILTER:STRING=${testfilter}"
- -D "TEST_REFERENCE=${resultfile}-${testname}.tst"
- -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake"
- )
- endif (HDF5_ENABLE_USING_MEMCHECKER)
- if (NOT "${last_test}" STREQUAL "")
- set_tests_properties (H5REPACK_CMP-${testname} PROPERTIES DEPENDS ${last_test})
- endif ()
- endif ("${testtype}" STREQUAL "SKIP")
- ENDMACRO (ADD_H5_CMP_TEST)
-
- MACRO (ADD_H5_MASK_TEST testname testtype resultcode resultfile)
- if ("${testtype}" STREQUAL "SKIP")
- if (NOT HDF5_ENABLE_USING_MEMCHECKER)
- add_test (
- NAME H5REPACK_MASK-${testname}-SKIPPED
- COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}"
- )
- endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
- else ("${testtype}" STREQUAL "SKIP")
- # If using memchecker add tests without using scripts
- if (HDF5_ENABLE_USING_MEMCHECKER)
- add_test (
- NAME H5REPACK_MASK-${testname}
- COMMAND $<TARGET_FILE:h5repack> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile})
- else (HDF5_ENABLE_USING_MEMCHECKER)
- add_test (
- NAME H5REPACK_MASK-${testname}
- COMMAND "${CMAKE_COMMAND}"
- -D "TEST_PROGRAM=$<TARGET_FILE:h5repack>"
- -D "TEST_ARGS:STRING=${ARGN};${resultfile};out-${testname}.${resultfile}"
- -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
- -D "TEST_OUTPUT=${resultfile}-${testname}.out"
- -D "TEST_EXPECT=${resultcode}"
- -D "TEST_MASK_ERROR=true"
- -D "TEST_REFERENCE=${resultfile}-${testname}.tst"
- -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake"
- )
- endif (HDF5_ENABLE_USING_MEMCHECKER)
- if (NOT "${last_test}" STREQUAL "")
- set_tests_properties (H5REPACK_MASK-${testname} PROPERTIES DEPENDS ${last_test})
- endif ()
- endif ("${testtype}" STREQUAL "SKIP")
- ENDMACRO (ADD_H5_MASK_TEST)
-
- MACRO (ADD_H5_DMP_TEST testname testtype resultcode resultfile)
- if ("${testtype}" STREQUAL "SKIP")
- if (NOT HDF5_ENABLE_USING_MEMCHECKER)
- add_test (
- NAME H5REPACK_DMP-${testname}-SKIPPED
- COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}"
- )
- endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
- else ("${testtype}" STREQUAL "SKIP")
- # If using memchecker add tests without using scripts
- add_test (
- NAME H5REPACK_DMP-${testname}
- COMMAND $<TARGET_FILE:h5repack> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile})
- if (NOT "${last_test}" STREQUAL "")
- set_tests_properties (H5REPACK_DMP-${testname} PROPERTIES DEPENDS ${last_test})
- endif ()
- if (NOT HDF5_ENABLE_USING_MEMCHECKER)
- add_test (
- NAME H5REPACK_DMP-h5dump-${testname}
- COMMAND "${CMAKE_COMMAND}"
- -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
- -D "TEST_ARGS:STRING=-pH;out-${testname}.${resultfile}"
- -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
- -D "TEST_OUTPUT=${resultfile}-${testname}.out"
- -D "TEST_EXPECT=${resultcode}"
- -D "TEST_REFERENCE=${testname}.${resultfile}.ddl"
- -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake"
- )
- set_tests_properties (H5REPACK_DMP-h5dump-${testname} PROPERTIES DEPENDS "H5REPACK_DMP-${testname}")
- endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
- endif ("${testtype}" STREQUAL "SKIP")
- ENDMACRO (ADD_H5_DMP_TEST)
-
- MACRO (ADD_H5_VERIFY_TEST testname testtype resultcode testfile testdset testfilter)
- if ("${testtype}" STREQUAL "SKIP")
- if (NOT HDF5_ENABLE_USING_MEMCHECKER)
- add_test (
- NAME H5REPACK_VERIFY_LAYOUT-${testname}-SKIPPED
- COMMAND ${CMAKE_COMMAND} -E echo "SKIP -d ${testdset} -pH ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}"
- )
- endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
- else ("${testtype}" STREQUAL "SKIP")
- if (NOT HDF5_ENABLE_USING_MEMCHECKER)
- add_test (
- NAME H5REPACK_VERIFY_LAYOUT-${testname}
- COMMAND $<TARGET_FILE:h5repack> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}
- )
- if (NOT "${last_test}" STREQUAL "")
- set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname} PROPERTIES DEPENDS ${last_test})
- endif ()
- add_test (
- NAME H5REPACK_VERIFY_LAYOUT-${testname}_DFF
- COMMAND $<TARGET_FILE:h5diff> ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}
- )
- set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname}_DFF PROPERTIES DEPENDS H5REPACK_VERIFY_LAYOUT-${testname})
- if ("${resultcode}" STREQUAL "0")
- add_test (
- NAME H5REPACK_VERIFY_LAYOUT-${testname}_DMP
- COMMAND "${CMAKE_COMMAND}"
- -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
- -D "TEST_ARGS:STRING=-d;${testdset};-pH;out-${testname}.${testfile}"
- -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
- -D "TEST_OUTPUT=${testfile}-${testname}-v.out"
- -D "TEST_EXPECT=${resultcode}"
- -D "TEST_FILTER:STRING=${testfilter}"
- -D "TEST_REFERENCE=${testfilter}"
- -P "${HDF_RESOURCES_EXT_DIR}/grepTest.cmake"
- )
- set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname}_DMP PROPERTIES DEPENDS H5REPACK_VERIFY_LAYOUT-${testname}_DFF)
- else ("${resultcode}" STREQUAL "0")
- if ("${testfilter}" STREQUAL "CHUNKED")
- set (nottestfilter "(CONTIGUOUS|COMPACT)")
- endif ()
- if ("${testfilter}" STREQUAL "CONTIGUOUS")
- set (nottestfilter "(CHUNK|COMPACT)")
- endif ()
- if ("${testfilter}" STREQUAL "COMPACT")
- set (nottestfilter "(CONTIGUOUS|CHUNK)")
- endif ()
- add_test (
- NAME H5REPACK_VERIFY_LAYOUT-${testname}_DMP
- COMMAND "${CMAKE_COMMAND}"
- -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
- -D "TEST_ARGS:STRING=-pH;out-${testname}.${testfile}"
- -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
- -D "TEST_OUTPUT=${testfile}-${testname}-v.out"
- -D "TEST_EXPECT=${resultcode}"
- -D "TEST_FILTER:STRING=${nottestfilter}"
- -D "TEST_REFERENCE=${testfilter}"
- -P "${HDF_RESOURCES_EXT_DIR}/grepTest.cmake"
- )
- set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname}_DMP PROPERTIES DEPENDS H5REPACK_VERIFY_LAYOUT-${testname}_DFF)
- endif ("${resultcode}" STREQUAL "0")
- endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
- endif ("${testtype}" STREQUAL "SKIP")
- ENDMACRO (ADD_H5_VERIFY_TEST)
-
- MACRO (ADD_H5_VERIFY_VDS testname testtype resultcode testfile testdset testfilter)
- if ("${testtype}" STREQUAL "SKIP")
- if (NOT HDF5_ENABLE_USING_MEMCHECKER)
- add_test (
- NAME H5REPACK_VERIFY_LAYOUT_VDS-${testname}-SKIPPED
- COMMAND ${CMAKE_COMMAND} -E echo "SKIP -d ${testdset} -pH ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}"
- )
- endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
- else ("${testtype}" STREQUAL "SKIP")
- if (NOT HDF5_ENABLE_USING_MEMCHECKER)
- add_test (
- NAME H5REPACK_VERIFY_LAYOUT_VDS-${testname}
- COMMAND $<TARGET_FILE:h5repack> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}
- )
- set_tests_properties (H5REPACK_VERIFY_LAYOUT_VDS-${testname} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
- if (NOT "${last_test}" STREQUAL "")
- set_tests_properties (H5REPACK_VERIFY_LAYOUT_VDS-${testname} PROPERTIES DEPENDS ${last_test})
- endif ()
- add_test (
- NAME H5REPACK_VERIFY_LAYOUT_VDS-${testname}_DMP
- COMMAND "${CMAKE_COMMAND}"
- -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
- -D "TEST_ARGS:STRING=-d;${testdset};-p;out-${testname}.${testfile}"
- -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
- -D "TEST_OUTPUT=${testfile}-${testname}-v.out"
- -D "TEST_EXPECT=${resultcode}"
- -D "TEST_REFERENCE=${testfile}-${testname}-v.ddl"
- -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake"
- )
- set_tests_properties (H5REPACK_VERIFY_LAYOUT_VDS-${testname}_DMP PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
- set_tests_properties (H5REPACK_VERIFY_LAYOUT_VDS-${testname}_DMP PROPERTIES DEPENDS H5REPACK_VERIFY_LAYOUT_VDS-${testname})
- endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
- endif ("${testtype}" STREQUAL "SKIP")
- ENDMACRO (ADD_H5_VERIFY_VDS)
-
- MACRO (ADD_H5_TEST_META testname testfile)
- add_test (
- NAME H5REPACK_META-${testname}_N
- COMMAND $<TARGET_FILE:h5repack> ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_N.${testname}.h5
- )
- if (NOT "${last_test}" STREQUAL "")
- set_tests_properties (H5REPACK_META-${testname}_N PROPERTIES DEPENDS ${last_test})
- endif ()
- add_test (
- NAME H5REPACK_META-${testname}_M
- COMMAND $<TARGET_FILE:h5repack> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_M.${testname}.h5
- )
- set_tests_properties (H5REPACK_META-${testname}_M PROPERTIES DEPENDS H5REPACK_META-${testname}_N)
-
- add_test (NAME H5REPACK_META-${testname} COMMAND ${CMAKE_COMMAND} -E compare_files ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_N.${testname}.h5 ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_M.${testname}.h5)
- set_tests_properties (H5REPACK_META-${testname} PROPERTIES WILL_FAIL "true")
- set_tests_properties (H5REPACK_META-${testname} PROPERTIES DEPENDS H5REPACK_META-${testname}_M)
- ENDMACRO (ADD_H5_TEST_META)
-
- MACRO (ADD_H5_UD_TEST testname resultcode resultfile)
- if (NOT HDF5_ENABLE_USING_MEMCHECKER)
- # Remove any output file left over from previous test run
- add_test (
- NAME H5REPACK_UD-${testname}-clearall-objects
- COMMAND ${CMAKE_COMMAND}
- -E remove
- testfiles/out-${testname}.${resultfile}
- )
- add_test (
- NAME H5REPACK_UD-${testname}
- COMMAND "${CMAKE_COMMAND}"
- -D "TEST_PROGRAM=$<TARGET_FILE:h5repack>"
- -D "TEST_ARGS:STRING=${ARGN};${resultfile};out-${testname}.${resultfile}"
- -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
- -D "TEST_EXPECT=${resultcode}"
- -D "TEST_FILTER:STRING=O?...ing file[^\n]+\n"
- -D "TEST_OUTPUT=${testname}.${resultfile}.out"
- -D "TEST_REFERENCE=${testname}.${resultfile}.tst"
- -D "TEST_ENV_VAR=HDF5_PLUGIN_PATH"
- -D "TEST_ENV_VALUE=${CMAKE_BINARY_DIR}/plugins"
- -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake"
- )
- set_tests_properties (H5REPACK_UD-${testname} PROPERTIES DEPENDS H5REPACK_UD-${testname}-clearall-objects)
- add_test (
- NAME H5REPACK_UD-h5dump-${testname}
- COMMAND "${CMAKE_COMMAND}"
- -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
- -D "TEST_ARGS:STRING=-pH;out-${testname}.${resultfile}"
- -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
- -D "TEST_OUTPUT=${resultfile}-${testname}.out"
- -D "TEST_EXPECT=${resultcode}"
- -D "TEST_REFERENCE=${resultfile}-${testname}.ddl"
- -D "TEST_ENV_VAR=HDF5_PLUGIN_PATH"
- -D "TEST_ENV_VALUE=${CMAKE_BINARY_DIR}/plugins"
- -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake"
- )
- set_tests_properties (H5REPACK_UD-h5dump-${testname} PROPERTIES DEPENDS "H5REPACK_UD-${testname}")
- endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
- ENDMACRO (ADD_H5_UD_TEST)
-
-##############################################################################
-##############################################################################
-### T H E T E S T S ###
-##############################################################################
-##############################################################################
-
- # --------------------------------------------------------------------
- # test file names
- # --------------------------------------------------------------------
- set (INFO_FILE testfiles/h5repack.info)
-
- set (FILE0 h5repack_fill.h5)
- set (FILE1 h5repack_objs.h5)
- set (FILE2 h5repack_attr.h5)
- set (FILE3 h5repack_hlink.h5)
- set (FILE4 h5repack_layout.h5)
- set (FILE5 h5repack_early.h5)
- set (FILE7 h5repack_szip.h5)
- set (FILE8 h5repack_deflate.h5)
- set (FILE9 h5repack_shuffle.h5)
- set (FILE10 h5repack_fletcher.h5)
- set (FILE11 h5repack_filters.h5)
- set (FILE12 h5repack_nbit.h5)
- set (FILE13 h5repack_soffset.h5)
- set (FILE14 h5repack_layouto.h5 ) # A file with an older version of the layout message (copy of test/tlayouto.h5)
- set (FILE15 h5repack_named_dtypes.h5)
- set (FILE16 tfamily%05d.h5) # located in common testfiles folder
- set (FILE18 h5repack_layout2.h5)
- set (FILE_REF h5repack_refs.h5)
- set (FILE_ATTR_REF h5repack_attr_refs.h5)
- set (FILEV1 1_vds.h5)
- set (FILEV2 2_vds.h5)
- set (FILEV3_1 3_1_vds.h5)
- set (FILEV3_2 3_2_vds.h5)
- set (FILEV4 4_vds.h5)
- set (FILEV5 5_vds.h5)
-
- # Remove any output file left over from previous test run
- add_test (
- NAME H5REPACK-clearall-objects
- COMMAND ${CMAKE_COMMAND}
- -E remove
- ./testfiles/h5dump-help.out
- ./testfiles/h5repack_filters.h5-gzip_verbose_filters.out
- ./testfiles/h5repack_filters.h5-gzip_verbose_filters.out.err
- ./testfiles/h5repack_layout.h5-chunk_18x13-v.out
- ./testfiles/h5repack_layout.h5-chunk_18x13-v.out.err
- ./testfiles/h5repack_layout.h5-chunk_20x10-v.out
- ./testfiles/h5repack_layout.h5-chunk_20x10-v.out.err
- ./testfiles/h5repack_layout.h5-chunk_compa-v.out
- ./testfiles/h5repack_layout.h5-chunk_compa-v.out.err
- ./testfiles/h5repack_layout.h5-chunk_conti-v.out
- ./testfiles/h5repack_layout.h5-chunk_conti-v.out.err
- ./testfiles/h5repack_layout.h5-compa-v.out
- ./testfiles/h5repack_layout.h5-compa-v.out.err
- ./testfiles/h5repack_layout.h5-conti-v.out
- ./testfiles/h5repack_layout.h5-conti-v.out.err
- ./testfiles/h5repack_layout.h5-deflate_limit.out
- ./testfiles/h5repack_layout.h5-deflate_limit.out.err
- ./testfiles/h5repack_layout.h5-dset2_chunk_20x10-v.out
- ./testfiles/h5repack_layout.h5-dset2_chunk_20x10-v.out.err
- ./testfiles/h5repack_layout.h5-dset2_chunk_20x10-errstk.out
- ./testfiles/h5repack_layout.h5-dset2_chunk_20x10-errstk.out.err
- ./testfiles/h5repack_layout.h5-dset2_compa-v.out
- ./testfiles/h5repack_layout.h5-dset2_compa-v.out.err
- ./testfiles/h5repack_layout.h5-dset2_conti-v.out
- ./testfiles/h5repack_layout.h5-dset2_conti-v.out.err
- ./testfiles/h5repack_layout.h5-dset_compa_chunk-v.out
- ./testfiles/h5repack_layout.h5-dset_compa_chunk-v.out.err
- ./testfiles/h5repack_layout.h5-dset_compa_compa-v.out
- ./testfiles/h5repack_layout.h5-dset_compa_compa-v.out.err
- ./testfiles/h5repack_layout.h5-dset_compa_conti-v.out
- ./testfiles/h5repack_layout.h5-dset_compa_conti-v.out.err
- ./testfiles/h5repack_layout.h5-dset_conti_chunk-v.out
- ./testfiles/h5repack_layout.h5-dset_conti_chunk-v.out.err
- ./testfiles/h5repack_layout.h5-dset_conti_compa-v.out
- ./testfiles/h5repack_layout.h5-dset_conti_compa-v.out.err
- ./testfiles/h5repack_layout.h5-dset_conti_conti-v.out
- ./testfiles/h5repack_layout.h5-dset_conti_conti-v.out.err
- ./testfiles/h5repack_layout.h5-layout_long_switches-v.out
- ./testfiles/h5repack_layout.h5-layout_long_switches-v.out.err
- ./testfiles/h5repack_layout.h5-layout_short_switches-v.out
- ./testfiles/h5repack_layout.h5-layout_short_switches-v.out.err
- ./testfiles/h5repack_layout.h5-plugin_test.out
- ./testfiles/h5repack_layout.h5-plugin_test.out.err
- ./testfiles/h5repack_layout2.h5-contig_small_compa-v.out
- ./testfiles/h5repack_layout2.h5-contig_small_compa-v.out.err
- ./testfiles/h5repack_layout2.h5-contig_small_fixed_compa-v.out
- ./testfiles/h5repack_layout2.h5-contig_small_fixed_compa-v.out.err
- ./testfiles/h5repack_layout3.h5-ckdim_biger-v.out
- ./testfiles/h5repack_layout3.h5-ckdim_biger-v.out.err
- ./testfiles/h5repack_layout3.h5-ckdim_smaller-v.out
- ./testfiles/h5repack_layout3.h5-ckdim_smaller-v.out.err
- ./testfiles/h5repack_layout3.h5-chunk2chunk-v.out
- ./testfiles/h5repack_layout3.h5-chunk2chunk-v.out.err
- ./testfiles/h5repack_layout3.h5-chunk2compa-v.out
- ./testfiles/h5repack_layout3.h5-chunk2compa-v.out.err
- ./testfiles/h5repack_layout3.h5-chunk2conti-v.out
- ./testfiles/h5repack_layout3.h5-chunk2conti-v.out.err
- ./testfiles/h5repack_layout3.h5-error1-v.out
- ./testfiles/h5repack_layout3.h5-error1-v.out.err
- ./testfiles/h5repack_layout3.h5-error2-v.out
- ./testfiles/h5repack_layout3.h5-error2-v.out.err
- ./testfiles/h5repack_layout3.h5-error3-v.out
- ./testfiles/h5repack_layout3.h5-error3-v.out.err
- ./testfiles/out-family.tfamily%05d.h5
- ./testfiles/out-HDFFV-7840.h5diff_attr1.h5
- ./testfiles/out-attr.h5repack_attr.h5
- ./testfiles/out-native_attr.h5repack_attr.h5
- ./testfiles/out-HDFFV-5932.h5repack_attr_refs.h5
- ./testfiles/out-deflate_copy.h5repack_deflate.h5
- ./testfiles/out-deflate_remove.h5repack_deflate.h5
- ./testfiles/out-early.h5repack_early.h5
- ./testfiles/out-fill.h5repack_fill.h5
- ./testfiles/out-native_fill.h5repack_fill.h5
- ./testfiles/out-gzip_verbose_filters.h5repack_filters.h5
- ./testfiles/out-fletcher_copy.h5repack_fletcher.h5
- ./testfiles/out-fletcher_remove.h5repack_fletcher.h5
- ./testfiles/out-hlink.h5repack_hlink.h5
- ./testfiles/out-chunk_18x13.h5repack_layout.h5
- ./testfiles/out-chunk_20x10.h5repack_layout.h5
- ./testfiles/out-chunk_compa.h5repack_layout.h5
- ./testfiles/out-chunk_conti.h5repack_layout.h5
- ./testfiles/out-compa.h5repack_layout.h5
- ./testfiles/out-conti.h5repack_layout.h5
- ./testfiles/out-deflate_file.h5repack_layout.h5
- ./testfiles/out-deflate_limit.h5repack_layout.h5
- ./testfiles/out-dset2_chunk_20x10.h5repack_layout.h5
- ./testfiles/out-dset2_compa.h5repack_layout.h5
- ./testfiles/out-dset2_conti.h5repack_layout.h5
- ./testfiles/out-dset_compa_chunk.h5repack_layout.h5
- ./testfiles/out-dset_compa_compa.h5repack_layout.h5
- ./testfiles/out-dset_compa_conti.h5repack_layout.h5
- ./testfiles/out-dset_conti_chunk.h5repack_layout.h5
- ./testfiles/out-dset_conti_compa.h5repack_layout.h5
- ./testfiles/out-dset_conti_conti.h5repack_layout.h5
- ./testfiles/out-fletcher_all.h5repack_layout.h5
- ./testfiles/out-fletcher_individual.h5repack_layout.h5
- ./testfiles/out-global_filters.h5repack_layout.h5
- ./testfiles/out-gzip_all.h5repack_layout.h5
- ./testfiles/out-gzip_individual.h5repack_layout.h5
- ./testfiles/out-layout.h5repack_layout.h5
- ./testfiles/out-layout_long_switches.h5repack_layout.h5
- ./testfiles/out-layout_short_switches.h5repack_layout.h5
- ./testfiles/out-old_style_layout_short_switches.h5repack_layout.h5
- ./testfiles/out-plugin_test.h5repack_layout.h5
- ./testfiles/out-shuffle_all.h5repack_layout.h5
- ./testfiles/out-shuffle_individual.h5repack_layout.h5
- ./testfiles/out-upgrade_layout.h5repack_layouto.h5
- ./testfiles/out-contig_small_compa.h5repack_layout2.h5
- ./testfiles/out-contig_small_fixed_compa.h5repack_layout2.h5
- ./testfiles/out-ckdim_biger.h5repack_layout3.h5
- ./testfiles/out-ckdim_smaller.h5repack_layout3.h5
- ./testfiles/out-chunk2chunk.h5repack_layout3.h5
- ./testfiles/out-chunk2compa.h5repack_layout3.h5
- ./testfiles/out-chunk2conti.h5repack_layout3.h5
- ./testfiles/out-error1.h5repack_layout3.h5
- ./testfiles/out-error2.h5repack_layout3.h5
- ./testfiles/out-error3.h5repack_layout3.h5
- ./testfiles/out-error4.h5repack_layout3.h5
- ./testfiles/out-committed_dt.h5repack_named_dtypes.h5
- ./testfiles/out-nbit_add.h5repack_nbit.h5
- ./testfiles/out-nbit_copy.h5repack_nbit.h5
- ./testfiles/out-nbit_remove.h5repack_nbit.h5
- ./testfiles/out-add_alignment.h5repack_objs.h5
- ./testfiles/out-add_userblock.h5repack_objs.h5
- ./testfiles/out-objs.h5repack_objs.h5
- ./testfiles/out-gt_mallocsize.h5repack_objs.h5
- ./testfiles/out-bug1814.h5repack_refs.h5
- ./testfiles/out-shuffle_copy.h5repack_shuffle.h5
- ./testfiles/out-shuffle_remove.h5repack_shuffle.h5
- ./testfiles/out-scale_add.h5repack_soffset.h5
- ./testfiles/out-scale_copy.h5repack_soffset.h5
- ./testfiles/out-scale_remove.h5repack_soffset.h5
- ./testfiles/out-meta_short_M.meta_short.h5
- ./testfiles/out-meta_short_N.meta_short.h5
- ./testfiles/out-meta_long_M.meta_long.h5
- ./testfiles/out-meta_long_N.meta_long.h5
- ./testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.out
- ./testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.out.err
- ./testfiles/2_vds.h5-vds_chunk3x6x9-v.out
- ./testfiles/2_vds.h5-vds_chunk3x6x9-v.out.err
- ./testfiles/3_1_vds.h5-vds_chunk2x5x8-v.out
- ./testfiles/3_1_vds.h5-vds_chunk2x5x8-v.out.err
- ./testfiles/4_vds.h5-vds_compa-v.out
- ./testfiles/4_vds.h5-vds_compa-v.out.err
- ./testfiles/4_vds.h5-vds_conti-v.out
- ./testfiles/4_vds.h5-vds_conti-v.out.err
- ./testfiles/out-vds_compa.4_vds.h5
- ./testfiles/out-vds_conti.4_vds.h5
- ./testfiles/out-vds_chunk2x5x8.3_1_vds.h5
- ./testfiles/out-vds_chunk3x6x9.2_vds.h5
- ./testfiles/out-vds_dset_chunk20x10x5.1_vds.h5
- h5repack_attr.h5
- h5repack_attr_out.h5
- h5repack_attr_refs.h5
- h5repack_big.h5
- h5repack_deflate.h5
- h5repack_deflate_out.h5
- h5repack_early2.h5
- h5repack_early.h5
- h5repack_early_out.h5
- h5repack_ext.h5
- h5repack_ext_out.h5
- h5repack_fill.h5
- h5repack_fill_out.h5
- h5repack_filters.h5
- h5repack_filters_out.h5
- h5repack_fletcher.h5
- h5repack_fletcher_out.h5
- h5repack_hlink.h5
- h5repack_hlink_out.h5
- h5repack_layout.h5
- h5repack_layout_out.h5
- h5repack_layout2.h5
- h5repack_layout3.h5
- h5repack_named_dtypes.h5
- h5repack_named_dtypes_out.h5
- h5repack_nbit.h5
- h5repack_nbit_out.h5
- h5repack_objs.h5
- h5repack_objs_out.h5
- h5repack_refs.h5
- h5repack_shuffle.h5
- h5repack_shuffle_out.h5
- h5repack_soffset.h5
- h5repack_soffset_out.h5
- h5repack_szip.h5
- h5repack_szip_out.h5
- h5repack_ub.h5
- h5repack_ub_out.h5
- h5repack_ext.bin
- ublock.bin
- )
- if (NOT "${last_test}" STREQUAL "")
- set_tests_properties (H5REPACK-clearall-objects PROPERTIES DEPENDS ${last_test})
- endif (NOT "${last_test}" STREQUAL "")
-
- ADD_HELP_TEST(help 0 -h)
-
- add_test (NAME H5REPACK-testh5repack_detect_szip COMMAND $<TARGET_FILE:testh5repack_detect_szip>)
- if (HDF5_ENABLE_SZIP_SUPPORT)
- if (HDF5_ENABLE_SZIP_ENCODING)
- set (passRegex "yes")
- set_tests_properties (H5REPACK-testh5repack_detect_szip PROPERTIES PASS_REGULAR_EXPRESSION "yes")
- else (HDF5_ENABLE_SZIP_ENCODING)
- set (passRegex "no")
- set_tests_properties (H5REPACK-testh5repack_detect_szip PROPERTIES PASS_REGULAR_EXPRESSION "no")
- endif (HDF5_ENABLE_SZIP_ENCODING)
- else (HDF5_ENABLE_SZIP_SUPPORT)
- set (passRegex "no")
- set_tests_properties (H5REPACK-testh5repack_detect_szip PROPERTIES PASS_REGULAR_EXPRESSION "no")
- endif (HDF5_ENABLE_SZIP_SUPPORT)
- set_tests_properties (H5REPACK-testh5repack_detect_szip PROPERTIES DEPENDS H5REPACK-clearall-objects)
-
- add_test (NAME H5REPACK-h5repacktest COMMAND $<TARGET_FILE:h5repacktest>)
- set_tests_properties (H5REPACK-h5repacktest PROPERTIES DEPENDS H5REPACK-testh5repack_detect_szip)
- set (last_test "H5REPACK-h5repacktest")
-
-#
-# The tests
-# We use the files generated by h5repacktst
-# Each run generates "<file>.out.h5" and the tool h5diff is used to
-# compare the input and output files
-#
-# the tests are the same as the program h5repacktst, but run from the CLI
-#
-
-# See which filters are usable (and skip tests for filters we
-# don't have). Do this by searching H5pubconf.h to see which
-# filters are defined.
-
-# detect whether the encoder is present.
- set (USE_FILTER_SZIP_ENCODER "no")
- if (HDF5_ENABLE_SZIP_ENCODING)
- set (USE_FILTER_SZIP_ENCODER ${testh5repack_detect_szip})
- endif (HDF5_ENABLE_SZIP_ENCODING)
-
- if (H5_HAVE_FILTER_DEFLATE)
- set (USE_FILTER_DEFLATE "true")
- endif (H5_HAVE_FILTER_DEFLATE)
-
- if (H5_HAVE_FILTER_SZIP)
- set (USE_FILTER_SZIP "true")
- endif (H5_HAVE_FILTER_SZIP)
-
-# copy files (these files have no filters)
- ADD_H5_TEST (fill "TEST" ${FILE0})
- ADD_H5_TEST (objs "TEST" ${FILE1})
- ADD_H5_TEST (attr "TEST" ${FILE2})
- ADD_H5_TEST (hlink "TEST" ${FILE3})
- ADD_H5_TEST (layout "TEST" ${FILE4})
- ADD_H5_TEST (early "TEST" ${FILE5})
-
-# use $FILE4 to write some filters (this file has no filters)
-
-# gzip with individual object
- set (arg ${FILE4} -f dset1:GZIP=1 -l dset1:CHUNK=20x10)
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_DEFLATE)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_DEFLATE)
- ADD_H5_TEST (gzip_individual ${TESTTYPE} ${arg})
-
-# gzip for all
- set (arg ${FILE4} -f GZIP=1)
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_DEFLATE)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_DEFLATE)
- ADD_H5_TEST (gzip_all ${TESTTYPE} ${arg})
-
-# szip with individual object
- set (arg ${FILE4} -f dset2:SZIP=8,EC -l dset2:CHUNK=20x10)
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
- ADD_H5_TEST (szip_individual ${TESTTYPE} ${arg})
-
-# szip for all
- set (arg ${FILE4} -f SZIP=8,NN)
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
- ADD_H5_TEST (szip_all ${TESTTYPE} ${arg})
-
-# shuffle with individual object
- set (arg ${FILE4} -f dset2:SHUF -l dset2:CHUNK=20x10)
- ADD_H5_TEST (shuffle_individual "TEST" ${arg})
-
-# shuffle for all
- set (arg ${FILE4} -f SHUF)
- ADD_H5_TEST (shuffle_all "TEST" ${arg})
-
-# fletcher32 with individual object
- set (arg ${FILE4} -f dset2:FLET -l dset2:CHUNK=20x10)
- ADD_H5_TEST (fletcher_individual "TEST" ${arg})
-
-# fletcher32 for all
- set (arg ${FILE4} -f FLET)
- ADD_H5_TEST (fletcher_all "TEST" ${arg})
-
-# all filters
- set (arg ${FILE4} -f dset2:SHUF -f dset2:FLET -f dset2:SZIP=8,NN -f dset2:GZIP=1 -l dset2:CHUNK=20x10)
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE)
- ADD_H5_TEST (all_filters ${TESTTYPE} ${arg})
-
-# verbose gzip with individual object
- set (arg ${FILE11} -v -f /dset_deflate:GZIP=9)
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_DEFLATE)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_DEFLATE)
- ADD_H5_CMP_TEST (gzip_verbose_filters "O?...ing file[^\n]+\n" ${TESTTYPE} 0 ${arg})
-
-###########################################################
-# the following tests assume the input files have filters
-###########################################################
-
-# szip copy
- set (arg ${FILE7})
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
- ADD_H5_TEST (szip_copy ${TESTTYPE} ${arg})
-
-# szip remove
- set (arg ${FILE7} --filter=dset_szip:NONE)
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
- ADD_H5_TEST (szip_remove ${TESTTYPE} ${arg})
-
-# deflate copy
- set (arg ${FILE8})
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_DEFLATE)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_DEFLATE)
- ADD_H5_TEST (deflate_copy ${TESTTYPE} ${arg})
-
-# deflate remove
- set (arg ${FILE8} -f dset_deflate:NONE)
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_DEFLATE)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_DEFLATE)
- ADD_H5_TEST (deflate_remove ${TESTTYPE} ${arg})
-
-# shuffle copy
- set (arg ${FILE9})
- ADD_H5_TEST (shuffle_copy "TEST" ${arg})
-
-# shuffle remove
- set (arg ${FILE9} -f dset_shuffle:NONE)
- ADD_H5_TEST (shuffle_remove "TEST" ${arg})
-
-# fletcher32 copy
- set (arg ${FILE10})
- ADD_H5_TEST (fletcher_copy "TEST" ${arg})
-
-# fletcher32 remove
- set (arg ${FILE10} -f dset_fletcher32:NONE)
- ADD_H5_TEST (fletcher_remove "TEST" ${arg})
-
-# nbit copy
- set (arg ${FILE12})
- ADD_H5_TEST (nbit_copy "TEST" ${arg})
-
-# nbit remove
- set (arg ${FILE12} -f dset_nbit:NONE)
- ADD_H5_TEST (nbit_remove "TEST" ${arg})
-
-# nbit add
- set (arg ${FILE12} -f dset_int31:NBIT)
- ADD_H5_TEST (nbit_add "TEST" ${arg})
-
-# scaleoffset copy
- set (arg ${FILE13})
- ADD_H5_TEST (scale_copy "TEST" ${arg})
-
-# scaleoffset add
- set (arg ${FILE13} -f dset_none:SOFF=31,IN)
- ADD_H5_TEST (scale_add "TEST" ${arg})
-
-# scaleoffset remove
- set (arg ${FILE13} -f dset_scaleoffset:NONE)
- ADD_H5_TEST (scale_remove "TEST" ${arg})
-
-# remove all filters
- set (arg ${FILE11} -f NONE)
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_DEFLATE OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_DEFLATE OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER)
- ADD_H5_TEST (remove_all ${TESTTYPE} ${arg})
-
-#filter conversions
- set (arg ${FILE8} -f dset_deflate:SZIP=8,NN)
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE)
- ADD_H5_TEST (deflate_convert ${TESTTYPE} ${arg})
-
- set (arg ${FILE7} -f dset_szip:GZIP=1)
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_DEFLATE)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_DEFLATE)
- ADD_H5_TEST (szip_convert ${TESTTYPE} ${arg})
-
-#limit
- set (arg ${FILE4} -f GZIP=1 -m 1024)
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_DEFLATE)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_DEFLATE)
- ADD_H5_DMP_TEST (deflate_limit ${TESTTYPE} 0 ${arg})
-
-#file
- set (arg ${FILE4} -e ${INFO_FILE})
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_DEFLATE)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_DEFLATE)
- ADD_H5_TEST (deflate_file ${TESTTYPE} ${arg})
-
-#########################################################
-# layout options (these files have no filters)
-#########################################################
- ADD_H5_VERIFY_TEST (dset2_chunk_20x10 "TEST" 0 ${FILE4} dset2 CHUNKED --layout=dset2:CHUNK=20x10)
- ADD_H5_VERIFY_TEST (chunk_20x10 "TEST" 1 ${FILE4} null CHUNKED -l CHUNK=20x10)
- ADD_H5_VERIFY_TEST (dset2_conti "TEST" 0 ${FILE4} dset2 CONTIGUOUS -l dset2:CONTI)
- ADD_H5_VERIFY_TEST (conti "TEST" 1 ${FILE4} null CONTIGUOUS -l CONTI)
- ADD_H5_VERIFY_TEST (dset2_compa "TEST" 0 ${FILE4} dset2 COMPACT -l dset2:COMPA)
- ADD_H5_VERIFY_TEST (compa "TEST" 1 ${FILE4} null COMPACT -l COMPA)
- ADD_H5_MASK_TEST (dset2_chunk_20x10-errstk "TEST" 0 ${FILE4} --layout=dset2:CHUNK=20x10x5 --enable-error-stack)
-
-################################################################
-# layout conversions (file has no filters)
-###############################################################
- ADD_H5_VERIFY_TEST (dset_compa_conti "TEST" 0 ${FILE4} dset_compact CONTIGUOUS -l dset_compact:CONTI)
- ADD_H5_VERIFY_TEST (dset_compa_chunk "TEST" 0 ${FILE4} dset_compact CHUNKED -l dset_compact:CHUNK=2x5)
- ADD_H5_VERIFY_TEST (dset_compa_compa "TEST" 0 ${FILE4} dset_compact COMPACT -l dset_compact:COMPA)
- ADD_H5_VERIFY_TEST (dset_conti_compa "TEST" 0 ${FILE4} dset_contiguous COMPACT -l dset_contiguous:COMPA)
- ADD_H5_VERIFY_TEST (dset_conti_chunk "TEST" 0 ${FILE4} dset_contiguous CHUNKED -l dset_contiguous:CHUNK=3x6)
- ADD_H5_VERIFY_TEST (dset_conti_conti "TEST" 0 ${FILE4} dset_contiguous CONTIGUOUS -l dset_contiguous:CONTI)
- ADD_H5_VERIFY_TEST (chunk_compa "TEST" 0 ${FILE4} dset_chunk COMPACT -l dset_chunk:COMPA)
- ADD_H5_VERIFY_TEST (chunk_conti "TEST" 0 ${FILE4} dset_chunk CONTIGUOUS -l dset_chunk:CONTI)
- ADD_H5_VERIFY_TEST (chunk_18x13 "TEST" 0 ${FILE4} dset_chunk CHUNKED -l dset_chunk:CHUNK=18x13)
-
-# test convert small size dataset ( < 1k) to compact layout without -m
- ADD_H5_VERIFY_TEST (contig_small_compa "TEST" 0 ${FILE18} contig_small COMPACT -l contig_small:COMPA)
- ADD_H5_VERIFY_TEST (contig_small_fixed_compa "TEST" 0 ${FILE18} chunked_small_fixed COMPACT -l chunked_small_fixed:COMPA)
-
-#---------------------------------------------------------------------------
-# Test file contains chunked datasets (need multiple dsets) with
-# unlimited max dims. (HDFFV-7933)
-# Use first dset to test.
-#---------------------------------------------------------------------------
-# chunk to chunk - specify chunk dim bigger than any current dim
- ADD_H5_VERIFY_TEST (chunk2chunk "TEST" 0 h5repack_layout3.h5 chunk_unlimit1 CHUNK -l chunk_unlimit1:CHUNK=100x300)
-
-# chunk to contiguous
- ADD_H5_VERIFY_TEST (chunk2conti "TEST" 0 h5repack_layout3.h5 chunk_unlimit1 CONTI -l chunk_unlimit1:CONTI)
-
-# chunk to compact - convert big dataset (should be > 64k) for this purpose,
-# should remain as original layout (chunk)
- ADD_H5_VERIFY_TEST (chunk2compa "TEST" 0 h5repack_layout3.h5 chunk_unlimit1 CHUNK -l chunk_unlimit1:COMPA)
-
-#--------------------------------------------------------------------------
-# Test -f for some specific cases. Chunked dataset with unlimited max dims.
-# (HDFFV-8012)
-#--------------------------------------------------------------------------
-# - should not fail
-# - should not change max dims from unlimit
-
-# chunk dim is bigger than dataset dim. ( dset size < 64k )
- ADD_H5_VERIFY_TEST (error1 "TEST" 0 h5repack_layout3.h5 chunk_unlimit1 H5S_UNLIMITED -f chunk_unlimit1:NONE)
-
-# chunk dim is bigger than dataset dim. ( dset size > 64k )
- ADD_H5_VERIFY_TEST (error2 "TEST" 0 h5repack_layout3.h5 chunk_unlimit2 H5S_UNLIMITED -f chunk_unlimit2:NONE)
-
-# chunk dims are smaller than dataset dims. ( dset size < 64k )
- ADD_H5_VERIFY_TEST (error3 "TEST" 0 h5repack_layout3.h5 chunk_unlimit3 H5S_UNLIMITED -f chunk_unlimit3:NONE)
-
-# file input - should not fail
- ADD_H5_TEST (error4 "TEST" h5repack_layout3.h5 -f NONE)
-
-#--------------------------------------------------------------------------
-# Test base: Convert CHUNK to CONTI for a chunked dataset with small dataset
-# (dset size < 64K) and with unlimited max dims on a condition as follow.
-# (HDFFV-8214)
-#--------------------------------------------------------------------------
-# chunk dim is bigger than dataset dim. should succeed.
- ADD_H5_VERIFY_TEST (ckdim_biger "TEST" 0 h5repack_layout3.h5 chunk_unlimit2 CONTI -l chunk_unlimit2:CONTI)
-# chunk dim is smaller than dataset dim. should succeed.
- ADD_H5_VERIFY_TEST (ckdim_smaller "TEST" 0 h5repack_layout3.h5 chunk_unlimit3 CONTI -l chunk_unlimit3:CONTI)
-
-
-
-# Native option
-# Do not use FILE1, as the named dtype will be converted to native, and h5diff will
-# report a difference.
- ADD_H5_TEST (native_fill "TEST" ${FILE0} -n)
- ADD_H5_TEST (native_attr "TEST" ${FILE2} -n)
-
-# latest file format with long switches. use FILE4=h5repack_layout.h5 (no filters)
- set (arg --layout CHUNK=20x10 --filter GZIP=1 --minimum=10 --native --latest --compact=8 --indexed=6 --ssize=8[:dtype])
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_DEFLATE)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_DEFLATE)
- ADD_H5_VERIFY_TEST (layout_long_switches ${TESTTYPE} 1 ${FILE4} null CHUNKED ${arg})
-
-# latest file format with short switches. use FILE4=h5repack_layout.h5 (no filters)
- set (arg -l CHUNK=20x10 -f GZIP=1 -m 10 -n -L -c 8 -d 6 -s 8[:dtype])
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_DEFLATE)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_DEFLATE)
- ADD_H5_VERIFY_TEST (layout_short_switches ${TESTTYPE} 1 ${FILE4} null CHUNKED ${arg})
-
-# several global filters
- set (arg ${FILE4} --filter GZIP=1 --filter SHUF)
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_DEFLATE)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_DEFLATE)
- ADD_H5_TEST (global_filters ${TESTTYPE} ${arg})
-
-# syntax of -i infile -o outfile
-# latest file format with short switches. use FILE4=h5repack_layout.h5 (no filters)
- set (arg ${FILE4} -l CHUNK=20x10 -f GZIP=1 -m 10 -n -L -c 8 -d 6 -s 8[:dtype])
- set (TESTTYPE "LEGACY")
- if (NOT USE_FILTER_DEFLATE)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_DEFLATE)
- ADD_H5_TEST_OLD (old_style_layout_short_switches ${TESTTYPE} ${arg})
-
-# add a userblock to file
- set (arg ${FILE1} -u ${PROJECT_BINARY_DIR}/testfiles/ublock.bin -b 2048)
- ADD_H5_TEST (add_userblock "TEST" ${arg})
-
-# add alignment
- set (arg ${FILE1} -t 1 -a 1)
- ADD_H5_TEST (add_alignment "TEST" ${arg})
-
-# Check repacking file with old version of layout message (should get upgraded
-# to new version and be readable, etc.)
- ADD_H5_TEST (upgrade_layout "TEST" ${FILE14})
-
-# test for datum size > H5TOOLS_MALLOCSIZE
- ADD_H5_TEST (gt_mallocsize "TEST" ${FILE1} -f GZIP=1)
-
-# Check repacking file with committed datatypes in odd configurations
- ADD_H5_TEST (committed_dt "TEST" ${FILE15})
-
-# tests family driver (file is located in common testfiles folder, uses TOOLTEST1
- ADD_H5_TEST (family "TEST" ${FILE16})
-
-# test various references (bug 1814 and 1726)
- ADD_H5_TEST (bug1814 "TEST" ${FILE_REF})
-
-# test attribute with various references (bug1797 / HDFFV-5932)
-# the references in attribute of compund or vlen datatype
- ADD_H5_TEST (HDFFV-5932 "TEST" ${FILE_ATTR_REF})
-
-# Add test for memory leak in attirbute. This test is verified by CTEST.
-# 1. leak from vlen string
-# 2. leak from compound type without reference member
-# (HDFFV-7840, )
-# Note: this test is experimental for sharing test file among tools
- ADD_H5_TEST (HDFFV-7840 "TEST" h5diff_attr1.h5)
-
-# tests for metadata block size option ('-M')
- ADD_H5_TEST_META (meta_short h5repack_layout.h5 -M 8192)
- ADD_H5_TEST_META (meta_long h5repack_layout.h5 --metadata_block_size=8192)
-
-# VDS tests
-
-################################################################
-# layout conversions
-###############################################################
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_DEFLATE)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_DEFLATE)
- ADD_H5_VERIFY_VDS (vds_dset_chunk20x10x5 ${TESTTYPE} 0 ${FILEV1} vds_dset CHUNKED -l vds_dset:CHUNK=20x10x5)
-
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_DEFLATE)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_DEFLATE)
- ADD_H5_VERIFY_VDS (vds_chunk2x5x8 ${TESTTYPE} 0 ${FILEV3_1} vds_dset CHUNKED -l vds_dset:CHUNK=2x5x8)
-
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_DEFLATE)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_DEFLATE)
- ADD_H5_VERIFY_VDS (vds_chunk3x6x9 ${TESTTYPE} 0 ${FILEV2} vds_dset CHUNKED -l vds_dset:CHUNK=3x6x9)
-
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_DEFLATE)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_DEFLATE)
- ADD_H5_VERIFY_VDS (vds_compa ${TESTTYPE} 0 ${FILEV4} vds_dset COMPACT -l vds_dset:COMPA)
-
- set (TESTTYPE "TEST")
- if (NOT USE_FILTER_DEFLATE)
- set (TESTTYPE "SKIP")
- endif (NOT USE_FILTER_DEFLATE)
- ADD_H5_VERIFY_VDS (vds_conti ${TESTTYPE} 0 ${FILEV4} vds_dset CONTIGUOUS -l vds_dset:CONTI)
-
-##############################################################################
-### P L U G I N T E S T S
-##############################################################################
- ADD_H5_UD_TEST (plugin_version_test 0 h5repack_layout.h5 -v -f UD=260,4,9,1,9,235)
- ADD_H5_UD_TEST (plugin_test 0 h5repack_layout.h5 -v -f UD=257,1,9)
- ADD_H5_UD_TEST (plugin_none 0 h5repack_layout.UD.h5 -v -f NONE)
- # check for no parameters
- set (TESTRETVAL 255)
- if (WIN32)
- set (TESTRETVAL -1)
- endif()
- ADD_H5_CMP_TEST (plugin_zero "" "TEST" ${TESTRETVAL} h5repack_layout.h5 -v -f UD=250,0)
-
- if (HDF5_TEST_VFD)
- # Run test with different Virtual File Driver
- foreach (vfd ${VFD_LIST})
- ADD_VFD_TEST (${vfd} 0)
- endforeach (vfd ${VFD_LIST})
- endif (HDF5_TEST_VFD)
diff --git a/tools/h5repack/Makefile.am b/tools/h5repack/Makefile.am
deleted file mode 100644
index 5f32d73..0000000
--- a/tools/h5repack/Makefile.am
+++ /dev/null
@@ -1,79 +0,0 @@
-#
-# Copyright by The HDF Group.
-# Copyright by the Board of Trustees of the University of Illinois.
-# All rights reserved.
-#
-# This file is part of HDF5. The full HDF5 copyright notice, including
-# terms governing use, modification, and redistribution, is contained in
-# the files COPYING and Copyright.html. COPYING can be found at the root
-# of the source code distribution tree; Copyright.html can be found at the
-# root level of an installed copy of the electronic HDF5 document set and
-# is linked from the top-level documents page. It can also be found at
-# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have
-# access to either file, you may request a copy from help@hdfgroup.org.
-##
-## Makefile.am
-## Run automake to generate a Makefile.in from this file.
-#
-# HDF5 Library Makefile(.in)
-#
-
-include $(top_srcdir)/config/commence.am
-
-# Include src, test, and tools/lib directories
-AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/test -I$(top_srcdir)/tools/lib
-
-# Test programs and scripts
-TEST_SCRIPT=h5repack.sh
-TEST_PROG=h5repacktst
-noinst_PROGRAMS=testh5repack_detect_szip
-
-SCRIPT_DEPEND=h5repack$(EXEEXT)
-if HAVE_SHARED_CONDITIONAL
-if USE_PLUGINS_CONDITIONAL
- TEST_SCRIPT += h5repack_plugin.sh
-endif
-endif
-
-check_SCRIPTS=$(TEST_SCRIPT)
-check_PROGRAMS=$(TEST_PROG)
-
-# Our main target, h5repack tool
-bin_PROGRAMS=h5repack
-
-# Add h5repack specific linker flags here
-h5repack_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS)
-
-# Depend on the hdf5 library, the tools library, the test library
-LDADD=$(LIBH5TOOLS) $(LIBH5TEST) $(LIBHDF5)
-
-# Source files
-COMMON_SOURCES=h5repack.c h5repack_copy.c h5repack_filters.c \
- h5repack_opttable.c h5repack_parse.c h5repack_refs.c \
- h5repack_verify.c
-
-h5repack_SOURCES=$(COMMON_SOURCES) h5repack_main.c
-
-h5repacktst_SOURCES=$(COMMON_SOURCES) h5repacktst.c
-
-testh5repack_detect_szip_SOURCES=testh5repack_detect_szip.c
-
-# The h5repack.sh script needs h5repacktst to run first.
-h5repack.sh.chkexe_: h5repacktst.chkexe_
-
-if HAVE_SHARED_CONDITIONAL
- # Build it as shared library if configure is enabled for shared library.
- lib_LTLIBRARIES=libdynlibadd.la libdynlibvers.la
- libdynlibadd_la_SOURCES=dynlib_rpk.c
- libdynlibvers_la_SOURCES=dynlib_vrpk.c
-
-install-exec-hook:
- $(RM) $(DESTDIR)$(libdir)/*dynlib*
-endif
-
-# Temporary files. *.h5 are generated by h5repack. They should
-# copied to the testfiles/ directory if update is required.
-CHECK_CLEANFILES+=*.h5 *.bin testfiles/h5diff_attr1.h5 testfiles/tfamily*.h5
-DISTCLEANFILES=h5repack.sh h5repack_plugin.sh
-
-include $(top_srcdir)/config/conclude.am
diff --git a/tools/h5repack/dynlib_rpk.c b/tools/h5repack/dynlib_rpk.c
deleted file mode 100644
index 3469e58..0000000
--- a/tools/h5repack/dynlib_rpk.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by The HDF Group. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic document set and is *
- * linked from the top-level documents page. It can also be found at *
- * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have access *
- * to either file, you may request a copy from help@hdfgroup.org. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-/*
- * Programmer: Raymond Lu
- * 13 February 2013
- *
- * Purpose: Tests the plugin module (H5PL)
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "H5PLextern.h"
-
-#define H5Z_FILTER_DYNLIB1 257
-
-static size_t H5Z_filter_dynlib1(unsigned int flags, size_t cd_nelmts,
- const unsigned int *cd_values, size_t nbytes, size_t *buf_size, void **buf);
-
-/* This message derives from H5Z */
-const H5Z_class2_t H5Z_DYNLIB1[1] = {{
- H5Z_CLASS_T_VERS, /* H5Z_class_t version */
- H5Z_FILTER_DYNLIB1, /* Filter id number */
- 1, 1, /* Encoding and decoding enabled */
- "dynlib1", /* Filter name for debugging */
- NULL, /* The "can apply" callback */
- NULL, /* The "set local" callback */
- (H5Z_func_t)H5Z_filter_dynlib1, /* The actual filter function */
-}};
-
-H5PL_type_t H5PLget_plugin_type(void) {return H5PL_TYPE_FILTER;}
-const void *H5PLget_plugin_info(void) {return H5Z_DYNLIB1;}
-
-/*-------------------------------------------------------------------------
- * Function: H5Z_filter_dynlib1
- *
- * Purpose: A dynlib1 filter method that adds on and subtract from
- * the original value with another value. It will be built
- * as a shared library. plugin.c test will load and use
- * this filter library.
- *
- * Return: Success: Data chunk size
- *
- * Failure: 0
- *
- * Programmer: Raymond Lu
- * 29 March 2013
- *
- *-------------------------------------------------------------------------
- */
-static size_t
-H5Z_filter_dynlib1(unsigned int flags, size_t cd_nelmts,
- const unsigned int *cd_values, size_t nbytes,
- size_t *buf_size, void **buf)
-{
- int *int_ptr = (int *)*buf; /* Pointer to the data values */
- size_t buf_left = *buf_size; /* Amount of data buffer left to process */
- int add_on = 0;
-
- /* Check for the correct number of parameters */
- if(cd_nelmts == 0)
- return 0;
-
- /* Check that permanent parameters are set correctly */
- if(cd_values[0] > 9)
- return 0;
-
- add_on = (int)cd_values[0];
-
- if(flags & H5Z_FLAG_REVERSE) { /*read*/
- /* Substract the "add on" value to all the data values */
- while(buf_left > 0) {
- *int_ptr++ -= add_on;
- buf_left -= sizeof(int);
- } /* end while */
- } /* end if */
- else { /*write*/
- /* Add the "add on" value to all the data values */
- while(buf_left > 0) {
- *int_ptr++ += add_on;
- buf_left -= sizeof(int);
- } /* end while */
- } /* end else */
-
- return nbytes;
-} /* end H5Z_filter_dynlib1() */
-
diff --git a/tools/h5repack/h5repack.c b/tools/h5repack/h5repack.c
deleted file mode 100644
index ef2085c..0000000
--- a/tools/h5repack/h5repack.c
+++ /dev/null
@@ -1,942 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by The HDF Group. *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from help@hdfgroup.org. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "H5private.h"
-#include "h5repack.h"
-#include "h5tools.h"
-#include "h5tools_utils.h"
-
-/*-------------------------------------------------------------------------
- * File: h5repack.c
- * Purpose: Public API functions
- *-------------------------------------------------------------------------
- */
-
-static int check_options(pack_opt_t *options);
-static int check_objects(const char* fname, pack_opt_t *options);
-static const char* get_sfilter(H5Z_filter_t filtn);
-static int have_request(pack_opt_t *options);
-
-/*-------------------------------------------------------------------------
- * Function: h5repack
- *
- * Purpose: locate all high-level HDF5 objects in the file
- * and compress/chunk them using options
- *
- * Algorithm: 2 traversals are made to the file; the 1st builds a list of
- * the objects, the 2nd makes a copy of them, using the options;
- * the reason for the 1st traversal is to check for invalid
- * object name requests
- *
- * Return: 0, ok, -1, fail
- *
- * Programmer: pvn@ncsa.uiuc.edu
- *
- * Date: September, 22, 2003
- *
- *-------------------------------------------------------------------------
- */
-int h5repack(const char* infile, const char* outfile, pack_opt_t *options) {
- /* check input */
- if (check_options(options) < 0)
- return -1;
-
- /* check for objects in input that are in the file */
- if (check_objects(infile, options) < 0)
- return -1;
-
- /* copy the objects */
- if (copy_objects(infile, outfile, options) < 0)
- return -1;
-
- return 0;
-}
-
-/*-------------------------------------------------------------------------
- * Function: h5repack_init
- *
- * Purpose: initialize options
- *
- * Return: 0, ok, -1, fail
- *
- *-------------------------------------------------------------------------
- */
-int h5repack_init(pack_opt_t *options, int verbose, hbool_t latest,
- H5F_file_space_type_t strategy, hsize_t threshold) {
- int k, n;
-
- HDmemset(options, 0, sizeof(pack_opt_t));
- options->min_comp = 0;
- options->verbose = verbose;
- options->latest = latest;
- options->layout_g = H5D_LAYOUT_ERROR;
-
- for (n = 0; n < H5_REPACK_MAX_NFILTERS; n++) {
- options->filter_g[n].filtn = -1;
- options->filter_g[n].cd_nelmts = 0;
- for (k = 0; k < CD_VALUES; k++)
- options->filter_g[n].cd_values[k] = 0;
- }
-
- options->fs_strategy = strategy;
- options->fs_threshold = threshold;
-
- return (options_table_init(&(options->op_tbl)));
-}
-
-/*-------------------------------------------------------------------------
- * Function: h5repack_end
- *
- * Purpose: free options table
- *
- *-------------------------------------------------------------------------
- */
-
-int h5repack_end(pack_opt_t *options) {
- return options_table_free(options->op_tbl);
-}
-
-/*-------------------------------------------------------------------------
- * Function: h5repack_addfilter
- *
- * Purpose: add a compression -f option to table
- * Example: -f dset:GZIP=6
- *
- * Return: 0, ok, -1, fail
- *
- *-------------------------------------------------------------------------
- */
-int
-h5repack_addfilter(const char* str, pack_opt_t *options)
-{
- obj_list_t *obj_list = NULL; /* one object list for the -f and -l option entry */
- filter_info_t filter; /* filter info for the current -f option entry */
- unsigned n_objs; /* number of objects in the current -f or -l option entry */
- int is_glb; /* is the filter global */
-
- /* parse the -f option */
- if (NULL == (obj_list = parse_filter(str, &n_objs, &filter, options, &is_glb)))
- return -1;
-
- /* if it applies to all objects */
- if (is_glb) {
- int n;
-
- n = options->n_filter_g++; /* increase # of global filters */
- if (options->n_filter_g > H5_REPACK_MAX_NFILTERS) {
- error_msg("maximum number of filters exceeded for <%s>\n", str);
- HDfree(obj_list);
- return -1;
- }
-
- options->filter_g[n] = filter;
- }
- else
- options_add_filter(obj_list, n_objs, filter, options->op_tbl);
-
- HDfree(obj_list);
- return 0;
-}
-
-/*-------------------------------------------------------------------------
- * Function: h5repack_addlayout
- *
- * Purpose: add a layout option
- *
- * Return: 0, ok, -1, fail
- *
- *-------------------------------------------------------------------------
- */
-int
-h5repack_addlayout(const char* str, pack_opt_t *options)
-{
- obj_list_t *obj_list = NULL; /*one object list for the -t and -c option entry */
- unsigned n_objs; /*number of objects in the current -t or -c option entry */
- pack_info_t pack; /*info about layout to extract from parse */
- int j;
- int ret_value = -1;
-
- init_packobject(&pack);
-
- if (options->all_layout == 1) {
- error_msg( "invalid layout input: 'all' option is present with other objects <%s>\n", str);
- return ret_value;
- }
-
- /* parse the layout option */
- obj_list = parse_layout(str, &n_objs, &pack, options);
- if (obj_list) {
- /* set layout option */
- options->layout_g = pack.layout;
-
- /* no individual dataset specified */
- if (options->all_layout == 1) {
- if (pack.layout == H5D_CHUNKED) {
- /* -2 means the NONE option, remove chunking
- and set the global layout to contiguous */
- if (pack.chunk.rank == -2)
- options->layout_g = H5D_CONTIGUOUS;
- /* otherwise set the global chunking type */
- else {
- options->chunk_g.rank = pack.chunk.rank;
- for (j = 0; j < pack.chunk.rank; j++)
- options->chunk_g.chunk_lengths[j] = pack.chunk.chunk_lengths[j];
- }
- }
- }
-
- /* individual dataset specified */
- if (options->all_layout == 0)
- ret_value = options_add_layout(obj_list, n_objs, &pack, options->op_tbl);
-
- HDfree(obj_list);
- ret_value = 0;
- }
-
- return ret_value;
-}
-
-/* Note: The below copy_named_datatype(), named_datatype_free(), copy_attr()
- * were located in h5repack_copy.c as static prior to bugfix1726.
- * Made shared functions as copy_attr() was needed in h5repack_refs.c.
- * However copy_attr() may be obsoleted when H5Acopy is available and put back
- * others to static in h5repack_copy.c.
- */
-/*-------------------------------------------------------------------------
- * Function: copy_named_datatype
- *
- * Purpose: Copies the specified datatype anonymously, and returns an open
- * id for that datatype in the output file. The first time this
- * is called it scans every named datatype in travt into a
- * private stack, afterwards it simply scans that stack. The id
- * returned must be closed after it is no longer needed.
- * named_datatype_free must be called before the program exits
- * to free the stack.
- *
- * Programmer: Neil Fortner
- *
- * Date: April 14, 2009
- *
- *-------------------------------------------------------------------------
- */
-hid_t copy_named_datatype(hid_t type_in, hid_t fidout,
- named_dt_t **named_dt_head_p, trav_table_t *travt, pack_opt_t *options) {
- named_dt_t *dt = *named_dt_head_p; /* Stack pointer */
- named_dt_t *dt_ret = NULL; /* Datatype to return */
- H5O_info_t oinfo; /* Object info of input dtype */
- hid_t ret_value = -1; /* The identifier of the named dtype in the out file */
-
- if (H5Oget_info(type_in, &oinfo) < 0)
- goto done;
-
- if (*named_dt_head_p) {
- /* Stack already exists, search for the datatype */
- while (dt && dt->addr_in != oinfo.addr)
- dt = dt->next;
-
- dt_ret = dt;
- }
- else {
- /* Create the stack */
- size_t i;
-
- for (i = 0; i < travt->nobjs; i++) {
- if (travt->objs[i].type == H5TRAV_TYPE_NAMED_DATATYPE) {
- /* Push onto the stack */
- if (NULL == (dt = (named_dt_t *) HDmalloc(sizeof(named_dt_t)))) {
- goto done;
- }
- dt->next = *named_dt_head_p;
- *named_dt_head_p = dt;
-
- /* Update the address and id */
- dt->addr_in = travt->objs[i].objno;
- dt->id_out = -1;
-
- /* Check if this type is the one requested */
- if (oinfo.addr == dt->addr_in) {
- HDassert(!dt_ret);
- dt_ret = dt;
- } /* end if */
- } /* end if */
- } /* end for */
- } /* end else */
-
- /* Handle the case that the requested datatype was not found. This is
- * possible if the datatype was committed anonymously in the input file. */
- if (!dt_ret) {
- /* Push the new datatype onto the stack */
- if (NULL == (dt_ret = (named_dt_t *) HDmalloc(sizeof(named_dt_t)))) {
- goto done;
- }
- dt_ret->next = *named_dt_head_p;
- *named_dt_head_p = dt_ret;
-
- /* Update the address and id */
- dt_ret->addr_in = oinfo.addr;
- dt_ret->id_out = -1;
- } /* end if */
-
- /* If the requested datatype does not yet exist in the output file, copy it
- * anonymously */
- if (dt_ret->id_out < 0) {
- if (options->use_native == 1)
- dt_ret->id_out = h5tools_get_native_type(type_in);
- else
- dt_ret->id_out = H5Tcopy(type_in);
- if (dt_ret->id_out < 0)
- goto done;
- if (H5Tcommit_anon(fidout, dt_ret->id_out, H5P_DEFAULT, H5P_DEFAULT) < 0)
- goto done;
- } /* end if */
-
- /* Set return value */
- ret_value = dt_ret->id_out;
-
- /* Increment the ref count on id_out, because the calling function will try
- * to close it */
- if(H5Iinc_ref(ret_value) < 0) {
- ret_value = -1;
- }
-
-done:
- return (ret_value);
-} /* end copy_named_datatype */
-
-/*-------------------------------------------------------------------------
- * Function: named_datatype_free
- *
- * Purpose: Frees the stack of named datatypes.
- *
- * Programmer: Neil Fortner
- *
- * Date: April 14, 2009
- *
- *-------------------------------------------------------------------------
- */
-int named_datatype_free(named_dt_t **named_dt_head_p, int ignore_err) {
- named_dt_t *dt = *named_dt_head_p;
- int ret_value = -1;
-
- while (dt) {
- /* Pop the datatype off the stack and free it */
- if (H5Tclose(dt->id_out) < 0 && !ignore_err)
- goto done;
- dt = dt->next;
- HDfree(*named_dt_head_p);
- *named_dt_head_p = dt;
- } /* end while */
-
- ret_value = 0;
-
-done:
- return (ret_value);
-} /* end named_datatype_free */
-
-/*-------------------------------------------------------------------------
- * Function: copy_attr
- *
- * Purpose: copy attributes located in LOC_IN, which is obtained either from
- * loc_id = H5Gopen2( fid, name);
- * loc_id = H5Dopen2( fid, name);
- * loc_id = H5Topen2( fid, name);
- *
- * Return: 0, ok, -1 no
- *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
- *
- * Date: October, 28, 2003
- *
- *-------------------------------------------------------------------------
- */
-int
-copy_attr(hid_t loc_in, hid_t loc_out, named_dt_t **named_dt_head_p,
- trav_table_t *travt, pack_opt_t *options)
-{
- int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */
- hid_t attr_id = -1; /* attr ID */
- hid_t attr_out = -1; /* attr ID */
- hid_t space_id = -1; /* space ID */
- hid_t ftype_id = -1; /* file type ID */
- hid_t wtype_id = -1; /* read/write type ID */
- size_t msize; /* size of type */
- void *buf = NULL; /* data buffer */
- hsize_t nelmts; /* number of elements in dataset */
- int rank; /* rank of dataset */
- htri_t is_named; /* Whether the datatype is named */
- hsize_t dims[H5S_MAX_RANK];/* dimensions of dataset */
- char name[255];
- H5O_info_t oinfo; /* object info */
- int j;
- unsigned u;
- hbool_t is_ref = 0;
- H5T_class_t type_class = -1;
-
- if (H5Oget_info(loc_in, &oinfo) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Oget_info failed");
-
- /*-------------------------------------------------------------------------
- * copy all attributes
- *-------------------------------------------------------------------------
- */
- for (u = 0; u < (unsigned) oinfo.num_attrs; u++) {
- /* open attribute */
- if ((attr_id = H5Aopen_by_idx(loc_in, ".", H5_INDEX_CRT_ORDER, H5_ITER_INC, (hsize_t) u, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aopen_by_idx failed");
-
- /* get name */
- if (H5Aget_name(attr_id, (size_t) 255, name) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
-
- /* get the file datatype */
- if ((ftype_id = H5Aget_type(attr_id)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aget_type failed");
-
- /* Check if the datatype is committed */
- if ((is_named = H5Tcommitted(ftype_id)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tcommitted failed");
- if (is_named && travt) {
- hid_t fidout;
-
- /* Create out file id */
- if ((fidout = H5Iget_file_id(loc_out)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Iget_file_id failed");
-
- /* Copy named dt */
- if ((wtype_id = copy_named_datatype(ftype_id, fidout, named_dt_head_p, travt, options)) < 0) {
- H5Fclose(fidout);
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_named_datatype failed");
- } /* end if */
-
- if (H5Fclose(fidout) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Fclose failed");
- } /* end if */
- else {
- if (options->use_native == 1)
- wtype_id = h5tools_get_native_type(ftype_id);
- else
- wtype_id = H5Tcopy(ftype_id);
- } /* end else */
-
- /* get the dataspace handle */
- if ((space_id = H5Aget_space(attr_id)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aget_space failed");
-
- /* get dimensions */
- if ((rank = H5Sget_simple_extent_dims(space_id, dims, NULL)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sget_simple_extent_dims failed");
-
- nelmts = 1;
- for (j = 0; j < rank; j++)
- nelmts *= dims[j];
-
- if ((msize = H5Tget_size(wtype_id)) == 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tget_size failed");
-
- /*-------------------------------------------------------------------------
- * object references are a special case. We cannot just copy the buffers,
- * but instead we recreate the reference.
- * This is done on a second sweep of the file that just copies the referenced
- * objects at copy_refs_attr()
- *-------------------------------------------------------------------------
- */
- type_class = H5Tget_class(wtype_id);
- is_ref = (type_class == H5T_REFERENCE);
- if (type_class == H5T_VLEN || type_class == H5T_ARRAY) {
- hid_t base_type = -1;
-
- base_type = H5Tget_super(ftype_id);
- is_ref = (is_ref || (H5Tget_class(base_type) == H5T_REFERENCE));
- H5Tclose(base_type);
- }
-
- if (type_class == H5T_COMPOUND) {
- int nmembers = H5Tget_nmembers(wtype_id);
-
- for (j = 0; j < nmembers; j++) {
- hid_t mtid = H5Tget_member_type(wtype_id, (unsigned) j);
- H5T_class_t mtclass = H5Tget_class(mtid);
- H5Tclose(mtid);
-
- if (mtclass == H5T_REFERENCE) {
- is_ref = 1;
- break;
- }
- } /* for (j=0; i<nmembers; j++) */
- } /* if (type_class == H5T_COMPOUND) */
-
- if (is_ref) {
- ; /* handled by copy_refs_attr() */
- }
- else {
- /*-------------------------------------------------------------------------
- * read to memory
- *-------------------------------------------------------------------------
- */
-
- buf = (void *) HDmalloc((size_t)(nelmts * msize));
- if (buf == NULL) {
- error_msg("h5repack", "cannot read into memory\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDmalloc failed");
- } /* end if */
- if (H5Aread(attr_id, wtype_id, buf) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aread failed");
-
- /*-------------------------------------------------------------------------
- * copy
- *-------------------------------------------------------------------------
- */
-
- if ((attr_out = H5Acreate2(loc_out, name, wtype_id, space_id, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Acreate2 failed");
- if (H5Awrite(attr_out, wtype_id, buf) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Awrite failed");
-
- /*close*/
- if (H5Aclose(attr_out) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aclose failed");
-
- /* Check if we have VL data and string in the attribute's datatype that must
- * be reclaimed */
- if (TRUE == h5tools_detect_vlen(wtype_id))
- H5Dvlen_reclaim(wtype_id, space_id, H5P_DEFAULT, buf);
- HDfree(buf);
- buf = NULL;
- } /*H5T_REFERENCE*/
-
- if (options->verbose)
- printf(FORMAT_OBJ_ATTR, "attr", name);
-
- /*-------------------------------------------------------------------------
- * close
- *-------------------------------------------------------------------------
- */
-
- if (H5Tclose(ftype_id) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed");
- if (H5Tclose(wtype_id) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed");
- if (H5Sclose(space_id) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sclose failed");
- if (H5Aclose(attr_id) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aclose failed");
- } /* u */
-
- return 0;
-
-done:
- H5E_BEGIN_TRY {
- if (buf) {
- /* Check if we have VL data and string in the attribute's datatype that must
- * be reclaimed */
- if (TRUE == h5tools_detect_vlen(wtype_id))
- H5Dvlen_reclaim(wtype_id, space_id, H5P_DEFAULT, buf);
-
- /* Free buf */
- HDfree(buf);
- } /* end if */
-
- H5Tclose(ftype_id);
- H5Tclose(wtype_id);
- H5Sclose(space_id);
- H5Aclose(attr_id);
- H5Aclose(attr_out);
- } H5E_END_TRY;
-
- return ret_value;
-} /* end copy_attr() */
-
-/*-------------------------------------------------------------------------
- * Function: check_options
- *
- * Purpose: print options, checks for invalid options
- *
- * Return: void, return -1 on error
- *
- * Programmer: pvn@ncsa.uiuc.edu
- *
- * Date: September, 22, 2003
- *
- * Modification:
- * Peter Cao, July 9, 2007
- * Add "-L, --latest" and other options to pack a file with the latest file format
- *
- *-------------------------------------------------------------------------
- */
-static int check_options(pack_opt_t *options) {
- unsigned int i;
- int k, j, has_cp = 0, has_ck = 0;
- char slayout[30];
-
- /*-------------------------------------------------------------------------
- * objects to layout
- *-------------------------------------------------------------------------
- */
- if (options->verbose && have_request(options) /* only print if requested */) {
- printf("Objects to modify layout are...\n");
- if (options->all_layout == 1) {
- switch (options->layout_g) {
- case H5D_COMPACT:
- strcpy(slayout, "compact");
- break;
- case H5D_CONTIGUOUS:
- strcpy(slayout, "contiguous");
- break;
- case H5D_CHUNKED:
- strcpy(slayout, "chunked");
- break;
- case H5D_VIRTUAL:
- strcpy(slayout, "virtual");
- break;
- case H5D_LAYOUT_ERROR:
- case H5D_NLAYOUTS:
- error_msg("invalid layout\n");
- return -1;
- default:
- strcpy(slayout, "invalid layout\n");
- return -1;
- }
- printf(" Apply %s layout to all\n", slayout);
- if (H5D_CHUNKED == options->layout_g) {
- printf("with dimension [");
- for (j = 0; j < options->chunk_g.rank; j++)
- printf("%d ", (int) options->chunk_g.chunk_lengths[j]);
- printf("]\n");
- }
- }
- }/* verbose */
-
- for (i = 0; i < options->op_tbl->nelems; i++) {
- char* name = options->op_tbl->objs[i].path;
-
- if (options->op_tbl->objs[i].chunk.rank > 0) {
- if (options->verbose) {
- printf(" <%s> with chunk size ", name);
- for (k = 0; k < options->op_tbl->objs[i].chunk.rank; k++)
- printf("%d ",
- (int) options->op_tbl->objs[i].chunk.chunk_lengths[k]);
- printf("\n");
- }
- has_ck = 1;
- }
- else if (options->op_tbl->objs[i].chunk.rank == -2) {
- if (options->verbose)
- printf(" <%s> %s\n", name, "NONE (contigous)");
- has_ck = 1;
- }
- }
-
- if (options->all_layout == 1 && has_ck) {
- error_msg(
- "invalid chunking input: 'all' option\
- is present with other objects\n");
- return -1;
- }
-
- /*-------------------------------------------------------------------------
- * objects to filter
- *-------------------------------------------------------------------------
- */
-
- if (options->verbose && have_request(options) /* only print if requested */) {
- printf("Objects to apply filter are...\n");
- if (options->all_filter == 1) {
- for (k = 0; k < options->n_filter_g; k++) {
- H5Z_filter_t filtn = options->filter_g[k].filtn;
- switch (filtn) {
- case H5Z_FILTER_NONE:
- printf(" Uncompress all\n");
- break;
- case H5Z_FILTER_SHUFFLE:
- case H5Z_FILTER_FLETCHER32:
- printf(" All with %s\n", get_sfilter(filtn));
- break;
- case H5Z_FILTER_SZIP:
- case H5Z_FILTER_DEFLATE:
- printf(" All with %s, parameter %d\n", get_sfilter(filtn),
- options->filter_g[k].cd_values[0]);
- break;
- default:
- printf(" User Defined %d\n", filtn);
- break;
- } /* k */
- };
- }
- } /* verbose */
-
- for (i = 0; i < options->op_tbl->nelems; i++) {
- pack_info_t pack = options->op_tbl->objs[i];
- char* name = pack.path;
-
- for (j = 0; j < pack.nfilters; j++) {
- if (options->verbose) {
- printf(" <%s> with %s filter\n", name,
- get_sfilter(pack.filter[j].filtn));
- }
-
- has_cp = 1;
-
- } /* j */
- } /* i */
-
- if (options->all_filter == 1 && has_cp) {
- error_msg(
- "invalid compression input: 'all' option\
- is present with other objects\n");
- return -1;
- }
-
- /*-------------------------------------------------------------------------
- * check options for the latest format
- *-------------------------------------------------------------------------
- */
-
- if (options->grp_compact < 0) {
- error_msg(
- "invalid maximum number of links to store as header messages\n");
- return -1;
- }
- if (options->grp_indexed < 0) {
- error_msg(
- "invalid minimum number of links to store in the indexed format\n");
- return -1;
- }
- if (options->grp_indexed > options->grp_compact) {
- error_msg(
- "minimum indexed size is greater than the maximum compact size\n");
- return -1;
- }
- for (i = 0; i < 8; i++) {
- if (options->msg_size[i] < 0) {
- error_msg("invalid shared message size\n");
- return -1;
- }
- }
-
- /*--------------------------------------------------------------------------------
- * verify new user userblock options; file name must be present
- *---------------------------------------------------------------------------------
- */
- if (options->ublock_filename != NULL && options->ublock_size == 0) {
- if (options->verbose) {
- printf(
- "Warning: user block size missing for file %s. Assigning a default size of 1024...\n",
- options->ublock_filename);
- options->ublock_size = 1024;
- }
- }
-
- if (options->ublock_filename == NULL && options->ublock_size != 0) {
- error_msg("file name missing for user block\n",
- options->ublock_filename);
- return -1;
- }
-
- /*--------------------------------------------------------------------------------
- * verify alignment options; threshold is zero default but alignment not
- *---------------------------------------------------------------------------------
- */
-
- if (options->alignment == 0 && options->threshold != 0) {
- error_msg("alignment for H5Pset_alignment missing\n");
- return -1;
- }
-
- return 0;
-}
-
-/*-------------------------------------------------------------------------
- * Function: check_objects
- *
- * Purpose: locate all HDF5 objects in the file and compare with user
- * supplied list
- *
- * Return: 0, ok, -1 no
- *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
- *
- * Date: September, 23, 2003
- *
- *-------------------------------------------------------------------------
- */
-static int check_objects(const char* fname, pack_opt_t *options) {
- hid_t fid;
- unsigned int i;
- trav_table_t *travt = NULL;
-
- /* nothing to do */
- if (options->op_tbl->nelems == 0)
- return 0;
-
- /*-------------------------------------------------------------------------
- * open the file
- *-------------------------------------------------------------------------
- */
- if ((fid = h5tools_fopen(fname, H5F_ACC_RDONLY, H5P_DEFAULT, NULL, NULL, 0))
- < 0) {
- printf("<%s>: %s\n", fname, H5FOPENERROR);
- return -1;
- }
-
- /*-------------------------------------------------------------------------
- * get the list of objects in the file
- *-------------------------------------------------------------------------
- */
-
- /* init table */
- trav_table_init(&travt);
-
- /* get the list of objects in the file */
- if (h5trav_gettable(fid, travt) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * compare with user supplied list
- *-------------------------------------------------------------------------
- */
-
- if (options->verbose)
- printf("Opening file <%s>. Searching for objects to modify...\n",
- fname);
-
- for (i = 0; i < options->op_tbl->nelems; i++) {
- char* name = options->op_tbl->objs[i].path;
- if (options->verbose)
- printf(" <%s>", name);
-
- /* the input object names are present in the file and are valid */
- if (h5trav_getindext(name, travt) < 0) {
- error_msg("%s Could not find <%s> in file <%s>. Exiting...\n",
- (options->verbose ? "\n" : ""), name, fname);
- goto out;
- }
- if (options->verbose)
- printf("...Found\n");
-
- /* check for extra filter conditions */
- switch (options->op_tbl->objs[i].filter->filtn) {
- /* chunk size must be smaller than pixels per block */
- case H5Z_FILTER_SZIP:
- {
- int j;
- hsize_t csize = 1;
- unsigned ppb = options->op_tbl->objs[i].filter->cd_values[0];
- hsize_t dims[H5S_MAX_RANK];
- int rank;
- hid_t did;
- hid_t sid;
-
- if (options->op_tbl->objs[i].chunk.rank > 0) {
- rank = options->op_tbl->objs[i].chunk.rank;
- for (j = 0; j < rank; j++)
- csize *= options->op_tbl->objs[i].chunk.chunk_lengths[j];
- }
- else {
- if ((did = H5Dopen2(fid, name, H5P_DEFAULT)) < 0)
- goto out;
- if ((sid = H5Dget_space(did)) < 0)
- goto out;
- if ((rank = H5Sget_simple_extent_ndims(sid)) < 0)
- goto out;
- HDmemset(dims, 0, sizeof dims);
- if (H5Sget_simple_extent_dims(sid, dims, NULL) < 0)
- goto out;
- for (j = 0; j < rank; j++)
- csize *= dims[j];
- if (H5Sclose(sid) < 0)
- goto out;
- if (H5Dclose(did) < 0)
- goto out;
- }
-
- if (csize < ppb) {
- printf(
- " <warning: SZIP settins, chunk size is smaller than pixels per block>\n");
- goto out;
- }
- }
- break;
- default:
- break;
- }
- } /* i */
-
- /*-------------------------------------------------------------------------
- * close
- *-------------------------------------------------------------------------
- */
- H5Fclose(fid);
- trav_table_free(travt);
- return 0;
-
-out:
- H5Fclose(fid);
- trav_table_free(travt);
- return -1;
-}
-
-/*-------------------------------------------------------------------------
- * Function: have_request
- *
- * Purpose: check if a filter or layout was requested
- *
- * Return: 1 yes, 0 no
- *
- * Date: May, 24, 2007
- *
- *-------------------------------------------------------------------------
- */
-static int have_request(pack_opt_t *options) {
-
- if (options->all_filter || options->all_layout || options->op_tbl->nelems)
- return 1;
-
- return 0;
-
-}
-
-/*-------------------------------------------------------------------------
- * Function: get_sfilter
- *
- * Purpose: return the filter as a string name
- *
- * Return: name of filter, exit on error
- *
- *-------------------------------------------------------------------------
- */
-
-static const char* get_sfilter(H5Z_filter_t filtn) {
- if (filtn == H5Z_FILTER_NONE)
- return "NONE";
- else if (filtn == H5Z_FILTER_DEFLATE)
- return "GZIP";
- else if (filtn == H5Z_FILTER_SZIP)
- return "SZIP";
- else if (filtn == H5Z_FILTER_SHUFFLE)
- return "SHUFFLE";
- else if (filtn == H5Z_FILTER_FLETCHER32)
- return "FLETCHER32";
- else if (filtn == H5Z_FILTER_NBIT)
- return "NBIT";
- else if (filtn == H5Z_FILTER_SCALEOFFSET)
- return "SOFF";
- else
- return "UD";
-}
-
diff --git a/tools/h5repack/h5repack.h b/tools/h5repack/h5repack.h
deleted file mode 100644
index d2ab923..0000000
--- a/tools/h5repack/h5repack.h
+++ /dev/null
@@ -1,243 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by The HDF Group. *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from help@hdfgroup.org. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-
-#ifndef H5REPACK_H__
-#define H5REPACK_H__
-
-#include "H5private.h"
-#include "hdf5.h"
-#include "h5trav.h"
-
-#define H5FOPENERROR "unable to open file"
-#define PFORMAT "%-7s %-7s %-7s\n" /* chunk info, compression info, name*/
-#define PFORMAT1 "%-7s %-7s %-7s" /* chunk info, compression info, name*/
-#define MAX_NC_NAME 256 /* max length of a name */
-#define MAX_VAR_DIMS 32 /* max per variable dimensions */
-#define FORMAT_OBJ " %-27s %s\n" /* obj type, name */
-#define FORMAT_OBJ_ATTR " %-27s %s\n" /* obj type, name */
-#define MAX_COMPACT_DSIZE 64512 /* max data size for compact layout. -1k for header size */
-
-/*-------------------------------------------------------------------------
- * data structures for command line options
- *-------------------------------------------------------------------------
- */
-
-/* a list of names */
-typedef struct {
- char obj[MAX_NC_NAME];
-} obj_list_t;
-
-/*
- the type of filter and additional parameter
- type can be one of the filters
- H5Z_FILTER_NONE 0, uncompress if compressed
- H5Z_FILTER_DEFLATE 1 , deflation like gzip
- H5Z_FILTER_SHUFFLE 2 , shuffle the data
- H5Z_FILTER_FLETCHER32 3 , letcher32 checksum of EDC
- H5Z_FILTER_SZIP 4 , szip compression
- H5Z_FILTER_NBIT 5 , nbit compression
- H5Z_FILTER_SCALEOFFSET 6 , scaleoffset compression
-*/
-
-#define CD_VALUES 20
-
-typedef struct {
- H5Z_filter_t filtn; /* filter identification number */
- unsigned cd_values[CD_VALUES]; /* filter client data values */
- size_t cd_nelmts; /* filter client number of values */
-} filter_info_t;
-
-/* chunk lengths along each dimension and rank */
-typedef struct {
- hsize_t chunk_lengths[MAX_VAR_DIMS];
- int rank;
-} chunk_info_t;
-
-/* we currently define a maximum value for the filters array,
- that corresponds to the current library filters */
-#define H5_REPACK_MAX_NFILTERS 6
-
-/* information for one object, contains PATH, CHUNK info and FILTER info */
-typedef struct {
- char path[MAX_NC_NAME]; /* name of object */
- filter_info_t filter[H5_REPACK_MAX_NFILTERS]; /* filter array */
- int nfilters; /* current number of filters */
- H5D_layout_t layout; /* layout information */
- chunk_info_t chunk; /* chunk information */
- hid_t refobj_id; /* object ID, references */
-} pack_info_t;
-
-/* store a table of all objects */
-typedef struct {
- unsigned int size;
- unsigned int nelems;
- pack_info_t *objs;
-} pack_opttbl_t;
-
-
-/*-------------------------------------------------------------------------
- * command line options
- *-------------------------------------------------------------------------
- */
-
-/* all the above, ready to go to the hrepack call */
-typedef struct {
- pack_opttbl_t *op_tbl; /*table with all -c and -f options */
- int all_layout; /*apply the layout to all objects */
- int all_filter; /*apply the filter to all objects */
- filter_info_t filter_g[H5_REPACK_MAX_NFILTERS]; /*global filter array for the ALL case */
- int n_filter_g; /*number of global filters */
- chunk_info_t chunk_g; /*global chunk INFO for the ALL case */
- H5D_layout_t layout_g; /*global layout information for the ALL case */
- int verbose; /*verbose mode */
- hsize_t min_comp; /*minimum size to compress, in bytes */
- int use_native; /*use a native type in write */
- hbool_t latest; /*pack file with the latest file format */
- int grp_compact; /* Set the maximum number of links to store as header messages in the group */
- int grp_indexed; /* Set the minimum number of links to store in the indexed format */
- int msg_size[8]; /* Minimum size of shared messages: dataspace,
- datatype, fill value, filter pipleline, attribute */
- const char *ublock_filename; /* user block file name */
- hsize_t ublock_size; /* user block size */
- hsize_t meta_block_size; /* metadata aggregation block size (for H5Pset_meta_block_size) */
- hsize_t threshold; /* alignment threshold for H5Pset_alignment */
- hsize_t alignment; /* alignment for H5Pset_alignment */
- H5F_file_space_type_t fs_strategy; /* File space handling strategy */
- hsize_t fs_threshold; /* Free space section threshold */
-} pack_opt_t;
-
-
-typedef struct named_dt_t {
- haddr_t addr_in; /* Address of the named dtype in the in file */
- hid_t id_out; /* Open identifier for the dtype in the out file */
- struct named_dt_t *next; /* Next dtype */
-} named_dt_t;
-
-/*-------------------------------------------------------------------------
- * public functions
- *-------------------------------------------------------------------------
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int h5repack(const char* infile, const char* outfile, pack_opt_t *options);
-int h5repack_addfilter(const char* str, pack_opt_t *options);
-int h5repack_addlayout(const char* str, pack_opt_t *options);
-int h5repack_init(pack_opt_t *options, int verbose, hbool_t latest,
- H5F_file_space_type_t strategy, hsize_t threshold);
-int h5repack_end(pack_opt_t *options);
-int h5repack_verify(const char *in_fname, const char *out_fname, pack_opt_t *options);
-int h5repack_cmp_pl(const char *fname1, const char *fname2);
-
-/* Note: The below copy_named_datatype(), named_datatype_free(), copy_attr()
- * and struct named_dt_t were located in h5repack_copy.c as static prior to
- * bugfix1726.
- * Made shared functions as copy_attr() was needed in h5repack_refs.c.
- * However copy_attr() may be obsoleted when H5Acopy is available and put back
- * others to static in h5repack_copy.c.
- */
-hid_t copy_named_datatype(hid_t type_in, hid_t fidout, named_dt_t **named_dt_head_p, trav_table_t *travt, pack_opt_t *options);
-int named_datatype_free(named_dt_t **named_dt_head_p, int ignore_err);
-int copy_attr(hid_t loc_in, hid_t loc_out, named_dt_t **named_dt_head_p,
- trav_table_t *travt, pack_opt_t *options);
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
-/*-------------------------------------------------------------------------
- * private functions
- *-------------------------------------------------------------------------
- */
-
-
-/*-------------------------------------------------------------------------
- * copy module
- *-------------------------------------------------------------------------
- */
-
-int copy_objects (const char* fnamein,
- const char* fnameout,
- pack_opt_t *options);
-
-int do_copy_refobjs(hid_t fidin,
- hid_t fidout,
- trav_table_t *travt,
- pack_opt_t *options);
-
-/*-------------------------------------------------------------------------
- * filters and verify module
- *-------------------------------------------------------------------------
- */
-void init_packobject(pack_info_t *obj);
-
-
-/*-------------------------------------------------------------------------
- * filters and copy module
- *-------------------------------------------------------------------------
- */
-
-int apply_filters(const char* name, /* object name from traverse list */
- int rank, /* rank of dataset */
- hsize_t *dims, /* dimensions of dataset */
- size_t msize, /* size of type */
- hid_t dcpl_id, /* dataset creation property list */
- pack_opt_t *options, /* repack options */
- int *has_filter); /* (OUT) object NAME has a filter */
-
-
-/*-------------------------------------------------------------------------
- * options table
- *-------------------------------------------------------------------------
- */
-int options_table_init( pack_opttbl_t **tbl );
-int options_table_free( pack_opttbl_t *table );
-int options_add_layout( obj_list_t *obj_list,
- unsigned n_objs,
- pack_info_t *pack,
- pack_opttbl_t *table );
-int options_add_filter ( obj_list_t *obj_list,
- unsigned n_objs,
- filter_info_t filt,
- pack_opttbl_t *table );
-pack_info_t* options_get_object( const char *path,
- pack_opttbl_t *table);
-
-/*-------------------------------------------------------------------------
- * parse functions
- *-------------------------------------------------------------------------
- */
-
-obj_list_t* parse_filter(const char *str,
- unsigned *n_objs,
- filter_info_t *filt,
- pack_opt_t *options,
- int *is_glb);
-
-obj_list_t* parse_layout(const char *str,
- unsigned *n_objs,
- pack_info_t *pack, /* info about object */
- pack_opt_t *options);
-
-
-
-
-#endif /* H5REPACK_H__ */
-
diff --git a/tools/h5repack/h5repack.sh.in b/tools/h5repack/h5repack.sh.in
deleted file mode 100644
index c2f0459..0000000
--- a/tools/h5repack/h5repack.sh.in
+++ /dev/null
@@ -1,1265 +0,0 @@
-#! /bin/sh
-#
-# Copyright by The HDF Group.
-# Copyright by the Board of Trustees of the University of Illinois.
-# All rights reserved.
-#
-# This file is part of HDF5. The full HDF5 copyright notice, including
-# terms governing use, modification, and redistribution, is contained in
-# the files COPYING and Copyright.html. COPYING can be found at the root
-# of the source code distribution tree; Copyright.html can be found at the
-# root level of an installed copy of the electronic HDF5 document set and
-# is linked from the top-level documents page. It can also be found at
-# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have
-# access to either file, you may request a copy from help@hdfgroup.org.
-#
-# Tests for the h5repack tool
-#
-# Modification:
-# Pedro Vicente Nunes, 11/15/2006
-# Added $FILEN variables for file names
-#
-
-srcdir=@srcdir@
-
-USE_FILTER_SZIP="@USE_FILTER_SZIP@"
-USE_FILTER_DEFLATE="@USE_FILTER_DEFLATE@"
-
-TESTNAME=h5repack
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-
-H5REPACK=h5repack # The tool name
-H5REPACK_BIN=`pwd`/$H5REPACK # The path of the tool binary
-
-H5DIFF=../h5diff/h5diff # The h5diff tool name
-H5DIFF_BIN=`pwd`/$H5DIFF # The path of the h5diff tool binary
-
-H5DUMP=../h5dump/h5dump # The h5dump tool name
-H5DUMP_BIN=`pwd`/$H5DUMP # The path of the h5dump tool binary
-
-RM='rm -rf'
-CMP='cmp'
-DIFF='diff -c'
-GREP='grep'
-CP='cp'
-DIRNAME='dirname'
-LS='ls'
-AWK='awk'
-
-H5DETECTSZIP=testh5repack_detect_szip
-H5DETECTSZIP_BIN=`pwd`/$H5DETECTSZIP
-
-
-nerrors=0
-verbose=yes
-
-# source dirs
-SRC_TOOLS="$srcdir/.."
-SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles"
-
-# testfiles source dirs for tools
-SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES"
-SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES"
-SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles"
-SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles"
-SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles"
-SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles"
-SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles"
-SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles"
-
-TESTDIR=./testpack
-test -d $TESTDIR || mkdir $TESTDIR
-
-######################################################################
-# test files
-# --------------------------------------------------------------------
-# All the test files copy from source directory to test directory
-# NOTE: Keep this framework to add/remove test files.
-# Any test files from other tools can be used in this framework.
-# This list are also used for checking exist.
-# Comment '#' without space can be used.
-# --------------------------------------------------------------------
-LIST_HDF5_TEST_FILES="
-$SRC_H5REPACK_TESTFILES/h5repack_attr.h5
-$SRC_H5REPACK_TESTFILES/h5repack_attr_refs.h5
-$SRC_H5REPACK_TESTFILES/h5repack_deflate.h5
-$SRC_H5REPACK_TESTFILES/h5repack_early.h5
-$SRC_H5REPACK_TESTFILES/h5repack_ext.h5
-$SRC_H5REPACK_TESTFILES/h5repack_fill.h5
-$SRC_H5REPACK_TESTFILES/h5repack_filters.h5
-$SRC_H5REPACK_TESTFILES/h5repack_fletcher.h5
-$SRC_H5REPACK_TESTFILES/h5repack_hlink.h5
-$SRC_H5REPACK_TESTFILES/h5repack_layout.h5
-$SRC_H5REPACK_TESTFILES/h5repack_layouto.h5
-$SRC_H5REPACK_TESTFILES/h5repack_layout2.h5
-$SRC_H5REPACK_TESTFILES/h5repack_layout3.h5
-$SRC_H5REPACK_TESTFILES/h5repack_named_dtypes.h5
-$SRC_H5REPACK_TESTFILES/h5repack_nested_8bit_enum.h5
-$SRC_H5REPACK_TESTFILES/h5repack_nested_8bit_enum_deflated.h5
-$SRC_H5REPACK_TESTFILES/h5repack_nbit.h5
-$SRC_H5REPACK_TESTFILES/h5repack_objs.h5
-$SRC_H5REPACK_TESTFILES/h5repack_refs.h5
-$SRC_H5REPACK_TESTFILES/h5repack_shuffle.h5
-$SRC_H5REPACK_TESTFILES/h5repack_soffset.h5
-$SRC_H5REPACK_TESTFILES/h5repack_szip.h5
-$SRC_H5DIFF_TESTFILES/h5diff_attr1.h5
-$SRC_TOOLS_TESTFILES/tfamily00000.h5
-$SRC_TOOLS_TESTFILES/tfamily00001.h5
-$SRC_TOOLS_TESTFILES/tfamily00002.h5
-$SRC_TOOLS_TESTFILES/tfamily00003.h5
-$SRC_TOOLS_TESTFILES/tfamily00004.h5
-$SRC_TOOLS_TESTFILES/tfamily00005.h5
-$SRC_TOOLS_TESTFILES/tfamily00006.h5
-$SRC_TOOLS_TESTFILES/tfamily00007.h5
-$SRC_TOOLS_TESTFILES/tfamily00008.h5
-$SRC_TOOLS_TESTFILES/tfamily00009.h5
-$SRC_TOOLS_TESTFILES/tfamily00010.h5
-$SRC_TOOLS_TESTFILES/vds/1_a.h5
-$SRC_TOOLS_TESTFILES/vds/1_b.h5
-$SRC_TOOLS_TESTFILES/vds/1_c.h5
-$SRC_TOOLS_TESTFILES/vds/1_d.h5
-$SRC_TOOLS_TESTFILES/vds/1_e.h5
-$SRC_TOOLS_TESTFILES/vds/1_f.h5
-$SRC_TOOLS_TESTFILES/vds/1_vds.h5
-$SRC_TOOLS_TESTFILES/vds/2_a.h5
-$SRC_TOOLS_TESTFILES/vds/2_b.h5
-$SRC_TOOLS_TESTFILES/vds/2_c.h5
-$SRC_TOOLS_TESTFILES/vds/2_d.h5
-$SRC_TOOLS_TESTFILES/vds/2_e.h5
-$SRC_TOOLS_TESTFILES/vds/2_vds.h5
-$SRC_TOOLS_TESTFILES/vds/3_1_vds.h5
-$SRC_TOOLS_TESTFILES/vds/3_2_vds.h5
-$SRC_TOOLS_TESTFILES/vds/4_0.h5
-$SRC_TOOLS_TESTFILES/vds/4_1.h5
-$SRC_TOOLS_TESTFILES/vds/4_2.h5
-$SRC_TOOLS_TESTFILES/vds/4_vds.h5
-$SRC_TOOLS_TESTFILES/vds/5_a.h5
-$SRC_TOOLS_TESTFILES/vds/5_b.h5
-$SRC_TOOLS_TESTFILES/vds/5_c.h5
-$SRC_TOOLS_TESTFILES/vds/5_vds.h5
-"
-
-LIST_OTHER_TEST_FILES="
-$SRC_H5REPACK_TESTFILES/h5repack-help.txt
-$SRC_H5REPACK_TESTFILES/h5repack_ext.bin
-$SRC_H5REPACK_TESTFILES/ublock.bin
-$SRC_H5REPACK_TESTFILES/h5repack.info
-$SRC_H5REPACK_TESTFILES/deflate_limit.h5repack_layout.h5.ddl
-$SRC_H5REPACK_TESTFILES/h5repack_layout.h5.ddl
-$SRC_H5REPACK_TESTFILES/h5repack_filters.h5-gzip_verbose_filters.tst
-$SRC_H5REPACK_TESTFILES/h5repack_layout.h5-dset2_chunk_20x10-errstk.tst
-$SRC_H5REPACK_TESTFILES/h5repack_layout.h5-plugin_test.ddl
-$SRC_H5REPACK_TESTFILES/plugin_test.h5repack_layout.h5.tst
-$SRC_H5REPACK_TESTFILES/1_vds.h5-vds_dset_chunk20x10x5-v.ddl
-$SRC_H5REPACK_TESTFILES/2_vds.h5-vds_chunk3x6x9-v.ddl
-$SRC_H5REPACK_TESTFILES/3_1_vds.h5-vds_chunk2x5x8-v.ddl
-$SRC_H5REPACK_TESTFILES/4_vds.h5-vds_compa-v.ddl
-$SRC_H5REPACK_TESTFILES/4_vds.h5-vds_conti-v.ddl
-"
-
-#
-# copy test files and expected output files from source dirs to test dir
-#
-COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES"
-
-COPY_TESTFILES_TO_TESTDIR()
-{
- # copy test files. Used -f to make sure get a new copy
- for tstfile in $COPY_TESTFILES
- do
- # ignore '#' comment
- echo $tstfile | tr -d ' ' | grep '^#' > /dev/null
- RET=$?
- if [ $RET -eq 1 ]; then
- # skip cp if srcdir is same as destdir
- # this occurs when build/test performed in source dir and
- # make cp fail
- SDIR=`$DIRNAME $tstfile`
- INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'`
- INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'`
- if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then
- $CP -f $tstfile $TESTDIR
- if [ $? -ne 0 ]; then
- echo "Error: FAILED to copy $tstfile ."
-
- # Comment out this to CREATE expected file
- exit $EXIT_FAILURE
- fi
- fi
- fi
- done
-}
-
-CLEAN_TESTFILES_AND_TESTDIR()
-{
- # skip rm if srcdir is same as destdir
- # this occurs when build/test performed in source dir and
- # make cp fail
- SDIR=$SRC_H5REPACK_TESTFILES
- INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'`
- INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'`
- if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then
- $RM $TESTDIR
- fi
-}
-
-# Print a $* message left justified in a field of 70 characters
-#
-MESSAGE() {
- SPACES=" "
- echo "$* $SPACES" | cut -c1-70 | tr -d '\012'
-}
-
-# Print a line-line message left justified in a field of 70 characters
-# beginning with the word "Testing".
-#
-TESTING() {
- MESSAGE "Testing $*"
-}
-
-# Print a line-line message left justified in a field of 70 characters
-# beginning with the word "Verifying".
-#
-VERIFY() {
- MESSAGE "Verifying $*"
-}
-
-# Print a message that a test has been skipped (because a required filter
-# was unavailable)
-SKIP() {
- TESTING $H5REPACK $@
- echo " -SKIP-"
-}
-
-# Call the h5diff tool
-#
-DIFFTEST()
-{
- VERIFY h5diff output $@
- (
- cd $TESTDIR
- $RUNSERIAL $H5DIFF_BIN -q "$@"
- )
- RET=$?
- if [ $RET != 0 ] ; then
- echo "*FAILED*"
- nerrors="`expr $nerrors + 1`"
- else
- echo " PASSED"
- fi
-
-}
-
-# Call h5repack
-#
-
-
-# call TOOLTEST_MAIN and delete $output file
-TOOLTEST()
-{
- echo $@
- infile=$2
- outfile=out-$1.$2
- shift
- shift
-
- # Run test.
- TESTING $H5REPACK $@
- (
- cd $TESTDIR
- $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile
- )
- RET=$?
- if [ $RET != 0 ] ; then
- echo "*FAILED*"
- nerrors="`expr $nerrors + 1`"
- else
- echo " PASSED"
- DIFFTEST $infile $outfile
- fi
- rm -f $outfile
-}
-
-#------------------------------------------
-# Verifying layouts of a dataset
-VERIFY_LAYOUT_DSET()
-{
- layoutfile=layout-$1.$2
- dset=$3
- expectlayout=$4
- infile=$2
- outfile=out-$1.$2
- shift
- shift
- shift
- shift
-
- TESTING $H5REPACK $@
- (
- cd $TESTDIR
- $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile
- )
- RET=$?
- if [ $RET != 0 ] ; then
- echo "*FAILED*"
- nerrors="`expr $nerrors + 1`"
- else
- echo " PASSED"
- DIFFTEST $infile $outfile
- fi
-
- #---------------------------------
- # check the layout from a dataset
- VERIFY "a dataset layout"
- (
- cd $TESTDIR
- $RUNSERIAL $H5DUMP_BIN -d $dset -pH $outfile > $layoutfile
- )
- $GREP $expectlayout $TESTDIR/$layoutfile > /dev/null
- if [ $? -eq 0 ]; then
- echo " PASSED"
- else
- echo " FAILED"
- nerrors="`expr $nerrors + 1`"
- fi
-
- # clean up tmp files
- rm -f $outfile
- rm -f $layoutfile
-}
-
-#------------------------------------------
-# Verifying layouts of a dataset
-VERIFY_LAYOUT_VDS()
-{
- layoutfile=layout-$1.$2
- dset=$3
- expectlayout=$4
- infile=$2
- outfile=out-$1.$2
-
- expect="$TESTDIR/$2-$1-v.ddl"
- actual="$TESTDIR/$2-$1-v.out"
- actual_err="$TESTDIR/$2-$1-v.err"
-
- shift
- shift
- shift
- shift
-
- TESTING $H5REPACK $@
- (
- cd $TESTDIR
- $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile
- )
- RET=$?
- if [ $RET != 0 ] ; then
- echo "*FAILED*"
- nerrors="`expr $nerrors + 1`"
- else
- echo " PASSED"
- fi
-
- #---------------------------------
- # check the layout from a dataset
- VERIFY "a dataset layout"
- (
- cd $TESTDIR
- $RUNSERIAL $H5DUMP_BIN -d $dset -p $outfile
- ) >$actual 2>$actual_err
-
- cat $actual_err >> $actual
-
- if [ ! -f $expect ]; then
- # Create the expect file if it doesn't yet exist.
- echo " CREATED"
- cp $actual $expect
- elif $CMP $expect $actual > /dev/null 2>&1 ; then
- echo " PASSED"
- else
- echo "*FAILED*"
- echo " Expected result (*.ddl) differs from actual result (*.out)"
- nerrors="`expr $nerrors + 1`"
- test yes = "$verbose" && $DIFF $caseless $expect $actual |sed 's/^/ /'
- fi
-
- # Clean up output file
- if test -z "$HDF5_NOCLEANUP"; then
- rm -f $actual $actual_err
- fi
-
- # clean up tmp files
- rm -f $outfile
-}
-
-#----------------------------------------
-# Verifying layouts from entire file
-VERIFY_LAYOUT_ALL()
-{
- infile=$2
- outfile=out-$1.$2
- layoutfile=layout-$1.$2
- expectlayout=$3
- shift
- shift
- shift
-
- TESTING $H5REPACK $@
- (
- cd $TESTDIR
- $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile
- )
- RET=$?
- if [ $RET != 0 ] ; then
- echo "*FAILED*"
- nerrors="`expr $nerrors + 1`"
- else
- echo " PASSED"
- DIFFTEST $infile $outfile
- fi
-
-
- #---------------------------------
- # check the layout from a dataset
- # check if the other layouts still exsit
- VERIFY "layouts"
- (
- cd $TESTDIR
- echo
- # if CONTIGUOUS
- if [ $expectlayout = "CONTIGUOUS" ]; then
- TESTING $H5DUMP_BIN -pH $outfile
- (
- $RUNSERIAL $H5DUMP_BIN -pH $outfile > $layoutfile
- )
- $GREP "COMPACT" $layoutfile > /dev/null
- if [ $? -eq 0 ]; then
- echo " FAILED"
- nerrors="`expr $nerrors + 1`"
- else
- $GREP "CHUNKED" $layoutfile > /dev/null
- if [ $? -eq 0 ]; then
- echo " FAILED"
- nerrors="`expr $nerrors + 1`"
- else
- echo " PASSED"
- fi
- fi
- else
- # if COMPACT
- if [ $expectlayout = "COMPACT" ]; then
- TESTING $H5DUMP_BIN -pH $outfile
- (
- $RUNSERIAL $H5DUMP_BIN -pH $outfile > $layoutfile
- )
- $GREP "CHUNKED" $layoutfile > /dev/null
- if [ $? -eq 0 ]; then
- echo " FAILED"
- nerrors="`expr $nerrors + 1`"
- else
- $GREP "CONTIGUOUS" $layoutfile > /dev/null
- if [ $? -eq 0 ]; then
- echo " FAILED"
- nerrors="`expr $nerrors + 1`"
- else
- echo " PASSED"
- fi
- fi
- else
- # if CHUNKED
- if [ $expectlayout = "CHUNKED" ]; then
- TESTING $H5DUMP_BIN -pH $outfile
- (
- $RUNSERIAL $H5DUMP_BIN -pH $outfile > $layoutfile
- )
- $GREP "CONTIGUOUS" $layoutfile > /dev/null
- if [ $? -eq 0 ]; then
- echo " FAILED"
- nerrors="`expr $nerrors + 1`"
- else
- $GREP "COMPACT" $layoutfile > /dev/null
- if [ $? -eq 0 ]; then
- echo " FAILED"
- nerrors="`expr $nerrors + 1`"
- else
- echo " PASSED"
- fi
- fi
- fi
- fi
- fi
- )
-
- # clean up tmp files
- rm -f $outfile
- rm -f $layoutfile
-}
-
-# same as TOOLTEST, but it uses the old syntax -i input_file -o output_file
-#
-TOOLTEST0()
-{
- infile=$2
- outfile=out-$1.$2
- shift
- shift
-
- # Run test.
- TESTING $H5REPACK $@
- (
- cd $TESTDIR
- $RUNSERIAL $H5REPACK_BIN -i $infile -o $outfile "$@"
- )
- RET=$?
- if [ $RET != 0 ] ; then
- echo "*FAILED*"
- nerrors="`expr $nerrors + 1`"
- else
- echo " PASSED"
- DIFFTEST $infile $outfile
- fi
- rm -f $outfile
-}
-
-
-# same as TOOLTEST, but it uses without -i -o options
-# used to test the family driver, where these files reside
-#
-TOOLTEST1()
-{
- infile=$2
- outfile=out-$1.$2
- shift
- shift
-
- # Run test.
- TESTING $H5REPACK $@
- (
- cd $TESTDIR
- $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile
- )
- RET=$?
- if [ $RET != 0 ] ; then
- echo "*FAILED*"
- nerrors="`expr $nerrors + 1`"
- else
- echo " PASSED"
- DIFFTEST $infile $outfile
- fi
- rm -f $outfile
-}
-
-# This is same as TOOLTEST() with comparing display output
-# from -v option
-#
-TOOLTESTV()
-{
- expect="$TESTDIR/$2-$1.tst"
- actual="$TESTDIR/`basename $2 .ddl`.out"
- actual_err="$TESTDIR/`basename $2 .ddl`.err"
-
- infile=$2
- outfile=out-$1.$2
- shift
- shift
-
- # Run test.
- TESTING $H5REPACK $@
- (
- cd $TESTDIR
- $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile
- ) >$actual 2>$actual_err
- RET=$?
- if [ $RET != 0 ] ; then
- echo "*FAILED*"
- nerrors="`expr $nerrors + 1`"
- else
- echo " PASSED"
- DIFFTEST $infile $outfile
- fi
-
- # display output compare
- STDOUT_FILTER $actual
- cat $actual_err >> $actual
-
- VERIFY output from $H5REPACK $@
- if cmp -s $expect $actual; then
- echo " PASSED"
- else
- echo "*FAILED*"
- echo " Expected result (*.tst) differs from actual result (*.out)"
- nerrors="`expr $nerrors + 1`"
- test yes = "$verbose" && diff -c $expect $actual |sed 's/^/ /'
- fi
-
- rm -f $actual $actual_err
- rm -f $outfile
-}
-
-# same as TOOLTESTV but filters error stack output and compares to an error file
-# Extract file name, line number, version and thread IDs because they may be different
-# ADD_H5ERR_MASK_TEST
-TOOLTESTM() {
-
- expect="$TESTDIR/$2-$1.tst"
- actual="$TESTDIR/`basename $2 .tst`.out"
- actual_err="$TESTDIR/`basename $2 .tst`.oerr"
- actual_sav=${actual}-sav
- actual_err_sav=${actual_err}-sav
-
- infile=$2
- outfile=out-$1.$2
- shift
- shift
-
- # Run test.
- TESTING $H5REPACK $@
- (
- cd $TESTDIR
- $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile
- ) >$actual 2>$actual_err
-
- # save actual and actual_err in case they are needed later.
- cp $actual $actual_sav
- cp $actual_err $actual_err_sav
-
- # Extract file name, line number, version and thread IDs because they may be different
- sed -e 's/thread [0-9]*/thread (IDs)/' -e 's/: .*\.c /: (file name) /' \
- -e 's/line [0-9]*/line (number)/' \
- -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \
- -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \
- -e 's/H5Eget_auto[1-2]*/H5Eget_auto(1 or 2)/' \
- -e 's/H5Eset_auto[1-2]*/H5Eset_auto(1 or 2)/' \
- $actual_err > $actual
-
- if [ ! -f $expect ]; then
- # Create the expect file if it doesn't yet exist.
- echo " CREATED"
- cp $actual $expect
- elif $CMP $expect $actual; then
- echo " PASSED"
- else
- echo "*FAILED*"
- echo " Expected result (*.tst) differs from actual result (*.out)"
- nerrors="`expr $nerrors + 1`"
- test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /'
- fi
-
- # Clean up output file
- if test -z "$HDF5_NOCLEANUP"; then
- rm -f $actual $actual_err $actual_sav $actual_err_sav
- fi
-
-}
-
-# This is same as TOOLTESTV() with comparing h5dump output
-# from -pH option
-#
-TOOLTEST_DUMP()
-{
- infile=$2
- outfile=out-$1.$2
- expect="$TESTDIR/$1.$2.ddl"
- actual="$TESTDIR/out-$1.$2.out"
- actual_err="$TESTDIR/out-$1.$2.err"
-
- shift
- shift
-
- # Run test.
- TESTING $H5REPACK $@
- (
- cd $TESTDIR
- $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile
- ) >$actual 2>$actual_err
- RET=$?
- if [ $RET != 0 ] ; then
- echo "*FAILED*"
- nerrors="`expr $nerrors + 1`"
- else
- echo " PASSED"
- VERIFY h5dump output $@
- (
- cd $TESTDIR
- $RUNSERIAL $H5DUMP_BIN -pH $outfile
- ) >$actual 2>$actual_err
- cat $actual_err >> $actual
-
- RET=$?
-
- fi
-
- if cmp -s $expect $actual; then
- echo " PASSED"
- else
- echo "*FAILED*"
- echo " Expected result (*.ddl) differs from actual result (*.out)"
- nerrors="`expr $nerrors + 1`"
- test yes = "$verbose" && diff -c $expect $actual |sed 's/^/ /'
- fi
-
- rm -f $actual $actual_err
- rm -f $outfile
-}
-
-# TOOLTEST_META:
-# Test metadata block size option.
-# Reason to create a function here is to localize all special steps related to
-# metadata block size option in one place. This is a quick solution. More
-# thought out solution needed when there is more time.
-#
-# $1: test input file
-# $2:$: metadata options (either "-M size" or "--metadata_block_size=size")
-#
-# Algorithm:
-# Run it once without the metadata option ($2-$);
-# Save the result output file;
-# Run it second time with the metadata option;
-# Verify the output file of second run is larger than the one of 1st run.
-TOOLTEST_META()
-{
- infile=$2
- outfile=out-$1.$2
- shift
- shift
-
- # Run test.
- TESTING $H5REPACK $@
- (
- cd $TESTDIR
- $RUNSERIAL $H5REPACK_BIN $infile $outfile
- )
- RET=$?
- if [ $RET != 0 ] ; then
- echo "*FAILED*"
- nerrors="`expr $nerrors + 1`"
- else
- echo " PASSED"
- DIFFTEST $infile $outfile
- fi
- # get the size of the first output file
- size1=`wc -c $TESTDIR/$outfile | cut -d' ' -f1`
-
- # 2nd run with metadata option
- # Run test.
- TESTING $H5REPACK $@
- (
- cd $TESTDIR
- $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile
- )
- RET=$?
- if [ $RET != 0 ] ; then
- echo "*FAILED*"
- nerrors="`expr $nerrors + 1`"
- else
- echo " PASSED"
- DIFFTEST $infile $outfile
- fi
- # get the size of the second output file
- size2=`wc -c $TESTDIR/$outfile | cut -d' ' -f1`
-
- # verify sizes.
- MESSAGE "Verify the sizes of both output files ($size1 vs $size2)"
- if [ $size1 -lt $size2 ]; then
- # pass
- echo " PASSED"
- else
- #fail
- echo "*FAILED*"
- nerrors="`expr $nerrors + 1`"
- fi
-
- rm -f $outfile
-}
-
-# ADD_HELP_TEST
-TOOLTEST_HELP() {
-
- expect="$TESTDIR/$1"
- actual="$TESTDIR/`basename $1 .txt`.out"
- actual_err="$TESTDIR/`basename $1 .txt`.err"
- shift
-
- # Run test.
- TESTING $H5REPACK $@
- (
- cd $TESTDIR
- $RUNSERIAL $H5REPACK_BIN "$@"
- ) >$actual 2>$actual_err
- cat $actual_err >> $actual
-
- if [ ! -f $expect ]; then
- # Create the expect data file if it doesn't yet exist.
- echo " CREATED"
- cp $actual $expect-CREATED
- elif cmp -s $expect $actual; then
- echo " PASSED"
- else
- echo "*FAILED*"
- echo " Expected output (*.txt) differs from actual output (*.out)"
- nerrors="`expr $nerrors + 1`"
- fi
-
- # Clean up output file
- if test -z "$HDF5_NOCLEANUP"; then
- rm -f $actual $actual_err
- fi
-
-}
-
-# This is different from $srcdir/../../bin/output_filter.sh
-STDOUT_FILTER() {
- result_file=$1
- tmp_file=/tmp/h5test_tmp_$$
- # Filter name of files.
- cp $result_file $tmp_file
- sed -e '/^Opening file/d' -e '/^Making file/d' \
- < $tmp_file > $result_file
- # cleanup
- rm -f $tmp_file
-}
-
-#
-# The tests
-# We use the files generated by h5repacktst
-# Each run generates "<file>.out.h5" and the tool h5diff is used to
-# compare the input and output files
-#
-# the tests are the same as the program h5repacktst, but run from the CLI
-#
-
-# See which filters are usable (and skip tests for filters we
-# don't have). Do this by searching H5pubconf.h to see which
-# filters are defined.
-
-# detect whether the encoder is present.
-USE_FILTER_SZIP_ENCODER="no";
-if test $USE_FILTER_SZIP = "yes"; then
-USE_FILTER_SZIP_ENCODER=`$RUNSERIAL $H5DETECTSZIP_BIN`
-fi
-
-##############################################################################
-### T H E T E S T S
-##############################################################################
-# prepare for test
-COPY_TESTFILES_TO_TESTDIR
-
-TOOLTEST_HELP h5repack-help.txt -h
-
-# copy files (these files have no filters)
-TOOLTEST fill h5repack_fill.h5
-TOOLTEST objs h5repack_objs.h5
-TOOLTEST attr h5repack_attr.h5
-TOOLTEST hlink h5repack_hlink.h5
-TOOLTEST layout h5repack_layout.h5
-TOOLTEST early h5repack_early.h5
-
-# nested 8bit enum in both deflated and non-deflated datafiles
-if [ $USE_FILTER_DEFLATE != "yes" ]; then
-TOOLTEST nested_8bit_enum h5repack_nested_8bit_enum.h5
-else
-TOOLTEST nested_8bit_enum h5repack_nested_8bit_enum_deflated.h5
-fi
-
-# use h5repack_layout.h5 to write some filters (this file has no filters)
-
-# gzip with individual object
-arg="h5repack_layout.h5 -f dset1:GZIP=1 -l dset1:CHUNK=20x10"
-if test $USE_FILTER_DEFLATE != "yes" ; then
- SKIP $arg
-else
- TOOLTEST gzip_individual $arg
-fi
-
-# gzip for all
-arg="h5repack_layout.h5 -f GZIP=1"
-if test $USE_FILTER_DEFLATE != "yes" ; then
- SKIP $arg
-else
- TOOLTEST gzip_all $arg
-fi
-
-# szip with individual object
-arg="h5repack_layout.h5 -f dset2:SZIP=8,EC -l dset2:CHUNK=20x10"
-if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" ; then
- SKIP $arg
-else
- TOOLTEST szip_individual $arg
-fi
-
-# szip for all
-arg="h5repack_layout.h5 -f SZIP=8,NN"
-if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" ; then
- SKIP $arg
-else
- TOOLTEST szip_all $arg
-fi
-
-# shuffle with individual object
-arg="h5repack_layout.h5 -f dset2:SHUF -l dset2:CHUNK=20x10"
-TOOLTEST shuffle_individual $arg
-
-
-# shuffle for all
-arg="h5repack_layout.h5 -f SHUF"
-TOOLTEST shuffle_all $arg
-
-# fletcher32 with individual object
-arg="h5repack_layout.h5 -f dset2:FLET -l dset2:CHUNK=20x10"
-TOOLTEST fletcher_individual $arg
-
-# fletcher32 for all
-arg="h5repack_layout.h5 -f FLET"
-TOOLTEST fletcher_all $arg
-
-# all filters
-arg="h5repack_layout.h5 -f dset2:SHUF -f dset2:FLET -f dset2:SZIP=8,NN -f dset2:GZIP=1 -l dset2:CHUNK=20x10"
-if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" -o $USE_FILTER_DEFLATE != "yes" ; then
- SKIP $arg
-else
- TOOLTEST all_filters $arg
-fi
-
-# verbose gzip with individual object
-arg="h5repack_filters.h5 -v -f /dset_deflate:GZIP=9"
-if test $USE_FILTER_DEFLATE != "yes" ; then
- SKIP $arg
-else
- # compare output
- TOOLTESTV gzip_verbose_filters $arg
-fi
-
-###########################################################
-# the following tests assume the input files have filters
-###########################################################
-
-# szip copy
-arg="h5repack_szip.h5"
-if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" ; then
- SKIP $arg
-else
- TOOLTEST szip_copy $arg
-fi
-
-# szip remove
-arg="h5repack_szip.h5 --filter=dset_szip:NONE"
-if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" ; then
- SKIP $arg
-else
- TOOLTEST szip_remove $arg
-fi
-
-# deflate copy
-arg="h5repack_deflate.h5"
-if test $USE_FILTER_DEFLATE != "yes" ; then
- SKIP $arg
-else
- TOOLTEST deflate_copy $arg
-fi
-
-# deflate remove
-arg="h5repack_deflate.h5 -f dset_deflate:NONE"
-if test $USE_FILTER_DEFLATE != "yes" ; then
- SKIP $arg
-else
- TOOLTEST deflate_remove $arg
-fi
-
-# shuffle copy
-arg="h5repack_shuffle.h5"
-TOOLTEST shuffle_copy $arg
-
-# shuffle remove
-arg="h5repack_shuffle.h5 -f dset_shuffle:NONE"
-TOOLTEST shuffle_remove $arg
-
-# fletcher32 copy
-arg="h5repack_fletcher.h5"
-TOOLTEST fletcher_copy $arg
-
-# fletcher32 remove
-arg="h5repack_fletcher.h5 -f dset_fletcher32:NONE"
-TOOLTEST fletcher_remove $arg
-
-# nbit copy
-arg="h5repack_nbit.h5"
-TOOLTEST nbit_copy $arg
-
-# nbit remove
-arg="h5repack_nbit.h5 -f dset_nbit:NONE"
-TOOLTEST nbit_remove $arg
-
-# nbit add
-arg="h5repack_nbit.h5 -f dset_int31:NBIT"
-TOOLTEST nbit_add $arg
-
-# scaleoffset copy
-arg="h5repack_soffset.h5"
-TOOLTEST scale_copy $arg
-
-# scaleoffset add
-arg="h5repack_soffset.h5 -f dset_none:SOFF=31,IN"
-TOOLTEST scale_add $arg
-
-# scaleoffset remove
-arg="h5repack_soffset.h5 -f dset_scaleoffset:NONE"
-TOOLTEST scale_remove $arg
-
-# remove all filters
-arg="h5repack_filters.h5 -f NONE"
-if test $USE_FILTER_DEFLATE != "yes" -o $USE_FILTER_SZIP != "yes" -o $USE_FILTER_SZIP_ENCODER != "yes" ; then
- SKIP $arg
-else
- TOOLTEST remove_all $arg
-fi
-
-#filter conversions
-
-arg="h5repack_deflate.h5 -f dset_deflate:SZIP=8,NN"
-if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" -o $USE_FILTER_DEFLATE != "yes" ; then
- SKIP $arg
-else
- TOOLTEST deflate_convert $arg
-fi
-
-arg="h5repack_szip.h5 -f dset_szip:GZIP=1"
-if test $USE_FILTER_SZIP != "yes" -o $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_DEFLATE != "yes" ; then
- SKIP $arg
-else
- TOOLTEST szip_convert $arg
-fi
-
-
-#limit
-arg="h5repack_layout.h5 -f GZIP=1 -m 1024"
-if test $USE_FILTER_DEFLATE != "yes" ; then
- SKIP $arg
-else
- TOOLTEST_DUMP deflate_limit $arg
-fi
-
-#file
-arg="h5repack_layout.h5 -e h5repack.info"
-if test $USE_FILTER_DEFLATE != "yes" ; then
- SKIP $arg
-else
- TOOLTEST deflate_file $arg
-fi
-
-#########################################################
-# layout options (these files have no filters)
-#########################################################
-VERIFY_LAYOUT_DSET dset2_chunk_20x10 h5repack_layout.h5 dset2 CHUNKED --layout dset2:CHUNK=20x10
-
-VERIFY_LAYOUT_ALL chunk_20x10 h5repack_layout.h5 CHUNKED -l CHUNK=20x10
-
-VERIFY_LAYOUT_DSET dset2_conti h5repack_layout.h5 dset2 CONTIGUOUS -l dset2:CONTI
-
-VERIFY_LAYOUT_ALL conti h5repack_layout.h5 CONTIGUOUS -l CONTI
-
-VERIFY_LAYOUT_DSET dset2_compa h5repack_layout.h5 dset2 COMPACT -l dset2:COMPA
-
-VERIFY_LAYOUT_ALL compa h5repack_layout.h5 COMPACT -l COMPA
-
-TOOLTESTM dset2_chunk_20x10-errstk h5repack_layout.h5 --layout=dset2:CHUNK=20x10x5 --enable-error-stack
-
-################################################################
-# layout conversions (file has no filters)
-###############################################################
-
-VERIFY_LAYOUT_DSET dset_compa_conti h5repack_layout.h5 dset_compact CONTIGUOUS -l dset_compact:CONTI
-
-VERIFY_LAYOUT_DSET dset_compa_chunk h5repack_layout.h5 dset_compact CHUNKED -l dset_compact:CHUNK=2x5
-
-VERIFY_LAYOUT_DSET dset_compa_compa h5repack_layout.h5 dset_compact COMPACT -l dset_compact:COMPA
-
-VERIFY_LAYOUT_DSET dset_conti_compa h5repack_layout.h5 dset_contiguous COMPACT -l dset_contiguous:COMPA
-
-VERIFY_LAYOUT_DSET dset_conti_chunk h5repack_layout.h5 dset_contiguous CHUNKED -l dset_contiguous:CHUNK=3x6
-
-VERIFY_LAYOUT_DSET dset_conti_conti h5repack_layout.h5 dset_contiguous CONTIGUOUS -l dset_contiguous:CONTI
-
-VERIFY_LAYOUT_DSET chunk_compa h5repack_layout.h5 dset_chunk COMPACT -l dset_chunk:COMPA
-
-VERIFY_LAYOUT_DSET chunk_conti h5repack_layout.h5 dset_chunk CONTIGUOUS -l dset_chunk:CONTI
-
-VERIFY_LAYOUT_DSET chunk_18x13 h5repack_layout.h5 dset_chunk CHUNKED -l dset_chunk:CHUNK=18x13
-
-# test convert small size dataset ( < 1k) to compact layout without -m
-VERIFY_LAYOUT_DSET contig_small_compa h5repack_layout2.h5 contig_small COMPACT -l contig_small:COMPA
-
-VERIFY_LAYOUT_DSET contig_small_fixed_compa h5repack_layout2.h5 chunked_small_fixed COMPACT -l chunked_small_fixed:COMPA
-
-#---------------------------------------------------------------------------
-# Test file contains chunked datasets (need multiple dsets) with
-# unlimited max dims. (HDFFV-7933)
-# Use first dset to test.
-#---------------------------------------------------------------------------
-# chunk to chunk - specify chunk dim bigger than any current dim
-VERIFY_LAYOUT_DSET chunk2chunk h5repack_layout3.h5 chunk_unlimit1 CHUNK -l chunk_unlimit1:CHUNK=100x300
-
-# chunk to contiguous
-VERIFY_LAYOUT_DSET chunk2conti h5repack_layout3.h5 chunk_unlimit1 CONTI -l chunk_unlimit1:CONTI
-
-# chunk to compact - convert big dataset (should be > 64k) for this purpose,
-# should remain as original layout (chunk)
-VERIFY_LAYOUT_DSET chunk2compa h5repack_layout3.h5 chunk_unlimit1 CHUNK -l chunk_unlimit1:COMPA
-
-#--------------------------------------------------------------------------
-# Test -f for some specific cases. Chunked dataset with unlimited max dims.
-# (HDFFV-8012)
-#--------------------------------------------------------------------------
-# - should not fail
-# - should not change max dims from unlimit
-
-# chunk dim is bigger than dataset dim. ( dset size < 64k )
-VERIFY_LAYOUT_DSET error1 h5repack_layout3.h5 chunk_unlimit1 H5S_UNLIMITED -f chunk_unlimit1:NONE
-# chunk dim is bigger than dataset dim. ( dset size > 64k )
-VERIFY_LAYOUT_DSET error2 h5repack_layout3.h5 chunk_unlimit2 H5S_UNLIMITED -f chunk_unlimit2:NONE
-
-# chunk dims are smaller than dataset dims. ( dset size < 64k )
-#TOOLTEST_MAIN h5repack_layout3.h5 -f chunk_unlimit3:NONE
-VERIFY_LAYOUT_DSET error3 h5repack_layout3.h5 chunk_unlimit3 H5S_UNLIMITED -f chunk_unlimit3:NONE
-
-# file input - should not fail
-TOOLTEST error4 h5repack_layout3.h5 -f NONE
-
-#--------------------------------------------------------------------------
-# Test base: Convert CHUNK to CONTI for a chunked dataset with small dataset
-# (dset size < 64K) and with unlimited max dims on a condition as follow.
-# (HDFFV-8214)
-#--------------------------------------------------------------------------
-
-# chunk dim is bigger than dataset dim. should succeed.
-VERIFY_LAYOUT_DSET ckdim_biger h5repack_layout3.h5 chunk_unlimit2 CONTI -l chunk_unlimit2:CONTI
-# chunk dim is smaller than dataset dim. should succeed.
-VERIFY_LAYOUT_DSET ckdim_smaller h5repack_layout3.h5 chunk_unlimit3 CONTI -l chunk_unlimit3:CONTI
-
-
-# Native option
-# Do not use FILE1, as the named dtype will be converted to native, and h5diff will
-# report a difference.
-TOOLTEST native_fill h5repack_fill.h5 -n
-TOOLTEST native_attr h5repack_attr.h5 -n
-
-
-# latest file format with long switches. use FILE4=h5repack_layout.h5 (no filters)
-arg="h5repack_layout.h5 --layout CHUNK=20x10 --filter GZIP=1 --minimum=10 --native --latest --compact=8 --indexed=6 --ssize=8[:dtype]"
-if test $USE_FILTER_DEFLATE != "yes" ; then
- SKIP $arg
-else
- VERIFY_LAYOUT_ALL layout_long_switches h5repack_layout.h5 CHUNKED --layout CHUNK=20x10 --filter GZIP=1 --minimum=10 --native --latest --compact=8 --indexed=6 --ssize=8[:dtype]
-fi
-
-# latest file format with short switches. use FILE4=h5repack_layout.h5 (no filters)
-arg="h5repack_layout.h5 -l CHUNK=20x10 -f GZIP=1 -m 10 -n -L -c 8 -d 6 -s 8[:dtype]"
-if test $USE_FILTER_DEFLATE != "yes" ; then
- SKIP $arg
-else
- VERIFY_LAYOUT_ALL layout_short_switches h5repack_layout.h5 CHUNKED -l CHUNK=20x10 -f GZIP=1 -m 10 -n -L -c 8 -d 6 -s 8[:dtype]
-fi
-
-# several global filters
-
-arg="h5repack_layout.h5 --filter GZIP=1 --filter SHUF"
-if test $USE_FILTER_DEFLATE != "yes" ; then
- SKIP $arg
-else
- TOOLTEST global_filters $arg
-fi
-
-# syntax of -i infile -o outfile
-# latest file format with short switches. use FILE4=h5repack_layout.h5 (no filters)
-arg="h5repack_layout.h5 -l CHUNK=20x10 -f GZIP=1 -m 10 -n -L -c 8 -d 6 -s 8[:dtype]"
-if test $USE_FILTER_DEFLATE != "yes" ; then
- SKIP $arg
-else
- TOOLTEST0 old_style_layout_short_switches $arg
-fi
-
-# add a userblock to file
-arg="h5repack_objs.h5 -u ublock.bin -b 2048"
-TOOLTEST add_userblock $arg
-
-# add alignment
-arg="h5repack_objs.h5 -t 1 -a 1 "
-TOOLTEST add_alignment $arg
-
-# Check repacking file with old version of layout message (should get upgraded
-# to new version and be readable, etc.)
-TOOLTEST upgrade_layout h5repack_layouto.h5
-
-# test for datum size > H5TOOLS_MALLOCSIZE
-TOOLTEST gt_mallocsize h5repack_objs.h5 -f GZIP=1
-
-# Check repacking file with committed datatypes in odd configurations
-TOOLTEST committed_dt h5repack_named_dtypes.h5
-
-# tests family driver (file is located in common testfiles folder, uses TOOLTEST1
-TOOLTEST1 family tfamily%05d.h5
-
-# test various references (bug 1814 and 1726)
-TOOLTEST bug1814 h5repack_refs.h5
-
-# test attribute with various references (bug1797 / HDFFV-5932)
-# the references in attribute of compund or vlen datatype
-TOOLTEST HDFFV-5932 h5repack_attr_refs.h5
-
-# Add test for memory leak in attirbute. This test is verified by CTEST.
-# 1. leak from vlen string
-# 2. leak from compound type without reference member
-# (HDFFV-7840, )
-# Note: this test is experimental for sharing test file among tools
-TOOLTEST HDFFV-7840 h5diff_attr1.h5
-
-# tests for metadata block size option
-TOOLTEST_META meta_short h5repack_layout.h5 -M 8192
-TOOLTEST_META meta_long h5repack_layout.h5 --metadata_block_size=8192
-
-# VDS tests
-
-################################################################
-# layout conversions
-###############################################################
-if test $USE_FILTER_DEFLATE != "yes" ; then
- SKIP vds_dset_chunk_20x10x5
-else
- VERIFY_LAYOUT_VDS vds_dset_chunk_20x10x5 1_vds.h5 vds_dset CHUNKED --layout vds_dset:CHUNK=20x10x5
-fi
-
-if test $USE_FILTER_DEFLATE != "yes" ; then
- SKIP vds_chunk2x5x8
-else
- VERIFY_LAYOUT_VDS vds_chunk2x5x8 3_1_vds.h5 vds_dset CHUNKED -l vds_dset:CHUNK=2x5x8
-fi
-
-if test $USE_FILTER_DEFLATE != "yes" ; then
- SKIP vds_chunk3x6x9
-else
- VERIFY_LAYOUT_VDS vds_chunk3x6x9 2_vds.h5 vds_dset CHUNKED -l vds_dset:CHUNK=3x6x9
-fi
-
-if test $USE_FILTER_DEFLATE != "yes" ; then
- SKIP vds_compa 4_vds.h5
-else
- VERIFY_LAYOUT_VDS vds_compa 4_vds.h5 vds_dset COMPACT -l vds_dset:COMPA
-fi
-
-if test $USE_FILTER_DEFLATE != "yes" ; then
- SKIP vds_conti 4_vds.h5
-else
- VERIFY_LAYOUT_VDS vds_conti 4_vds.h5 vds_dset CONTIGUOUS -l vds_dset:CONTI
-fi
-
-# Clean up temporary files/directories
-CLEAN_TESTFILES_AND_TESTDIR
-
-if test $nerrors -eq 0 ; then
- echo "All $TESTNAME tests passed."
- exit $EXIT_SUCCESS
-else
- echo "$TESTNAME tests failed with $nerrors errors."
- exit $EXIT_FAILURE
-fi
-
diff --git a/tools/h5repack/h5repack_copy.c b/tools/h5repack/h5repack_copy.c
deleted file mode 100644
index 547f61a..0000000
--- a/tools/h5repack/h5repack_copy.c
+++ /dev/null
@@ -1,1581 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by The HDF Group. *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from help@hdfgroup.org. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#include "h5repack.h"
-#include "h5tools.h"
-#include "h5tools_utils.h"
-
-/*-------------------------------------------------------------------------
- * typedefs
- *-------------------------------------------------------------------------
- */
-
-/*-------------------------------------------------------------------------
- * globals
- *-------------------------------------------------------------------------
- */
-
-/*-------------------------------------------------------------------------
- * macros
- *-------------------------------------------------------------------------
- */
-
-/* size of buffer/# of bytes to xfer at a time when copying userblock */
-#define USERBLOCK_XFER_SIZE 512
-
-/* check H5Dread()/H5Dwrite() error, e.g. memory allocation error inside the library. */
-#define CHECK_H5DRW_ERROR(_fun, _fail, _did, _mtid, _msid, _fsid, _pid, _buf) { \
- H5E_BEGIN_TRY { \
- if(_fun(_did, _mtid, _msid, _fsid, _pid, _buf) < 0) { \
- hid_t _err_num = 0; \
- char _msg[80]; \
- H5Ewalk2(H5E_DEFAULT, H5E_WALK_DOWNWARD, walk_error_callback, &_err_num); \
- H5Eget_msg(_err_num, NULL, _msg, (size_t)80); \
- error_msg("%s %s -- %s\n", #_fun, "failed", _msg); \
- HGOTO_DONE(_fail) \
- } \
- } H5E_END_TRY; \
-}
-
-/*-------------------------------------------------------------------------
- * local functions
- *-------------------------------------------------------------------------
- */
-static int Get_hyperslab(hid_t dcpl_id, int rank_dset, hsize_t dims_dset[],
- size_t size_datum, hsize_t dims_hslab[], hsize_t * hslab_nbytes_p);
-static void print_dataset_info(hid_t dcpl_id, char *objname, double per, int pr);
-static int do_copy_objects(hid_t fidin, hid_t fidout, trav_table_t *travt,
- pack_opt_t *options);
-static int copy_user_block(const char *infile, const char *outfile,
- hsize_t size);
-#if defined (H5REPACK_DEBUG_USER_BLOCK)
-static void print_user_block(const char *filename, hid_t fid);
-#endif
-static herr_t walk_error_callback(unsigned n, const H5E_error2_t *err_desc, void *udata);
-
-/* get the major number from the error stack. */
-static herr_t walk_error_callback(H5_ATTR_UNUSED unsigned n, const H5E_error2_t *err_desc, void *udata) {
- if (err_desc)
- *((hid_t *) udata) = err_desc->maj_num;
-
- return 0;
-}
-
-/*-------------------------------------------------------------------------
- * Function: copy_objects
- *
- * Purpose: duplicate all HDF5 objects in the file
- *
- * Return: 0, ok, -1 no
- *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
- *
- * Date: October, 23, 2003
- *
- * Modification:
- * Peter Cao, June 13, 2007
- * Add "-L, --latest" and other options to pack a file with the latest file format
- *
- * Peter Cao, September 25, 2007
- * Copy user block when repacking a file
- *
- * Pedro Vicente, August 20, 2008
- * Add a user block to file if requested
- *
- *-------------------------------------------------------------------------
- */
-
-int copy_objects(const char* fnamein, const char* fnameout, pack_opt_t *options)
-{
- int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */
- hid_t fidin;
- hid_t fidout = -1;
- trav_table_t *travt = NULL;
- hsize_t ub_size = 0; /* size of user block */
- hid_t fcpl = H5P_DEFAULT; /* file creation property list ID */
- hid_t fapl = H5P_DEFAULT; /* file access property list ID */
-
- /*-------------------------------------------------------------------------
- * open input file
- *-------------------------------------------------------------------------
- */
- if ((fidin = h5tools_fopen(fnamein, H5F_ACC_RDONLY, H5P_DEFAULT, NULL, NULL, (size_t) 0)) < 0) {
- error_msg("<%s>: %s\n", fnamein, H5FOPENERROR);
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
-
- /* get user block size and file space strategy/threshold */
- {
- hid_t fcpl_in; /* file creation property list ID for input file */
-
- if ((fcpl_in = H5Fget_create_plist(fidin)) < 0) {
- error_msg("failed to retrieve file creation property list\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
-
- if (H5Pget_userblock(fcpl_in, &ub_size) < 0) {
- error_msg("failed to retrieve userblock size\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
-
- if (!options->fs_strategy) {
- if (H5Pget_file_space(fcpl_in, &options->fs_strategy, NULL) < 0) {
- error_msg("failed to retrieve file space strategy\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
- }
-
- if (!options->fs_threshold) {
- if (H5Pget_file_space(fcpl_in, NULL, &options->fs_threshold) < 0) {
- error_msg("failed to retrieve file space threshold\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
- }
-
- if (H5Pclose(fcpl_in) < 0) {
- error_msg("failed to close property list\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
- }
-
- /* Check if we need to create a non-default file creation property list */
- if (options->latest || ub_size > 0) {
- /* Create file creation property list */
- if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) {
- error_msg("fail to create a file creation property list\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
-
- if (ub_size > 0) {
- if (H5Pset_userblock(fcpl, ub_size) < 0) {
- error_msg("failed to set non-default userblock size\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
- }
-
- if (options->latest) {
- unsigned i = 0, nindex = 0, mesg_type_flags[5], min_mesg_sizes[5];
-
- /* Adjust group creation parameters for root group */
- /* (So that it is created in "dense storage" form) */
- if (H5Pset_link_phase_change(fcpl, (unsigned) options->grp_compact,
- (unsigned) options->grp_indexed) < 0) {
- error_msg("fail to adjust group creation parameters for root group\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
-
- for (i = 0; i < 5; i++) {
- if (options->msg_size[i] > 0) {
- switch (i) {
- case 0:
- mesg_type_flags[nindex] = H5O_SHMESG_SDSPACE_FLAG;
- break;
-
- case 1:
- mesg_type_flags[nindex] = H5O_SHMESG_DTYPE_FLAG;
- break;
-
- case 2:
- mesg_type_flags[nindex] = H5O_SHMESG_FILL_FLAG;
- break;
-
- case 3:
- mesg_type_flags[nindex] = H5O_SHMESG_PLINE_FLAG;
- break;
-
- case 4:
- mesg_type_flags[nindex] = H5O_SHMESG_ATTR_FLAG;
- break;
-
- default:
- break;
- } /* end switch */
- min_mesg_sizes[nindex] = (unsigned) options->msg_size[i];
-
- nindex++;
- } /* end if */
- } /* end for */
-
- if (nindex > 0) {
- if (H5Pset_shared_mesg_nindexes(fcpl, nindex) < 0) {
- error_msg("fail to set the number of shared object header message indexes\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
-
- /* msg_size[0]=dataspace, 1=datatype, 2=file value, 3=filter pipleline, 4=attribute */
- for (i = 0; i < (nindex - 1); i++) {
- if (H5Pset_shared_mesg_index(fcpl, i, mesg_type_flags[i], min_mesg_sizes[i]) < 0) {
- error_msg("fail to configure the specified shared object header message index\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- } /* end if */
- } /* end for */
- } /* if (nindex>0) */
-
- /* Create file access property list */
- if ((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) {
- error_msg("Could not create file access property list\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- } /* end if */
-
- if (H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0) {
- error_msg("Could not set property for using latest version of the format\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- } /* end if */
- } /* end if */
- } /* end if */
-#if defined (H5REPACK_DEBUG_USER_BLOCK)
-print_user_block(fnamein, fidin);
-#endif
-
- /*-------------------------------------------------------------------------
- * set the new user userblock options in the FCPL (before H5Fcreate )
- *-------------------------------------------------------------------------
- */
- if (options->ublock_size > 0) {
- /* either use the FCPL already created or create a new one */
- if (fcpl == H5P_DEFAULT) {
- /* create a file creation property list */
- if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) {
- error_msg("fail to create a file creation property list\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
- }
-
- /* set user block size */
- if (H5Pset_userblock(fcpl, options->ublock_size) < 0) {
- error_msg("failed to set userblock size\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
- }
-
- /*-------------------------------------------------------------------------
- * set alignment options
- *-------------------------------------------------------------------------
- */
- if (options->alignment > 0) {
- /* either use the FAPL already created or create a new one */
- if (fapl == H5P_DEFAULT) {
- /* create a file access property list */
- if ((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) {
- error_msg("Could not create file access property list\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
- }
-
- if (H5Pset_alignment(fapl, options->threshold, options->alignment) < 0) {
- error_msg("failed to set alignment\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
- }
-
- /*-------------------------------------------------------------------------
- * set metadata block size option
- *-------------------------------------------------------------------------
- */
- if (options->meta_block_size > 0) {
- /* either use the FAPL already created or create a new one */
- if (fapl == H5P_DEFAULT) {
- /* create a file access property list */
- if ((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) {
- error_msg("Could not create file access property list\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
- }
-
- if (H5Pset_meta_block_size(fapl, options->meta_block_size) < 0) {
- error_msg("failed to set metadata block size\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
- }
-
- /*-------------------------------------------------------------------------
- * set free-space strategy options
- *-------------------------------------------------------------------------
- */
-
- /* either use the FCPL already created or create a new one */
- if (fcpl == H5P_DEFAULT) {
- /* create a file creation property list */
- if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) {
- error_msg("fail to create a file creation property list\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
- }
-
- /* set file space strategy and free space threshold */
- if (H5Pset_file_space(fcpl, options->fs_strategy, options->fs_threshold) < 0) {
- error_msg("failed to set file space strategy & threshold \n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
-
- /*-------------------------------------------------------------------------
- * create the output file
- *-------------------------------------------------------------------------
- */
- if (options->verbose)
- printf("Making file <%s>...\n", fnameout);
-
- if ((fidout = H5Fcreate(fnameout, H5F_ACC_TRUNC, fcpl, fapl)) < 0) {
- error_msg("<%s>: Could not create file\n", fnameout);
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
-
- /*-------------------------------------------------------------------------
- * write a new user block if requested
- *-------------------------------------------------------------------------
- */
- if (options->ublock_size > 0) {
- if (copy_user_block(options->ublock_filename, fnameout, options->ublock_size) < 0) {
- error_msg("Could not copy user block. Exiting...\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
- }
-
- /*-------------------------------------------------------------------------
- * get list of objects
- *-------------------------------------------------------------------------
- */
-
- /* init table */
- trav_table_init(&travt);
-
- /* get the list of objects in the file */
- if (h5trav_gettable(fidin, travt) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
-
- /*-------------------------------------------------------------------------
- * do the copy
- *-------------------------------------------------------------------------
- */
- if (do_copy_objects(fidin, fidout, travt, options) < 0) {
- error_msg("<%s>: Could not copy data to: %s\n", fnamein, fnameout);
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- } /* end if */
-
- /*-------------------------------------------------------------------------
- * do the copy of referenced objects
- * and create hard links
- *-------------------------------------------------------------------------
- */
- if (do_copy_refobjs(fidin, fidout, travt, options) < 0) {
- printf("h5repack: <%s>: Could not copy data to: %s\n", fnamein, fnameout);
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
-
- /*-------------------------------------------------------------------------
- * close
- *-------------------------------------------------------------------------
- */
-
- if (fapl > 0)
- H5Pclose(fapl);
-
- if (fcpl > 0)
- H5Pclose(fcpl);
-
- H5Fclose(fidin);
- H5Fclose(fidout);
-
- /* free table */
- trav_table_free(travt);
- travt = NULL;
-
- /*-------------------------------------------------------------------------
- * write only the input file user block if there is no user block file input
- *-------------------------------------------------------------------------
- */
-
- if (ub_size > 0 && options->ublock_size == 0) {
- if (copy_user_block(fnamein, fnameout, ub_size) < 0) {
- error_msg("Could not copy user block. Exiting...\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
- }
-
- return 0;
-
- /*-------------------------------------------------------------------------
- * out
- *-------------------------------------------------------------------------
- */
-
-done:
- H5E_BEGIN_TRY {
- H5Pclose(fapl);
- H5Pclose(fcpl);
- H5Fclose(fidin);
- H5Fclose(fidout);
- } H5E_END_TRY;
- if (travt)
- trav_table_free(travt);
-
- return ret_value;
-}
-
-/*-------------------------------------------------------------------------
- * Function: Get_hyperslab
- *
- * Purpose: Calulate a hyperslab from a dataset for higher performance.
- * The size of hyperslab is limitted by H5TOOLS_BUFSIZE.
- * Return the hyperslab dimentions and size in byte.
- *
- * Return: 0 - SUCCEED, -1 FAILED
- *
- * Parameters:
- * dcpl_id : [IN] dataset creation property.
- * rank_dset : [IN] dataset rank
- * dims_dset[] : [IN] dataset dimentions
- * size_datum : [IN] size of a data element in byte
- * dims_hslab[] : [OUT] calculated hyperslab dimentions
- * * hslab_nbytes_p : [OUT] total byte of the hyperslab
- *
- * Programmer: Jonathan Kim
- * Date: Feburary, 2012
- * Update:
- * The hyperslab calucation would be depend on if the dataset is chunked
- * or not.
- *
- * There care 3 conditions to cover:
- * 1. If chunked and a chunk fits in buffer, each chunk would be a unit of
- * collection and the boundary would be dataset's dims.
- * 2. If chunked but a chunk doesn't fit in buffer, each data element would
- * be a unit of collection and the boundary would be the chunk itself.
- * 3. If not chunked, each data element would be a unit of collection and
- * the boundary would be dataset's dims.
- *
- * The calulation starts from the last dimention (h5dump dims output).
- *
- * Note:
- * Added for JIRA HDFFV-7862.
- *-----------------------------------------*/
-
-int Get_hyperslab(hid_t dcpl_id, int rank_dset, hsize_t dims_dset[],
- size_t size_datum, hsize_t dims_hslab[], hsize_t * hslab_nbytes_p)
-{
- int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */
- int k;
- H5D_layout_t dset_layout;
- int rank_chunk;
- hsize_t dims_chunk[H5S_MAX_RANK];
- hsize_t size_chunk = 1;
- hsize_t nchunk_fit; /* number of chunks that fits in hyperslab buffer (H5TOOLS_BUFSIZE) */
- hsize_t ndatum_fit; /* number of dataum that fits in hyperslab buffer (H5TOOLS_BUFSIZE) */
- hsize_t chunk_dims_map[H5S_MAX_RANK]; /* mapped chunk dimentions */
- hsize_t hs_dims_map[H5S_MAX_RANK]; /* mapped hyperslab dimentions */
- hsize_t hslab_nbytes; /* size of hyperslab in byte */
-
- /* init to set as size of a data element */
- hslab_nbytes = size_datum;
-
- /* get layout of dataset */
- dset_layout = H5Pget_layout(dcpl_id);
-
- /* if dataset is chunked */
- if (dset_layout == H5D_CHUNKED) {
- /* get chunk dims */
- rank_chunk = H5Pget_chunk(dcpl_id, rank_dset, dims_chunk);
- if (rank_chunk < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
-
- for (k = rank_dset; k > 0; --k)
- size_chunk *= dims_chunk[k - 1];
-
- /* figure out how many chunks can fit in the hyperslab buffer */
- nchunk_fit = (H5TOOLS_BUFSIZE / size_datum) / size_chunk;
-
- /* 1. if a chunk fit in hyperslab buffer */
- if (nchunk_fit >= 1) {
- /* Calulate a hyperslab that contains as many chunks that can fit
- * in hyperslab buffer. Hyperslab will be increased starting from
- * the last dimention of the dataset (see h5dump's dims output).
- * The calculation boundary is dataset dims.
- * In the loop, used mapping from a datum to a chunk to figure out
- * chunk based hyperslab.
- */
- for (k = rank_dset; k > 0; --k) {
- /* map dataset dimentions with a chunk dims */
- chunk_dims_map[k - 1] = dims_dset[k - 1] / dims_chunk[k - 1];
-
- /* if reminder exist, increse by 1 to cover partial edge chunks */
- if (dims_dset[k - 1] % dims_chunk[k - 1] > 0)
- chunk_dims_map[k - 1]++;
-
- /* get mapped hyperslab dims */
- hs_dims_map[k - 1] = MIN (nchunk_fit, chunk_dims_map[k-1]);
-
- /* prepare next round */
- nchunk_fit = nchunk_fit / chunk_dims_map[k - 1];
- /* if a chunk is bigger than the rest of buffer */
- if (nchunk_fit == 0)
- nchunk_fit = 1;
-
- /* get hyperslab dimentions as unmapping to actual size */
- dims_hslab[k - 1] = MIN( (hs_dims_map[k-1] * dims_chunk[k-1]), dims_dset[k-1]);
-
- /* calculate total size for the hyperslab */
- hslab_nbytes *= dims_hslab[k - 1];
- }
- }
- /* 2. if a chunk is bigger than hyperslab buffer */
- else {
- /* Calulate a hyperslab that contains as many data elements that
- * can fit in hyperslab buffer. Hyperslab will be increased
- * starting from the last dimention of the chunk (see h5dump's dims
- * output).
- * The calculation boundary is a chunk dims.
- */
- for (k = rank_dset; k > 0; --k) {
- ndatum_fit = H5TOOLS_BUFSIZE / hslab_nbytes;
-
- /* if a datum is bigger than rest of buffer */
- if (ndatum_fit == 0)
- ndatum_fit = 1;
- /* get hyperslab dimentions within a chunk boundary */
- dims_hslab[k - 1] = MIN (dims_chunk[k-1], ndatum_fit);
-
- /* calculate total size for the hyperslab */
- hslab_nbytes *= dims_hslab[k - 1];
-
- if (hslab_nbytes <= 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
- }
- }
- /* 3. if dataset is not chunked */
- else {
- /* Calulate a hyperslab that contains as many data elements that can
- * fit in hyperslab buffer. Hyperslab will be increased starting from
- * the last dimention of the dataset (see h5dump's dims output).
- * The calculation boundary is dataset dims.
- */
- for (k = rank_dset; k > 0; --k) {
- ndatum_fit = H5TOOLS_BUFSIZE / hslab_nbytes;
-
- /* if a datum is bigger than rest of buffer */
- if (ndatum_fit == 0)
- ndatum_fit = 1;
- /* get hyperslab dimentions within dataset boundary */
- dims_hslab[k - 1] = MIN(dims_dset[k - 1], ndatum_fit);
-
- /* calculate total size for the hyperslab */
- hslab_nbytes *= dims_hslab[k - 1];
-
- if (hslab_nbytes <= 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- }
- }
-
- /* pass out the hyperslab size*/
- *hslab_nbytes_p = hslab_nbytes;
-
-done:
- return ret_value;
-}
-
-/*-------------------------------------------------------------------------
- * Function: do_copy_objects
- *
- * Purpose: duplicate all HDF5 objects in the file
- *
- * Return: 0, ok, -1 no
- *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
- *
- * Date: October, 23, 2003
- *
- * Modifications:
- *
- * July 2004: Introduced the extra EC or NN option for SZIP
- *
- * December 2004: Added a check for H5Dcreate; if the dataset cannot be created
- * with the requested filter, use the input one
- *
- * October 2006: Read/write using the file type by default.
- *
- * October 2006: Read by hyperslabs for big datasets.
- *
- * A threshold of H5TOOLS_MALLOCSIZE (128 MB) is the limit upon which I/O hyperslab is done
- * i.e., if the memory needed to read a dataset is greater than this limit,
- * then hyperslab I/O is done instead of one operation I/O
- * For each dataset, the memory needed is calculated according to
- *
- * memory needed = number of elements * size of each element
- *
- * if the memory needed is lower than H5TOOLS_MALLOCSIZE, then the following operations
- * are done
- *
- * H5Dread( input_dataset1 )
- * H5Dread( input_dataset2 )
- *
- * with all elements in the datasets selected. If the memory needed is greater than
- * H5TOOLS_MALLOCSIZE, then the following operations are done instead:
- *
- * a strip mine is defined for each dimension k (a strip mine is defined as a
- * hyperslab whose size is memory manageable) according to the formula
- *
- * (1) strip_mine_size[k ] = MIN(dimension[k ], H5TOOLS_BUFSIZE / size of memory type)
- *
- * where H5TOOLS_BUFSIZE is a constant currently defined as 1MB. This formula assures
- * that for small datasets (small relative to the H5TOOLS_BUFSIZE constant), the strip
- * mine size k is simply defined as its dimension k, but for larger datasets the
- * hyperslab size is still memory manageable.
- * a cycle is done until the number of elements in the dataset is reached. In each
- * iteration, two parameters are defined for the function H5Sselect_hyperslab,
- * the start and size of each hyperslab, according to
- *
- * (2) hyperslab_size [k] = MIN(dimension[k] - hyperslab_offset[k], strip_mine_size [k])
- *
- * where hyperslab_offset [k] is initially set to zero, and later incremented in
- * hyperslab_size[k] offsets. The reason for the operation
- *
- * dimension[k] - hyperslab_offset[k]
- *
- * in (2) is that, when using the strip mine size, it assures that the "remaining" part
- * of the dataset that does not fill an entire strip mine is processed.
- *
- * November 2006: Use H5Ocopy in the copy of objects. The logic for using
- * H5Ocopy or not is if a change of filters or layout is requested by the user
- * then use read/write else use H5Ocopy.
- *
- * May, 1, 2008: Add a printing of the compression ratio of old size / new size
- *
- * Feburary 2012: improve Read/Write by hyperslabs for big datasets.
- * Programmer: Jonathan Kim
- *
- * A threshold of H5TOOLS_MALLOCSIZE is the limit upon which I/O hyperslab is done
- * i.e., if the memory needed to read a dataset is greater than this limit,
- * then hyperslab I/O is done instead of one operation I/O
- * For each dataset, the memory needed is calculated according to
- *
- * memory needed = number of elements * size of each element
- *
- * if the memory needed is lower than H5TOOLS_MALLOCSIZE, then the following operations
- * are done
- *
- * H5Dread( input_dataset )
- * H5Dwrite( output_dataset )
- *
- * with all elements in the datasets selected. If the memory needed is greater than
- * H5TOOLS_MALLOCSIZE, then the following operations are done instead:
- *
- * 1. figure out a hyperslab (dimentions) and size (refer to Get_hyperslab()).
- * 2. Calculate the hyperslab selections as the selection is moving forward.
- * Selection would be same as the hyperslab except for the remaining edge portion
- * of the dataset. The code take care of the remaining portion if exist.
- *
- *-------------------------------------------------------------------------
- */
-
-int do_copy_objects(hid_t fidin, hid_t fidout, trav_table_t *travt,
- pack_opt_t *options) /* repack options */
-{
- int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */
- hid_t grp_in = -1; /* group ID */
- hid_t grp_out = -1; /* group ID */
- hid_t dset_in = -1; /* read dataset ID */
- hid_t dset_out = -1; /* write dataset ID */
- hid_t gcpl_in = -1; /* group creation property list */
- hid_t gcpl_out = -1; /* group creation property list */
- hid_t type_in = -1; /* named type ID */
- hid_t type_out = -1; /* named type ID */
- hid_t dcpl_in = -1; /* dataset creation property list ID */
- hid_t dcpl_out = -1; /* dataset creation property list ID */
- hid_t f_space_id = -1; /* file space ID */
- hid_t ftype_id = -1; /* file type ID */
- hid_t wtype_id = -1; /* read/write type ID */
- named_dt_t *named_dt_head = NULL; /* Pointer to the stack of named datatypes copied */
- size_t msize; /* size of type */
- hsize_t nelmts; /* number of elements in dataset */
- H5D_space_status_t space_status; /* determines whether space has been allocated for the dataset */
- int rank; /* rank of dataset */
- hsize_t dims[H5S_MAX_RANK];/* dimensions of dataset */
- hsize_t dsize_in; /* input dataset size before filter */
- hsize_t dsize_out; /* output dataset size after filter */
- int apply_s; /* flag for apply filter to small dataset sizes */
- int apply_f; /* flag for apply filter to return error on H5Dcreate */
- void *buf = NULL; /* buffer for raw data */
- void *hslab_buf = NULL; /* hyperslab buffer for raw data */
- int has_filter; /* current object has a filter */
- int req_filter; /* there was a request for a filter */
- int req_obj_layout = 0; /* request layout to current object */
- unsigned crt_order_flags; /* group creation order flag */
- unsigned i;
- unsigned u;
- int is_ref = 0;
- htri_t is_named;
- hbool_t limit_maxdims;
- hsize_t size_dset;
-
- /*-------------------------------------------------------------------------
- * copy the suppplied object list
- *-------------------------------------------------------------------------
- */
-
- if (options->verbose) {
- printf("-----------------------------------------\n");
- printf(" Type Filter (Compression) Name\n");
- printf("-----------------------------------------\n");
- }
-
- for (i = 0; i < travt->nobjs; i++) {
- /* init variables per obj */
- buf = NULL;
- limit_maxdims = FALSE;
-
- switch (travt->objs[i].type) {
- case H5TRAV_TYPE_UNKNOWN:
- HDassert(0);
- break;
-
- /*-------------------------------------------------------------------------
- * H5TRAV_TYPE_GROUP
- *-------------------------------------------------------------------------
- */
- case H5TRAV_TYPE_GROUP:
- if (options->verbose)
- printf(FORMAT_OBJ, "group", travt->objs[i].name);
-
- /* open input group */
- if ((grp_in = H5Gopen2(fidin, travt->objs[i].name, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gopen2 failed");
-
- /* get input group creation property list */
- if ((gcpl_in = H5Gget_create_plist(grp_in)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gget_create_plist failed");
-
- /* query and set the group creation properties */
- if (H5Pget_link_creation_order(gcpl_in, &crt_order_flags) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pget_link_creation_order failed");
-
- /* set up group creation property list */
- if ((gcpl_out = H5Pcreate(H5P_GROUP_CREATE)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pcreate failed");
-
- if (H5Pset_link_creation_order(gcpl_out, crt_order_flags) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pset_link_creation_order failed");
-
- /*-------------------------------------------------------------------------
- * the root is a special case, we get an ID for the root group
- * and copy its attributes using that ID
- *-------------------------------------------------------------------------
- */
- if (HDstrcmp(travt->objs[i].name, "/") == 0) {
- if ((grp_out = H5Gopen2(fidout, "/", H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gopen2 failed");
- }
- else {
- if (options->grp_compact > 0 || options->grp_indexed > 0)
- if (H5Pset_link_phase_change(gcpl_out, (unsigned) options->grp_compact, (unsigned) options->grp_indexed) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pset_link_phase_change failed");
-
- if ((grp_out = H5Gcreate2(fidout, travt->objs[i].name, H5P_DEFAULT, gcpl_out, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gcreate2 failed");
- }
-
- /*-------------------------------------------------------------------------
- * copy attrs
- *-------------------------------------------------------------------------
- */
- if (copy_attr(grp_in, grp_out, &named_dt_head, travt, options) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_attr failed");
-
- if (H5Pclose(gcpl_out) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- if (H5Pclose(gcpl_in) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- if (H5Gclose(grp_out) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gclose failed");
- if (H5Gclose(grp_in) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gclose failed");
-
- break;
-
- /*-------------------------------------------------------------------------
- * H5TRAV_TYPE_DATASET
- *-------------------------------------------------------------------------
- */
- case H5TRAV_TYPE_DATASET:
- has_filter = 0;
- req_filter = 0;
-
- /* check if global filters were requested */
- if (options->n_filter_g)
- req_filter = 1;
-
- /* check if filters were requested for individual objects */
- for (u = 0; u < options->op_tbl->nelems; u++)
- if (HDstrcmp(travt->objs[i].name, options->op_tbl->objs[u].path) == 0)
- if (options->op_tbl->objs[u].filter->filtn > 0)
- req_filter = 1;
-
- /* check if layout change requested individual object */
- if (options->layout_g != H5D_LAYOUT_ERROR) {
- pack_info_t *pckinfo;
-
- /* any dataset is specified */
- if (options->op_tbl->nelems > 0) {
- /* check if object exist */
- pckinfo = options_get_object(travt->objs[i].name, options->op_tbl);
- if (pckinfo)
- req_obj_layout = 1;
- }
- }
-
- /* early detection of references */
- if ((dset_in = H5Dopen2(fidin, travt->objs[i].name, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dopen2 failed");
- if ((ftype_id = H5Dget_type(dset_in)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_type failed");
- if (H5T_REFERENCE == H5Tget_class(ftype_id))
- is_ref = 1;
-
- /* Check if the datatype is committed */
- if ((is_named = H5Tcommitted(ftype_id)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tcommitted failed");
- if (is_named)
- if ((wtype_id = copy_named_datatype(ftype_id, fidout, &named_dt_head, travt, options)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_named_datatype failed");
-
- if (H5Tclose(ftype_id) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed");
- if (H5Dclose(dset_in) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed");
-
- /*-------------------------------------------------------------------------
- * check if we should use H5Ocopy or not
- * if there is a request for filters/layout, we read/write the object
- * otherwise we do a copy using H5Ocopy
- *-------------------------------------------------------------------------
- */
- if (options->op_tbl->nelems || options->all_filter == 1
- || options->all_layout == 1 || is_ref || is_named) {
-
- int j;
-
- if ((dset_in = H5Dopen2(fidin, travt->objs[i].name, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dopen2 failed");
- if ((f_space_id = H5Dget_space(dset_in)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_space failed");
- if ((ftype_id = H5Dget_type(dset_in)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_type failed");
- if ((dcpl_in = H5Dget_create_plist(dset_in)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_create_plist failed");
- if ((dcpl_out = H5Pcopy(dcpl_in)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pcopy failed");
- if ((rank = H5Sget_simple_extent_ndims(f_space_id)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sget_simple_extent_ndims failed");
- HDmemset(dims, 0, sizeof dims);
- if (H5Sget_simple_extent_dims(f_space_id, dims, NULL) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sget_simple_extent_dims failed");
- if (H5Dget_space_status(dset_in, &space_status) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_space_status failed");
-
- nelmts = 1;
- for (j = 0; j < rank; j++)
- nelmts *= dims[j];
-
- /* wtype_id will have already been set if using a named dtype */
- if (!is_named) {
- if (options->use_native == 1)
- wtype_id = h5tools_get_native_type(ftype_id);
- else
- wtype_id = H5Tcopy(ftype_id);
- } /* end if */
-
- if ((msize = H5Tget_size(wtype_id)) == 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tget_size failed");
-
- /* size of current dset */
- size_dset = nelmts * msize;
-
- /*-------------------------------------------------------------------------
- * check if the dataset creation property list has filters that
- * are not registered in the current configuration
- * 1) the external filters GZIP and SZIP might not be available
- * 2) the internal filters might be turned off
- *-------------------------------------------------------------------------
- */
- if (h5tools_canreadf((travt->objs[i].name), dcpl_in) == 1) {
- apply_s = 1;
- apply_f = 1;
-
- /*-------------------------------------------------------------------------
- * references are a special case
- * we cannot just copy the buffers, but instead we recreate the reference
- * in a second traversal of the output file
- *-------------------------------------------------------------------------
- */
- if (H5T_REFERENCE != H5Tget_class(wtype_id)) {
- /* get the storage size of the input dataset */
- dsize_in = H5Dget_storage_size(dset_in);
-
- /* check for small size datasets (less than 1k) except
- * changing to COMPACT. For the reference, COMPACT is limited
- * by size 64K by library.
- */
- if (options->layout_g != H5D_COMPACT)
- if (size_dset < options->min_comp)
- apply_s = 0;
-
- /* apply the filter */
- if (apply_s)
- if (apply_filters(travt->objs[i].name, rank, dims, msize, dcpl_out, options, &has_filter) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "apply_filters failed");
-
- /* only if layout change requested for entire file or
- * individual obj */
- if (options->all_layout > 0 || req_obj_layout == 1)
- /*-------------------------------------------------
- * Unset the unlimited max dims if convert to other
- * than chunk layouts, because unlimited max dims
- * only can be applied to chunk layout.
- * Also perform only for targeted dataset
- * Also check for size limit to convert to compact
- *-------------------------------------------------*/
- if (options->layout_g != H5D_CHUNKED) {
- /* any dataset is specified */
- if (options->op_tbl->nelems > 0) {
- /* if current obj match specified obj */
- if (options_get_object(travt->objs[i].name, options->op_tbl))
- limit_maxdims = TRUE;
- }
- else /* no dataset is specified */
- limit_maxdims = TRUE;
-
- /* if convert to COMPACT */
- if (options->layout_g == H5D_COMPACT)
- /* should be smaller than 64K */
- if (size_dset > MAX_COMPACT_DSIZE)
- limit_maxdims = FALSE;
-
- /* unset unlimited max dims */
- if (limit_maxdims)
- H5Sset_extent_simple(f_space_id, rank, dims, NULL);
- }
-
- /*-------------------------------------------------------------------------
- * create the output dataset;
- * disable error checking in case the dataset cannot be created with the
- * modified dcpl; in that case use the original instead
- *-------------------------------------------------------------------------
- */
- dset_out = H5Dcreate2(fidout, travt->objs[i].name, wtype_id, f_space_id, H5P_DEFAULT, dcpl_out, H5P_DEFAULT);
- if (dset_out == FAIL) {
- H5Epush2(H5tools_ERR_STACK_g, __FILE__, FUNC, __LINE__, H5tools_ERR_CLS_g, H5E_tools_g, H5E_tools_min_id_g, "H5Dcreate2 failed");
- if (options->verbose)
- printf(" warning: could not create dataset <%s>. Applying original settings\n", travt->objs[i].name);
-
- if ((dset_out = H5Dcreate2(fidout, travt->objs[i].name, wtype_id, f_space_id, H5P_DEFAULT, dcpl_in, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dcreate2 failed");
- apply_f = 0;
- }
-
- /*-------------------------------------------------------------------------
- * read/write
- *-------------------------------------------------------------------------
- */
- if (nelmts > 0 && space_status != H5D_SPACE_STATUS_NOT_ALLOCATED) {
- size_t need = (size_t)(nelmts * msize); /* bytes needed */
-
- /* have to read the whole dataset if there is only one element in the dataset */
- if (need < H5TOOLS_MALLOCSIZE)
- buf = HDmalloc(need);
-
- if (buf != NULL) {
- /* read/write: use the macro to check error, e.g. memory allocation error inside the library. */
- CHECK_H5DRW_ERROR(H5Dread, FAIL, dset_in, wtype_id, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
- CHECK_H5DRW_ERROR(H5Dwrite, FAIL, dset_out, wtype_id, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
-
- /* Check if we have VL data in the dataset's
- * datatype that must be reclaimed */
- if (TRUE == H5Tdetect_class(wtype_id, H5T_VLEN))
- if (H5Dvlen_reclaim(wtype_id, f_space_id, H5P_DEFAULT, buf) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dvlen_reclaim failed");
- }
- else { /* possibly not enough memory, read/write by hyperslabs */
- size_t p_type_nbytes = msize; /*size of memory type */
- hsize_t p_nelmts = nelmts; /*total elements */
- hsize_t elmtno; /*counter */
- int carry; /*counter carry value */
- unsigned int vl_data = 0; /*contains VL datatypes */
-
- /* hyperslab info */
- hsize_t hslab_dims[H5S_MAX_RANK]; /*hyperslab dims */
- hsize_t hslab_nbytes; /*bytes per hyperslab */
- hsize_t hslab_nelmts; /*elements per hyperslab*/
- hid_t hslab_space; /*hyperslab data space */
-
- /* hyperslab selection info */
- hsize_t hs_sel_offset[H5S_MAX_RANK];/* selection offset */
- hsize_t hs_sel_count[H5S_MAX_RANK]; /* selection count */
- hsize_t hs_select_nelmts; /* selected elements */
- hsize_t zero[8]; /*vector of zeros */
- int k;
- H5D_layout_t dset_layout;
- hid_t dcpl_tmp = -1; /* dataset creation property list ID */
-
- /* check if we have VL data in the dataset's datatype */
- if (H5Tdetect_class(wtype_id, H5T_VLEN) == TRUE)
- vl_data = TRUE;
-
- /* check first if writing dataset is chunked,
- * if so use its chunk layout for better performance. */
- dset_layout = H5Pget_layout(dcpl_out);
- if (dset_layout == H5D_CHUNKED)
- dcpl_tmp = dcpl_out; /* writing dataset */
- else { /* if reading dataset is chunked */
- dset_layout = H5Pget_layout(dcpl_in);
- if (dset_layout == H5D_CHUNKED)
- dcpl_tmp = dcpl_in; /* reading dataset */
- }
-
- /* get hyperslab dims and size in byte */
- if (Get_hyperslab(dcpl_tmp, rank, dims, p_type_nbytes, hslab_dims, &hslab_nbytes) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "Get_hyperslab failed");
-
- hslab_buf = HDmalloc((size_t)hslab_nbytes);
-
- hslab_nelmts = hslab_nbytes / p_type_nbytes;
- hslab_space = H5Screate_simple(1, &hslab_nelmts, NULL);
-
- /* the hyperslab selection loop */
- HDmemset(hs_sel_offset, 0, sizeof hs_sel_offset);
- HDmemset(zero, 0, sizeof zero);
-
- for (elmtno = 0; elmtno < p_nelmts; elmtno += hs_select_nelmts) {
- if (rank > 0) {
- /* calculate the hyperslab selections.
- * The selection would be same as the hyperslab
- * except for remaining edge portion of the dataset
- * which is smaller then the hyperslab.
- */
- for (k = 0, hs_select_nelmts = 1; k < rank; k++) {
- /* MIN() is used to get the remaining edge portion if exist.
- * "dims[k] - hs_sel_offset[k]" is remaining edge portion that is smaller then the hyperslab.*/
- hs_sel_count[k] = MIN(dims[k] - hs_sel_offset[k], hslab_dims[k]);
- hs_select_nelmts *= hs_sel_count[k];
- }
-
- if (H5Sselect_hyperslab(f_space_id, H5S_SELECT_SET, hs_sel_offset, NULL, hs_sel_count, NULL) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sselect_hyperslab failed");
- if (H5Sselect_hyperslab(hslab_space, H5S_SELECT_SET, zero, NULL, &hs_select_nelmts, NULL) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sselect_hyperslab failed");
- }
- else {
- H5Sselect_all(f_space_id);
- H5Sselect_all(hslab_space);
- hs_select_nelmts = 1;
- } /* rank */
-
- /* read/write: use the macro to check error, e.g. memory allocation error inside the library. */
- CHECK_H5DRW_ERROR(H5Dread, FAIL, dset_in, wtype_id, hslab_space, f_space_id, H5P_DEFAULT, hslab_buf);
- CHECK_H5DRW_ERROR(H5Dwrite, FAIL, dset_out, wtype_id, hslab_space, f_space_id, H5P_DEFAULT, hslab_buf);
-
- /* reclaim any VL memory, if necessary */
- if (vl_data)
- H5Dvlen_reclaim(wtype_id, hslab_space, H5P_DEFAULT, hslab_buf);
-
- /* calculate the next hyperslab offset */
- for (k = rank, carry = 1; k > 0 && carry; --k) {
- hs_sel_offset[k - 1] += hs_sel_count[k - 1];
- /* if reached the end of a dim */
- if (hs_sel_offset[k - 1] == dims[k - 1])
- hs_sel_offset[k - 1] = 0;
- else
- carry = 0;
- } /* k */
- } /* elmtno */
-
- H5Sclose(hslab_space);
- /* free */
- if (hslab_buf != NULL) {
- HDfree(hslab_buf);
- hslab_buf = NULL;
- }
- } /* hyperslab read */
- } /* if (nelmts>0 && space_status==H5D_SPACE_STATUS_NOT_ALLOCATED) */
-
- /*-------------------------------------------------------------------------
- * amount of compression used
- *-------------------------------------------------------------------------
- */
- if (options->verbose) {
- double ratio = 0;
-
- /* only print the compression ration if there was a filter request */
- if (apply_s && apply_f && req_filter) {
- /* get the storage size of the output dataset */
- dsize_out = H5Dget_storage_size(dset_out);
-
- /* compression ratio = uncompressed size / compressed size */
- if (dsize_out != 0)
- ratio = (double) dsize_in / (double) dsize_out;
- print_dataset_info(dcpl_out, travt->objs[i].name, ratio, 1);
- }
- else
- print_dataset_info(dcpl_in, travt->objs[i].name, ratio, 0);
-
- /* print a message that the filter was not applied
- (in case there was a filter)
- */
- if (has_filter && apply_s == 0)
- printf(" <warning: filter not applied to %s. dataset smaller than %d bytes>\n", travt->objs[i].name, (int) options->min_comp);
-
- if (has_filter && apply_f == 0)
- printf(" <warning: could not apply the filter to %s>\n", travt->objs[i].name);
- } /* verbose */
-
- /*-------------------------------------------------------------------------
- * copy attrs
- *-------------------------------------------------------------------------
- */
- if (copy_attr(dset_in, dset_out, &named_dt_head, travt, options) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_attr failed");
-
- /*close */
- if (H5Dclose(dset_out) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed");
- }/*!H5T_REFERENCE*/
- }/*h5tools_canreadf*/
-
- /*-------------------------------------------------------------------------
- * close
- *-------------------------------------------------------------------------
- */
- if (H5Tclose(ftype_id) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed");
- if (H5Tclose(wtype_id) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed");
- if (H5Pclose(dcpl_in) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- if (H5Pclose(dcpl_out) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- if (H5Sclose(f_space_id) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sclose failed");
- if (H5Dclose(dset_in) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed");
- }
- /*-------------------------------------------------------------------------
- * we do not have request for filter/chunking use H5Ocopy instead
- *-------------------------------------------------------------------------
- */
- else {
- hid_t pid;
-
- /* create property to pass copy options */
- if ((pid = H5Pcreate(H5P_OBJECT_COPY)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pcreate failed");
-
- /* set options for object copy */
- if (H5Pset_copy_object(pid, H5O_COPY_WITHOUT_ATTR_FLAG) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pset_copy_object failed");
-
- /*-------------------------------------------------------------------------
- * do the copy
- *-------------------------------------------------------------------------
- */
-
- if (H5Ocopy(fidin, /* Source file or group identifier */
- travt->objs[i].name, /* Name of the source object to be copied */
- fidout, /* Destination file or group identifier */
- travt->objs[i].name, /* Name of the destination object */
- pid, /* Properties which apply to the copy */
- H5P_DEFAULT) < 0) /* Properties which apply to the new hard link */
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Ocopy failed");
-
- /* close property */
- if (H5Pclose(pid) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
-
- /*-------------------------------------------------------------------------
- * copy attrs manually
- *-------------------------------------------------------------------------
- */
- if ((dset_in = H5Dopen2(fidin, travt->objs[i].name, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dopen2 failed");
- if ((dset_out = H5Dopen2(fidout, travt->objs[i].name, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dopen2 failed");
- if (copy_attr(dset_in, dset_out, &named_dt_head, travt, options) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_attr failed");
- if (H5Dclose(dset_in) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed");
- if (H5Dclose(dset_out) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed");
-
- if (options->verbose)
- printf(FORMAT_OBJ, "dset", travt->objs[i].name);
-
- } /* end do we have request for filter/chunking */
- break;
-
- /*-------------------------------------------------------------------------
- * H5TRAV_TYPE_NAMED_DATATYPE
- *-------------------------------------------------------------------------
- */
- case H5TRAV_TYPE_NAMED_DATATYPE:
- if (options->verbose)
- printf(FORMAT_OBJ, "type", travt->objs[i].name);
-
- if ((type_in = H5Topen2(fidin, travt->objs[i].name, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Topen2 failed");
-
- /* Copy the datatype anonymously */
- if ((type_out = copy_named_datatype(type_in, fidout, &named_dt_head, travt, options)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_named_datatype failed");
-
- /* Link in to group structure */
- if (H5Lcreate_hard(type_out, ".", fidout, travt->objs[i].name, H5P_DEFAULT, H5P_DEFAULT) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Lcreate_hard failed");
-
- /*-------------------------------------------------------------------------
- * copy attrs
- *-------------------------------------------------------------------------
- */
- if (copy_attr(type_in, type_out, &named_dt_head, travt, options) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_attr failed");
-
- if (H5Tclose(type_in) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed");
- if (H5Tclose(type_out) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed");
-
- break;
-
- /*-------------------------------------------------------------------------
- * H5TRAV_TYPE_LINK
- * H5TRAV_TYPE_UDLINK
- *
- * Only handles external links; H5Lcopy will fail for other UD link types
- * since we don't have creation or copy callbacks for them.
- *-------------------------------------------------------------------------
- */
- case H5TRAV_TYPE_LINK:
- case H5TRAV_TYPE_UDLINK:
- if (options->verbose)
- printf(FORMAT_OBJ, "link", travt->objs[i].name);
-
- if (H5Lcopy(fidin, travt->objs[i].name, fidout, travt->objs[i].name, H5P_DEFAULT, H5P_DEFAULT) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Lcopy failed");
-
- if (options->verbose)
- printf(FORMAT_OBJ, "link", travt->objs[i].name);
- break;
-
- default:
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "Object type not found");
- } /* switch */
-
- /* free */
- if (buf != NULL) {
- HDfree(buf);
- buf = NULL;
- }
- } /* i */
-
- /* Finalize (link) the stack of named datatypes (if any) */
- named_datatype_free(&named_dt_head, 0);
-
- return ret_value;
-
-done:
- H5E_BEGIN_TRY
- {
- H5Gclose(grp_in);
- H5Gclose(grp_out);
- H5Pclose(dcpl_in);
- H5Pclose(gcpl_in);
- H5Pclose(gcpl_out);
- H5Sclose(f_space_id);
- H5Dclose(dset_in);
- H5Dclose(dset_out);
- H5Tclose(ftype_id);
- H5Tclose(wtype_id);
- H5Tclose(type_in);
- H5Tclose(type_out);
- named_datatype_free(&named_dt_head, 1);
- }H5E_END_TRY;
-
- /* free */
- if (buf != NULL)
- HDfree(buf);
- if (hslab_buf != NULL)
- HDfree(hslab_buf);
-
- return ret_value;
-}
-
-/*-------------------------------------------------------------------------
- * Function: print_dataset_info
- *
- * Purpose: print name, filters, percentage compression of a dataset
- *
- *-------------------------------------------------------------------------
- */
-static void print_dataset_info(hid_t dcpl_id, char *objname, double ratio,
- int pr)
-{
- char strfilter[255];
-#if defined (PRINT_DEBUG )
- char temp[255];
-#endif
- int nfilters; /* number of filters */
- unsigned filt_flags; /* filter flags */
- H5Z_filter_t filtn; /* filter identification number */
- unsigned cd_values[20]; /* filter client data values */
- size_t cd_nelmts; /* filter client number of values */
- char f_objname[256]; /* filter objname */
- int i;
-
- HDstrcpy(strfilter, "\0");
-
- /* get information about input filters */
- if ((nfilters = H5Pget_nfilters(dcpl_id)) < 0)
- return;
-
- for (i = 0; i < nfilters; i++) {
- cd_nelmts = NELMTS(cd_values);
-
- filtn = H5Pget_filter2(dcpl_id, (unsigned) i, &filt_flags, &cd_nelmts,
- cd_values, sizeof(f_objname), f_objname, NULL);
-
- switch (filtn) {
- case H5Z_FILTER_NONE:
- HDstrcat(strfilter, "NONE ");
- break;
-
- case H5Z_FILTER_DEFLATE:
- HDstrcat(strfilter, "GZIP ");
-
-#if defined (PRINT_DEBUG)
- {
- unsigned level = cd_values[0];
-
- sprintf(temp,"(%d)", level);
- HDstrcat(strfilter, temp);
- }
-#endif
- break;
-
- case H5Z_FILTER_SZIP:
- HDstrcat(strfilter, "SZIP ");
-
-#if defined (PRINT_DEBUG)
- {
- unsigned options_mask = cd_values[0]; /* from dcpl, not filt*/
- unsigned ppb = cd_values[1];
-
- sprintf(temp,"(%d,", ppb);
- HDstrcat(strfilter, temp);
- if (options_mask & H5_SZIP_EC_OPTION_MASK)
- HDstrcpy(temp, "EC) ");
- else if (options_mask & H5_SZIP_NN_OPTION_MASK)
- HDstrcpy(temp, "NN) ");
- }
- HDstrcat(strfilter, temp);
-#endif
- break;
-
- case H5Z_FILTER_SHUFFLE:
- HDstrcat(strfilter, "SHUF ");
- break;
-
- case H5Z_FILTER_FLETCHER32:
- HDstrcat(strfilter, "FLET ");
- break;
-
- case H5Z_FILTER_NBIT:
- HDstrcat(strfilter, "NBIT ");
- break;
-
- case H5Z_FILTER_SCALEOFFSET:
- HDstrcat(strfilter, "SCALEOFFSET ");
- break;
-
- default:
- HDstrcat(strfilter, "UD ");
- break;
- } /* switch */
- }/*i*/
-
- if (!pr)
- printf(FORMAT_OBJ, "dset", objname);
- else {
- char str[255], temp[28];
-
- HDstrcpy(str, "dset ");
- HDstrcat(str, strfilter);
- sprintf(temp, " (%.3f:1)", ratio);
- HDstrcat(str, temp);
- printf(FORMAT_OBJ, str, objname);
- }
-}
-
-/*-------------------------------------------------------------------------
- * Function: copy_user_block
- *
- * Purpose: copy user block from one file to another
- *
- * Return: 0, ok, -1 no
- *
- * Programmer: Peter Cao
- *
- * Date: October, 25, 2007
- *
- *-------------------------------------------------------------------------
- */
-static int copy_user_block(const char *infile, const char *outfile,
- hsize_t size)
-{
- int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */
- int infid = -1, outfid = -1; /* File descriptors */
-
- /* User block must be any power of 2 equal to 512 or greater (512, 1024, 2048, etc.) */
- HDassert(size > 0);
-
- /* Open files */
- if ((infid = HDopen(infile, O_RDONLY, 0)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDopen failed");
- if ((outfid = HDopen(outfile, O_WRONLY, 0644)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDopen failed");
-
- /* Copy the userblock from the input file to the output file */
- while (size > 0) {
- ssize_t nread, nbytes; /* # of bytes transfered, etc. */
- char rbuf[USERBLOCK_XFER_SIZE]; /* Buffer for reading */
- const char *wbuf; /* Pointer into buffer, for writing */
-
- /* Read buffer from source file */
- if (size > USERBLOCK_XFER_SIZE)
- nread = HDread(infid, rbuf, (size_t)USERBLOCK_XFER_SIZE);
- else
- nread = HDread(infid, rbuf, (size_t)size);
- if (nread < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDread failed");
-
- /* Write buffer to destination file */
- /* (compensating for interrupted writes & checking for errors, etc.) */
- nbytes = nread;
- wbuf = rbuf;
- while (nbytes > 0) {
- ssize_t nwritten; /* # of bytes written */
-
- do {
- nwritten = HDwrite(outfid, wbuf, (size_t)nbytes);
- } while (-1 == nwritten && EINTR == errno);
- if (-1 == nwritten) /* error */
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDwrite failed");
- HDassert(nwritten > 0);
- HDassert(nwritten <= nbytes);
-
- /* Update # of bytes left & offset in buffer */
- nbytes -= nwritten;
- wbuf += nwritten;
- HDassert(nbytes == 0 || wbuf < (rbuf + USERBLOCK_XFER_SIZE));
- } /* end while */
-
- /* Update size of userblock left to transfer */
- size = size - (hsize_t) nread;
- } /* end while */
-
-done:
- if (infid > 0)
- HDclose(infid);
- if (outfid > 0)
- HDclose(outfid);
-
- return ret_value;
-}
-
-/*-------------------------------------------------------------------------
- * Function: print_user_block
- *
- * Purpose: print user block
- *
- * Return: 0, ok, -1 no
- *
- * Programmer: Pedro Vicente
- *
- * Date: August, 20, 2008
- *
- *-------------------------------------------------------------------------
- */
-#if defined (H5REPACK_DEBUG_USER_BLOCK)
-static
-void print_user_block(const char *filename, hid_t fid)
-{
- int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */
- int fh; /* file handle */
- hsize_t ub_size; /* user block size */
- hsize_t size; /* size read */
- hid_t fcpl; /* file creation property list ID for HDF5 file */
- int i;
-
- /* get user block size */
- if(( fcpl = H5Fget_create_plist(fid)) < 0) {
- error_msg("failed to retrieve file creation property list\n");
- HGOTO_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Fget_create_plist failed");
- }
-
- if(H5Pget_userblock(fcpl, &ub_size) < 0) {
- error_msg("failed to retrieve userblock size\n");
- HGOTO_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Pget_userblock failed");
- }
-
- if(H5Pclose(fcpl) < 0) {
- error_msg("failed to close property list\n");
- HGOTO_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Pclose failed");
- }
-
- /* open file */
- if((fh = HDopen(filename, O_RDONLY, 0)) < 0) {
- HGOTO_ERROR(H5E_tools_g, H5E_tools_min_id_g, "HDopen failed");
- }
-
- size = ub_size;
-
- /* read file */
- while(size > 0) {
- ssize_t nread; /* # of bytes read */
- char rbuf[USERBLOCK_XFER_SIZE]; /* buffer for reading */
-
- /* read buffer */
- if(size > USERBLOCK_XFER_SIZE)
- nread = HDread(fh, rbuf, (size_t)USERBLOCK_XFER_SIZE);
- else
- nread = HDread(fh, rbuf, (size_t)size);
-
- for(i = 0; i < nread; i++) {
-
- printf("%c ", rbuf[i]);
-
- }
- printf("\n");
-
- if(nread < 0) {
- HGOTO_ERROR(H5E_tools_g, H5E_tools_min_id_g, "nread < 0");
- }
-
- /* update size of userblock left to transfer */
- size -= nread;
- }
-
-done:
- if(fh > 0)
- HDclose(fh);
-
- return;
-}
-#endif
-
diff --git a/tools/h5repack/h5repack_filters.c b/tools/h5repack/h5repack_filters.c
deleted file mode 100644
index e21b829..0000000
--- a/tools/h5repack/h5repack_filters.c
+++ /dev/null
@@ -1,493 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by The HDF Group. *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from help@hdfgroup.org. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#include "h5repack.h"
-#include "h5tools.h"
-#include "h5tools_utils.h"
-
-/* number of members in an array */
-#ifndef NELMTS
-# define NELMTS(X) (sizeof(X)/sizeof(X[0]))
-#endif
-
-/* minimum of two values */
-#undef MIN
-#define MIN(a,b) (((a)<(b)) ? (a) : (b))
-
-/*-------------------------------------------------------------------------
- * Function: aux_find_obj
- *
- * Purpose: find the object name NAME (got from the traverse list)
- * in the repack options list
- *
- *-------------------------------------------------------------------------
- */
-static int
-aux_find_obj(const char* name, /* object name from traverse list */
- pack_opt_t *options, /* repack options */
- pack_info_t *obj /*OUT*/) /* info about object to filter */
-{
- char *pdest;
- int result;
- unsigned int i;
-
- for ( i=0; i<options->op_tbl->nelems; i++)
- {
- if (HDstrcmp(options->op_tbl->objs[i].path,name)==0)
- {
- *obj = options->op_tbl->objs[i];
- return (int)i;
- }
-
- pdest = HDstrstr(name,options->op_tbl->objs[i].path);
- result = (int)(pdest - name);
-
- /* found at position 1, meaning without '/' */
- if( pdest != NULL && result==1 )
- {
- *obj = options->op_tbl->objs[i];
- return (int)i;
- }
- }/*i*/
-
- return -1;
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: aux_assign_obj
- *
- * Purpose: find the object name NAME (got from the traverse list)
- * in the repack options list; assign the filter information OBJ
- *
- * Return: 0 not found, 1 found
- *
- *-------------------------------------------------------------------------
- */
-static int
-aux_assign_obj(const char* name, /* object name from traverse list */
- pack_opt_t *options, /* repack options */
- pack_info_t *obj /*OUT*/) /* info about object to filter */
-{
-
- int idx, i;
- pack_info_t tmp;
-
- init_packobject(&tmp);
-
- idx = aux_find_obj(name,options,&tmp);
-
- /* name was on input */
- if (idx>=0)
- {
-
-
- /* applying to all objects */
- if (options->all_layout)
- {
- /* assign the global layout info to the OBJ info */
- tmp.layout=options->layout_g;
- switch (options->layout_g)
- {
- case H5D_CHUNKED:
- tmp.chunk.rank=options->chunk_g.rank;
- for ( i=0; i<tmp.chunk.rank; i++)
- tmp.chunk.chunk_lengths[i]=options->chunk_g.chunk_lengths[i];
- break;
- case H5D_LAYOUT_ERROR:
- case H5D_COMPACT:
- case H5D_CONTIGUOUS:
- case H5D_VIRTUAL:
- case H5D_NLAYOUTS:
- break;
- default:
- break;
- }/*switch*/
- }
- else
- {
- tmp.layout = options->op_tbl->objs[idx].layout;
- switch (tmp.layout)
- {
- case H5D_CHUNKED:
- tmp.chunk.rank = options->op_tbl->objs[idx].chunk.rank;
- for ( i=0; i<tmp.chunk.rank; i++)
- tmp.chunk.chunk_lengths[i]=options->op_tbl->objs[idx].chunk.chunk_lengths[i];
- break;
- case H5D_LAYOUT_ERROR:
- case H5D_COMPACT:
- case H5D_CONTIGUOUS:
- case H5D_VIRTUAL:
- case H5D_NLAYOUTS:
- break;
- default:
- break;
- }/*switch*/
-
- }
-
- /* applying to all objects */
- if (options->all_filter)
- {
- /* assign the global filter */
- tmp.nfilters=1;
- tmp.filter[0]=options->filter_g[0];
- } /* if all */
- else
- {
- tmp.nfilters=options->op_tbl->objs[idx].nfilters;
- for ( i=0; i<tmp.nfilters; i++)
- {
- tmp.filter[i] = options->op_tbl->objs[idx].filter[i];
- }
- }
-
-
- } /* if idx */
-
-
- /* no input name */
-
- else
- {
-
- if (options->all_filter)
- {
- int k;
-
- /* assign the global filters */
- tmp.nfilters=options->n_filter_g;
- for ( k = 0; k < options->n_filter_g; k++)
- tmp.filter[k]=options->filter_g[k];
- }
- if (options->all_layout)
- {
- /* assign the global layout info to the OBJ info */
- tmp.layout=options->layout_g;
- switch (options->layout_g)
- {
- case H5D_CHUNKED:
- tmp.chunk.rank=options->chunk_g.rank;
- for ( i=0; i<tmp.chunk.rank; i++)
- tmp.chunk.chunk_lengths[i]=options->chunk_g.chunk_lengths[i];
- break;
- case H5D_LAYOUT_ERROR:
- case H5D_COMPACT:
- case H5D_CONTIGUOUS:
- case H5D_VIRTUAL:
- case H5D_NLAYOUTS:
- break;
- default:
- break;
- }/*switch*/
- }
- }
-
- *obj = tmp;
- return 1;
-
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: apply_filters
- *
- * Purpose: apply the filters in the object to the property list;
- * do extra checking in the case of SZIP; delete all filters in the case
- * of H5Z_FILTER_NONE present in the PACK_INFO_T filter array
- *
- * Return: 0 success, -1 an error occured
- *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
- *
- * Date: December 19, 2003
- *
- *-------------------------------------------------------------------------
- */
-
-int apply_filters(const char* name, /* object name from traverse list */
- int rank, /* rank of dataset */
- hsize_t *dims, /* dimensions of dataset */
- size_t msize, /* size of type */
- hid_t dcpl_id, /* dataset creation property list */
- pack_opt_t *options, /* repack options */
- int *has_filter) /* (OUT) object NAME has a filter */
-
-
-{
- int nfilters; /* number of filters in DCPL */
- hsize_t chsize[64]; /* chunk size in elements */
- H5D_layout_t layout;
- int i;
- pack_info_t obj;
-
- *has_filter = 0;
-
- if (rank==0) /* scalar dataset, do not apply */
- return 0;
-
- /*-------------------------------------------------------------------------
- * initialize the assigment object
- *-------------------------------------------------------------------------
- */
- init_packobject(&obj);
-
- /*-------------------------------------------------------------------------
- * find options
- *-------------------------------------------------------------------------
- */
- if (aux_assign_obj(name,options,&obj)==0)
- return 0;
-
- /* get information about input filters */
- if ((nfilters = H5Pget_nfilters(dcpl_id))<0)
- return -1;
-
- /*-------------------------------------------------------------------------
- * check if we have filters in the pipeline
- * we want to replace them with the input filters
- * only remove if we are inserting new ones
- *-------------------------------------------------------------------------
- */
- if (nfilters && obj.nfilters )
- {
- *has_filter = 1;
- if (H5Premove_filter(dcpl_id,H5Z_FILTER_ALL)<0)
- return -1;
- }
-
- /*-------------------------------------------------------------------------
- * check if there is an existent chunk
- * read it only if there is not a requested layout
- *-------------------------------------------------------------------------
- */
- if (obj.layout == -1 )
- {
- if ((layout = H5Pget_layout(dcpl_id))<0)
- return -1;
-
- if (layout == H5D_CHUNKED)
- {
- if ((rank = H5Pget_chunk(dcpl_id,NELMTS(chsize),chsize/*out*/))<0)
- return -1;
- obj.layout = H5D_CHUNKED;
- obj.chunk.rank = rank;
- for ( i = 0; i < rank; i++)
- obj.chunk.chunk_lengths[i] = chsize[i];
- }
- }
-
- /*-------------------------------------------------------------------------
- * the type of filter and additional parameter
- * type can be one of the filters
- * H5Z_FILTER_NONE 0 , uncompress if compressed
- * H5Z_FILTER_DEFLATE 1 , deflation like gzip
- * H5Z_FILTER_SHUFFLE 2 , shuffle the data
- * H5Z_FILTER_FLETCHER32 3 , fletcher32 checksum of EDC
- * H5Z_FILTER_SZIP 4 , szip compression
- * H5Z_FILTER_NBIT 5 , nbit compression
- * H5Z_FILTER_SCALEOFFSET 6 , scaleoffset compression
- *-------------------------------------------------------------------------
- */
-
- if (obj.nfilters)
- {
-
- /*-------------------------------------------------------------------------
- * filters require CHUNK layout; if we do not have one define a default
- *-------------------------------------------------------------------------
- */
- if (obj.layout==-1)
- {
-
- /* stripmine info */
- hsize_t sm_size[H5S_MAX_RANK]; /*stripmine size */
- hsize_t sm_nbytes; /*bytes per stripmine */
-
- obj.chunk.rank = rank;
-
- /*
- * determine the strip mine size. The strip mine is
- * a hyperslab whose size is manageable.
- */
-
-
-
- sm_nbytes = msize;
- for ( i = rank; i > 0; --i)
- {
- hsize_t size = H5TOOLS_BUFSIZE / sm_nbytes;
- if ( size == 0) /* datum size > H5TOOLS_BUFSIZE */
- size = 1;
- sm_size[i - 1] = MIN(dims[i - 1], size);
- sm_nbytes *= sm_size[i - 1];
- HDassert(sm_nbytes > 0);
-
- }
-
- for ( i = 0; i < rank; i++)
- {
- obj.chunk.chunk_lengths[i] = sm_size[i];
- }
-
- }
-
- for ( i=0; i<obj.nfilters; i++)
- {
- switch (obj.filter[i].filtn)
- {
-
- /*-------------------------------------------------------------------------
- * H5Z_FILTER_NONE 0 , uncompress if compressed
- *-------------------------------------------------------------------------
- */
- case H5Z_FILTER_NONE:
- break;
-
- /*-------------------------------------------------------------------------
- * H5Z_FILTER_DEFLATE 1 , deflation like gzip
- *-------------------------------------------------------------------------
- */
- case H5Z_FILTER_DEFLATE:
- {
- unsigned aggression; /* the deflate level */
-
- aggression = obj.filter[i].cd_values[0];
- /* set up for deflated data */
- if(H5Pset_chunk(dcpl_id, obj.chunk.rank, obj.chunk.chunk_lengths)<0)
- return -1;
- if(H5Pset_deflate(dcpl_id,aggression)<0)
- return -1;
- }
- break;
-
- /*-------------------------------------------------------------------------
- * H5Z_FILTER_SZIP 4 , szip compression
- *-------------------------------------------------------------------------
- */
- case H5Z_FILTER_SZIP:
- {
- unsigned options_mask;
- unsigned pixels_per_block;
-
- options_mask = obj.filter[i].cd_values[0];
- pixels_per_block = obj.filter[i].cd_values[1];
-
- /* set up for szip data */
- if(H5Pset_chunk(dcpl_id,obj.chunk.rank,obj.chunk.chunk_lengths)<0)
- return -1;
- if (H5Pset_szip(dcpl_id,options_mask,pixels_per_block)<0)
- return -1;
-
- }
- break;
-
- /*-------------------------------------------------------------------------
- * H5Z_FILTER_SHUFFLE 2 , shuffle the data
- *-------------------------------------------------------------------------
- */
- case H5Z_FILTER_SHUFFLE:
- if(H5Pset_chunk(dcpl_id, obj.chunk.rank, obj.chunk.chunk_lengths)<0)
- return -1;
- if (H5Pset_shuffle(dcpl_id)<0)
- return -1;
- break;
-
- /*-------------------------------------------------------------------------
- * H5Z_FILTER_FLETCHER32 3 , fletcher32 checksum of EDC
- *-------------------------------------------------------------------------
- */
- case H5Z_FILTER_FLETCHER32:
- if(H5Pset_chunk(dcpl_id, obj.chunk.rank, obj.chunk.chunk_lengths)<0)
- return -1;
- if (H5Pset_fletcher32(dcpl_id)<0)
- return -1;
- break;
- /*----------- -------------------------------------------------------------
- * H5Z_FILTER_NBIT , NBIT compression
- *-------------------------------------------------------------------------
- */
- case H5Z_FILTER_NBIT:
- if(H5Pset_chunk(dcpl_id, obj.chunk.rank, obj.chunk.chunk_lengths)<0)
- return -1;
- if (H5Pset_nbit(dcpl_id)<0)
- return -1;
- break;
- /*----------- -------------------------------------------------------------
- * H5Z_FILTER_SCALEOFFSET , scale+offset compression
- *-------------------------------------------------------------------------
- */
-
- case H5Z_FILTER_SCALEOFFSET:
- {
- H5Z_SO_scale_type_t scale_type;
- int scale_factor;
-
- scale_type = (H5Z_SO_scale_type_t)obj.filter[i].cd_values[0];
- scale_factor = (int)obj.filter[i].cd_values[1];
-
- if(H5Pset_chunk(dcpl_id, obj.chunk.rank, obj.chunk.chunk_lengths)<0)
- return -1;
- if (H5Pset_scaleoffset(dcpl_id,scale_type,scale_factor)<0)
- return -1;
- }
- break;
- default:
- {
- if (H5Pset_filter (dcpl_id, obj.filter[i].filtn, H5Z_FLAG_MANDATORY, obj.filter[i].cd_nelmts, obj.filter[i].cd_values)<0)
- return -1;
- if(H5Pset_chunk(dcpl_id, obj.chunk.rank, obj.chunk.chunk_lengths)<0)
- return -1;
- }
- break;
- } /* switch */
- }/*i*/
-
- }
- /*obj.nfilters*/
-
- /*-------------------------------------------------------------------------
- * layout
- *-------------------------------------------------------------------------
- */
-
- if (obj.layout>=0)
- {
- /* a layout was defined */
- if (H5Pset_layout(dcpl_id, obj.layout)<0)
- return -1;
-
- if (H5D_CHUNKED == obj.layout)
- {
- if(H5Pset_chunk(dcpl_id, obj.chunk.rank, obj.chunk.chunk_lengths)<0)
- return -1;
- }
- else if (H5D_COMPACT == obj.layout)
- {
- if (H5Pset_alloc_time(dcpl_id, H5D_ALLOC_TIME_EARLY)<0)
- return -1;
- }
- /* remove filters for the H5D_CONTIGUOUS case */
- else if (H5D_CONTIGUOUS == obj.layout)
- {
- if (H5Premove_filter(dcpl_id,H5Z_FILTER_ALL)<0)
- return -1;
- }
-
- }
-
- return 0;
-}
-
diff --git a/tools/h5repack/h5repack_main.c b/tools/h5repack/h5repack_main.c
deleted file mode 100644
index 2d48a04..0000000
--- a/tools/h5repack/h5repack_main.c
+++ /dev/null
@@ -1,664 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by The HDF Group. *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from help@hdfgroup.org. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#include "h5tools.h"
-#include "h5tools_utils.h"
-#include "h5repack.h"
-
-/* Name of tool */
-#define PROGRAMNAME "h5repack"
-
-static int parse_command_line(int argc, const char **argv, pack_opt_t* options);
-static void leave(int ret) H5_ATTR_NORETURN;
-
-
-/* module-scoped variables */
-static int has_i_o = 0;
-const char *infile = NULL;
-const char *outfile = NULL;
-
-/*
- * Command-line options: The user can specify short or long-named
- * parameters.
- */
-static const char *s_opts = "hVvf:l:m:e:nLc:d:s:u:b:M:t:a:i:o:S:T:E";
-static struct long_options l_opts[] = {
- { "help", no_arg, 'h' },
- { "version", no_arg, 'V' },
- { "verbose", no_arg, 'v' },
- { "filter", require_arg, 'f' },
- { "layout", require_arg, 'l' },
- { "minimum", require_arg, 'm' },
- { "file", require_arg, 'e' },
- { "native", no_arg, 'n' },
- { "latest", no_arg, 'L' },
- { "compact", require_arg, 'c' },
- { "indexed", require_arg, 'd' },
- { "ssize", require_arg, 's' },
- { "ublock", require_arg, 'u' },
- { "block", require_arg, 'b' },
- { "metadata_block_size", require_arg, 'M' },
- { "threshold", require_arg, 't' },
- { "alignment", require_arg, 'a' },
- { "infile", require_arg, 'i' }, /* -i for backward compability */
- { "outfile", require_arg, 'o' }, /* -o for backward compability */
- { "fs_strategy", require_arg, 'S' },
- { "fs_threshold", require_arg, 'T' },
- { "enable-error-stack", no_arg, 'E' },
- { NULL, 0, '\0' }
-};
-
-/*-------------------------------------------------------------------------
- * Function: usage
- *
- * Purpose: print usage
- *
- * Return: void
- *
- *-------------------------------------------------------------------------
- */
-static void usage(const char *prog) {
- FLUSHSTREAM(rawoutstream);
- PRINTSTREAM(rawoutstream, "usage: %s [OPTIONS] file1 file2\n", prog);
- PRINTVALSTREAM(rawoutstream, " file1 Input HDF5 File\n");
- PRINTVALSTREAM(rawoutstream, " file2 Output HDF5 File\n");
- PRINTVALSTREAM(rawoutstream, " OPTIONS\n");
- PRINTVALSTREAM(rawoutstream, " -h, --help Print a usage message and exit\n");
- PRINTVALSTREAM(rawoutstream, " -v, --verbose Verbose mode, print object information\n");
- PRINTVALSTREAM(rawoutstream, " -V, --version Print version number and exit\n");
- PRINTVALSTREAM(rawoutstream, " -n, --native Use a native HDF5 type when repacking\n");
- PRINTVALSTREAM(rawoutstream, " -L, --latest Use latest version of file format\n");
- PRINTVALSTREAM(rawoutstream, " -c L1, --compact=L1 Maximum number of links in header messages\n");
- PRINTVALSTREAM(rawoutstream, " -d L2, --indexed=L2 Minimum number of links in the indexed format\n");
- PRINTVALSTREAM(rawoutstream, " -s S[:F], --ssize=S[:F] Shared object header message minimum size\n");
- PRINTVALSTREAM(rawoutstream, " -m M, --minimum=M Do not apply the filter to datasets smaller than M\n");
- PRINTVALSTREAM(rawoutstream, " -e E, --file=E Name of file E with the -f and -l options\n");
- PRINTVALSTREAM(rawoutstream, " -u U, --ublock=U Name of file U with user block data to be added\n");
- PRINTVALSTREAM(rawoutstream, " -b B, --block=B Size of user block to be added\n");
- PRINTVALSTREAM(rawoutstream, " -M A, --metadata_block_size=A Metadata block size for H5Pset_meta_block_size\n");
- PRINTVALSTREAM(rawoutstream, " -t T, --threshold=T Threshold value for H5Pset_alignment\n");
- PRINTVALSTREAM(rawoutstream, " -a A, --alignment=A Alignment value for H5Pset_alignment\n");
- PRINTVALSTREAM(rawoutstream, " -f FILT, --filter=FILT Filter type\n");
- PRINTVALSTREAM(rawoutstream, " -l LAYT, --layout=LAYT Layout type\n");
- PRINTVALSTREAM(rawoutstream, " -S FS_STRGY, --fs_strategy=FS_STRGY File space management strategy\n");
- PRINTVALSTREAM(rawoutstream, " -T FS_THRD, --fs_threshold=FS_THRD Free-space section threshold\n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, " M - is an integer greater than 1, size of dataset in bytes (default is 0) \n");
- PRINTVALSTREAM(rawoutstream, " E - is a filename.\n");
- PRINTVALSTREAM(rawoutstream, " S - is an integer\n");
- PRINTVALSTREAM(rawoutstream, " U - is a filename.\n");
- PRINTVALSTREAM(rawoutstream, " T - is an integer\n");
- PRINTVALSTREAM(rawoutstream, " A - is an integer greater than zero\n");
- PRINTVALSTREAM(rawoutstream, " B - is the user block size, any value that is 512 or greater and is\n");
- PRINTVALSTREAM(rawoutstream, " a power of 2 (1024 default)\n");
- PRINTVALSTREAM(rawoutstream, " F - is the shared object header message type, any of <dspace|dtype|fill|\n");
- PRINTVALSTREAM(rawoutstream, " pline|attr>. If F is not specified, S applies to all messages\n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, " --enable-error-stack Prints messages from the HDF5 error stack as they\n");
- PRINTVALSTREAM(rawoutstream, " occur.\n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, " FS_STRGY is the file space management strategy to use for the output file.\n");
- PRINTVALSTREAM(rawoutstream, " It is a string as listed below:\n");
- PRINTVALSTREAM(rawoutstream, " ALL_PERSIST - Use persistent free-space managers, aggregators and virtual file driver\n");
- PRINTVALSTREAM(rawoutstream, " for file space allocation\n");
- PRINTVALSTREAM(rawoutstream, " ALL - Use non-persistent free-space managers, aggregators and virtual file driver\n");
- PRINTVALSTREAM(rawoutstream, " for file space allocation\n");
- PRINTVALSTREAM(rawoutstream, " AGGR_VFD - Use aggregators and virtual file driver for file space allocation\n");
- PRINTVALSTREAM(rawoutstream, " VFD - Use virtual file driver for file space allocation\n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, " FS_THRD is the free-space section threshold to use for the output file.\n");
- PRINTVALSTREAM(rawoutstream, " It is the minimum size (in bytes) of free-space sections to be tracked\n");
- PRINTVALSTREAM(rawoutstream, " by the the library's free-space managers.\n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, " FILT - is a string with the format:\n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, " <list of objects>:<name of filter>=<filter parameters>\n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, " <list of objects> is a comma separated list of object names, meaning apply\n");
- PRINTVALSTREAM(rawoutstream, " compression only to those objects. If no names are specified, the filter\n");
- PRINTVALSTREAM(rawoutstream, " is applied to all objects\n");
- PRINTVALSTREAM(rawoutstream, " <name of filter> can be:\n");
- PRINTVALSTREAM(rawoutstream, " GZIP, to apply the HDF5 GZIP filter (GZIP compression)\n");
- PRINTVALSTREAM(rawoutstream, " SZIP, to apply the HDF5 SZIP filter (SZIP compression)\n");
- PRINTVALSTREAM(rawoutstream, " SHUF, to apply the HDF5 shuffle filter\n");
- PRINTVALSTREAM(rawoutstream, " FLET, to apply the HDF5 checksum filter\n");
- PRINTVALSTREAM(rawoutstream, " NBIT, to apply the HDF5 NBIT filter (NBIT compression)\n");
- PRINTVALSTREAM(rawoutstream, " SOFF, to apply the HDF5 Scale/Offset filter\n");
- PRINTVALSTREAM(rawoutstream, " UD, to apply a user defined filter\n");
- PRINTVALSTREAM(rawoutstream, " NONE, to remove all filters\n");
- PRINTVALSTREAM(rawoutstream, " <filter parameters> is optional filter parameter information\n");
- PRINTVALSTREAM(rawoutstream, " GZIP=<deflation level> from 1-9\n");
- PRINTVALSTREAM(rawoutstream, " SZIP=<pixels per block,coding> pixels per block is a even number in\n");
- PRINTVALSTREAM(rawoutstream, " 2-32 and coding method is either EC or NN\n");
- PRINTVALSTREAM(rawoutstream, " SHUF (no parameter)\n");
- PRINTVALSTREAM(rawoutstream, " FLET (no parameter)\n");
- PRINTVALSTREAM(rawoutstream, " NBIT (no parameter)\n");
- PRINTVALSTREAM(rawoutstream, " SOFF=<scale_factor,scale_type> scale_factor is an integer and scale_type\n");
- PRINTVALSTREAM(rawoutstream, " is either IN or DS\n");
- PRINTVALSTREAM(rawoutstream, " UD=<filter_number,cd_value_count,value_1[,value_2,...,value_N]>\n");
- PRINTVALSTREAM(rawoutstream, " required values for filter_number,cd_value_count,value_1\n");
- PRINTVALSTREAM(rawoutstream, " optional values for value_2 to value_N\n");
- PRINTVALSTREAM(rawoutstream, " NONE (no parameter)\n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, " LAYT - is a string with the format:\n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, " <list of objects>:<layout type>=<layout parameters>\n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, " <list of objects> is a comma separated list of object names, meaning that\n");
- PRINTVALSTREAM(rawoutstream, " layout information is supplied for those objects. If no names are\n");
- PRINTVALSTREAM(rawoutstream, " specified, the layout type is applied to all objects\n");
- PRINTVALSTREAM(rawoutstream, " <layout type> can be:\n");
- PRINTVALSTREAM(rawoutstream, " CHUNK, to apply chunking layout\n");
- PRINTVALSTREAM(rawoutstream, " COMPA, to apply compact layout\n");
- PRINTVALSTREAM(rawoutstream, " CONTI, to apply contiguous layout\n");
- PRINTVALSTREAM(rawoutstream, " <layout parameters> is optional layout information\n");
- PRINTVALSTREAM(rawoutstream, " CHUNK=DIM[xDIM...xDIM], the chunk size of each dimension\n");
- PRINTVALSTREAM(rawoutstream, " COMPA (no parameter)\n");
- PRINTVALSTREAM(rawoutstream, " CONTI (no parameter)\n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, "Examples of use:\n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, "1) h5repack -v -f GZIP=1 file1 file2\n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, " GZIP compression with level 1 to all objects\n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, "2) h5repack -v -f dset1:SZIP=8,NN file1 file2\n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, " SZIP compression with 8 pixels per block and NN coding method to object dset1\n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, "3) h5repack -v -l dset1,dset2:CHUNK=20x10 -f dset3,dset4,dset5:NONE file1 file2\n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, " Chunked layout, with a layout size of 20x10, to objects dset1 and dset2\n");
- PRINTVALSTREAM(rawoutstream, " and remove filters to objects dset3, dset4, dset5\n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, "4) h5repack -L -c 10 -s 20:dtype file1 file2 \n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, " Using latest file format with maximum compact group size of 10 and\n");
- PRINTVALSTREAM(rawoutstream, " and minimum shared datatype size of 20\n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, "5) h5repack -f SHUF -f GZIP=1 file1 file2 \n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, " Add both filters SHUF and GZIP in this order to all datasets\n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, "6) h5repack -f UD=307,1,9 file1 file2 \n");
- PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, " Add bzip2 filter to all datasets\n");
- PRINTVALSTREAM(rawoutstream, "\n");
-}
-
-/*-------------------------------------------------------------------------
- * Function: leave
- *
- * Purpose: Shutdown MPI & HDF5 and call exit()
- *
- * Return: Does not return
- *
- * Programmer: Quincey Koziol
- * Saturday, 31. January 2004
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static void leave(int ret) {
- h5tools_close();
-
- HDexit(ret);
-}
-
-/*-------------------------------------------------------------------------
- * Function: read_info
- *
- * Purpose: read comp and chunk options from a file
- *
- * Return: void, exit on error
- *
- * Programmer: pvn@ncsa.uiuc.edu
- *
- * Date: September, 22, 2003
- *
- *-------------------------------------------------------------------------
- */
-
-static
-int read_info(const char *filename, pack_opt_t *options) {
-
- char stype[10];
- char comp_info[1024];
- FILE *fp = NULL;
- char c;
- int i, rc = 1;
- int ret_value = EXIT_SUCCESS;
-
- if ((fp = HDfopen(filename, "r")) == (FILE *) NULL) {
- error_msg("cannot open options file %s\n", filename);
- h5tools_setstatus(EXIT_FAILURE);
- ret_value = EXIT_FAILURE;
- goto done;
- }
-
- /* cycle until end of file reached */
- while (1) {
- rc = fscanf(fp, "%s", stype);
- if (rc == -1)
- break;
-
- /*-------------------------------------------------------------------------
- * filter
- *-------------------------------------------------------------------------
- */
- if (HDstrcmp(stype,"-f") == 0) {
- /* find begining of info */
- i = 0;
- c = '0';
- while (c != ' ') {
- if(fscanf(fp, "%c", &c) < 0 && HDferror(fp)) {
- error_msg("fscanf error\n");
- h5tools_setstatus(EXIT_FAILURE);
- ret_value = EXIT_FAILURE;
- goto done;
- } /* end if */
- if (HDfeof(fp))
- break;
- }
- c = '0';
- /* go until end */
- while (c != ' ') {
- if(fscanf(fp, "%c", &c) < 0 && HDferror(fp)) {
- error_msg("fscanf error\n");
- h5tools_setstatus(EXIT_FAILURE);
- ret_value = EXIT_FAILURE;
- goto done;
- } /* end if */
- comp_info[i] = c;
- i++;
- if (HDfeof(fp))
- break;
- if (c == 10 /*eol*/)
- break;
- }
- comp_info[i - 1] = '\0'; /*cut the last " */
-
- if (h5repack_addfilter(comp_info, options) == -1) {
- error_msg("could not add compression option\n");
- h5tools_setstatus(EXIT_FAILURE);
- ret_value = EXIT_FAILURE;
- goto done;
- }
- }
- /*-------------------------------------------------------------------------
- * layout
- *-------------------------------------------------------------------------
- */
- else if (HDstrcmp(stype,"-l") == 0) {
-
- /* find begining of info */
- i = 0;
- c = '0';
- while (c != ' ') {
- if(fscanf(fp, "%c", &c) < 0 && HDferror(fp)) {
- error_msg("fscanf error\n");
- h5tools_setstatus(EXIT_FAILURE);
- ret_value = EXIT_FAILURE;
- goto done;
- } /* end if */
- if (HDfeof(fp))
- break;
- }
- c = '0';
- /* go until end */
- while (c != ' ') {
- if(fscanf(fp, "%c", &c) < 0 && HDferror(fp)) {
- error_msg("fscanf error\n");
- h5tools_setstatus(EXIT_FAILURE);
- ret_value = EXIT_FAILURE;
- goto done;
- } /* end if */
- comp_info[i] = c;
- i++;
- if (HDfeof(fp))
- break;
- if (c == 10 /*eol*/)
- break;
- }
- comp_info[i - 1] = '\0'; /*cut the last " */
-
- if (h5repack_addlayout(comp_info, options) == -1) {
- error_msg("could not add chunck option\n");
- h5tools_setstatus(EXIT_FAILURE);
- ret_value = EXIT_FAILURE;
- goto done;
- }
- }
- /*-------------------------------------------------------------------------
- * not valid
- *-------------------------------------------------------------------------
- */
- else {
- error_msg("bad file format for %s", filename);
- h5tools_setstatus(EXIT_FAILURE);
- ret_value = EXIT_FAILURE;
- goto done;
- }
- }
-
-done:
- if (fp)
- HDfclose(fp);
-
- return ret_value;
-}
-
-/*-------------------------------------------------------------------------
- * Function: parse_command_line
- *
- * Purpose: parse command line input
- *
- *-------------------------------------------------------------------------
- */
-
-static
-int parse_command_line(int argc, const char **argv, pack_opt_t* options) {
-
- int opt;
- int ret_value = 0;
-
- /* parse command line options */
- while ((opt = get_option(argc, argv, s_opts, l_opts)) != EOF) {
- switch ((char) opt) {
-
- /* -i for backward compability */
- case 'i':
- infile = opt_arg;
- has_i_o = 1;
- break;
-
- /* -o for backward compability */
- case 'o':
- outfile = opt_arg;
- has_i_o = 1;
- break;
-
- case 'h':
- usage(h5tools_getprogname());
- h5tools_setstatus(EXIT_SUCCESS);
- ret_value = -1;
- goto done;
-
- case 'V':
- print_version(h5tools_getprogname());
- h5tools_setstatus(EXIT_SUCCESS);
- ret_value = -1;
- goto done;
-
- case 'v':
- options->verbose = 1;
- break;
-
- case 'f':
- /* parse the -f filter option */
- if (h5repack_addfilter(opt_arg, options) < 0) {
- error_msg("in parsing filter\n");
- h5tools_setstatus(EXIT_FAILURE);
- ret_value = -1;
- goto done;
- }
- break;
-
- case 'l':
- /* parse the -l layout option */
- if (h5repack_addlayout(opt_arg, options) < 0) {
- error_msg("in parsing layout\n");
- h5tools_setstatus(EXIT_FAILURE);
- ret_value = -1;
- goto done;
- }
- break;
-
- case 'm':
- options->min_comp = HDstrtoull(opt_arg , NULL, 0);
- if ((int) options->min_comp <= 0) {
- error_msg("invalid minimum compress size <%s>\n", opt_arg);
- h5tools_setstatus(EXIT_FAILURE);
- ret_value = -1;
- goto done;
- }
- break;
-
- case 'e':
- ret_value = read_info(opt_arg, options);
- if (ret_value < 0)
- goto done;
- break;
-
- case 'n':
- options->use_native = 1;
- break;
-
- case 'L':
- options->latest = TRUE;
- break;
-
- case 'c':
- options->grp_compact = HDatoi( opt_arg );
- if (options->grp_compact > 0)
- options->latest = TRUE; /* must use latest format */
- break;
-
- case 'd':
- options->grp_indexed = HDatoi( opt_arg );
- if (options->grp_indexed > 0)
- options->latest = TRUE; /* must use latest format */
- break;
-
- case 's':
- {
- int idx = 0;
- int ssize = 0;
- char *msgPtr = HDstrchr( opt_arg, ':');
- options->latest = TRUE; /* must use latest format */
- if (msgPtr == NULL) {
- ssize = HDatoi( opt_arg );
- for (idx = 0; idx < 5; idx++)
- options->msg_size[idx] = ssize;
- }
- else {
- char msgType[10];
- HDstrcpy(msgType, msgPtr + 1);
- msgPtr[0] = '\0';
- ssize = HDatoi( opt_arg );
- if (HDstrncmp(msgType, "dspace",6) == 0) {
- options->msg_size[0] = ssize;
- }
- else if (HDstrncmp(msgType, "dtype", 5) == 0) {
- options->msg_size[1] = ssize;
- }
- else if (HDstrncmp(msgType, "fill", 4) == 0) {
- options->msg_size[2] = ssize;
- }
- else if (HDstrncmp(msgType, "pline", 5) == 0) {
- options->msg_size[3] = ssize;
- }
- else if (HDstrncmp(msgType, "attr", 4) == 0) {
- options->msg_size[4] = ssize;
- }
- }
- }
- break;
-
- case 'u':
- options->ublock_filename = opt_arg;
- break;
-
- case 'b':
- options->ublock_size = (hsize_t) HDatol( opt_arg );
- break;
-
- case 'M':
- options->meta_block_size = (hsize_t) HDatol( opt_arg );
- break;
-
- case 't':
- options->threshold = (hsize_t) HDatol( opt_arg );
- break;
-
- case 'a':
- options->alignment = HDstrtoull(opt_arg , NULL, 0);
- if (options->alignment < 1) {
- error_msg("invalid alignment size\n", opt_arg);
- h5tools_setstatus(EXIT_FAILURE);
- ret_value = -1;
- goto done;
- }
- break;
-
- case 'S':
- {
- char strategy[MAX_NC_NAME];
-
- HDstrcpy(strategy, opt_arg);
- if (!HDstrcmp(strategy, "ALL_PERSIST"))
- options->fs_strategy = H5F_FILE_SPACE_ALL_PERSIST;
- else if (!HDstrcmp(strategy, "ALL"))
- options->fs_strategy = H5F_FILE_SPACE_ALL;
- else if (!HDstrcmp(strategy, "AGGR_VFD"))
- options->fs_strategy = H5F_FILE_SPACE_AGGR_VFD;
- else if (!HDstrcmp(strategy, "VFD"))
- options->fs_strategy = H5F_FILE_SPACE_VFD;
- else {
- error_msg("invalid file space management strategy\n", opt_arg);
- h5tools_setstatus(EXIT_FAILURE);
- ret_value = -1;
- goto done;
- }
- }
- break;
-
- case 'T':
- options->fs_threshold = (hsize_t) HDatol( opt_arg );
- break;
-
- case 'E':
- enable_error_stack = TRUE;
- break;
-
- default:
- break;
- } /* switch */
-
- } /* while */
-
- if (has_i_o == 0) {
- /* check for file names to be processed */
- if (argc <= opt_ind || argv[opt_ind + 1] == NULL) {
- error_msg("missing file names\n");
- usage(h5tools_getprogname());
- h5tools_setstatus(EXIT_FAILURE);
- ret_value = -1;
- }
- }
-
-done:
- return ret_value;
-}
-
-/*-------------------------------------------------------------------------
- * Function: main
- *
- * Purpose: h5repack main program
- *
- * Return: Success: EXIT_SUCCESS(0)
- *
- * Failure: EXIT_FAILURE(1)
- *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
- *
- * Date: May 9, 2003
- *
- * Comments:
- *
- *-------------------------------------------------------------------------
- */
-int main(int argc, const char **argv) {
- H5E_auto2_t func;
- H5E_auto2_t tools_func;
- void *edata;
- void *tools_edata;
-
- pack_opt_t options; /*the global options */
-
- h5tools_setprogname(PROGRAMNAME);
- h5tools_setstatus(EXIT_SUCCESS);
-
- /* Disable error reporting */
- H5Eget_auto2(H5E_DEFAULT, &func, &edata);
- H5Eset_auto2(H5E_DEFAULT, NULL, NULL);
-
- /* Initialize h5tools lib */
- h5tools_init();
-
- /* Disable tools error reporting */
- H5Eget_auto2(H5tools_ERR_STACK_g, &tools_func, &tools_edata);
- H5Eset_auto2(H5tools_ERR_STACK_g, NULL, NULL);
-
- /* update hyperslab buffer size from H5TOOLS_BUFSIZE env if exist */
- if (h5tools_getenv_update_hyperslab_bufsize() < 0) {
- h5tools_setstatus(EXIT_FAILURE);
- goto done;
- }
-
- /* initialize options */
- h5repack_init(&options, 0, FALSE, H5F_FILE_SPACE_DEFAULT, (hsize_t) 0);
-
- if (parse_command_line(argc, argv, &options) < 0)
- goto done;
-
- /* get file names if they were not yet got */
- if (has_i_o == 0) {
-
- if (argv[opt_ind] != NULL && argv[opt_ind + 1] != NULL) {
- infile = argv[opt_ind];
- outfile = argv[opt_ind + 1];
-
- if ( HDstrcmp( infile, outfile ) == 0) {
- error_msg("file names cannot be the same\n");
- usage(h5tools_getprogname());
- h5tools_setstatus(EXIT_FAILURE);
- goto done;
- }
- }
- else {
- error_msg("file names missing\n");
- usage(h5tools_getprogname());
- h5tools_setstatus(EXIT_FAILURE);
- goto done;
- }
- }
-
- if (enable_error_stack) {
- H5Eset_auto2(H5E_DEFAULT, func, edata);
- H5Eset_auto2(H5tools_ERR_STACK_g, tools_func, tools_edata);
- }
-
- /* pack it */
- h5tools_setstatus(h5repack(infile, outfile, &options));
-
-done:
- /* free tables */
- h5repack_end(&options);
-
- leave(h5tools_getstatus());
-}
-
diff --git a/tools/h5repack/h5repack_opttable.c b/tools/h5repack/h5repack_opttable.c
deleted file mode 100644
index 8c98b76..0000000
--- a/tools/h5repack/h5repack_opttable.c
+++ /dev/null
@@ -1,367 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by The HDF Group. *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from help@hdfgroup.org. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#include "h5repack.h"
-#include "h5tools.h"
-#include "h5tools_utils.h"
-
-/*-------------------------------------------------------------------------
- * Function: init_packobject
- *
- * Purpose: initialize a pack_info_t structure
- *
- * Return: void
- *
- *-------------------------------------------------------------------------
- */
-
-void init_packobject(pack_info_t *obj) {
- int j, k;
-
- HDstrcpy(obj->path, "\0");
- for (j = 0; j < H5_REPACK_MAX_NFILTERS; j++) {
- obj->filter[j].filtn = -1;
- for (k = 0; k < CD_VALUES; k++)
- obj->filter[j].cd_values[k] = 0;
- }
- obj->chunk.rank = -1;
- obj->refobj_id = -1;
- obj->layout = H5D_LAYOUT_ERROR;
- obj->nfilters = 0;
-}
-
-/*-------------------------------------------------------------------------
- * Function: aux_tblinsert_filter
- *
- * Purpose: auxiliary function, inserts the filter in object OBJS[ I ]
- *
- * Return: void
- *
- *-------------------------------------------------------------------------
- */
-
-static void aux_tblinsert_filter(pack_opttbl_t *table, unsigned int I,
- filter_info_t filt) {
- if (table->objs[I].nfilters < H5_REPACK_MAX_NFILTERS) {
- table->objs[I].filter[table->objs[I].nfilters++] = filt;
- }
- else {
- error_msg(
- "cannot insert the filter in this object.\
- Maximum capacity exceeded\n");
- }
-}
-
-/*-------------------------------------------------------------------------
- * Function: aux_tblinsert_layout
- *
- * Purpose: auxiliary function, inserts the layout in object OBJS[ I ]
- *
- * Return: void
- *
- *-------------------------------------------------------------------------
- */
-
-static void aux_tblinsert_layout(pack_opttbl_t *table, unsigned int I,
- pack_info_t *pack) {
- int k;
-
- table->objs[I].layout = pack->layout;
- if (H5D_CHUNKED == pack->layout) {
- /* -2 means the NONE option, remove chunking
- and set the layout to contiguous */
- if (pack->chunk.rank == -2) {
- table->objs[I].layout = H5D_CONTIGUOUS;
- table->objs[I].chunk.rank = -2;
- }
- /* otherwise set the chunking type */
- else {
- table->objs[I].chunk.rank = pack->chunk.rank;
- for (k = 0; k < pack->chunk.rank; k++)
- table->objs[I].chunk.chunk_lengths[k] =
- pack->chunk.chunk_lengths[k];
- }
- }
-}
-
-/*-------------------------------------------------------------------------
- * Function: aux_inctable
- *
- * Purpose: auxiliary function, increases the size of the collection by N_OBJS
- *
- * Return: 0, ok, -1, fail
- *
- *-------------------------------------------------------------------------
- */
-static int
-aux_inctable(pack_opttbl_t *table, unsigned n_objs)
-{
- unsigned u;
-
- table->size += n_objs;
- table->objs = (pack_info_t*) HDrealloc(table->objs, table->size * sizeof(pack_info_t));
- if (table->objs == NULL) {
- error_msg("not enough memory for options table\n");
- return -1;
- }
-
- for (u = table->nelems; u < table->size; u++)
- init_packobject(&table->objs[u]);
-
- return 0;
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: options_table_init
- *
- * Purpose: init options table
- *
- * Return: 0, ok, -1, fail
- *
- *-------------------------------------------------------------------------
- */
-int options_table_init(pack_opttbl_t **tbl) {
- unsigned int i;
- pack_opttbl_t *table;
-
- if (NULL == (table = (pack_opttbl_t *) HDmalloc(sizeof(pack_opttbl_t)))) {
- error_msg("not enough memory for options table\n");
- return -1;
- }
-
- table->size = 30;
- table->nelems = 0;
- if (NULL == (table->objs =
- (pack_info_t*) HDmalloc(table->size * sizeof(pack_info_t)))) {
- error_msg("not enough memory for options table\n");
- HDfree(table);
- return -1;
- }
-
- for (i = 0; i < table->size; i++)
- init_packobject(&table->objs[i]);
-
- *tbl = table;
- return 0;
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: options_table_free
- *
- * Purpose: free table memory
- *
- * Return: 0
- *
- *-------------------------------------------------------------------------
- */
-
-int options_table_free(pack_opttbl_t *table) {
- HDfree(table->objs);
- HDfree(table);
- return 0;
-}
-
-/*-------------------------------------------------------------------------
- * Function: options_add_layout
- *
- * Purpose: add a layout option to the option list
- *
- * Return: 0, ok, -1, fail
- *
- *-------------------------------------------------------------------------
- */
-int
-options_add_layout(obj_list_t *obj_list, unsigned n_objs, pack_info_t *pack,
- pack_opttbl_t *table)
-{
- unsigned i, j, I;
- unsigned added = 0;
- hbool_t found = FALSE;
-
- /* increase the size of the collection by N_OBJS if necessary */
- if (table->nelems + n_objs >= table->size)
- if (aux_inctable(table, n_objs) < 0)
- return -1;
-
- /* search if this object is already in the table; "path" is the key */
- if (table->nelems > 0) {
- /* go tru the supplied list of names */
- for (j = 0; j < n_objs; j++) {
- /* linear table search */
- for (i = 0; i < table->nelems; i++) {
- /*already on the table */
- if (HDstrcmp(obj_list[j].obj,table->objs[i].path) == 0) {
- /* already chunk info inserted for this one; exit */
- if (table->objs[i].chunk.rank > 0) {
- error_msg("chunk information already inserted for <%s>\n", obj_list[j].obj);
- HDexit(EXIT_FAILURE);
- }
- /* insert the layout info */
- else {
- aux_tblinsert_layout(table, i, pack);
- found = TRUE;
- break;
- }
- } /* if */
- } /* i */
-
- if (!found) {
- /* keep the grow in a temp var */
- I = table->nelems + added;
- added++;
- HDstrcpy(table->objs[I].path, obj_list[j].obj);
- aux_tblinsert_layout(table, I, pack);
- }
- /* cases where we have an already inserted name but there is a new name also
- example:
- -f dset1:GZIP=1 -l dset1,dset2:CHUNK=20x20
- dset1 is already inserted, but dset2 must also be
- */
- else
- if(found && HDstrcmp(obj_list[j].obj,table->objs[i].path) != 0) {
- /* keep the grow in a temp var */
- I = table->nelems + added;
- added++;
- HDstrcpy(table->objs[I].path, obj_list[j].obj);
- aux_tblinsert_layout(table, I, pack);
- }
- } /* j */
- }
- /* first time insertion */
- else {
- /* go tru the supplied list of names */
- for (j = 0; j < n_objs; j++) {
- I = table->nelems + added;
- added++;
- HDstrcpy(table->objs[I].path, obj_list[j].obj);
- aux_tblinsert_layout(table, I, pack);
- }
- }
-
- table->nelems += added;
-
- return 0;
-}
-
-/*-------------------------------------------------------------------------
- * Function: options_add_filter
- *
- * Purpose: add a compression -f option to the option list
- *
- * Return: 0, ok, -1, fail
- *
- *-------------------------------------------------------------------------
- */
-int
-options_add_filter(obj_list_t *obj_list, unsigned n_objs, filter_info_t filt,
- pack_opttbl_t *table)
-{
- unsigned int i, j, I;
- unsigned added = 0;
- hbool_t found = FALSE;
-
- /* increase the size of the collection by N_OBJS if necessary */
- if (table->nelems + n_objs >= table->size)
- if (aux_inctable(table, n_objs) < 0)
- return -1;
-
- /* search if this object is already in the table; "path" is the key */
- if (table->nelems > 0) {
- /* go tru the supplied list of names */
- for (j = 0; j < n_objs; j++) {
- /* linear table search */
- for (i = 0; i < table->nelems; i++) {
- /*already on the table */
- if (HDstrcmp(obj_list[j].obj, table->objs[i].path) == 0) {
- /* insert */
- aux_tblinsert_filter(table, i, filt);
- found = TRUE;
- break;
- } /* if */
- } /* i */
-
- if (!found) {
- /* keep the grow in a temp var */
- I = table->nelems + added;
- added++;
- HDstrcpy(table->objs[I].path, obj_list[j].obj);
- aux_tblinsert_filter(table, I, filt);
- }
- /* cases where we have an already inserted name but there is a new name also
- example:
- -l dset1:CHUNK=20x20 -f dset1,dset2:GZIP=1
- dset1 is already inserted, but dset2 must also be
- */
- else
- if(found && HDstrcmp(obj_list[j].obj,table->objs[i].path) != 0) {
- /* keep the grow in a temp var */
- I = table->nelems + added;
- added++;
- HDstrcpy(table->objs[I].path, obj_list[j].obj);
- aux_tblinsert_filter(table, I, filt);
- }
- } /* j */
- }
-
- /* first time insertion */
- else {
- /* go tru the supplied list of names */
- for (j = 0; j < n_objs; j++) {
- I = table->nelems + added;
- added++;
- HDstrcpy(table->objs[I].path, obj_list[j].obj);
- aux_tblinsert_filter(table, I, filt);
- }
- }
-
- table->nelems += added;
-
- return 0;
-}
-
-/*-------------------------------------------------------------------------
- * Function: options_get_object
- *
- * Purpose: get object from table; "path" is the key
- *
- * Return: pack_info_t* OBJECT or NULL if not found; PATH is the key
- *
- *-------------------------------------------------------------------------
- */
-
-pack_info_t* options_get_object(const char *path, pack_opttbl_t *table) {
- unsigned int i;
- char tbl_path[MAX_NC_NAME + 1]; /* +1 for start with "/" case */
-
- for (i = 0; i < table->nelems; i++) {
- /* make full path (start with "/") to compare correctly */
- if (HDstrncmp(table->objs[i].path, "/", 1)) {
- HDstrcpy(tbl_path, "/");
- HDstrcat(tbl_path, table->objs[i].path);
- }
- else
- HDstrcpy(tbl_path, table->objs[i].path);
-
- /* found it */
- if (HDstrcmp(tbl_path, path) == 0) {
- return (&table->objs[i]);
- }
- }
-
- return NULL;
-}
-
diff --git a/tools/h5repack/h5repack_parse.c b/tools/h5repack/h5repack_parse.c
deleted file mode 100644
index 004b9e4..0000000
--- a/tools/h5repack/h5repack_parse.c
+++ /dev/null
@@ -1,616 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by The HDF Group. *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from help@hdfgroup.org. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#include "h5repack.h"
-#include "h5tools.h"
-#include "h5tools_utils.h"
-
-/*-------------------------------------------------------------------------
- * Function: parse_filter
- *
- * Purpose: read filter information
- *
- * Return: a list of names, the number of names and its compression type
- *
- * <name of filter> can be:
- * GZIP, to apply the HDF5 GZIP filter (GZIP compression)
- * SZIP, to apply the HDF5 SZIP filter (SZIP compression)
- * SHUF, to apply the HDF5 shuffle filter
- * FLET, to apply the HDF5 checksum filter
- * NBIT, to apply the HDF5 NBIT filter (NBIT compression)
- * SOFF, to apply the HDF5 scale+offset filter (compression)
- * UD, to apply a User Defined filter k,m,n1[,…,nm]
- * NONE, to remove the filter
- *
- * Examples:
- * "GZIP=6"
- * "A,B:NONE"
- *-------------------------------------------------------------------------
- */
-obj_list_t* parse_filter(const char *str, unsigned *n_objs, filter_info_t *filt,
- pack_opt_t *options, int *is_glb) {
- size_t i, m, u;
- char c;
- size_t len = HDstrlen(str);
- int k, l, p, q, end_obj = -1, no_param = 0;
- unsigned j, n;
- char sobj[MAX_NC_NAME];
- char scomp[10];
- char stype[6];
- char smask[3];
- obj_list_t* obj_list = NULL;
- unsigned pixels_per_block;
-
- /* initialize compression info */
- HDmemset(filt, 0, sizeof(filter_info_t));
- *is_glb = 0;
-
- /* check for the end of object list and number of objects */
- for (i = 0, n = 0; i < len; i++) {
- c = str[i];
- if (c == ':')
- end_obj = (int) i;
- if (c == ',')
- n++;
- }
-
- /* Check for missing : */
- if (end_obj == -1) {
- /* apply to all objects */
- options->all_filter = 1;
- *is_glb = 1;
- }
-
- n++;
- obj_list = (obj_list_t *) HDmalloc(n * sizeof(obj_list_t));
- if (obj_list == NULL) {
- error_msg("could not allocate object list\n");
- return NULL;
- }
- *n_objs = n;
-
- /* get object list */
- if (end_obj > 0)
- for (j = 0, k = 0, n = 0; j < (unsigned) end_obj; j++, k++) {
- c = str[j];
- sobj[k] = c;
- if (c == ',' || j == (unsigned) (end_obj - 1)) {
- if (c == ',')
- sobj[k] = '\0';
- else
- sobj[k + 1] = '\0';
- HDstrcpy(obj_list[n].obj, sobj);
- HDmemset(sobj, 0, sizeof(sobj));
- n++;
- k = -1;
- }
- }
- /* nothing after : */
- if (end_obj + 1 == (int) len) {
- if (obj_list)
- HDfree(obj_list);
- error_msg("input Error: Invalid compression type in <%s>\n", str);
- HDexit(EXIT_FAILURE);
- }
-
- /* get filter additional parameters */
- m = 0;
- for (i = (size_t)(end_obj + 1), k = 0, j = 0; i < len; i++, k++) {
- c = str[i];
- scomp[k] = c;
- if (c == '=' || i == len - 1) {
- if (c == '=') { /*one more parameter */
- scomp[k] = '\0'; /*cut space */
-
- /*-------------------------------------------------------------------------
- * H5Z_FILTER_SZIP
- * szip has the format SZIP=<pixels per block,coding>
- * pixels per block is a even number in 2-32 and coding method is 'EC' or 'NN'
- * example SZIP=8,NN
- *-------------------------------------------------------------------------
- */
- if (HDstrcmp(scomp, "SZIP") == 0) {
- l = -1; /* mask index check */
- for (m = 0, u = i + 1; u < len; u++, m++) {
- if (str[u] == ',') {
- stype[m] = '\0'; /* end digit of szip */
- l = 0; /* start EC or NN search */
- u++; /* skip ',' */
- }
- c = str[u];
- if (!HDisdigit(c) && l == -1) {
- if (obj_list)
- HDfree(obj_list);
- error_msg("compression parameter not digit in <%s>\n", str);
- HDexit(EXIT_FAILURE);
- }
- if (l == -1)
- stype[m] = c;
- else {
- smask[l] = c;
- l++;
- if (l == 2) {
- smask[l] = '\0';
- i = len - 1; /* end */
- (*n_objs)--; /* we counted an extra ',' */
- if (HDstrcmp(smask,"NN") == 0)
- filt->cd_values[j++] = H5_SZIP_NN_OPTION_MASK;
- else if (HDstrcmp(smask,"EC") == 0)
- filt->cd_values[j++] = H5_SZIP_EC_OPTION_MASK;
- else {
- error_msg("szip mask must be 'NN' or 'EC' \n");
- HDexit(EXIT_FAILURE);
- }
- }
- }
- } /* u */
- } /*if */
-
- /*-------------------------------------------------------------------------
- * H5Z_FILTER_SCALEOFFSET
- * scaleoffset has the format SOFF=<scale_factor,scale_type>
- * scale_type can be
- * integer datatype, H5Z_SO_INT (IN)
- * float datatype using D-scaling method, H5Z_SO_FLOAT_DSCALE (DS)
- * float datatype using E-scaling method, H5Z_SO_FLOAT_ESCALE (ES) , not yet implemented
- * for integer datatypes, scale_factor denotes Minimum Bits
- * for float datatypes, scale_factor denotes decimal scale factor
- * examples
- * SOFF=31,IN
- * SOFF=3,DF
- *-------------------------------------------------------------------------
- */
- else if (HDstrcmp(scomp, "SOFF") == 0) {
- l = -1; /* mask index check */
- for (m = 0, u = i + 1; u < len; u++, m++) {
- if (str[u] == ',') {
- stype[m] = '\0'; /* end digit */
- l = 0; /* start 'IN' , 'DS', or 'ES' search */
- u++; /* skip ',' */
- }
- c = str[u];
- if (!HDisdigit(c) && l == -1) {
- if (obj_list)
- HDfree(obj_list);
- error_msg("compression parameter is not a digit in <%s>\n", str);
- HDexit(EXIT_FAILURE);
- }
- if (l == -1)
- stype[m] = c;
- else {
- smask[l] = c;
- l++;
- if (l == 2) {
- smask[l] = '\0';
- i = len - 1; /* end */
- (*n_objs)--; /* we counted an extra ',' */
- if (HDstrcmp(smask,"IN") == 0)
- filt->cd_values[j++] = H5Z_SO_INT;
- else if (HDstrcmp(smask, "DS") == H5Z_SO_FLOAT_DSCALE)
- filt->cd_values[j++] = H5Z_SO_FLOAT_DSCALE;
- else {
- error_msg("scale type must be 'IN' or 'DS' \n");
- HDexit(EXIT_FAILURE);
- }
- }
- }
- } /* u */
- } /*if */
-
- /*-------------------------------------------------------------------------
- * User Defined
- * has the format UD=<filter_number,cd_value_count,value_1[,value_2,...,value_N]>
- * BZIP2 example
- * UD=307,1,9
- *-------------------------------------------------------------------------
- */
- else if (HDstrcmp(scomp, "UD") == 0) {
- l = -1; /* filter number index check */
- p = -1; /* CD_VAL count check */
- for (m = 0, q = 0, u = i + 1; u < len; u++, m++, q++) {
- if (str[u] == ',') {
- stype[q] = '\0'; /* end digit */
- if (l == -1) {
- filt->filtn = HDatoi(stype);
- l = 0;
- }
- else if (p == -1) {
- filt->cd_nelmts = HDstrtoull(stype, NULL, 0);
- p = 0;
- }
- else
- filt->cd_values[j++] = (unsigned)HDstrtoul(stype, NULL, 0);
- q = 0;
- u++; /* skip ',' */
- }
- c = str[u];
- if (!HDisdigit(c) && l == -1) {
- if (obj_list)
- HDfree(obj_list);
- error_msg("filter number parameter is not a digit in <%s>\n", str);
- HDexit(EXIT_FAILURE);
- }
- stype[q] = c;
- } /* for u */
- stype[q] = '\0';
- } /*if */
-
- /*-------------------------------------------------------------------------
- * all other filters
- *-------------------------------------------------------------------------
- */
- else {
- /* here we could have 1 or 2 digits */
- for (m = 0, u = i + 1; u < len; u++, m++) {
- c = str[u];
- if (!HDisdigit(c)) {
- if (obj_list)
- HDfree(obj_list);
- error_msg("compression parameter is not a digit in <%s>\n", str);
- HDexit(EXIT_FAILURE);
- }
- stype[m] = c;
- } /* u */
-
- stype[m] = '\0';
- } /*if */
-
- filt->cd_values[j++] = (unsigned) HDstrtoul(stype, NULL, 0);
- if(filt->cd_nelmts == 0)
- j = 0;
- i += m; /* jump */
- }
- else if (i == len - 1) { /*no more parameters */
- scomp[k + 1] = '\0';
- no_param = 1;
- }
-
- /*-------------------------------------------------------------------------
- * translate from string to filter symbol
- *-------------------------------------------------------------------------
- */
-
- /*-------------------------------------------------------------------------
- * H5Z_FILTER_NONE
- *-------------------------------------------------------------------------
- */
- if (HDstrcmp(scomp, "NONE") == 0) {
- filt->filtn = H5Z_FILTER_NONE;
- filt->cd_nelmts = 0;
- }
-
- /*-------------------------------------------------------------------------
- * H5Z_FILTER_DEFLATE
- *-------------------------------------------------------------------------
- */
- else if (HDstrcmp(scomp, "GZIP") == 0) {
- filt->filtn = H5Z_FILTER_DEFLATE;
- filt->cd_nelmts = 1;
- if (no_param) { /*no more parameters, GZIP must have parameter */
- if (obj_list)
- HDfree(obj_list);
- error_msg("missing compression parameter in <%s>\n", str);
- HDexit(EXIT_FAILURE);
- }
- }
-
- /*-------------------------------------------------------------------------
- * H5Z_FILTER_SZIP
- *-------------------------------------------------------------------------
- */
- else if (HDstrcmp(scomp, "SZIP") == 0) {
- filt->filtn = H5Z_FILTER_SZIP;
- filt->cd_nelmts = 2;
- if (no_param) { /*no more parameters, SZIP must have parameter */
- if (obj_list)
- HDfree(obj_list);
- error_msg("missing compression parameter in <%s>\n", str);
- HDexit(EXIT_FAILURE);
- }
- }
-
- /*-------------------------------------------------------------------------
- * H5Z_FILTER_SHUFFLE
- *-------------------------------------------------------------------------
- */
- else if (HDstrcmp(scomp, "SHUF") == 0) {
- filt->filtn = H5Z_FILTER_SHUFFLE;
- filt->cd_nelmts = 0;
- if (m > 0) { /*shuffle does not have parameter */
- if (obj_list)
- HDfree(obj_list);
- error_msg("extra parameter in SHUF <%s>\n", str);
- HDexit(EXIT_FAILURE);
- }
- }
- /*-------------------------------------------------------------------------
- * H5Z_FILTER_FLETCHER32
- *-------------------------------------------------------------------------
- */
- else if (HDstrcmp(scomp, "FLET") == 0) {
- filt->filtn = H5Z_FILTER_FLETCHER32;
- filt->cd_nelmts = 0;
- if (m > 0) { /*shuffle does not have parameter */
- if (obj_list)
- HDfree(obj_list);
- error_msg("extra parameter in FLET <%s>\n", str);
- HDexit(EXIT_FAILURE);
- }
- }
- /*-------------------------------------------------------------------------
- * H5Z_FILTER_NBIT
- *-------------------------------------------------------------------------
- */
- else if (HDstrcmp(scomp, "NBIT") == 0) {
- filt->filtn = H5Z_FILTER_NBIT;
- filt->cd_nelmts = 0;
- if (m > 0) { /*nbit does not have parameter */
- if (obj_list)
- HDfree(obj_list);
- error_msg("extra parameter in NBIT <%s>\n", str);
- HDexit(EXIT_FAILURE);
- }
- }
- /*-------------------------------------------------------------------------
- * H5Z_FILTER_SCALEOFFSET
- *-------------------------------------------------------------------------
- */
- else if (HDstrcmp(scomp, "SOFF") == 0) {
- filt->filtn = H5Z_FILTER_SCALEOFFSET;
- filt->cd_nelmts = 2;
- if (no_param) { /*no more parameters, SOFF must have parameter */
- if (obj_list)
- HDfree(obj_list);
- error_msg("missing compression parameter in <%s>\n", str);
- HDexit(EXIT_FAILURE);
- }
- }
- /*-------------------------------------------------------------------------
- * User Defined Filter
- *-------------------------------------------------------------------------
- */
- else if (HDstrcmp(scomp, "UD") == 0) {
- /* parameters does not match count */
- if (filt->cd_nelmts != j) {
- if (obj_list)
- HDfree(obj_list);
- error_msg("incorrect number of compression parameters in <%s>\n", str);
- HDexit(EXIT_FAILURE);
- }
- }
- else {
- if (obj_list)
- HDfree(obj_list);
- error_msg("invalid filter type in <%s>\n", str);
- HDexit(EXIT_FAILURE);
- }
- }
- } /*i*/
-
- /*-------------------------------------------------------------------------
- * check valid parameters
- *-------------------------------------------------------------------------
- */
-
- switch (filt->filtn) {
- /*-------------------------------------------------------------------------
- * H5Z_FILTER_DEFLATE
- *-------------------------------------------------------------------------
- */
- case H5Z_FILTER_DEFLATE:
- if (filt->cd_values[0] > 9) {
- if (obj_list)
- HDfree(obj_list);
- error_msg("invalid compression parameter in <%s>\n", str);
- HDexit(EXIT_FAILURE);
- }
- break;
- /*-------------------------------------------------------------------------
- * H5Z_FILTER_SZIP
- *-------------------------------------------------------------------------
- */
- case H5Z_FILTER_SZIP:
- pixels_per_block = filt->cd_values[0];
- if ((pixels_per_block % 2) == 1) {
- if (obj_list)
- HDfree(obj_list);
- error_msg("pixels_per_block is not even in <%s>\n", str);
- HDexit(EXIT_FAILURE);
- }
- if (pixels_per_block > H5_SZIP_MAX_PIXELS_PER_BLOCK) {
- if (obj_list)
- HDfree(obj_list);
- error_msg("pixels_per_block is too large in <%s>\n", str);
- HDexit(EXIT_FAILURE);
- }
- if ((HDstrcmp(smask,"NN") != 0) && (HDstrcmp(smask,"EC") != 0)) {
- if (obj_list)
- HDfree(obj_list);
- error_msg("szip mask must be 'NN' or 'EC' \n");
- HDexit(EXIT_FAILURE);
- }
- break;
- default:
- break;
- };
-
- return obj_list;
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: parse_layout
- *
- * Purpose: read layout info
- *
- * Return: a list of names, the number of names and its chunking info for
- * chunked. NULL, on error
- * the layout type can be:
- * CHUNK, to apply chunking layout
- * CONTI, to apply contiguous layout
- * COMPA, to apply compact layout
- *
- * Example:
- * "AA,B,CDE:CHUNK=10X10"
- *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
- *
- * Date: December 30, 2003
- *
- *-------------------------------------------------------------------------
- */
-obj_list_t* parse_layout(const char *str, unsigned *n_objs, pack_info_t *pack, /* info about layout needed */
-pack_opt_t *options) {
- obj_list_t* obj_list = NULL;
- unsigned i, j, n;
- char c;
- size_t len = HDstrlen(str);
- int k, end_obj = -1, c_index;
- char sobj[MAX_NC_NAME];
- char sdim[10];
- char slayout[10];
-
- HDmemset(sdim, '\0', sizeof(sdim));
- HDmemset(sobj, '\0', sizeof(sobj));
- HDmemset(slayout, '\0', sizeof(slayout));
-
- /* check for the end of object list and number of objects */
- for (i = 0, n = 0; i < len; i++) {
- c = str[i];
- if (c == ':')
- end_obj = (int) i;
- if (c == ',')
- n++;
- }
-
- if (end_obj == -1) { /* missing : chunk all */
- options->all_layout = 1;
- }
-
- n++;
- obj_list = (obj_list_t*) HDmalloc(n * sizeof(obj_list_t));
- if (obj_list == NULL) {
- error_msg("could not allocate object list\n");
- return NULL;
- }
- *n_objs = n;
-
- /* get object list */
- if (end_obj > 0)
- for (j = 0, k = 0, n = 0; j < (unsigned) end_obj; j++, k++) {
- c = str[j];
- sobj[k] = c;
- if (c == ',' || j == (unsigned) (end_obj - 1)) {
- if (c == ',')
- sobj[k] = '\0';
- else
- sobj[k + 1] = '\0';
- HDstrcpy(obj_list[n].obj, sobj);
- HDmemset(sobj, 0, sizeof(sobj));
- n++;
- k = -1;
- }
- }
-
- /* nothing after : */
- if (end_obj + 1 == (int) len) {
- if (obj_list)
- HDfree(obj_list);
- error_msg("in parse layout, no characters after : in <%s>\n", str);
- HDexit(EXIT_FAILURE);
- }
-
- /* get layout info */
- for (j = (unsigned) (end_obj + 1), n = 0; n <= 5; j++, n++) {
- if (n == 5) {
- slayout[n] = '\0'; /*cut string */
- if (HDstrcmp(slayout, "COMPA") == 0)
- pack->layout = H5D_COMPACT;
- else if (HDstrcmp(slayout, "CONTI") == 0)
- pack->layout = H5D_CONTIGUOUS;
- else if (HDstrcmp(slayout, "CHUNK") == 0)
- pack->layout = H5D_CHUNKED;
- else {
- error_msg("in parse layout, not a valid layout in <%s>\n", str);
- HDexit(EXIT_FAILURE);
- }
- }
- else {
- c = str[j];
- slayout[n] = c;
- }
- } /* j */
-
- if (pack->layout == H5D_CHUNKED) {
- /*-------------------------------------------------------------------------
- * get chunk info
- *-------------------------------------------------------------------------
- */
- k = 0;
- if (j > len) {
- if (obj_list)
- HDfree(obj_list);
- error_msg("in parse layout, <%s> Chunk dimensions missing\n", str);
- HDexit(EXIT_FAILURE);
- }
-
- for (i = j, c_index = 0; i < len; i++) {
- c = str[i];
- sdim[k] = c;
- k++; /*increment sdim index */
-
- if (!HDisdigit(c) && c != 'x' && c != 'N' && c != 'O' && c != 'N' && c != 'E') {
- if (obj_list)
- HDfree(obj_list);
- error_msg("in parse layout, <%s> Not a valid character in <%s>\n", sdim, str);
- HDexit(EXIT_FAILURE);
- }
-
- if (c == 'x' || i == len - 1) {
- if (c == 'x') {
- sdim[k - 1] = '\0';
- k = 0;
- pack->chunk.chunk_lengths[c_index] = HDstrtoull(sdim, NULL, 0);
- if (pack->chunk.chunk_lengths[c_index] == 0) {
- if (obj_list)
- HDfree(obj_list);
- error_msg("in parse layout, <%s> conversion to number in <%s>\n", sdim, str);
- HDexit(EXIT_FAILURE);
- }
- c_index++;
- }
- else if (i == len - 1) { /*no more parameters */
- sdim[k] = '\0';
- k = 0;
- if (HDstrcmp(sdim,"NONE") == 0) {
- pack->chunk.rank = -2;
- }
- else {
- pack->chunk.chunk_lengths[c_index] = HDstrtoull(sdim, NULL, 0);
- if (pack->chunk.chunk_lengths[c_index] == 0) {
- if (obj_list)
- HDfree(obj_list);
- error_msg("in parse layout, <%s> conversion to number in <%s>\n", sdim, str);
- HDexit(EXIT_FAILURE);
- }
- pack->chunk.rank = c_index + 1;
- }
- } /*if */
- } /*if c=='x' || i==len-1 */
- } /*i*/
- } /*H5D_CHUNKED*/
-
- return obj_list;
-}
diff --git a/tools/h5repack/h5repack_plugin.sh.in b/tools/h5repack/h5repack_plugin.sh.in
deleted file mode 100644
index c8d5bf7..0000000
--- a/tools/h5repack/h5repack_plugin.sh.in
+++ /dev/null
@@ -1,275 +0,0 @@
-#! /bin/sh
-#
-# Copyright by The HDF Group.
-# All rights reserved.
-#
-# This file is part of HDF5. The full HDF5 copyright notice, including
-# terms governing use, modification, and redistribution, is contained in
-# the files COPYING and Copyright.html. COPYING can be found at the root
-# of the source code distribution tree; Copyright.html can be found at the
-# root level of an installed copy of the electronic document set and is
-# linked from the top-level documents page. It can also be found at
-# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have access
-# to either file, you may request a copy from help@hdfgroup.org.
-#
-srcdir=@srcdir@
-TOP_BUILDDIR=@top_builddir@
-
-# Determine backward compatibility options enabled
-DEPRECATED_SYMBOLS="@DEPRECATED_SYMBOLS@"
-
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-
-H5REPACK=h5repack # The tool name
-H5REPACK_BIN=`pwd`/$H5REPACK # The path of the tool binary
-
-H5DUMP=../h5dump/h5dump # The h5dump tool name
-H5DUMP_BIN=`pwd`/$H5DUMP # The path of the h5dump tool binary
-
-nerrors=0
-verbose=yes
-exit_code=$EXIT_SUCCESS
-
-TEST_NAME=ud_plugin
-FROM_DIR=`pwd`/.libs
-PLUGIN_LIB="$FROM_DIR/libdynlibadd.*"
-PLUGIN_LIB2="$FROM_DIR/libdynlibvers.*"
-PLUGIN_LIBDIR=testdir3
-RM='rm -rf'
-
-GREP='grep'
-CP='cp'
-DIRNAME='dirname'
-LS='ls'
-AWK='awk'
-
-# source dirs
-SRC_TOOLS="$srcdir/.."
-
-# testfiles source dirs for tools
-SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles"
-
-TESTDIR=testplug
-test -d $TESTDIR || mkdir $TESTDIR
-
-######################################################################
-# test files
-# --------------------------------------------------------------------
-# All the test files copy from source directory to test directory
-# NOTE: Keep this framework to add/remove test files.
-# Any test files from other tools can be used in this framework.
-# This list are also used for checking exist.
-# Comment '#' without space can be used.
-# --------------------------------------------------------------------
-LIST_HDF5_TEST_FILES="
-$SRC_H5REPACK_TESTFILES/h5repack_layout.h5
-$SRC_H5REPACK_TESTFILES/h5repack_layout.h5-plugin_test.ddl
-$SRC_H5REPACK_TESTFILES/plugin_test.h5repack_layout.h5.tst
-$SRC_H5REPACK_TESTFILES/h5repack_layout.h5-plugin_version_test.ddl
-$SRC_H5REPACK_TESTFILES/plugin_version_test.h5repack_layout.h5.tst
-"
-#$SRC_H5REPACK_TESTFILES/h5repack_layout.UD.h5
-#$SRC_H5REPACK_TESTFILES/h5repack_layout.UD.h5-plugin_none.ddl
-#$SRC_H5REPACK_TESTFILES/plugin_none.h5repack_layout.UD.h5.tst
-#"
-
-#
-# copy test files and expected output files from source dirs to test dir
-#
-COPY_TESTFILES="$LIST_HDF5_TEST_FILES"
-
-# Main Body
-# Create test directories if not exists yet.
-test -d $PLUGIN_LIBDIR || mkdir -p $PLUGIN_LIBDIR
-if [ $? != 0 ]; then
- echo "Failed to create test directory($PLUGIN_LIBDIR)"
- exit $EXIT_FAILURE
-fi
-
-# copy plugin library for test
-$CP $PLUGIN_LIB $PLUGIN_LIBDIR
-if [ $? != 0 ]; then
- echo "Failed to copy plugin library ($PLUGIN_LIB) for test."
- exit $EXIT_FAILURE
-fi
-$CP $PLUGIN_LIB2 $PLUGIN_LIBDIR
-if [ $? != 0 ]; then
- echo "Failed to copy plugin library ($PLUGIN_LIB2) for test."
- exit $EXIT_FAILURE
-fi
-
-# setup plugin path
-ENVCMD="env HDF5_PLUGIN_PATH=../${PLUGIN_LIBDIR}"
-
-COPY_TESTFILES_TO_TESTDIR()
-{
- # copy test files. Used -f to make sure get a new copy
- for tstfile in $COPY_TESTFILES
- do
- # ignore '#' comment
- echo $tstfile | tr -d ' ' | grep '^#' > /dev/null
- RET=$?
- if [ $RET -eq 1 ]; then
- # skip cp if srcdir is same as destdir
- # this occurs when build/test performed in source dir and
- # make cp fail
- SDIR=`$DIRNAME $tstfile`
- INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'`
- INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'`
- if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then
- $CP -f $tstfile $TESTDIR
- if [ $? -ne 0 ]; then
- echo "Error: FAILED to copy $tstfile ."
-
- # Comment out this to CREATE expected file
- exit $EXIT_FAILURE
- fi
- fi
- fi
- done
-}
-
-CLEAN_TESTFILES_AND_TESTDIR()
-{
- # skip rm if srcdir is same as destdir
- # this occurs when build/test performed in source dir and
- # make cp fail
- SDIR=$SRC_H5REPACK_TESTFILES
- INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'`
- INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'`
- if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then
- $RM $TESTDIR
- fi
-}
-
-# Print a $* message left justified in a field of 70 characters
-#
-MESSAGE() {
- SPACES=" "
- echo "$* $SPACES" | cut -c1-70 | tr -d '\012'
-}
-
-# Print a line-line message left justified in a field of 70 characters
-# beginning with the word "Testing".
-#
-TESTING() {
- SPACES=" "
- echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012'
-}
-
-# Print a line-line message left justified in a field of 70 characters
-# beginning with the word "Verifying".
-#
-VERIFY() {
- MESSAGE "Verifying $*"
-}
-
-# This is different from $srcdir/../../bin/output_filter.sh
-STDOUT_FILTER() {
- result_file=$1
- tmp_file=/tmp/h5test_tmp_$$
- # Filter name of files.
- cp $result_file $tmp_file
- sed -e '/^Opening file/d' -e '/^Making file/d' \
- < $tmp_file > $result_file
- # cleanup
- rm -f $tmp_file
-}
-
-# This runs h5repack comparing output with h5dump output
-# from -pH option
-#
-TOOLTEST_DUMP()
-{
- echo $@
- infile=$2
- outfile=out-$1.$2
- expect1="$TESTDIR/$1.$2.tst"
- actual1="$TESTDIR/$1.$2.out"
- actual1_err="$TESTDIR/$1.$2.err"
- expect2="$TESTDIR/$2-$1.ddl"
- actual2="$TESTDIR/$2-$1.out"
- actual2_err="$TESTDIR/$2-$1.err"
-
- shift
- shift
-
- # Run test.
- TESTING $H5REPACK $@
- (
- cd $TESTDIR
- $ENVCMD $H5REPACK_BIN "$@" $infile $outfile
- ) >$actual1 2>$actual1_err
- RET=$?
- STDOUT_FILTER $actual1
- cat $actual1_err >> $actual1
- if [ $RET != 0 ] ; then
- echo "*FAILED*"
- nerrors="`expr $nerrors + 1`"
- else
- echo " PASSED"
- if cmp -s $expect1 $actual1; then
- echo " PASSED"
- else
- echo "*FAILED*"
- echo " Expected result (*.tst) differs from actual result (*.out)"
- nerrors="`expr $nerrors + 1`"
- test yes = "$verbose" && diff -c $expect1 $actual1 |sed 's/^/ /'
- fi
- VERIFY h5dump output -pH $outfile
- (
- cd $TESTDIR
- $ENVCMD $H5DUMP_BIN -pH $outfile
- ) >$actual2 2>$actual2_err
- RET=$?
- cat $actual2_err >> $actual2
-
- if cmp -s $expect2 $actual2; then
- echo " PASSED"
- else
- echo "*FAILED*"
- echo " Expected result (*.ddl) differs from actual result (*.out)"
- nerrors="`expr $nerrors + 1`"
- test yes = "$verbose" && diff -c $expect2 $actual2 |sed 's/^/ /'
- fi
-
- fi
-
-
- rm -f $actual1 $actual1_err $actual2 $actual2_err
- rm -f $outfile
-}
-
-##############################################################################
-### T H E T E S T S
-##############################################################################
-# prepare for test
-COPY_TESTFILES_TO_TESTDIR
-
-# Run the test
-arg="h5repack_layout.h5 -v -f UD=260,4,9,1,9,235"
-TOOLTEST_DUMP plugin_version_test $arg
-
-arg="h5repack_layout.h5 -v -f UD=257,1,9"
-TOOLTEST_DUMP plugin_test $arg
-
-#arg="h5repack_layout.UD.h5 -v -f NONE"
-#TOOLTEST_DUMP plugin_none $arg
-
-# print results
-if test $nerrors -ne 0 ; then
- echo "$nerrors errors encountered"
- exit_code=$EXIT_FAILURE
-else
- echo "All Plugin API tests passed."
- exit_code=$EXIT_SUCCESS
-fi
-
-# Clean up temporary files/directories
-CLEAN_TESTFILES_AND_TESTDIR
-
-# Clean up temporary files/directories and leave
-$RM $PLUGIN_LIBDIR
-
-exit $exit_code
diff --git a/tools/h5repack/h5repack_refs.c b/tools/h5repack/h5repack_refs.c
deleted file mode 100644
index f0f32c3..0000000
--- a/tools/h5repack/h5repack_refs.c
+++ /dev/null
@@ -1,877 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by The HDF Group. *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from help@hdfgroup.org. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#include "h5repack.h"
-#include "h5diff.h"
-#include "h5tools.h"
-
-
-/*-------------------------------------------------------------------------
- * local functions
- *-------------------------------------------------------------------------
- */
-
-static const char* MapIdToName(hid_t refobj_id,trav_table_t *travt);
-static int copy_refs_attr(hid_t loc_in, hid_t loc_out, pack_opt_t *options,
- trav_table_t *travt, hid_t fidout);
-static herr_t update_ref_value(hid_t obj_id, H5R_type_t ref_type, void *ref_in,
- hid_t fid_out, void *ref_out, trav_table_t *travt);
-
-/*-------------------------------------------------------------------------
- * Function: do_copy_refobjs
- *
- * Purpose: duplicate all referenced HDF5 objects in the file
- * and create hard links
- *
- * Return: 0, ok, -1 no
- *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
- *
- * Date: December, 10, 2003
- *
- *-------------------------------------------------------------------------
- */
-
-int do_copy_refobjs(hid_t fidin,
- hid_t fidout,
- trav_table_t *travt,
- pack_opt_t *options) /* repack options */
-{
- int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */
- hid_t grp_in = (-1); /* read group ID */
- hid_t grp_out = (-1); /* write group ID */
- hid_t dset_in = (-1); /* read dataset ID */
- hid_t dset_out = (-1); /* write dataset ID */
- hid_t type_in = (-1); /* named type ID */
- hid_t dcpl_id = (-1); /* dataset creation property list ID */
- hid_t space_id = (-1); /* space ID */
- hid_t ftype_id = (-1); /* file data type ID */
- hid_t mtype_id = (-1); /* memory data type ID */
- size_t msize; /* memory size of memory type */
- hsize_t nelmts; /* number of elements in dataset */
- int rank; /* rank of dataset */
- hsize_t dims[H5S_MAX_RANK]; /* dimensions of dataset */
- unsigned int i, j;
- int k;
- named_dt_t *named_dt_head=NULL; /* Pointer to the stack of named datatypes
- copied */
-
- /*-------------------------------------------------------------------------
- * browse
- *-------------------------------------------------------------------------
- */
- for(i = 0; i < travt->nobjs; i++) {
- switch(travt->objs[i].type)
- {
- /*-------------------------------------------------------------------------
- * H5TRAV_TYPE_GROUP
- *-------------------------------------------------------------------------
- */
- case H5TRAV_TYPE_GROUP:
- /*-------------------------------------------------------------------------
- * copy referenced objects in attributes
- *-------------------------------------------------------------------------
- */
- if((grp_out = H5Gopen2(fidout, travt->objs[i].name, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gopen2 failed");
-
- if((grp_in = H5Gopen2(fidin, travt->objs[i].name, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gopen2 failed");
-
- if(copy_refs_attr(grp_in, grp_out, options, travt, fidout) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_refs_attr failed");
-
- if(H5Gclose(grp_out) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gclose failed");
- if(H5Gclose(grp_in) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gclose failed");
-
- /*-------------------------------------------------------------------------
- * check for hard links
- *-------------------------------------------------------------------------
- */
- if(travt->objs[i].nlinks)
- for(j = 0; j < travt->objs[i].nlinks; j++)
- H5Lcreate_hard(fidout, travt->objs[i].name, H5L_SAME_LOC, travt->objs[i].links[j].new_name, H5P_DEFAULT, H5P_DEFAULT);
- break;
-
- /*-------------------------------------------------------------------------
- * H5TRAV_TYPE_DATASET
- *-------------------------------------------------------------------------
- */
- case H5TRAV_TYPE_DATASET:
- if((dset_in = H5Dopen2(fidin, travt->objs[i].name, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dopen2 failed");
- if((space_id = H5Dget_space(dset_in)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_space failed");
- if((ftype_id = H5Dget_type(dset_in)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_type failed");
- if((dcpl_id = H5Dget_create_plist(dset_in)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_create_plist failed");
- if((rank = H5Sget_simple_extent_ndims(space_id)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sget_simple_extent_ndims failed");
- if(H5Sget_simple_extent_dims(space_id, dims, NULL) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sget_simple_extent_dims failed");
- nelmts = 1;
- for(k = 0; k < rank; k++)
- nelmts *= dims[k];
-
- if((mtype_id = h5tools_get_native_type(ftype_id)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "h5tools_get_native_type failed");
-
- if((msize = H5Tget_size(mtype_id)) == 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tget_size failed");
-
- /*-------------------------------------------------------------------------
- * check if the dataset creation property list has filters that
- * are not registered in the current configuration
- * 1) the external filters GZIP and SZIP might not be available
- * 2) the internal filters might be turned off
- *-------------------------------------------------------------------------
- */
- if(h5tools_canreadf(NULL, dcpl_id) == 1) {
- /*-------------------------------------------------------------------------
- * test for a valid output dataset
- *-------------------------------------------------------------------------
- */
- dset_out = FAIL;
-
- /*-------------------------------------------------------------------------
- * object references are a special case
- * we cannot just copy the buffers, but instead we recreate the reference
- *-------------------------------------------------------------------------
- */
- if(H5Tequal(mtype_id, H5T_STD_REF_OBJ)) {
- hid_t refobj_id;
- hobj_ref_t *refbuf = NULL; /* buffer for object references */
- hobj_ref_t *buf = NULL;
- const char* refname;
- unsigned u;
-
- /*-------------------------------------------------------------------------
- * read to memory
- *-------------------------------------------------------------------------
- */
- if(nelmts) {
- buf = (hobj_ref_t *)HDmalloc((unsigned)(nelmts * msize));
- if(buf==NULL) {
- printf("cannot read into memory\n" );
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDmalloc failed");
- } /* end if */
- if(H5Dread(dset_in, mtype_id, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dread failed");
-
- refbuf = (hobj_ref_t*) HDcalloc((unsigned)nelmts, msize);
- if(refbuf == NULL){
- printf("cannot allocate memory\n" );
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDcalloc failed");
- } /* end if */
- for(u = 0; u < nelmts; u++) {
- H5E_BEGIN_TRY {
- if((refobj_id = H5Rdereference2(dset_in, H5P_DEFAULT, H5R_OBJECT, &buf[u])) < 0)
- continue;
- } H5E_END_TRY;
-
- /* get the name. a valid name could only occur
- * in the second traversal of the file
- */
- if((refname = MapIdToName(refobj_id, travt)) != NULL) {
- /* create the reference, -1 parameter for objects */
- if(H5Rcreate(&refbuf[u], fidout, refname, H5R_OBJECT, (hid_t)-1) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Rcreate failed");
- if(options->verbose)
- {
- printf(FORMAT_OBJ,"dset",travt->objs[i].name );
- printf("object <%s> object reference created to <%s>\n",
- travt->objs[i].name,
- refname);
- }
- } /*refname*/
- H5Oclose(refobj_id);
- } /* u */
- } /*nelmts*/
-
- /*-------------------------------------------------------------------------
- * create/write dataset/close
- *-------------------------------------------------------------------------
- */
- if((dset_out = H5Dcreate2(fidout, travt->objs[i].name, mtype_id, space_id, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dcreate2 failed");
- if(nelmts)
- if(H5Dwrite(dset_out, mtype_id, H5S_ALL, H5S_ALL, H5P_DEFAULT, refbuf) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dwrite failed");
-
- if(buf)
- HDfree(buf);
- if(refbuf)
- HDfree(refbuf);
-
- /*------------------------------------------------------
- * copy attrs
- *----------------------------------------------------*/
- if(copy_attr(dset_in, dset_out, &named_dt_head, travt, options) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_attr failed");
- } /*H5T_STD_REF_OBJ*/
-
- /*-------------------------------------------------------------------------
- * dataset region references
- *-------------------------------------------------------------------------
- */
- else if(H5Tequal(mtype_id, H5T_STD_REF_DSETREG))
- {
- hid_t refobj_id;
- hdset_reg_ref_t *refbuf = NULL; /* input buffer for region references */
- hdset_reg_ref_t *buf = NULL; /* output buffer */
- const char* refname;
- unsigned u;
-
- /*-------------------------------------------------------------------------
- * read input to memory
- *-------------------------------------------------------------------------
- */
- if(nelmts) {
- buf = (hdset_reg_ref_t *)HDmalloc((unsigned)(nelmts * msize));
- if(buf == NULL) {
- printf("cannot read into memory\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDmalloc failed");
- } /* end if */
- if(H5Dread(dset_in, mtype_id, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dread failed");
-
- /*-------------------------------------------------------------------------
- * create output
- *-------------------------------------------------------------------------
- */
- refbuf = (hdset_reg_ref_t *)HDcalloc(sizeof(hdset_reg_ref_t), (size_t)nelmts); /*init to zero */
- if(refbuf == NULL) {
- printf("cannot allocate memory\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDcalloc failed");
- } /* end if */
-
- for(u = 0; u < nelmts; u++) {
- H5E_BEGIN_TRY {
- if((refobj_id = H5Rdereference2(dset_in, H5P_DEFAULT, H5R_DATASET_REGION, &buf[u])) < 0)
- continue;
- } H5E_END_TRY;
-
- /* get the name. a valid name could only occur
- * in the second traversal of the file
- */
- if((refname = MapIdToName(refobj_id, travt)) != NULL) {
- hid_t region_id; /* region id of the referenced dataset */
-
- if((region_id = H5Rget_region(dset_in, H5R_DATASET_REGION, &buf[u])) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Rget_region failed");
-
- /* create the reference, we need the space_id */
- if(H5Rcreate(&refbuf[u], fidout, refname, H5R_DATASET_REGION, region_id) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Rcreate failed");
- if(H5Sclose(region_id) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sclose failed");
- if(options->verbose)
- {
- printf(FORMAT_OBJ,"dset",travt->objs[i].name );
- printf("object <%s> region reference created to <%s>\n",
- travt->objs[i].name,
- refname);
- }
- } /*refname*/
- H5Oclose(refobj_id);
- } /* u */
- } /*nelmts*/
-
- /*-------------------------------------------------------------------------
- * create/write dataset/close
- *-------------------------------------------------------------------------
- */
- if((dset_out = H5Dcreate2(fidout, travt->objs[i].name, mtype_id, space_id, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dcreate2 failed");
- if(nelmts)
- if(H5Dwrite(dset_out, mtype_id, H5S_ALL, H5S_ALL, H5P_DEFAULT, refbuf) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dwrite failed");
-
- if(buf)
- HDfree(buf);
- if(refbuf)
- HDfree(refbuf);
-
- /*-----------------------------------------------------
- * copy attrs
- *----------------------------------------------------*/
- if(copy_attr(dset_in, dset_out, &named_dt_head, travt, options) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_attr failed");
- } /* H5T_STD_REF_DSETREG */
- /*-------------------------------------------------------------------------
- * not references, open previously created object in 1st traversal
- *-------------------------------------------------------------------------
- */
- else {
- if((dset_out = H5Dopen2(fidout, travt->objs[i].name, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dopen2 failed");
- } /* end else */
-
- HDassert(dset_out != FAIL);
-
- /*-------------------------------------------------------------------------
- * copy referenced objects in attributes
- *-------------------------------------------------------------------------
- */
- if(copy_refs_attr(dset_in, dset_out, options, travt, fidout) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "copy_refs_attr failed");
-
- /*-------------------------------------------------------------------------
- * check for hard links
- *-------------------------------------------------------------------------
- */
- if(travt->objs[i].nlinks)
- for(j = 0; j < travt->objs[i].nlinks; j++)
- H5Lcreate_hard(fidout, travt->objs[i].name, H5L_SAME_LOC, travt->objs[i].links[j].new_name, H5P_DEFAULT, H5P_DEFAULT);
-
- if(H5Dclose(dset_out) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed");
- } /*can_read*/
-
- /*-------------------------------------------------------------------------
- * close
- *-------------------------------------------------------------------------
- */
- if(H5Tclose(ftype_id) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed");
- if(H5Tclose(mtype_id) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed");
- if(H5Pclose(dcpl_id) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- if(H5Sclose(space_id) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sclose failed");
- if(H5Dclose(dset_in) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed");
- break;
-
- /*-------------------------------------------------------------------------
- * H5TRAV_TYPE_NAMED_DATATYPE
- *-------------------------------------------------------------------------
- */
- case H5TRAV_TYPE_NAMED_DATATYPE:
- if((type_in = H5Topen2(fidin, travt->objs[i].name, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Topen2 failed");
- if(H5Tclose(type_in) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed");
- break;
-
- /*-------------------------------------------------------------------------
- * H5TRAV_TYPE_LINK
- *-------------------------------------------------------------------------
- */
- case H5TRAV_TYPE_LINK:
- /*nothing to do */
- break;
-
- case H5TRAV_TYPE_UNKNOWN:
- case H5TRAV_TYPE_UDLINK:
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5TRAV invalid type");
-
- default:
- break;
- } /* end switch */
- } /* end for */
-
- /* Finalize (link) the stack of named datatypes (if any)
- * This function is paired with copy_named_datatype() which is called
- * in copy_attr(), so need to free.
- */
- named_datatype_free(&named_dt_head, 0);
-
- return ret_value;
-
-done:
- H5E_BEGIN_TRY {
- H5Gclose(grp_in);
- H5Gclose(grp_out);
- H5Pclose(dcpl_id);
- H5Sclose(space_id);
- H5Dclose(dset_in);
- H5Dclose(dset_out);
- H5Tclose(ftype_id);
- H5Tclose(mtype_id);
- H5Tclose(type_in);
- named_datatype_free(&named_dt_head, 0);
- } H5E_END_TRY;
-
- return ret_value;
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: copy_refs_attr
- *
- * Purpose: duplicate all referenced HDF5 located in attributes
- * relative to LOC_IN, which is obtained either from
- * loc_id = H5Gopen2(fid, name, H5P_DEFAULT);
- * loc_id = H5Dopen2(fid, name, H5P_DEFAULT);
- * loc_id = H5Topen2(fid, name, H5P_DEFAULT);
- *
- * Return: 0, ok, -1 no
- *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
- *
- * Modifier: xcao@hdfgroup.org, 9/12/2011
- * Update values of references(object and region) for the following types:
- * 1) References,
- * 2) ARRAY of reference,
- * 3) VLEN of references.
- * 4) COMPOUND of references.
- * This function does not handle references in other complicated structures,
- * such as references in nested compound datatypes.
- *
- * Date: October, 28, 2003
- *
- *-------------------------------------------------------------------------
- */
-
-static int copy_refs_attr(hid_t loc_in,
- hid_t loc_out,
- pack_opt_t *options,
- trav_table_t *travt,
- hid_t fidout /* for saving references */
- )
-{
- int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */
- hid_t attr_id = -1; /* attr ID */
- hid_t attr_out = -1; /* attr ID */
- hid_t space_id = -1; /* space ID */
- hid_t ftype_id = -1; /* file data type ID */
- hid_t mtype_id = -1; /* memory data type ID */
- size_t msize; /* memory size of type */
- hsize_t nelmts; /* number of elements in dataset */
- hsize_t dims[H5S_MAX_RANK];/* dimensions of dataset */
- char name[255];
- H5O_info_t oinfo; /* Object info */
- unsigned u, i, j;
- int rank;
- H5T_class_t type_class = -1;
- hbool_t is_ref=0, is_ref_vlen=0, is_ref_array=0, is_ref_comp=0;
- void *refbuf = NULL;
- void *buf = NULL;
- const char* refname = NULL;
- unsigned *ref_comp_index = NULL;
- size_t *ref_comp_size = NULL;
- int ref_comp_field_n = 0;
-
-
- if(H5Oget_info(loc_in, &oinfo) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Oget_info failed");
-
- for(u = 0; u < (unsigned)oinfo.num_attrs; u++) {
- is_ref = is_ref_vlen = is_ref_array = is_ref_comp = 0;
-
- /* open attribute */
- if((attr_id = H5Aopen_by_idx(loc_in, ".", H5_INDEX_CRT_ORDER, H5_ITER_INC, (hsize_t)u, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aopen_by_idx failed");
-
- /* get the file datatype */
- if((ftype_id = H5Aget_type(attr_id)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aget_type failed");
-
- type_class = H5Tget_class(ftype_id);
-
- if((mtype_id = h5tools_get_native_type(ftype_id)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "h5tools_get_native_type failed");
-
- if((msize = H5Tget_size(mtype_id)) == 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tget_size failed");
-
- is_ref = (type_class == H5T_REFERENCE);
-
- if(type_class == H5T_VLEN ) {
- hid_t base_type;
-
- base_type = H5Tget_super(ftype_id);
- is_ref_vlen = (H5Tget_class(base_type)==H5T_REFERENCE);
- msize = H5Tget_size(base_type);
- H5Tclose(base_type);
- }
- else if(type_class == H5T_ARRAY ) {
- hid_t base_type;
-
- base_type = H5Tget_super(ftype_id);
- is_ref_array = (H5Tget_class(base_type)==H5T_REFERENCE);
- msize = H5Tget_size(base_type);
- H5Tclose(base_type);
- }
- else if(type_class == H5T_COMPOUND) {
- int nmembers = H5Tget_nmembers(ftype_id) ;
-
- if (nmembers < 1)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tget_nmembers failed");
-
- ref_comp_index = (unsigned *)HDmalloc((size_t)nmembers*sizeof(unsigned));
- ref_comp_size = (size_t *)HDmalloc((size_t)nmembers*sizeof(ref_comp_size));
- ref_comp_field_n = 0;
-
- for (i=0; i<(unsigned)nmembers; i++) {
- hid_t mtid = H5Tget_member_type( ftype_id, i );
-
- if ((H5Tget_class(mtid)==H5T_REFERENCE)) {
- ref_comp_index[ref_comp_field_n] = i;
- ref_comp_size[ref_comp_field_n] = H5Tget_size(mtid);
- ref_comp_field_n++;
- }
- H5Tclose(mtid);
- }
-
- /* if compound don't contain reference type member, free the above
- * mallocs. Otherwise there can be memory leaks by the 'continue'
- * statement below. */
- if (!ref_comp_field_n) {
- if (ref_comp_index) {
- HDfree(ref_comp_index);
- ref_comp_index = NULL;
- }
-
- if (ref_comp_size) {
- HDfree(ref_comp_size);
- ref_comp_size = NULL;
- }
- }
- }
-
- is_ref_comp = (ref_comp_field_n > 0);
-
- if (!(is_ref || is_ref_vlen || is_ref_array || is_ref_comp)) {
- H5Tclose(mtype_id);
- H5Tclose(ftype_id);
- H5Aclose(attr_id);
- continue;
- }
-
- /* get name */
- if(H5Aget_name(attr_id, 255, name) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aget_name failed");
-
- /* get the dataspace handle */
- if((space_id = H5Aget_space(attr_id)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aget_space failed");
-
- /* get dimensions */
- if((rank = H5Sget_simple_extent_dims(space_id, dims, NULL)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sget_simple_extent_dims failed");
-
-
- /*-------------------------------------------------------------------------
- * elements
- *-------------------------------------------------------------------------
- */
- nelmts = 1;
- for(j = 0; j < (unsigned)rank; j++)
- nelmts *= dims[j];
-
- if (is_ref_array) {
- unsigned array_rank = 0;
- hsize_t array_size = 1;
- hsize_t array_dims[H5S_MAX_RANK];
- hid_t base_type;
-
- base_type = H5Tget_super(ftype_id);
- msize = H5Tget_size(base_type);
- H5Tclose(base_type);
-
- array_rank = (unsigned)H5Tget_array_ndims(mtype_id);
- H5Tget_array_dims2(mtype_id, array_dims);
- for(j = 0; j <array_rank; j++)
- array_size *= array_dims[j];
- nelmts *= array_size;
- }
-
- if((attr_out = H5Acreate2(loc_out, name, ftype_id, space_id, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Acreate2 failed");
-
- if (nelmts>0) {
- /* handle object references */
- if((is_ref || is_ref_array) && (H5R_OBJ_REF_BUF_SIZE==msize)) {
- buf = (hobj_ref_t *)HDmalloc((unsigned)(nelmts * msize));
- if(buf == NULL) {
- printf("cannot read into memory\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDmalloc failed");
- } /* end if */
- if(H5Aread(attr_id, mtype_id, buf) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aread failed");
-
- refbuf = (hobj_ref_t *)HDcalloc((unsigned)nelmts, msize);
- if(refbuf == NULL) {
- printf("cannot allocate memory\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDcalloc failed");
- } /* end if */
-
- for(i = 0; i < (unsigned)nelmts; i++) {
- if (update_ref_value(attr_id, H5R_OBJECT, &((hobj_ref_t *)buf)[i], fidout, &((hobj_ref_t *)refbuf)[i], travt)<0)
- continue;
- if(options->verbose)
- printf("object <%s> reference created to <%s>\n", name, refname);
- } /* i */
- } /* H5T_STD_REF_OBJ */
- /* handle region references */
- else if((is_ref || is_ref_array) && (H5R_DSET_REG_REF_BUF_SIZE == msize)) {
- buf = (hdset_reg_ref_t *)HDmalloc((unsigned)(nelmts * msize));
-
- if(buf == NULL) {
- printf( "cannot read into memory\n" );
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDmalloc failed");
- } /* end if */
- if(H5Aread(attr_id, mtype_id, buf) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aread failed");
-
- /*-------------------------------------------------------------------------
- * create output
- *-------------------------------------------------------------------------
- */
- refbuf = (hdset_reg_ref_t *)HDcalloc(sizeof(hdset_reg_ref_t), (size_t)nelmts); /*init to zero */
- if(refbuf == NULL) {
- printf( "cannot allocate memory\n" );
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDcalloc failed");
- } /* end if */
-
- for(i = 0; i < (unsigned)nelmts; i++) {
- if (update_ref_value(attr_id, H5R_DATASET_REGION, &((hdset_reg_ref_t *)buf)[i], fidout, &((hdset_reg_ref_t *)refbuf)[i], travt)<0)
- continue;
- if(options->verbose)
- printf("object <%s> region reference created to <%s>\n", name, refname);
- }
- } /* H5T_STD_REF_DSETREG */
- else if (is_ref_vlen) {
- /* handle VLEN of references */
-
- buf = (hvl_t *)HDmalloc((unsigned)(nelmts * sizeof(hvl_t)));
- refbuf = buf; /* reuse the read buffer for write */
-
- if(buf == NULL) {
- printf( "cannot read into memory\n" );
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDmalloc failed");
- } /* end if */
-
- if(H5Aread(attr_id, mtype_id, buf) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aread failed");
-
- if (H5R_OBJ_REF_BUF_SIZE==msize) {
- hobj_ref_t ref_out;
-
- for (i=0; i<(unsigned)nelmts; i++) {
- hobj_ref_t *ptr = (hobj_ref_t *)((hvl_t *)buf)[i].p;
-
- for (j=0; j<((hvl_t *)buf)[i].len; j++ ) {
- if (update_ref_value(attr_id, H5R_OBJECT, &(ptr[j]), fidout, &ref_out, travt)<0)
- continue;
- HDmemcpy(&(ptr[j]), &ref_out, msize);
- }
- } /* for (i=0; i<nelems; i++) */
- } else if (H5R_DSET_REG_REF_BUF_SIZE == msize) {
- hdset_reg_ref_t ref_out;
-
- for (i=0; i<(unsigned)nelmts; i++) {
- hdset_reg_ref_t *ptr = (hdset_reg_ref_t *)((hvl_t *)buf)[i].p;
-
- for (j=0; j<((hvl_t *)buf)[i].len; j++ ) {
- if (update_ref_value(attr_id, H5R_DATASET_REGION, &(ptr[j]), fidout, &ref_out, travt)<0)
- continue;
- HDmemcpy(&(ptr[j]), &ref_out, msize);
- }
- } /* for (i=0; i<nelems; i++) */
- }
- } /* else if (is_ref_vlen) */
- else if (is_ref_comp) {
- /* handle ref fields in a compound */
-
- buf = HDmalloc((unsigned)(nelmts * msize));
- refbuf = buf; /* reuse the read buffer for write */
-
- if(buf == NULL)
- {
- printf( "cannot read into memory\n" );
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "HDmalloc failed");
- } /* end if */
-
- if(H5Aread(attr_id, mtype_id, buf) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aread failed");
-
- for (i=0; i<(unsigned)nelmts; i++) {
- for (j=0; j<(unsigned)ref_comp_field_n; j++) {
- if (ref_comp_size[j] == H5R_OBJ_REF_BUF_SIZE) {
- size_t idx = (i * msize) + H5Tget_member_offset(mtype_id, ref_comp_index[j]);
- hobj_ref_t ref_out;
-
- if (update_ref_value(attr_id, H5R_OBJECT, (hobj_ref_t *)(((char *)buf)+idx), fidout, &ref_out, travt)<0)
- continue;
- HDmemcpy(((char *)buf)+idx, &ref_out, ref_comp_size[j]);
- } /* if */
- else if (ref_comp_size[j] == H5R_DSET_REG_REF_BUF_SIZE) {
- size_t idx = i * msize + H5Tget_member_offset(mtype_id, ref_comp_index[j]);
- hdset_reg_ref_t ref_out;
-
- if (update_ref_value(attr_id, H5R_DATASET_REGION, (hdset_reg_ref_t *)(((char *)buf)+idx), fidout, &ref_out, travt)<0)
- continue;
- HDmemcpy(((char *)buf)+idx, &ref_out, ref_comp_size[j]);
- } /* else if */
- } /* j */
- } /* i */
- } /* else if (is_ref_comp) */
-
- if(H5Awrite(attr_out, mtype_id, refbuf) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Awrite failed");
-
- if (is_ref_vlen && buf)
- H5Dvlen_reclaim (mtype_id, space_id, H5P_DEFAULT, buf);
- } /* if (nelmts) */
-
- if (refbuf == buf)
- refbuf = NULL; /* set it to NULL to avoid double free since buf and refbuf are the same. */
-
- if(buf) {
- HDfree(buf);
- buf = NULL;
- }
-
- if(refbuf) {
- HDfree(refbuf);
- refbuf = NULL;
- }
-
- if (ref_comp_index) {
- HDfree(ref_comp_index);
- ref_comp_index = NULL;
- }
-
- if (ref_comp_size) {
- HDfree(ref_comp_size);
- ref_comp_size = NULL;
- }
-
- if(H5Aclose(attr_out) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aclose failed");
-
- /*-------------------------------------------------------------------------
- * close
- *-------------------------------------------------------------------------
- */
- if(H5Tclose(ftype_id) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed");
- if(H5Tclose(mtype_id) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed");
- if(H5Sclose(space_id) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sclose failed");
- if(H5Aclose(attr_id) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aclose failed");
- } /* for(u = 0; u < (unsigned)oinfo.num_attrs; u++) */
-
- return ret_value;
-
-done:
- if(refbuf)
- HDfree(refbuf);
- if(buf)
- HDfree(buf);
-
- if (ref_comp_index)
- HDfree(ref_comp_index);
-
- if (ref_comp_size)
- HDfree(ref_comp_size);
-
- H5E_BEGIN_TRY {
- H5Tclose(ftype_id);
- H5Tclose(mtype_id);
- H5Sclose(space_id);
- H5Aclose(attr_id);
- H5Aclose(attr_out);
- } H5E_END_TRY;
-
- return ret_value;
-}
-
-/*-------------------------------------------------------------------------
- * Function: MapIdToName
- *
- * Purpose: map a ID from a reference to a dataset name
- *
- *-------------------------------------------------------------------------
- */
-static const char*
-MapIdToName(hid_t refobj_id, trav_table_t *travt)
-{
- unsigned int u;
- const char* ret = NULL;
-
- /* linear search */
- for(u = 0; u < travt->nobjs; u++) {
- if(travt->objs[u].type == (h5trav_type_t)H5O_TYPE_DATASET ||
- travt->objs[u].type == (h5trav_type_t)H5O_TYPE_GROUP ||
- travt->objs[u].type == (h5trav_type_t)H5O_TYPE_NAMED_DATATYPE) {
- H5O_info_t ref_oinfo; /* Stat for the refobj id */
-
- /* obtain information to identify the referenced object uniquely */
- if(H5Oget_info(refobj_id, &ref_oinfo) < 0)
- goto out;
-
- if(ref_oinfo.addr == travt->objs[u].objno) {
- ret = travt->objs[u].name;
- goto out;
- } /* end if */
- } /* end if */
- } /* u */
-
-out:
- return ret;
-}
-
-/*-------------------------------------------------------------------------
- * Function: Update_Ref_value
- *
- * Purpose: Update a reference value
- *
- * Programmer: xcao@hdfgroup.org 9/12/2011
- *
- *-------------------------------------------------------------------------
- */
-static herr_t update_ref_value(hid_t obj_id, H5R_type_t ref_type, void *ref_in,
- hid_t fid_out, void *ref_out, trav_table_t *travt)
-{
- int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */
- const char* ref_obj_name;
- hid_t space_id=-1, ref_obj_id=-1;
-
- ref_obj_id = H5Rdereference2(obj_id, H5P_DEFAULT, ref_type, ref_in);
- if (ref_obj_id < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Rdereference2 failed");
-
- ref_obj_name = MapIdToName(ref_obj_id, travt);
- if (ref_obj_name == NULL)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "MapIdToName failed");
-
- if (ref_type == H5R_DATASET_REGION) {
- space_id = H5Rget_region(obj_id, H5R_DATASET_REGION, ref_in);
- if (space_id < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Rget_region failed");
- }
-
- if(H5Rcreate(ref_out, fid_out, ref_obj_name, ref_type, space_id) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Rcreate failed");
-
-done:
- H5E_BEGIN_TRY {
- H5Sclose(space_id);
- H5Oclose(ref_obj_id);
- } H5E_END_TRY;
-
- return ret_value;
-}
-
diff --git a/tools/h5repack/h5repack_verify.c b/tools/h5repack/h5repack_verify.c
deleted file mode 100644
index 6765c49..0000000
--- a/tools/h5repack/h5repack_verify.c
+++ /dev/null
@@ -1,675 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by The HDF Group. *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from help@hdfgroup.org. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#include "h5repack.h"
-#include "h5tools.h"
-#include "h5tools_utils.h"
-
-/* number of members in an array */
-#ifndef NELMTS
-# define NELMTS(X) (sizeof(X)/sizeof(X[0]))
-#endif
-
-static int verify_layout(hid_t pid, pack_info_t *obj);
-static int verify_filters(hid_t pid, hid_t tid, int nfilters, filter_info_t *filter);
-
-
-/*-------------------------------------------------------------------------
- * Function: h5repack_verify
- *
- * Purpose: verify if filters and layout in the input file match the output file
- *
- * Return:
- * 1 match
- * 0 do not match
- * -1 error
- *
- * Programmer: Pedro Vicente, pvn@hdfgroup.org
- *
- * Date: December 19, 2003
- * Modified: December, 19, 2007 (exactly 4 years later :-) )
- * Separate into 3 cases
- * 1) no filter input, get all datasets and compare DCPLs. TO DO
- * 2) filter input on selected datasets, get each one trough OBJ and match
- * 3) filter input on all datasets, get all objects and match
- *
- *-------------------------------------------------------------------------
- */
-
-int
-h5repack_verify(const char *in_fname, const char *out_fname, pack_opt_t *options)
-{
- int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */
- hid_t fidin = -1; /* file ID for input file*/
- hid_t fidout = -1; /* file ID for output file*/
- hid_t did = -1; /* dataset ID */
- hid_t pid = -1; /* dataset creation property list ID */
- hid_t sid = -1; /* space ID */
- hid_t tid = -1; /* type ID */
- unsigned int i;
- trav_table_t *travt = NULL;
- int ok = 1;
- hid_t fcpl_in = -1; /* file creation property for input file */
- hid_t fcpl_out = -1; /* file creation property for output file */
- H5F_file_space_type_t in_strat, out_strat; /* file space handling strategy for in/output file */
- hsize_t in_thresh, out_thresh; /* free space section threshold for in/output file */
-
- /* open the output file */
- if((fidout = H5Fopen(out_fname, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0 )
- return -1;
-
- for(i = 0; i < options->op_tbl->nelems; i++)
- {
- char* name = options->op_tbl->objs[i].path;
- pack_info_t *obj = &options->op_tbl->objs[i];
-
- /*-------------------------------------------------------------------------
- * open
- *-------------------------------------------------------------------------
- */
- if((did = H5Dopen2(fidout, name, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dopen2 failed");
- if((sid = H5Dget_space(did)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_space failed");
- if((pid = H5Dget_create_plist(did)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_create_plist failed");
- if((tid = H5Dget_type(did)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_type failed");
-
- /*-------------------------------------------------------------------------
- * filter check
- *-------------------------------------------------------------------------
- */
- if(verify_filters(pid, tid, obj->nfilters, obj->filter) <= 0)
- ok = 0;
-
-
- /*-------------------------------------------------------------------------
- * layout check
- *-------------------------------------------------------------------------
- */
- if((obj->layout != -1) && (verify_layout(pid, obj) == 0))
- ok = 0;
-
- /*-------------------------------------------------------------------------
- * close
- *-------------------------------------------------------------------------
- */
- if(H5Pclose(pid) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- if (H5Sclose(sid) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sclose failed");
- if (H5Dclose(did) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed");
- if (H5Tclose(tid) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed");
-
- }
-
-
- /*-------------------------------------------------------------------------
- * check for the "all" objects option
- *-------------------------------------------------------------------------
- */
-
- if(options->all_filter == 1 || options->all_layout == 1)
- {
-
- /* init table */
- trav_table_init(&travt);
-
- /* get the list of objects in the file */
- if(h5trav_gettable(fidout, travt) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "h5trav_gettable failed");
-
- for(i = 0; i < travt->nobjs; i++)
- {
- char *name = travt->objs[i].name;
-
- if(travt->objs[i].type == H5TRAV_TYPE_DATASET)
- {
-
- /*-------------------------------------------------------------------------
- * open
- *-------------------------------------------------------------------------
- */
- if((did = H5Dopen2(fidout, name, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dopen2 failed");
- if((sid = H5Dget_space(did)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_space failed");
- if((pid = H5Dget_create_plist(did)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_create_plist failed");
- if((tid = H5Dget_type(did)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_type failed");
-
- /*-------------------------------------------------------------------------
- * filter check
- *-------------------------------------------------------------------------
- */
- if(options->all_filter == 1)
- {
- if(verify_filters(pid, tid, options->n_filter_g, options->filter_g) <= 0)
- ok = 0;
- }
-
- /*-------------------------------------------------------------------------
- * layout check
- *-------------------------------------------------------------------------
- */
- if(options->all_layout == 1)
- {
- pack_info_t pack;
-
- init_packobject(&pack);
- pack.layout = options->layout_g;
- pack.chunk = options->chunk_g;
- if(verify_layout(pid, &pack) == 0)
- ok = 0;
- }
-
-
- /*-------------------------------------------------------------------------
- * close
- *-------------------------------------------------------------------------
- */
- if (H5Pclose(pid) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- if (H5Sclose(sid) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sclose failed");
- if (H5Dclose(did) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed");
- if (H5Tclose(tid) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tclose failed");
- } /* if */
-
- } /* i */
-
- /* free table */
- trav_table_free(travt);
- }
-
- /*-------------------------------------------------------------------------
- * Verify that file space strategy and free space threshold
- * are set as expected
- *-------------------------------------------------------------------------
- */
-
- /* open the input file */
- if((fidin = H5Fopen(in_fname, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0 )
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Fopen failed");
-
- /* Get file creation property list for input file */
- if((fcpl_in = H5Fget_create_plist(fidin)) < 0) {
- error_msg("failed to retrieve file creation property list\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Fget_create_plist failed");
- }
-
- /* Get file space management info for input file */
- if(H5Pget_file_space(fcpl_in, &in_strat, &in_thresh) < 0) {
- error_msg("failed to retrieve file space strategy & threshold\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pget_file_space failed");
- }
-
- /* Output file is already opened */
- /* Get file creation property list for output file */
- if((fcpl_out = H5Fget_create_plist(fidout)) < 0) {
- error_msg("failed to retrieve file creation property list\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Fget_create_plist failed");
- }
-
- /* Get file space management info for output file */
- if(H5Pget_file_space(fcpl_out, &out_strat, &out_thresh) < 0) {
- error_msg("failed to retrieve file space strategy & threshold\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pget_file_space failed");
- }
-
- /*
- * If the strategy option is not set,
- * file space handling strategy should be the same for both
- * input & output files.
- * If the strategy option is set,
- * the output file's file space handling strategy should be the same
- * as what is set via the strategy option
- */
- if(!options->fs_strategy && out_strat != in_strat) {
- error_msg("file space strategy not set as unexpected\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "file space strategy not set as unexpected");
-
- }
- else if(options->fs_strategy && out_strat!= options->fs_strategy) {
- error_msg("file space strategy not set as unexpected\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "file space strategy not set as unexpected");
- }
-
- /*
- * If the threshold option is not set,
- * the free space section threshold should be the same for both
- * input & output files.
- * If the threshold option is set,
- * the output file's free space section threshold should be the same
- * as what is set via the threshold option.
- */
- if(!options->fs_threshold && out_thresh != in_thresh) {
- error_msg("free space threshold not set as unexpected\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "free space threshold not set as unexpected");
- }
- else if(options->fs_threshold && out_thresh != options->fs_threshold) {
- error_msg("free space threshold not set as unexpected\n");
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "free space threshold not set as unexpected");
- }
-
- /* Closing */
- if (H5Pclose(fcpl_in) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- if (H5Pclose(fcpl_out) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- if (H5Fclose(fidin) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Fclose failed");
- if (H5Fclose(fidout) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Fclose failed");
-
- return ok;
-
-done:
- H5E_BEGIN_TRY {
- H5Pclose(fcpl_in);
- H5Pclose(fcpl_out);
- H5Pclose(pid);
- H5Sclose(sid);
- H5Dclose(did);
- H5Fclose(fidin);
- H5Fclose(fidout);
- if (travt)
- trav_table_free(travt);
- } H5E_END_TRY;
-
- return ret_value;
-} /* h5repack_verify() */
-
-
-
-/*-------------------------------------------------------------------------
- * Function: verify_layout
- *
- * Purpose: verify which layout is present in the property list DCPL_ID
- *
- * H5D_COMPACT = 0
- * H5D_CONTIGUOUS = 1
- * H5D_CHUNKED = 2
- *
- * Return: 1 has, 0 does not, -1 error
- *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
- *
- * Date: December 30, 2003
- *
- *-------------------------------------------------------------------------
- */
-
-int verify_layout(hid_t pid,
- pack_info_t *obj)
-{
- hsize_t chsize[64]; /* chunk size in elements */
- H5D_layout_t layout; /* layout */
- int nfilters; /* number of filters */
- int rank; /* rank */
- int i; /* index */
-
- /* check if we have filters in the input object */
- if ((nfilters = H5Pget_nfilters(pid)) < 0)
- return -1;
-
- /* a non chunked layout was requested on a filtered object */
- if (nfilters && obj->layout!=H5D_CHUNKED)
- return 0;
-
- /* get layout */
- if ((layout = H5Pget_layout(pid)) < 0)
- return -1;
-
- if (obj->layout != layout)
- return 0;
-
- if (layout==H5D_CHUNKED)
- {
- if ((rank = H5Pget_chunk(pid,NELMTS(chsize),chsize/*out*/)) < 0)
- return -1;
- if (obj->chunk.rank != rank)
- return 0;
- for ( i=0; i<rank; i++)
- if (chsize[i] != obj->chunk.chunk_lengths[i])
- return 0;
- }
-
- return 1;
-}
-
-/*-------------------------------------------------------------------------
- * Function: h5repack_cmp_pl
- *
- * Purpose: compare 2 files for identical property lists of all objects
- *
- * Return: 1=identical, 0=not identical, -1=error
- *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
- *
- * Date: December 31, 2003
- *
- *-------------------------------------------------------------------------
- */
-
-int h5repack_cmp_pl(const char *fname1,
- const char *fname2)
-{
- int ret_value = 0; /*no need to LEAVE() on ERROR: HERR_INIT(int, SUCCEED) */
- hid_t fid1=-1; /* file ID */
- hid_t fid2=-1; /* file ID */
- hid_t dset1=-1; /* dataset ID */
- hid_t dset2=-1; /* dataset ID */
- hid_t gid=-1; /* group ID */
- hid_t dcpl1=-1; /* dataset creation property list ID */
- hid_t dcpl2=-1; /* dataset creation property list ID */
- hid_t gcplid=-1; /* group creation property list */
- unsigned crt_order_flag1; /* group creation order flag */
- unsigned crt_order_flag2; /* group creation order flag */
- trav_table_t *trav=NULL;
- int ret=1;
- unsigned int i;
-
- /*-------------------------------------------------------------------------
- * open the files
- *-------------------------------------------------------------------------
- */
-
- /* disable error reporting */
- H5E_BEGIN_TRY
- {
-
- /* Open the files */
- if ((fid1 = H5Fopen(fname1,H5F_ACC_RDONLY,H5P_DEFAULT)) < 0 )
- {
- error_msg("<%s>: %s\n", fname1, H5FOPENERROR );
- return -1;
- }
- if ((fid2 = H5Fopen(fname2,H5F_ACC_RDONLY,H5P_DEFAULT)) < 0 )
- {
- error_msg("<%s>: %s\n", fname2, H5FOPENERROR );
- H5Fclose(fid1);
- return -1;
- }
- /* enable error reporting */
- } H5E_END_TRY;
-
- /*-------------------------------------------------------------------------
- * get file table list of objects
- *-------------------------------------------------------------------------
- */
- trav_table_init(&trav);
- if(h5trav_gettable(fid1, trav) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "h5trav_gettable failed");
-
- /*-------------------------------------------------------------------------
- * traverse the suppplied object list
- *-------------------------------------------------------------------------
- */
- for(i = 0; i < trav->nobjs; i++)
- {
-
- if(trav->objs[i].type == H5TRAV_TYPE_GROUP)
- {
-
- if ((gid = H5Gopen2(fid1, trav->objs[i].name, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gopen2 failed");
- if ((gcplid = H5Gget_create_plist(gid)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gget_create_plist failed");
- if (H5Pget_link_creation_order(gcplid, &crt_order_flag1) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pget_link_creation_order failed");
- if (H5Pclose(gcplid) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- if (H5Gclose(gid) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gclose failed");
-
- if ((gid = H5Gopen2(fid2, trav->objs[i].name, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gopen2 failed");
- if ((gcplid = H5Gget_create_plist(gid)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gget_create_plist failed");
- if (H5Pget_link_creation_order(gcplid, &crt_order_flag2) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pget_link_creation_order failed");
- if (H5Pclose(gcplid) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- if (H5Gclose(gid) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Gclose failed");
-
- if (crt_order_flag1 != crt_order_flag2) {
- error_msg("property lists for <%s> are different\n",trav->objs[i].name);
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "property lists failed");
- }
-
- }
-
-
-
- else if(trav->objs[i].type == H5TRAV_TYPE_DATASET)
- {
- if((dset1 = H5Dopen2(fid1, trav->objs[i].name, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dopen2 failed");
- if((dset2 = H5Dopen2(fid2, trav->objs[i].name, H5P_DEFAULT)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dopen2 failed");
- if((dcpl1 = H5Dget_create_plist(dset1)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_create_plist failed");
- if((dcpl2 = H5Dget_create_plist(dset2)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dget_create_plist failed");
-
- /*-------------------------------------------------------------------------
- * compare the property lists
- *-------------------------------------------------------------------------
- */
- if((ret = H5Pequal(dcpl1, dcpl2)) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pequal failed");
-
- if(ret == 0) {
- error_msg("property lists for <%s> are different\n",trav->objs[i].name);
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "property lists failed");
- }
-
- /*-------------------------------------------------------------------------
- * close
- *-------------------------------------------------------------------------
- */
- if(H5Pclose(dcpl1) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- if(H5Pclose(dcpl2) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pclose failed");
- if(H5Dclose(dset1) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed");
- if(H5Dclose(dset2) < 0)
- HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Dclose failed");
- } /*if*/
- } /*i*/
-
- /*-------------------------------------------------------------------------
- * free
- *-------------------------------------------------------------------------
- */
-
- trav_table_free(trav);
-
- /*-------------------------------------------------------------------------
- * close
- *-------------------------------------------------------------------------
- */
-
- H5Fclose(fid1);
- H5Fclose(fid2);
-
- return ret;
-
-/*-------------------------------------------------------------------------
-* error
-*-------------------------------------------------------------------------
-*/
-done:
- H5E_BEGIN_TRY
- {
- H5Pclose(dcpl1);
- H5Pclose(dcpl2);
- H5Dclose(dset1);
- H5Dclose(dset2);
- H5Fclose(fid1);
- H5Fclose(fid2);
- H5Pclose(gcplid);
- H5Gclose(gid);
- trav_table_free(trav);
- } H5E_END_TRY;
-
- return ret_value;
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: verify_filters
- *
- * Purpose: verify if all requested filters in the array FILTER obtained
- * from user input are present in the property list PID obtained from
- * the output file
- *
- * Return:
- * 1 match
- * 0 do not match
- * -1 error
- *
- * Programmer: Pedro Vicente, pvn@hdfgroup.org
- *
- * Date: December 21, 2007
- *
- *-------------------------------------------------------------------------
- */
-
-static
-int verify_filters(hid_t pid, hid_t tid, int nfilters, filter_info_t *filter)
-{
- int nfilters_dcpl; /* number of filters in DCPL*/
- unsigned filt_flags; /* filter flags */
- H5Z_filter_t filtn; /* filter identification number */
- unsigned cd_values[20]; /* filter client data values */
- size_t cd_nelmts; /* filter client number of values */
- char f_name[256]; /* filter name */
- size_t size; /* type size */
- int i; /* index */
- unsigned j; /* index */
-
- /* get information about filters */
- if((nfilters_dcpl = H5Pget_nfilters(pid)) < 0)
- return -1;
-
- /* if we do not have filters and the requested filter is NONE, return 1 */
- if(!nfilters_dcpl &&
- nfilters == 1 &&
- filter[0].filtn == H5Z_FILTER_NONE )
- return 1;
-
- /* else the numbers of filters must match */
- if (nfilters_dcpl != nfilters )
- return 0;
-
- /*-------------------------------------------------------------------------
- * build a list with DCPL filters
- *-------------------------------------------------------------------------
- */
-
- for( i = 0; i < nfilters_dcpl; i++)
- {
- cd_nelmts = NELMTS(cd_values);
- filtn = H5Pget_filter2(pid, (unsigned)i, &filt_flags, &cd_nelmts,
- cd_values, sizeof(f_name), f_name, NULL);
-
- /* filter ID */
- if (filtn != filter[i].filtn)
- return 0;
-
- /* compare client data values. some filters do return local values */
- switch (filtn)
- {
-
- case H5Z_FILTER_NONE:
- break;
-
- case H5Z_FILTER_SHUFFLE:
- /* 1 private client value is returned by DCPL */
- if ( cd_nelmts != H5Z_SHUFFLE_TOTAL_NPARMS && filter[i].cd_nelmts != H5Z_SHUFFLE_USER_NPARMS )
- return 0;
-
- /* get dataset's type size */
- if((size = H5Tget_size(tid)) <= 0)
- return -1;
-
- /* the private client value holds the dataset's type size */
- if ( size != cd_values[0] )
- return 0;
-
- break;
-
- case H5Z_FILTER_SZIP:
- /* 4 private client values are returned by DCPL */
- if ( cd_nelmts != H5Z_SZIP_TOTAL_NPARMS && filter[i].cd_nelmts != H5Z_SZIP_USER_NPARMS )
- return 0;
-
- /* "User" parameter for pixels-per-block (index 1) */
- if ( cd_values[H5Z_SZIP_PARM_PPB] != filter[i].cd_values[H5Z_SZIP_PARM_PPB] )
- return 0;
-
- break;
-
- case H5Z_FILTER_NBIT:
- /* only client data values number of values checked */
- if ( H5Z_NBIT_USER_NPARMS != filter[i].cd_nelmts)
- return 0;
- break;
-
- case H5Z_FILTER_SCALEOFFSET:
- /* only client data values checked */
- for( j = 0; j < H5Z_SCALEOFFSET_USER_NPARMS; j++)
- if (cd_values[j] != filter[i].cd_values[j])
- return 0;
- break;
-
- /* for these filters values must match, no local values set in DCPL */
- case H5Z_FILTER_FLETCHER32:
- case H5Z_FILTER_DEFLATE:
-
- if ( cd_nelmts != filter[i].cd_nelmts)
- return 0;
-
- for( j = 0; j < cd_nelmts; j++)
- if (cd_values[j] != filter[i].cd_values[j])
- return 0;
-
- break;
-
- default:
- if ( cd_nelmts != filter[i].cd_nelmts)
- return 0;
-
- for( j = 0; j < cd_nelmts; j++)
- if (cd_values[j] != filter[i].cd_values[j])
- return 0;
- break;
-
- } /* switch */
- }
-
- return 1;
-}
-
diff --git a/tools/h5repack/h5repacktst.c b/tools/h5repack/h5repacktst.c
deleted file mode 100644
index 82b45fc..0000000
--- a/tools/h5repack/h5repacktst.c
+++ /dev/null
@@ -1,6856 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Copyright by The HDF Group. *
-* Copyright by the Board of Trustees of the University of Illinois. *
-* All rights reserved. *
-* *
-* This file is part of HDF5. The full HDF5 copyright notice, including *
-* terms governing use, modification, and redistribution, is contained in *
-* the files COPYING and Copyright.html. COPYING can be found at the root *
-* of the source code distribution tree; Copyright.html can be found at the *
-* root level of an installed copy of the electronic HDF5 document set and *
-* is linked from the top-level documents page. It can also be found at *
-* http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
-* access to either file, you may request a copy from help@hdfgroup.org. *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#include "h5repack.h"
-#include "h5test.h"
-#include "h5diff.h"
-#include "h5tools.h"
-#include "h5tools_utils.h"
-
-#define GOERROR {H5_FAILED(); goto error;}
-
-
-/* fill value test */
-#define FNAME0 "h5repack_fill.h5"
-#define FNAME0OUT "h5repack_fill_out.h5"
-/* HDF5 objects and all dataset datatypes */
-#define FNAME1 "h5repack_objs.h5"
-#define FNAME1OUT "h5repack_objs_out.h5"
-/* attributes, all datatypes */
-#define FNAME2 "h5repack_attr.h5"
-#define FNAME2OUT "h5repack_attr_out.h5"
-/* hard links */
-#define FNAME3 "h5repack_hlink.h5"
-#define FNAME3OUT "h5repack_hlink_out.h5"
-/* layout */
-#define FNAME4 "h5repack_layout.h5"
-#define FNAME4OUT "h5repack_layout_out.h5"
-/* H5D_ALLOC_TIME_EARLY */
-#define FNAME5 "h5repack_early.h5"
-#define FNAME5OUT "h5repack_early_out.h5"
-#define FNAME6 "h5repack_early2.h5"
-#ifdef H5_HAVE_FILTER_SZIP
-/* SZIP filter */
-#define FNAME7 "h5repack_szip.h5"
-#define FNAME7OUT "h5repack_szip_out.h5"
-#endif
-/* GZIP filter */
-#define FNAME8 "h5repack_deflate.h5"
-#define FNAME8OUT "h5repack_deflate_out.h5"
-/* GZIP filter */
-#define FNAME9 "h5repack_shuffle.h5"
-#define FNAME9OUT "h5repack_shuffle_out.h5"
-/* Fletcher filter */
-#define FNAME10 "h5repack_fletcher.h5"
-#define FNAME10OUT "h5repack_fletcher_out.h5"
-/* All filters */
-#define FNAME11 "h5repack_filters.h5"
-#define FNAME11OUT "h5repack_filters_out.h5"
-/* NBit filter */
-#define FNAME12 "h5repack_nbit.h5"
-#define FNAME12OUT "h5repack_nbit_out.h5"
-/* Scale Offset filter */
-#define FNAME13 "h5repack_soffset.h5"
-#define FNAME13OUT "h5repack_soffset_out.h5"
-/* Big file to test read by hyperslabs */
-#define FNAME14 "h5repack_big.h5"
-#define FNAME14OUT "h5repack_big_out.h5"
-/* external file */
-#define FNAME15 "h5repack_ext.h5"
-#define FNAME15OUT "h5repack_ext_out.h5"
-/* File w/userblock */
-#define FNAME16 "h5repack_ub.h5"
-#define FNAME16OUT "h5repack_ub_out.h5"
-/* Named datatypes */
-#define FNAME17 "h5repack_named_dtypes.h5"
-#define FNAME17OUT "h5repack_named_dtypes_out.h5"
-
-#define FNAME18 "h5repack_layout2.h5"
-
-#define FNAME_UB "ublock.bin"
-
-/* obj and region references */
-#define FNAME_REF "h5repack_refs.h5"
-
-/* obj and region references in attr of compound and vlen type */
-#define FNAME_ATTR_REF "h5repack_attr_refs.h5"
-
-const char *H5REPACK_FILENAMES[] = {
- "h5repack_big_out",
- NULL
-};
-
-#define H5REPACK_EXTFILE "h5repack_ext.bin"
-
-/* Name of tool */
-#define PROGRAMNAME "h5repacktst"
-
-
-#define DIM1 40
-#define DIM2 20
-#define CDIM1 DIM1/2
-#define CDIM2 DIM2/2
-#define RANK 2
-
-/* Size of userblock (for userblock test) */
-#define USERBLOCK_SIZE 2048
-
-/* obj and region references */
-#define NAME_OBJ_DS1 "Dset1"
-#define NAME_OBJ_GRP "Group"
-#define NAME_OBJ_NDTYPE "NamedDatatype"
-#define NAME_OBJ_DS2 "Dset2"
-#define REG_REF_DS1 "Dset_REGREF"
-
-/*-------------------------------------------------------------------------
-* prototypes
-*-------------------------------------------------------------------------
-*/
-static int make_all_objects(hid_t loc_id);
-static int make_attributes(hid_t loc_id);
-static int make_hlinks(hid_t loc_id);
-static int make_early(void);
-static int make_layout(hid_t loc_id);
-static int make_layout2(hid_t loc_id);
-static int make_layout3(hid_t loc_id);
-#ifdef H5_HAVE_FILTER_SZIP
-static int make_szip(hid_t loc_id);
-#endif /* H5_HAVE_FILTER_SZIP */
-static int make_deflate(hid_t loc_id);
-static int make_shuffle(hid_t loc_id);
-static int make_fletcher32(hid_t loc_id);
-static int make_nbit(hid_t loc_id);
-static int make_scaleoffset(hid_t loc_id);
-static int make_all_filters(hid_t loc_id);
-static int make_fill(hid_t loc_id);
-static int make_big(hid_t loc_id);
-static int make_testfiles(void);
-static int write_dset_in(hid_t loc_id,const char* dset_name,hid_t file_id,int make_diffs );
-static int write_attr_in(hid_t loc_id,const char* dset_name,hid_t fid,int make_diffs );
-static int write_dset(hid_t loc_id,int rank,hsize_t *dims,const char *dset_name,hid_t tid,void *buf );
-static int make_dset(hid_t loc_id,const char *name,hid_t sid,hid_t dcpl,void *buf);
-static int make_attr(hid_t loc_id,int rank,hsize_t *dims,const char *attr_name,hid_t tid,void *buf);
-static int make_dset_reg_ref(hid_t loc_id);
-static int make_external(hid_t loc_id);
-static int make_userblock(void);
-static int verify_userblock( const char* filename);
-static int make_userblock_file(void);
-static int make_named_dtype(hid_t loc_id);
-static int make_references(hid_t loc_id);
-static int make_complex_attr_references(hid_t loc_id);
-
-
-/*-------------------------------------------------------------------------
-* Function: main
-*
-* Purpose: Executes h5repack tests
-*
-* Return: Success: zero
-* Failure: 1
-*
-* Programmer: Pedro Vicente <pvn@ncsa.uiuc.edu>
-* January, 6, 2004
-*
-*-------------------------------------------------------------------------
-*/
-
-int main (void)
-{
- pack_opt_t pack_options;
- diff_opt_t diff_options;
- hsize_t fs_size = 0; /* free space section threshold */
- H5F_file_space_type_t fs_type = H5F_FILE_SPACE_DEFAULT; /* file space handling strategy */
- h5_stat_t file_stat;
- h5_stat_size_t fsize1, fsize2; /* file sizes */
-#if defined (H5_HAVE_FILTER_SZIP)
- int szip_can_encode = 0;
-#endif
-
- h5tools_setprogname(PROGRAMNAME);
- h5tools_setstatus(EXIT_SUCCESS);
-
- /* Initialize h5tools lib */
- h5tools_init();
-
- /* initialize */
- HDmemset(&diff_options, 0, sizeof (diff_opt_t));
- HDmemset(&pack_options, 0, sizeof (pack_opt_t));
-
- /* run tests */
- puts("Testing h5repack:");
-
- /* make the test files */
- TESTING(" generating datasets");
- if (make_testfiles() < 0)
- GOERROR;
- PASSED();
-
- /*-------------------------------------------------------------------------
- * Format of the tests:
- *
- * 1) make a copy of the file with h5repack
- * 2) use the h5diff function to compare the input and output file
- *-------------------------------------------------------------------------
- */
-
-
- /*-------------------------------------------------------------------------
- * file with fill values
- *-------------------------------------------------------------------------
- */
-
- TESTING(" copy of datasets (fill values)");
-
- /* fs_type = 0; fs_size = 0 */
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack(FNAME0,FNAME0OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME0,FNAME0OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME0, FNAME0OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_cmp_pl(FNAME0,FNAME0OUT)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
- PASSED();
-
-
- /*-------------------------------------------------------------------------
- * file with all kinds of dataset datatypes
- *-------------------------------------------------------------------------
- */
- TESTING(" copy of datasets (all datatypes)");
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack(FNAME1,FNAME1OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME1,FNAME1OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME1, FNAME1OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_cmp_pl(FNAME1,FNAME1OUT)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
- PASSED();
-
-
- /*-------------------------------------------------------------------------
- * file with attributes
- *-------------------------------------------------------------------------
- */
- TESTING(" copy of datasets (attributes)");
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack(FNAME2,FNAME2OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME2,FNAME2OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME2, FNAME2OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_cmp_pl(FNAME2,FNAME2OUT)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
- PASSED();
-
- /*-------------------------------------------------------------------------
- * file with hardlinks
- *-------------------------------------------------------------------------
- */
- TESTING(" copy of datasets (hardlinks)");
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack(FNAME3,FNAME3OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME3,FNAME3OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME3, FNAME3OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_cmp_pl(FNAME3,FNAME3OUT)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-
- /*-------------------------------------------------------------------------
- * alloc early test
- *-------------------------------------------------------------------------
- */
- TESTING(" copy of allocation early file");
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack(FNAME5,FNAME5OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME5,FNAME5OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME5, FNAME5OUT, &pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
- PASSED();
-
- /*-------------------------------------------------------------------------
- * the remaining files differ in the dcpl's
- *-------------------------------------------------------------------------
- */
-
- /*-------------------------------------------------------------------------
- * deflate
- *-------------------------------------------------------------------------
- */
- TESTING(" adding deflate filter (old_format)");
-
-#ifdef H5_HAVE_FILTER_DEFLATE
-
- /*-------------------------------------------------------------------------
- * test an individual object option
- *-------------------------------------------------------------------------
- */
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addfilter("dset1:GZIP=9",&pack_options) < 0)
- GOERROR;
- if (h5repack_addlayout("dset1:CHUNK=20x10",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT, &pack_options) <= 0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
- PASSED();
-#else
- SKIPPED();
-#endif
-
- TESTING(" adding deflate filter (new format)");
-#ifdef H5_HAVE_FILTER_DEFLATE
- /*-------------------------------------------------------------------------
- * test an individual object option
- * For new format, "dset1" should be using Fixed Array indexing
- *-------------------------------------------------------------------------
- */
-
- if (h5repack_init (&pack_options, 0, TRUE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addfilter("dset1:GZIP=9",&pack_options) < 0)
- GOERROR;
- if (h5repack_addlayout("dset1:CHUNK=20x10",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT, &pack_options) <= 0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
- PASSED();
-#else
- SKIPPED();
-#endif
-
- /*-------------------------------------------------------------------------
- * test all objects option
- *-------------------------------------------------------------------------
- */
-
- TESTING(" adding deflate filter to all");
-
-#ifdef H5_HAVE_FILTER_DEFLATE
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addfilter("GZIP=1",&pack_options) < 0)
- GOERROR;
- if (h5repack_addlayout("CHUNK=20x10",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-#else
- SKIPPED();
-#endif
-
- /*-------------------------------------------------------------------------
- * SZIP
- *-------------------------------------------------------------------------
- */
-
- TESTING(" adding szip filter");
-
-#if defined (H5_HAVE_FILTER_SZIP)
- if (h5tools_can_encode(H5Z_FILTER_SZIP) >0) {
- szip_can_encode = 1;
- }
-
- /*-------------------------------------------------------------------------
- * test an individual object option
- *-------------------------------------------------------------------------
- */
-
- if (szip_can_encode) {
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addfilter("dset2:SZIP=8,EC",&pack_options) < 0)
- GOERROR;
- if (h5repack_addlayout("dset2:CHUNK=20x10",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
- } else {
- SKIPPED();
- }
-#else
- SKIPPED();
-#endif
-
-
- /*-------------------------------------------------------------------------
- * test all objects option
- *-------------------------------------------------------------------------
- */
- TESTING(" adding szip filter to all");
-
-#if defined (H5_HAVE_FILTER_SZIP)
- if (szip_can_encode) {
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addfilter("SZIP=8,NN",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
- } else {
- SKIPPED();
- }
-#else
- SKIPPED();
-#endif
-
-
- TESTING(" addding shuffle filter");
-
- /*-------------------------------------------------------------------------
- * test an individual object option
- *-------------------------------------------------------------------------
- */
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addfilter("dset1:SHUF",&pack_options) < 0)
- GOERROR;
- if (h5repack_addlayout("dset1:CHUNK=20x10",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-
- /*-------------------------------------------------------------------------
- * test all objects option
- *-------------------------------------------------------------------------
- */
-
- TESTING(" addding shuffle filter to all");
-
- /* fs_type = H5F_FILE_SPACE_ALL_PERSIST; fs_size = 1 */
- if (h5repack_init (&pack_options, 0, FALSE, H5_INC_ENUM(H5F_file_space_type_t, fs_type), ++fs_size) < 0)
- GOERROR;
- if (h5repack_addfilter("SHUF",&pack_options) < 0)
- GOERROR;
- if (h5repack_addlayout("CHUNK=20x10",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-
-
- TESTING(" adding checksum filter");
-
- /*-------------------------------------------------------------------------
- * test an individual object option
- *-------------------------------------------------------------------------
- */
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addfilter("dset1:FLET",&pack_options) < 0)
- GOERROR;
- if (h5repack_addlayout("dset1:CHUNK=20x10",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-
- /*-------------------------------------------------------------------------
- * test all objects option
- *-------------------------------------------------------------------------
- */
-
-
- TESTING(" adding checksum filter to all");
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addfilter("FLET",&pack_options) < 0)
- GOERROR;
- if (h5repack_addlayout("CHUNK=20x10",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-
-
- TESTING(" filter queue fletcher, shuffle, deflate, szip");
-
- /*-------------------------------------------------------------------------
- * add some filters
- *-------------------------------------------------------------------------
- */
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addlayout("dset1:CHUNK 20x10",&pack_options) < 0)
- GOERROR;
- if (h5repack_addfilter("dset1:FLET",&pack_options) < 0)
- GOERROR;
- if (h5repack_addfilter("dset1:SHUF",&pack_options) < 0)
- GOERROR;
-
-#if defined (H5_HAVE_FILTER_SZIP)
- if (szip_can_encode) {
- if (h5repack_addfilter("dset1:SZIP=8,NN",&pack_options) < 0)
- GOERROR;
- }
-#endif
-
-#ifdef H5_HAVE_FILTER_DEFLATE
- if (h5repack_addfilter("dset1:GZIP=1",&pack_options) < 0)
- GOERROR;
-#endif
-
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-
-
- TESTING(" adding layout chunked (old format)");
-
- /*-------------------------------------------------------------------------
- * test an individual object option
- *-------------------------------------------------------------------------
- */
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addlayout("dset1:CHUNK=20x10",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT, &pack_options )<= 0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
- PASSED();
-
- TESTING(" adding layout chunked (new format)");
-
- /*-------------------------------------------------------------------------
- * test an individual object option
- * For new format, "dset1" should be using Fixed Array indexing
- *-------------------------------------------------------------------------
- */
-
- if (h5repack_init (&pack_options, 0, TRUE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addlayout("dset1:CHUNK=20x10",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT, &pack_options )<= 0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
- PASSED();
-
- /*-------------------------------------------------------------------------
- * test all objects option
- *-------------------------------------------------------------------------
- */
- TESTING(" adding layout chunked to all");
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addlayout("CHUNK=20x10",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-
- TESTING(" adding layout contiguous");
-
- /*-------------------------------------------------------------------------
- * test an individual object option
- *-------------------------------------------------------------------------
- */
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addlayout("dset1:CONTI",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-
- TESTING(" adding layout contiguous to all");
-
- /*-------------------------------------------------------------------------
- * test all objects option
- *-------------------------------------------------------------------------
- */
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addlayout("CONTI",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- /*-------------------------------------------------------------------------
- * do the same test for a file with filters (chunked)
- *-------------------------------------------------------------------------
- */
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addlayout("CONTI",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME8,FNAME8OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME8,FNAME8OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME8, FNAME8OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-
- TESTING(" adding layout compact");
-
- /*-------------------------------------------------------------------------
- * test an individual object option
- *-------------------------------------------------------------------------
- */
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addlayout("dset1:COMPA",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
- PASSED();
-
- TESTING(" adding layout compact to all");
-
- /*-------------------------------------------------------------------------
- * test all objects option
- *-------------------------------------------------------------------------
- */
-
- /* fs_type = H5F_FILE_SPACE_ALL; fs_size = 2 */
- if (h5repack_init (&pack_options, 0, FALSE, H5_INC_ENUM(H5F_file_space_type_t, fs_type), ++fs_size) < 0)
- GOERROR;
- if (h5repack_addlayout("COMPA",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-
-
- TESTING(" layout compact to contiguous conversion");
-
- /*-------------------------------------------------------------------------
- * layout compact to contiguous conversion
- *-------------------------------------------------------------------------
- */
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addlayout("dset_compact:CONTI",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
- PASSED();
-
- TESTING(" layout compact to chunk conversion");
-
- /*-------------------------------------------------------------------------
- * layout compact to chunk conversion
- *-------------------------------------------------------------------------
- */
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addlayout("dset_compact:CHUNK=2x5",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
- PASSED();
-
- TESTING(" layout compact to compact conversion");
-
- /*-------------------------------------------------------------------------
- * layout compact to compact conversion
- *-------------------------------------------------------------------------
- */
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addlayout("dset_compact:COMPA",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
- PASSED();
-
- TESTING(" layout contiguous to compact conversion");
- /*-------------------------------------------------------------------------
- * layout contiguous to compact conversion
- *-------------------------------------------------------------------------
- */
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addlayout("dset_contiguous:COMPA",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
- PASSED();
-
- TESTING(" layout contiguous to chunk conversion");
- /*-------------------------------------------------------------------------
- * layout contiguous to chunk conversion
- *-------------------------------------------------------------------------
- */
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addlayout("dset_contiguous:CHUNK=3x6",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
- PASSED();
-
- TESTING(" layout contiguous to contiguous conversion");
-
- /*-------------------------------------------------------------------------
- * layout contiguous to contiguous conversion
- *-------------------------------------------------------------------------
- */
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addlayout("dset_contiguous:CONTI",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
- PASSED();
-
- TESTING(" layout chunked to compact conversion");
- /*-------------------------------------------------------------------------
- * layout chunked to compact conversion
- *-------------------------------------------------------------------------
- */
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addlayout("dset_chunk:COMPA",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
- PASSED();
-
- TESTING(" layout chunked to contiguous conversion");
-
- /*-------------------------------------------------------------------------
- * layout chunked to contiguous conversion
- *-------------------------------------------------------------------------
- */
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addlayout("dset_chunk:CONTI",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
- PASSED();
-
- TESTING(" layout chunked to chunk conversion");
- /*-------------------------------------------------------------------------
- * layout chunked to chunked conversion
- *-------------------------------------------------------------------------
- */
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addlayout("dset_chunk:CHUNK=18x13",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME4, FNAME4OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
- PASSED();
-
-
- /*-------------------------------------------------------------------------
- * the following tests assume the input files have filters
- * FNAME7
- * FNAME8
- * FNAME9
- * FNAME10
- * FNAME11
- *-------------------------------------------------------------------------
- */
-
-
- TESTING(" copy of szip filter");
-
-#if defined (H5_HAVE_FILTER_SZIP)
- if (szip_can_encode) {
- /* fs_type = H5F_FILE_SPACE_AGGR_VFD; fs_size = 3 */
- if (h5repack_init (&pack_options, 0, FALSE, H5_INC_ENUM(H5F_file_space_type_t, fs_type), ++fs_size) < 0)
- GOERROR;
- if (h5repack(FNAME7,FNAME7OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME7,FNAME7OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME7, FNAME7OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_cmp_pl(FNAME7,FNAME7OUT)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
- } else {
- SKIPPED();
- }
-#else
- SKIPPED();
-#endif
-
- TESTING(" removing szip filter");
-
-#if defined (H5_HAVE_FILTER_SZIP)
- if (szip_can_encode) {
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addfilter("dset_szip:NONE",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME7,FNAME7OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME7,FNAME7OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME7, FNAME7OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
- } else {
- SKIPPED();
- }
-#else
- SKIPPED();
-#endif
-
-
- TESTING(" copy of deflate filter");
-
-#ifdef H5_HAVE_FILTER_DEFLATE
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack(FNAME8,FNAME8OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME8,FNAME8OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME8, FNAME8OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-#else
- SKIPPED();
-#endif
-
-
- TESTING(" removing deflate filter");
-
-#ifdef H5_HAVE_FILTER_DEFLATE
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, ++fs_size) < 0)
- GOERROR;
- if (h5repack_addfilter("dset_deflate:NONE",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME8,FNAME8OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME8,FNAME8OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME8, FNAME8OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-#else
- SKIPPED();
-#endif
-
-
-
- TESTING(" copy of shuffle filter");
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack(FNAME9,FNAME9OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME9,FNAME9OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME9, FNAME9OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-
-
- TESTING(" removing shuffle filter");
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addfilter("dset_shuffle:NONE",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME9,FNAME9OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME9,FNAME9OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME9, FNAME9OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-
-
- TESTING(" copy of fletcher filter");
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack(FNAME10,FNAME10OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME10,FNAME10OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME10, FNAME10OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-
-
- TESTING(" removing fletcher filter");
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addfilter("dset_fletcher32:NONE",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME10,FNAME10OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME10,FNAME10OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME10, FNAME10OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-
-
- TESTING(" copy of nbit filter");
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack(FNAME12,FNAME12OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME12,FNAME12OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME12, FNAME12OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-
-
- TESTING(" removing nbit filter");
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addfilter("dset_nbit:NONE",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME12,FNAME12OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME12,FNAME12OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME12, FNAME12OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-
-
- TESTING(" adding nbit filter");
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addfilter("dset_int31:NBIT",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME12,FNAME12OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME12,FNAME12OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME12, FNAME12OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-
-
- TESTING(" copy of scaleoffset filter");
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack(FNAME13,FNAME13OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME13,FNAME13OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME13, FNAME13OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-
-
- TESTING(" removing scaleoffset filter");
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addfilter("dset_scaleoffset:NONE",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME13,FNAME13OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME13,FNAME13OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME13, FNAME13OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-
-
- TESTING(" adding scaleoffset filter");
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addfilter("dset_none:SOFF=31,IN",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME13,FNAME13OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME13,FNAME13OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME13, FNAME13OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-
-
- /*-------------------------------------------------------------------------
- * file with all filters
- * dset_all
- * dset_deflate
- * dset_szip
- * dset_shuffle
- * dset_fletcher32
- *-------------------------------------------------------------------------
- */
-
-
- TESTING(" filter conversion from deflate to szip");
-
-#if defined (H5_HAVE_FILTER_SZIP) && defined (H5_HAVE_FILTER_DEFLATE)
-
- if (szip_can_encode) {
- /* fs_type = H5F_FILE_SPACE_VFD; fs_size = 4 */
- if (h5repack_init (&pack_options, 0, FALSE, H5_INC_ENUM(H5F_file_space_type_t, fs_type), ++fs_size) < 0)
- GOERROR;
- if (h5repack_addfilter("dset_deflate:SZIP=8,NN",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME11,FNAME11OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME11,FNAME11OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME11, FNAME11OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
- } else {
- SKIPPED();
- }
-#else
- SKIPPED();
-#endif
-
- TESTING(" filter conversion from szip to deflate");
-
-#if defined (H5_HAVE_FILTER_SZIP) && defined (H5_HAVE_FILTER_DEFLATE)
-
- if (szip_can_encode) {
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addfilter("dset_szip:GZIP=1",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME11,FNAME11OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME11,FNAME11OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME11, FNAME11OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
- } else {
- SKIPPED();
- }
-#else
- SKIPPED();
-#endif
-
-
- /*-------------------------------------------------------------------------
- * test the NONE global option
- *-------------------------------------------------------------------------
- */
-
- TESTING(" removing all filters");
-
-#if defined (H5_HAVE_FILTER_SZIP) && defined (H5_HAVE_FILTER_DEFLATE)
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addfilter("NONE",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME11,FNAME11OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME11,FNAME11OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME11, FNAME11OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-#else
- SKIPPED();
-#endif
-
- /*-------------------------------------------------------------------------
- * test a big file
- *-------------------------------------------------------------------------
- */
- TESTING(" big file");
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack(FNAME14,FNAME14OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME14,FNAME14OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME14, FNAME14OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
- PASSED();
-
- /*-------------------------------------------------------------------------
- * test external dataset
- *-------------------------------------------------------------------------
- */
- TESTING(" external datasets");
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack(FNAME15,FNAME15OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME15,FNAME15OUT,NULL,NULL,&diff_options) > 0)
- GOERROR;
- if (h5repack_verify(FNAME15, FNAME15OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
- PASSED();
-
- /*-------------------------------------------------------------------------
- * test file with userblock
- *-------------------------------------------------------------------------
- */
- TESTING(" file with userblock");
- if(h5repack_init(&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if(h5repack(FNAME16, FNAME16OUT, &pack_options) < 0)
- GOERROR;
- if(h5diff(FNAME16, FNAME16OUT, NULL, NULL, &diff_options) > 0)
- GOERROR;
- if(h5repack_verify(FNAME16, FNAME16OUT, &pack_options) <= 0)
- GOERROR;
- if(verify_userblock(FNAME16OUT) < 0)
- GOERROR;
- if(h5repack_end(&pack_options) < 0)
- GOERROR;
- PASSED();
-
- /*-------------------------------------------------------------------------
- * test --latest options
- *-------------------------------------------------------------------------
- */
- TESTING(" latest file format options");
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- pack_options.latest=1;
- pack_options.grp_compact=10;
- pack_options.grp_indexed=5;
- pack_options.msg_size[0] = 10;
- pack_options.msg_size[1] = 20;
- pack_options.msg_size[2] = 30;
- pack_options.msg_size[3] = 40;
- pack_options.msg_size[4] = 50;
- if (h5repack(FNAME1,FNAME1OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME1,FNAME1OUT,NULL,NULL,&diff_options) > 0)
- GOERROR;
- if (h5repack_verify(FNAME1, FNAME1OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
- PASSED();
-
-
- /*-------------------------------------------------------------------------
- * test several global filters
- *-------------------------------------------------------------------------
- */
-
- TESTING(" several global filters");
-
-#if defined (H5_HAVE_FILTER_DEFLATE)
-
- if (h5repack_init (&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
- if (h5repack_addfilter("GZIP=1",&pack_options) < 0)
- GOERROR;
- if (h5repack_addfilter("SHUF",&pack_options) < 0)
- GOERROR;
- if (h5repack(FNAME11,FNAME11OUT,&pack_options) < 0)
- GOERROR;
- if (h5diff(FNAME11,FNAME11OUT,NULL,NULL,&diff_options) >0)
- GOERROR;
- if (h5repack_verify(FNAME11, FNAME11OUT,&pack_options)<=0)
- GOERROR;
- if (h5repack_end (&pack_options) < 0)
- GOERROR;
-
- PASSED();
-#else
- SKIPPED();
-#endif
-
-
- /*-------------------------------------------------------------------------
- * test file with userblock
- *-------------------------------------------------------------------------
- */
- TESTING(" file with added userblock");
-
-#ifdef H5_HAVE_FILTER_DEFLATE
-
- if(h5repack_init(&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
-
- /* add the options for a user block size and user block filename */
- pack_options.ublock_size = USERBLOCK_SIZE;
- pack_options.ublock_filename = FNAME_UB;
-
- if(h5repack(FNAME8, FNAME8OUT, &pack_options) < 0)
- GOERROR;
- if(h5diff(FNAME8, FNAME8OUT, NULL, NULL, &diff_options) > 0)
- GOERROR;
- if(h5repack_verify(FNAME8, FNAME8OUT, &pack_options) <= 0)
- GOERROR;
- if(verify_userblock(FNAME8OUT) < 0)
- GOERROR;
- if(h5repack_end(&pack_options) < 0)
- GOERROR;
-
-
- PASSED();
-#else
- SKIPPED();
-#endif
-
-
- /*-------------------------------------------------------------------------
- * test file with aligment
- *-------------------------------------------------------------------------
- */
- TESTING(" file with aligment");
-
-#ifdef H5_HAVE_FILTER_DEFLATE
-
- if(h5repack_init(&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
-
- /* add the options for aligment */
- pack_options.alignment = 1;
- pack_options.threshold = 1;
-
- if(h5repack(FNAME8, FNAME8OUT, &pack_options) < 0)
- GOERROR;
- if(h5diff(FNAME8, FNAME8OUT, NULL, NULL, &diff_options) > 0)
- GOERROR;
- if(h5repack_verify(FNAME8, FNAME8OUT, &pack_options) <= 0)
- GOERROR;
-
- /* verify aligment */
- {
- hsize_t threshold;
- hsize_t alignment;
- hid_t fapl;
- hid_t fid;
-
- if (( fid = H5Fopen(FNAME8OUT, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0 )
- GOERROR;
- if ((fapl = H5Fget_access_plist(fid)) < 0)
- GOERROR;
- if ( H5Pget_alignment(fapl, &threshold, &alignment ) < 0)
- GOERROR;
- if ( threshold != 1 )
- GOERROR;
- if ( alignment != 1 )
- GOERROR;
- if ( H5Pclose(fapl) < 0)
- GOERROR;
- if (H5Fclose(fid) < 0)
- GOERROR;
-
- }
-
-
- if(h5repack_end(&pack_options) < 0)
- GOERROR;
-
-
- PASSED();
-#else
- SKIPPED();
-#endif
-
- /*-------------------------------------------------------------------------
- * test file with userblock
- *-------------------------------------------------------------------------
- */
- TESTING(" file with committed datatypes");
-
- if(h5repack_init(&pack_options, 0, FALSE, fs_type, fs_size) < 0)
- GOERROR;
-
- if(h5repack(FNAME17, FNAME17OUT, &pack_options) < 0)
- GOERROR;
- if(h5diff(FNAME17, FNAME17OUT, NULL, NULL, &diff_options) > 0)
- GOERROR;
- if(h5repack_verify(FNAME17, FNAME17OUT, &pack_options) <= 0)
- GOERROR;
- if(h5repack_end(&pack_options) < 0)
- GOERROR;
-
-
- PASSED();
-
- /*-------------------------------------------------------------------------
- * test --metadata_block_size option
- * Also verify that output file using the metadata_block_size option is
- * larger than the output file one not using it.
- * FNAME4 is used because it is the same as the test file used for the
- * shell script version of this test (h5repack.sh).
- *-------------------------------------------------------------------------
- */
- TESTING(" metadata block size option");
- /* First run without metadata option. No need to verify the correctness */
- /* since this has been verified by earlier tests. Just record the file */
- /* size of the output file. */
- if(h5repack_init(&pack_options, 0, FALSE, H5F_FILE_SPACE_DEFAULT, (hsize_t)0) < 0)
- GOERROR;
- if(h5repack(FNAME4, FNAME4OUT, &pack_options) < 0)
- GOERROR;
- if(HDstat(FNAME4OUT, &file_stat) < 0)
- GOERROR;
- fsize1 = file_stat.st_size;
- if(h5repack_end(&pack_options) < 0)
- GOERROR;
-
- /* run it again with metadata option */
- if(h5repack_init(&pack_options, 0, FALSE, H5F_FILE_SPACE_DEFAULT, (hsize_t)0) < 0)
- GOERROR;
- pack_options.meta_block_size = 8192;
- if(h5repack(FNAME4, FNAME4OUT, &pack_options) < 0)
- GOERROR;
- if(h5diff(FNAME4, FNAME4OUT, NULL, NULL, &diff_options) > 0)
- GOERROR;
- if(h5repack_verify(FNAME4, FNAME4OUT, &pack_options) <= 0)
- GOERROR;
- /* record the file size of the output file */
- if(HDstat(FNAME4OUT, &file_stat) < 0)
- GOERROR;
- fsize2 = file_stat.st_size;
- /* verify second file size is larger than the first one */
- if(fsize2 <= fsize1)
- GOERROR;
- if(h5repack_end(&pack_options) < 0)
- GOERROR;
- PASSED();
-
-
- /*-------------------------------------------------------------------------
- * clean temporary test files
- *-------------------------------------------------------------------------
- */
- {
- hid_t fapl;
-
- fapl = h5_fileaccess();
- h5_clean_files(H5REPACK_FILENAMES, fapl);
-
- }
-
- puts("All h5repack tests passed.");
-
- h5tools_close();
-
- return 0;
-
-error:
- puts("***** H5REPACK TESTS FAILED *****");
- return 1;
-
-}
-
-
-/*-------------------------------------------------------------------------
-* Function: make_testfiles
-*
-* Purpose: make a test file with all types of HDF5 objects,
-* datatypes and filters
-*
-*-------------------------------------------------------------------------
-*/
-static
-int make_testfiles(void)
-{
- hid_t fid;
-
- /*-------------------------------------------------------------------------
- * create a file for general copy test
- *-------------------------------------------------------------------------
- */
- if((fid = H5Fcreate(FNAME0,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0)
- return -1;
- if (make_fill(fid) < 0)
- goto out;
- if(H5Fclose(fid) < 0)
- return -1;
-
- /*-------------------------------------------------------------------------
- * create another file for general copy test (all datatypes)
- *-------------------------------------------------------------------------
- */
- if((fid = H5Fcreate(FNAME1,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0)
- return -1;
- if (make_all_objects(fid) < 0)
- goto out;
- if(H5Fclose(fid) < 0)
- return -1;
-
- /*-------------------------------------------------------------------------
- * create a file for attributes copy test
- *-------------------------------------------------------------------------
- */
- if((fid = H5Fcreate(FNAME2,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0)
- return -1;
- if (make_attributes(fid) < 0)
- goto out;
- if(H5Fclose(fid) < 0)
- return -1;
-
- /*-------------------------------------------------------------------------
- * create a file for hard links test
- *-------------------------------------------------------------------------
- */
- if((fid = H5Fcreate(FNAME3,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0)
- return -1;
- if (make_hlinks(fid) < 0)
- goto out;
- if(H5Fclose(fid) < 0)
- return -1;
-
- /*-------------------------------------------------------------------------
- * create a file for layouts test
- *-------------------------------------------------------------------------
- */
- if((fid = H5Fcreate(FNAME4,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0)
- return -1;
- if (make_layout(fid) < 0)
- goto out;
- if(H5Fclose(fid) < 0)
- return -1;
-
- /*-------------------------------------------------------------------------
- * create a file for layout conversion test
- *-------------------------------------------------------------------------
- */
- if((fid = H5Fcreate(FNAME18, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- return -1;
-
- if(make_layout2(fid) < 0)
- goto out;
-
- if(H5Fclose(fid) < 0)
- return -1;
-
- /*-------------------------------------------------------------------------
- * for test layout conversions form chunk with unlimited max dims
- *-------------------------------------------------------------------------
- */
- if((fid = H5Fcreate("h5repack_layout3.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- return -1;
-
- if(make_layout3(fid) < 0)
- goto out;
-
- if(H5Fclose(fid) < 0)
- return -1;
-
- /*-------------------------------------------------------------------------
- * create a file for the H5D_ALLOC_TIME_EARLY test
- *-------------------------------------------------------------------------
- */
- if (make_early() < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * create a file with the SZIP filter
- *-------------------------------------------------------------------------
- */
-#ifdef H5_HAVE_FILTER_SZIP
- if((fid = H5Fcreate(FNAME7,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0)
- return -1;
- if (make_szip(fid) < 0)
- goto out;
- if(H5Fclose(fid) < 0)
- return -1;
-#endif /* H5_HAVE_FILTER_SZIP */
-
-
- /*-------------------------------------------------------------------------
- * create a file with the deflate filter
- *-------------------------------------------------------------------------
- */
- if((fid = H5Fcreate(FNAME8,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0)
- return -1;
- if (make_deflate(fid) < 0)
- goto out;
- if(H5Fclose(fid) < 0)
- return -1;
-
- /*-------------------------------------------------------------------------
- * create a file with the shuffle filter
- *-------------------------------------------------------------------------
- */
- if((fid = H5Fcreate(FNAME9,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0)
- return -1;
- if (make_shuffle(fid) < 0)
- goto out;
- if(H5Fclose(fid) < 0)
- return -1;
-
- /*-------------------------------------------------------------------------
- * create a file with the fletcher32 filter
- *-------------------------------------------------------------------------
- */
- if((fid = H5Fcreate(FNAME10,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0)
- return -1;
- if (make_fletcher32(fid) < 0)
- goto out;
- if(H5Fclose(fid) < 0)
- return -1;
-
- /*-------------------------------------------------------------------------
- * create a file with all the filters
- *-------------------------------------------------------------------------
- */
- if((fid = H5Fcreate(FNAME11,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0)
- return -1;
- if (make_all_filters(fid) < 0)
- goto out;
- if(H5Fclose(fid) < 0)
- return -1;
-
- /*-------------------------------------------------------------------------
- * create a file with the nbit filter
- *-------------------------------------------------------------------------
- */
- if((fid = H5Fcreate(FNAME12,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0)
- return -1;
- if (make_nbit(fid) < 0)
- goto out;
- if(H5Fclose(fid) < 0)
- return -1;
-
- /*-------------------------------------------------------------------------
- * create a file with the scaleoffset filter
- *-------------------------------------------------------------------------
- */
- if((fid = H5Fcreate(FNAME13,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0)
- return -1;
- if (make_scaleoffset(fid) < 0)
- goto out;
- if(H5Fclose(fid) < 0)
- return -1;
-
- /*-------------------------------------------------------------------------
- * create a big dataset
- *-------------------------------------------------------------------------
- */
- if((fid = H5Fcreate(FNAME14,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0)
- return -1;
- if (make_big(fid) < 0)
- goto out;
- if(H5Fclose(fid) < 0)
- return -1;
-
- /*-------------------------------------------------------------------------
- * create a file with external dataset
- *-------------------------------------------------------------------------
- */
- if((fid = H5Fcreate(FNAME15,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0)
- return -1;
- if (make_external(fid) < 0)
- goto out;
- if(H5Fclose(fid) < 0)
- return -1;
-
- /*-------------------------------------------------------------------------
- * create a file with userblock
- *-------------------------------------------------------------------------
- */
- if(make_userblock() < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * create a userblock file
- *-------------------------------------------------------------------------
- */
- if(make_userblock_file() < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * create a file with named datatypes
- *-------------------------------------------------------------------------
- */
- if((fid = H5Fcreate(FNAME17,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0)
- return -1;
- if (make_named_dtype(fid) < 0)
- goto out;
- if(H5Fclose(fid) < 0)
- return -1;
-
- /*-------------------------------------------------------------------------
- * create obj and region reference type datasets (bug1814)
- * add attribute with int type (bug1726)
- * add attribute with obj and region reference type (bug1726)
- *-------------------------------------------------------------------------*/
- if((fid = H5Fcreate(FNAME_REF,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0)
- return -1;
- /* create reference type datasets */
- if (make_references(fid) < 0)
- goto out;
- if(H5Fclose(fid) < 0)
- return -1;
-
- /*-------------------------------------------------------------------------
- * create a file with obj and region references in attribute of compound and
- * vlen datatype
- *-------------------------------------------------------------------------*/
- if((fid = H5Fcreate(FNAME_ATTR_REF,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT)) < 0)
- return -1;
- if (make_complex_attr_references(fid) < 0)
- goto out;
- if(H5Fclose(fid) < 0)
- return -1;
-
- return 0;
-
-out:
- H5Fclose(fid);
- return -1;
-}
-
-
-
-/*-------------------------------------------------------------------------
-* Function: make_all_objects
-*
-* Purpose: make a test file with all types of HDF5 objects
-*
-*-------------------------------------------------------------------------
-*/
-static
-int make_all_objects(hid_t loc_id)
-{
- hid_t did=-1;
- hid_t gid=-1;
- hid_t tid=-1;
- hid_t rid=-1;
- hid_t sid=-1;
- hid_t gcplid=-1;
- hsize_t dims[1]={2};
- /* compound datatype */
- typedef struct s_t
- {
- int a;
- float b;
- } s_t;
-
- /*-------------------------------------------------------------------------
- * H5G_DATASET
- *-------------------------------------------------------------------------
- */
- if ((sid = H5Screate_simple(1, dims, NULL)) < 0)
- goto out;
- if ((did = H5Dcreate2(loc_id, "dset_referenced", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
-
-
- /*-------------------------------------------------------------------------
- * H5G_GROUP
- *-------------------------------------------------------------------------
- */
- if ((gid = H5Gcreate2(loc_id, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if (H5Gclose(gid) < 0)
- goto out;
-
- /* create a group "g2" with H5P_CRT_ORDER_TRACKED set */
- if ((gcplid = H5Pcreate(H5P_GROUP_CREATE)) < 0)
- goto out;
- if (H5Pset_link_creation_order(gcplid, H5P_CRT_ORDER_TRACKED) < 0)
- goto out;
- if ((gid = H5Gcreate2(loc_id, "g2", H5P_DEFAULT, gcplid, H5P_DEFAULT)) < 0)
- goto out;
- if (H5Gclose(gid) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5G_TYPE
- *-------------------------------------------------------------------------
- */
-
- /* create a compound datatype */
- if ((tid = H5Tcreate(H5T_COMPOUND, sizeof(s_t))) < 0)
- goto out;
- if (H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_INT) < 0)
- goto out;
- if (H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_FLOAT) < 0)
- goto out;
- if (H5Tcommit2(loc_id, "type", tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5G_LINK
- *-------------------------------------------------------------------------
- */
-
- if (H5Lcreate_soft("dset", loc_id, "link", H5P_DEFAULT, H5P_DEFAULT) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5G_UDLINK
- *-------------------------------------------------------------------------
- */
- /* Create an external link. Other UD links are not supported by h5repack */
- if (H5Lcreate_external("file", "path", loc_id, "ext_link", H5P_DEFAULT, H5P_DEFAULT) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * write a series of datasetes at root
- *-------------------------------------------------------------------------
- */
-
- if ((rid = H5Gopen2(loc_id, "/", H5P_DEFAULT)) < 0)
- goto out;
- if (write_dset_in(rid,"dset_referenced",loc_id,0) < 0)
- goto out;
- if (H5Gclose(rid) < 0)
- goto out;
-
- /* close */
- if (H5Dclose(did) < 0)
- goto out;
- if (H5Sclose(sid) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- if (H5Pclose(gcplid) < 0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY
- {
- H5Dclose(did);
- H5Gclose(gid);
- H5Gclose(rid);
- H5Sclose(sid);
- H5Tclose(tid);
- H5Pclose(gcplid);
- } H5E_END_TRY;
- return -1;
-}
-
-
-/*-------------------------------------------------------------------------
-* Function: make_attributes
-*
-* Purpose: make a test file with all types of attributes
-*
-*-------------------------------------------------------------------------
-*/
-static
-int make_attributes(hid_t loc_id)
-{
- hid_t did=-1;
- hid_t gid=-1;
- hid_t rid=-1;
- hid_t sid=-1;
- hsize_t dims[1]={2};
-
- /*-------------------------------------------------------------------------
- * H5G_DATASET
- *-------------------------------------------------------------------------
- */
- if ((sid = H5Screate_simple(1, dims, NULL)) < 0)
- goto out;
- if ((did = H5Dcreate2(loc_id, "dset", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5G_GROUP
- *-------------------------------------------------------------------------
- */
- if ((gid = H5Gcreate2(loc_id, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if ((rid = H5Gopen2(loc_id, "/", H5P_DEFAULT)) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * write a series of attributes on the dataset, group, and root group
- *-------------------------------------------------------------------------
- */
-
- if ( write_attr_in(did,"dset",loc_id,0) < 0)
- goto out;
- if (write_attr_in(gid,"dset",loc_id,0) < 0)
- goto out;
- if (write_attr_in(rid,"dset",loc_id,0) < 0)
- goto out;
-
- /* close */
- if (H5Dclose(did) < 0)
- goto out;
- if (H5Gclose(gid) < 0)
- goto out;
- if (H5Gclose(rid) < 0)
- goto out;
- if (H5Sclose(sid) < 0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY
- {
- H5Dclose(did);
- H5Gclose(gid);
- H5Gclose(rid);
- H5Sclose(sid);
- } H5E_END_TRY;
- return -1;
-
-}
-
-/*-------------------------------------------------------------------------
-* Function: make_hlinks
-*
-* Purpose: make a test file with hard links
-*
-*-------------------------------------------------------------------------
-*/
-static
-int make_hlinks(hid_t loc_id)
-{
- hid_t g1id=-1;
- hid_t g2id=-1;
- hid_t g3id=-1;
- hsize_t dims[2]={3,2};
- int buf[3][2]= {{1,1},{1,2},{2,2}};
-
- /*-------------------------------------------------------------------------
- * create a dataset and some hard links to it
- *-------------------------------------------------------------------------
- */
-
- if(write_dset(loc_id, 2, dims, "dset", H5T_NATIVE_INT, buf) < 0)
- return -1;
- if(H5Lcreate_hard(loc_id, "dset", H5L_SAME_LOC, "link1 to dset", H5P_DEFAULT, H5P_DEFAULT) < 0)
- return -1;
- if(H5Lcreate_hard(loc_id, "dset", H5L_SAME_LOC, "link2 to dset", H5P_DEFAULT, H5P_DEFAULT) < 0)
- return -1;
- if(H5Lcreate_hard(loc_id, "dset", H5L_SAME_LOC, "link3 to dset", H5P_DEFAULT, H5P_DEFAULT) < 0)
- return -1;
-
- /*-------------------------------------------------------------------------
- * create a group and some hard links to it
- *-------------------------------------------------------------------------
- */
-
- if((g1id = H5Gcreate2(loc_id, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if((g2id = H5Gcreate2(g1id, "g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if((g3id = H5Gcreate2(g2id, "g3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
-
- if(H5Lcreate_hard(loc_id, "g1", g2id, "link1 to g1", H5P_DEFAULT, H5P_DEFAULT) < 0)
- goto out;
- if(H5Lcreate_hard(g1id, "g2", g3id, "link1 to g2", H5P_DEFAULT, H5P_DEFAULT) < 0)
- goto out;
-
-
- /* close */
- if (H5Gclose(g1id) < 0)
- goto out;
- if (H5Gclose(g2id) < 0)
- goto out;
- if (H5Gclose(g3id) < 0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY
- {
- H5Gclose(g1id);
- H5Gclose(g2id);
- H5Gclose(g3id);
- } H5E_END_TRY;
- return -1;
-
-}
-
-
-/*-------------------------------------------------------------------------
-* Function: make_szip
-*
-* Purpose: make a dataset with the SZIP filter
-*
-*-------------------------------------------------------------------------
-*/
-#ifdef H5_HAVE_FILTER_SZIP
-static
-int make_szip(hid_t loc_id)
-{
- hid_t dcpl; /* dataset creation property list */
- hid_t sid; /* dataspace ID */
- unsigned szip_options_mask=H5_SZIP_ALLOW_K13_OPTION_MASK|H5_SZIP_NN_OPTION_MASK;
- unsigned szip_pixels_per_block=8;
- hsize_t dims[RANK]={DIM1,DIM2};
- hsize_t chunk_dims[RANK]={CDIM1,CDIM2};
- int buf[DIM1][DIM2];
- int i, j, n;
- int szip_can_encode = 0;
-
- for (i=n=0; i<DIM1; i++)
- {
- for (j=0; j<DIM2; j++)
- {
- buf[i][j]=n++;
- }
- }
- /* create a space */
- if((sid = H5Screate_simple(RANK, dims, NULL)) < 0)
- return -1;
- /* create a dcpl */
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto out;
- /* set up chunk */
- if(H5Pset_chunk(dcpl, RANK, chunk_dims) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * SZIP
- *-------------------------------------------------------------------------
- */
- /* Make sure encoding is enabled */
- if (h5tools_can_encode(H5Z_FILTER_SZIP) == 1)
- {
- szip_can_encode = 1;
- }
- if (szip_can_encode)
- {
- /* set szip data */
- if(H5Pset_szip (dcpl,szip_options_mask,szip_pixels_per_block) < 0)
- goto out;
- if (make_dset(loc_id,"dset_szip",sid,dcpl,buf) < 0)
- goto out;
- }
- else
- {
- /* WARNING? SZIP is decoder only, can't generate test files */
- }
-
- if(H5Sclose(sid) < 0)
- goto out;
- if(H5Pclose(dcpl) < 0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(dcpl);
- H5Sclose(sid);
- } H5E_END_TRY;
- return -1;
-}
-#endif /* H5_HAVE_FILTER_SZIP */
-
-
-
-/*-------------------------------------------------------------------------
-* Function: make_deflate
-*
-* Purpose: make a dataset with the deflate filter
-*
-*-------------------------------------------------------------------------
-*/
-static
-int make_deflate(hid_t loc_id)
-{
- hid_t dcpl; /* dataset creation property list */
- hid_t sid; /* dataspace ID */
- hsize_t dims[RANK]={DIM1,DIM2};
- hsize_t chunk_dims[RANK]={CDIM1,CDIM2};
- int buf[DIM1][DIM2];
- hobj_ref_t bufref[1]; /* reference */
- hsize_t dims1r[1]={1};
- int i, j, n;
-
- for (i=n=0; i<DIM1; i++)
- {
- for (j=0; j<DIM2; j++)
- {
- buf[i][j]=n++;
- }
- }
-
- /* create a space */
- if((sid = H5Screate_simple(RANK, dims, NULL)) < 0)
- return -1;
- /* create a dcpl */
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto out;
- /* set up chunk */
- if(H5Pset_chunk(dcpl, RANK, chunk_dims) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * GZIP
- *-------------------------------------------------------------------------
- */
-#if defined (H5_HAVE_FILTER_DEFLATE)
- /* set deflate data */
- if(H5Pset_deflate(dcpl, 9) < 0)
- goto out;
- if (make_dset(loc_id,"dset_deflate",sid,dcpl,buf) < 0)
- goto out;
-
- /* create a reference to the dataset, test second seeep of file for references */
-
- if (H5Rcreate(&bufref[0],loc_id,"dset_deflate",H5R_OBJECT,(hid_t)-1) < 0)
- goto out;
- if (write_dset(loc_id,1,dims1r,"ref",H5T_STD_REF_OBJ,bufref) < 0)
- goto out;
-#endif
-
-
- /*-------------------------------------------------------------------------
- * close space and dcpl
- *-------------------------------------------------------------------------
- */
- if(H5Sclose(sid) < 0)
- goto out;
- if(H5Pclose(dcpl) < 0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(dcpl);
- H5Sclose(sid);
- } H5E_END_TRY;
- return -1;
-}
-
-
-/*-------------------------------------------------------------------------
-* Function: make_shuffle
-*
-* Purpose: make a dataset with the shuffle filter
-*
-*-------------------------------------------------------------------------
-*/
-static
-int make_shuffle(hid_t loc_id)
-{
- hid_t dcpl; /* dataset creation property list */
- hid_t sid; /* dataspace ID */
- hsize_t dims[RANK]={DIM1,DIM2};
- hsize_t chunk_dims[RANK]={CDIM1,CDIM2};
- int buf[DIM1][DIM2];
- int i, j, n;
-
- for (i=n=0; i<DIM1; i++)
- {
- for (j=0; j<DIM2; j++)
- {
- buf[i][j]=n++;
- }
- }
- /* create a space */
- if((sid = H5Screate_simple(RANK, dims, NULL)) < 0)
- return -1;
- /* create a dcpl */
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto out;
- /* set up chunk */
- if(H5Pset_chunk(dcpl, RANK, chunk_dims) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * shuffle
- *-------------------------------------------------------------------------
- */
-
- /* set the shuffle filter */
- if (H5Pset_shuffle(dcpl) < 0)
- goto out;
- if (make_dset(loc_id,"dset_shuffle",sid,dcpl,buf) < 0)
- goto out;
-
-
- /*-------------------------------------------------------------------------
- * close space and dcpl
- *-------------------------------------------------------------------------
- */
- if(H5Sclose(sid) < 0)
- goto out;
- if(H5Pclose(dcpl) < 0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(dcpl);
- H5Sclose(sid);
- } H5E_END_TRY;
- return -1;
-}
-
-/*-------------------------------------------------------------------------
-* Function: make_fletcher32
-*
-* Purpose: make a dataset with the fletcher32 filter
-*
-*-------------------------------------------------------------------------
-*/
-static
-int make_fletcher32(hid_t loc_id)
-{
- hid_t dcpl; /* dataset creation property list */
- hid_t sid; /* dataspace ID */
- hsize_t dims[RANK]={DIM1,DIM2};
- hsize_t chunk_dims[RANK]={CDIM1,CDIM2};
- int buf[DIM1][DIM2];
- int i, j, n;
-
- for (i=n=0; i<DIM1; i++)
- {
- for (j=0; j<DIM2; j++)
- {
- buf[i][j]=n++;
- }
- }
- /* create a space */
- if((sid = H5Screate_simple(RANK, dims, NULL)) < 0)
- return -1;
- /* create a dataset creation property list; the same DCPL is used for all dsets */
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto out;
- /* set up chunk */
- if(H5Pset_chunk(dcpl, RANK, chunk_dims) < 0)
- goto out;
-
-
- /*-------------------------------------------------------------------------
- * fletcher32
- *-------------------------------------------------------------------------
- */
-
- /* remove the filters from the dcpl */
- if (H5Premove_filter(dcpl,H5Z_FILTER_ALL) < 0)
- goto out;
- /* set the checksum filter */
- if (H5Pset_fletcher32(dcpl) < 0)
- goto out;
- if (make_dset(loc_id,"dset_fletcher32",sid,dcpl,buf) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * close space and dcpl
- *-------------------------------------------------------------------------
- */
- if(H5Sclose(sid) < 0)
- goto out;
- if(H5Pclose(dcpl) < 0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(dcpl);
- H5Sclose(sid);
- } H5E_END_TRY;
- return -1;
-}
-
-
-/*-------------------------------------------------------------------------
-* Function: make_nbit
-*
-* Purpose: make a dataset with the nbit filter
-*
-*-------------------------------------------------------------------------
-*/
-static
-int make_nbit(hid_t loc_id)
-{
- hid_t dcpl; /* dataset creation property list */
- hid_t sid; /* dataspace ID */
- hid_t dtid;
- hid_t dsid;
- hsize_t dims[RANK]={DIM1,DIM2};
- hsize_t chunk_dims[RANK]={CDIM1,CDIM2};
- int buf[DIM1][DIM2];
- int i, j, n;
-
- for (i=n=0; i<DIM1; i++)
- {
- for (j=0; j<DIM2; j++)
- {
- buf[i][j]=n++;
- }
- }
- /* create a space */
- if((sid = H5Screate_simple(RANK, dims, NULL)) < 0)
- return -1;
- /* create a dataset creation property list; the same DCPL is used for all dsets */
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto out;
- /* set up chunk */
- if(H5Pset_chunk(dcpl, RANK, chunk_dims) < 0)
- goto out;
-
- dtid = H5Tcopy(H5T_NATIVE_INT);
- if (H5Tset_precision(dtid,(H5Tget_precision(dtid) - 1)) < 0)
- {
- H5Tclose(dtid);
- goto out;
- }
-
- /* remove the filters from the dcpl */
- if(H5Premove_filter(dcpl, H5Z_FILTER_ALL) < 0)
- {
- H5Tclose(dtid);
- goto out;
- }
- if(H5Pset_nbit(dcpl) < 0) {
- H5Tclose(dtid);
- goto out;
- }
- if((dsid = H5Dcreate2(loc_id, "dset_nbit", dtid, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) {
- H5Tclose(dtid);
- goto out;
- }
- if(H5Dwrite(dsid, dtid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) {
- H5Tclose(dtid);
- goto out;
- }
- H5Dclose(dsid);
-
- if(H5Premove_filter(dcpl, H5Z_FILTER_ALL) < 0) {
- H5Tclose(dtid);
- goto out;
- }
- if((dsid = H5Dcreate2(loc_id, "dset_int31", dtid, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) {
- H5Tclose(dtid);
- goto out;
- }
- if(H5Dwrite(dsid, dtid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) {
- H5Tclose(dtid);
- goto out;
- }
- H5Dclose(dsid);
-
- /*-------------------------------------------------------------------------
- * close
- *-------------------------------------------------------------------------
- */
- if(H5Sclose(sid) < 0)
- goto out;
- if(H5Pclose(dcpl) < 0)
- goto out;
- if (H5Tclose(dtid) < 0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(dcpl);
- H5Sclose(sid);
- } H5E_END_TRY;
- return -1;
-}
-
-
-/*-------------------------------------------------------------------------
-* Function: make_scaleoffset
-*
-* Purpose: make a dataset with the scaleoffset filter
-*
-*-------------------------------------------------------------------------
-*/
-static
-int make_scaleoffset(hid_t loc_id)
-{
- hid_t dcpl; /* dataset creation property list */
- hid_t sid; /* dataspace ID */
- hid_t dtid;
- hid_t dsid;
- hsize_t dims[RANK]={DIM1,DIM2};
- hsize_t chunk_dims[RANK]={CDIM1,CDIM2};
- int buf[DIM1][DIM2];
- int i, j, n;
-
- for (i=n=0; i<DIM1; i++)
- {
- for (j=0; j<DIM2; j++)
- {
- buf[i][j]=n++;
- }
- }
- /* create a space */
- if((sid = H5Screate_simple(RANK, dims, NULL)) < 0)
- return -1;
- /* create a dataset creation property list; the same DCPL is used for all dsets */
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto out;
- /* set up chunk */
- if(H5Pset_chunk(dcpl, RANK, chunk_dims) < 0)
- goto out;
-
- dtid = H5Tcopy(H5T_NATIVE_INT);
-
- /* remove the filters from the dcpl */
- if(H5Premove_filter(dcpl, H5Z_FILTER_ALL) < 0) {
- H5Tclose(dtid);
- goto out;
- }
- if(H5Pset_scaleoffset(dcpl, H5Z_SO_INT, 31) < 0) {
- H5Tclose(dtid);
- goto out;
- }
- if((dsid = H5Dcreate2(loc_id, "dset_scaleoffset", dtid, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) {
- H5Tclose(dtid);
- goto out;
- }
- if(H5Dwrite(dsid, dtid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) {
- H5Tclose(dtid);
- goto out;
- }
- H5Dclose(dsid);
- if((dsid = H5Dcreate2(loc_id, "dset_none", dtid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) {
- H5Tclose(dtid);
- goto out;
- }
- if(H5Dwrite(dsid, dtid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) {
- H5Tclose(dtid);
- goto out;
- }
- H5Tclose(dtid);
- H5Dclose(dsid);
-
- /*-------------------------------------------------------------------------
- * close space and dcpl
- *-------------------------------------------------------------------------
- */
- if(H5Sclose(sid) < 0)
- goto out;
- if(H5Pclose(dcpl) < 0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(dcpl);
- H5Sclose(sid);
- } H5E_END_TRY;
- return -1;
-}
-
-
-/*-------------------------------------------------------------------------
-* Function: make_all_filters
-*
-* Purpose: make a file with all filters
-*
-*-------------------------------------------------------------------------
-*/
-static
-int make_all_filters(hid_t loc_id)
-{
- hid_t dcpl; /* dataset creation property list */
- hid_t sid; /* dataspace ID */
- hid_t dtid;
- hid_t dsid;
-#if defined (H5_HAVE_FILTER_SZIP)
- unsigned szip_options_mask=H5_SZIP_ALLOW_K13_OPTION_MASK|H5_SZIP_NN_OPTION_MASK;
- unsigned szip_pixels_per_block=8;
-#endif /* H5_HAVE_FILTER_SZIP */
- hsize_t dims[RANK]={DIM1,DIM2};
- hsize_t chunk_dims[RANK]={CDIM1,CDIM2};
- int buf[DIM1][DIM2];
- int i, j, n;
-#if defined (H5_HAVE_FILTER_SZIP)
- int szip_can_encode = 0;
-#endif
-
- for (i=n=0; i<DIM1; i++)
- {
- for (j=0; j<DIM2; j++)
- {
- buf[i][j]=n++;
- }
- }
- /* create a space */
- if((sid = H5Screate_simple(RANK, dims, NULL)) < 0)
- return -1;
- /* create a dataset creation property list; the same DCPL is used for all dsets */
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto out;
- /* set up chunk */
- if (H5Pset_chunk(dcpl, RANK, chunk_dims) < 0)
- goto out;
-
- /* set the shuffle filter */
- if (H5Pset_shuffle(dcpl) < 0)
- goto out;
-
- /* set the checksum filter */
- if (H5Pset_fletcher32(dcpl) < 0)
- goto out;
-
-#if defined (H5_HAVE_FILTER_SZIP)
- if (h5tools_can_encode(H5Z_FILTER_SZIP) == 1)
- {
- szip_can_encode = 1;
- }
- if (szip_can_encode)
- {
- /* set szip data */
- if(H5Pset_szip (dcpl,szip_options_mask,szip_pixels_per_block) < 0)
- goto out;
- } else {
- /* WARNING? SZIP is decoder only, can't generate test data using szip */
- }
-#endif
-
-#if defined (H5_HAVE_FILTER_DEFLATE)
- /* set deflate data */
- if(H5Pset_deflate(dcpl, 9) < 0)
- goto out;
-#endif
-
- if (make_dset(loc_id,"dset_all",sid,dcpl,buf) < 0)
- goto out;
-
- /* remove the filters from the dcpl */
- if (H5Premove_filter(dcpl,H5Z_FILTER_ALL) < 0)
- goto out;
- /* set the checksum filter */
- if (H5Pset_fletcher32(dcpl) < 0)
- goto out;
- if (make_dset(loc_id,"dset_fletcher32",sid,dcpl,buf) < 0)
- goto out;
-
-
- /* Make sure encoding is enabled */
-#if defined (H5_HAVE_FILTER_SZIP)
- if (szip_can_encode)
- {
- /* remove the filters from the dcpl */
- if (H5Premove_filter(dcpl,H5Z_FILTER_ALL) < 0)
- goto out;
- /* set szip data */
- if(H5Pset_szip (dcpl,szip_options_mask,szip_pixels_per_block) < 0)
- goto out;
- if (make_dset(loc_id,"dset_szip",sid,dcpl,buf) < 0)
- goto out;
- } else
- {
- /* WARNING? SZIP is decoder only, can't generate test dataset */
- }
-#endif
-
-
- /* remove the filters from the dcpl */
- if (H5Premove_filter(dcpl,H5Z_FILTER_ALL) < 0)
- goto out;
- /* set the shuffle filter */
- if (H5Pset_shuffle(dcpl) < 0)
- goto out;
- if (make_dset(loc_id,"dset_shuffle",sid,dcpl,buf) < 0)
- goto out;
-
-
-#if defined (H5_HAVE_FILTER_DEFLATE)
- /* remove the filters from the dcpl */
- if (H5Premove_filter(dcpl,H5Z_FILTER_ALL) < 0)
- goto out;
- /* set deflate data */
- if(H5Pset_deflate(dcpl, 1) < 0)
- goto out;
- if (make_dset(loc_id,"dset_deflate",sid,dcpl,buf) < 0)
- goto out;
-#endif
-
-
-
- /* remove the filters from the dcpl */
- if (H5Premove_filter(dcpl, H5Z_FILTER_ALL) < 0)
- goto out;
- /* set the shuffle filter */
- if (H5Pset_nbit(dcpl) < 0)
- goto out;
- if ((dtid = H5Tcopy(H5T_NATIVE_INT)) < 0)
- goto out;
- if (H5Tset_precision(dtid, (H5Tget_precision(dtid) - 1)) < 0)
- goto out;
- if((dsid = H5Dcreate2(loc_id, "dset_nbit", dtid, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
- goto out;
- if(H5Dwrite(dsid, dtid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
- goto out;
-
- /* close */
- if(H5Tclose(dtid) < 0)
- return -1;
- if(H5Dclose(dsid) < 0)
- return -1;
-
- if(H5Sclose(sid) < 0)
- goto out;
- if(H5Pclose(dcpl) < 0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY
- {
- H5Pclose(dcpl);
- H5Sclose(sid);
- } H5E_END_TRY;
- return -1;
-}
-
-
-
-/*-------------------------------------------------------------------------
-* Function: make_early
-*
-* Purpose: create a file for the H5D_ALLOC_TIME_EARLY test
-*
-*-------------------------------------------------------------------------
-*/
-static
-int make_early(void)
-{
- hsize_t dims[1] ={3000};
- hsize_t cdims[1]={30};
- hid_t fid=-1;
- hid_t did=-1;
- hid_t sid=-1;
- hid_t tid=-1;
- hid_t dcpl=-1;
- int i;
- char name[10];
- int iter=100;
-
- if ((fid = H5Fcreate(FNAME5, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- return -1;
- if (H5Fclose(fid) < 0)
- goto out;
-
- if ((sid = H5Screate_simple(1, dims, NULL)) < 0)
- goto out;
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto out;
- if (H5Pset_chunk(dcpl, 1, cdims) < 0)
- goto out;
- if (H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_EARLY) < 0)
- goto out;
-
- for(i = 0; i < iter; i++)
- {
- if ((fid = H5Fopen(FNAME5, H5F_ACC_RDWR, H5P_DEFAULT)) < 0)
- goto out;
- if ((did = H5Dcreate2(fid, "early", H5T_NATIVE_DOUBLE, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
- goto out;
- if ((tid = H5Tcopy(H5T_NATIVE_DOUBLE)) < 0)
- goto out;
- sprintf(name, "%d", i);
- if ((H5Tcommit2(fid, name, tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- if (H5Dclose(did) < 0)
- goto out;
- if (H5Ldelete(fid, "early", H5P_DEFAULT) < 0)
- goto out;
- if (H5Fclose(fid) < 0)
- goto out;
- }
-
- /*-------------------------------------------------------------------------
- * do the same without close/opening the file and creating the dataset
- *-------------------------------------------------------------------------
- */
-
- if ((fid = H5Fcreate(FNAME6, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- return -1;
-
- for(i = 0; i < iter; i++)
- {
- if ((tid = H5Tcopy(H5T_NATIVE_DOUBLE)) < 0)
- goto out;
- sprintf(name, "%d", i);
- if ((H5Tcommit2(fid, name, tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- }
-
- if (H5Sclose(sid) < 0)
- goto out;
- if (H5Pclose(dcpl) < 0)
- goto out;
- if (H5Fclose(fid) < 0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY
- {
- H5Tclose(tid);
- H5Pclose(dcpl);
- H5Sclose(sid);
- H5Dclose(did);
- H5Fclose(fid);
- } H5E_END_TRY;
- return -1;
-}
-
-
-/*-------------------------------------------------------------------------
-* Function: make_layout
-*
-* Purpose: make several datasets with several layouts in location LOC_ID
-*
-*-------------------------------------------------------------------------
-*/
-static
-int make_layout(hid_t loc_id)
-{
- hid_t dcpl=-1; /* dataset creation property list */
- hid_t sid=-1; /* dataspace ID */
- hsize_t dims[RANK]={DIM1,DIM2};
- hsize_t chunk_dims[RANK]={CDIM1,CDIM2};
- int buf[DIM1][DIM2];
- int i, j, n;
- char name[6];
-
-
- for (i=n=0; i<DIM1; i++)
- {
- for (j=0; j<DIM2; j++)
- {
- buf[i][j]=n++;
- }
- }
-
- /*-------------------------------------------------------------------------
- * make several dataset with no filters
- *-------------------------------------------------------------------------
- */
- for (i=0; i<4; i++)
- {
- sprintf(name,"dset%d",i+1);
- if (write_dset(loc_id,RANK,dims,name,H5T_NATIVE_INT,buf) < 0)
- return -1;
- }
-
-
- /*-------------------------------------------------------------------------
- * make several dataset with several layout options
- *-------------------------------------------------------------------------
- */
- /* create a space */
- if((sid = H5Screate_simple(RANK, dims, NULL)) < 0)
- return -1;
- /* create a dataset creation property list; the same DCPL is used for all dsets */
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- {
- goto out;
- }
-
- /*-------------------------------------------------------------------------
- * H5D_COMPACT
- *-------------------------------------------------------------------------
- */
- if(H5Pset_layout (dcpl,H5D_COMPACT) < 0)
- goto out;
- if (make_dset(loc_id,"dset_compact",sid,dcpl,buf) < 0)
- {
- goto out;
- }
-
- /*-------------------------------------------------------------------------
- * H5D_CONTIGUOUS
- *-------------------------------------------------------------------------
- */
- if(H5Pset_layout (dcpl,H5D_CONTIGUOUS) < 0)
- goto out;
- if (make_dset(loc_id,"dset_contiguous",sid,dcpl,buf) < 0)
- {
- goto out;
- }
-
- /*-------------------------------------------------------------------------
- * H5D_CHUNKED
- *-------------------------------------------------------------------------
- */
- if(H5Pset_chunk(dcpl, RANK, chunk_dims) < 0)
- goto out;
- if (make_dset(loc_id,"dset_chunk",sid,dcpl,buf) < 0)
- {
- goto out;
- }
-
- /*-------------------------------------------------------------------------
- * close space and dcpl
- *-------------------------------------------------------------------------
- */
- if(H5Sclose(sid) < 0)
- goto out;
- if(H5Pclose(dcpl) < 0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY
- {
- H5Pclose(dcpl);
- H5Sclose(sid);
- } H5E_END_TRY;
- return -1;
-}
-
-/*-------------------------------------------------------------------------
- * Function: make_layout2
- *
- * Purpose: create datasets with contiguous and chunked layouts:
- *
- * contig_small: < 1k, fixed dims datspace
- * chunked_small_fixed: < 1k, fixed dims dataspace
- *
- *-------------------------------------------------------------------------
- */
-#define S_DIM1 4
-#define S_DIM2 10
-#define CONTIG_S "contig_small"
-#define CHUNKED_S_FIX "chunked_small_fixed"
-
-static
-int make_layout2(hid_t loc_id)
-{
-
- hid_t contig_dcpl = -1; /* dataset creation property list */
- hid_t chunked_dcpl = -1; /* dataset creation property list */
-
- int i, j, n; /* Local index variables */
- int ret_value = -1; /* Return value */
- hid_t s_sid = -1; /* dataspace ID */
-
- hsize_t s_dims[RANK] = {S_DIM1,S_DIM2}; /* Dataspace (< 1 k) */
- hsize_t chunk_dims[RANK] = {S_DIM1/2, S_DIM2/2}; /* Dimension sizes for chunks */
-
- int s_buf[S_DIM1][S_DIM2]; /* Temporary buffer */
-
- for(i = n = 0; i < S_DIM1; i++) {
- for (j = 0; j < S_DIM2; j++) {
- s_buf[i][j] = n++;
- }
- }
-
- /* Create dataspaces */
- if((s_sid = H5Screate_simple(RANK, s_dims, NULL)) < 0)
- goto out;
-
- /* Create contiguous datasets */
- if((contig_dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto out;
- if(H5Pset_layout(contig_dcpl, H5D_CONTIGUOUS) < 0)
- goto out;
- if(make_dset(loc_id, CONTIG_S, s_sid, contig_dcpl, s_buf) < 0)
- goto out;
-
- /* Create chunked datasets */
- if((chunked_dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto out;
- if(H5Pset_chunk(chunked_dcpl, RANK, chunk_dims) < 0)
- goto out;
- if(make_dset(loc_id, CHUNKED_S_FIX, s_sid, chunked_dcpl, s_buf) < 0)
- goto out;
-
- ret_value = 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(contig_dcpl);
- H5Pclose(chunked_dcpl);
-
- H5Sclose(s_sid);
-
- } H5E_END_TRY;
-
- return(ret_value);
-
-} /* make_layout2() */
-
-/*-------------------------------------------------------------------------
-* Function: make_layout3
-*
-* Purpose: make chunked datasets with unlimited max dim and chunk dim is
-* bigger than current dim. (HDFFV-7933)
-* Test for converting chunk to chunk , chunk to conti and chunk
-* to compact.
-* - The chunk to chunk changes layout bigger than any current dim
-* again.
-* - The chunk to compact test dataset bigger than 64K, should
-* remain original layout.*
-*
-*-------------------------------------------------------------------------
-*/
-#define DIM1_L3 300
-#define DIM2_L3 200
-/* small size */
-#define SDIM1_L3 4
-#define SDIM2_L3 50
-static
-int make_layout3(hid_t loc_id)
-{
- hid_t dcpl1=-1; /* dataset creation property list */
- hid_t dcpl2=-1; /* dataset creation property list */
- hid_t dcpl3=-1; /* dataset creation property list */
- hid_t sid1=-1; /* dataspace ID */
- hid_t sid2=-1; /* dataspace ID */
- hsize_t dims1[RANK]={DIM1_L3,DIM2_L3};
- hsize_t dims2[RANK]={SDIM1_L3,SDIM2_L3};
- hsize_t maxdims[RANK]={H5S_UNLIMITED, H5S_UNLIMITED};
- hsize_t chunk_dims1[RANK]={DIM1_L3*2,5};
- hsize_t chunk_dims2[RANK]={SDIM1_L3 + 2, SDIM2_L3/2};
- hsize_t chunk_dims3[RANK]={SDIM1_L3 - 2, SDIM2_L3/2};
- int buf1[DIM1_L3][DIM2_L3];
- int buf2[SDIM1_L3][SDIM2_L3];
- int i, j, n;
-
- /* init buf1 */
- for (i=n=0; i<DIM1_L3; i++)
- {
- for (j=0; j<DIM2_L3; j++)
- {
- buf1[i][j]=n++;
- }
- }
-
- /* init buf2 */
- for (i=n=0; i<SDIM1_L3; i++)
- {
- for (j=0; j<SDIM2_L3; j++)
- {
- buf2[i][j]=n++;
- }
- }
-
- /*-------------------------------------------------------------------------
- * make chunked dataset with
- * - dset maxdims are UNLIMIT
- * - a chunk dim is bigger than dset dim
- * - dset size bigger than compact max (64K)
- *-------------------------------------------------------------------------
- */
- /* create a space */
- if((sid1 = H5Screate_simple(RANK, dims1, maxdims)) < 0)
- return -1;
- /* create a dataset creation property list; the same DCPL is used for all dsets */
- if ((dcpl1 = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- {
- goto out;
- }
-
- if(H5Pset_chunk(dcpl1, RANK, chunk_dims1) < 0)
- goto out;
- if (make_dset(loc_id,"chunk_unlimit1",sid1,dcpl1,buf1) < 0)
- {
- goto out;
- }
-
- /*-------------------------------------------------------------------------
- * make chunked dataset with
- * - dset maxdims are UNLIMIT
- * - a chunk dim is bigger than dset dim
- * - dset size smaller than compact (64K)
- *-------------------------------------------------------------------------
- */
-
- /* create a space */
- if((sid2 = H5Screate_simple(RANK, dims2, maxdims)) < 0)
- return -1;
- /* create a dataset creation property list; the same DCPL is used for all dsets */
- if ((dcpl2 = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto out;
-
- if(H5Pset_chunk(dcpl2, RANK, chunk_dims2) < 0)
- goto out;
-
- if (make_dset(loc_id,"chunk_unlimit2",sid2,dcpl2,buf2) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * make chunked dataset with
- * - dset maxdims are UNLIMIT
- * - a chunk dims are smaller than dset dims
- * - dset size smaller than compact (64K)
- *-------------------------------------------------------------------------
- */
- /* create a dataset creation property list; the same DCPL is used for all dsets */
- if ((dcpl3 = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto out;
-
- if(H5Pset_chunk(dcpl3, RANK, chunk_dims3) < 0)
- goto out;
-
- if (make_dset(loc_id,"chunk_unlimit3",sid2,dcpl3,buf2) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * close space and dcpl
- *-------------------------------------------------------------------------
- */
- if(H5Sclose(sid1) < 0)
- goto out;
- if(H5Sclose(sid2) < 0)
- goto out;
- if(H5Pclose(dcpl1) < 0)
- goto out;
- if(H5Pclose(dcpl2) < 0)
- goto out;
- if(H5Pclose(dcpl3) < 0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY
- {
- H5Sclose(sid1);
- H5Sclose(sid2);
- H5Pclose(dcpl1);
- H5Pclose(dcpl2);
- H5Pclose(dcpl3);
- } H5E_END_TRY;
- return -1;
-}
-
-/*-------------------------------------------------------------------------
-* Function: make a file with an integer dataset with a fill value
-*
-* Purpose: test copy of fill values
-*
-*-------------------------------------------------------------------------
-*/
-static
-int make_fill(hid_t loc_id)
-{
- hid_t did=-1;
- hid_t sid=-1;
- hid_t dcpl;
- hsize_t dims[2]={3,2};
- int buf[3][2]= {{1,1},{1,2},{2,2}};
- int fillvalue = 2;
-
- /*-------------------------------------------------------------------------
- * H5T_INTEGER, write a fill value
- *-------------------------------------------------------------------------
- */
- if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto out;
- if(H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillvalue) < 0)
- goto out;
- if((sid = H5Screate_simple(2,dims,NULL)) < 0)
- goto out;
- if((did = H5Dcreate2(loc_id, "dset_fill", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
- goto out;
- if(H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
- goto out;
-
- /* close */
- if(H5Sclose(sid) < 0)
- goto out;
- if(H5Pclose(dcpl) < 0)
- goto out;
- if(H5Dclose(did) < 0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(dcpl);
- H5Sclose(sid);
- H5Dclose(did);
- } H5E_END_TRY;
- return -1;
-
-}
-
-/*-------------------------------------------------------------------------
-* Function: make_big
-*
-* Purpose: used in test read by hyperslabs. Creates a 128MB dataset.
-* Only 1 1024Kb hyperslab is written.
-*
-*-------------------------------------------------------------------------
-*/
-static
-int make_big(hid_t loc_id)
-{
- hid_t did=-1;
- hid_t f_sid=-1;
- hid_t m_sid=-1;
- hid_t tid;
- hid_t dcpl;
- hsize_t dims[1]={ H5TOOLS_MALLOCSIZE + 1}; /* dataset dimensions */
- hsize_t hs_size[1]; /* hyperslab dimensions */
- hsize_t hs_start[1]; /* hyperslab start */
- hsize_t chunk_dims[1]={1024}; /* chunk dimensions */
- size_t size;
- size_t nelmts=(size_t)1024;
- signed char fillvalue=-1;
- signed char *buf=NULL;
-
- /* write one 1024 byte hyperslab */
- hs_start[0] = 0;
- hs_size[0] = 1024;
-
- /* create */
- if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto out;
- if(H5Pset_fill_value(dcpl, H5T_NATIVE_SCHAR, &fillvalue) < 0)
- goto out;
- if(H5Pset_chunk(dcpl, 1, chunk_dims) < 0)
- goto out;
- if((f_sid = H5Screate_simple(1,dims,NULL)) < 0)
- goto out;
- if((did = H5Dcreate2(loc_id, "dset", H5T_NATIVE_SCHAR, f_sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
- goto out;
- if((m_sid = H5Screate_simple(1, hs_size, hs_size)) < 0)
- goto out;
- if((tid = H5Dget_type(did)) < 0)
- goto out;
- if((size = H5Tget_size(tid))<=0)
- goto out;
-
- /* initialize buffer to 0 */
- buf=(signed char *) HDcalloc( nelmts, size);
-
- if (H5Sselect_hyperslab (f_sid,H5S_SELECT_SET,hs_start,NULL,hs_size, NULL) < 0)
- goto out;
- if (H5Dwrite (did,H5T_NATIVE_SCHAR,m_sid,f_sid,H5P_DEFAULT,buf) < 0)
- goto out;
-
- HDfree(buf);
- buf=NULL;
-
- /* close */
- if(H5Sclose(f_sid) < 0)
- goto out;
- if(H5Sclose(m_sid) < 0)
- goto out;
- if(H5Pclose(dcpl) < 0)
- goto out;
- if(H5Dclose(did) < 0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(dcpl);
- H5Sclose(f_sid);
- H5Sclose(m_sid);
- H5Dclose(did);
- } H5E_END_TRY;
- return -1;
-
-}
-
-
-/*-------------------------------------------------------------------------
-* Function: make_external
-*
-* Purpose: create a external dataset
-*
-*-------------------------------------------------------------------------
-*/
-static
-int make_external(hid_t loc_id)
-{
- hid_t did=-1;
- hid_t sid=-1;
- hid_t dcpl;
- int buf[2]={1,2};
- hsize_t cur_size[1]; /* data space current size */
- hsize_t max_size[1]; /* data space maximum size */
- hsize_t size;
-
- cur_size[0] = max_size[0] = 2;
- size = max_size[0] * sizeof(int);
-
- /* create */
- if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto out;
- if(H5Pset_external(dcpl, H5REPACK_EXTFILE, (off_t)0, size) < 0)
- goto out;
- if((sid = H5Screate_simple(1,cur_size, max_size)) < 0)
- goto out;
- if((did = H5Dcreate2(loc_id, "external", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
- goto out;
- if(H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
- goto out;
-
- /* close */
- if(H5Sclose(sid) < 0)
- goto out;
- if(H5Pclose(dcpl) < 0)
- goto out;
- if(H5Dclose(did) < 0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY
- {
- H5Pclose(dcpl);
- H5Sclose(sid);
- H5Dclose(did);
- } H5E_END_TRY;
- return -1;
-
-}
-
-/*-------------------------------------------------------------------------
-* Function: make_userblock
-*
-* Purpose: create a file for the userblock copying test
-*
-*-------------------------------------------------------------------------
-*/
-static int
-make_userblock(void)
-{
- hid_t fid = -1;
- hid_t fcpl = -1;
- int fd = -1; /* File descriptor for writing userblock */
- char ub[USERBLOCK_SIZE]; /* User block data */
- ssize_t nwritten; /* # of bytes written */
- size_t u; /* Local index variable */
-
- /* Create file creation property list with userblock set */
- if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0)
- goto out;
- if(H5Pset_userblock(fcpl, (hsize_t)USERBLOCK_SIZE) < 0)
- goto out;
-
- /* Create file with userblock */
- if((fid = H5Fcreate(FNAME16, H5F_ACC_TRUNC, fcpl, H5P_DEFAULT)) < 0)
- goto out;
- if(H5Fclose(fid) < 0)
- goto out;
-
- /* Close file creation property list */
- if(H5Pclose(fcpl) < 0)
- goto out;
-
-
- /* Initialize userblock data */
- for(u = 0; u < USERBLOCK_SIZE; u++)
- ub[u] = (char)('a' + (char)(u % 26));
-
- /* Re-open HDF5 file, as "plain" file */
- if((fd = HDopen(FNAME16, O_WRONLY, 0644)) < 0)
- goto out;
-
- /* Write userblock data */
- nwritten = HDwrite(fd, ub, (size_t)USERBLOCK_SIZE);
- HDassert(nwritten == USERBLOCK_SIZE);
-
- /* Close file */
- HDclose(fd);
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(fcpl);
- H5Fclose(fid);
- } H5E_END_TRY;
- if(fd > 0)
- HDclose(fd);
-
- return -1;
-} /* end make_userblock() */
-
-/*-------------------------------------------------------------------------
-* Function: verify_userblock
-*
-* Purpose: Verify that the userblock was copied correctly
-*
-*-------------------------------------------------------------------------
-*/
-static int
-verify_userblock( const char* filename)
-{
- hid_t fid = -1;
- hid_t fcpl = -1;
- int fd = -1; /* File descriptor for writing userblock */
- char ub[USERBLOCK_SIZE]; /* User block data */
- hsize_t ub_size = 0; /* User block size */
- ssize_t nread; /* # of bytes read */
- size_t u; /* Local index variable */
-
- /* Open file with userblock */
- if((fid = H5Fopen(filename, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0)
- goto out;
-
- /* Retrieve file creation property list & userblock size */
- if((fcpl = H5Fget_create_plist(fid)) < 0)
- goto out;
- if(H5Pget_userblock(fcpl, &ub_size) < 0)
- goto out;
-
- /* Verify userblock size is correct */
- if(ub_size != USERBLOCK_SIZE)
- goto out;
-
- /* Close file creation property list */
- if(H5Pclose(fcpl) < 0)
- goto out;
-
- if(H5Fclose(fid) < 0)
- goto out;
-
-
- /* Re-open HDF5 file, as "plain" file */
- if((fd = HDopen(filename, O_RDONLY, 0)) < 0)
- goto out;
-
- /* Read userblock data */
- nread = HDread(fd, ub, (size_t)USERBLOCK_SIZE);
- HDassert(nread == USERBLOCK_SIZE);
-
- /* Verify userblock data */
- for(u = 0; u < USERBLOCK_SIZE; u++)
- if(ub[u] != (char)('a' + (u % 26)))
- goto out;
-
- /* Close file */
- HDclose(fd);
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(fcpl);
- H5Fclose(fid);
- } H5E_END_TRY;
- if(fd > 0)
- HDclose(fd);
-
- return -1;
-} /* end verify_userblock() */
-
-
-/*-------------------------------------------------------------------------
-* Function: make_userblock_file
-*
-* Purpose: create a file for the userblock add test
-*
-*-------------------------------------------------------------------------
-*/
-static int
-make_userblock_file(void)
-{
- int fd = -1; /* File descriptor for writing userblock */
- char ub[USERBLOCK_SIZE]; /* User block data */
- ssize_t nwritten; /* # of bytes written */
- size_t u; /* Local index variable */
-
- /* initialize userblock data */
- for(u = 0; u < USERBLOCK_SIZE; u++)
- ub[u] = (char)('a' + (char)(u % 26));
-
- /* open file */
- if((fd = HDopen(FNAME_UB,O_WRONLY|O_CREAT|O_TRUNC, 0644 )) < 0)
- goto out;
-
- /* write userblock data */
- nwritten = HDwrite(fd, ub, (size_t)USERBLOCK_SIZE);
- HDassert(nwritten == USERBLOCK_SIZE);
-
- /* close file */
- HDclose(fd);
-
- return 0;
-
-out:
-
- if(fd > 0)
- HDclose(fd);
-
- return -1;
-}
-
-/*-------------------------------------------------------------------------
-* Function: write_dset_in
-*
-* Purpose: write datasets in LOC_ID
-*
-* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
-*
-* Date: November 12, 2003
-*
-*-------------------------------------------------------------------------
-*/
-static
-int write_dset_in(hid_t loc_id,
- const char* dset_name, /* for saving reference to dataset*/
- hid_t file_id,
- int make_diffs /* flag to modify data buffers */)
-{
- /* compound datatype */
- typedef struct s_t
- {
- char a;
- double b;
- } s_t;
-
- typedef enum
- {
- RED,
- GREEN
- } e_t;
-
- hid_t did=-1;
- hid_t sid=-1;
- hid_t tid=-1;
- hid_t pid=-1;
- unsigned i, j;
- int val, k, n;
- float f;
-
- /* create 1D attributes with dimension [2], 2 elements */
- hsize_t dims[1]={2};
- hsize_t dims1r[1]={2};
- char buf1[2][3]= {"ab","de"}; /* string */
- char buf2[2]= {1,2}; /* bitfield, opaque */
- s_t buf3[2]= {{1,2},{3,4}}; /* compound */
- hobj_ref_t buf4[2]; /* reference */
- e_t buf45[2]= {RED,GREEN}; /* enum */
- hvl_t buf5[2]; /* vlen */
- hsize_t dimarray[1]={3}; /* array dimension */
- int buf6[2][3]= {{1,2,3},{4,5,6}}; /* array */
- int buf7[2]= {1,2}; /* integer */
- float buf8[2]= {1,2}; /* float */
-
- /* create 2D attributes with dimension [3][2], 6 elements */
- hsize_t dims2[2]={3,2};
- hsize_t dims2r[2]={1,1};
- char buf12[6][3]= {"ab","cd","ef","gh","ij","kl"}; /* string */
- char buf22[3][2]= {{1,2},{3,4},{5,6}}; /* bitfield, opaque */
- s_t buf32[6]= {{1,2},{3,4},{5,6},{7,8},{9,10},{11,12}}; /* compound */
- hobj_ref_t buf42[1][1]; /* reference */
- hvl_t buf52[3][2]; /* vlen */
- int buf62[6][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15},{16,17,18}}; /* array */
- int buf72[3][2]= {{1,2},{3,4},{5,6}}; /* integer */
- float buf82[3][2]= {{1,2},{3,4},{5,6}}; /* float */
-
- /* create 3D attributes with dimension [4][3][2], 24 elements */
- hsize_t dims3[3]={4,3,2};
- hsize_t dims3r[3]={1,1,1};
- char buf13[24][3]= {"ab","cd","ef","gh","ij","kl","mn","pq",
- "rs","tu","vw","xz","AB","CD","EF","GH",
- "IJ","KL","MN","PQ","RS","TU","VW","XZ"}; /* string */
- char buf23[4][3][2]; /* bitfield, opaque */
- s_t buf33[4][3][2]; /* compound */
- hobj_ref_t buf43[1][1][1]; /* reference */
- hvl_t buf53[4][3][2]; /* vlen */
- int buf63[24][3]; /* array */
- int buf73[4][3][2]; /* integer */
- float buf83[4][3][2]; /* float */
-
-
- /*-------------------------------------------------------------------------
- * 1D
- *-------------------------------------------------------------------------
- */
-
- /*-------------------------------------------------------------------------
- * H5T_STRING
- *-------------------------------------------------------------------------
- */
-
-
- if(make_diffs) {
- for(i = 0; i < 2; i++)
- for(j = 0; j < 2; j++)
- buf1[i][j] = 'z';
- }
-
-
- if ((tid = H5Tcopy(H5T_C_S1)) < 0)
- goto out;
- if (H5Tset_size(tid, (size_t)2) < 0)
- goto out;
- if (write_dset(loc_id,1,dims,"string",tid,buf1) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
-
-
- /* create hard link */
- if (H5Lcreate_hard(loc_id, "string", H5L_SAME_LOC, "string_link", H5P_DEFAULT, H5P_DEFAULT) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5T_BITFIELD
- *-------------------------------------------------------------------------
- */
-
- if(make_diffs) {
- for(i = 0; i < 2; i++)
- buf2[i] = buf2[1] = 0;
- }
-
- if ((tid = H5Tcopy(H5T_STD_B8LE)) < 0)
- goto out;
- if (write_dset(loc_id,1,dims,"bitfield",tid,buf2) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5T_OPAQUE
- *-------------------------------------------------------------------------
- */
-
- if(make_diffs) {
- for(i = 0; i < 2; i++) {
- buf3[i].a = 0;
- buf3[i].b = 0;
- }
- }
-
- if ((tid = H5Tcreate(H5T_OPAQUE, (size_t)1)) < 0)
- goto out;
- if (H5Tset_tag(tid, "1-byte opaque type") < 0)
- goto out;
- if (write_dset(loc_id,1,dims,"opaque",tid,buf2) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5T_COMPOUND
- *-------------------------------------------------------------------------
- */
-
-
- if(make_diffs) {
- for(i = 0; i < 2; i++)
- buf45[i] = GREEN;
- }
-
- if ((tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t))) < 0)
- goto out;
- if (H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR) < 0)
- goto out;
- if (H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE) < 0)
- goto out;
- if (write_dset(loc_id,1,dims,"compound",tid,buf3) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5T_REFERENCE
- *-------------------------------------------------------------------------
- */
- /* object references ( H5R_OBJECT ) */
- buf4[0]=0;
- buf4[1]=0;
- if (dset_name)
- {
- if (H5Rcreate(&buf4[0],file_id,dset_name,H5R_OBJECT,(hid_t)-1) < 0)
- goto out;
- if (write_dset(loc_id,1,dims1r,"refobj",H5T_STD_REF_OBJ,buf4) < 0)
- goto out;
- }
-
- /* Dataset region reference ( H5R_DATASET_REGION ) */
- if (make_dset_reg_ref(loc_id) < 0)
- goto out;
-
-
- /*-------------------------------------------------------------------------
- * H5T_ENUM
- *-------------------------------------------------------------------------
- */
- if ((tid = H5Tcreate(H5T_ENUM, sizeof(e_t))) < 0)
- goto out;
- if (H5Tenum_insert(tid, "RED", (val = 0, &val)) < 0)
- goto out;
- if (H5Tenum_insert(tid, "GREEN", (val = 1, &val)) < 0)
- goto out;
- if (write_dset(loc_id,1,dims,"enum",tid,buf45) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5T_VLEN
- *-------------------------------------------------------------------------
- */
-
- /* Allocate and initialize VL dataset to write */
-
- buf5[0].len = 1;
- buf5[0].p = HDmalloc( 1 * sizeof(int));
- ((int *)buf5[0].p)[0]=1;
- buf5[1].len = 2;
- buf5[1].p = HDmalloc( 2 * sizeof(int));
- ((int *)buf5[1].p)[0] = 2;
- ((int *)buf5[1].p)[1] = 3;
-
- if(make_diffs) {
- ((int *)buf5[0].p)[0] = 0;
- ((int *)buf5[1].p)[0] = 0;
- ((int *)buf5[1].p)[1] = 0;
- }
-
- if ((sid = H5Screate_simple(1, dims, NULL)) < 0)
- goto out;
- if ((tid = H5Tvlen_create(H5T_NATIVE_INT)) < 0)
- goto out;
- if ((did = H5Dcreate2(loc_id, "vlen", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if (H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf5) < 0)
- goto out;
- if (H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf5) < 0)
- goto out;
- if (H5Dclose(did) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- if (H5Sclose(sid) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5T_ARRAY
- *-------------------------------------------------------------------------
- */
-
- if(make_diffs) {
- for(i = 0; i < 2; i++)
- for(j = 0; j < 3; j++)
- buf6[i][j] = 0;
- }
-
- if ((tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray)) < 0)
- goto out;
- if (write_dset(loc_id, 1, dims, "array", tid, buf6) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
-
- {
-
- hsize_t TEST_BUFSIZE = (128 * 1024 * 1024); /* 128MB */
- double *dbuf; /* information to write */
- size_t size;
- hsize_t sdims[] = {1};
- hsize_t tdims[] = {TEST_BUFSIZE / sizeof(double) + 1};
- unsigned u;
-
- /* allocate and initialize array data to write */
- size = ( TEST_BUFSIZE / sizeof(double) + 1 ) * sizeof(double);
- dbuf = (double*)HDmalloc( size );
- if (NULL == dbuf)
- {
- printf ("\nError: Cannot allocate memory for \"arrayd\" data buffer size %dMB.\n", (int) size / 1000000 );
- goto out;
- }
-
- for( u = 0; u < TEST_BUFSIZE / sizeof(double) + 1; u++)
- dbuf[u] = u;
-
- if (make_diffs)
- {
- dbuf[5] = 0;
- dbuf[6] = 0;
- }
-
- /* create a type larger than TEST_BUFSIZE */
- if ((tid = H5Tarray_create2(H5T_NATIVE_DOUBLE, 1, tdims)) < 0)
- goto out;
- size = H5Tget_size(tid);
- if ((sid = H5Screate_simple(1, sdims, NULL)) < 0)
- goto out;
- if ((did = H5Dcreate2(loc_id, "arrayd", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
-#if defined(WRITE_ARRAY)
- H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dbuf);
-#endif
-
- /* close */
- H5Dclose(did);
- H5Tclose(tid);
- H5Sclose(sid);
- HDfree( dbuf );
- }
-
- /*-------------------------------------------------------------------------
- * H5T_INTEGER and H5T_FLOAT
- *-------------------------------------------------------------------------
- */
-
- if(make_diffs) {
- for(i = 0; i < 2; i++) {
- buf7[i] = 0;
- buf8[i] = 0;
- }
- }
-
- if (write_dset(loc_id,1,dims,"integer",H5T_NATIVE_INT,buf7) < 0)
- goto out;
- if (write_dset(loc_id,1,dims,"float",H5T_NATIVE_FLOAT,buf8) < 0)
- goto out;
-
-
- /*-------------------------------------------------------------------------
- * 2D
- *-------------------------------------------------------------------------
- */
-
- /*-------------------------------------------------------------------------
- * H5T_STRING
- *-------------------------------------------------------------------------
- */
-
- if (make_diffs)
- {
- HDmemset(buf12, 'z', sizeof buf12);
- }
-
-
- if ((tid = H5Tcopy(H5T_C_S1)) < 0)
- goto out;
- if (H5Tset_size(tid, (size_t)2) < 0)
- goto out;
- if (write_dset(loc_id,2,dims2,"string2D",tid,buf12) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5T_BITFIELD
- *-------------------------------------------------------------------------
- */
-
-
- if (make_diffs)
- {
- HDmemset(buf22,0,sizeof buf22);
- }
-
- if ((tid = H5Tcopy(H5T_STD_B8LE)) < 0)
- goto out;
- if (write_dset(loc_id,2,dims2,"bitfield2D",tid,buf22) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5T_OPAQUE
- *-------------------------------------------------------------------------
- */
- if ((tid = H5Tcreate(H5T_OPAQUE, (size_t)1)) < 0)
- goto out;
- if (H5Tset_tag(tid, "1-byte opaque type") < 0)
- goto out;
- if (write_dset(loc_id,2,dims2,"opaque2D",tid,buf22) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5T_COMPOUND
- *-------------------------------------------------------------------------
- */
-
- if (make_diffs)
- {
- HDmemset(buf32,0,sizeof buf32);
- }
-
- if ((tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t))) < 0)
- goto out;
- if (H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR) < 0)
- goto out;
- if (H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE) < 0)
- goto out;
- if (write_dset(loc_id,2,dims2,"compound2D",tid,buf32) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5T_REFERENCE
- *-------------------------------------------------------------------------
- */
- /* Create references to dataset */
- if (dset_name)
- {
- if (H5Rcreate(&buf42[0][0], file_id, dset_name, H5R_OBJECT, (hid_t)-1) < 0)
- goto out;
- if (write_dset(loc_id, 2, dims2r, "refobj2D", H5T_STD_REF_OBJ, buf42) < 0)
- goto out;
- }
-
- /*-------------------------------------------------------------------------
- * H5T_ENUM
- *-------------------------------------------------------------------------
- */
-
- if ((tid = H5Tcreate(H5T_ENUM, sizeof(e_t))) < 0)
- goto out;
- if (H5Tenum_insert(tid, "RED", (val = 0, &val)) < 0)
- goto out;
- if (H5Tenum_insert(tid, "GREEN", (val = 1, &val)) < 0)
- goto out;
- if (write_dset(loc_id,2,dims2,"enum2D",tid,0) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5T_VLEN
- *-------------------------------------------------------------------------
- */
-
- /* Allocate and initialize VL dataset to write */
- n = 0;
- for(i = 0; i < 3; i++) {
- for(j = 0; j < 2; j++) {
- unsigned l;
-
- buf52[i][j].p = HDmalloc((i + 1) * sizeof(int));
- buf52[i][j].len = (size_t)(i + 1);
- for(l = 0; l < i + 1; l++) {
- if(make_diffs)
- ((int *)buf52[i][j].p)[l] = 0;
- else
- ((int *)buf52[i][j].p)[l] = n++;
- }
- }
- }
-
- if ((sid = H5Screate_simple(2, dims2, NULL)) < 0)
- goto out;
- if ((tid = H5Tvlen_create(H5T_NATIVE_INT)) < 0)
- goto out;
- if ((did = H5Dcreate2(loc_id, "vlen2D", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if (H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf52) < 0)
- goto out;
- if (H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf52) < 0)
- goto out;
- if (H5Dclose(did) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- if (H5Sclose(sid) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5T_ARRAY
- *-------------------------------------------------------------------------
- */
-
- if (make_diffs)
- {
- HDmemset(buf62,0,sizeof buf62);
- }
-
-
- if ((tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray)) < 0)
- goto out;
- if (write_dset(loc_id, 2, dims2, "array2D", tid, buf62) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5T_INTEGER, write a fill value
- *-------------------------------------------------------------------------
- */
-
-
- if(make_diffs) {
- HDmemset(buf72, 0, sizeof buf72);
- HDmemset(buf82, 0, sizeof buf82);
- }
-
-
- if ((pid = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto out;
- if ((sid = H5Screate_simple(2, dims2, NULL)) < 0)
- goto out;
- if ((did = H5Dcreate2(loc_id, "integer2D", H5T_NATIVE_INT, sid, H5P_DEFAULT, pid, H5P_DEFAULT)) < 0)
- goto out;
- if (H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf72) < 0)
- goto out;
- if (H5Pclose(pid) < 0)
- goto out;
- if (H5Dclose(did) < 0)
- goto out;
- if (H5Sclose(sid) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5T_FLOAT
- *-------------------------------------------------------------------------
- */
-
- if (write_dset(loc_id,2,dims2,"float2D",H5T_NATIVE_FLOAT,buf82) < 0)
- goto out;
-
-
- /*-------------------------------------------------------------------------
- * 3D
- *-------------------------------------------------------------------------
- */
-
- /*-------------------------------------------------------------------------
- * H5T_STRING
- *-------------------------------------------------------------------------
- */
-
- if (make_diffs)
- {
- HDmemset(buf13,'z',sizeof buf13);
- }
-
- if ((tid = H5Tcopy(H5T_C_S1)) < 0)
- goto out;
- if (H5Tset_size(tid, (size_t)2) < 0)
- goto out;
- if (write_dset(loc_id,3,dims3,"string3D",tid,buf13) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5T_BITFIELD
- *-------------------------------------------------------------------------
- */
-
-
- n=1;
- for(i = 0; i < 4; i++) {
- for(j = 0; j < 3; j++) {
- for(k = 0; k < 2; k++) {
- if(make_diffs)
- buf23[i][j][k] = 0;
- else
- buf23[i][j][k] = (char)(n++);
- }
- }
- }
-
-
- if ((tid = H5Tcopy(H5T_STD_B8LE)) < 0)
- goto out;
- if (write_dset(loc_id,3,dims3,"bitfield3D",tid,buf23) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5T_OPAQUE
- *-------------------------------------------------------------------------
- */
- if ((tid = H5Tcreate(H5T_OPAQUE, (size_t)1)) < 0)
- goto out;
- if (H5Tset_tag(tid, "1-byte opaque type") < 0)
- goto out;
- if (write_dset(loc_id,3,dims3,"opaque3D",tid,buf23) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5T_COMPOUND
- *-------------------------------------------------------------------------
- */
-
- n=1;
- for(i = 0; i < 4; i++) {
- for(j = 0; j < 3; j++) {
- for(k = 0; k < 2; k++) {
- if(make_diffs) {
- buf33[i][j][k].a = 0;
- buf33[i][j][k].b = 0;
- }
- else {
- buf33[i][j][k].a = (char)(n++);
- buf33[i][j][k].b = n++;
- }
- }
- }
- }
-
-
- if ((tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t))) < 0)
- goto out;
- if (H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR) < 0)
- goto out;
- if (H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE) < 0)
- goto out;
- if (write_dset(loc_id,3,dims3,"compound3D",tid,buf33) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5T_REFERENCE
- *-------------------------------------------------------------------------
- */
- /* Create references to dataset */
- if (dset_name)
- {
- if (H5Rcreate(&buf43[0][0][0], file_id, dset_name, H5R_OBJECT, (hid_t)-1) < 0)
- goto out;
- if (write_dset(loc_id, 3, dims3r, "refobj3D", H5T_STD_REF_OBJ, buf43) < 0)
- goto out;
- }
-
- /*-------------------------------------------------------------------------
- * H5T_ENUM
- *-------------------------------------------------------------------------
- */
-
- if ((tid = H5Tcreate(H5T_ENUM, sizeof(e_t))) < 0)
- goto out;
- if (H5Tenum_insert(tid, "RED", (val = 0, &val)) < 0)
- goto out;
- if (H5Tenum_insert(tid, "GREEN", (val = 1, &val)) < 0)
- goto out;
- if (write_dset(loc_id,3,dims3,"enum3D",tid,0) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5T_VLEN
- *-------------------------------------------------------------------------
- */
-
- /* Allocate and initialize VL dataset to write */
- n = 0;
- for(i = 0; i < 4; i++) {
- for(j = 0; j < 3; j++) {
- for(k = 0; k < 2; k++) {
- unsigned l;
-
- buf53[i][j][k].p = HDmalloc((i + 1) * sizeof(int));
- buf53[i][j][k].len = (size_t)(i + 1);
- for(l = 0; l < i + 1; l++) {
- if(make_diffs)
- ((int *)buf53[i][j][k].p)[l] = 0;
- else
- ((int *)buf53[i][j][k].p)[l] = n++;
- }
- }
- }
- }
-
- if ((sid = H5Screate_simple(3, dims3, NULL)) < 0)
- goto out;
- if ((tid = H5Tvlen_create(H5T_NATIVE_INT)) < 0)
- goto out;
- if ((did = H5Dcreate2(loc_id, "vlen3D", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if (H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf53) < 0)
- goto out;
-
- if (H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf53) < 0)
- goto out;
-
- if (H5Dclose(did) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- if (H5Sclose(sid) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5T_ARRAY
- *-------------------------------------------------------------------------
- */
-
-
- n = 1;
- for(i = 0; i < 24; i++) {
- for(j = 0; j < dimarray[0]; j++) {
- if(make_diffs)
- buf63[i][j] = 0;
- else
- buf63[i][j] = n++;
- }
- }
-
- if ((tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray)) < 0)
- goto out;
- if (write_dset(loc_id, 3, dims3, "array3D", tid, buf63) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
-
- /*-------------------------------------------------------------------------
- * H5T_INTEGER and H5T_FLOAT
- *-------------------------------------------------------------------------
- */
- n=1; f=1;
- for (i = 0; i < 4; i++) {
- for (j = 0; j < 3; j++) {
- for (k = 0; k < 2; k++) {
- if (make_diffs) {
- buf73[i][j][k]=0;
- buf83[i][j][k]=0;
- }
- else {
- buf73[i][j][k]=n++;
- buf83[i][j][k]=f++;
- }
- }
- }
- }
- if (write_dset(loc_id,3,dims3,"integer3D",H5T_NATIVE_INT,buf73) < 0)
- goto out;
- if (write_dset(loc_id,3,dims3,"float3D",H5T_NATIVE_FLOAT,buf83) < 0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(pid);
- H5Sclose(sid);
- H5Dclose(did);
- H5Tclose(tid);
- } H5E_END_TRY;
- return -1;
-}
-
-
-
-/*-------------------------------------------------------------------------
-* Function: make_dset_reg_ref
-*
-* Purpose: write dataset region references
-*
-*-------------------------------------------------------------------------
-*/
-
-#define SPACE1_RANK 1
-#define SPACE1_DIM1 1
-#define SPACE2_RANK 2
-#define SPACE2_DIM1 10
-#define SPACE2_DIM2 10
-static
-int make_dset_reg_ref(hid_t loc_id)
-{
- hid_t did1=-1; /* Dataset ID */
- hid_t did2=-1; /* Dereferenced dataset ID */
- hid_t sid1=-1; /* Dataspace ID #1 */
- hid_t sid2=-1; /* Dataspace ID #2 */
- hsize_t dims1[] = {SPACE1_DIM1};
- hsize_t dims2[] = {SPACE2_DIM1, SPACE2_DIM2};
- hsize_t start[SPACE2_RANK]; /* Starting location of hyperslab */
- hsize_t stride[SPACE2_RANK]; /* Stride of hyperslab */
- hsize_t count[SPACE2_RANK]; /* Element count of hyperslab */
- hsize_t block[SPACE2_RANK]; /* Block size of hyperslab */
- hdset_reg_ref_t *wbuf=NULL; /* buffer to write to disk */
- int *dwbuf=NULL; /* Buffer for writing numeric data to disk */
- int i; /* counting variables */
- int retval = -1; /* return value */
-
- /* Allocate write & read buffers */
- wbuf = (hdset_reg_ref_t *)HDcalloc(sizeof(hdset_reg_ref_t), (size_t)SPACE1_DIM1);
- dwbuf = (int *)HDmalloc(sizeof(int) * SPACE2_DIM1 * SPACE2_DIM2);
-
- /* Create dataspace for datasets */
- if ((sid2 = H5Screate_simple(SPACE2_RANK, dims2, NULL)) < 0)
- goto out;
-
- /* Create a dataset */
- if ((did2 = H5Dcreate2(loc_id, "dsetreg", H5T_NATIVE_UCHAR, sid2, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
-
- for (i = 0; i < SPACE2_DIM1 * SPACE2_DIM2; i++)
- dwbuf[i] = i * 3;
-
- /* Write selection to disk */
- if (H5Dwrite(did2, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dwbuf) < 0)
- goto out;
-
- /* Create dataspace for the reference dataset */
- if ((sid1 = H5Screate_simple(SPACE1_RANK, dims1, NULL)) < 0)
- goto out;
-
- /* Create a dataset */
- if ((did1 = H5Dcreate2(loc_id, "refreg", H5T_STD_REF_DSETREG, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
-
- /* Select 6x6 hyperslab for first reference */
- start[0] = 2; start[1] = 2;
- stride[0] = 1; stride[1] = 1;
- count[0] = 6; count[1] = 6;
- block[0] = 1; block[1] = 1;
- if (H5Sselect_hyperslab(sid2, H5S_SELECT_SET, start, stride, count, block) < 0)
- goto out;
-
-
- /* Store dataset region */
- if (H5Rcreate(&wbuf[0], loc_id, "dsetreg", H5R_DATASET_REGION, sid2) < 0)
- goto out;
-
- /* Write selection to disk */
- if (H5Dwrite(did1,H5T_STD_REF_DSETREG,H5S_ALL,H5S_ALL,H5P_DEFAULT,wbuf) < 0)
- goto out;
-
- /* Close all objects */
- if (H5Sclose(sid1) < 0)
- goto out;
- if (H5Dclose(did1) < 0)
- goto out;
- if (H5Sclose(sid2) < 0)
- goto out;
- if (H5Dclose(did2) < 0)
- goto out;
-
- retval = 0;
-
-out:
- if(wbuf)
- HDfree(wbuf);
- if(dwbuf)
- HDfree(dwbuf);
-
- H5E_BEGIN_TRY
- {
- H5Sclose(sid1);
- H5Sclose(sid2);
- H5Dclose(did1);
- H5Dclose(did2);
- } H5E_END_TRY;
-
- return retval;
-}
-
-/*-------------------------------------------------------------------------
-* Function: write_attr_in
-*
-* Purpose: write attributes in LOC_ID (dataset, group, named datatype)
-*
-* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
-*
-* Date: November 12, 2003
-*
-*-------------------------------------------------------------------------
-*/
-
-static
-int write_attr_in(hid_t loc_id,
- const char* dset_name, /* for saving reference to dataset*/
- hid_t fid, /* for reference create */
- int make_diffs /* flag to modify data buffers */)
-{
- /* Compound datatype */
- typedef struct s_t
- {
- char a;
- double b;
- } s_t;
-
- typedef enum
- {
- RED,
- GREEN
- } e_t;
-
- hid_t aid = -1;
- hid_t sid = -1;
- hid_t tid = -1;
- int val, j, k, n;
- unsigned i;
- float f;
-
- /* create 1D attributes with dimension [2], 2 elements */
- hsize_t dims[1]={2};
- char buf1[2][3]= {"ab","de"}; /* string */
- char buf2[2]= {1,2}; /* bitfield, opaque */
- s_t buf3[2]= {{1,2},{3,4}}; /* compound */
- hobj_ref_t buf4[2]; /* reference */
- e_t buf45[2]= {RED,RED}; /* enum */
- hvl_t buf5[2]; /* vlen */
- hsize_t dimarray[1]={3}; /* array dimension */
- int buf6[2][3]= {{1,2,3},{4,5,6}}; /* array */
- int buf7[2]= {1,2}; /* integer */
- float buf8[2]= {1,2}; /* float */
-
- /* create 2D attributes with dimension [3][2], 6 elements */
- hsize_t dims2[2]={3,2};
- char buf12[6][3]= {"ab","cd","ef","gh","ij","kl"}; /* string */
- char buf22[3][2]= {{1,2},{3,4},{5,6}}; /* bitfield, opaque */
- s_t buf32[6]= {{1,2},{3,4},{5,6},{7,8},{9,10},{11,12}}; /* compound */
- hobj_ref_t buf42[3][2]; /* reference */
- e_t buf452[3][2]; /* enum */
- hvl_t buf52[3][2]; /* vlen */
- int buf62[6][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15},{16,17,18}}; /* array */
- int buf72[3][2]= {{1,2},{3,4},{5,6}}; /* integer */
- float buf82[3][2]= {{1,2},{3,4},{5,6}}; /* float */
-
- /* create 3D attributes with dimension [4][3][2], 24 elements */
- hsize_t dims3[3]={4,3,2};
- char buf13[24][3]= {"ab","cd","ef","gh","ij","kl","mn","pq",
- "rs","tu","vw","xz","AB","CD","EF","GH",
- "IJ","KL","MN","PQ","RS","TU","VW","XZ"}; /* string */
- char buf23[4][3][2]; /* bitfield, opaque */
- s_t buf33[4][3][2]; /* compound */
- hobj_ref_t buf43[4][3][2]; /* reference */
- e_t buf453[4][3][2]; /* enum */
- hvl_t buf53[4][3][2]; /* vlen */
- int buf63[24][3]; /* array */
- int buf73[4][3][2]; /* integer */
- float buf83[4][3][2]; /* float */
-
-
- /*-------------------------------------------------------------------------
- * 1D attributes
- *-------------------------------------------------------------------------
- */
-
- /*-------------------------------------------------------------------------
- * H5T_STRING
- *-------------------------------------------------------------------------
- */
-
- if (make_diffs)
- {
- for (i=0; i<2; i++)
- for (j=0; j<2; j++)
- {
- buf1[i][j]='z';
- }
- }
- /*
- buf1[2][2]= {"ab","de"};
- $h5diff file7.h5 file6.h5 g1 g1 -v
- Group: </g1> and </g1>
- Attribute: <string> and <string>
- position string of </g1> string of </g1> difference
- ------------------------------------------------------------
- [ 0 ] a z
- [ 0 ] b z
- [ 1 ] d z
- [ 1 ] e z
- */
- if ((tid = H5Tcopy(H5T_C_S1)) < 0)
- goto out;
- if (H5Tset_size(tid, (size_t)2) < 0)
- goto out;
- if (make_attr(loc_id,1,dims,"string",tid,buf1) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- tid = -1;
-
- /*-------------------------------------------------------------------------
- * H5T_BITFIELD
- *-------------------------------------------------------------------------
- */
-
- if (make_diffs)
- {
- for (i=0; i<2; i++)
- buf2[i]=buf2[1]=0;
- }
- /*
- buf2[2]= {1,2};
- $h5diff file7.h5 file6.h5 g1 g1 -v
- Group: </g1> and </g1>
- Attribute: <bitfield> and <bitfield>
- position bitfield of </g1> bitfield of </g1> difference
- position opaque of </g1> opaque of </g1> difference
- ------------------------------------------------------------
- [ 0 ] 1 0 1
- [ 1 ] 2 0 2
- */
-
- if ((tid = H5Tcopy(H5T_STD_B8LE)) < 0)
- goto out;
- if (make_attr(loc_id,1,dims,"bitfield",tid,buf2) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- tid = -1;
-
- /*-------------------------------------------------------------------------
- * H5T_OPAQUE
- *-------------------------------------------------------------------------
- */
-
- /*
- buf2[2]= {1,2};
- $h5diff file7.h5 file6.h5 g1 g1 -v
- Group: </g1> and </g1>
- Attribute: <opaque> and <opaque>
- position opaque of </g1> opaque of </g1> difference
- position opaque of </g1> opaque of </g1> difference
- ------------------------------------------------------------
- [ 0 ] 1 0 1
- [ 1 ] 2 0 2
- */
-
- if ((tid = H5Tcreate(H5T_OPAQUE, (size_t)1)) < 0)
- goto out;
- if (H5Tset_tag(tid, "1-byte opaque type") < 0)
- goto out;
- if (make_attr(loc_id,1,dims,"opaque",tid,buf2) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- tid = -1;
-
- /*-------------------------------------------------------------------------
- * H5T_COMPOUND
- *-------------------------------------------------------------------------
- */
-
- if (make_diffs)
- {
- for (i=0; i<2; i++)
- {
- buf3[i].a=0; buf3[i].b=0;
- }
- }
-
- /*
- buf3[2]= {{1,2},{3,4}};
- $h5diff file7.h5 file6.h5 g1 g1 -v
- Group: </g1> and </g1>
- Attribute: <compound> and <compound>
- position compound of </g1> compound of </g1> difference
- ------------------------------------------------------------
- [ 0 ] 1 5 4
- [ 0 ] 2 5 3
- [ 1 ] 3 5 2
- [ 1 ] 4 5 1
- */
-
- if ((tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t))) < 0)
- goto out;
- if (H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR) < 0)
- goto out;
- if (H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE) < 0)
- goto out;
- if (make_attr(loc_id,1,dims,"compound",tid,buf3) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- tid = -1;
-
- /*-------------------------------------------------------------------------
- * H5T_REFERENCE
- *-------------------------------------------------------------------------
- */
- /* object references ( H5R_OBJECT */
- if (dset_name)
- {
- if (H5Rcreate(&buf4[0],fid,dset_name,H5R_OBJECT,(hid_t)-1) < 0)
- goto out;
- if (H5Rcreate(&buf4[1],fid,dset_name,H5R_OBJECT,(hid_t)-1) < 0)
- goto out;
- if (make_attr(loc_id,1,dims,"reference",H5T_STD_REF_OBJ,buf4) < 0)
- goto out;
- }
-
-
- /*-------------------------------------------------------------------------
- * H5T_ENUM
- *-------------------------------------------------------------------------
- */
- if (make_diffs)
- {
- for (i=0; i<2; i++)
- {
- buf45[i]=GREEN;
- }
- }
- /*
- buf45[2]= {RED,RED};
- $h5diff file7.h5 file6.h5 g1 g1 -v
- Group: </g1> and </g1>
- Attribute: <enum> and <enum>
- position enum of </g1> enum of </g1> difference
- ------------------------------------------------------------
- [ 0 ] RED GREEN
- [ 1 ] RED GREEN
- */
- if ((tid = H5Tcreate(H5T_ENUM, sizeof(e_t))) < 0)
- goto out;
- if (H5Tenum_insert(tid, "RED", (val = 0, &val)) < 0)
- goto out;
- if (H5Tenum_insert(tid, "GREEN", (val = 1, &val)) < 0)
- goto out;
- if (make_attr(loc_id,1,dims,"enum",tid,buf45) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- tid = -1;
-
- /*-------------------------------------------------------------------------
- * H5T_VLEN
- *-------------------------------------------------------------------------
- */
-
- /* Allocate and initialize VL dataset to write */
-
- buf5[0].len = 1;
- buf5[0].p = HDmalloc( 1 * sizeof(int));
- ((int *)buf5[0].p)[0]=1;
- buf5[1].len = 2;
- buf5[1].p = HDmalloc(2 * sizeof(int));
- ((int *)buf5[1].p)[0] = 2;
- ((int *)buf5[1].p)[1] = 3;
-
- if(make_diffs)
- {
- ((int *)buf5[0].p)[0] = 0;
- ((int *)buf5[1].p)[0] = 0;
- ((int *)buf5[1].p)[1] = 0;
- }
- /*
- $h5diff file7.h5 file6.h5 g1 g1 -v
- Group: </g1> and </g1>
- position vlen of </g1> vlen of </g1> difference
- ------------------------------------------------------------
- [ 0 ] 1 0 1
- [ 1 ] 2 0 2
- [ 1 ] 3 0 3
- */
-
- if ((sid = H5Screate_simple(1, dims, NULL)) < 0)
- goto out;
- if ((tid = H5Tvlen_create(H5T_NATIVE_INT)) < 0)
- goto out;
- if ((aid = H5Acreate2(loc_id, "vlen", tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if (H5Awrite(aid, tid, buf5) < 0)
- goto out;
- if (H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf5) < 0)
- goto out;
- if (H5Aclose(aid) < 0)
- goto out;
- aid = -1;
- if (H5Tclose(tid) < 0)
- goto out;
- tid = -1;
- if (H5Sclose(sid) < 0)
- goto out;
- sid = -1;
-
- /*-------------------------------------------------------------------------
- * H5T_ARRAY
- *-------------------------------------------------------------------------
- */
-
- if (make_diffs)
- {
- for (i=0; i<2; i++)
- for (j=0; j<3; j++)
- {
- buf6[i][j]=0;
- }
- }
- /*
- buf6[2][3]= {{1,2,3},{4,5,6}};
- $h5diff file7.h5 file6.h5 g1 g1 -v
- Group: </g1> and </g1>
- Attribute: <array> and <array>
- position array of </g1> array of </g1> difference
- ------------------------------------------------------------
- [ 0 ] 1 0 1
- [ 0 ] 2 0 2
- [ 0 ] 3 0 3
- [ 1 ] 4 0 4
- [ 1 ] 5 0 5
- [ 1 ] 6 0 6
- */
- if ((tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray)) < 0)
- goto out;
- if (make_attr(loc_id, 1, dims, "array", tid, buf6) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- tid = -1;
-
- /*-------------------------------------------------------------------------
- * H5T_INTEGER and H5T_FLOAT
- *-------------------------------------------------------------------------
- */
-
- if(make_diffs)
- {
- for(i = 0; i < 2; i++)
- {
- buf7[i]=0;
- buf8[i]=0;
- }
- }
-
- /*
- buf7[2]= {1,2};
- buf8[2]= {1,2};
- $h5diff file7.h5 file6.h5 g1 g1 -v
- Group: </g1> and </g1>
- position integer of </g1> integer of </g1> difference
- ------------------------------------------------------------
- [ 0 ] 1 0 1
- [ 1 ] 2 0 2
- position float of </g1> float of </g1> difference
- ------------------------------------------------------------
- [ 0 ] 1 0 1
- [ 1 ] 2 0 2
- */
- if (make_attr(loc_id,1,dims,"integer",H5T_NATIVE_INT,buf7) < 0)
- goto out;
- if (make_attr(loc_id,1,dims,"float",H5T_NATIVE_FLOAT,buf8) < 0)
- goto out;
-
-
- /*-------------------------------------------------------------------------
- * 2D attributes
- *-------------------------------------------------------------------------
- */
-
- /*-------------------------------------------------------------------------
- * H5T_STRING
- *-------------------------------------------------------------------------
- */
- if (make_diffs)
- {
- HDmemset(buf12, 'z', sizeof buf12);
- }
-
- /*
- buf12[6][2]= {"ab","cd","ef","gh","ij","kl"};
- $h5diff file7.h5 file6.h5 g1 g1 -v
- Attribute: <string2D> and <string2D>
- position string2D of </g1> string2D of </g1> difference
- ------------------------------------------------------------
- [ 0 0 ] a z
- [ 0 0 ] b z
- [ 0 1 ] c z
- [ 0 1 ] d z
- [ 1 0 ] e z
- [ 1 0 ] f z
- [ 1 1 ] g z
- [ 1 1 ] h z
- [ 2 0 ] i z
- [ 2 0 ] j z
- [ 2 1 ] k z
- [ 2 1 ] l z
- */
-
- if ((tid = H5Tcopy(H5T_C_S1)) < 0)
- goto out;
- if (H5Tset_size(tid, (size_t)2) < 0)
- goto out;
- if (make_attr(loc_id,2,dims2,"string2D",tid,buf12) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- tid = -1;
-
- /*-------------------------------------------------------------------------
- * H5T_BITFIELD
- *-------------------------------------------------------------------------
- */
-
- if (make_diffs)
- {
- HDmemset(buf22,0,sizeof buf22);
- }
-
- /*
- buf22[3][2]= {{1,2},{3,4},{5,6}};
- $h5diff file7.h5 file6.h5 g1 g1 -v
- Attribute: <bitfield2D> and <bitfield2D>
- position bitfield2D of </g1> bitfield2D of </g1> difference
- ------------------------------------------------------------
- [ 0 0 ] 1 0 1
- [ 0 1 ] 2 0 2
- [ 1 0 ] 3 0 3
- [ 1 1 ] 4 0 4
- [ 2 0 ] 5 0 5
- [ 2 1 ] 6 0 6
- */
-
-
- if ((tid = H5Tcopy(H5T_STD_B8LE)) < 0)
- goto out;
- if (make_attr(loc_id,2,dims2,"bitfield2D",tid,buf22) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- tid = -1;
-
- /*-------------------------------------------------------------------------
- * H5T_OPAQUE
- *-------------------------------------------------------------------------
- */
-
- /*
- buf22[3][2]= {{1,2},{3,4},{5,6}};
- $h5diff file7.h5 file6.h5 g1 g1 -v
- Attribute: <opaque2D> and <opaque2D>
- position opaque2D of </g1> opaque2D of </g1> difference
- ------------------------------------------------------------
- [ 0 0 ] 1 0 1
- [ 0 1 ] 2 0 2
- [ 1 0 ] 3 0 3
- [ 1 1 ] 4 0 4
- [ 2 0 ] 5 0 5
- [ 2 1 ] 6 0 6
- */
- if ((tid = H5Tcreate(H5T_OPAQUE, (size_t)1)) < 0)
- goto out;
- if (H5Tset_tag(tid, "1-byte opaque type") < 0)
- goto out;
- if (make_attr(loc_id,2,dims2,"opaque2D",tid,buf22) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- tid = -1;
-
- /*-------------------------------------------------------------------------
- * H5T_COMPOUND
- *-------------------------------------------------------------------------
- */
- if (make_diffs)
- {
- HDmemset(buf32,0,sizeof buf32);
- }
-
- /*
- buf32[6]= {{1,2},{3,4},{5,6},{7,8},{9,10},{11,12}};
- $h5diff file7.h5 file6.h5 g1 g1 -v
- Attribute: <opaque2D> and <opaque2D>
- position opaque2D of </g1> opaque2D of </g1> difference
- ------------------------------------------------------------
- [ 0 0 ] 1 0 1
- [ 0 1 ] 2 0 2
- [ 1 0 ] 3 0 3
- [ 1 1 ] 4 0 4
- [ 2 0 ] 5 0 5
- [ 2 1 ] 6 0 6
- */
-
-
- if ((tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t))) < 0)
- goto out;
- if (H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR) < 0)
- goto out;
- if (H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE) < 0)
- goto out;
- if (make_attr(loc_id,2,dims2,"compound2D",tid,buf32) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- tid = -1;
-
- /*-------------------------------------------------------------------------
- * H5T_REFERENCE
- *-------------------------------------------------------------------------
- */
- /* Create references to dataset */
- if (dset_name)
- {
- for (i = 0; i < 3; i++)
- {
- for (j = 0; j < 2; j++)
- {
- if (H5Rcreate(&buf42[i][j],fid,dset_name,H5R_OBJECT,(hid_t)-1) < 0)
- goto out;
- }
- }
- if (make_attr(loc_id,2,dims2,"reference2D",H5T_STD_REF_OBJ,buf42) < 0)
- goto out;
- }
-
- /*-------------------------------------------------------------------------
- * H5T_ENUM
- *-------------------------------------------------------------------------
- */
- for (i=0; i<3; i++)
- {
- for (j=0; j<2; j++)
- {
- if (make_diffs) buf452[i][j]=GREEN; else buf452[i][j]=RED;
- }
- }
-
- /*
- Attribute: <enum2D> and <enum2D>
- position enum2D of </g1> enum2D of </g1> difference
- ------------------------------------------------------------
- [ 0 0 ] RED GREEN
- [ 0 1 ] RED GREEN
- [ 1 0 ] RED GREEN
- [ 1 1 ] RED GREEN
- [ 2 0 ] RED GREEN
- [ 2 1 ] RED GREEN
- */
-
- if ((tid = H5Tcreate(H5T_ENUM, sizeof(e_t))) < 0)
- goto out;
- if (H5Tenum_insert(tid, "RED", (val = 0, &val)) < 0)
- goto out;
- if (H5Tenum_insert(tid, "GREEN", (val = 1, &val)) < 0)
- goto out;
- if (make_attr(loc_id,2,dims2,"enum2D",tid,buf452) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- tid = -1;
-
- /*-------------------------------------------------------------------------
- * H5T_VLEN
- *-------------------------------------------------------------------------
- */
-
- /* Allocate and initialize VL dataset to write */
- n=0;
- for(i = 0; i < 3; i++) {
- for(j = 0; j < 2; j++) {
- unsigned l;
-
- buf52[i][j].p = HDmalloc((i + 1) * sizeof(int));
- buf52[i][j].len = (size_t)(i + 1);
- for(l = 0; l < i + 1; l++)
- if(make_diffs)
- ((int *)buf52[i][j].p)[l] = 0;
- else
- ((int *)buf52[i][j].p)[l] = n++;
- }
- }
-
- /*
- position vlen2D of </g1> vlen2D of </g1> difference
- ------------------------------------------------------------
- [ 0 1 ] 1 0 1
- [ 1 0 ] 2 0 2
- [ 1 0 ] 3 0 3
- [ 1 1 ] 4 0 4
- [ 1 1 ] 5 0 5
- [ 2 0 ] 6 0 6
- [ 2 0 ] 7 0 7
- [ 2 0 ] 8 0 8
- [ 2 1 ] 9 0 9
- [ 2 1 ] 10 0 10
- [ 2 1 ] 11 0 11
- */
-
- if ((sid = H5Screate_simple(2, dims2, NULL)) < 0)
- goto out;
- if ((tid = H5Tvlen_create(H5T_NATIVE_INT)) < 0)
- goto out;
- if ((aid = H5Acreate2(loc_id, "vlen2D", tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if (H5Awrite(aid, tid, buf52) < 0)
- goto out;
- if (H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf52) < 0)
- goto out;
- if (H5Aclose(aid) < 0)
- goto out;
- aid = -1;
- if (H5Tclose(tid) < 0)
- goto out;
- tid = -1;
- if (H5Sclose(sid) < 0)
- goto out;
- sid = -1;
-
- /*-------------------------------------------------------------------------
- * H5T_ARRAY
- *-------------------------------------------------------------------------
- */
-
- if (make_diffs)
- {
- HDmemset(buf62,0,sizeof buf62);
- }
- /*
- buf62[6][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15},{16,17,18}};
- $h5diff file7.h5 file6.h5 g1 g1 -v
- Group: </g1> and </g1>
- Attribute: <array2D> and <array2D>
- position array2D of </g1> array2D of </g1> difference
- ------------------------------------------------------------
- [ 0 0 ] 1 0 1
- [ 0 0 ] 2 0 2
- [ 0 0 ] 3 0 3
- [ 0 1 ] 4 0 4
- [ 0 1 ] 5 0 5
- [ 0 1 ] 6 0 6
- [ 1 0 ] 7 0 7
- [ 1 0 ] 8 0 8
- [ 1 0 ] 9 0 9
- [ 1 1 ] 10 0 10
- [ 1 1 ] 11 0 11
- [ 1 1 ] 12 0 12
- [ 2 0 ] 13 0 13
- [ 2 0 ] 14 0 14
- [ 2 0 ] 15 0 15
- [ 2 1 ] 16 0 16
- [ 2 1 ] 17 0 17
- [ 2 1 ] 18 0 18
- */
- if ((tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray)) < 0)
- goto out;
- if (make_attr(loc_id, 2, dims2, "array2D", tid, buf62) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- tid = -1;
-
- /*-------------------------------------------------------------------------
- * H5T_INTEGER and H5T_FLOAT
- *-------------------------------------------------------------------------
- */
-
- if(make_diffs)
- {
- HDmemset(buf72, 0, sizeof buf72);
- HDmemset(buf82, 0, sizeof buf82);
- }
- /*
- Attribute: <integer2D> and <integer2D>
- position integer2D of </g1> integer2D of </g1> difference
- ------------------------------------------------------------
- [ 0 0 ] 1 0 1
- [ 0 1 ] 2 0 2
- [ 1 0 ] 3 0 3
- [ 1 1 ] 4 0 4
- [ 2 0 ] 5 0 5
- [ 2 1 ] 6 0 6
- 6 differences found
- Attribute: <float2D> and <float2D>
- position float2D of </g1> float2D of </g1> difference
- ------------------------------------------------------------
- [ 0 0 ] 1 0 1
- [ 0 1 ] 2 0 2
- [ 1 0 ] 3 0 3
- [ 1 1 ] 4 0 4
- [ 2 0 ] 5 0 5
- [ 2 1 ] 6 0 6
- */
-
- if (make_attr(loc_id,2,dims2,"integer2D",H5T_NATIVE_INT,buf72) < 0)
- goto out;
- if (make_attr(loc_id,2,dims2,"float2D",H5T_NATIVE_FLOAT,buf82) < 0)
- goto out;
-
-
- /*-------------------------------------------------------------------------
- * 3D attributes
- *-------------------------------------------------------------------------
- */
-
- /*-------------------------------------------------------------------------
- * H5T_STRING
- *-------------------------------------------------------------------------
- */
-
- if (make_diffs)
- {
- HDmemset(buf13,'z',sizeof buf13);
- }
-
- /*
- buf13[24][2]= {"ab","cd","ef","gh","ij","kl","mn","pq",
- "rs","tu","vw","xz","AB","CD","EF","GH",
- "IJ","KL","MN","PQ","RS","TU","VW","XZ"};
-
- Attribute: <string3D> and <string3D>
- position string3D of </g1> string3D of </g1> difference
- ------------------------------------------------------------
- [ 0 0 0 ] a z
- [ 0 0 0 ] b z
- [ 0 0 1 ] c z
- [ 0 0 1 ] d z
- [ 0 1 0 ] e z
- [ 0 1 0 ] f z
- [ 0 1 1 ] g z
- [ 0 1 1 ] h z
- [ 0 2 0 ] i z
- [ 0 2 0 ] j z
- [ 0 2 1 ] k z
- [ 0 2 1 ] l z
- [ 1 0 0 ] m z
- [ 1 0 0 ] n z
- [ 1 0 1 ] p z
- [ 1 0 1 ] q z
- [ 1 1 0 ] r z
- [ 1 1 0 ] s z
- [ 1 1 1 ] t z
- [ 1 1 1 ] u z
- [ 1 2 0 ] v z
- [ 1 2 0 ] w z
- [ 1 2 1 ] x z
- [ 2 0 0 ] A z
- [ 2 0 0 ] B z
- [ 2 0 1 ] C z
- [ 2 0 1 ] D z
- [ 2 1 0 ] E z
- [ 2 1 0 ] F z
- [ 2 1 1 ] G z
- [ 2 1 1 ] H z
- [ 2 2 0 ] I z
- [ 2 2 0 ] J z
- [ 2 2 1 ] K z
- [ 2 2 1 ] L z
- [ 3 0 0 ] M z
- [ 3 0 0 ] N z
- [ 3 0 1 ] P z
- [ 3 0 1 ] Q z
- [ 3 1 0 ] R z
- [ 3 1 0 ] S z
- [ 3 1 1 ] T z
- [ 3 1 1 ] U z
- [ 3 2 0 ] V z
- [ 3 2 0 ] W z
- [ 3 2 1 ] X z
- [ 3 2 1 ] Z z
- */
-
- if ((tid = H5Tcopy(H5T_C_S1)) < 0)
- goto out;
- if (H5Tset_size(tid, (size_t)2) < 0)
- goto out;
- if (make_attr(loc_id,3,dims3,"string3D",tid,buf13) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- tid = -1;
-
- /*-------------------------------------------------------------------------
- * H5T_BITFIELD
- *-------------------------------------------------------------------------
- */
-
- n=1;
- for(i = 0; i < 4; i++) {
- for(j = 0; j < 3; j++) {
- for(k = 0; k < 2; k++) {
- if(make_diffs)
- buf23[i][j][k] = 0;
- else
- buf23[i][j][k] = (char)(n++);
- }
- }
- }
-
- /*
- position bitfield3D of </g1> bitfield3D of </g1> difference
- ------------------------------------------------------------
- [ 0 0 0 ] 1 0 1
- [ 0 0 1 ] 2 0 2
- [ 0 1 0 ] 3 0 3
- [ 0 1 1 ] 4 0 4
- [ 0 2 0 ] 5 0 5
- [ 0 2 1 ] 6 0 6
- [ 1 0 0 ] 7 0 7
- [ 1 0 1 ] 8 0 8
- [ 1 1 0 ] 9 0 9
- [ 1 1 1 ] 10 0 10
- [ 1 2 0 ] 11 0 11
- [ 1 2 1 ] 12 0 12
- [ 2 0 0 ] 13 0 13
- [ 2 0 1 ] 14 0 14
- [ 2 1 0 ] 15 0 15
- [ 2 1 1 ] 16 0 16
- [ 2 2 0 ] 17 0 17
- [ 2 2 1 ] 18 0 18
- [ 3 0 0 ] 19 0 19
- [ 3 0 1 ] 20 0 20
- [ 3 1 0 ] 21 0 21
- [ 3 1 1 ] 22 0 22
- [ 3 2 0 ] 23 0 23
- [ 3 2 1 ] 24 0 24
- */
-
- if ((tid = H5Tcopy(H5T_STD_B8LE)) < 0)
- goto out;
- if (make_attr(loc_id,3,dims3,"bitfield3D",tid,buf23) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- tid = -1;
-
- /*-------------------------------------------------------------------------
- * H5T_OPAQUE
- *-------------------------------------------------------------------------
- */
- if ((tid = H5Tcreate(H5T_OPAQUE, (size_t)1)) < 0)
- goto out;
- if (H5Tset_tag(tid, "1-byte opaque type") < 0)
- goto out;
- if (make_attr(loc_id,3,dims3,"opaque3D",tid,buf23) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- tid = -1;
-
- /*-------------------------------------------------------------------------
- * H5T_COMPOUND
- *-------------------------------------------------------------------------
- */
-
- n=1;
- for(i = 0; i < 4; i++) {
- for(j = 0; j < 3; j++) {
- for(k = 0; k < 2; k++) {
- if(make_diffs) {
- buf33[i][j][k].a = 0;
- buf33[i][j][k].b = 0;
- }
- else {
- buf33[i][j][k].a = (char)(n++);
- buf33[i][j][k].b = n++;
- }
- }
- }
- }
- /*position compound3D of </g1> compound3D of </g1> difference
- ------------------------------------------------------------
- [ 0 0 0 ] 1 0 1
- [ 0 0 0 ] 2 0 2
- [ 0 0 1 ] 3 0 3
- [ 0 0 1 ] 4 0 4
- [ 0 1 0 ] 5 0 5
- [ 0 1 0 ] 6 0 6
- [ 0 1 1 ] 7 0 7
- [ 0 1 1 ] 8 0 8
- [ 0 2 0 ] 9 0 9
- [ 0 2 0 ] 10 0 10
- [ 0 2 1 ] 11 0 11
- [ 0 2 1 ] 12 0 12
- [ 1 0 0 ] 13 0 13
- [ 1 0 0 ] 14 0 14
- [ 1 0 1 ] 15 0 15
- [ 1 0 1 ] 16 0 16
- [ 1 1 0 ] 17 0 17
- [ 1 1 0 ] 18 0 18
- [ 1 1 1 ] 19 0 19
- [ 1 1 1 ] 20 0 20
- [ 1 2 0 ] 21 0 21
- [ 1 2 0 ] 22 0 22
- [ 1 2 1 ] 23 0 23
- [ 1 2 1 ] 24 0 24
- [ 2 0 0 ] 25 0 25
- [ 2 0 0 ] 26 0 26
- [ 2 0 1 ] 27 0 27
- [ 2 0 1 ] 28 0 28
- [ 2 1 0 ] 29 0 29
- [ 2 1 0 ] 30 0 30
- [ 2 1 1 ] 31 0 31
- [ 2 1 1 ] 32 0 32
- [ 2 2 0 ] 33 0 33
- [ 2 2 0 ] 34 0 34
- [ 2 2 1 ] 35 0 35
- [ 2 2 1 ] 36 0 36
- [ 3 0 0 ] 37 0 37
- [ 3 0 0 ] 38 0 38
- [ 3 0 1 ] 39 0 39
- [ 3 0 1 ] 40 0 40
- [ 3 1 0 ] 41 0 41
- [ 3 1 0 ] 42 0 42
- [ 3 1 1 ] 43 0 43
- [ 3 1 1 ] 44 0 44
- [ 3 2 0 ] 45 0 45
- [ 3 2 0 ] 46 0 46
- [ 3 2 1 ] 47 0 47
- [ 3 2 1 ] 48 0 48
- */
-
-
-
- if ((tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t))) < 0)
- goto out;
- if (H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR) < 0)
- goto out;
- if (H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE) < 0)
- goto out;
- if (make_attr(loc_id,3,dims3,"compound3D",tid,buf33) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- tid = -1;
-
- /*-------------------------------------------------------------------------
- * H5T_REFERENCE
- *-------------------------------------------------------------------------
- */
- /* Create references to dataset */
- if (dset_name)
- {
- for (i = 0; i < 4; i++)
- {
- for (j = 0; j < 3; j++)
- {
- for (k = 0; k < 2; k++)
- if (H5Rcreate(&buf43[i][j][k],fid,dset_name,H5R_OBJECT,(hid_t)-1) < 0)
- goto out;
- }
- }
- if (make_attr(loc_id,3,dims3,"reference3D",H5T_STD_REF_OBJ,buf43) < 0)
- goto out;
- }
-
- /*-------------------------------------------------------------------------
- * H5T_ENUM
- *-------------------------------------------------------------------------
- */
-
- for (i = 0; i < 4; i++)
- {
- for (j = 0; j < 3; j++)
- {
- for (k = 0; k < 2; k++)
- {
- if (make_diffs)
- {
- buf453[i][j][k]=RED;
- }
- else
- {
- buf453[i][j][k]=GREEN;
- }
- }
- }
- }
-
- /*
- position enum3D of </g1> enum3D of </g1> difference
- ------------------------------------------------------------
- [ 0 0 0 ] GREEN RED
- [ 0 0 1 ] GREEN RED
- [ 0 1 0 ] GREEN RED
- [ 0 1 1 ] GREEN RED
- [ 0 2 0 ] GREEN RED
- [ 0 2 1 ] GREEN RED
- [ 1 0 0 ] GREEN RED
- [ 1 0 1 ] GREEN RED
- [ 1 1 0 ] GREEN RED
- [ 1 1 1 ] GREEN RED
- [ 1 2 0 ] GREEN RED
- [ 1 2 1 ] GREEN RED
- [ 2 0 0 ] GREEN RED
- [ 2 0 1 ] GREEN RED
- [ 2 1 0 ] GREEN RED
- [ 2 1 1 ] GREEN RED
- [ 2 2 0 ] GREEN RED
- [ 2 2 1 ] GREEN RED
- [ 3 0 0 ] GREEN RED
- [ 3 0 1 ] GREEN RED
- [ 3 1 0 ] GREEN RED
- [ 3 1 1 ] GREEN RED
- [ 3 2 0 ] GREEN RED
- [ 3 2 1 ] GREEN RED
- */
-
-
- if ((tid = H5Tcreate(H5T_ENUM, sizeof(e_t))) < 0)
- goto out;
- if (H5Tenum_insert(tid, "RED", (val = 0, &val)) < 0)
- goto out;
- if (H5Tenum_insert(tid, "GREEN", (val = 1, &val)) < 0)
- goto out;
- if (make_attr(loc_id,3,dims3,"enum3D",tid,buf453) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- tid = -1;
-
- /*-------------------------------------------------------------------------
- * H5T_VLEN
- *-------------------------------------------------------------------------
- */
-
- /* Allocate and initialize VL dataset to write */
- n=0;
- for (i = 0; i < 4; i++)
- {
- for (j = 0; j < 3; j++)
- {
- for (k = 0; k < 2; k++)
- {
- unsigned l;
-
- buf53[i][j][k].p = HDmalloc((i + 1) * sizeof(int));
- buf53[i][j][k].len = (size_t)i + 1;
- for (l = 0; l < i + 1; l++)
- if (make_diffs)
- ((int *)buf53[i][j][k].p)[l] = 0;
- else
- ((int *)buf53[i][j][k].p)[l] = n++;
- }
- }
- }
- /*
- position vlen3D of </g1> vlen3D of </g1> difference
- ------------------------------------------------------------
- [ 0 0 1 ] 1 0 1
- [ 0 1 0 ] 2 0 2
- [ 0 1 1 ] 3 0 3
- [ 0 2 0 ] 4 0 4
- [ 0 2 1 ] 5 0 5
- [ 1 0 0 ] 6 0 6
- [ 1 0 0 ] 7 0 7
- [ 1 0 1 ] 8 0 8
- [ 1 0 1 ] 9 0 9
- [ 1 1 0 ] 10 0 10
- etc
- */
- if ((sid = H5Screate_simple(3, dims3, NULL)) < 0)
- goto out;
- if ((tid = H5Tvlen_create(H5T_NATIVE_INT)) < 0)
- goto out;
- if ((aid = H5Acreate2(loc_id, "vlen3D", tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if (H5Awrite(aid, tid, buf53) < 0)
- goto out;
- if (H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf53) < 0)
- goto out;
- if (H5Aclose(aid) < 0)
- goto out;
- aid = -1;
- if (H5Tclose(tid) < 0)
- goto out;
- tid = -1;
- if (H5Sclose(sid) < 0)
- goto out;
- sid = -1;
-
- /*-------------------------------------------------------------------------
- * H5T_ARRAY
- *-------------------------------------------------------------------------
- */
- n=1;
- for (i = 0; i < 24; i++)
- {
- for (j = 0; j < (int)dimarray[0]; j++)
- {
- if (make_diffs) buf63[i][j]=0;
- else buf63[i][j]=n++;
- }
- }
- /*
- position array3D of </g1> array3D of </g1> difference
- ------------------------------------------------------------
- [ 0 0 0 ] 1 0 1
- [ 0 0 0 ] 2 0 2
- [ 0 0 0 ] 3 0 3
- [ 0 0 1 ] 4 0 4
- [ 0 0 1 ] 5 0 5
- [ 0 0 1 ] 6 0 6
- [ 0 1 0 ] 7 0 7
- etc
- */
-
- if ((tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray)) < 0)
- goto out;
- if (make_attr(loc_id, 3, dims3, "array3D", tid, buf63) < 0)
- goto out;
- if (H5Tclose(tid) < 0)
- goto out;
- tid = -1;
-
- /*-------------------------------------------------------------------------
- * H5T_INTEGER and H5T_FLOAT
- *-------------------------------------------------------------------------
- */
- n = 1; f = 1;
- for(i = 0; i < 4; i++)
- {
- for(j = 0; j < 3; j++)
- {
- for(k = 0; k < 2; k++)
- {
- if(make_diffs)
- {
- buf73[i][j][k] = 0;
- buf83[i][j][k] = 0;
- }
- else
- {
- buf73[i][j][k] = n++;
- buf83[i][j][k] = f++;
- }
- }
- }
- }
-
- /*
- position integer3D of </g1> integer3D of </g1> difference
- ------------------------------------------------------------
- [ 0 0 0 ] 1 0 1
- [ 0 0 1 ] 2 0 2
- [ 0 1 0 ] 3 0 3
- [ 0 1 1 ] 4 0 4
- [ 0 2 0 ] 5 0 5
- [ 0 2 1 ] 6 0 6
- [ 1 0 0 ] 7 0 7
- [ 1 0 1 ] 8 0 8
- [ 1 1 0 ] 9 0 9
- [ 1 1 1 ] 10 0 10
- etc
- */
- if (make_attr(loc_id,3,dims3,"integer3D",H5T_NATIVE_INT,buf73) < 0)
- goto out;
- if (make_attr(loc_id,3,dims3,"float3D",H5T_NATIVE_FLOAT,buf83) < 0)
- goto out;
-
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Aclose(aid);
- H5Sclose(sid);
- H5Tclose(tid);
- } H5E_END_TRY;
- return -1;
-}
-
-
-
-
-/*-------------------------------------------------------------------------
-* Function: make_dset
-*
-* Purpose: utility function to create and write a dataset in LOC_ID
-*
-* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
-*
-* Date: November 12, 2003
-*
-*-------------------------------------------------------------------------
-*/
-static
-int make_dset(hid_t loc_id,
- const char *name,
- hid_t sid,
- hid_t dcpl,
- void *buf)
-{
- hid_t did=-1;
-
- if ((did = H5Dcreate2(loc_id, name, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
- return -1;
- if (H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
- goto out;
- if (H5Dclose(did) < 0)
- return -1;
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Dclose(did);
- } H5E_END_TRY;
- return -1;
-}
-
-
-/*-------------------------------------------------------------------------
-* Function: write_dset
-*
-* Purpose: utility function to create and write a dataset in LOC_ID
-*
-* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
-*
-* Date: November 12, 2003
-*
-*-------------------------------------------------------------------------
-*/
-static
-int write_dset( hid_t loc_id,
- int rank,
- hsize_t *dims,
- const char *dset_name,
- hid_t tid,
- void *buf )
-{
- hid_t did=-1;
- hid_t sid=-1;
-
- if ((sid = H5Screate_simple(rank, dims, NULL)) < 0)
- return -1;
- if ((did = H5Dcreate2(loc_id, dset_name, tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if (buf)
- {
- if(H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
- goto out;
- }
- if (H5Dclose(did) < 0)
- goto out;
- if (H5Sclose(sid) < 0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Dclose(did);
- H5Sclose(sid);
- } H5E_END_TRY;
- return -1;
-}
-
-
-
-/*-------------------------------------------------------------------------
-* Function: make_attr
-*
-* Purpose: utility function to write an attribute in LOC_ID
-*
-* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
-*
-* Date: November 12, 2003
-*
-*-------------------------------------------------------------------------
-*/
-static
-int make_attr(hid_t loc_id,
- int rank,
- hsize_t *dims,
- const char *attr_name,
- hid_t tid,
- void *buf)
-{
- hid_t aid;
- hid_t sid;
-
- if ((sid = H5Screate_simple(rank, dims, NULL)) < 0)
- return -1;
- if ((aid = H5Acreate2(loc_id, attr_name, tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if(buf)
- {
- if(H5Awrite(aid, tid, buf) < 0)
- goto out;
- }
- if (H5Aclose(aid) < 0)
- goto out;
- if (H5Sclose(sid) < 0)
- goto out;
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Aclose(aid);
- H5Sclose(sid);
- } H5E_END_TRY;
- return -1;
-}
-
-
-/*-------------------------------------------------------------------------
-* Function: make_named_dtype
-*
-* Purpose: create a file with named datatypes in various configurations
-*
-*-------------------------------------------------------------------------
-*/
-static
-int make_named_dtype(hid_t loc_id)
-{
- hsize_t dims[1] ={3};
- hid_t did=-1;
- hid_t aid=-1;
- hid_t sid=-1;
- hid_t tid=-1;
- hid_t gid=-1;
-
- if ((sid = H5Screate_simple(1, dims, NULL)) < 0)
- goto out;
-
- /* Create a dataset with an anonymous committed datatype as the first thing
- * h5repack sees */
- if((tid = H5Tcopy(H5T_STD_I16LE)) < 0)
- goto out;
- if(H5Tcommit_anon(loc_id, tid, H5P_DEFAULT, H5P_DEFAULT) < 0)
- goto out;
- if ((did = H5Dcreate2(loc_id, "A", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if(H5Tclose(tid) < 0)
- goto out;
-
- /* Create an attribute on that dataset that uses a committed datatype in
- * a remote group */
- if((gid = H5Gcreate2(loc_id, "M", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if(H5Gclose(gid) < 0)
- goto out;
- if((gid = H5Gcreate2(loc_id, "M/M", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if(H5Gclose(gid) < 0)
- goto out;
- if((tid = H5Tcopy(H5T_STD_I16BE)) < 0)
- goto out;
- if(H5Tcommit2(loc_id, "/M/M/A", tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT) < 0)
- goto out;
- if((aid = H5Acreate2(did, "A", tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if(H5Aclose(aid) < 0)
- goto out;
- if(H5Tclose(tid) < 0)
- goto out;
- if(H5Dclose(did) < 0)
- goto out;
-
- /* Create a dataset in the remote group that uses a committed datatype in
- * the root group */
- if((tid = H5Tcopy(H5T_STD_I32LE)) < 0)
- goto out;
- if(H5Tcommit2(loc_id, "N", tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT) < 0)
- goto out;
- if((did = H5Dcreate2(loc_id, "M/M/B", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if(H5Tclose(tid) < 0)
- goto out;
-
- /* Create an attribute on the remote dataset that uses an anonymous
- * committed datatype */
- if((tid = H5Tcopy(H5T_STD_I32BE)) < 0)
- goto out;
- if(H5Tcommit_anon(loc_id, tid, H5P_DEFAULT, H5P_DEFAULT) < 0)
- goto out;
- if((aid = H5Acreate2(did, "A", tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if(H5Aclose(aid) < 0)
- goto out;
-
- /* Create another attribute that uses the same anonymous datatype */
- if((aid = H5Acreate2(did, "B", tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if(H5Aclose(aid) < 0)
- goto out;
- if(H5Tclose(tid) < 0)
- goto out;
- if(H5Dclose(did) < 0)
- goto out;
-
- /* Create a dataset in the root group that uses the committed datatype in
- * the root group */
- if((tid = H5Topen2(loc_id, "N", H5P_DEFAULT)) < 0)
- goto out;
- if((did = H5Dcreate2(loc_id, "O", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if(H5Dclose(did) < 0)
- goto out;
-
- /* Create 2 attributes on the committed datatype that use that datatype */
- if((aid = H5Acreate2(tid, "A", tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if(H5Aclose(aid) < 0)
- goto out;
- if((aid = H5Acreate2(tid, "B", tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
- if(H5Aclose(aid) < 0)
- goto out;
- if(H5Tclose(tid) < 0)
- goto out;
-
- /* Close */
- if (H5Sclose(sid) < 0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY
- {
- H5Tclose(tid);
- H5Aclose(aid);
- H5Sclose(sid);
- H5Dclose(did);
- H5Gclose(gid);
- } H5E_END_TRY;
- return -1;
-} /* end make_named_dtype() */
-
-/*-------------------------------------------------------------------------
- * Function: add_attr_with_objref
- *
- * Purpose:
- * Create attributes with object reference to objects (dset,
- * group, datatype).
- *
- * Note:
- * this function depends on locally created objects, however can be modified
- * to be independent as necessary
- *
- * Programmer: Jonathan Kim (March 23, 2010)
- *------------------------------------------------------------------------*/
-static herr_t add_attr_with_objref(hid_t file_id, hid_t obj_id)
-{
- int ret = SUCCEED;
- int status;
- /* attr obj ref */
- hsize_t dim_attr_objref[1]={3};
- hobj_ref_t data_attr_objref[3];
-
- /* --------------------------------
- * add attribute with obj ref type
- */
- /* ref to dset */
- status = H5Rcreate(&data_attr_objref[0],file_id,NAME_OBJ_DS1,H5R_OBJECT,(hid_t)-1);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* ref to group */
- status = H5Rcreate(&data_attr_objref[1],file_id,NAME_OBJ_GRP,H5R_OBJECT,(hid_t)-1);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* ref to datatype */
- status = H5Rcreate(&data_attr_objref[2],file_id,NAME_OBJ_NDTYPE,H5R_OBJECT,(hid_t)-1);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* create attr with obj ref type */
- status = make_attr(obj_id,1,dim_attr_objref,"Attr_OBJREF",H5T_STD_REF_OBJ,data_attr_objref);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> make_attr failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
-out:
-
- return ret;
-
-}
-
-/*-------------------------------------------------------------------------
- * Function: add_attr_with_regref
- *
- * Purpose:
- * Create attributes with region reference to dset
- *
- * Note:
- * this function depends on locally created objects, however can be modified
- * to be independent as necessary
- *
- * Programmer: Jonathan Kim (March 23, 2010)
- *------------------------------------------------------------------------*/
-static herr_t add_attr_with_regref(hid_t file_id, hid_t obj_id)
-{
- int ret = SUCCEED;
- int status;
-
- /* attr region ref */
- hid_t sid_regrefed_dset=0;
- hsize_t dim_regrefed_dset[2]={3,6};
- hsize_t coords_regrefed_dset[3][2] = {{0,1},{1,2},{2,3}};
- hsize_t dim_attr_regref[1]= {1}; /* dim of */
- hdset_reg_ref_t data_attr_regref[1];
-
-
- /* -----------------------------------
- * add attribute with region ref type
- */
- sid_regrefed_dset = H5Screate_simple (2, dim_regrefed_dset, NULL);
- if (sid_regrefed_dset < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Screate_simple failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* select elements space for reference */
- status = H5Sselect_elements (sid_regrefed_dset, H5S_SELECT_SET, (size_t)3, coords_regrefed_dset[0]);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Sselect_elements failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* create region reference from elements space */
- status = H5Rcreate (&data_attr_regref[0], file_id, NAME_OBJ_DS2, H5R_DATASET_REGION, sid_regrefed_dset);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* create attr with region ref type */
- status = make_attr(obj_id,1,dim_attr_regref,"Attr_REGREF",H5T_STD_REF_DSETREG,data_attr_regref);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> make_attr failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
-out:
- if (sid_regrefed_dset > 0)
- H5Sclose (sid_regrefed_dset);
-
- return ret;
-
-}
-
-/*-------------------------------------------------------------------------
- * Function: gen_refered_objs
- *
- * Purpose:
- * Create objects (dataset, group, datatype) to be referenced
- *
- * Note:
- * This function is to use along with gen_obj_ref() gen_region_ref()
- *
- * Programmer: Jonathan Kim (March 23, 2010)
- *------------------------------------------------------------------------*/
-static herr_t gen_refered_objs(hid_t loc_id)
-{
- int status;
- herr_t ret = SUCCEED;
-
- /* objects (dset, group, datatype) */
- hid_t sid=0, did1=0, gid=0, tid=0;
- hsize_t dims1[1]={3};
- int data[3] = {10,20,30};
-
- /* Dset2 */
- hid_t sid2=0, did2=0;
- hsize_t dims2[2] = {3,16};
- char data2[3][16] = {"The quick brown", "fox jumps over ", "the 5 lazy dogs"};
-
- /*-----------------------
- * add short dataset
- * (define NAME_OBJ_DS1)
- */
- sid = H5Screate_simple(1, dims1, NULL);
- if (sid < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Screate_simple failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- did1 = H5Dcreate2 (loc_id, NAME_OBJ_DS1, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- if (did1 < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Dcreate2 failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- status = H5Dwrite(did1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Dwrite failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /*--------------
- * add group
- * (define NAME_OBJ_GRP)
- */
- gid = H5Gcreate2 (loc_id, NAME_OBJ_GRP, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- if (gid < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Gcreate2 failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /*----------------------
- * add named datatype
- * (define NAME_OBJ_NDTYPE)
- */
- tid = H5Tcopy(H5T_NATIVE_INT);
- status = H5Tcommit2(loc_id, NAME_OBJ_NDTYPE, tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Tcommit2 failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
-
- /*--------------------------
- * create long dataset
- * (define NAME_OBJ_DS2)
- */
- sid2 = H5Screate_simple (2, dims2, NULL);
- if (sid2 < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Screate_simple failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* create normal dataset which is refered */
- did2 = H5Dcreate2 (loc_id, NAME_OBJ_DS2, H5T_STD_I8LE, sid2, H5P_DEFAULT,H5P_DEFAULT,H5P_DEFAULT);
- if (did2 < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Dcreate2 failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* write values to dataset */
- status = H5Dwrite (did2, H5T_NATIVE_CHAR, H5S_ALL, H5S_ALL, H5P_DEFAULT, data2);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Dwrite failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
-out:
- if(did1 > 0)
- H5Dclose(did1);
- if(gid > 0)
- H5Gclose(gid);
- if(tid > 0)
- H5Tclose(tid);
- if(sid > 0)
- H5Sclose(sid);
-
- if(did2 > 0)
- H5Dclose(did2);
- if(sid2 > 0)
- H5Sclose(sid2);
- return ret;
-
-}
-
-/*-------------------------------------------------------------------------
- * Function: gen_obj_ref
- *
- * Purpose:
- * Generate object references to objects (dataset,group and named datatype)
- *
- * Note:
- * copied from h5copygentest.c and upate to create named datatype
- *
- * Programmer: Jonathan Kim (March 18, 2010)
- *------------------------------------------------------------------------*/
-static herr_t gen_obj_ref(hid_t loc_id)
-{
- int status;
- herr_t ret = SUCCEED;
-
- hid_t sid=0, oid=0;
- hsize_t dims_dset_objref[1]={3};
-
- /* attr with int type */
- hsize_t dim_attr_int[1]={2};
- int data_attr_int[2] = {10,20};
-
- /* write buffer for obj reference */
- hobj_ref_t objref_buf[3];
-
- /*---------------------------------------------------------
- * create obj references to the previously created objects.
- * Passing -1 as reference is an object.*/
-
- /* obj ref to dataset */
- status = H5Rcreate (&objref_buf[0], loc_id, NAME_OBJ_DS1, H5R_OBJECT, (hid_t)-1);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* obj ref to group */
- status = H5Rcreate (&objref_buf[1], loc_id, NAME_OBJ_GRP, H5R_OBJECT, (hid_t)-1);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* obj ref to named-datatype */
- status = H5Rcreate (&objref_buf[2], loc_id, NAME_OBJ_NDTYPE, H5R_OBJECT, (hid_t)-1);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /*---------------------------------------------------------
- * create dataset contain references
- */
- sid = H5Screate_simple (1, dims_dset_objref, NULL);
- if (sid < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Screate_simple failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- oid = H5Dcreate2 (loc_id, "Dset_OBJREF", H5T_STD_REF_OBJ, sid, H5P_DEFAULT,H5P_DEFAULT,H5P_DEFAULT);
- if (oid < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Dcreate2 failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- status = H5Dwrite(oid, H5T_STD_REF_OBJ, H5S_ALL, H5S_ALL, H5P_DEFAULT, objref_buf);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Dwrite failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* add attribute with int type */
- if (make_attr(oid,1,dim_attr_int,"integer",H5T_NATIVE_INT,data_attr_int) < 0)
- goto out;
-
- /* add attribute with obj ref */
- status = add_attr_with_objref(loc_id, oid);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> add_attr_with_objref failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* add attribute with region ref */
- status = add_attr_with_regref(loc_id, oid);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> add_attr_with_regref failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
-out:
- if(oid > 0)
- H5Dclose(oid);
- if(sid > 0)
- H5Sclose(sid);
-
- return ret;
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: gen_region_ref
- *
- * Purpose: Generate dataset region references
- *
- * Note:
- * copied from h5copygentest.c
- *
- * Programmer: Jonathan Kim (March 18, 2010)
- *------------------------------------------------------------------------*/
-static herr_t gen_region_ref(hid_t loc_id)
-{
- int status;
- herr_t ret = SUCCEED;
-
- /* target dataset */
- hid_t sid_trg=0;
- hsize_t dims_trg[2] = {3,16};
-
- /* dset with region ref type */
- hid_t sid_ref=0, oid_ref=0;
-
- /* region ref to target dataset */
- hsize_t coords[4][2] = { {0,1}, {2,11}, {1,0}, {2,4} };
- hdset_reg_ref_t rr_data[2];
- hsize_t start[2] = {0,0};
- hsize_t stride[2] = {2,11};
- hsize_t count[2] = {2,2};
- hsize_t block[2] = {1,3};
- hsize_t dims1[1] = {2};
-
- /* attr with int type */
- hsize_t dim_attr_int[1]={2};
- int data_attr_int[2] = {10,20};
-
- sid_trg = H5Screate_simple (2, dims_trg, NULL);
- if (sid_trg < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Screate_simple failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* select elements space for reference */
- status = H5Sselect_elements (sid_trg, H5S_SELECT_SET, (size_t)4, coords[0]);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Sselect_elements failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* create region reference from elements space */
- status = H5Rcreate (&rr_data[0], loc_id, NAME_OBJ_DS2, H5R_DATASET_REGION, sid_trg);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* select hyperslab space for reference */
- status = H5Sselect_hyperslab (sid_trg, H5S_SELECT_SET, start, stride, count, block);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Sselect_hyperslab failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* create region reference from hyperslab space */
- status = H5Rcreate (&rr_data[1], loc_id, NAME_OBJ_DS2, H5R_DATASET_REGION, sid_trg);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* Create dataspace. */
- sid_ref = H5Screate_simple (1, dims1, NULL);
- if (sid_ref < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Screate_simple failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* create region reference dataset */
- oid_ref = H5Dcreate2 (loc_id, REG_REF_DS1, H5T_STD_REF_DSETREG, sid_ref, H5P_DEFAULT,H5P_DEFAULT,H5P_DEFAULT);
- if (oid_ref < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Dcreate2 failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* write data as region references */
- status = H5Dwrite (oid_ref, H5T_STD_REF_DSETREG, H5S_ALL, H5S_ALL, H5P_DEFAULT, rr_data);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Dwrite failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* add attribute with int type */
- if (make_attr(oid_ref,1,dim_attr_int,"integer",H5T_NATIVE_INT,data_attr_int) < 0)
- goto out;
-
- /* add attribute with obj ref */
- status = add_attr_with_objref(loc_id, oid_ref);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> add_attr_with_objref failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* add attribute with region ref */
- status = add_attr_with_regref(loc_id, oid_ref);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> add_attr_with_regref failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
-out:
- if (oid_ref > 0)
- H5Dclose (oid_ref);
- if (sid_ref > 0)
- H5Sclose (sid_ref);
- if (sid_trg > 0)
- H5Sclose (sid_trg);
-
- return ret;
-}
-
-/*-------------------------------------------------------------------------
-* Function: make_references
-*
-* Purpose: create a file with obj and region references
-*
-* Programmer: Jonathan Kim (March 18, 2010)
-*-------------------------------------------------------------------------
-*/
-static herr_t make_references(hid_t loc_id)
-{
- herr_t ret = SUCCEED;
- herr_t status;
-
- /* add target objects */
- status = gen_refered_objs(loc_id);
- if (status == FAIL)
- {
- fprintf(stderr, "Failed to generate referenced object.\n");
- ret = FAIL;
- }
-
- /* add object reference */
- status = gen_obj_ref(loc_id);
- if (status == FAIL)
- {
- fprintf(stderr, "Failed to generate object reference.\n");
- ret = FAIL;
- }
-
- /* add region reference */
- status = gen_region_ref(loc_id);
- if (status == FAIL)
- {
- fprintf(stderr, "Failed to generate region reference.\n");
- ret = FAIL;
- }
-
- return ret;
-}
-
-/*-------------------------------------------------------------------------
-* Function: make_complex_attr_references
-*
-* Purpose:
-* create a file with :
-* 1. obj ref in attribute of compound type
-* 2. region ref in attribute of compound type
-* 3. obj ref in attribute of vlen type
-* 4. region ref in attribute of vlen type
-*
-* Programmer: Jonathan (March 25, 2010)
-*-------------------------------------------------------------------------
-*/
-/* obj dset */
-#define RANK_OBJ 2
-#define DIM0_OBJ 6
-#define DIM1_OBJ 10
-/* container dset */
-#define RANK_DSET 1
-#define DIM_DSET 4
-/* 1. obj references in compound attr */
-#define RANK_COMP_OBJREF 1
-#define DIM_COMP_OBJREF 3 /* for dataset, group, datatype */
-/* 2. region references in compound attr */
-#define RANK_COMP_REGREF 1
-#define DIM_COMP_REGREF 1 /* for element region */
-/* 3. obj references in vlen attr */
-#define RANK_VLEN_OBJREF 1
-#define DIM_VLEN_OBJREF 3 /* for dataset, group, datatype */
-#define LEN0_VLEN_OBJREF 1 /* dataset */
-#define LEN1_VLEN_OBJREF 1 /* group */
-#define LEN2_VLEN_OBJREF 1 /* datatype */
-/* 4. region references in vlen attr */
-#define RANK_VLEN_REGREF 1
-#define DIM_VLEN_REGREF 1 /* for element region */
-#define LEN0_VLEN_REGREF 1 /* element region */
-
-static herr_t make_complex_attr_references(hid_t loc_id)
-{
- herr_t ret = SUCCEED;
- herr_t status;
- /*
- * for objects
- */
- hid_t objgid=0, objdid=0, objtid=0, objsid=0;
- hsize_t obj_dims[RANK_OBJ] = {DIM0_OBJ, DIM1_OBJ};
- int obj_data[DIM0_OBJ][DIM1_OBJ]=
- {{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
- {10,11,12,13,14,15,16,17,18,19},
- {20,21,22,23,24,25,26,27,28,29},
- {30,31,32,33,34,35,36,37,38,39},
- {40,41,42,43,44,45,46,47,48,49},
- {50,51,52,53,54,55,56,57,58,59}};
-
- /*
- * group main
- */
- hid_t main_gid=0;
- /*
- * dataset which the attribute will be attached to
- */
- hsize_t main_dset_dims[RANK_DSET] = {DIM_DSET};
- hid_t main_sid=0, main_did=0;
- /*
- * 1. obj references in compound attr
- */
- hid_t comp_objref_tid=0, comp_objref_aid=0;
- typedef struct comp_objref_t {
- hobj_ref_t val_objref;
- int val_int;
- } comp_objref_t;
- comp_objref_t comp_objref_data[DIM_COMP_OBJREF];
- hid_t comp_objref_attr_sid=0;
- hsize_t comp_objref_dim[RANK_COMP_OBJREF] = {DIM_COMP_OBJREF};
-
- /*
- * 2. region references in compound attr
- */
- hid_t comp_regref_tid=0, comp_regref_aid=0;
- typedef struct comp_regref_t {
- hdset_reg_ref_t val_regref;
- int val_int;
- } comp_regref_t;
- comp_regref_t comp_regref_data[DIM_COMP_REGREF];
- hid_t comp_regref_attr_sid=0;
- hsize_t comp_regref_dim[RANK_COMP_REGREF] = {DIM_COMP_REGREF};
- hsize_t coords[4][2] = { {0,1}, {2,3}, {3,4}, {4,5} };
-
- /*
- * 3. obj references in vlen attr
- */
- hid_t vlen_objref_attr_tid=0, vlen_objref_attr_sid=0;
- hid_t vlen_objref_attr_id=0;
- hvl_t vlen_objref_data[DIM_VLEN_OBJREF];
- hsize_t vlen_objref_dims[RANK_VLEN_OBJREF] = {DIM_VLEN_OBJREF};
-
- /*
- * 4. region references in vlen attr
- */
- hid_t vlen_regref_attr_tid=0, vlen_regref_attr_sid=0;
- hid_t vlen_regref_attr_id=0;
- hvl_t vlen_regref_data[DIM_VLEN_REGREF];
- hsize_t vlen_regref_dim[RANK_VLEN_REGREF] = {DIM_VLEN_REGREF};
-
-
- /* ---------------------------------------
- * create objects which to be referenced
- */
- /* object1 group */
- objgid = H5Gcreate2(loc_id, NAME_OBJ_GRP, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-
- /* object2 dataset */
- objsid = H5Screate_simple(RANK_OBJ, obj_dims, NULL);
- objdid = H5Dcreate2(loc_id, NAME_OBJ_DS1, H5T_NATIVE_INT, objsid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- status = H5Dwrite(objdid, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, obj_data[0]);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Dwrite failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* object3 named datatype */
- objtid = H5Tcopy(H5T_NATIVE_INT);
- status = H5Tcommit2(loc_id, NAME_OBJ_NDTYPE, objtid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Tcommit2 failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
-
- /* ---------------------------------------------
- * Put testing objs in this group
- * create group contain dataset with attribute and the attribute has
- * compound type which contain obj and region reference */
- main_gid = H5Gcreate2(loc_id, "group_main", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- if (main_gid < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Gcreate2 failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /*----------------------------------------------------------
- * create dataset which the attribute will be attached to
- */
- main_sid = H5Screate_simple(RANK_DSET, main_dset_dims, NULL);
-
- main_did = H5Dcreate2(main_gid, "dset_main", H5T_NATIVE_INT, main_sid, H5P_DEFAULT,H5P_DEFAULT, H5P_DEFAULT);
-
- status = H5Dwrite(main_did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, obj_data[0]);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Dwrite failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /*-------------------------------------------------------------------
- * 1. create obj references in a attribute of compound type
- */
-
- /*
- * create compound type for attribute
- */
- comp_objref_tid = H5Tcreate (H5T_COMPOUND, sizeof(comp_objref_t));
-
- H5Tinsert(comp_objref_tid, "value_objref", HOFFSET(comp_objref_t, val_objref), H5T_STD_REF_OBJ);
- H5Tinsert(comp_objref_tid, "value_int", HOFFSET(comp_objref_t, val_int), H5T_NATIVE_INT);
-
- /*
- * Create the object references into compound type
- */
- /* references to dataset */
- status = H5Rcreate (&(comp_objref_data[0].val_objref), loc_id, NAME_OBJ_DS1, H5R_OBJECT,(hid_t)-1);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
- comp_objref_data[0].val_int = 0;
-
- /* references to group */
- status = H5Rcreate (&(comp_objref_data[1].val_objref), loc_id, NAME_OBJ_GRP, H5R_OBJECT,(hid_t)-1);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
- comp_objref_data[1].val_int = 10;
-
- /* references to datatype */
- status = H5Rcreate (&(comp_objref_data[2].val_objref), loc_id, NAME_OBJ_NDTYPE, H5R_OBJECT,(hid_t)-1);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
- comp_objref_data[2].val_int = 20;
-
- /*
- * create attribute and write the object ref
- */
- comp_objref_attr_sid = H5Screate_simple (RANK_COMP_OBJREF, comp_objref_dim, NULL);
- comp_objref_aid = H5Acreate2 (main_did, "Comp_OBJREF", comp_objref_tid, comp_objref_attr_sid, H5P_DEFAULT, H5P_DEFAULT);
- status = H5Awrite (comp_objref_aid, comp_objref_tid, comp_objref_data);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Awrite failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /*-------------------------------------------------------------------
- * 2. create region references in attribute of compound type
- */
- /*
- * create compound type for attribute
- */
- comp_regref_tid = H5Tcreate (H5T_COMPOUND, sizeof(comp_regref_t));
-
- H5Tinsert(comp_regref_tid, "value_regref", HOFFSET(comp_regref_t, val_regref), H5T_STD_REF_DSETREG);
- H5Tinsert(comp_regref_tid, "value_int", HOFFSET(comp_regref_t, val_int), H5T_NATIVE_INT);
-
- /*
- * create the region reference
- */
- status = H5Sselect_elements (objsid, H5S_SELECT_SET, (size_t)4, coords[0]);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Sselect_elements failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
- status = H5Rcreate (&(comp_regref_data[0].val_regref), loc_id, NAME_OBJ_DS1, H5R_DATASET_REGION, objsid);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
- comp_regref_data[0].val_int = 10;
-
- /*
- * create attribute and write the region ref
- */
- comp_regref_attr_sid = H5Screate_simple (RANK_COMP_REGREF, comp_regref_dim, NULL);
- comp_regref_aid = H5Acreate2 (main_did, "Comp_REGREF", comp_regref_tid, comp_regref_attr_sid, H5P_DEFAULT, H5P_DEFAULT);
- status = H5Awrite (comp_regref_aid, comp_regref_tid, comp_regref_data);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Awrite failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
-
- /*-------------------------------------------------------------------
- * 3. create obj references in attribute of vlen type
- */
- /*
- * prepare vlen data
- */
- vlen_objref_data[0].len = LEN0_VLEN_OBJREF;
- vlen_objref_data[0].p = HDmalloc (vlen_objref_data[0].len * sizeof(hobj_ref_t));
- vlen_objref_data[1].len = LEN1_VLEN_OBJREF;
- vlen_objref_data[1].p = HDmalloc (vlen_objref_data[1].len * sizeof(hobj_ref_t));
- vlen_objref_data[2].len = LEN2_VLEN_OBJREF;
- vlen_objref_data[2].p = HDmalloc (vlen_objref_data[2].len * sizeof(hobj_ref_t));
-
- /*
- * create obj references
- */
- /* reference to dataset */
- status = H5Rcreate (&((hobj_ref_t*)vlen_objref_data[0].p)[0], loc_id, NAME_OBJ_DS1, H5R_OBJECT, (hid_t)-1);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
- /* reference to group */
- status = H5Rcreate (&((hobj_ref_t*)vlen_objref_data[1].p)[0], loc_id, NAME_OBJ_GRP, H5R_OBJECT, (hid_t)-1);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
- /* reference to datatype */
- status = H5Rcreate (&((hobj_ref_t*)vlen_objref_data[2].p)[0], loc_id, NAME_OBJ_NDTYPE, H5R_OBJECT, (hid_t)-1);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /*
- * create vlen type with obj reference
- */
- vlen_objref_attr_tid = H5Tvlen_create (H5T_STD_REF_OBJ);
- vlen_objref_attr_sid = H5Screate_simple (RANK_VLEN_OBJREF, vlen_objref_dims, NULL);
-
- /*
- * create attribute and write the object reference
- */
- vlen_objref_attr_id = H5Acreate2(main_did, "Vlen_OBJREF", vlen_objref_attr_tid, vlen_objref_attr_sid, H5P_DEFAULT, H5P_DEFAULT);
- status = H5Awrite (vlen_objref_attr_id, vlen_objref_attr_tid, vlen_objref_data);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Awrite failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* close resource for vlen data */
- status = H5Dvlen_reclaim (vlen_objref_attr_tid, vlen_objref_attr_sid, H5P_DEFAULT, vlen_objref_data);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Dvlen_reclaim failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /*-------------------------------------------------------------------
- * 4. create region references in a attribute of vlen type
- */
-
- /*
- * prepare vlen data
- */
- vlen_regref_data[0].len = LEN0_VLEN_REGREF;
- vlen_regref_data[0].p = HDmalloc (vlen_regref_data[0].len * sizeof(hdset_reg_ref_t));
-
- /*
- * create region reference
- */
- status = H5Sselect_elements(objsid, H5S_SELECT_SET, (size_t)4, coords[0]);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Sselect_elements failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
- status = H5Rcreate (&((hdset_reg_ref_t*)vlen_regref_data[0].p)[0], loc_id, NAME_OBJ_DS1, H5R_DATASET_REGION, objsid);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /*
- * create vlen type with region reference
- */
- vlen_regref_attr_tid = H5Tvlen_create(H5T_STD_REF_DSETREG);
- vlen_regref_attr_sid = H5Screate_simple(RANK_VLEN_REGREF, vlen_regref_dim, NULL);
-
- /*
- * create attribute and write the region reference
- */
- vlen_regref_attr_id = H5Acreate2(main_did, "Vlen_REGREF", vlen_regref_attr_tid, vlen_regref_attr_sid, H5P_DEFAULT, H5P_DEFAULT);
- status = H5Awrite(vlen_regref_attr_id, vlen_regref_attr_tid, vlen_regref_data);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Awrite failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
- /* close resource for vlen data */
- status = H5Dvlen_reclaim (vlen_regref_attr_tid, vlen_regref_attr_sid, H5P_DEFAULT, vlen_regref_data);
- if (status < 0)
- {
- fprintf(stderr, "Error: %s %d> H5Dvlen_reclaim failed.\n", FUNC, __LINE__);
- ret = FAIL;
- goto out;
- }
-
-out:
- /* release resources */
- if (objgid > 0)
- H5Gclose(objgid);
- if (objsid > 0)
- H5Sclose(objsid);
- if (objdid > 0)
- H5Dclose(objdid);
- if (objtid > 0)
- H5Tclose(objtid);
-
- if (main_gid > 0)
- H5Gclose(main_gid);
- if (main_sid > 0)
- H5Sclose(main_sid);
- if (main_did > 0)
- H5Dclose(main_did);
- /* comp obj ref */
- if (comp_objref_tid > 0)
- H5Tclose(comp_objref_tid);
- if (comp_objref_aid > 0)
- H5Aclose(comp_objref_aid);
- if (comp_objref_attr_sid > 0)
- H5Sclose(comp_objref_attr_sid);
- /* comp region ref */
- if (comp_regref_tid > 0)
- H5Tclose(comp_regref_tid);
- if (comp_regref_aid > 0)
- H5Aclose(comp_regref_aid);
- if (comp_regref_attr_sid > 0)
- H5Sclose(comp_regref_attr_sid);
- /* vlen obj ref */
- if (vlen_objref_attr_id > 0)
- H5Aclose(vlen_objref_attr_id);
- if (vlen_objref_attr_sid > 0)
- H5Sclose(vlen_objref_attr_sid);
- if (vlen_objref_attr_tid > 0)
- H5Tclose(vlen_objref_attr_tid);
- /* vlen region ref */
- if (vlen_regref_attr_id > 0)
- H5Aclose(vlen_regref_attr_id);
- if (vlen_regref_attr_sid > 0)
- H5Sclose(vlen_regref_attr_sid);
- if (vlen_regref_attr_tid > 0)
- H5Tclose(vlen_regref_attr_tid);
-
- return ret;
-}
diff --git a/tools/h5repack/testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.ddl b/tools/h5repack/testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.ddl
deleted file mode 100644
index fab9494..0000000
--- a/tools/h5repack/testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.ddl
+++ /dev/null
@@ -1,112 +0,0 @@
-HDF5 "out-vds_dset_chunk20x10x5.1_vds.h5" {
-DATASET "vds_dset" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 5, 18, 8 ) / ( H5S_UNLIMITED, 18, 8 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 20, 10, 5 )
- SIZE 16000
- }
- FILTERS {
- NONE
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE -9
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- DATA {
- (0,0,0): 10, 10, 10, 10, 10, 10, 10, 10,
- (0,1,0): 10, 10, 10, 10, 10, 10, 10, 10,
- (0,2,0): 20, 20, 20, 20, 20, 20, 20, 20,
- (0,3,0): 20, 20, 20, 20, 20, 20, 20, 20,
- (0,4,0): 20, 20, 20, 20, 20, 20, 20, 20,
- (0,5,0): 20, 20, 20, 20, 20, 20, 20, 20,
- (0,6,0): 30, 30, 30, 30, 30, 30, 30, 30,
- (0,7,0): 30, 30, 30, 30, 30, 30, 30, 30,
- (0,8,0): 40, 40, 40, 40, 40, 40, 40, 40,
- (0,9,0): 40, 40, 40, 40, 40, 40, 40, 40,
- (0,10,0): 40, 40, 40, 40, 40, 40, 40, 40,
- (0,11,0): 40, 40, 40, 40, 40, 40, 40, 40,
- (0,12,0): 50, 50, 50, 50, 50, 50, 50, 50,
- (0,13,0): 50, 50, 50, 50, 50, 50, 50, 50,
- (0,14,0): 60, 60, 60, 60, 60, 60, 60, 60,
- (0,15,0): 60, 60, 60, 60, 60, 60, 60, 60,
- (0,16,0): 60, 60, 60, 60, 60, 60, 60, 60,
- (0,17,0): 60, 60, 60, 60, 60, 60, 60, 60,
- (1,0,0): 11, 11, 11, 11, 11, 11, 11, 11,
- (1,1,0): 11, 11, 11, 11, 11, 11, 11, 11,
- (1,2,0): 21, 21, 21, 21, 21, 21, 21, 21,
- (1,3,0): 21, 21, 21, 21, 21, 21, 21, 21,
- (1,4,0): 21, 21, 21, 21, 21, 21, 21, 21,
- (1,5,0): 21, 21, 21, 21, 21, 21, 21, 21,
- (1,6,0): 31, 31, 31, 31, 31, 31, 31, 31,
- (1,7,0): 31, 31, 31, 31, 31, 31, 31, 31,
- (1,8,0): 41, 41, 41, 41, 41, 41, 41, 41,
- (1,9,0): 41, 41, 41, 41, 41, 41, 41, 41,
- (1,10,0): 41, 41, 41, 41, 41, 41, 41, 41,
- (1,11,0): 41, 41, 41, 41, 41, 41, 41, 41,
- (1,12,0): 51, 51, 51, 51, 51, 51, 51, 51,
- (1,13,0): 51, 51, 51, 51, 51, 51, 51, 51,
- (1,14,0): 61, 61, 61, 61, 61, 61, 61, 61,
- (1,15,0): 61, 61, 61, 61, 61, 61, 61, 61,
- (1,16,0): 61, 61, 61, 61, 61, 61, 61, 61,
- (1,17,0): 61, 61, 61, 61, 61, 61, 61, 61,
- (2,0,0): 12, 12, 12, 12, 12, 12, 12, 12,
- (2,1,0): 12, 12, 12, 12, 12, 12, 12, 12,
- (2,2,0): 22, 22, 22, 22, 22, 22, 22, 22,
- (2,3,0): 22, 22, 22, 22, 22, 22, 22, 22,
- (2,4,0): 22, 22, 22, 22, 22, 22, 22, 22,
- (2,5,0): 22, 22, 22, 22, 22, 22, 22, 22,
- (2,6,0): 32, 32, 32, 32, 32, 32, 32, 32,
- (2,7,0): 32, 32, 32, 32, 32, 32, 32, 32,
- (2,8,0): 42, 42, 42, 42, 42, 42, 42, 42,
- (2,9,0): 42, 42, 42, 42, 42, 42, 42, 42,
- (2,10,0): 42, 42, 42, 42, 42, 42, 42, 42,
- (2,11,0): 42, 42, 42, 42, 42, 42, 42, 42,
- (2,12,0): 52, 52, 52, 52, 52, 52, 52, 52,
- (2,13,0): 52, 52, 52, 52, 52, 52, 52, 52,
- (2,14,0): 62, 62, 62, 62, 62, 62, 62, 62,
- (2,15,0): 62, 62, 62, 62, 62, 62, 62, 62,
- (2,16,0): 62, 62, 62, 62, 62, 62, 62, 62,
- (2,17,0): 62, 62, 62, 62, 62, 62, 62, 62,
- (3,0,0): 13, 13, 13, 13, 13, 13, 13, 13,
- (3,1,0): 13, 13, 13, 13, 13, 13, 13, 13,
- (3,2,0): 23, 23, 23, 23, 23, 23, 23, 23,
- (3,3,0): 23, 23, 23, 23, 23, 23, 23, 23,
- (3,4,0): 23, 23, 23, 23, 23, 23, 23, 23,
- (3,5,0): 23, 23, 23, 23, 23, 23, 23, 23,
- (3,6,0): 33, 33, 33, 33, 33, 33, 33, 33,
- (3,7,0): 33, 33, 33, 33, 33, 33, 33, 33,
- (3,8,0): 43, 43, 43, 43, 43, 43, 43, 43,
- (3,9,0): 43, 43, 43, 43, 43, 43, 43, 43,
- (3,10,0): 43, 43, 43, 43, 43, 43, 43, 43,
- (3,11,0): 43, 43, 43, 43, 43, 43, 43, 43,
- (3,12,0): 53, 53, 53, 53, 53, 53, 53, 53,
- (3,13,0): 53, 53, 53, 53, 53, 53, 53, 53,
- (3,14,0): 63, 63, 63, 63, 63, 63, 63, 63,
- (3,15,0): 63, 63, 63, 63, 63, 63, 63, 63,
- (3,16,0): 63, 63, 63, 63, 63, 63, 63, 63,
- (3,17,0): 63, 63, 63, 63, 63, 63, 63, 63,
- (4,0,0): 14, 14, 14, 14, 14, 14, 14, 14,
- (4,1,0): 14, 14, 14, 14, 14, 14, 14, 14,
- (4,2,0): 24, 24, 24, 24, 24, 24, 24, 24,
- (4,3,0): 24, 24, 24, 24, 24, 24, 24, 24,
- (4,4,0): 24, 24, 24, 24, 24, 24, 24, 24,
- (4,5,0): 24, 24, 24, 24, 24, 24, 24, 24,
- (4,6,0): 34, 34, 34, 34, 34, 34, 34, 34,
- (4,7,0): 34, 34, 34, 34, 34, 34, 34, 34,
- (4,8,0): 44, 44, 44, 44, 44, 44, 44, 44,
- (4,9,0): 44, 44, 44, 44, 44, 44, 44, 44,
- (4,10,0): 44, 44, 44, 44, 44, 44, 44, 44,
- (4,11,0): 44, 44, 44, 44, 44, 44, 44, 44,
- (4,12,0): 54, 54, 54, 54, 54, 54, 54, 54,
- (4,13,0): 54, 54, 54, 54, 54, 54, 54, 54,
- (4,14,0): 64, 64, 64, 64, 64, 64, 64, 64,
- (4,15,0): 64, 64, 64, 64, 64, 64, 64, 64,
- (4,16,0): 64, 64, 64, 64, 64, 64, 64, 64,
- (4,17,0): 64, 64, 64, 64, 64, 64, 64, 64
- }
-}
-}
diff --git a/tools/h5repack/testfiles/2_vds.h5-vds_chunk3x6x9-v.ddl b/tools/h5repack/testfiles/2_vds.h5-vds_chunk3x6x9-v.ddl
deleted file mode 100644
index 51df9dd..0000000
--- a/tools/h5repack/testfiles/2_vds.h5-vds_chunk3x6x9-v.ddl
+++ /dev/null
@@ -1,70 +0,0 @@
-HDF5 "out-vds_chunk3x6x9.2_vds.h5" {
-DATASET "vds_dset" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 6, 8, 14 ) / ( H5S_UNLIMITED, 8, 14 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 3, 6, 9 )
- SIZE 5184
- }
- FILTERS {
- NONE
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE -9
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- DATA {
- (0,0,0): 10, 10, 10, 10, 10, 10, 10, 40, 40, 40, 40, 40, 40, 40,
- (0,1,0): 10, 10, 10, 10, 10, 10, 10, 40, 40, 40, 40, 40, 40, 40,
- (0,2,0): 20, 20, 20, 20, 20, 20, 20, 40, 40, 40, 40, 40, 40, 40,
- (0,3,0): 20, 20, 20, 20, 20, 20, 20, 40, 40, 40, 40, 40, 40, 40,
- (0,4,0): 20, 20, 20, 20, 20, 20, 20, 40, 40, 40, 40, 40, 40, 40,
- (0,5,0): 20, 20, 20, 20, 20, 20, 20, 50, 50, 50, 50, 50, 50, 50,
- (0,6,0): 30, 30, 30, 30, 30, 30, 30, 50, 50, 50, 50, 50, 50, 50,
- (0,7,0): 30, 30, 30, 30, 30, 30, 30, 50, 50, 50, 50, 50, 50, 50,
- (1,0,0): 11, 11, 11, 11, 11, 11, 11, 41, 41, 41, 41, 41, 41, 41,
- (1,1,0): 11, 11, 11, 11, 11, 11, 11, 41, 41, 41, 41, 41, 41, 41,
- (1,2,0): 21, 21, 21, 21, 21, 21, 21, 41, 41, 41, 41, 41, 41, 41,
- (1,3,0): 21, 21, 21, 21, 21, 21, 21, 41, 41, 41, 41, 41, 41, 41,
- (1,4,0): 21, 21, 21, 21, 21, 21, 21, 41, 41, 41, 41, 41, 41, 41,
- (1,5,0): 21, 21, 21, 21, 21, 21, 21, 51, 51, 51, 51, 51, 51, 51,
- (1,6,0): 31, 31, 31, 31, 31, 31, 31, 51, 51, 51, 51, 51, 51, 51,
- (1,7,0): 31, 31, 31, 31, 31, 31, 31, 51, 51, 51, 51, 51, 51, 51,
- (2,0,0): 12, 12, 12, 12, 12, 12, 12, 42, 42, 42, 42, 42, 42, 42,
- (2,1,0): 12, 12, 12, 12, 12, 12, 12, 42, 42, 42, 42, 42, 42, 42,
- (2,2,0): 22, 22, 22, 22, 22, 22, 22, 42, 42, 42, 42, 42, 42, 42,
- (2,3,0): 22, 22, 22, 22, 22, 22, 22, 42, 42, 42, 42, 42, 42, 42,
- (2,4,0): 22, 22, 22, 22, 22, 22, 22, 42, 42, 42, 42, 42, 42, 42,
- (2,5,0): 22, 22, 22, 22, 22, 22, 22, 52, 52, 52, 52, 52, 52, 52,
- (2,6,0): 32, 32, 32, 32, 32, 32, 32, 52, 52, 52, 52, 52, 52, 52,
- (2,7,0): 32, 32, 32, 32, 32, 32, 32, 52, 52, 52, 52, 52, 52, 52,
- (3,0,0): 13, 13, 13, 13, 13, 13, 13, 43, 43, 43, 43, 43, 43, 43,
- (3,1,0): 13, 13, 13, 13, 13, 13, 13, 43, 43, 43, 43, 43, 43, 43,
- (3,2,0): 23, 23, 23, 23, 23, 23, 23, 43, 43, 43, 43, 43, 43, 43,
- (3,3,0): 23, 23, 23, 23, 23, 23, 23, 43, 43, 43, 43, 43, 43, 43,
- (3,4,0): 23, 23, 23, 23, 23, 23, 23, 43, 43, 43, 43, 43, 43, 43,
- (3,5,0): 23, 23, 23, 23, 23, 23, 23, 53, 53, 53, 53, 53, 53, 53,
- (3,6,0): 33, 33, 33, 33, 33, 33, 33, 53, 53, 53, 53, 53, 53, 53,
- (3,7,0): 33, 33, 33, 33, 33, 33, 33, 53, 53, 53, 53, 53, 53, 53,
- (4,0,0): 14, 14, 14, 14, 14, 14, 14, 44, 44, 44, 44, 44, 44, 44,
- (4,1,0): 14, 14, 14, 14, 14, 14, 14, 44, 44, 44, 44, 44, 44, 44,
- (4,2,0): 24, 24, 24, 24, 24, 24, 24, 44, 44, 44, 44, 44, 44, 44,
- (4,3,0): 24, 24, 24, 24, 24, 24, 24, 44, 44, 44, 44, 44, 44, 44,
- (4,4,0): 24, 24, 24, 24, 24, 24, 24, 44, 44, 44, 44, 44, 44, 44,
- (4,5,0): 24, 24, 24, 24, 24, 24, 24, 54, 54, 54, 54, 54, 54, 54,
- (4,6,0): 34, 34, 34, 34, 34, 34, 34, 54, 54, 54, 54, 54, 54, 54,
- (4,7,0): 34, 34, 34, 34, 34, 34, 34, 54, 54, 54, 54, 54, 54, 54,
- (5,0,0): 15, 15, 15, 15, 15, 15, 15, 45, 45, 45, 45, 45, 45, 45,
- (5,1,0): 15, 15, 15, 15, 15, 15, 15, 45, 45, 45, 45, 45, 45, 45,
- (5,2,0): 25, 25, 25, 25, 25, 25, 25, 45, 45, 45, 45, 45, 45, 45,
- (5,3,0): 25, 25, 25, 25, 25, 25, 25, 45, 45, 45, 45, 45, 45, 45,
- (5,4,0): 25, 25, 25, 25, 25, 25, 25, 45, 45, 45, 45, 45, 45, 45,
- (5,5,0): 25, 25, 25, 25, 25, 25, 25, 55, 55, 55, 55, 55, 55, 55,
- (5,6,0): 35, 35, 35, 35, 35, 35, 35, 55, 55, 55, 55, 55, 55, 55,
- (5,7,0): 35, 35, 35, 35, 35, 35, 35, 55, 55, 55, 55, 55, 55, 55
- }
-}
-}
diff --git a/tools/h5repack/testfiles/3_1_vds.h5-vds_chunk2x5x8-v.ddl b/tools/h5repack/testfiles/3_1_vds.h5-vds_chunk2x5x8-v.ddl
deleted file mode 100644
index dcd172c..0000000
--- a/tools/h5repack/testfiles/3_1_vds.h5-vds_chunk2x5x8-v.ddl
+++ /dev/null
@@ -1,147 +0,0 @@
-HDF5 "out-vds_chunk2x5x8.3_1_vds.h5" {
-DATASET "vds_dset" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 5, 25, 8 ) / ( H5S_UNLIMITED, 25, 8 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 2, 5, 8 )
- SIZE 4800
- }
- FILTERS {
- NONE
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE -9
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- DATA {
- (0,0,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (0,1,0): 10, 10, 10, 10, 10, 10, 10, 10,
- (0,2,0): 10, 10, 10, 10, 10, 10, 10, 10,
- (0,3,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (0,4,0): 20, 20, 20, 20, 20, 20, 20, 20,
- (0,5,0): 20, 20, 20, 20, 20, 20, 20, 20,
- (0,6,0): 20, 20, 20, 20, 20, 20, 20, 20,
- (0,7,0): 20, 20, 20, 20, 20, 20, 20, 20,
- (0,8,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (0,9,0): 30, 30, 30, 30, 30, 30, 30, 30,
- (0,10,0): 30, 30, 30, 30, 30, 30, 30, 30,
- (0,11,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (0,12,0): 40, 40, 40, 40, 40, 40, 40, 40,
- (0,13,0): 40, 40, 40, 40, 40, 40, 40, 40,
- (0,14,0): 40, 40, 40, 40, 40, 40, 40, 40,
- (0,15,0): 40, 40, 40, 40, 40, 40, 40, 40,
- (0,16,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (0,17,0): 50, 50, 50, 50, 50, 50, 50, 50,
- (0,18,0): 50, 50, 50, 50, 50, 50, 50, 50,
- (0,19,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (0,20,0): 60, 60, 60, 60, 60, 60, 60, 60,
- (0,21,0): 60, 60, 60, 60, 60, 60, 60, 60,
- (0,22,0): 60, 60, 60, 60, 60, 60, 60, 60,
- (0,23,0): 60, 60, 60, 60, 60, 60, 60, 60,
- (0,24,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (1,0,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (1,1,0): 11, 11, 11, 11, 11, 11, 11, 11,
- (1,2,0): 11, 11, 11, 11, 11, 11, 11, 11,
- (1,3,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (1,4,0): 21, 21, 21, 21, 21, 21, 21, 21,
- (1,5,0): 21, 21, 21, 21, 21, 21, 21, 21,
- (1,6,0): 21, 21, 21, 21, 21, 21, 21, 21,
- (1,7,0): 21, 21, 21, 21, 21, 21, 21, 21,
- (1,8,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (1,9,0): 31, 31, 31, 31, 31, 31, 31, 31,
- (1,10,0): 31, 31, 31, 31, 31, 31, 31, 31,
- (1,11,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (1,12,0): 41, 41, 41, 41, 41, 41, 41, 41,
- (1,13,0): 41, 41, 41, 41, 41, 41, 41, 41,
- (1,14,0): 41, 41, 41, 41, 41, 41, 41, 41,
- (1,15,0): 41, 41, 41, 41, 41, 41, 41, 41,
- (1,16,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (1,17,0): 51, 51, 51, 51, 51, 51, 51, 51,
- (1,18,0): 51, 51, 51, 51, 51, 51, 51, 51,
- (1,19,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (1,20,0): 61, 61, 61, 61, 61, 61, 61, 61,
- (1,21,0): 61, 61, 61, 61, 61, 61, 61, 61,
- (1,22,0): 61, 61, 61, 61, 61, 61, 61, 61,
- (1,23,0): 61, 61, 61, 61, 61, 61, 61, 61,
- (1,24,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (2,0,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (2,1,0): 12, 12, 12, 12, 12, 12, 12, 12,
- (2,2,0): 12, 12, 12, 12, 12, 12, 12, 12,
- (2,3,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (2,4,0): 22, 22, 22, 22, 22, 22, 22, 22,
- (2,5,0): 22, 22, 22, 22, 22, 22, 22, 22,
- (2,6,0): 22, 22, 22, 22, 22, 22, 22, 22,
- (2,7,0): 22, 22, 22, 22, 22, 22, 22, 22,
- (2,8,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (2,9,0): 32, 32, 32, 32, 32, 32, 32, 32,
- (2,10,0): 32, 32, 32, 32, 32, 32, 32, 32,
- (2,11,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (2,12,0): 42, 42, 42, 42, 42, 42, 42, 42,
- (2,13,0): 42, 42, 42, 42, 42, 42, 42, 42,
- (2,14,0): 42, 42, 42, 42, 42, 42, 42, 42,
- (2,15,0): 42, 42, 42, 42, 42, 42, 42, 42,
- (2,16,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (2,17,0): 52, 52, 52, 52, 52, 52, 52, 52,
- (2,18,0): 52, 52, 52, 52, 52, 52, 52, 52,
- (2,19,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (2,20,0): 62, 62, 62, 62, 62, 62, 62, 62,
- (2,21,0): 62, 62, 62, 62, 62, 62, 62, 62,
- (2,22,0): 62, 62, 62, 62, 62, 62, 62, 62,
- (2,23,0): 62, 62, 62, 62, 62, 62, 62, 62,
- (2,24,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (3,0,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (3,1,0): 13, 13, 13, 13, 13, 13, 13, 13,
- (3,2,0): 13, 13, 13, 13, 13, 13, 13, 13,
- (3,3,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (3,4,0): 23, 23, 23, 23, 23, 23, 23, 23,
- (3,5,0): 23, 23, 23, 23, 23, 23, 23, 23,
- (3,6,0): 23, 23, 23, 23, 23, 23, 23, 23,
- (3,7,0): 23, 23, 23, 23, 23, 23, 23, 23,
- (3,8,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (3,9,0): 33, 33, 33, 33, 33, 33, 33, 33,
- (3,10,0): 33, 33, 33, 33, 33, 33, 33, 33,
- (3,11,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (3,12,0): 43, 43, 43, 43, 43, 43, 43, 43,
- (3,13,0): 43, 43, 43, 43, 43, 43, 43, 43,
- (3,14,0): 43, 43, 43, 43, 43, 43, 43, 43,
- (3,15,0): 43, 43, 43, 43, 43, 43, 43, 43,
- (3,16,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (3,17,0): 53, 53, 53, 53, 53, 53, 53, 53,
- (3,18,0): 53, 53, 53, 53, 53, 53, 53, 53,
- (3,19,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (3,20,0): 63, 63, 63, 63, 63, 63, 63, 63,
- (3,21,0): 63, 63, 63, 63, 63, 63, 63, 63,
- (3,22,0): 63, 63, 63, 63, 63, 63, 63, 63,
- (3,23,0): 63, 63, 63, 63, 63, 63, 63, 63,
- (3,24,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (4,0,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (4,1,0): 14, 14, 14, 14, 14, 14, 14, 14,
- (4,2,0): 14, 14, 14, 14, 14, 14, 14, 14,
- (4,3,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (4,4,0): 24, 24, 24, 24, 24, 24, 24, 24,
- (4,5,0): 24, 24, 24, 24, 24, 24, 24, 24,
- (4,6,0): 24, 24, 24, 24, 24, 24, 24, 24,
- (4,7,0): 24, 24, 24, 24, 24, 24, 24, 24,
- (4,8,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (4,9,0): 34, 34, 34, 34, 34, 34, 34, 34,
- (4,10,0): 34, 34, 34, 34, 34, 34, 34, 34,
- (4,11,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (4,12,0): 44, 44, 44, 44, 44, 44, 44, 44,
- (4,13,0): 44, 44, 44, 44, 44, 44, 44, 44,
- (4,14,0): 44, 44, 44, 44, 44, 44, 44, 44,
- (4,15,0): 44, 44, 44, 44, 44, 44, 44, 44,
- (4,16,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (4,17,0): 54, 54, 54, 54, 54, 54, 54, 54,
- (4,18,0): 54, 54, 54, 54, 54, 54, 54, 54,
- (4,19,0): -9, -9, -9, -9, -9, -9, -9, -9,
- (4,20,0): 64, 64, 64, 64, 64, 64, 64, 64,
- (4,21,0): 64, 64, 64, 64, 64, 64, 64, 64,
- (4,22,0): 64, 64, 64, 64, 64, 64, 64, 64,
- (4,23,0): 64, 64, 64, 64, 64, 64, 64, 64,
- (4,24,0): -9, -9, -9, -9, -9, -9, -9, -9
- }
-}
-}
diff --git a/tools/h5repack/testfiles/4_vds.h5-vds_compa-v.ddl b/tools/h5repack/testfiles/4_vds.h5-vds_compa-v.ddl
deleted file mode 100644
index 1e8927c..0000000
--- a/tools/h5repack/testfiles/4_vds.h5-vds_compa-v.ddl
+++ /dev/null
@@ -1,58 +0,0 @@
-HDF5 "out-vds_compa.4_vds.h5" {
-DATASET "vds_dset" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 9, 4, 4 ) / ( 9, 4, 4 ) }
- STORAGE_LAYOUT {
- COMPACT
- SIZE 576
- }
- FILTERS {
- NONE
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE -9
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_EARLY
- }
- DATA {
- (0,0,0): 10, 10, 10, 10,
- (0,1,0): 10, 10, 10, 10,
- (0,2,0): 10, 10, 10, 10,
- (0,3,0): 10, 10, 10, 10,
- (1,0,0): 11, 11, 11, 11,
- (1,1,0): 11, 11, 11, 11,
- (1,2,0): 11, 11, 11, 11,
- (1,3,0): 11, 11, 11, 11,
- (2,0,0): 12, 12, 12, 12,
- (2,1,0): 12, 12, 12, 12,
- (2,2,0): 12, 12, 12, 12,
- (2,3,0): 12, 12, 12, 12,
- (3,0,0): 20, 20, 20, 20,
- (3,1,0): 20, 20, 20, 20,
- (3,2,0): 20, 20, 20, 20,
- (3,3,0): 20, 20, 20, 20,
- (4,0,0): 21, 21, 21, 21,
- (4,1,0): 21, 21, 21, 21,
- (4,2,0): 21, 21, 21, 21,
- (4,3,0): 21, 21, 21, 21,
- (5,0,0): 22, 22, 22, 22,
- (5,1,0): 22, 22, 22, 22,
- (5,2,0): 22, 22, 22, 22,
- (5,3,0): 22, 22, 22, 22,
- (6,0,0): 30, 30, 30, 30,
- (6,1,0): 30, 30, 30, 30,
- (6,2,0): 30, 30, 30, 30,
- (6,3,0): 30, 30, 30, 30,
- (7,0,0): 31, 31, 31, 31,
- (7,1,0): 31, 31, 31, 31,
- (7,2,0): 31, 31, 31, 31,
- (7,3,0): 31, 31, 31, 31,
- (8,0,0): 32, 32, 32, 32,
- (8,1,0): 32, 32, 32, 32,
- (8,2,0): 32, 32, 32, 32,
- (8,3,0): 32, 32, 32, 32
- }
-}
-}
diff --git a/tools/h5repack/testfiles/4_vds.h5-vds_conti-v.ddl b/tools/h5repack/testfiles/4_vds.h5-vds_conti-v.ddl
deleted file mode 100644
index c499b35..0000000
--- a/tools/h5repack/testfiles/4_vds.h5-vds_conti-v.ddl
+++ /dev/null
@@ -1,59 +0,0 @@
-HDF5 "out-vds_conti.4_vds.h5" {
-DATASET "vds_dset" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 9, 4, 4 ) / ( 9, 4, 4 ) }
- STORAGE_LAYOUT {
- CONTIGUOUS
- SIZE 576
- OFFSET 2144
- }
- FILTERS {
- NONE
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE -9
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_LATE
- }
- DATA {
- (0,0,0): 10, 10, 10, 10,
- (0,1,0): 10, 10, 10, 10,
- (0,2,0): 10, 10, 10, 10,
- (0,3,0): 10, 10, 10, 10,
- (1,0,0): 11, 11, 11, 11,
- (1,1,0): 11, 11, 11, 11,
- (1,2,0): 11, 11, 11, 11,
- (1,3,0): 11, 11, 11, 11,
- (2,0,0): 12, 12, 12, 12,
- (2,1,0): 12, 12, 12, 12,
- (2,2,0): 12, 12, 12, 12,
- (2,3,0): 12, 12, 12, 12,
- (3,0,0): 20, 20, 20, 20,
- (3,1,0): 20, 20, 20, 20,
- (3,2,0): 20, 20, 20, 20,
- (3,3,0): 20, 20, 20, 20,
- (4,0,0): 21, 21, 21, 21,
- (4,1,0): 21, 21, 21, 21,
- (4,2,0): 21, 21, 21, 21,
- (4,3,0): 21, 21, 21, 21,
- (5,0,0): 22, 22, 22, 22,
- (5,1,0): 22, 22, 22, 22,
- (5,2,0): 22, 22, 22, 22,
- (5,3,0): 22, 22, 22, 22,
- (6,0,0): 30, 30, 30, 30,
- (6,1,0): 30, 30, 30, 30,
- (6,2,0): 30, 30, 30, 30,
- (6,3,0): 30, 30, 30, 30,
- (7,0,0): 31, 31, 31, 31,
- (7,1,0): 31, 31, 31, 31,
- (7,2,0): 31, 31, 31, 31,
- (7,3,0): 31, 31, 31, 31,
- (8,0,0): 32, 32, 32, 32,
- (8,1,0): 32, 32, 32, 32,
- (8,2,0): 32, 32, 32, 32,
- (8,3,0): 32, 32, 32, 32
- }
-}
-}
diff --git a/tools/h5repack/testfiles/README b/tools/h5repack/testfiles/README
deleted file mode 100644
index 4096dee..0000000
--- a/tools/h5repack/testfiles/README
+++ /dev/null
@@ -1,5 +0,0 @@
-h5repack_nested_8bit_enum_deflated.h5:
-h5repack_nested_8bit_enum.h5:
- enuberated 8bit type nested in compount type. Original file provided
- by a user (HDFFV-8667) as a test file. Used h5copy to extract only the
- Compound type dataset. The non-deflated version is produced by h5repack.
diff --git a/tools/h5repack/testfiles/deflate_limit.h5repack_layout.h5.ddl b/tools/h5repack/testfiles/deflate_limit.h5repack_layout.h5.ddl
deleted file mode 100644
index 75f54fa..0000000
--- a/tools/h5repack/testfiles/deflate_limit.h5repack_layout.h5.ddl
+++ /dev/null
@@ -1,130 +0,0 @@
-HDF5 "out-deflate_limit.h5repack_layout.h5" {
-GROUP "/" {
- DATASET "dset1" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 40, 20 )
- SIZE 1150 (2.783:1 COMPRESSION)
- }
- FILTERS {
- COMPRESSION DEFLATE { LEVEL 1 }
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE H5D_FILL_VALUE_DEFAULT
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- }
- DATASET "dset2" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 40, 20 )
- SIZE 1150 (2.783:1 COMPRESSION)
- }
- FILTERS {
- COMPRESSION DEFLATE { LEVEL 1 }
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE H5D_FILL_VALUE_DEFAULT
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- }
- DATASET "dset3" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 40, 20 )
- SIZE 1150 (2.783:1 COMPRESSION)
- }
- FILTERS {
- COMPRESSION DEFLATE { LEVEL 1 }
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE H5D_FILL_VALUE_DEFAULT
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- }
- DATASET "dset4" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 40, 20 )
- SIZE 1150 (2.783:1 COMPRESSION)
- }
- FILTERS {
- COMPRESSION DEFLATE { LEVEL 1 }
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE H5D_FILL_VALUE_DEFAULT
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- }
- DATASET "dset_chunk" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 20, 10 )
- SIZE 1283 (2.494:1 COMPRESSION)
- }
- FILTERS {
- COMPRESSION DEFLATE { LEVEL 1 }
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE H5D_FILL_VALUE_DEFAULT
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- }
- DATASET "dset_compact" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 40, 20 )
- SIZE 1150 (2.783:1 COMPRESSION)
- }
- FILTERS {
- COMPRESSION DEFLATE { LEVEL 1 }
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE H5D_FILL_VALUE_DEFAULT
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- }
- DATASET "dset_contiguous" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 40, 20 )
- SIZE 1150 (2.783:1 COMPRESSION)
- }
- FILTERS {
- COMPRESSION DEFLATE { LEVEL 1 }
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE H5D_FILL_VALUE_DEFAULT
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- }
-}
-}
diff --git a/tools/h5repack/testfiles/h5repack-help.txt b/tools/h5repack/testfiles/h5repack-help.txt
deleted file mode 100644
index 049e27d..0000000
--- a/tools/h5repack/testfiles/h5repack-help.txt
+++ /dev/null
@@ -1,125 +0,0 @@
-usage: h5repack [OPTIONS] file1 file2
- file1 Input HDF5 File
- file2 Output HDF5 File
- OPTIONS
- -h, --help Print a usage message and exit
- -v, --verbose Verbose mode, print object information
- -V, --version Print version number and exit
- -n, --native Use a native HDF5 type when repacking
- -L, --latest Use latest version of file format
- -c L1, --compact=L1 Maximum number of links in header messages
- -d L2, --indexed=L2 Minimum number of links in the indexed format
- -s S[:F], --ssize=S[:F] Shared object header message minimum size
- -m M, --minimum=M Do not apply the filter to datasets smaller than M
- -e E, --file=E Name of file E with the -f and -l options
- -u U, --ublock=U Name of file U with user block data to be added
- -b B, --block=B Size of user block to be added
- -M A, --metadata_block_size=A Metadata block size for H5Pset_meta_block_size
- -t T, --threshold=T Threshold value for H5Pset_alignment
- -a A, --alignment=A Alignment value for H5Pset_alignment
- -f FILT, --filter=FILT Filter type
- -l LAYT, --layout=LAYT Layout type
- -S FS_STRGY, --fs_strategy=FS_STRGY File space management strategy
- -T FS_THRD, --fs_threshold=FS_THRD Free-space section threshold
-
- M - is an integer greater than 1, size of dataset in bytes (default is 0)
- E - is a filename.
- S - is an integer
- U - is a filename.
- T - is an integer
- A - is an integer greater than zero
- B - is the user block size, any value that is 512 or greater and is
- a power of 2 (1024 default)
- F - is the shared object header message type, any of <dspace|dtype|fill|
- pline|attr>. If F is not specified, S applies to all messages
-
- --enable-error-stack Prints messages from the HDF5 error stack as they
- occur.
-
- FS_STRGY is the file space management strategy to use for the output file.
- It is a string as listed below:
- ALL_PERSIST - Use persistent free-space managers, aggregators and virtual file driver
- for file space allocation
- ALL - Use non-persistent free-space managers, aggregators and virtual file driver
- for file space allocation
- AGGR_VFD - Use aggregators and virtual file driver for file space allocation
- VFD - Use virtual file driver for file space allocation
-
- FS_THRD is the free-space section threshold to use for the output file.
- It is the minimum size (in bytes) of free-space sections to be tracked
- by the the library's free-space managers.
-
- FILT - is a string with the format:
-
- <list of objects>:<name of filter>=<filter parameters>
-
- <list of objects> is a comma separated list of object names, meaning apply
- compression only to those objects. If no names are specified, the filter
- is applied to all objects
- <name of filter> can be:
- GZIP, to apply the HDF5 GZIP filter (GZIP compression)
- SZIP, to apply the HDF5 SZIP filter (SZIP compression)
- SHUF, to apply the HDF5 shuffle filter
- FLET, to apply the HDF5 checksum filter
- NBIT, to apply the HDF5 NBIT filter (NBIT compression)
- SOFF, to apply the HDF5 Scale/Offset filter
- UD, to apply a user defined filter
- NONE, to remove all filters
- <filter parameters> is optional filter parameter information
- GZIP=<deflation level> from 1-9
- SZIP=<pixels per block,coding> pixels per block is a even number in
- 2-32 and coding method is either EC or NN
- SHUF (no parameter)
- FLET (no parameter)
- NBIT (no parameter)
- SOFF=<scale_factor,scale_type> scale_factor is an integer and scale_type
- is either IN or DS
- UD=<filter_number,cd_value_count,value_1[,value_2,...,value_N]>
- required values for filter_number,cd_value_count,value_1
- optional values for value_2 to value_N
- NONE (no parameter)
-
- LAYT - is a string with the format:
-
- <list of objects>:<layout type>=<layout parameters>
-
- <list of objects> is a comma separated list of object names, meaning that
- layout information is supplied for those objects. If no names are
- specified, the layout type is applied to all objects
- <layout type> can be:
- CHUNK, to apply chunking layout
- COMPA, to apply compact layout
- CONTI, to apply contiguous layout
- <layout parameters> is optional layout information
- CHUNK=DIM[xDIM...xDIM], the chunk size of each dimension
- COMPA (no parameter)
- CONTI (no parameter)
-
-Examples of use:
-
-1) h5repack -v -f GZIP=1 file1 file2
-
- GZIP compression with level 1 to all objects
-
-2) h5repack -v -f dset1:SZIP=8,NN file1 file2
-
- SZIP compression with 8 pixels per block and NN coding method to object dset1
-
-3) h5repack -v -l dset1,dset2:CHUNK=20x10 -f dset3,dset4,dset5:NONE file1 file2
-
- Chunked layout, with a layout size of 20x10, to objects dset1 and dset2
- and remove filters to objects dset3, dset4, dset5
-
-4) h5repack -L -c 10 -s 20:dtype file1 file2
-
- Using latest file format with maximum compact group size of 10 and
- and minimum shared datatype size of 20
-
-5) h5repack -f SHUF -f GZIP=1 file1 file2
-
- Add both filters SHUF and GZIP in this order to all datasets
-
-6) h5repack -f UD=307,1,9 file1 file2
-
- Add bzip2 filter to all datasets
-
diff --git a/tools/h5repack/testfiles/h5repack.info b/tools/h5repack/testfiles/h5repack.info
deleted file mode 100644
index 216948d..0000000
--- a/tools/h5repack/testfiles/h5repack.info
+++ /dev/null
@@ -1 +0,0 @@
--l dset1:CHUNK=20x20 -f dset1,dset2:GZIP=1
diff --git a/tools/h5repack/testfiles/h5repack_attr.h5 b/tools/h5repack/testfiles/h5repack_attr.h5
deleted file mode 100644
index 80df0be..0000000
--- a/tools/h5repack/testfiles/h5repack_attr.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_attr_refs.h5 b/tools/h5repack/testfiles/h5repack_attr_refs.h5
deleted file mode 100644
index 1b0ca34..0000000
--- a/tools/h5repack/testfiles/h5repack_attr_refs.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_deflate.h5 b/tools/h5repack/testfiles/h5repack_deflate.h5
deleted file mode 100644
index 4988491..0000000
--- a/tools/h5repack/testfiles/h5repack_deflate.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_early.h5 b/tools/h5repack/testfiles/h5repack_early.h5
deleted file mode 100644
index d9a7ece..0000000
--- a/tools/h5repack/testfiles/h5repack_early.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_ext.bin b/tools/h5repack/testfiles/h5repack_ext.bin
deleted file mode 100644
index f858094..0000000
--- a/tools/h5repack/testfiles/h5repack_ext.bin
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_ext.h5 b/tools/h5repack/testfiles/h5repack_ext.h5
deleted file mode 100644
index 8518b5b..0000000
--- a/tools/h5repack/testfiles/h5repack_ext.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_fill.h5 b/tools/h5repack/testfiles/h5repack_fill.h5
deleted file mode 100644
index ac40089..0000000
--- a/tools/h5repack/testfiles/h5repack_fill.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_filters.h5 b/tools/h5repack/testfiles/h5repack_filters.h5
deleted file mode 100644
index eabade8..0000000
--- a/tools/h5repack/testfiles/h5repack_filters.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_filters.h5-gzip_verbose_filters.tst b/tools/h5repack/testfiles/h5repack_filters.h5-gzip_verbose_filters.tst
deleted file mode 100644
index 36e65b9..0000000
--- a/tools/h5repack/testfiles/h5repack_filters.h5-gzip_verbose_filters.tst
+++ /dev/null
@@ -1,13 +0,0 @@
-Objects to modify layout are...
-Objects to apply filter are...
- </dset_deflate> with GZIP filter
- </dset_deflate>...Found
------------------------------------------
- Type Filter (Compression) Name
------------------------------------------
- group /
- dset /dset_all
- dset GZIP (0.995:1) /dset_deflate
- dset /dset_fletcher32
- dset /dset_nbit
- dset /dset_shuffle
diff --git a/tools/h5repack/testfiles/h5repack_fletcher.h5 b/tools/h5repack/testfiles/h5repack_fletcher.h5
deleted file mode 100644
index 16ca4ef..0000000
--- a/tools/h5repack/testfiles/h5repack_fletcher.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_hlink.h5 b/tools/h5repack/testfiles/h5repack_hlink.h5
deleted file mode 100644
index 80c0fcc..0000000
--- a/tools/h5repack/testfiles/h5repack_hlink.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_layout.UD.h5 b/tools/h5repack/testfiles/h5repack_layout.UD.h5
deleted file mode 100644
index caf2024..0000000
--- a/tools/h5repack/testfiles/h5repack_layout.UD.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_layout.UD.h5-plugin_none.ddl b/tools/h5repack/testfiles/h5repack_layout.UD.h5-plugin_none.ddl
deleted file mode 100644
index 66c4c69..0000000
--- a/tools/h5repack/testfiles/h5repack_layout.UD.h5-plugin_none.ddl
+++ /dev/null
@@ -1,130 +0,0 @@
-HDF5 "out-plugin_none.h5repack_layout.UD.h5" {
-GROUP "/" {
- DATASET "dset1" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 40, 20 )
- SIZE 3200
- }
- FILTERS {
- NONE
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE H5D_FILL_VALUE_DEFAULT
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- }
- DATASET "dset2" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 40, 20 )
- SIZE 3200
- }
- FILTERS {
- NONE
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE H5D_FILL_VALUE_DEFAULT
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- }
- DATASET "dset3" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 40, 20 )
- SIZE 3200
- }
- FILTERS {
- NONE
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE H5D_FILL_VALUE_DEFAULT
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- }
- DATASET "dset4" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 40, 20 )
- SIZE 3200
- }
- FILTERS {
- NONE
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE H5D_FILL_VALUE_DEFAULT
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- }
- DATASET "dset_chunk" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, H5S_UNLIMITED ) }
- STORAGE_LAYOUT {
- CHUNKED ( 20, 10 )
- SIZE 3200
- }
- FILTERS {
- NONE
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE H5D_FILL_VALUE_DEFAULT
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- }
- DATASET "dset_compact" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 40, 20 )
- SIZE 3200
- }
- FILTERS {
- NONE
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE H5D_FILL_VALUE_DEFAULT
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- }
- DATASET "dset_contiguous" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 40, 20 )
- SIZE 3200
- }
- FILTERS {
- NONE
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE H5D_FILL_VALUE_DEFAULT
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- }
-}
-}
diff --git a/tools/h5repack/testfiles/h5repack_layout.h5 b/tools/h5repack/testfiles/h5repack_layout.h5
deleted file mode 100644
index 4e53766..0000000
--- a/tools/h5repack/testfiles/h5repack_layout.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_layout.h5-dset2_chunk_20x10-errstk.tst b/tools/h5repack/testfiles/h5repack_layout.h5-dset2_chunk_20x10-errstk.tst
deleted file mode 100644
index 95cc4c6..0000000
--- a/tools/h5repack/testfiles/h5repack_layout.h5-dset2_chunk_20x10-errstk.tst
+++ /dev/null
@@ -1,38 +0,0 @@
-HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
- #000: (file name) line (number) in H5Dcreate2(): unable to create dataset
- major: Dataset
- minor: Unable to initialize object
- #001: (file name) line (number) in H5D__create_named(): unable to create and link to dataset
- major: Dataset
- minor: Unable to initialize object
- #002: (file name) line (number) in H5L_link_object(): unable to create new link to object
- major: Links
- minor: Unable to initialize object
- #003: (file name) line (number) in H5L_create_real(): can't insert link
- major: Symbol table
- minor: Unable to insert object
- #004: (file name) line (number) in H5G_traverse(): internal path traversal failed
- major: Symbol table
- minor: Object not found
- #005: (file name) line (number) in H5G_traverse_real(): traversal operator failed
- major: Symbol table
- minor: Callback failed
- #006: (file name) line (number) in H5L_link_cb(): unable to create object
- major: Object header
- minor: Unable to initialize object
- #007: (file name) line (number) in H5O_obj_create(): unable to open object
- major: Object header
- minor: Can't open object
- #008: (file name) line (number) in H5O__dset_create(): unable to create dataset
- major: Dataset
- minor: Unable to initialize object
- #009: (file name) line (number) in H5D__create(): unable to construct layout information
- major: Dataset
- minor: Unable to initialize object
- #010: (file name) line (number) in H5D__chunk_construct(): dimensionality of chunks doesn't match the dataspace
- major: Dataset
- minor: Bad value
-H5tools-DIAG: Error detected in HDF5:tools (version (number)) thread (IDs):
- #000: (file name) line (number) in do_copy_objects(): H5Dcreate2 failed
- major: Failure in tools library
- minor: error in function
diff --git a/tools/h5repack/testfiles/h5repack_layout.h5-plugin_test.ddl b/tools/h5repack/testfiles/h5repack_layout.h5-plugin_test.ddl
deleted file mode 100644
index a8b4562..0000000
--- a/tools/h5repack/testfiles/h5repack_layout.h5-plugin_test.ddl
+++ /dev/null
@@ -1,158 +0,0 @@
-HDF5 "out-plugin_test.h5repack_layout.h5" {
-GROUP "/" {
- DATASET "dset1" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 40, 20 )
- SIZE 3200 (1.000:1 COMPRESSION)
- }
- FILTERS {
- USER_DEFINED_FILTER {
- FILTER_ID 257
- COMMENT dynlib1
- PARAMS { 9 }
- }
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE H5D_FILL_VALUE_DEFAULT
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- }
- DATASET "dset2" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 40, 20 )
- SIZE 3200 (1.000:1 COMPRESSION)
- }
- FILTERS {
- USER_DEFINED_FILTER {
- FILTER_ID 257
- COMMENT dynlib1
- PARAMS { 9 }
- }
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE H5D_FILL_VALUE_DEFAULT
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- }
- DATASET "dset3" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 40, 20 )
- SIZE 3200 (1.000:1 COMPRESSION)
- }
- FILTERS {
- USER_DEFINED_FILTER {
- FILTER_ID 257
- COMMENT dynlib1
- PARAMS { 9 }
- }
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE H5D_FILL_VALUE_DEFAULT
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- }
- DATASET "dset4" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 40, 20 )
- SIZE 3200 (1.000:1 COMPRESSION)
- }
- FILTERS {
- USER_DEFINED_FILTER {
- FILTER_ID 257
- COMMENT dynlib1
- PARAMS { 9 }
- }
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE H5D_FILL_VALUE_DEFAULT
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- }
- DATASET "dset_chunk" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 20, 10 )
- SIZE 3200 (1.000:1 COMPRESSION)
- }
- FILTERS {
- USER_DEFINED_FILTER {
- FILTER_ID 257
- COMMENT dynlib1
- PARAMS { 9 }
- }
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE H5D_FILL_VALUE_DEFAULT
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- }
- DATASET "dset_compact" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 40, 20 )
- SIZE 3200 (1.000:1 COMPRESSION)
- }
- FILTERS {
- USER_DEFINED_FILTER {
- FILTER_ID 257
- COMMENT dynlib1
- PARAMS { 9 }
- }
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE H5D_FILL_VALUE_DEFAULT
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- }
- DATASET "dset_contiguous" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- STORAGE_LAYOUT {
- CHUNKED ( 40, 20 )
- SIZE 3200 (1.000:1 COMPRESSION)
- }
- FILTERS {
- USER_DEFINED_FILTER {
- FILTER_ID 257
- COMMENT dynlib1
- PARAMS { 9 }
- }
- }
- FILLVALUE {
- FILL_TIME H5D_FILL_TIME_IFSET
- VALUE H5D_FILL_VALUE_DEFAULT
- }
- ALLOCATION_TIME {
- H5D_ALLOC_TIME_INCR
- }
- }
-}
-}
diff --git a/tools/h5repack/testfiles/h5repack_layout.h5-plugin_zero.tst b/tools/h5repack/testfiles/h5repack_layout.h5-plugin_zero.tst
deleted file mode 100644
index 0993d5b..0000000
--- a/tools/h5repack/testfiles/h5repack_layout.h5-plugin_zero.tst
+++ /dev/null
@@ -1,9 +0,0 @@
-Objects to modify layout are...
-Objects to apply filter are...
- User Defined 250
-Making file <out-plugin_zero.h5repack_layout.h5>...
------------------------------------------
- Type Filter (Compression) Name
------------------------------------------
- group /
-h5repack error: <h5repack_layout.h5>: Could not copy data to: out-plugin_zero.h5repack_layout.h5
diff --git a/tools/h5repack/testfiles/h5repack_layout.h5.ddl b/tools/h5repack/testfiles/h5repack_layout.h5.ddl
deleted file mode 100644
index 00c74f4..0000000
--- a/tools/h5repack/testfiles/h5repack_layout.h5.ddl
+++ /dev/null
@@ -1,606 +0,0 @@
-HDF5 "h5repack_layout.h5" {
-GROUP "/" {
- DATASET "dset1" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- DATA {
- (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- (0,18): 18, 19,
- (1,0): 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- (1,16): 36, 37, 38, 39,
- (2,0): 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- (2,16): 56, 57, 58, 59,
- (3,0): 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- (3,16): 76, 77, 78, 79,
- (4,0): 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- (4,16): 96, 97, 98, 99,
- (5,0): 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- (5,13): 113, 114, 115, 116, 117, 118, 119,
- (6,0): 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
- (6,13): 133, 134, 135, 136, 137, 138, 139,
- (7,0): 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- (7,13): 153, 154, 155, 156, 157, 158, 159,
- (8,0): 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
- (8,13): 173, 174, 175, 176, 177, 178, 179,
- (9,0): 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- (9,13): 193, 194, 195, 196, 197, 198, 199,
- (10,0): 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- (10,12): 212, 213, 214, 215, 216, 217, 218, 219,
- (11,0): 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- (11,12): 232, 233, 234, 235, 236, 237, 238, 239,
- (12,0): 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- (12,12): 252, 253, 254, 255, 256, 257, 258, 259,
- (13,0): 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- (13,12): 272, 273, 274, 275, 276, 277, 278, 279,
- (14,0): 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- (14,12): 292, 293, 294, 295, 296, 297, 298, 299,
- (15,0): 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- (15,12): 312, 313, 314, 315, 316, 317, 318, 319,
- (16,0): 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- (16,12): 332, 333, 334, 335, 336, 337, 338, 339,
- (17,0): 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- (17,12): 352, 353, 354, 355, 356, 357, 358, 359,
- (18,0): 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- (18,12): 372, 373, 374, 375, 376, 377, 378, 379,
- (19,0): 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
- (19,12): 392, 393, 394, 395, 396, 397, 398, 399,
- (20,0): 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- (20,12): 412, 413, 414, 415, 416, 417, 418, 419,
- (21,0): 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- (21,12): 432, 433, 434, 435, 436, 437, 438, 439,
- (22,0): 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
- (22,12): 452, 453, 454, 455, 456, 457, 458, 459,
- (23,0): 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- (23,12): 472, 473, 474, 475, 476, 477, 478, 479,
- (24,0): 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- (24,12): 492, 493, 494, 495, 496, 497, 498, 499,
- (25,0): 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- (25,12): 512, 513, 514, 515, 516, 517, 518, 519,
- (26,0): 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- (26,12): 532, 533, 534, 535, 536, 537, 538, 539,
- (27,0): 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- (27,12): 552, 553, 554, 555, 556, 557, 558, 559,
- (28,0): 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- (28,12): 572, 573, 574, 575, 576, 577, 578, 579,
- (29,0): 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- (29,12): 592, 593, 594, 595, 596, 597, 598, 599,
- (30,0): 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- (30,12): 612, 613, 614, 615, 616, 617, 618, 619,
- (31,0): 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- (31,12): 632, 633, 634, 635, 636, 637, 638, 639,
- (32,0): 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- (32,12): 652, 653, 654, 655, 656, 657, 658, 659,
- (33,0): 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- (33,12): 672, 673, 674, 675, 676, 677, 678, 679,
- (34,0): 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- (34,12): 692, 693, 694, 695, 696, 697, 698, 699,
- (35,0): 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- (35,12): 712, 713, 714, 715, 716, 717, 718, 719,
- (36,0): 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- (36,12): 732, 733, 734, 735, 736, 737, 738, 739,
- (37,0): 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- (37,12): 752, 753, 754, 755, 756, 757, 758, 759,
- (38,0): 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771,
- (38,12): 772, 773, 774, 775, 776, 777, 778, 779,
- (39,0): 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791,
- (39,12): 792, 793, 794, 795, 796, 797, 798, 799
- }
- }
- DATASET "dset2" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- DATA {
- (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- (0,18): 18, 19,
- (1,0): 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- (1,16): 36, 37, 38, 39,
- (2,0): 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- (2,16): 56, 57, 58, 59,
- (3,0): 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- (3,16): 76, 77, 78, 79,
- (4,0): 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- (4,16): 96, 97, 98, 99,
- (5,0): 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- (5,13): 113, 114, 115, 116, 117, 118, 119,
- (6,0): 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
- (6,13): 133, 134, 135, 136, 137, 138, 139,
- (7,0): 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- (7,13): 153, 154, 155, 156, 157, 158, 159,
- (8,0): 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
- (8,13): 173, 174, 175, 176, 177, 178, 179,
- (9,0): 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- (9,13): 193, 194, 195, 196, 197, 198, 199,
- (10,0): 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- (10,12): 212, 213, 214, 215, 216, 217, 218, 219,
- (11,0): 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- (11,12): 232, 233, 234, 235, 236, 237, 238, 239,
- (12,0): 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- (12,12): 252, 253, 254, 255, 256, 257, 258, 259,
- (13,0): 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- (13,12): 272, 273, 274, 275, 276, 277, 278, 279,
- (14,0): 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- (14,12): 292, 293, 294, 295, 296, 297, 298, 299,
- (15,0): 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- (15,12): 312, 313, 314, 315, 316, 317, 318, 319,
- (16,0): 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- (16,12): 332, 333, 334, 335, 336, 337, 338, 339,
- (17,0): 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- (17,12): 352, 353, 354, 355, 356, 357, 358, 359,
- (18,0): 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- (18,12): 372, 373, 374, 375, 376, 377, 378, 379,
- (19,0): 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
- (19,12): 392, 393, 394, 395, 396, 397, 398, 399,
- (20,0): 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- (20,12): 412, 413, 414, 415, 416, 417, 418, 419,
- (21,0): 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- (21,12): 432, 433, 434, 435, 436, 437, 438, 439,
- (22,0): 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
- (22,12): 452, 453, 454, 455, 456, 457, 458, 459,
- (23,0): 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- (23,12): 472, 473, 474, 475, 476, 477, 478, 479,
- (24,0): 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- (24,12): 492, 493, 494, 495, 496, 497, 498, 499,
- (25,0): 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- (25,12): 512, 513, 514, 515, 516, 517, 518, 519,
- (26,0): 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- (26,12): 532, 533, 534, 535, 536, 537, 538, 539,
- (27,0): 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- (27,12): 552, 553, 554, 555, 556, 557, 558, 559,
- (28,0): 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- (28,12): 572, 573, 574, 575, 576, 577, 578, 579,
- (29,0): 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- (29,12): 592, 593, 594, 595, 596, 597, 598, 599,
- (30,0): 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- (30,12): 612, 613, 614, 615, 616, 617, 618, 619,
- (31,0): 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- (31,12): 632, 633, 634, 635, 636, 637, 638, 639,
- (32,0): 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- (32,12): 652, 653, 654, 655, 656, 657, 658, 659,
- (33,0): 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- (33,12): 672, 673, 674, 675, 676, 677, 678, 679,
- (34,0): 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- (34,12): 692, 693, 694, 695, 696, 697, 698, 699,
- (35,0): 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- (35,12): 712, 713, 714, 715, 716, 717, 718, 719,
- (36,0): 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- (36,12): 732, 733, 734, 735, 736, 737, 738, 739,
- (37,0): 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- (37,12): 752, 753, 754, 755, 756, 757, 758, 759,
- (38,0): 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771,
- (38,12): 772, 773, 774, 775, 776, 777, 778, 779,
- (39,0): 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791,
- (39,12): 792, 793, 794, 795, 796, 797, 798, 799
- }
- }
- DATASET "dset3" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- DATA {
- (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- (0,18): 18, 19,
- (1,0): 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- (1,16): 36, 37, 38, 39,
- (2,0): 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- (2,16): 56, 57, 58, 59,
- (3,0): 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- (3,16): 76, 77, 78, 79,
- (4,0): 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- (4,16): 96, 97, 98, 99,
- (5,0): 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- (5,13): 113, 114, 115, 116, 117, 118, 119,
- (6,0): 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
- (6,13): 133, 134, 135, 136, 137, 138, 139,
- (7,0): 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- (7,13): 153, 154, 155, 156, 157, 158, 159,
- (8,0): 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
- (8,13): 173, 174, 175, 176, 177, 178, 179,
- (9,0): 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- (9,13): 193, 194, 195, 196, 197, 198, 199,
- (10,0): 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- (10,12): 212, 213, 214, 215, 216, 217, 218, 219,
- (11,0): 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- (11,12): 232, 233, 234, 235, 236, 237, 238, 239,
- (12,0): 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- (12,12): 252, 253, 254, 255, 256, 257, 258, 259,
- (13,0): 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- (13,12): 272, 273, 274, 275, 276, 277, 278, 279,
- (14,0): 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- (14,12): 292, 293, 294, 295, 296, 297, 298, 299,
- (15,0): 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- (15,12): 312, 313, 314, 315, 316, 317, 318, 319,
- (16,0): 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- (16,12): 332, 333, 334, 335, 336, 337, 338, 339,
- (17,0): 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- (17,12): 352, 353, 354, 355, 356, 357, 358, 359,
- (18,0): 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- (18,12): 372, 373, 374, 375, 376, 377, 378, 379,
- (19,0): 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
- (19,12): 392, 393, 394, 395, 396, 397, 398, 399,
- (20,0): 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- (20,12): 412, 413, 414, 415, 416, 417, 418, 419,
- (21,0): 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- (21,12): 432, 433, 434, 435, 436, 437, 438, 439,
- (22,0): 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
- (22,12): 452, 453, 454, 455, 456, 457, 458, 459,
- (23,0): 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- (23,12): 472, 473, 474, 475, 476, 477, 478, 479,
- (24,0): 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- (24,12): 492, 493, 494, 495, 496, 497, 498, 499,
- (25,0): 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- (25,12): 512, 513, 514, 515, 516, 517, 518, 519,
- (26,0): 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- (26,12): 532, 533, 534, 535, 536, 537, 538, 539,
- (27,0): 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- (27,12): 552, 553, 554, 555, 556, 557, 558, 559,
- (28,0): 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- (28,12): 572, 573, 574, 575, 576, 577, 578, 579,
- (29,0): 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- (29,12): 592, 593, 594, 595, 596, 597, 598, 599,
- (30,0): 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- (30,12): 612, 613, 614, 615, 616, 617, 618, 619,
- (31,0): 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- (31,12): 632, 633, 634, 635, 636, 637, 638, 639,
- (32,0): 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- (32,12): 652, 653, 654, 655, 656, 657, 658, 659,
- (33,0): 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- (33,12): 672, 673, 674, 675, 676, 677, 678, 679,
- (34,0): 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- (34,12): 692, 693, 694, 695, 696, 697, 698, 699,
- (35,0): 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- (35,12): 712, 713, 714, 715, 716, 717, 718, 719,
- (36,0): 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- (36,12): 732, 733, 734, 735, 736, 737, 738, 739,
- (37,0): 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- (37,12): 752, 753, 754, 755, 756, 757, 758, 759,
- (38,0): 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771,
- (38,12): 772, 773, 774, 775, 776, 777, 778, 779,
- (39,0): 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791,
- (39,12): 792, 793, 794, 795, 796, 797, 798, 799
- }
- }
- DATASET "dset4" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- DATA {
- (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- (0,18): 18, 19,
- (1,0): 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- (1,16): 36, 37, 38, 39,
- (2,0): 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- (2,16): 56, 57, 58, 59,
- (3,0): 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- (3,16): 76, 77, 78, 79,
- (4,0): 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- (4,16): 96, 97, 98, 99,
- (5,0): 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- (5,13): 113, 114, 115, 116, 117, 118, 119,
- (6,0): 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
- (6,13): 133, 134, 135, 136, 137, 138, 139,
- (7,0): 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- (7,13): 153, 154, 155, 156, 157, 158, 159,
- (8,0): 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
- (8,13): 173, 174, 175, 176, 177, 178, 179,
- (9,0): 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- (9,13): 193, 194, 195, 196, 197, 198, 199,
- (10,0): 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- (10,12): 212, 213, 214, 215, 216, 217, 218, 219,
- (11,0): 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- (11,12): 232, 233, 234, 235, 236, 237, 238, 239,
- (12,0): 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- (12,12): 252, 253, 254, 255, 256, 257, 258, 259,
- (13,0): 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- (13,12): 272, 273, 274, 275, 276, 277, 278, 279,
- (14,0): 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- (14,12): 292, 293, 294, 295, 296, 297, 298, 299,
- (15,0): 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- (15,12): 312, 313, 314, 315, 316, 317, 318, 319,
- (16,0): 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- (16,12): 332, 333, 334, 335, 336, 337, 338, 339,
- (17,0): 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- (17,12): 352, 353, 354, 355, 356, 357, 358, 359,
- (18,0): 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- (18,12): 372, 373, 374, 375, 376, 377, 378, 379,
- (19,0): 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
- (19,12): 392, 393, 394, 395, 396, 397, 398, 399,
- (20,0): 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- (20,12): 412, 413, 414, 415, 416, 417, 418, 419,
- (21,0): 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- (21,12): 432, 433, 434, 435, 436, 437, 438, 439,
- (22,0): 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
- (22,12): 452, 453, 454, 455, 456, 457, 458, 459,
- (23,0): 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- (23,12): 472, 473, 474, 475, 476, 477, 478, 479,
- (24,0): 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- (24,12): 492, 493, 494, 495, 496, 497, 498, 499,
- (25,0): 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- (25,12): 512, 513, 514, 515, 516, 517, 518, 519,
- (26,0): 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- (26,12): 532, 533, 534, 535, 536, 537, 538, 539,
- (27,0): 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- (27,12): 552, 553, 554, 555, 556, 557, 558, 559,
- (28,0): 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- (28,12): 572, 573, 574, 575, 576, 577, 578, 579,
- (29,0): 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- (29,12): 592, 593, 594, 595, 596, 597, 598, 599,
- (30,0): 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- (30,12): 612, 613, 614, 615, 616, 617, 618, 619,
- (31,0): 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- (31,12): 632, 633, 634, 635, 636, 637, 638, 639,
- (32,0): 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- (32,12): 652, 653, 654, 655, 656, 657, 658, 659,
- (33,0): 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- (33,12): 672, 673, 674, 675, 676, 677, 678, 679,
- (34,0): 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- (34,12): 692, 693, 694, 695, 696, 697, 698, 699,
- (35,0): 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- (35,12): 712, 713, 714, 715, 716, 717, 718, 719,
- (36,0): 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- (36,12): 732, 733, 734, 735, 736, 737, 738, 739,
- (37,0): 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- (37,12): 752, 753, 754, 755, 756, 757, 758, 759,
- (38,0): 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771,
- (38,12): 772, 773, 774, 775, 776, 777, 778, 779,
- (39,0): 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791,
- (39,12): 792, 793, 794, 795, 796, 797, 798, 799
- }
- }
- DATASET "dset_chunk" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, H5S_UNLIMITED ) }
- DATA {
- (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- (0,18): 18, 19,
- (1,0): 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- (1,16): 36, 37, 38, 39,
- (2,0): 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- (2,16): 56, 57, 58, 59,
- (3,0): 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- (3,16): 76, 77, 78, 79,
- (4,0): 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- (4,16): 96, 97, 98, 99,
- (5,0): 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- (5,13): 113, 114, 115, 116, 117, 118, 119,
- (6,0): 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
- (6,13): 133, 134, 135, 136, 137, 138, 139,
- (7,0): 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- (7,13): 153, 154, 155, 156, 157, 158, 159,
- (8,0): 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
- (8,13): 173, 174, 175, 176, 177, 178, 179,
- (9,0): 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- (9,13): 193, 194, 195, 196, 197, 198, 199,
- (10,0): 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- (10,12): 212, 213, 214, 215, 216, 217, 218, 219,
- (11,0): 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- (11,12): 232, 233, 234, 235, 236, 237, 238, 239,
- (12,0): 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- (12,12): 252, 253, 254, 255, 256, 257, 258, 259,
- (13,0): 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- (13,12): 272, 273, 274, 275, 276, 277, 278, 279,
- (14,0): 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- (14,12): 292, 293, 294, 295, 296, 297, 298, 299,
- (15,0): 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- (15,12): 312, 313, 314, 315, 316, 317, 318, 319,
- (16,0): 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- (16,12): 332, 333, 334, 335, 336, 337, 338, 339,
- (17,0): 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- (17,12): 352, 353, 354, 355, 356, 357, 358, 359,
- (18,0): 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- (18,12): 372, 373, 374, 375, 376, 377, 378, 379,
- (19,0): 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
- (19,12): 392, 393, 394, 395, 396, 397, 398, 399,
- (20,0): 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- (20,12): 412, 413, 414, 415, 416, 417, 418, 419,
- (21,0): 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- (21,12): 432, 433, 434, 435, 436, 437, 438, 439,
- (22,0): 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
- (22,12): 452, 453, 454, 455, 456, 457, 458, 459,
- (23,0): 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- (23,12): 472, 473, 474, 475, 476, 477, 478, 479,
- (24,0): 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- (24,12): 492, 493, 494, 495, 496, 497, 498, 499,
- (25,0): 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- (25,12): 512, 513, 514, 515, 516, 517, 518, 519,
- (26,0): 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- (26,12): 532, 533, 534, 535, 536, 537, 538, 539,
- (27,0): 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- (27,12): 552, 553, 554, 555, 556, 557, 558, 559,
- (28,0): 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- (28,12): 572, 573, 574, 575, 576, 577, 578, 579,
- (29,0): 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- (29,12): 592, 593, 594, 595, 596, 597, 598, 599,
- (30,0): 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- (30,12): 612, 613, 614, 615, 616, 617, 618, 619,
- (31,0): 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- (31,12): 632, 633, 634, 635, 636, 637, 638, 639,
- (32,0): 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- (32,12): 652, 653, 654, 655, 656, 657, 658, 659,
- (33,0): 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- (33,12): 672, 673, 674, 675, 676, 677, 678, 679,
- (34,0): 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- (34,12): 692, 693, 694, 695, 696, 697, 698, 699,
- (35,0): 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- (35,12): 712, 713, 714, 715, 716, 717, 718, 719,
- (36,0): 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- (36,12): 732, 733, 734, 735, 736, 737, 738, 739,
- (37,0): 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- (37,12): 752, 753, 754, 755, 756, 757, 758, 759,
- (38,0): 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771,
- (38,12): 772, 773, 774, 775, 776, 777, 778, 779,
- (39,0): 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791,
- (39,12): 792, 793, 794, 795, 796, 797, 798, 799
- }
- }
- DATASET "dset_compact" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- DATA {
- (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- (0,18): 18, 19,
- (1,0): 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- (1,16): 36, 37, 38, 39,
- (2,0): 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- (2,16): 56, 57, 58, 59,
- (3,0): 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- (3,16): 76, 77, 78, 79,
- (4,0): 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- (4,16): 96, 97, 98, 99,
- (5,0): 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- (5,13): 113, 114, 115, 116, 117, 118, 119,
- (6,0): 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
- (6,13): 133, 134, 135, 136, 137, 138, 139,
- (7,0): 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- (7,13): 153, 154, 155, 156, 157, 158, 159,
- (8,0): 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
- (8,13): 173, 174, 175, 176, 177, 178, 179,
- (9,0): 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- (9,13): 193, 194, 195, 196, 197, 198, 199,
- (10,0): 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- (10,12): 212, 213, 214, 215, 216, 217, 218, 219,
- (11,0): 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- (11,12): 232, 233, 234, 235, 236, 237, 238, 239,
- (12,0): 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- (12,12): 252, 253, 254, 255, 256, 257, 258, 259,
- (13,0): 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- (13,12): 272, 273, 274, 275, 276, 277, 278, 279,
- (14,0): 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- (14,12): 292, 293, 294, 295, 296, 297, 298, 299,
- (15,0): 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- (15,12): 312, 313, 314, 315, 316, 317, 318, 319,
- (16,0): 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- (16,12): 332, 333, 334, 335, 336, 337, 338, 339,
- (17,0): 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- (17,12): 352, 353, 354, 355, 356, 357, 358, 359,
- (18,0): 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- (18,12): 372, 373, 374, 375, 376, 377, 378, 379,
- (19,0): 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
- (19,12): 392, 393, 394, 395, 396, 397, 398, 399,
- (20,0): 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- (20,12): 412, 413, 414, 415, 416, 417, 418, 419,
- (21,0): 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- (21,12): 432, 433, 434, 435, 436, 437, 438, 439,
- (22,0): 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
- (22,12): 452, 453, 454, 455, 456, 457, 458, 459,
- (23,0): 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- (23,12): 472, 473, 474, 475, 476, 477, 478, 479,
- (24,0): 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- (24,12): 492, 493, 494, 495, 496, 497, 498, 499,
- (25,0): 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- (25,12): 512, 513, 514, 515, 516, 517, 518, 519,
- (26,0): 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- (26,12): 532, 533, 534, 535, 536, 537, 538, 539,
- (27,0): 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- (27,12): 552, 553, 554, 555, 556, 557, 558, 559,
- (28,0): 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- (28,12): 572, 573, 574, 575, 576, 577, 578, 579,
- (29,0): 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- (29,12): 592, 593, 594, 595, 596, 597, 598, 599,
- (30,0): 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- (30,12): 612, 613, 614, 615, 616, 617, 618, 619,
- (31,0): 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- (31,12): 632, 633, 634, 635, 636, 637, 638, 639,
- (32,0): 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- (32,12): 652, 653, 654, 655, 656, 657, 658, 659,
- (33,0): 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- (33,12): 672, 673, 674, 675, 676, 677, 678, 679,
- (34,0): 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- (34,12): 692, 693, 694, 695, 696, 697, 698, 699,
- (35,0): 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- (35,12): 712, 713, 714, 715, 716, 717, 718, 719,
- (36,0): 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- (36,12): 732, 733, 734, 735, 736, 737, 738, 739,
- (37,0): 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- (37,12): 752, 753, 754, 755, 756, 757, 758, 759,
- (38,0): 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771,
- (38,12): 772, 773, 774, 775, 776, 777, 778, 779,
- (39,0): 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791,
- (39,12): 792, 793, 794, 795, 796, 797, 798, 799
- }
- }
- DATASET "dset_contiguous" {
- DATATYPE H5T_STD_I32LE
- DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
- DATA {
- (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- (0,18): 18, 19,
- (1,0): 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- (1,16): 36, 37, 38, 39,
- (2,0): 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- (2,16): 56, 57, 58, 59,
- (3,0): 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- (3,16): 76, 77, 78, 79,
- (4,0): 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- (4,16): 96, 97, 98, 99,
- (5,0): 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- (5,13): 113, 114, 115, 116, 117, 118, 119,
- (6,0): 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
- (6,13): 133, 134, 135, 136, 137, 138, 139,
- (7,0): 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- (7,13): 153, 154, 155, 156, 157, 158, 159,
- (8,0): 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
- (8,13): 173, 174, 175, 176, 177, 178, 179,
- (9,0): 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- (9,13): 193, 194, 195, 196, 197, 198, 199,
- (10,0): 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- (10,12): 212, 213, 214, 215, 216, 217, 218, 219,
- (11,0): 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- (11,12): 232, 233, 234, 235, 236, 237, 238, 239,
- (12,0): 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- (12,12): 252, 253, 254, 255, 256, 257, 258, 259,
- (13,0): 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- (13,12): 272, 273, 274, 275, 276, 277, 278, 279,
- (14,0): 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- (14,12): 292, 293, 294, 295, 296, 297, 298, 299,
- (15,0): 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- (15,12): 312, 313, 314, 315, 316, 317, 318, 319,
- (16,0): 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- (16,12): 332, 333, 334, 335, 336, 337, 338, 339,
- (17,0): 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- (17,12): 352, 353, 354, 355, 356, 357, 358, 359,
- (18,0): 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- (18,12): 372, 373, 374, 375, 376, 377, 378, 379,
- (19,0): 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
- (19,12): 392, 393, 394, 395, 396, 397, 398, 399,
- (20,0): 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- (20,12): 412, 413, 414, 415, 416, 417, 418, 419,
- (21,0): 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- (21,12): 432, 433, 434, 435, 436, 437, 438, 439,
- (22,0): 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
- (22,12): 452, 453, 454, 455, 456, 457, 458, 459,
- (23,0): 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- (23,12): 472, 473, 474, 475, 476, 477, 478, 479,
- (24,0): 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- (24,12): 492, 493, 494, 495, 496, 497, 498, 499,
- (25,0): 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- (25,12): 512, 513, 514, 515, 516, 517, 518, 519,
- (26,0): 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- (26,12): 532, 533, 534, 535, 536, 537, 538, 539,
- (27,0): 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- (27,12): 552, 553, 554, 555, 556, 557, 558, 559,
- (28,0): 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- (28,12): 572, 573, 574, 575, 576, 577, 578, 579,
- (29,0): 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- (29,12): 592, 593, 594, 595, 596, 597, 598, 599,
- (30,0): 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- (30,12): 612, 613, 614, 615, 616, 617, 618, 619,
- (31,0): 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- (31,12): 632, 633, 634, 635, 636, 637, 638, 639,
- (32,0): 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- (32,12): 652, 653, 654, 655, 656, 657, 658, 659,
- (33,0): 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- (33,12): 672, 673, 674, 675, 676, 677, 678, 679,
- (34,0): 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- (34,12): 692, 693, 694, 695, 696, 697, 698, 699,
- (35,0): 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- (35,12): 712, 713, 714, 715, 716, 717, 718, 719,
- (36,0): 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- (36,12): 732, 733, 734, 735, 736, 737, 738, 739,
- (37,0): 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- (37,12): 752, 753, 754, 755, 756, 757, 758, 759,
- (38,0): 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771,
- (38,12): 772, 773, 774, 775, 776, 777, 778, 779,
- (39,0): 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791,
- (39,12): 792, 793, 794, 795, 796, 797, 798, 799
- }
- }
-}
-}
diff --git a/tools/h5repack/testfiles/h5repack_layout2.h5 b/tools/h5repack/testfiles/h5repack_layout2.h5
deleted file mode 100644
index f6821e5..0000000
--- a/tools/h5repack/testfiles/h5repack_layout2.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_layout3.h5 b/tools/h5repack/testfiles/h5repack_layout3.h5
deleted file mode 100644
index 6d2de41..0000000
--- a/tools/h5repack/testfiles/h5repack_layout3.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_layouto.h5 b/tools/h5repack/testfiles/h5repack_layouto.h5
deleted file mode 100644
index a038e68..0000000
--- a/tools/h5repack/testfiles/h5repack_layouto.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_named_dtypes.h5 b/tools/h5repack/testfiles/h5repack_named_dtypes.h5
deleted file mode 100644
index 85c1352..0000000
--- a/tools/h5repack/testfiles/h5repack_named_dtypes.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_nbit.h5 b/tools/h5repack/testfiles/h5repack_nbit.h5
deleted file mode 100644
index ac71bee..0000000
--- a/tools/h5repack/testfiles/h5repack_nbit.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_nested_8bit_enum.h5 b/tools/h5repack/testfiles/h5repack_nested_8bit_enum.h5
deleted file mode 100644
index f1bd8e9..0000000
--- a/tools/h5repack/testfiles/h5repack_nested_8bit_enum.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_nested_8bit_enum_deflated.h5 b/tools/h5repack/testfiles/h5repack_nested_8bit_enum_deflated.h5
deleted file mode 100644
index 2e66da2..0000000
--- a/tools/h5repack/testfiles/h5repack_nested_8bit_enum_deflated.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_objs.h5 b/tools/h5repack/testfiles/h5repack_objs.h5
deleted file mode 100644
index 284b0ac..0000000
--- a/tools/h5repack/testfiles/h5repack_objs.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_refs.h5 b/tools/h5repack/testfiles/h5repack_refs.h5
deleted file mode 100644
index 2a1ec9b..0000000
--- a/tools/h5repack/testfiles/h5repack_refs.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_shuffle.h5 b/tools/h5repack/testfiles/h5repack_shuffle.h5
deleted file mode 100644
index c14e2cb..0000000
--- a/tools/h5repack/testfiles/h5repack_shuffle.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_soffset.h5 b/tools/h5repack/testfiles/h5repack_soffset.h5
deleted file mode 100644
index 2acd867..0000000
--- a/tools/h5repack/testfiles/h5repack_soffset.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/h5repack_szip.h5 b/tools/h5repack/testfiles/h5repack_szip.h5
deleted file mode 100644
index b16d169..0000000
--- a/tools/h5repack/testfiles/h5repack_szip.h5
+++ /dev/null
Binary files differ
diff --git a/tools/h5repack/testfiles/plugin_none.h5repack_layout.UD.h5.tst b/tools/h5repack/testfiles/plugin_none.h5repack_layout.UD.h5.tst
deleted file mode 100644
index 4fb6906..0000000
--- a/tools/h5repack/testfiles/plugin_none.h5repack_layout.UD.h5.tst
+++ /dev/null
@@ -1,14 +0,0 @@
-Objects to modify layout are...
-Objects to apply filter are...
- Uncompress all
------------------------------------------
- Type Filter (Compression) Name
------------------------------------------
- group /
- dset (1.000:1) /dset1
- dset (1.000:1) /dset2
- dset (1.000:1) /dset3
- dset (1.000:1) /dset4
- dset (1.000:1) /dset_chunk
- dset (1.000:1) /dset_compact
- dset (1.000:1) /dset_contiguous
diff --git a/tools/h5repack/testfiles/plugin_test.h5repack_layout.h5.tst b/tools/h5repack/testfiles/plugin_test.h5repack_layout.h5.tst
deleted file mode 100644
index 7f9bd6e..0000000
--- a/tools/h5repack/testfiles/plugin_test.h5repack_layout.h5.tst
+++ /dev/null
@@ -1,14 +0,0 @@
-Objects to modify layout are...
-Objects to apply filter are...
- User Defined 257
------------------------------------------
- Type Filter (Compression) Name
------------------------------------------
- group /
- dset UD (1.000:1) /dset1
- dset UD (1.000:1) /dset2
- dset UD (1.000:1) /dset3
- dset UD (1.000:1) /dset4
- dset UD (1.000:1) /dset_chunk
- dset UD (1.000:1) /dset_compact
- dset UD (1.000:1) /dset_contiguous
diff --git a/tools/h5repack/testfiles/ublock.bin b/tools/h5repack/testfiles/ublock.bin
deleted file mode 100644
index b2d03f3..0000000
--- a/tools/h5repack/testfiles/ublock.bin
+++ /dev/null
@@ -1 +0,0 @@
-abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrst \ No newline at end of file
diff --git a/tools/h5repack/testh5repack_detect_szip.c b/tools/h5repack/testh5repack_detect_szip.c
deleted file mode 100644
index e91b2f7..0000000
--- a/tools/h5repack/testh5repack_detect_szip.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by The HDF Group. *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from help@hdfgroup.org. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#include <stdio.h>
-#include "h5repack.h"
-#include "h5tools.h"
-#include "h5tools_utils.h"
-#include "h5test.h"
-
-
-/* Name of tool */
-#define PROGRAMNAME "h5repack_detect_szip"
-
-/*-------------------------------------------------------------------------
- * Function: main
- *
- * Purpose: detects szip encoder, prints "yes" or "no" to stdout.
- * Intended to be used in test scripts.
- *
- * Return:
- *
- * Programmer:
- *
- * Date:
- *
- * Comments:
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-
-
-int main(void)
-{
- h5tools_setprogname(PROGRAMNAME);
- h5tools_setstatus(EXIT_SUCCESS);
-
- /* Initialize h5tools lib */
- h5tools_init();
-
-#ifdef H5_HAVE_FILTER_SZIP
- if (h5tools_can_encode(H5Z_FILTER_SZIP) == 1) {
- printf("yes\n");
- return(1);
- }
-#endif /* H5_HAVE_FILTER_SZIP */
- printf("no\n");
- return(0);
-}