From aa734a5d7e19c0eb9232e55a2f257fd87ffee0f1 Mon Sep 17 00:00:00 2001 From: Allen Byrne <50328838+byrnHDF@users.noreply.github.com> Date: Thu, 21 Dec 2023 09:53:24 -0600 Subject: Add VDS examples and fix non-standalone build (#3898) * Choose a size for rdata dimension * Fix platform naming conflicts * Fix doxygen references to point within library repo --- CMakeInstallation.cmake | 7 - HDF5Examples/C/CMakeLists.txt | 4 + HDF5Examples/C/H5D/CMakeLists.txt | 5 +- HDF5Examples/C/H5D/C_sourcefiles.cmake | 2 +- HDF5Examples/C/H5FLT/CMakeLists.txt | 13 +- HDF5Examples/C/H5G/CMakeLists.txt | 18 +- HDF5Examples/C/H5G/C_sourcefiles.cmake | 2 +- HDF5Examples/C/H5PAR/CMakeLists.txt | 2 +- HDF5Examples/C/H5T/CMakeLists.txt | 8 +- HDF5Examples/C/H5VDS/CMakeLists.txt | 164 +++ HDF5Examples/C/H5VDS/C_sourcefiles.cmake | 20 + HDF5Examples/C/H5VDS/Makefile.am | 51 + HDF5Examples/C/H5VDS/h5ex_vds-eiger.c | 205 ++++ HDF5Examples/C/H5VDS/h5ex_vds-exc.c | 245 +++++ HDF5Examples/C/H5VDS/h5ex_vds-exclim.c | 239 +++++ .../C/H5VDS/h5ex_vds-percival-unlim-maxmin.c | 358 +++++++ HDF5Examples/C/H5VDS/h5ex_vds-percival-unlim.c | 357 +++++++ HDF5Examples/C/H5VDS/h5ex_vds-percival.c | 254 +++++ HDF5Examples/C/H5VDS/h5ex_vds-simpleIO.c | 196 ++++ HDF5Examples/C/H5VDS/h5ex_vds.c | 254 +++++ HDF5Examples/C/H5VDS/test.sh.in | 98 ++ HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-eiger.ddl | 10 + HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-eiger.tst | 17 + HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exc.ddl | 10 + HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exc.tst | 81 ++ .../C/H5VDS/tfiles/110/h5ex_vds-exclim.ddl | 55 + .../C/H5VDS/tfiles/110/h5ex_vds-exclim.tst | 84 ++ .../tfiles/110/h5ex_vds-percival-unlim-maxmin.ddl | 330 ++++++ .../tfiles/110/h5ex_vds-percival-unlim-maxmin.tst | 379 +++++++ .../C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.ddl | 810 +++++++++++++++ .../C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.tst | 1060 ++++++++++++++++++++ .../C/H5VDS/tfiles/110/h5ex_vds-percival.ddl | 410 ++++++++ .../C/H5VDS/tfiles/110/h5ex_vds-percival.tst | 95 ++ .../C/H5VDS/tfiles/110/h5ex_vds-simpleIO.ddl | 14 + .../C/H5VDS/tfiles/110/h5ex_vds-simpleIO.tst | 12 + HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds.ddl | 14 + HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds.tst | 34 + HDF5Examples/C/Perf/CMakeLists.txt | 4 +- HDF5Examples/CMakeLists.txt | 52 +- HDF5Examples/FORTRAN/H5D/CMakeLists.txt | 4 +- HDF5Examples/FORTRAN/H5G/CMakeLists.txt | 18 +- HDF5Examples/FORTRAN/H5PAR/CMakeLists.txt | 2 +- HDF5Examples/FORTRAN/H5T/CMakeLists.txt | 8 +- HDF5Examples/JAVA/H5D/CMakeLists.txt | 21 +- HDF5Examples/JAVA/H5G/CMakeLists.txt | 21 +- HDF5Examples/JAVA/H5G/Java_sourcefiles.cmake | 2 +- HDF5Examples/JAVA/H5J/CMakeLists.txt | 21 +- HDF5Examples/JAVA/H5J/Java_sourcefiles.cmake | 2 +- HDF5Examples/JAVA/H5T/CMakeLists.txt | 21 +- HDF5Examples/config/cmake/HDFExampleMacros.cmake | 35 +- HDF5Examples/config/cmake/UseJava.cmake | 2 +- config/cmake/HDF5ExampleCache.cmake | 18 + config/cmake/HDFMacros.cmake | 5 +- config/cmake/UseJava.cmake | 99 +- config/cmake/javaTargets.cmake.in | 3 +- doxygen/dox/ExamplesAPI.dox | 622 ++++++------ doxygen/dox/IntroParExamples.dox | 16 +- doxygen/dox/IntroParHDF5.dox | 8 +- doxygen/dox/LearnBasics3.dox | 4 +- doxygen/hdf5doxy_layout.xml | 1 + 60 files changed, 6433 insertions(+), 473 deletions(-) create mode 100644 HDF5Examples/C/H5VDS/CMakeLists.txt create mode 100644 HDF5Examples/C/H5VDS/C_sourcefiles.cmake create mode 100644 HDF5Examples/C/H5VDS/Makefile.am create mode 100644 HDF5Examples/C/H5VDS/h5ex_vds-eiger.c create mode 100644 HDF5Examples/C/H5VDS/h5ex_vds-exc.c create mode 100644 HDF5Examples/C/H5VDS/h5ex_vds-exclim.c create mode 100644 HDF5Examples/C/H5VDS/h5ex_vds-percival-unlim-maxmin.c create mode 100644 HDF5Examples/C/H5VDS/h5ex_vds-percival-unlim.c create mode 100644 HDF5Examples/C/H5VDS/h5ex_vds-percival.c create mode 100644 HDF5Examples/C/H5VDS/h5ex_vds-simpleIO.c create mode 100644 HDF5Examples/C/H5VDS/h5ex_vds.c create mode 100644 HDF5Examples/C/H5VDS/test.sh.in create mode 100644 HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-eiger.ddl create mode 100644 HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-eiger.tst create mode 100644 HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exc.ddl create mode 100644 HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exc.tst create mode 100644 HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exclim.ddl create mode 100644 HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exclim.tst create mode 100644 HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim-maxmin.ddl create mode 100644 HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim-maxmin.tst create mode 100644 HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.ddl create mode 100644 HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.tst create mode 100644 HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival.ddl create mode 100644 HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival.tst create mode 100644 HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-simpleIO.ddl create mode 100644 HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-simpleIO.tst create mode 100644 HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds.ddl create mode 100644 HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds.tst diff --git a/CMakeInstallation.cmake b/CMakeInstallation.cmake index f28bb94..aae6d65 100644 --- a/CMakeInstallation.cmake +++ b/CMakeInstallation.cmake @@ -57,13 +57,6 @@ set (HDF5_INCLUDES_BUILD_TIME ) #----------------------------------------------------------------------------- -# Set variables needed for installation -#----------------------------------------------------------------------------- -set (HDF5_VERSION_STRING ${HDF5_PACKAGE_VERSION}) -set (HDF5_VERSION_MAJOR ${HDF5_PACKAGE_VERSION_MAJOR}) -set (HDF5_VERSION_MINOR ${HDF5_PACKAGE_VERSION_MINOR}) - -#----------------------------------------------------------------------------- # Configure the hdf5-config.cmake file for the build directory #----------------------------------------------------------------------------- set (INCLUDE_INSTALL_DIR ${HDF5_INSTALL_INCLUDE_DIR}) diff --git a/HDF5Examples/C/CMakeLists.txt b/HDF5Examples/C/CMakeLists.txt index 4cc0b3a..4e589bc 100644 --- a/HDF5Examples/C/CMakeLists.txt +++ b/HDF5Examples/C/CMakeLists.txt @@ -15,6 +15,10 @@ if (${H5_LIBVER_DIR} GREATER 16) endif () endif () +if (${H5_LIBVER_DIR} GREATER 110) + add_subdirectory (${PROJECT_SOURCE_DIR}/H5VDS) +endif () + if (H5_HAVE_PARALLEL AND HDF5_ENABLE_PARALLEL) add_subdirectory (${PROJECT_SOURCE_DIR}/H5PAR) endif () diff --git a/HDF5Examples/C/H5D/CMakeLists.txt b/HDF5Examples/C/H5D/CMakeLists.txt index 68cbd23..02f9ac7 100644 --- a/HDF5Examples/C/H5D/CMakeLists.txt +++ b/HDF5Examples/C/H5D/CMakeLists.txt @@ -88,7 +88,6 @@ endif () # endif () # endforeach () #endif () - #if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.12") # foreach (example_name ${1_12_examples}) # if (H5EX_BUILD_TESTING) @@ -232,7 +231,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_OUTPUT=${testname}.out" -D "TEST_REFERENCE=${testname}.tst" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall) if (HDF5_BUILD_TOOLS) @@ -246,7 +245,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_EXPECT=0" -D "TEST_REFERENCE=${testname}.ddl" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}) endif () diff --git a/HDF5Examples/C/H5D/C_sourcefiles.cmake b/HDF5Examples/C/H5D/C_sourcefiles.cmake index 87e0d6f..971993f 100644 --- a/HDF5Examples/C/H5D/C_sourcefiles.cmake +++ b/HDF5Examples/C/H5D/C_sourcefiles.cmake @@ -30,7 +30,7 @@ if (HDF5_ENABLE_SZIP_SUPPORT) ) endif () -if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.8" AND NOT ${${EXAMPLE_VARNAME}_USE_16_API}) +if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.8" AND NOT ${EXAMPLE_VARNAME}_USE_16_API) set (1_8_examples h5ex_d_nbit h5ex_d_sofloat diff --git a/HDF5Examples/C/H5FLT/CMakeLists.txt b/HDF5Examples/C/H5FLT/CMakeLists.txt index 482d65b..9345b66 100644 --- a/HDF5Examples/C/H5FLT/CMakeLists.txt +++ b/HDF5Examples/C/H5FLT/CMakeLists.txt @@ -141,6 +141,11 @@ else () set (ZSTD_AVAILABLE 0) endif () +set (LIB_TYPE STATIC) +if (BUILD_SHARED_LIBS) + set (LIB_TYPE SHARED) +endif () + #run-time loadable library examples foreach (example ${dyn_examples}) add_executable (${EXAMPLE_VARNAME}_${example} ${PROJECT_SOURCE_DIR}/${example}.c) @@ -196,7 +201,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_ERRREF=1" -D "GREP_ERRREF=Filter present but encoding disabled" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_${testname}-ERR PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall) add_test ( @@ -219,7 +224,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_ENV_VAR=HDF5_PLUGIN_PATH" -D "TEST_ENV_VALUE=${H5EX_HDF5_PLUGIN_PATH}" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall) endif () @@ -240,7 +245,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_ENV_VAR=HDF5_PLUGIN_PATH" -D "TEST_ENV_VALUE=${H5EX_HDF5_PLUGIN_PATH}" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) else () add_test ( @@ -257,7 +262,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_ENV_VAR=HDF5_PLUGIN_PATH" -D "TEST_ENV_VALUE=${H5EX_HDF5_PLUGIN_PATH}" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) endif () set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}) diff --git a/HDF5Examples/C/H5G/CMakeLists.txt b/HDF5Examples/C/H5G/CMakeLists.txt index ffbc614..f517199 100644 --- a/HDF5Examples/C/H5G/CMakeLists.txt +++ b/HDF5Examples/C/H5G/CMakeLists.txt @@ -212,7 +212,7 @@ if (H5EX_BUILD_TESTING) h5ex_g_iterate h5ex_g_traverse ) - if (NOT ${H5_LIBVER_DIR} EQUAL 16) + if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.8") set (exfiles ${exfiles} h5ex_g_visit ) @@ -243,7 +243,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_SKIP_COMPARE=TRUE" -D "TEST_OUTPUT=${testname}.out" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall) if (HDF5_BUILD_TOOLS) @@ -257,7 +257,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_EXPECT=0" -D "TEST_REFERENCE=${testname}.ddl" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}) endif () @@ -274,7 +274,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_OUTPUT=${testname}.out" -D "TEST_REFERENCE=${testname}.tst" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) if (HDF5_BUILD_TOOLS) add_test ( @@ -287,7 +287,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_EXPECT=0" -D "TEST_REFERENCE=${testname}.ddl" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}) endif () @@ -311,7 +311,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_OUTPUT=${testname}.out" -D "TEST_REFERENCE=${testname}.tst" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall) if (HDF5_BUILD_TOOLS) @@ -325,7 +325,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_EXPECT=0" -D "TEST_REFERENCE=${testname}1.ddl" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname}1 PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}) add_test ( @@ -338,7 +338,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_EXPECT=0" -D "TEST_REFERENCE=${testname}2.ddl" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname}2 PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_H5DUMP-${testname}1) endif () @@ -361,7 +361,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_OUTPUT=${testname}.out" -D "TEST_REFERENCE=${testname}.tst" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall) endmacro () diff --git a/HDF5Examples/C/H5G/C_sourcefiles.cmake b/HDF5Examples/C/H5G/C_sourcefiles.cmake index 133fb43..e8e3692 100644 --- a/HDF5Examples/C/H5G/C_sourcefiles.cmake +++ b/HDF5Examples/C/H5G/C_sourcefiles.cmake @@ -9,7 +9,7 @@ set (common_examples h5ex_g_traverse ) -if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.8" AND NOT ${${EXAMPLE_VARNAME}_USE_16_API}) +if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.8" AND NOT ${EXAMPLE_VARNAME}_USE_16_API) set (1_8_examples h5ex_g_compact h5ex_g_corder diff --git a/HDF5Examples/C/H5PAR/CMakeLists.txt b/HDF5Examples/C/H5PAR/CMakeLists.txt index 4e2e297..6e569b4 100644 --- a/HDF5Examples/C/H5PAR/CMakeLists.txt +++ b/HDF5Examples/C/H5PAR/CMakeLists.txt @@ -41,7 +41,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_OUTPUT=${testname}.out" -D "TEST_REFERENCE:STRING=PHDF5 example finished with no errors" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/grepTest.cmake" + -P "${H5EX_RESOURCES_DIR}/grepTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall) set (last_test "${EXAMPLE_VARNAME}_${testname}") diff --git a/HDF5Examples/C/H5T/CMakeLists.txt b/HDF5Examples/C/H5T/CMakeLists.txt index 0f8884b..fb5a4e4 100644 --- a/HDF5Examples/C/H5T/CMakeLists.txt +++ b/HDF5Examples/C/H5T/CMakeLists.txt @@ -146,7 +146,7 @@ if (HDF5_BUILD_TOOLS) ) endif () elseif ((${example_name} STREQUAL "h5ex_t_objref" OR ${example_name} STREQUAL "h5ex_t_objrefatt") OR (${example_name} STREQUAL "h5ex_t_regref" OR ${example_name} STREQUAL "h5ex_t_regrefatt")) - if (${${EXAMPLE_VARNAME}_USE_16_API} OR ${${EXAMPLE_VARNAME}_USE_18_API} OR ${${EXAMPLE_VARNAME}_USE_110_API}) + if (${EXAMPLE_VARNAME}_USE_16_API OR ${EXAMPLE_VARNAME}_USE_18_API OR ${EXAMPLE_VARNAME}_USE_110_API) if (HDF5_VERSION_MAJOR VERSION_EQUAL "1.8") if (HDF5_VERSION_STRING VERSION_LESS_EQUAL "1.8.21") add_custom_command ( @@ -340,7 +340,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_OUTPUT=${testname}.out" -D "TEST_REFERENCE=${testname}.tst" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall) if (HDF5_BUILD_TOOLS) @@ -354,7 +354,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_EXPECT=0" -D "TEST_REFERENCE=${testname}.ddl" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}) endif () @@ -377,7 +377,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_OUTPUT=${testname}.out" -D "TEST_REFERENCE=${testname}.tst" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall) endmacro () diff --git a/HDF5Examples/C/H5VDS/CMakeLists.txt b/HDF5Examples/C/H5VDS/CMakeLists.txt new file mode 100644 index 0000000..87fcb9f --- /dev/null +++ b/HDF5Examples/C/H5VDS/CMakeLists.txt @@ -0,0 +1,164 @@ +cmake_minimum_required (VERSION 3.12) +project (HDF5Examples_C_H5VDS C) + +#----------------------------------------------------------------------------- +# Define Sources +#----------------------------------------------------------------------------- +include (C_sourcefiles.cmake) + +#foreach (example_name ${examples}) +#endforeach () + +if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.10") + foreach (example_name ${1_10_examples}) + add_executable (${EXAMPLE_VARNAME}_${example_name} ${PROJECT_SOURCE_DIR}/${example_name}.c) + target_compile_options(${EXAMPLE_VARNAME}_${example_name} + PRIVATE + "$<$:-DH5_USE_16_API>" + "$<$:-DH5_USE_18_API>" + "$<$:-DH5_USE_110_API>" + "$<$:-DH5_USE_112_API>" + "$<$:-DH5_USE_114_API>" + "$<$:-DH5_USE_116_API>" + ) + if (H5_HAVE_PARALLEL) + target_include_directories (${EXAMPLE_VARNAME}_${example_name} PUBLIC ${MPI_C_INCLUDE_DIRS}) + endif () + target_link_libraries (${EXAMPLE_VARNAME}_${example_name} ${H5EX_HDF5_LINK_LIBS}) + if (H5EX_BUILD_TESTING) + add_custom_command ( + TARGET ${EXAMPLE_VARNAME}_${example_name} + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different ${PROJECT_SOURCE_DIR}/tfiles/110/${example_name}.tst ${PROJECT_BINARY_DIR}/${example_name}.tst + ) + endif () + endforeach () +endif () + +#if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.12") +# foreach (example_name ${1_12_examples}) +# if (H5EX_BUILD_TESTING) +# add_custom_command ( +# TARGET ${EXAMPLE_VARNAME}_${example_name} +# POST_BUILD +# COMMAND ${CMAKE_COMMAND} +# ARGS -E copy_if_different ${PROJECT_SOURCE_DIR}/tfiles/112/${example_name}.tst ${PROJECT_BINARY_DIR}/${example_name}.tst +# ) +# endif () +# endforeach () +#endif () +#if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.14") +# foreach (example_name ${1_14_examples}) +# if (H5EX_BUILD_TESTING) +# add_custom_command ( +# TARGET ${EXAMPLE_VARNAME}_${example_name} +# POST_BUILD +# COMMAND ${CMAKE_COMMAND} +# ARGS -E copy_if_different ${PROJECT_SOURCE_DIR}/tfiles/114/${example_name}.tst ${PROJECT_BINARY_DIR}/${example_name}.tst +# ) +# endif () +# endforeach () +#endif () +#if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.16") +# foreach (example_name ${1_16_examples}) +# if (H5EX_BUILD_TESTING) +# add_custom_command ( +# TARGET ${EXAMPLE_VARNAME}_${example_name} +# POST_BUILD +# COMMAND ${CMAKE_COMMAND} +# ARGS -E copy_if_different ${PROJECT_SOURCE_DIR}/tfiles/116/${example_name}.tst ${PROJECT_BINARY_DIR}/${example_name}.tst +# ) +# endif () +# endforeach () +#endif () + +if (HDF5_BUILD_TOOLS) +# foreach (example_name ${examples}) +# endforeach () + + foreach (example_name ${1_10_examples}) + if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.10") + add_custom_command ( + TARGET ${EXAMPLE_VARNAME}_${example_name} + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different ${PROJECT_SOURCE_DIR}/tfiles/110/${example_name}.ddl ${PROJECT_BINARY_DIR}/${example_name}.ddl + ) + endif () + #if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.12") + # add_custom_command ( + # TARGET ${EXAMPLE_VARNAME}_${example_name} + # POST_BUILD + # COMMAND ${CMAKE_COMMAND} + # ARGS -E copy_if_different ${PROJECT_SOURCE_DIR}/tfiles/112/${example_name}.ddl ${PROJECT_BINARY_DIR}/${example_name}.ddl + # ) + #endif () + #if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.14") + # add_custom_command ( + # TARGET ${EXAMPLE_VARNAME}_${example_name} + # POST_BUILD + # COMMAND ${CMAKE_COMMAND} + # ARGS -E copy_if_different ${PROJECT_SOURCE_DIR}/tfiles/114/${example_name}.ddl ${PROJECT_BINARY_DIR}/${example_name}.ddl + # ) + #endif () + #if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.16") + # add_custom_command ( + # TARGET ${EXAMPLE_VARNAME}_${example_name} + # POST_BUILD + # COMMAND ${CMAKE_COMMAND} + # ARGS -E copy_if_different ${PROJECT_SOURCE_DIR}/tfiles/116/${example_name}.ddl ${PROJECT_BINARY_DIR}/${example_name}.ddl + # ) + #endif () + endforeach () + +# foreach (example_name ${1_12_examples}) +# endforeach () +# foreach (example_name ${1_14_examples}) +# endforeach () +# foreach (example_name ${1_16_examples}) +# endforeach () +endif () + +if (H5EX_BUILD_TESTING) + macro (ADD_H5_TEST testname) + add_test ( + NAME ${EXAMPLE_VARNAME}_${testname}-clearall + COMMAND ${CMAKE_COMMAND} + -E remove + ${testname}*.h5 + ) + add_test ( + NAME ${EXAMPLE_VARNAME}_${testname} + COMMAND "${CMAKE_COMMAND}" + -D "TEST_PROGRAM=$" + -D "TEST_ARGS:STRING=" + -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" + -D "TEST_EXPECT=0" + -D "TEST_OUTPUT=${testname}.out" + -D "TEST_REFERENCE=${testname}.tst" + -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" + ) + set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall) + if (HDF5_BUILD_TOOLS) + add_test ( + NAME ${EXAMPLE_VARNAME}_H5DUMP-${testname} + COMMAND "${CMAKE_COMMAND}" + -D "TEST_PROGRAM=${H5EX_HDF5_DUMP_EXECUTABLE}" + -D "TEST_ARGS:STRING=${ARGN};${testname}.h5" + -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" + -D "TEST_OUTPUT=${testname}.ddl.out" + -D "TEST_EXPECT=0" + -D "TEST_REFERENCE=${testname}.ddl" + -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" + ) + set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}) + endif () + endmacro () + + foreach (example_name ${examples} ${1_10_examples}) + ADD_H5_TEST (${example_name}) + endforeach () +endif () diff --git a/HDF5Examples/C/H5VDS/C_sourcefiles.cmake b/HDF5Examples/C/H5VDS/C_sourcefiles.cmake new file mode 100644 index 0000000..a408faf --- /dev/null +++ b/HDF5Examples/C/H5VDS/C_sourcefiles.cmake @@ -0,0 +1,20 @@ +#----------------------------------------------------------------------------- +# Define Sources, one file per application +#----------------------------------------------------------------------------- +set (examples) + +if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.10" AND NOT ${EXAMPLE_VARNAME}_USE_16_API AND NOT ${EXAMPLE_VARNAME}_USE_18_API) + set (1_10_examples + h5ex_vds + h5ex_vds-exc +# h5ex_vds-exclim + h5ex_vds-eiger + h5ex_vds-simpleIO + h5ex_vds-percival + h5ex_vds-percival-unlim + h5ex_vds-percival-unlim-maxmin + ) +else () + set (1_10_examples) +endif () + diff --git a/HDF5Examples/C/H5VDS/Makefile.am b/HDF5Examples/C/H5VDS/Makefile.am new file mode 100644 index 0000000..e4f5320 --- /dev/null +++ b/HDF5Examples/C/H5VDS/Makefile.am @@ -0,0 +1,51 @@ +# +# 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. +## + +noinst_PROGRAMS = \ + h5ex_vds \ + h5ex_vds-exc \ + h5ex_vds-exclim \ + h5ex_vds-eiger \ + h5ex_vds-simpleIO \ + h5ex_vds-percival \ + h5ex_vds-percival-unlim \ + h5ex_vds-percival-unlim-maxmin + + +EXTRA_DIST = \ + tfiles/h5ex_vds.tst \ + tfiles/h5ex_vds-exc.tst \ + tfiles/h5ex_vds-exclim.tst \ + tfiles/h5ex_vds-eiger.tst \ + tfiles/h5ex_vds-simpleIO.tst \ + tfiles/h5ex_vds-percival.tst \ + tfiles/h5ex_vds-percival-unlim.tst \ + tfiles/h5ex_vds-percival-unlim-maxmin.tst \ + tfiles/h5ex_vds.ddl \ + tfiles/h5ex_vds-exc.ddl \ + tfiles/h5ex_vds-exclim.ddl \ + tfiles/h5ex_vds-eiger.ddl \ + tfiles/h5ex_vds-simpleIO.ddl \ + tfiles/h5ex_vds-percival.ddl \ + tfiles/h5ex_vds-percival-unlim.ddl \ + tfiles/h5ex_vds-percival-unlim-maxmin.ddl \ + test.sh + +TESTS = test.sh + +CLEANFILES = Makefile test.sh diff --git a/HDF5Examples/C/H5VDS/h5ex_vds-eiger.c b/HDF5Examples/C/H5VDS/h5ex_vds-eiger.c new file mode 100644 index 0000000..0629d73 --- /dev/null +++ b/HDF5Examples/C/H5VDS/h5ex_vds-eiger.c @@ -0,0 +1,205 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * 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 COPYING file, which can be found at the root of the source code * + * distribution tree, or in https://www.hdfgroup.org/licenses. * + * If you do not have access to either file, you may request a copy from * + * help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/************************************************************ + + This example illustrates the concept of the virtual dataset. + Eiger use case. Every 5 frames 10x10 are in the source + dataset "/A" in file with the name f-<#>.h5 + This file is intended for use with HDF5 Library version 1.10 + + ************************************************************/ + +#include "hdf5.h" +#include +#include + +#define FILE "h5ex_vds-eiger.h5" +#define DATASET "VDS-Eiger" +#define VDSDIM0 5 +#define VDSDIM1 10 +#define VDSDIM2 10 +#define DIM0 5 +#define DIM1 10 +#define DIM2 10 +#define RANK 3 + +int +main(void) +{ + hid_t file = H5I_INVALID_HID; + hid_t space = H5I_INVALID_HID; + hid_t dset = H5I_INVALID_HID; + hid_t src_space = H5I_INVALID_HID; + hid_t vspace = H5I_INVALID_HID; + hid_t dcpl = H5I_INVALID_HID; + herr_t status; + hsize_t vdsdims[3] = {VDSDIM0, VDSDIM1, VDSDIM2}; + hsize_t vdsdims_max[3] = {H5S_UNLIMITED, VDSDIM1, VDSDIM1}; + hsize_t dims[3] = {DIM0, DIM1, DIM2}; + hsize_t start[3], stride[3], count[3], block[3]; /* Hyperslab parameters */ + hsize_t start_out[3], stride_out[3], count_out[3], block_out[3]; /* Hyperslab parameter out */ + int rdata[VDSDIM0][VDSDIM1][VDSDIM2]; /* Read buffer for virtual dataset */ + int i, j, k; + H5D_layout_t layout; /* Storage layout */ + size_t num_map; /* Number of mappings */ + ssize_t len; /* Length of the string; also a return value */ + char *filename = NULL; + char *dsetname = NULL; + + file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + + /* Create VDS dataspace. */ + vspace = H5Screate_simple(RANK, vdsdims, vdsdims_max); + + /* Create dataspaces for the source dataset. */ + src_space = H5Screate_simple(RANK, dims, NULL); + + /* Create VDS creation property */ + dcpl = H5Pcreate(H5P_DATASET_CREATE); + + /* Initialize hyperslab values */ + + start[0] = 0; + start[1] = 0; + start[2] = 0; + stride[0] = DIM0; + stride[1] = 1; + stride[2] = 1; + count[0] = H5S_UNLIMITED; + count[1] = 1; + count[2] = 1; + block[0] = DIM0; + block[1] = DIM1; + block[2] = DIM2; + + /* + * Build the mappings + * + */ + status = H5Sselect_hyperslab(vspace, H5S_SELECT_SET, start, stride, count, block); + status = H5Pset_virtual(dcpl, vspace, "f-%b.h5", "/A", src_space); + + /* Create a virtual dataset */ + dset = H5Dcreate2(file, DATASET, H5T_NATIVE_INT, vspace, H5P_DEFAULT, dcpl, H5P_DEFAULT); + status = H5Sclose(vspace); + status = H5Sclose(src_space); + status = H5Dclose(dset); + status = H5Fclose(file); + + /* + * Now we begin the read section of this example. + */ + + /* + * Open file and dataset using the default properties. + */ + file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT); + dset = H5Dopen2(file, DATASET, H5P_DEFAULT); + + /* + * Get creation property list and mapping properties. + */ + dcpl = H5Dget_create_plist(dset); + + /* + * Get storage layout. + */ + layout = H5Pget_layout(dcpl); + if (H5D_VIRTUAL == layout) + printf(" Dataset has a virtual layout \n"); + else + printf("Wrong layout found \n"); + + /* + * Find the number of mappings. + */ + status = H5Pget_virtual_count(dcpl, &num_map); + printf(" Number of mappings is %lu\n", (unsigned long)num_map); + + /* + * Get mapping parameters for each mapping. + */ + for (i = 0; i < (int)num_map; i++) { + printf(" Mapping %d \n", i); + printf(" Selection in the virtual dataset \n"); + /* Get selection in the virtual dataset */ + vspace = H5Pget_virtual_vspace(dcpl, (size_t)i); + + /* Make sure that this is a hyperslab selection and then print information. */ + if (H5Sget_select_type(vspace) == H5S_SEL_HYPERSLABS) { + if (H5Sis_regular_hyperslab(vspace)) { + status = H5Sget_regular_hyperslab(vspace, start_out, stride_out, count_out, block_out); + printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0], + (unsigned long long)start_out[1], (unsigned long long)start_out[2]); + printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0], + (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]); + printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0], + (unsigned long long)count_out[1], (unsigned long long)count_out[2]); + printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0], + (unsigned long long)block_out[1], (unsigned long long)block_out[2]); + } + } + /* Get source file name */ + len = H5Pget_virtual_filename(dcpl, (size_t)i, NULL, 0); + filename = (char *)malloc((size_t)len * sizeof(char) + 1); + H5Pget_virtual_filename(dcpl, (size_t)i, filename, len + 1); + printf(" Source filename %s\n", filename); + + /* Get source dataset name */ + len = H5Pget_virtual_dsetname(dcpl, (size_t)i, NULL, 0); + dsetname = (char *)malloc((size_t)len * sizeof(char) + 1); + H5Pget_virtual_dsetname(dcpl, (size_t)i, dsetname, len + 1); + printf(" Source dataset name %s\n", dsetname); + + /* Get selection in the source dataset */ + printf(" Selection in the source dataset "); + src_space = H5Pget_virtual_srcspace(dcpl, (size_t)i); + + /* Make sure it is ALL selection and then print the coordinates. */ + if (H5Sget_select_type(src_space) == H5S_SEL_ALL) { + printf("H5S_ALL \n"); + } + H5Sclose(vspace); + H5Sclose(src_space); + free(filename); + free(dsetname); + } + + /* + * Read the data using the default properties. + */ + status = H5Dread(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata[0]); + + /* + * Output the data to the screen. + */ + printf(" VDS Data:\n"); + for (i = 0; i < VDSDIM0; i++) { + printf(" ["); + for (j = 0; j < VDSDIM1; j++) { + printf(" ["); + for (k = 0; k < VDSDIM1; k++) + printf(" %3d", rdata[i][j][k]); + printf("]"); + } + printf("]\n"); + } + + /* + * Close and release resources. + */ + status = H5Pclose(dcpl); + status = H5Dclose(dset); + status = H5Fclose(file); + + return 0; +} diff --git a/HDF5Examples/C/H5VDS/h5ex_vds-exc.c b/HDF5Examples/C/H5VDS/h5ex_vds-exc.c new file mode 100644 index 0000000..10bb68c --- /dev/null +++ b/HDF5Examples/C/H5VDS/h5ex_vds-exc.c @@ -0,0 +1,245 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * 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 COPYING file, which can be found at the root of the source code * + * distribution tree, or in https://www.hdfgroup.org/licenses. * + * If you do not have access to either file, you may request a copy from * + * help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/************************************************************ + + This example illustrates the concept of the virtual dataset. + Excalibur use case with k=2 and m=3. + This file is intended for use with HDF5 Library version 1.10 + + ************************************************************/ + +#include "hdf5.h" +#include +#include + +#define FILE "h5ex_vds-exc.h5" +#define DATASET "VDS-Excalibur" +#define VDSDIM0 0 +#define VDSDIM1 15 +#define VDSDIM2 6 +#define LDIM0 0 +#define LDIM1 2 +#define LDIM2 6 +#define NDIM0 0 +#define NDIM1 3 +#define NDIM2 6 +#define RANK 3 + +const char *SRC_FILE[] = {"ae.h5", "be.h5", "ce.h5", "de.h5", "ee.h5", "fe.h5"}; + +const char *SRC_DATASET[] = {"A", "B", "C", "D", "E", "F"}; + +int +main(void) +{ + hid_t file = H5I_INVALID_HID; + hid_t space = H5I_INVALID_HID; + hid_t dset = H5I_INVALID_HID; + hid_t src_space = H5I_INVALID_HID; + hid_t lsrc_space = H5I_INVALID_HID; + hid_t nsrc_space = H5I_INVALID_HID; + hid_t vspace = H5I_INVALID_HID; + hid_t dcpl = H5I_INVALID_HID; + herr_t status; + hsize_t vdsdims[3] = {VDSDIM0, VDSDIM1, VDSDIM2}; + hsize_t vdsdims_max[3] = {H5S_UNLIMITED, VDSDIM1, VDSDIM2}; + hsize_t ldims[3] = {LDIM0, LDIM1, LDIM2}; + hsize_t ldims_max[3] = {H5S_UNLIMITED, LDIM1, LDIM2}; + hsize_t ndims[3] = {NDIM0, NDIM1, NDIM2}; + hsize_t ndims_max[3] = {H5S_UNLIMITED, NDIM1, NDIM2}; + hsize_t start[3], count[3], block[3]; /* Hyperslab parameters */ + hsize_t start_out[3], stride_out[3], count_out[3], block_out[3]; + int rdata[40][VDSDIM1][VDSDIM2]; /* Read buffer for virtual dataset */ + int l = 2; + int n = 3; + int i, j, k; + H5D_layout_t layout; /* Storage layout */ + size_t num_map; /* Number of mappings */ + ssize_t len; /* Length of the string; also a return value */ + char *filename = NULL; + char *dsetname = NULL; + + file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + + /* Create VDS dataspace. */ + space = H5Screate_simple(RANK, vdsdims, vdsdims_max); + /* Create dataspaces for A, C, and E datasets. */ + lsrc_space = H5Screate_simple(RANK, ldims, ldims_max); + /* Create dataspaces for B, D, and F datasets. */ + nsrc_space = H5Screate_simple(RANK, ndims, ndims_max); + + /* Create VDS creation property */ + dcpl = H5Pcreate(H5P_DATASET_CREATE); + + /* Initialize hyperslab values */ + + start[0] = 0; + start[1] = 0; + start[2] = 0; + count[0] = H5S_UNLIMITED; + count[1] = 1; + count[2] = 1; + block[0] = 1; + block[1] = l; + block[2] = VDSDIM2; + + /* + * Build the mappings for A, C and E source datasets. + * Unlimited hyperslab selection is the same in the source datasets. + * Unlimited hyperslab selections in the virtual dataset have different offsets. + */ + status = H5Sselect_hyperslab(lsrc_space, H5S_SELECT_SET, start, NULL, count, block); + for (i = 0; i < 3; i++) { + start[1] = (hsize_t)((l + n) * i); + status = H5Sselect_hyperslab(space, H5S_SELECT_SET, start, NULL, count, block); + status = H5Pset_virtual(dcpl, space, SRC_FILE[2 * i], SRC_DATASET[2 * i], lsrc_space); + } + + /* Reinitialize start[1] and block[1] to build the second set of mappings. */ + start[1] = 0; + block[1] = n; + /* + * Build the mappings for B, D and F source datasets. + * Unlimited hyperslab selection is the same in the source datasets. + * Unlimited hyperslab selections in the virtual dataset have different offsets. + */ + status = H5Sselect_hyperslab(nsrc_space, H5S_SELECT_SET, start, NULL, count, block); + for (i = 0; i < 3; i++) { + start[1] = (hsize_t)(l + (l + n) * i); + status = H5Sselect_hyperslab(space, H5S_SELECT_SET, start, NULL, count, block); + status = H5Pset_virtual(dcpl, space, SRC_FILE[2 * i + 1], SRC_DATASET[2 * i + 1], nsrc_space); + } + + /* Create a virtual dataset */ + dset = H5Dcreate2(file, DATASET, H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT); + status = H5Sclose(space); + status = H5Sclose(nsrc_space); + status = H5Sclose(lsrc_space); + status = H5Dclose(dset); + status = H5Fclose(file); + + /* + * Now we begin the read section of this example. + */ + + /* + * Open file and dataset using the default properties. + */ + file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT); + dset = H5Dopen2(file, DATASET, H5P_DEFAULT); + + /* + * Get creation property list and mapping properties. + */ + dcpl = H5Dget_create_plist(dset); + + /* + * Get storage layout. + */ + layout = H5Pget_layout(dcpl); + if (H5D_VIRTUAL == layout) + printf(" Dataset has a virtual layout \n"); + else + printf("Wrong layout found \n"); + + /* + * Find the number of mappings. + */ + status = H5Pget_virtual_count(dcpl, &num_map); + printf(" Number of mappings is %lu\n", (unsigned long)num_map); + + /* + * Get mapping parameters for each mapping. + */ + for (i = 0; i < (int)num_map; i++) { + printf(" Mapping %d \n", i); + printf(" Selection in the virtual dataset \n"); + /* Get selection in the virtual dataset */ + vspace = H5Pget_virtual_vspace(dcpl, (size_t)i); + + /* Make sure that this is a hyperslab selection and then print information. */ + if (H5Sget_select_type(vspace) == H5S_SEL_HYPERSLABS) { + if (H5Sis_regular_hyperslab(vspace)) { + status = H5Sget_regular_hyperslab(vspace, start_out, stride_out, count_out, block_out); + printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0], + (unsigned long long)start_out[1], (unsigned long long)start_out[2]); + printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0], + (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]); + printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0], + (unsigned long long)count_out[1], (unsigned long long)count_out[2]); + printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0], + (unsigned long long)block_out[1], (unsigned long long)block_out[2]); + } + } + /* Get source file name */ + len = H5Pget_virtual_filename(dcpl, (size_t)i, NULL, 0); + filename = (char *)malloc((size_t)len * sizeof(char) + 1); + H5Pget_virtual_filename(dcpl, (size_t)i, filename, len + 1); + printf(" Source filename %s\n", filename); + + /* Get source dataset name */ + len = H5Pget_virtual_dsetname(dcpl, (size_t)i, NULL, 0); + dsetname = (char *)malloc((size_t)len * sizeof(char) + 1); + H5Pget_virtual_dsetname(dcpl, (size_t)i, dsetname, len + 1); + printf(" Source dataset name %s\n", dsetname); + + /* Get selection in the source dataset */ + printf(" Selection in the source dataset \n"); + src_space = H5Pget_virtual_srcspace(dcpl, (size_t)i); + if (H5Sget_select_type(src_space) == H5S_SEL_HYPERSLABS) { + if (H5Sis_regular_hyperslab(vspace)) { + status = H5Sget_regular_hyperslab(src_space, start_out, stride_out, count_out, block_out); + printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0], + (unsigned long long)start_out[1], (unsigned long long)start_out[2]); + printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0], + (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]); + printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0], + (unsigned long long)count_out[1], (unsigned long long)count_out[2]); + printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0], + (unsigned long long)block_out[1], (unsigned long long)block_out[2]); + } + } + H5Sclose(vspace); + H5Sclose(src_space); + free(filename); + free(dsetname); + } + + /* + * Read the data using the default properties. + */ + status = H5Dread(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata[0]); + + /* + * Output the data to the screen. + */ + printf(" VDS Data:\n"); + for (i = 0; i < VDSDIM0; i++) { + printf(" ["); + for (j = 0; j < VDSDIM1; j++) { + printf(" ["); + for (k = 0; k < VDSDIM1; k++) + printf(" %3d", rdata[i][j][k]); + printf("]"); + } + printf("]\n"); + } + + /* + * Close and release resources. + */ + status = H5Pclose(dcpl); + status = H5Dclose(dset); + status = H5Fclose(file); + + return 0; +} diff --git a/HDF5Examples/C/H5VDS/h5ex_vds-exclim.c b/HDF5Examples/C/H5VDS/h5ex_vds-exclim.c new file mode 100644 index 0000000..6bebe76 --- /dev/null +++ b/HDF5Examples/C/H5VDS/h5ex_vds-exclim.c @@ -0,0 +1,239 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * 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 COPYING file, which can be found at the root of the source code * + * distribution tree, or in https://www.hdfgroup.org/licenses. * + * If you do not have access to either file, you may request a copy from * + * help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/************************************************************ + + This example illustrates the concept of the virtual dataset. + Excalibur use case with k=2 and m=3 and only 3 planes in + Z-direction (i.e., not unlimited). + This file is intended for use with HDF5 Library version 1.10 + + ************************************************************/ + +#include "hdf5.h" +#include +#include + +#define FILE "h5ex_vds-exclim.h5" +#define DATASET "VDS-Excaliburlim" +#define VDSDIM0 3 +#define VDSDIM1 15 +#define VDSDIM2 6 +#define LDIM0 3 +#define LDIM1 2 +#define LDIM2 6 +#define NDIM0 3 +#define NDIM1 3 +#define NDIM2 6 +#define RANK 3 + +const char *SRC_FILE[] = {"ael.h5", "bel.h5", "cel.h5", "del.h5", "eel.h5", "fel.h5"}; + +const char *SRC_DATASET[] = {"A", "B", "C", "D", "E", "F"}; + +int +main(void) +{ + hid_t file = H5I_INVALID_HID; + hid_t space = H5I_INVALID_HID; + hid_t dset = H5I_INVALID_HID; + hid_t src_space = H5I_INVALID_HID; + hid_t lsrc_space = H5I_INVALID_HID; + hid_t nsrc_space = H5I_INVALID_HID; + hid_t vspace = H5I_INVALID_HID; + hid_t dcpl = H5I_INVALID_HID; + herr_t status; + hsize_t vdsdims[3] = {VDSDIM0, VDSDIM1, VDSDIM2}; + hsize_t ldims[3] = {LDIM0, LDIM1, LDIM2}; + hsize_t ndims[3] = {NDIM0, NDIM1, NDIM2}; + hsize_t start[3], count[3], block[3]; /* Hyperslab parameters */ + hsize_t start_out[3], stride_out[3], count_out[3], block_out[3]; + int rdata[VDSDIM0][VDSDIM1][VDSDIM2]; /* Read buffer for virtual dataset */ + int l = 2; + int n = 3; + int i, j, k; + H5D_layout_t layout; /* Storage layout */ + size_t num_map; /* Number of mappings */ + ssize_t len; /* Length of the string; also a return value */ + char *filename = NULL; + char *dsetname = NULL; + + file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + + /* Create VDS dataspace. */ + space = H5Screate_simple(RANK, vdsdims, NULL); + /* Create dataspaces for A, C, and E datasets. */ + lsrc_space = H5Screate_simple(RANK, ldims, NULL); + /* Create dataspaces for B, D, and F datasets. */ + nsrc_space = H5Screate_simple(RANK, ndims, NULL); + + /* Create VDS creation property */ + dcpl = H5Pcreate(H5P_DATASET_CREATE); + + /* Initialize hyperslab values */ + + start[0] = 0; + start[1] = 0; + start[2] = 0; + count[0] = VDSDIM0; + count[1] = 1; + count[2] = 1; + block[0] = 1; + block[1] = l; + block[2] = VDSDIM2; + + /* + * Build the mappings for A, C and E source datasets. + */ + status = H5Sselect_hyperslab(lsrc_space, H5S_SELECT_SET, start, NULL, count, block); + for (i = 0; i < 3; i++) { + start[1] = (hsize_t)((l + n) * i); + status = H5Sselect_hyperslab(space, H5S_SELECT_SET, start, NULL, count, block); + status = H5Pset_virtual(dcpl, space, SRC_FILE[2 * i], SRC_DATASET[2 * i], lsrc_space); + } + + /* Reinitialize start[0] and block[1] */ + start[0] = 0; + block[1] = n; + /* + * Build the mappings for B, D and F source datasets. + */ + status = H5Sselect_hyperslab(nsrc_space, H5S_SELECT_SET, start, NULL, count, block); + for (i = 0; i < 3; i++) { + start[1] = (hsize_t)(l + (l + n) * i); + status = H5Sselect_hyperslab(space, H5S_SELECT_SET, start, NULL, count, block); + status = H5Pset_virtual(dcpl, space, SRC_FILE[2 * i + 1], SRC_DATASET[2 * i + 1], nsrc_space); + } + + /* Create a virtual dataset */ + dset = H5Dcreate2(file, DATASET, H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT); + status = H5Sclose(space); + status = H5Sclose(nsrc_space); + status = H5Sclose(lsrc_space); + status = H5Dclose(dset); + status = H5Fclose(file); + + /* + * Now we begin the read section of this example. + */ + + /* + * Open file and dataset using the default properties. + */ + file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT); + dset = H5Dopen2(file, DATASET, H5P_DEFAULT); + + /* + * Get creation property list and mapping properties. + */ + dcpl = H5Dget_create_plist(dset); + + /* + * Get storage layout. + */ + layout = H5Pget_layout(dcpl); + if (H5D_VIRTUAL == layout) + printf(" Dataset has a virtual layout \n"); + else + printf("Wrong layout found \n"); + + /* + * Find the number of mappings. + */ + status = H5Pget_virtual_count(dcpl, &num_map); + printf(" Number of mappings is %lu\n", (unsigned long)num_map); + + /* + * Get mapping parameters for each mapping. + */ + for (i = 0; i < (int)num_map; i++) { + printf(" Mapping %d \n", i); + printf(" Selection in the virtual dataset \n"); + /* Get selection in the virtual dataset */ + vspace = H5Pget_virtual_vspace(dcpl, (size_t)i); + + /* Make sure that this is a hyperslab selection and then print information. */ + if (H5Sget_select_type(vspace) == H5S_SEL_HYPERSLABS) { + if (H5Sis_regular_hyperslab(vspace)) { + status = H5Sget_regular_hyperslab(vspace, start_out, stride_out, count_out, block_out); + printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0], + (unsigned long long)start_out[1], (unsigned long long)start_out[2]); + printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0], + (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]); + printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0], + (unsigned long long)count_out[1], (unsigned long long)count_out[2]); + printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0], + (unsigned long long)block_out[1], (unsigned long long)block_out[2]); + } + } + /* Get source file name */ + len = H5Pget_virtual_filename(dcpl, (size_t)i, NULL, 0); + filename = (char *)malloc((size_t)len * sizeof(char) + 1); + H5Pget_virtual_filename(dcpl, (size_t)i, filename, len + 1); + printf(" Source filename %s\n", filename); + + /* Get source dataset name */ + len = H5Pget_virtual_dsetname(dcpl, (size_t)i, NULL, 0); + dsetname = (char *)malloc((size_t)len * sizeof(char) + 1); + H5Pget_virtual_dsetname(dcpl, (size_t)i, dsetname, len + 1); + printf(" Source dataset name %s\n", dsetname); + + /* Get selection in the source dataset */ + printf(" Selection in the source dataset \n"); + src_space = H5Pget_virtual_srcspace(dcpl, (size_t)i); + if (H5Sget_select_type(src_space) == H5S_SEL_HYPERSLABS) { + if (H5Sis_regular_hyperslab(vspace)) { + status = H5Sget_regular_hyperslab(vspace, start_out, stride_out, count_out, block_out); + printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0], + (unsigned long long)start_out[1], (unsigned long long)start_out[2]); + printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0], + (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]); + printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0], + (unsigned long long)count_out[1], (unsigned long long)count_out[2]); + printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0], + (unsigned long long)block_out[1], (unsigned long long)block_out[2]); + } + } + H5Sclose(vspace); + H5Sclose(src_space); + free(filename); + free(dsetname); + } + + /* + * Read the data using the default properties. + */ + status = H5Dread(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata[0]); + + /* + * Output the data to the screen. + */ + printf(" VDS Data:\n"); + for (i = 0; i < VDSDIM0; i++) { + printf(" ["); + for (j = 0; j < VDSDIM1; j++) { + printf(" ["); + for (k = 0; k < VDSDIM1; k++) + printf(" %3d", rdata[i][j][k]); + printf("]"); + } + printf("]\n"); + } + + /* + * Close and release resources. + */ + status = H5Pclose(dcpl); + status = H5Dclose(dset); + status = H5Fclose(file); + + return 0; +} diff --git a/HDF5Examples/C/H5VDS/h5ex_vds-percival-unlim-maxmin.c b/HDF5Examples/C/H5VDS/h5ex_vds-percival-unlim-maxmin.c new file mode 100644 index 0000000..8ef996a --- /dev/null +++ b/HDF5Examples/C/H5VDS/h5ex_vds-percival-unlim-maxmin.c @@ -0,0 +1,358 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * 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 COPYING file, which can be found at the root of the source code * + * distribution tree, or in https://www.hdfgroup.org/licenses. * + * If you do not have access to either file, you may request a copy from * + * help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/************************************************************ + + This example illustrates the concept of the virtual dataset. + Percival use case. Every fifth 10x10 plane in VDS is stored in + the corresponding 3D unlimited dataset. + There are 4 source datasets total. + Each of the source datasets is extended to different sizes. + VDS access property can be used to get max and min extent. + This file is intended for use with HDF5 Library version 1.10 + + ************************************************************/ + +#include "hdf5.h" +#include +#include + +#define VFILE "h5ex_vds-percival-unlim-maxmin.h5" +#define DATASET "VDS-Percival-unlim-maxmin" +#define VDSDIM0 H5S_UNLIMITED +#define VDSDIM1 10 +#define VDSDIM2 10 + +#define DIM0 H5S_UNLIMITED +#define DIM0_1 4 /* Initial size of the source datasets */ +#define DIM1 10 +#define DIM2 10 +#define RANK 3 +#define PLANE_STRIDE 4 + +const char *SRC_FILE[] = {"apum.h5", "bpum.h5", "cpum.h5", "dpum.h5"}; + +const char *SRC_DATASET[] = {"A", "B", "C", "D"}; + +int +main(void) +{ + hid_t file = H5I_INVALID_HID; + hid_t vfile = H5I_INVALID_HID; + hid_t space = H5I_INVALID_HID; + hid_t dset = H5I_INVALID_HID; + hid_t vdset = H5I_INVALID_HID; + hid_t src_space = H5I_INVALID_HID; + hid_t mem_space = H5I_INVALID_HID; + hid_t vspace = H5I_INVALID_HID; + hid_t dcpl = H5I_INVALID_HID; + hid_t dapl = H5I_INVALID_HID; + herr_t status; + hsize_t vdsdims[3] = {4 * DIM0_1, VDSDIM1, VDSDIM2}; + hsize_t vdsdims_max[3] = {VDSDIM0, VDSDIM1, VDSDIM2}; + hsize_t dims[3] = {DIM0_1, DIM1, DIM2}; + hsize_t memdims[3] = {DIM0_1, DIM1, DIM2}; + hsize_t extdims[3] = {0, DIM1, DIM2}; /* Dimensions of the extended source datasets */ + hsize_t chunk_dims[3] = {DIM0_1, DIM1, DIM2}; + hsize_t dims_max[3] = {DIM0, DIM1, DIM2}; + hsize_t vdsdims_out[3]; + hsize_t vdsdims_max_out[3], start[3], stride[3], count[3], src_count[3], + block[3]; /* Hyperslab parameters */ + hsize_t start_out[3], stride_out[3], count_out[3], block_out[3]; /* Hyperslab parameter out */ + int wdata[DIM0_1 * DIM1 * DIM2]; + int rdata[8 * DIM0_1][VDSDIM1][VDSDIM2]; /* Read buffer for virtual dataset */ + int i, j, k; + H5D_layout_t layout; /* Storage layout */ + size_t num_map; /* Number of mappings */ + ssize_t len; /* Length of the string; also a return value */ + char *filename = NULL; + char *dsetname = NULL; + + /* + * Create source files and datasets. This step is optional. + */ + for (i = 0; i < PLANE_STRIDE; i++) { + /* + * Initialize data for i-th source dataset. + */ + for (j = 0; j < DIM0_1 * DIM1 * DIM2; j++) + wdata[j] = i + 1; + + /* + * Create the source files and datasets. Write data to each dataset and + * close all resources. + */ + + file = H5Fcreate(SRC_FILE[i], H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + src_space = H5Screate_simple(RANK, dims, dims_max); + dcpl = H5Pcreate(H5P_DATASET_CREATE); + status = H5Pset_chunk(dcpl, RANK, chunk_dims); + dset = H5Dcreate2(file, SRC_DATASET[i], H5T_NATIVE_INT, src_space, H5P_DEFAULT, dcpl, H5P_DEFAULT); + status = H5Dwrite(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); + status = H5Sclose(src_space); + status = H5Pclose(dcpl); + status = H5Dclose(dset); + status = H5Fclose(file); + } + + vfile = H5Fcreate(VFILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + + /* Create VDS dataspace. */ + vspace = H5Screate_simple(RANK, vdsdims, vdsdims_max); + + /* Create dataspaces for the source dataset. */ + src_space = H5Screate_simple(RANK, dims, dims_max); + + /* Create VDS creation property */ + dcpl = H5Pcreate(H5P_DATASET_CREATE); + + /* Initialize hyperslab values */ + + start[0] = 0; + start[1] = 0; + start[2] = 0; + stride[0] = PLANE_STRIDE; /* we will select every fifth plane in VDS */ + stride[1] = 1; + stride[2] = 1; + count[0] = H5S_UNLIMITED; + count[1] = 1; + count[2] = 1; + src_count[0] = H5S_UNLIMITED; + src_count[1] = 1; + src_count[2] = 1; + block[0] = 1; + block[1] = DIM1; + block[2] = DIM2; + + /* + * Build the mappings + */ + status = H5Sselect_hyperslab(src_space, H5S_SELECT_SET, start, NULL, src_count, block); + for (i = 0; i < PLANE_STRIDE; i++) { + status = H5Sselect_hyperslab(vspace, H5S_SELECT_SET, start, stride, count, block); + status = H5Pset_virtual(dcpl, vspace, SRC_FILE[i], SRC_DATASET[i], src_space); + start[0]++; + } + + H5Sselect_none(vspace); + + /* Create a virtual dataset */ + vdset = H5Dcreate2(vfile, DATASET, H5T_NATIVE_INT, vspace, H5P_DEFAULT, dcpl, H5P_DEFAULT); + status = H5Sclose(vspace); + status = H5Sclose(src_space); + status = H5Pclose(dcpl); + + /* Let's add data to the source datasets and check new dimensions for VDS */ + /* We will add only one plane to the first source dataset, two planes to the + second one, three to the third, and four to the forth. */ + + /* Let's add data to the source datasets and check new dimensions for VDS */ + for (i = 0; i < PLANE_STRIDE; i++) { + /* + * Initialize data for i-th source dataset. + */ + for (j = 0; j < (i + 1) * DIM1 * DIM2; j++) + wdata[j] = 10 * (i + 1); + + /* + * Open the source files and datasets. Append data to each dataset and + * close all resources. + */ + + file = H5Fopen(SRC_FILE[i], H5F_ACC_RDWR, H5P_DEFAULT); + dset = H5Dopen2(file, SRC_DATASET[i], H5P_DEFAULT); + extdims[0] = DIM0_1 + i + 1; + status = H5Dset_extent(dset, extdims); + src_space = H5Dget_space(dset); + start[0] = DIM0_1; + start[1] = 0; + start[2] = 0; + count[0] = 1; + count[1] = 1; + count[2] = 1; + block[0] = i + 1; + block[1] = DIM1; + block[2] = DIM2; + + memdims[0] = i + 1; + mem_space = H5Screate_simple(RANK, memdims, NULL); + status = H5Sselect_hyperslab(src_space, H5S_SELECT_SET, start, NULL, count, block); + status = H5Dwrite(dset, H5T_NATIVE_INT, mem_space, src_space, H5P_DEFAULT, wdata); + status = H5Sclose(src_space); + status = H5Dclose(dset); + status = H5Fclose(file); + } + + status = H5Dclose(vdset); + status = H5Fclose(vfile); + + /* + * Now we begin the read section of this example. + */ + + /* + * Open file and dataset using the default properties. + */ + vfile = H5Fopen(VFILE, H5F_ACC_RDONLY, H5P_DEFAULT); + + /* + * Open VDS using different access properties to use max or + * min extents depending on the sizes of the underlying datasets + */ + dapl = H5Pcreate(H5P_DATASET_ACCESS); + + for (i = 0; i < 2; i++) { + status = H5Pset_virtual_view(dapl, i ? H5D_VDS_LAST_AVAILABLE : H5D_VDS_FIRST_MISSING); + vdset = H5Dopen2(vfile, DATASET, dapl); + + /* Let's get space of the VDS and its dimension; we should get 32(or 20)x10x10 */ + vspace = H5Dget_space(vdset); + H5Sget_simple_extent_dims(vspace, vdsdims_out, vdsdims_max_out); + printf("VDS dimensions, bounds = H5D_VDS_%s: ", i ? "LAST_AVAILABLE" : "FIRST_MISSING"); + for (j = 0; j < RANK; j++) + printf(" %d ", (int)vdsdims_out[j]); + printf("\n"); + + /* Close */ + status = H5Dclose(vdset); + status = H5Sclose(vspace); + } + + status = H5Pclose(dapl); + + vdset = H5Dopen2(vfile, DATASET, H5P_DEFAULT); + + /* + * Get creation property list and mapping properties. + */ + dcpl = H5Dget_create_plist(vdset); + + /* + * Get storage layout. + */ + layout = H5Pget_layout(dcpl); + if (H5D_VIRTUAL == layout) + printf(" Dataset has a virtual layout \n"); + else + printf("Wrong layout found \n"); + + /* + * Find the number of mappings. + */ + status = H5Pget_virtual_count(dcpl, &num_map); + printf(" Number of mappings is %lu\n", (unsigned long)num_map); + + /* + * Get mapping parameters for each mapping. + */ + for (i = 0; i < (int)num_map; i++) { + printf(" Mapping %d \n", i); + printf(" Selection in the virtual dataset \n"); + /* Get selection in the virtual dataset */ + vspace = H5Pget_virtual_vspace(dcpl, (size_t)i); + + /* Make sure that this is a hyperslab selection and then print information. */ + if (H5Sget_select_type(vspace) == H5S_SEL_HYPERSLABS) { + if (H5Sis_regular_hyperslab(vspace)) { + status = H5Sget_regular_hyperslab(vspace, start_out, stride_out, count_out, block_out); + printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0], + (unsigned long long)start_out[1], (unsigned long long)start_out[2]); + printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0], + (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]); + printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0], + (unsigned long long)count_out[1], (unsigned long long)count_out[2]); + printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0], + (unsigned long long)block_out[1], (unsigned long long)block_out[2]); + } + } + /* Get source file name */ + len = H5Pget_virtual_filename(dcpl, (size_t)i, NULL, 0); + filename = (char *)malloc((size_t)len * sizeof(char) + 1); + H5Pget_virtual_filename(dcpl, (size_t)i, filename, len + 1); + printf(" Source filename %s\n", filename); + + /* Get source dataset name */ + len = H5Pget_virtual_dsetname(dcpl, (size_t)i, NULL, 0); + dsetname = (char *)malloc((size_t)len * sizeof(char) + 1); + H5Pget_virtual_dsetname(dcpl, (size_t)i, dsetname, len + 1); + printf(" Source dataset name %s\n", dsetname); + + /* Get selection in the source dataset */ + printf(" Selection in the source dataset \n"); + src_space = H5Pget_virtual_srcspace(dcpl, (size_t)i); + if (H5Sget_select_type(src_space) == H5S_SEL_HYPERSLABS) { + if (H5Sis_regular_hyperslab(src_space)) { + status = H5Sget_regular_hyperslab(src_space, start_out, stride_out, count_out, block_out); + printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0], + (unsigned long long)start_out[1], (unsigned long long)start_out[2]); + printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0], + (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]); + printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0], + (unsigned long long)count_out[1], (unsigned long long)count_out[2]); + printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0], + (unsigned long long)block_out[1], (unsigned long long)block_out[2]); + } + } + H5Sclose(vspace); + H5Sclose(src_space); + free(filename); + free(dsetname); + } + + /* + * Read data from VDS. + */ + vspace = H5Dget_space(vdset); + H5Sget_simple_extent_dims(vspace, vdsdims_out, vdsdims_max_out); + printf("VDS dimensions second time \n"); + printf(" Current: "); + for (i = 0; i < RANK; i++) + printf(" %d ", (int)vdsdims_out[i]); + printf("\n"); + + /* Read all VDS data */ + + /* We should be able to do it by using H5S_ALL instead of making selection + * or using H5Sselect_all from vspace. + */ + start[0] = 0; + start[1] = 0; + start[2] = 0; + count[0] = 1; + count[1] = 1; + count[2] = 1; + block[0] = vdsdims_out[0]; + block[1] = vdsdims_out[1]; + block[2] = vdsdims_out[2]; + + status = H5Sselect_hyperslab(vspace, H5S_SELECT_SET, start, NULL, count, block); + mem_space = H5Screate_simple(RANK, vdsdims_out, NULL); + status = H5Dread(vdset, H5T_NATIVE_INT, mem_space, vspace, H5P_DEFAULT, rdata); + printf(" All data: \n"); + for (i = 0; i < (int)vdsdims_out[0]; i++) { + for (j = 0; j < (int)vdsdims_out[1]; j++) { + printf("(%d, %d, 0)", i, j); + for (k = 0; k < (int)vdsdims_out[2]; k++) + printf(" %d ", rdata[i][j][k]); + printf("\n"); + } + } + + /* + * Close and release resources. + */ + status = H5Sclose(mem_space); + status = H5Pclose(dcpl); + status = H5Dclose(vdset); + status = H5Fclose(vfile); + + return 0; +} diff --git a/HDF5Examples/C/H5VDS/h5ex_vds-percival-unlim.c b/HDF5Examples/C/H5VDS/h5ex_vds-percival-unlim.c new file mode 100644 index 0000000..fadfb79 --- /dev/null +++ b/HDF5Examples/C/H5VDS/h5ex_vds-percival-unlim.c @@ -0,0 +1,357 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * 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 COPYING file, which can be found at the root of the source code * + * distribution tree, or in https://www.hdfgroup.org/licenses. * + * If you do not have access to either file, you may request a copy from * + * help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/************************************************************ + + This example illustrates the concept of the virtual dataset. + Percival use case. Every fifth 10x10 plane in VDS is stored in + the corresponding 3D unlimited dataset. + There are 4 source datasets total. + This file is intended for use with HDF5 Library version 1.10 + + ************************************************************/ + +#include "hdf5.h" +#include +#include + +#define VFILE "h5ex_vds-percival-unlim.h5" +#define DATASET "VDS-Percival-unlim" +#define VDSDIM0 H5S_UNLIMITED +#define VDSDIM1 10 +#define VDSDIM2 10 + +#define DIM0 H5S_UNLIMITED +#define DIM0_1 10 /* Initial size of the datasets */ +#define DIM1 10 +#define DIM2 10 +#define RANK 3 +#define PLANE_STRIDE 4 + +const char *SRC_FILE[] = {"apu.h5", "bpu.h5", "cpu.h5", "dpu.h5"}; + +const char *SRC_DATASET[] = {"A", "B", "C", "D"}; + +int +main(void) +{ + hid_t file = H5I_INVALID_HID; + hid_t vfile = H5I_INVALID_HID; + hid_t space = H5I_INVALID_HID; + hid_t dset = H5I_INVALID_HID; + hid_t vdset = H5I_INVALID_HID; + hid_t src_space = H5I_INVALID_HID; + hid_t mem_space = H5I_INVALID_HID; + hid_t vspace = H5I_INVALID_HID; + hid_t dcpl = H5I_INVALID_HID; + herr_t status; + hsize_t vdsdims[3] = {4 * DIM0_1, VDSDIM1, VDSDIM2}; + hsize_t vdsdims_max[3] = {VDSDIM0, VDSDIM1, VDSDIM2}; + hsize_t dims[3] = {DIM0_1, DIM1, DIM2}; + hsize_t extdims[3] = {2 * DIM0_1, DIM1, DIM2}; + hsize_t chunk_dims[3] = {DIM0_1, DIM1, DIM2}; + hsize_t dims_max[3] = {DIM0, DIM1, DIM2}; + hsize_t vdsdims_out[3]; + hsize_t vdsdims_max_out[3], start[3], stride[3], count[3], src_count[3], + block[3]; /* Hyperslab parameters */ + hsize_t start_out[3], stride_out[3], count_out[3], block_out[3]; /* Hyperslab parameter out */ + int wdata[DIM0_1 * DIM1 * DIM2]; + int rdata[8 * DIM0_1][VDSDIM1][VDSDIM2]; + int a_rdata[2 * DIM0_1][VDSDIM1][VDSDIM2]; + int i, j, k; + H5D_layout_t layout; /* Storage layout */ + size_t num_map; /* Number of mappings */ + ssize_t len; /* Length of the string; also a return value */ + char *filename = NULL; + char *dsetname = NULL; + + /* + * Create source files and datasets. This step is optional. + */ + for (i = 0; i < PLANE_STRIDE; i++) { + /* + * Initialize data for i-th source dataset. + */ + for (j = 0; j < DIM0_1 * DIM1 * DIM2; j++) + wdata[j] = i + 1; + + /* + * Create the source files and datasets. Write data to each dataset and + * close all resources. + */ + + file = H5Fcreate(SRC_FILE[i], H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + src_space = H5Screate_simple(RANK, dims, dims_max); + dcpl = H5Pcreate(H5P_DATASET_CREATE); + status = H5Pset_chunk(dcpl, RANK, chunk_dims); + dset = H5Dcreate2(file, SRC_DATASET[i], H5T_NATIVE_INT, src_space, H5P_DEFAULT, dcpl, H5P_DEFAULT); + status = H5Dwrite(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); + status = H5Sclose(src_space); + status = H5Pclose(dcpl); + status = H5Dclose(dset); + status = H5Fclose(file); + } + + vfile = H5Fcreate(VFILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + + /* Create VDS dataspace. */ + vspace = H5Screate_simple(RANK, vdsdims, vdsdims_max); + + /* Create dataspaces for the source dataset. */ + src_space = H5Screate_simple(RANK, dims, dims_max); + + /* Create VDS creation property */ + dcpl = H5Pcreate(H5P_DATASET_CREATE); + + /* Initialize hyperslab values */ + + start[0] = 0; + start[1] = 0; + start[2] = 0; + stride[0] = PLANE_STRIDE; /* we will select every fifth plane in VDS */ + stride[1] = 1; + stride[2] = 1; + count[0] = H5S_UNLIMITED; + count[1] = 1; + count[2] = 1; + src_count[0] = H5S_UNLIMITED; + src_count[1] = 1; + src_count[2] = 1; + block[0] = 1; + block[1] = DIM1; + block[2] = DIM2; + + /* + * Build the mappings + */ + status = H5Sselect_hyperslab(src_space, H5S_SELECT_SET, start, NULL, src_count, block); + for (i = 0; i < PLANE_STRIDE; i++) { + status = H5Sselect_hyperslab(vspace, H5S_SELECT_SET, start, stride, count, block); + status = H5Pset_virtual(dcpl, vspace, SRC_FILE[i], SRC_DATASET[i], src_space); + start[0]++; + } + + H5Sselect_none(vspace); + + /* Create a virtual dataset */ + vdset = H5Dcreate2(vfile, DATASET, H5T_NATIVE_INT, vspace, H5P_DEFAULT, dcpl, H5P_DEFAULT); + status = H5Sclose(vspace); + status = H5Sclose(src_space); + status = H5Pclose(dcpl); + + /* Let's get space of the VDS and its dimension; we should get 40x10x10 */ + vspace = H5Dget_space(vdset); + H5Sget_simple_extent_dims(vspace, vdsdims_out, vdsdims_max_out); + printf("VDS dimensions first time \n"); + printf(" Current: "); + for (i = 0; i < RANK; i++) + printf(" %d ", (int)vdsdims_out[i]); + printf("\n"); + + /* Let's add data to the source datasets and check new dimensions for VDS */ + for (i = 0; i < PLANE_STRIDE; i++) { + /* + * Initialize data for i-th source dataset. + */ + for (j = 0; j < DIM0_1 * DIM1 * DIM2; j++) + wdata[j] = 10 * (i + 1); + + /* + * Create the source files and datasets. Write data to each dataset and + * close all resources. + */ + file = H5Fopen(SRC_FILE[i], H5F_ACC_RDWR, H5P_DEFAULT); + dset = H5Dopen2(file, SRC_DATASET[i], H5P_DEFAULT); + status = H5Dset_extent(dset, extdims); + src_space = H5Dget_space(dset); + start[0] = DIM0_1; + start[1] = 0; + start[2] = 0; + count[0] = 1; + count[1] = 1; + count[2] = 1; + block[0] = DIM0_1; + block[1] = DIM1; + block[2] = DIM2; + + mem_space = H5Screate_simple(RANK, dims, NULL); + status = H5Sselect_hyperslab(src_space, H5S_SELECT_SET, start, NULL, count, block); + status = H5Dwrite(dset, H5T_NATIVE_INT, mem_space, src_space, H5P_DEFAULT, wdata); + status = H5Sclose(src_space); + status = H5Dclose(dset); + status = H5Fclose(file); + } + + status = H5Dclose(vdset); + status = H5Fclose(vfile); + + /* + * Now we begin the read section of this example. + */ + + /* + * Open file and dataset using the default properties. + */ + vfile = H5Fopen(VFILE, H5F_ACC_RDONLY, H5P_DEFAULT); + vdset = H5Dopen2(vfile, DATASET, H5P_DEFAULT); + + /* + * Get creation property list and mapping properties. + */ + dcpl = H5Dget_create_plist(vdset); + + /* + * Get storage layout. + */ + layout = H5Pget_layout(dcpl); + if (H5D_VIRTUAL == layout) + printf(" Dataset has a virtual layout \n"); + else + printf("Wrong layout found \n"); + + /* + * Find the number of mappings. + */ + status = H5Pget_virtual_count(dcpl, &num_map); + printf(" Number of mappings is %lu\n", (unsigned long)num_map); + + /* + * Get mapping parameters for each mapping. + */ + for (i = 0; i < (int)num_map; i++) { + printf(" Mapping %d \n", i); + printf(" Selection in the virtual dataset \n"); + /* Get selection in the virtual dataset */ + vspace = H5Pget_virtual_vspace(dcpl, (size_t)i); + + /* Make sure that this is a hyperslab selection and then print information. */ + if (H5Sget_select_type(vspace) == H5S_SEL_HYPERSLABS) { + if (H5Sis_regular_hyperslab(vspace)) { + status = H5Sget_regular_hyperslab(vspace, start_out, stride_out, count_out, block_out); + printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0], + (unsigned long long)start_out[1], (unsigned long long)start_out[2]); + printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0], + (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]); + printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0], + (unsigned long long)count_out[1], (unsigned long long)count_out[2]); + printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0], + (unsigned long long)block_out[1], (unsigned long long)block_out[2]); + } + } + /* Get source file name */ + len = H5Pget_virtual_filename(dcpl, (size_t)i, NULL, 0); + filename = (char *)malloc((size_t)len * sizeof(char) + 1); + H5Pget_virtual_filename(dcpl, (size_t)i, filename, len + 1); + printf(" Source filename %s\n", filename); + + /* Get source dataset name */ + len = H5Pget_virtual_dsetname(dcpl, (size_t)i, NULL, 0); + dsetname = (char *)malloc((size_t)len * sizeof(char) + 1); + H5Pget_virtual_dsetname(dcpl, (size_t)i, dsetname, len + 1); + printf(" Source dataset name %s\n", dsetname); + + /* Get selection in the source dataset */ + printf(" Selection in the source dataset \n"); + src_space = H5Pget_virtual_srcspace(dcpl, (size_t)i); + if (H5Sget_select_type(src_space) == H5S_SEL_HYPERSLABS) { + if (H5Sis_regular_hyperslab(src_space)) { + status = H5Sget_regular_hyperslab(src_space, start_out, stride_out, count_out, block_out); + printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0], + (unsigned long long)start_out[1], (unsigned long long)start_out[2]); + printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0], + (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]); + printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0], + (unsigned long long)count_out[1], (unsigned long long)count_out[2]); + printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0], + (unsigned long long)block_out[1], (unsigned long long)block_out[2]); + } + } + H5Sclose(vspace); + H5Sclose(src_space); + free(filename); + free(dsetname); + } + + /* + * Read data from VDS. + */ + vspace = H5Dget_space(vdset); + H5Sget_simple_extent_dims(vspace, vdsdims_out, vdsdims_max_out); + printf("VDS dimensions second time \n"); + printf(" Current: "); + for (i = 0; i < RANK; i++) + printf(" %d ", (int)vdsdims_out[i]); + printf("\n"); + + /* Read all VDS data */ + + /* We should be able to do it by using H5S_ALL instead of making selection + * or using H5Sselect_all from vspace. + */ + start[0] = 0; + start[1] = 0; + start[2] = 0; + count[0] = 1; + count[1] = 1; + count[2] = 1; + block[0] = vdsdims_out[0]; + block[1] = vdsdims_out[1]; + block[2] = vdsdims_out[2]; + + status = H5Sselect_hyperslab(vspace, H5S_SELECT_SET, start, NULL, count, block); + mem_space = H5Screate_simple(RANK, vdsdims_out, NULL); + status = H5Dread(vdset, H5T_NATIVE_INT, mem_space, vspace, H5P_DEFAULT, rdata); + printf(" All data: \n"); + for (i = 0; i < (int)vdsdims_out[0]; i++) { + for (j = 0; j < (int)vdsdims_out[1]; j++) { + printf("(%d, %d, 0)", i, j); + for (k = 0; k < (int)vdsdims_out[2]; k++) + printf(" %d ", rdata[i][j][k]); + printf("\n"); + } + } + /* Read VDS, but only data mapped to dataset a.h5 */ + start[0] = 0; + start[1] = 0; + start[2] = 0; + stride[0] = PLANE_STRIDE; + stride[1] = 1; + stride[2] = 1; + count[0] = 2 * DIM0_1; + count[1] = 1; + count[2] = 1; + block[0] = 1; + block[1] = vdsdims_out[1]; + block[2] = vdsdims_out[2]; + dims[0] = 2 * DIM0_1; + status = H5Sselect_hyperslab(vspace, H5S_SELECT_SET, start, stride, count, block); + mem_space = H5Screate_simple(RANK, dims, NULL); + status = H5Dread(vdset, H5T_NATIVE_INT, mem_space, vspace, H5P_DEFAULT, a_rdata); + printf(" All data: \n"); + for (i = 0; i < 2 * DIM0_1; i++) { + for (j = 0; j < (int)vdsdims_out[1]; j++) { + printf("(%d, %d, 0)", i, j); + for (k = 0; k < (int)vdsdims_out[2]; k++) + printf(" %d ", a_rdata[i][j][k]); + printf("\n"); + } + } + + /* + * Close and release resources. + */ + status = H5Sclose(mem_space); + status = H5Pclose(dcpl); + status = H5Dclose(vdset); + status = H5Fclose(vfile); + + return 0; +} diff --git a/HDF5Examples/C/H5VDS/h5ex_vds-percival.c b/HDF5Examples/C/H5VDS/h5ex_vds-percival.c new file mode 100644 index 0000000..edbef18 --- /dev/null +++ b/HDF5Examples/C/H5VDS/h5ex_vds-percival.c @@ -0,0 +1,254 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * 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 COPYING file, which can be found at the root of the source code * + * distribution tree, or in https://www.hdfgroup.org/licenses. * + * If you do not have access to either file, you may request a copy from * + * help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/************************************************************ + + This example illustrates the concept of the virtual dataset. + Percival use case. Every fifth 10x10 plane in VDS is stored in + the corresponding 3D unlimited dataset. + There are 4 source datasets total. + This file is intended for use with HDF5 Library version 1.10 + + ************************************************************/ + +#include "hdf5.h" +#include +#include + +#define FILE "h5ex_vds-percival.h5" +#define DATASET "VDS-Percival" +#define VDSDIM0 40 +#define VDSDIM1 10 +#define VDSDIM2 10 +#define DIM0 10 +#define DIM1 10 +#define DIM2 10 +#define RANK 3 +#define PLANE_STRIDE 4 + +const char *SRC_FILE[] = {"ap.h5", "bp.h5", "cp.h5", "dp.h5"}; + +const char *SRC_DATASET[] = {"A", "B", "C", "D"}; + +int +main(void) +{ + hid_t file = H5I_INVALID_HID; + hid_t space = H5I_INVALID_HID; + hid_t dset = H5I_INVALID_HID; + hid_t src_space = H5I_INVALID_HID; + hid_t vspace = H5I_INVALID_HID; + hid_t dcpl = H5I_INVALID_HID; + herr_t status; + hsize_t vdsdims[3] = {VDSDIM0, VDSDIM1, VDSDIM2}; + hsize_t vdsdims_max[3] = {VDSDIM0, VDSDIM1, VDSDIM2}; + hsize_t dims[3] = {DIM0, DIM1, DIM2}; + hsize_t dims_max[3] = {DIM0, DIM1, DIM2}; + hsize_t start[3], stride[3], count[3], src_count[3], block[3]; /* Hyperslab start parameter for VDS */ + hsize_t start_out[3], stride_out[3], count_out[3], block_out[3]; /* Hyperslab parameter out */ + int wdata[DIM0 * DIM1 * DIM2]; + int rdata[VDSDIM0][VDSDIM1][VDSDIM2]; /* Read buffer for virtual dataset */ + int i, j, k; + H5D_layout_t layout; /* Storage layout */ + size_t num_map; /* Number of mappings */ + ssize_t len; /* Length of the string; also a return value */ + char *filename = NULL; + char *dsetname = NULL; + + /* + * Create source files and datasets. This step is optional. + */ + for (i = 0; i < PLANE_STRIDE; i++) { + /* + * Initialize data for i-th source dataset. + */ + for (j = 0; j < DIM0 * DIM1 * DIM2; j++) + wdata[j] = i + 1; + + /* + * Create the source files and datasets. Write data to each dataset and + * close all resources. + */ + + file = H5Fcreate(SRC_FILE[i], H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + src_space = H5Screate_simple(RANK, dims, NULL); + dset = H5Dcreate2(file, SRC_DATASET[i], H5T_NATIVE_INT, src_space, H5P_DEFAULT, H5P_DEFAULT, + H5P_DEFAULT); + status = H5Dwrite(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); + status = H5Sclose(src_space); + status = H5Dclose(dset); + status = H5Fclose(file); + } + + file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + + /* Create VDS dataspace. */ + vspace = H5Screate_simple(RANK, vdsdims, vdsdims_max); + + /* Create dataspaces for the source dataset. */ + src_space = H5Screate_simple(RANK, dims, dims_max); + + /* Create VDS creation property */ + dcpl = H5Pcreate(H5P_DATASET_CREATE); + + /* Initialize hyperslab values */ + + start[0] = 0; + start[1] = 0; + start[2] = 0; + stride[0] = PLANE_STRIDE; /* we will select every fifth plane in VDS */ + stride[1] = 1; + stride[2] = 1; + count[0] = VDSDIM0 / 4; + count[1] = 1; + count[2] = 1; + src_count[0] = DIM0; + src_count[1] = 1; + src_count[2] = 1; + block[0] = 1; + block[1] = DIM1; + block[2] = DIM2; + + /* + * Build the mappings + */ + status = H5Sselect_hyperslab(src_space, H5S_SELECT_SET, start, NULL, src_count, block); + for (i = 0; i < PLANE_STRIDE; i++) { + status = H5Sselect_hyperslab(vspace, H5S_SELECT_SET, start, stride, count, block); + status = H5Pset_virtual(dcpl, vspace, SRC_FILE[i], SRC_DATASET[i], src_space); + start[0]++; + } + + H5Sselect_none(vspace); + + /* Create a virtual dataset */ + dset = H5Dcreate2(file, DATASET, H5T_NATIVE_INT, vspace, H5P_DEFAULT, dcpl, H5P_DEFAULT); + status = H5Sclose(vspace); + status = H5Sclose(src_space); + status = H5Dclose(dset); + status = H5Fclose(file); + + /* + * Now we begin the read section of this example. + */ + + /* + * Open file and dataset using the default properties. + */ + file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT); + dset = H5Dopen2(file, DATASET, H5P_DEFAULT); + + /* + * Get creation property list and mapping properties. + */ + dcpl = H5Dget_create_plist(dset); + + /* + * Get storage layout. + */ + layout = H5Pget_layout(dcpl); + if (H5D_VIRTUAL == layout) + printf(" Dataset has a virtual layout \n"); + else + printf("Wrong layout found \n"); + + /* + * Find the number of mappings. + */ + status = H5Pget_virtual_count(dcpl, &num_map); + printf(" Number of mappings is %lu\n", (unsigned long)num_map); + + /* + * Get mapping parameters for each mapping. + */ + for (i = 0; i < (int)num_map; i++) { + printf(" Mapping %d \n", i); + printf(" Selection in the virtual dataset \n"); + /* Get selection in the virtual dataset */ + vspace = H5Pget_virtual_vspace(dcpl, (size_t)i); + + /* Make sure that this is a hyperslab selection and then print information. */ + if (H5Sget_select_type(vspace) == H5S_SEL_HYPERSLABS) { + if (H5Sis_regular_hyperslab(vspace)) { + status = H5Sget_regular_hyperslab(vspace, start_out, stride_out, count_out, block_out); + printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0], + (unsigned long long)start_out[1], (unsigned long long)start_out[2]); + printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0], + (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]); + printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0], + (unsigned long long)count_out[1], (unsigned long long)count_out[2]); + printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0], + (unsigned long long)block_out[1], (unsigned long long)block_out[2]); + } + } + /* Get source file name */ + len = H5Pget_virtual_filename(dcpl, (size_t)i, NULL, 0); + filename = (char *)malloc((size_t)len * sizeof(char) + 1); + H5Pget_virtual_filename(dcpl, (size_t)i, filename, len + 1); + printf(" Source filename %s\n", filename); + + /* Get source dataset name */ + len = H5Pget_virtual_dsetname(dcpl, (size_t)i, NULL, 0); + dsetname = (char *)malloc((size_t)len * sizeof(char) + 1); + H5Pget_virtual_dsetname(dcpl, (size_t)i, dsetname, len + 1); + printf(" Source dataset name %s\n", dsetname); + + /* Get selection in the source dataset */ + printf(" Selection in the source dataset \n"); + src_space = H5Pget_virtual_srcspace(dcpl, (size_t)i); + if (H5Sget_select_type(src_space) == H5S_SEL_HYPERSLABS) { + if (H5Sis_regular_hyperslab(src_space)) { + status = H5Sget_regular_hyperslab(src_space, start_out, stride_out, count_out, block_out); + printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0], + (unsigned long long)start_out[1], (unsigned long long)start_out[2]); + printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0], + (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]); + printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0], + (unsigned long long)count_out[1], (unsigned long long)count_out[2]); + printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0], + (unsigned long long)block_out[1], (unsigned long long)block_out[2]); + } + } + H5Sclose(vspace); + H5Sclose(src_space); + free(filename); + free(dsetname); + } + + /* + * Read the data using the default properties. + */ + status = H5Dread(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata[0]); + + /* + * Output the data to the screen. + */ + printf(" VDS Data:\n"); + for (i = 0; i < VDSDIM0; i++) { + printf(" ["); + for (j = 0; j < VDSDIM1; j++) { + printf(" ["); + for (k = 0; k < VDSDIM1; k++) + printf(" %3d", rdata[i][j][k]); + printf("]"); + } + printf("]\n"); + } + + /* + * Close and release resources. + */ + status = H5Pclose(dcpl); + status = H5Dclose(dset); + status = H5Fclose(file); + + return 0; +} diff --git a/HDF5Examples/C/H5VDS/h5ex_vds-simpleIO.c b/HDF5Examples/C/H5VDS/h5ex_vds-simpleIO.c new file mode 100644 index 0000000..3bd3133 --- /dev/null +++ b/HDF5Examples/C/H5VDS/h5ex_vds-simpleIO.c @@ -0,0 +1,196 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * 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 COPYING file, which can be found at the root of the source code * + * distribution tree, or in https://www.hdfgroup.org/licenses. * + * If you do not have access to either file, you may request a copy from * + * help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/************************************************************ + + This example illustrates the concept of virtual dataset I/O + The program creates 2-dim source dataset and writes + data to it. Then it creates 2-dim virtual dataset that has + the same dimension sizes and maps the all elements of the + virtual dataset to all elements of the source dataset. + Then VDS is read back. + + This file is intended for use with HDF5 Library version 1.10 + + ************************************************************/ + +#include "hdf5.h" +#include +#include + +#define FILE "h5ex_vds-simpleIO.h5" +#define DATASET "VDS" +#define DIM1 6 +#define DIM0 4 +#define RANK 2 + +#define SRC_FILE "as.h5" +#define SRC_DATASET "/A" + +int +main(void) +{ + hid_t file = H5I_INVALID_HID; + hid_t space = H5I_INVALID_HID; + hid_t dset = H5I_INVALID_HID; + hid_t src_space = H5I_INVALID_HID; + hid_t vspace = H5I_INVALID_HID; + hid_t dcpl = H5I_INVALID_HID; + herr_t status; + hsize_t vdsdims[2] = {DIM0, DIM1}; /* Virtual dataset dimension */ + hsize_t dims[2] = {DIM0, DIM1}; /* Source dataset dimensions */ + int wdata[DIM0][DIM1]; /* Write buffer for source dataset */ + int rdata[DIM0][DIM1]; /* Read buffer for virtual dataset */ + int i, j; + H5D_layout_t layout; /* Storage layout */ + size_t num_map; /* Number of mappings */ + ssize_t len; /* Length of the string; also a return value */ + char *filename = NULL; + char *dsetname = NULL; + + /* + * Initialize data. + */ + for (i = 0; i < DIM0; i++) + for (j = 0; j < DIM1; j++) + wdata[i][j] = i + 1; + + /* + * Create the source file and the dataset. Write data to the source dataset + * and close all resources. + */ + file = H5Fcreate(SRC_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + space = H5Screate_simple(RANK, dims, NULL); + dset = H5Dcreate2(file, SRC_DATASET, H5T_NATIVE_INT, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + status = H5Dwrite(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata[0]); + status = H5Sclose(space); + status = H5Dclose(dset); + status = H5Fclose(file); + + /* Create file in which virtual dataset will be stored. */ + file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + + /* Create VDS dataspace. */ + vspace = H5Screate_simple(RANK, vdsdims, NULL); + + /* Set VDS creation property. */ + dcpl = H5Pcreate(H5P_DATASET_CREATE); + + /* + * Build the mappings. + * Selections in the source datasets are H5S_ALL. + * In the virtual dataset we select the first, the second and the third rows + * and map each row to the data in the corresponding source dataset. + */ + src_space = H5Screate_simple(RANK, dims, NULL); + status = H5Pset_virtual(dcpl, vspace, SRC_FILE, SRC_DATASET, src_space); + + /* Create a virtual dataset */ + dset = H5Dcreate2(file, DATASET, H5T_NATIVE_INT, vspace, H5P_DEFAULT, dcpl, H5P_DEFAULT); + status = H5Sclose(vspace); + status = H5Sclose(src_space); + status = H5Dclose(dset); + status = H5Fclose(file); + + /* + * Now we begin the read section of this example. + */ + + /* + * Open the file and virtual dataset + */ + file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT); + dset = H5Dopen2(file, DATASET, H5P_DEFAULT); + + /* + * Get creation property list and mapping properties. + */ + dcpl = H5Dget_create_plist(dset); + + /* + * Get storage layout. + */ + layout = H5Pget_layout(dcpl); + if (H5D_VIRTUAL == layout) + printf(" Dataset has a virtual layout \n"); + else + printf("Wrong layout found \n"); + + /* + * Find the number of mappings. + */ + status = H5Pget_virtual_count(dcpl, &num_map); + printf(" Number of mappings is %lu\n", (unsigned long)num_map); + + /* + * Get mapping parameters for each mapping. + */ + for (i = 0; i < (int)num_map; i++) { + printf(" Mapping %d \n", i); + printf(" Selection in the virtual dataset "); + /* Get selection in the virtual dataset */ + vspace = H5Pget_virtual_vspace(dcpl, (size_t)i); + + /* Make sure it is ALL selection and then print selection. */ + if (H5Sget_select_type(vspace) == H5S_SEL_ALL) { + printf("Selection is H5S_ALL \n"); + } + /* Get source file name */ + len = H5Pget_virtual_filename(dcpl, (size_t)i, NULL, 0); + filename = (char *)malloc((size_t)len * sizeof(char) + 1); + H5Pget_virtual_filename(dcpl, (size_t)i, filename, len + 1); + printf(" Source filename %s\n", filename); + + /* Get source dataset name */ + len = H5Pget_virtual_dsetname(dcpl, (size_t)i, NULL, 0); + dsetname = (char *)malloc((size_t)len * sizeof(char) + 1); + H5Pget_virtual_dsetname(dcpl, (size_t)i, dsetname, len + 1); + printf(" Source dataset name %s\n", dsetname); + + /* Get selection in the source dataset */ + printf(" Selection in the source dataset "); + src_space = H5Pget_virtual_srcspace(dcpl, (size_t)i); + + /* Make sure it is ALL selection and then print selection */ + if (H5Sget_select_type(src_space) == H5S_SEL_ALL) { + printf("Selection is H5S_ALL \n"); + } + H5Sclose(vspace); + H5Sclose(src_space); + free(filename); + free(dsetname); + } + + /* + * Read the data using the default properties. + */ + status = H5Dread(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata[0]); + + /* + * Output the data to the screen. + */ + printf(" VDS Data:\n"); + for (i = 0; i < DIM0; i++) { + printf(" ["); + for (j = 0; j < DIM1; j++) + printf(" %3d", rdata[i][j]); + printf("]\n"); + } + + /* + * Close and release resources. + */ + status = H5Pclose(dcpl); + status = H5Dclose(dset); + status = H5Fclose(file); + + return 0; +} diff --git a/HDF5Examples/C/H5VDS/h5ex_vds.c b/HDF5Examples/C/H5VDS/h5ex_vds.c new file mode 100644 index 0000000..96a8137 --- /dev/null +++ b/HDF5Examples/C/H5VDS/h5ex_vds.c @@ -0,0 +1,254 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * 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 COPYING file, which can be found at the root of the source code * + * distribution tree, or in https://www.hdfgroup.org/licenses. * + * If you do not have access to either file, you may request a copy from * + * help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/************************************************************ + + This example illustrates the concept of virtual dataset. + The program creates three 1-dim source datasets and writes + data to them. Then it creates a 2-dim virtual dataset and + maps the first three rows of the virtual dataset to the data + in the source datasets. Elements of a row are mapped to all + elements of the corresponding source dataset. + The fourth row is not mapped and will be filled with the fill + values when virtual dataset is read back. + + The program closes all datasets, and then reopens the virtual + dataset, and finds and prints its creation properties. + Then it reads the values. + + This file is intended for use with HDF5 Library version 1.10 + + ************************************************************/ + +#include "hdf5.h" +#include +#include + +#define FILE "h5ex_vds.h5" +#define DATASET "VDS" +#define VDSDIM1 6 +#define VDSDIM0 4 +#define DIM0 6 +#define RANK1 1 +#define RANK2 2 + +const char *SRC_FILE[] = {"h5ex_vds_a.h5", "h5ex_vds_b.h5", "h5ex_vds_c.h5"}; + +const char *SRC_DATASET[] = {"A", "B", "C"}; + +int +main(void) +{ + hid_t file = H5I_INVALID_HID; + hid_t space = H5I_INVALID_HID; + hid_t dset = H5I_INVALID_HID; + hid_t src_space = H5I_INVALID_HID; + hid_t vspace = H5I_INVALID_HID; + hid_t dcpl = H5I_INVALID_HID; + herr_t status; + hsize_t vdsdims[2] = {VDSDIM0, VDSDIM1}; /* Virtual datasets dimension */ + hsize_t dims[1] = {DIM0}; /* Source datasets dimensions */ + hsize_t start[2], count[2], block[2]; /* Hyperslab parameters */ + hsize_t start_out[2], stride_out[2], count_out[2], block_out[2]; + int wdata[DIM0]; /* Write buffer for source dataset */ + int rdata[VDSDIM0][VDSDIM1]; /* Read buffer for virtual dataset */ + int i, j, k, l, block_inc; + int fill_value = -1; /* Fill value for VDS */ + H5D_layout_t layout; /* Storage layout */ + size_t num_map; /* Number of mappings */ + ssize_t len; /* Length of the string; also a return value */ + hsize_t *buf = NULL; /* Buffer to hold hyperslab coordinates */ + char *filename = NULL; + char *dsetname = NULL; + hsize_t nblocks; + + /* + * Create source files and datasets. This step is optional. + */ + for (i = 0; i < 3; i++) { + /* + * Initialize data for i-th source dataset. + */ + for (j = 0; j < DIM0; j++) + wdata[j] = i + 1; + + /* + * Create the source files and datasets. Write data to each dataset and + * close all resources. + */ + + file = H5Fcreate(SRC_FILE[i], H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + space = H5Screate_simple(RANK1, dims, NULL); + dset = H5Dcreate2(file, SRC_DATASET[i], H5T_NATIVE_INT, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + status = H5Dwrite(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); + status = H5Sclose(space); + status = H5Dclose(dset); + status = H5Fclose(file); + } + + /* Create file in which virtual dataset will be stored. */ + file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + + /* Create VDS dataspace. */ + space = H5Screate_simple(RANK2, vdsdims, NULL); + + /* Set VDS creation property. */ + dcpl = H5Pcreate(H5P_DATASET_CREATE); + status = H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fill_value); + + /* Initialize hyperslab values. */ + start[0] = 0; + start[1] = 0; + count[0] = 1; + count[1] = 1; + block[0] = 1; + block[1] = VDSDIM1; + + /* + * Build the mappings. + * Selections in the source datasets are H5S_ALL. + * In the virtual dataset we select the first, the second and the third rows + * and map each row to the data in the corresponding source dataset. + */ + src_space = H5Screate_simple(RANK1, dims, NULL); + for (i = 0; i < 3; i++) { + start[0] = (hsize_t)i; + /* Select i-th row in the virtual dataset; selection in the source datasets is the same. */ + status = H5Sselect_hyperslab(space, H5S_SELECT_SET, start, NULL, count, block); + status = H5Pset_virtual(dcpl, space, SRC_FILE[i], SRC_DATASET[i], src_space); + } + + /* Create a virtual dataset. */ + dset = H5Dcreate2(file, DATASET, H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT); + status = H5Sclose(space); + status = H5Sclose(src_space); + status = H5Dclose(dset); + status = H5Fclose(file); + + /* + * Now we begin the read section of this example. + */ + + /* + * Open file and dataset using the default properties. + */ + file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT); + dset = H5Dopen2(file, DATASET, H5P_DEFAULT); + + /* + * Get creation property list and mapping properties. + */ + dcpl = H5Dget_create_plist(dset); + + /* + * Get storage layout. + */ + layout = H5Pget_layout(dcpl); + if (H5D_VIRTUAL == layout) + printf(" Dataset has a virtual layout \n"); + else + printf("Wrong layout found \n"); + + /* + * Find the number of mappings. + */ + status = H5Pget_virtual_count(dcpl, &num_map); + printf(" Number of mappings is %lu\n", (unsigned long)num_map); + + /* + * Get mapping parameters for each mapping. + */ + for (i = 0; i < (int)num_map; i++) { + printf(" Mapping %d \n", i); + printf(" Selection in the virtual dataset "); + /* Get selection in the virtual dataset */ + vspace = H5Pget_virtual_vspace(dcpl, (size_t)i); + + /* Make sure that this is a hyperslab selection and then print information. */ + if (H5Sget_select_type(vspace) == H5S_SEL_HYPERSLABS) { + nblocks = H5Sget_select_hyper_nblocks(vspace); + buf = (hsize_t *)malloc(sizeof(hsize_t) * 2 * RANK2 * nblocks); + status = H5Sget_select_hyper_blocklist(vspace, (hsize_t)0, nblocks, buf); + for (l = 0; l < nblocks; l++) { + block_inc = 2 * RANK2 * l; + printf("("); + for (k = 0; k < RANK2 - 1; k++) + printf("%d,", (int)buf[block_inc + k]); + printf("%d) - (", (int)buf[block_inc + k]); + for (k = 0; k < RANK2 - 1; k++) + printf("%d,", (int)buf[block_inc + RANK2 + k]); + printf("%d)\n", (int)buf[block_inc + RANK2 + k]); + } + /* We also can use new APIs to get start, stride, count and block */ + if (H5Sis_regular_hyperslab(vspace)) { + status = H5Sget_regular_hyperslab(vspace, start_out, stride_out, count_out, block_out); + printf(" start = [%llu, %llu] \n", (unsigned long long)start_out[0], + (unsigned long long)start_out[1]); + printf(" stride = [%llu, %llu] \n", (unsigned long long)stride_out[0], + (unsigned long long)stride_out[1]); + printf(" count = [%llu, %llu] \n", (unsigned long long)count_out[0], + (unsigned long long)count_out[1]); + printf(" block = [%llu, %llu] \n", (unsigned long long)block_out[0], + (unsigned long long)block_out[1]); + } + } + /* Get source file name */ + len = H5Pget_virtual_filename(dcpl, (size_t)i, NULL, 0); + filename = (char *)malloc((size_t)len * sizeof(char) + 1); + H5Pget_virtual_filename(dcpl, (size_t)i, filename, len + 1); + printf(" Source filename %s\n", filename); + + /* Get source dataset name */ + len = H5Pget_virtual_dsetname(dcpl, (size_t)i, NULL, 0); + dsetname = (char *)malloc((size_t)len * sizeof(char) + 1); + H5Pget_virtual_dsetname(dcpl, (size_t)i, dsetname, len + 1); + printf(" Source dataset name %s\n", dsetname); + + /* Get selection in the source dataset */ + printf(" Selection in the source dataset "); + src_space = H5Pget_virtual_srcspace(dcpl, (size_t)i); + + /* Make sure it is ALL selection and then print the coordinates. */ + if (H5Sget_select_type(src_space) == H5S_SEL_ALL) { + printf("(0) - (%d) \n", DIM0 - 1); + } + H5Sclose(vspace); + H5Sclose(src_space); + free(filename); + free(dsetname); + free(buf); + } + + /* + * Read the data using the default properties. + */ + status = H5Dread(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata[0]); + + /* + * Output the data to the screen. + */ + printf(" VDS Data:\n"); + for (i = 0; i < VDSDIM0; i++) { + printf(" ["); + for (j = 0; j < VDSDIM1; j++) + printf(" %3d", rdata[i][j]); + printf("]\n"); + } + + /* + * Close and release resources. + */ + status = H5Pclose(dcpl); + status = H5Dclose(dset); + status = H5Fclose(file); + + return 0; +} diff --git a/HDF5Examples/C/H5VDS/test.sh.in b/HDF5Examples/C/H5VDS/test.sh.in new file mode 100644 index 0000000..91888f5 --- /dev/null +++ b/HDF5Examples/C/H5VDS/test.sh.in @@ -0,0 +1,98 @@ +#! /bin/sh +# +# Copyright by The HDF Group. +# Copyright by the Board of Trustees of the University of Illinois. +# All rights reserved. +# +# This file is part of HDF5. The full HDF5 copyright notice, including +# terms governing use, modification, and redistribution, is contained in +# the files COPYING and Copyright.html. COPYING can be found at the root +# of the source code distribution tree; Copyright.html can be found at the +# root level of an installed copy of the electronic HDF5 document set and +# is linked from the top-level documents page. It can also be found at +# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have +# access to either file, you may request a copy from help@hdfgroup.org. + +srcdir=@srcdir@ + + +case $CC in +*/*) H5DUMP=`echo $CC | sed -e 's/\/[^/]*$/\/h5dump/'`; + test -x $H5DUMP || H5DUMP=h5dump;; +*) H5DUMP=h5dump;; +esac + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ;; + *c*,* ) ECHO_N=-n ECHO_C= ;; + *) ECHO_N= ECHO_C='\c' ;; +esac +ECHO_N="echo $ECHO_N" + + +exout() { + $* +} + +dumpout() { + $H5DUMP $* +} + +# compare current version, required version. +# returns if cur_ver < req_ver is true. +version_compare() { + version_lt=0 + if [ ! "$(printf '%s\n' "$1" "$2" | sort -V | head -n1)" = "$2" ]; then + version_lt=1 + fi +} + +H5_LIBVER=@H5_LIBVER@ +H5_LIBVER_DIR=@H5_LIBVER_DIR@ + +topics="" +topics110="vds vds-exc vds-exclim vds-eiger vds-simpleIO vds-percival vds-percival-unlim vds-percival-unlim-maxmin" + +return_val=0 + +version_compare "$H5_LIBVER" "1.10.0" +if [ "$version_lt" = 0 ]; then + for topic in $topics110 + do + fname=h5ex_$topic + $ECHO_N "Testing C/H5VDS/$fname...$ECHO_C" + exout ./$fname >tmp.test + status=$? + if test $status -eq 1 + then + echo " Unsupported feature" + status=0 + else + cmp -s tmp.test $srcdir/tfiles/110/$fname.tst + status=$? + if test $status -ne 0 + then + echo " FAILED!" + else + dumpout $fname.h5 >tmp.test + rm -f $fname.h5 + cmp -s tmp.test $srcdir/tfiles/110/$fname.ddl + status=$? + if test $status -ne 0 + then + echo " FAILED!" + else + echo " Passed" + fi + fi + return_val=`expr $status + $return_val` + fi + done +fi + + +rm -f tmp.test +echo "$return_val tests failed in C/H5VDS/" +exit $return_val diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-eiger.ddl b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-eiger.ddl new file mode 100644 index 0000000..b622169 --- /dev/null +++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-eiger.ddl @@ -0,0 +1,10 @@ +HDF5 "h5ex_vds-eiger.h5" { +GROUP "/" { + DATASET "VDS-Eiger" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 0, 10, 10 ) / ( H5S_UNLIMITED, 10, 10 ) } + DATA { + } + } +} +} diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-eiger.tst b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-eiger.tst new file mode 100644 index 0000000..580c708 --- /dev/null +++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-eiger.tst @@ -0,0 +1,17 @@ + Dataset has a virtual layout + Number of mappings is 1 + Mapping 0 + Selection in the virtual dataset + start = [0, 0, 0] + stride = [5, 1, 1] + count = [18446744073709551615, 1, 1] + block = [5, 10, 10] + Source filename f-%b.h5 + Source dataset name /A + Selection in the source dataset H5S_ALL + VDS Data: + [ [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0]] + [ [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0]] + [ [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0]] + [ [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0]] + [ [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0]] diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exc.ddl b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exc.ddl new file mode 100644 index 0000000..eb00999 --- /dev/null +++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exc.ddl @@ -0,0 +1,10 @@ +HDF5 "h5ex_vds-exc.h5" { +GROUP "/" { + DATASET "VDS-Excalibur" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 0, 15, 6 ) / ( H5S_UNLIMITED, 15, 6 ) } + DATA { + } + } +} +} diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exc.tst b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exc.tst new file mode 100644 index 0000000..917c11a --- /dev/null +++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exc.tst @@ -0,0 +1,81 @@ + Dataset has a virtual layout + Number of mappings is 6 + Mapping 0 + Selection in the virtual dataset + start = [0, 0, 0] + stride = [1, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 2, 6] + Source filename ae.h5 + Source dataset name A + Selection in the source dataset + start = [0, 0, 0] + stride = [1, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 2, 6] + Mapping 1 + Selection in the virtual dataset + start = [0, 5, 0] + stride = [1, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 2, 6] + Source filename ce.h5 + Source dataset name C + Selection in the source dataset + start = [0, 0, 0] + stride = [1, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 2, 6] + Mapping 2 + Selection in the virtual dataset + start = [0, 10, 0] + stride = [1, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 2, 6] + Source filename ee.h5 + Source dataset name E + Selection in the source dataset + start = [0, 0, 0] + stride = [1, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 2, 6] + Mapping 3 + Selection in the virtual dataset + start = [0, 2, 0] + stride = [1, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 3, 6] + Source filename be.h5 + Source dataset name B + Selection in the source dataset + start = [0, 0, 0] + stride = [1, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 3, 6] + Mapping 4 + Selection in the virtual dataset + start = [0, 7, 0] + stride = [1, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 3, 6] + Source filename de.h5 + Source dataset name D + Selection in the source dataset + start = [0, 0, 0] + stride = [1, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 3, 6] + Mapping 5 + Selection in the virtual dataset + start = [0, 12, 0] + stride = [1, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 3, 6] + Source filename fe.h5 + Source dataset name F + Selection in the source dataset + start = [0, 0, 0] + stride = [1, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 3, 6] + VDS Data: diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exclim.ddl b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exclim.ddl new file mode 100644 index 0000000..401b84f --- /dev/null +++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exclim.ddl @@ -0,0 +1,55 @@ +HDF5 "h5ex_vds-exclim.h5" { +GROUP "/" { + DATASET "VDS-Excaliburlim" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 3, 15, 6 ) / ( 3, 15, 6 ) } + DATA { + (0,0,0): 0, 0, 0, 0, 0, 0, + (0,1,0): 0, 0, 0, 0, 0, 0, + (0,2,0): 0, 0, 0, 0, 0, 0, + (0,3,0): 0, 0, 0, 0, 0, 0, + (0,4,0): 0, 0, 0, 0, 0, 0, + (0,5,0): 0, 0, 0, 0, 0, 0, + (0,6,0): 0, 0, 0, 0, 0, 0, + (0,7,0): 0, 0, 0, 0, 0, 0, + (0,8,0): 0, 0, 0, 0, 0, 0, + (0,9,0): 0, 0, 0, 0, 0, 0, + (0,10,0): 0, 0, 0, 0, 0, 0, + (0,11,0): 0, 0, 0, 0, 0, 0, + (0,12,0): 0, 0, 0, 0, 0, 0, + (0,13,0): 0, 0, 0, 0, 0, 0, + (0,14,0): 0, 0, 0, 0, 0, 0, + (1,0,0): 0, 0, 0, 0, 0, 0, + (1,1,0): 0, 0, 0, 0, 0, 0, + (1,2,0): 0, 0, 0, 0, 0, 0, + (1,3,0): 0, 0, 0, 0, 0, 0, + (1,4,0): 0, 0, 0, 0, 0, 0, + (1,5,0): 0, 0, 0, 0, 0, 0, + (1,6,0): 0, 0, 0, 0, 0, 0, + (1,7,0): 0, 0, 0, 0, 0, 0, + (1,8,0): 0, 0, 0, 0, 0, 0, + (1,9,0): 0, 0, 0, 0, 0, 0, + (1,10,0): 0, 0, 0, 0, 0, 0, + (1,11,0): 0, 0, 0, 0, 0, 0, + (1,12,0): 0, 0, 0, 0, 0, 0, + (1,13,0): 0, 0, 0, 0, 0, 0, + (1,14,0): 0, 0, 0, 0, 0, 0, + (2,0,0): 0, 0, 0, 0, 0, 0, + (2,1,0): 0, 0, 0, 0, 0, 0, + (2,2,0): 0, 0, 0, 0, 0, 0, + (2,3,0): 0, 0, 0, 0, 0, 0, + (2,4,0): 0, 0, 0, 0, 0, 0, + (2,5,0): 0, 0, 0, 0, 0, 0, + (2,6,0): 0, 0, 0, 0, 0, 0, + (2,7,0): 0, 0, 0, 0, 0, 0, + (2,8,0): 0, 0, 0, 0, 0, 0, + (2,9,0): 0, 0, 0, 0, 0, 0, + (2,10,0): 0, 0, 0, 0, 0, 0, + (2,11,0): 0, 0, 0, 0, 0, 0, + (2,12,0): 0, 0, 0, 0, 0, 0, + (2,13,0): 0, 0, 0, 0, 0, 0, + (2,14,0): 0, 0, 0, 0, 0, 0 + } + } +} +} diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exclim.tst b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exclim.tst new file mode 100644 index 0000000..d5b0db7 --- /dev/null +++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exclim.tst @@ -0,0 +1,84 @@ + Dataset has a virtual layout + Number of mappings is 6 + Mapping 0 + Selection in the virtual dataset + start = [0, 0, 0] + stride = [1, 1, 1] + count = [1, 1, 1] + block = [3, 2, 6] + Source filename ael.h5 + Source dataset name A + Selection in the source dataset + start = [0, 0, 0] + stride = [1, 1, 1] + count = [1, 1, 1] + block = [3, 2, 6] + Mapping 1 + Selection in the virtual dataset + start = [0, 5, 0] + stride = [1, 1, 1] + count = [1, 1, 1] + block = [3, 2, 6] + Source filename cel.h5 + Source dataset name C + Selection in the source dataset + start = [0, 5, 0] + stride = [1, 1, 1] + count = [1, 1, 1] + block = [3, 2, 6] + Mapping 2 + Selection in the virtual dataset + start = [0, 10, 0] + stride = [1, 1, 1] + count = [1, 1, 1] + block = [3, 2, 6] + Source filename eel.h5 + Source dataset name E + Selection in the source dataset + start = [0, 10, 0] + stride = [1, 1, 1] + count = [1, 1, 1] + block = [3, 2, 6] + Mapping 3 + Selection in the virtual dataset + start = [0, 2, 0] + stride = [1, 1, 1] + count = [1, 1, 1] + block = [3, 3, 6] + Source filename bel.h5 + Source dataset name B + Selection in the source dataset + start = [0, 2, 0] + stride = [1, 1, 1] + count = [1, 1, 1] + block = [3, 3, 6] + Mapping 4 + Selection in the virtual dataset + start = [0, 7, 0] + stride = [1, 1, 1] + count = [1, 1, 1] + block = [3, 3, 6] + Source filename del.h5 + Source dataset name D + Selection in the source dataset + start = [0, 7, 0] + stride = [1, 1, 1] + count = [1, 1, 1] + block = [3, 3, 6] + Mapping 5 + Selection in the virtual dataset + start = [0, 12, 0] + stride = [1, 1, 1] + count = [1, 1, 1] + block = [3, 3, 6] + Source filename fel.h5 + Source dataset name F + Selection in the source dataset + start = [0, 12, 0] + stride = [1, 1, 1] + count = [1, 1, 1] + block = [3, 3, 6] + VDS Data: + [ [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]] + [ [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]] + [ [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 1437410176 32670 -402914496] [ 0 0 0 0 0 0 1437410176 32670 -402914496 32764 -402914232 32764 -402914368 32764 1]] diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim-maxmin.ddl b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim-maxmin.ddl new file mode 100644 index 0000000..1008165 --- /dev/null +++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim-maxmin.ddl @@ -0,0 +1,330 @@ +HDF5 "h5ex_vds-percival-unlim-maxmin.h5" { +GROUP "/" { + DATASET "VDS-Percival-unlim-maxmin" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 32, 10, 10 ) / ( H5S_UNLIMITED, 10, 10 ) } + DATA { + (0,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (1,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (2,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (3,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (4,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (5,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (6,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (7,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (8,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (9,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (10,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (11,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (12,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (13,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (14,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (15,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (16,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (16,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (17,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (17,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (18,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (18,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (19,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (19,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (20,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (20,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (20,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (20,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (20,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (20,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (20,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (20,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (20,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (20,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (21,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (21,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (21,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (21,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (21,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (21,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (21,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (21,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (21,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (21,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (22,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (22,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (22,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (22,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (22,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (22,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (22,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (22,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (22,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (22,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (23,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (23,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (23,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (23,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (23,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (23,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (23,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (23,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (23,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (23,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (24,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (24,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (24,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (24,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (24,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (24,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (24,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (24,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (24,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (24,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (25,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (25,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (25,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (25,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (25,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (25,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (25,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (25,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (25,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (25,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (26,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (26,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (26,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (26,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (26,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (26,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (26,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (26,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (26,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (26,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (27,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (27,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (27,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (27,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (27,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (27,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (27,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (27,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (27,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (27,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (28,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (28,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (28,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (28,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (28,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (28,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (28,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (28,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (28,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (28,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (29,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (29,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (29,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (29,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (29,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (29,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (29,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (29,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (29,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (29,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (30,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (30,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (30,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (30,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (30,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (30,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (30,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (30,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (30,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (30,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (31,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (31,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (31,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (31,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (31,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (31,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (31,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (31,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (31,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (31,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40 + } + } +} +} diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim-maxmin.tst b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim-maxmin.tst new file mode 100644 index 0000000..8ccd85e --- /dev/null +++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim-maxmin.tst @@ -0,0 +1,379 @@ +VDS dimensions, bounds = H5D_VDS_FIRST_MISSING: 20 10 10 +VDS dimensions, bounds = H5D_VDS_LAST_AVAILABLE: 32 10 10 + Dataset has a virtual layout + Number of mappings is 4 + Mapping 0 + Selection in the virtual dataset + start = [0, 0, 0] + stride = [4, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 10, 10] + Source filename apum.h5 + Source dataset name A + Selection in the source dataset + start = [0, 0, 0] + stride = [1, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 10, 10] + Mapping 1 + Selection in the virtual dataset + start = [1, 0, 0] + stride = [4, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 10, 10] + Source filename bpum.h5 + Source dataset name B + Selection in the source dataset + start = [0, 0, 0] + stride = [1, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 10, 10] + Mapping 2 + Selection in the virtual dataset + start = [2, 0, 0] + stride = [4, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 10, 10] + Source filename cpum.h5 + Source dataset name C + Selection in the source dataset + start = [0, 0, 0] + stride = [1, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 10, 10] + Mapping 3 + Selection in the virtual dataset + start = [3, 0, 0] + stride = [4, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 10, 10] + Source filename dpum.h5 + Source dataset name D + Selection in the source dataset + start = [0, 0, 0] + stride = [1, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 10, 10] +VDS dimensions second time + Current: 32 10 10 + All data: +(0, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(1, 0, 0) 2 2 2 2 2 2 2 2 2 2 +(1, 1, 0) 2 2 2 2 2 2 2 2 2 2 +(1, 2, 0) 2 2 2 2 2 2 2 2 2 2 +(1, 3, 0) 2 2 2 2 2 2 2 2 2 2 +(1, 4, 0) 2 2 2 2 2 2 2 2 2 2 +(1, 5, 0) 2 2 2 2 2 2 2 2 2 2 +(1, 6, 0) 2 2 2 2 2 2 2 2 2 2 +(1, 7, 0) 2 2 2 2 2 2 2 2 2 2 +(1, 8, 0) 2 2 2 2 2 2 2 2 2 2 +(1, 9, 0) 2 2 2 2 2 2 2 2 2 2 +(2, 0, 0) 3 3 3 3 3 3 3 3 3 3 +(2, 1, 0) 3 3 3 3 3 3 3 3 3 3 +(2, 2, 0) 3 3 3 3 3 3 3 3 3 3 +(2, 3, 0) 3 3 3 3 3 3 3 3 3 3 +(2, 4, 0) 3 3 3 3 3 3 3 3 3 3 +(2, 5, 0) 3 3 3 3 3 3 3 3 3 3 +(2, 6, 0) 3 3 3 3 3 3 3 3 3 3 +(2, 7, 0) 3 3 3 3 3 3 3 3 3 3 +(2, 8, 0) 3 3 3 3 3 3 3 3 3 3 +(2, 9, 0) 3 3 3 3 3 3 3 3 3 3 +(3, 0, 0) 4 4 4 4 4 4 4 4 4 4 +(3, 1, 0) 4 4 4 4 4 4 4 4 4 4 +(3, 2, 0) 4 4 4 4 4 4 4 4 4 4 +(3, 3, 0) 4 4 4 4 4 4 4 4 4 4 +(3, 4, 0) 4 4 4 4 4 4 4 4 4 4 +(3, 5, 0) 4 4 4 4 4 4 4 4 4 4 +(3, 6, 0) 4 4 4 4 4 4 4 4 4 4 +(3, 7, 0) 4 4 4 4 4 4 4 4 4 4 +(3, 8, 0) 4 4 4 4 4 4 4 4 4 4 +(3, 9, 0) 4 4 4 4 4 4 4 4 4 4 +(4, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(5, 0, 0) 2 2 2 2 2 2 2 2 2 2 +(5, 1, 0) 2 2 2 2 2 2 2 2 2 2 +(5, 2, 0) 2 2 2 2 2 2 2 2 2 2 +(5, 3, 0) 2 2 2 2 2 2 2 2 2 2 +(5, 4, 0) 2 2 2 2 2 2 2 2 2 2 +(5, 5, 0) 2 2 2 2 2 2 2 2 2 2 +(5, 6, 0) 2 2 2 2 2 2 2 2 2 2 +(5, 7, 0) 2 2 2 2 2 2 2 2 2 2 +(5, 8, 0) 2 2 2 2 2 2 2 2 2 2 +(5, 9, 0) 2 2 2 2 2 2 2 2 2 2 +(6, 0, 0) 3 3 3 3 3 3 3 3 3 3 +(6, 1, 0) 3 3 3 3 3 3 3 3 3 3 +(6, 2, 0) 3 3 3 3 3 3 3 3 3 3 +(6, 3, 0) 3 3 3 3 3 3 3 3 3 3 +(6, 4, 0) 3 3 3 3 3 3 3 3 3 3 +(6, 5, 0) 3 3 3 3 3 3 3 3 3 3 +(6, 6, 0) 3 3 3 3 3 3 3 3 3 3 +(6, 7, 0) 3 3 3 3 3 3 3 3 3 3 +(6, 8, 0) 3 3 3 3 3 3 3 3 3 3 +(6, 9, 0) 3 3 3 3 3 3 3 3 3 3 +(7, 0, 0) 4 4 4 4 4 4 4 4 4 4 +(7, 1, 0) 4 4 4 4 4 4 4 4 4 4 +(7, 2, 0) 4 4 4 4 4 4 4 4 4 4 +(7, 3, 0) 4 4 4 4 4 4 4 4 4 4 +(7, 4, 0) 4 4 4 4 4 4 4 4 4 4 +(7, 5, 0) 4 4 4 4 4 4 4 4 4 4 +(7, 6, 0) 4 4 4 4 4 4 4 4 4 4 +(7, 7, 0) 4 4 4 4 4 4 4 4 4 4 +(7, 8, 0) 4 4 4 4 4 4 4 4 4 4 +(7, 9, 0) 4 4 4 4 4 4 4 4 4 4 +(8, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(9, 0, 0) 2 2 2 2 2 2 2 2 2 2 +(9, 1, 0) 2 2 2 2 2 2 2 2 2 2 +(9, 2, 0) 2 2 2 2 2 2 2 2 2 2 +(9, 3, 0) 2 2 2 2 2 2 2 2 2 2 +(9, 4, 0) 2 2 2 2 2 2 2 2 2 2 +(9, 5, 0) 2 2 2 2 2 2 2 2 2 2 +(9, 6, 0) 2 2 2 2 2 2 2 2 2 2 +(9, 7, 0) 2 2 2 2 2 2 2 2 2 2 +(9, 8, 0) 2 2 2 2 2 2 2 2 2 2 +(9, 9, 0) 2 2 2 2 2 2 2 2 2 2 +(10, 0, 0) 3 3 3 3 3 3 3 3 3 3 +(10, 1, 0) 3 3 3 3 3 3 3 3 3 3 +(10, 2, 0) 3 3 3 3 3 3 3 3 3 3 +(10, 3, 0) 3 3 3 3 3 3 3 3 3 3 +(10, 4, 0) 3 3 3 3 3 3 3 3 3 3 +(10, 5, 0) 3 3 3 3 3 3 3 3 3 3 +(10, 6, 0) 3 3 3 3 3 3 3 3 3 3 +(10, 7, 0) 3 3 3 3 3 3 3 3 3 3 +(10, 8, 0) 3 3 3 3 3 3 3 3 3 3 +(10, 9, 0) 3 3 3 3 3 3 3 3 3 3 +(11, 0, 0) 4 4 4 4 4 4 4 4 4 4 +(11, 1, 0) 4 4 4 4 4 4 4 4 4 4 +(11, 2, 0) 4 4 4 4 4 4 4 4 4 4 +(11, 3, 0) 4 4 4 4 4 4 4 4 4 4 +(11, 4, 0) 4 4 4 4 4 4 4 4 4 4 +(11, 5, 0) 4 4 4 4 4 4 4 4 4 4 +(11, 6, 0) 4 4 4 4 4 4 4 4 4 4 +(11, 7, 0) 4 4 4 4 4 4 4 4 4 4 +(11, 8, 0) 4 4 4 4 4 4 4 4 4 4 +(11, 9, 0) 4 4 4 4 4 4 4 4 4 4 +(12, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(12, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(12, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(12, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(12, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(12, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(12, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(12, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(12, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(12, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(13, 0, 0) 2 2 2 2 2 2 2 2 2 2 +(13, 1, 0) 2 2 2 2 2 2 2 2 2 2 +(13, 2, 0) 2 2 2 2 2 2 2 2 2 2 +(13, 3, 0) 2 2 2 2 2 2 2 2 2 2 +(13, 4, 0) 2 2 2 2 2 2 2 2 2 2 +(13, 5, 0) 2 2 2 2 2 2 2 2 2 2 +(13, 6, 0) 2 2 2 2 2 2 2 2 2 2 +(13, 7, 0) 2 2 2 2 2 2 2 2 2 2 +(13, 8, 0) 2 2 2 2 2 2 2 2 2 2 +(13, 9, 0) 2 2 2 2 2 2 2 2 2 2 +(14, 0, 0) 3 3 3 3 3 3 3 3 3 3 +(14, 1, 0) 3 3 3 3 3 3 3 3 3 3 +(14, 2, 0) 3 3 3 3 3 3 3 3 3 3 +(14, 3, 0) 3 3 3 3 3 3 3 3 3 3 +(14, 4, 0) 3 3 3 3 3 3 3 3 3 3 +(14, 5, 0) 3 3 3 3 3 3 3 3 3 3 +(14, 6, 0) 3 3 3 3 3 3 3 3 3 3 +(14, 7, 0) 3 3 3 3 3 3 3 3 3 3 +(14, 8, 0) 3 3 3 3 3 3 3 3 3 3 +(14, 9, 0) 3 3 3 3 3 3 3 3 3 3 +(15, 0, 0) 4 4 4 4 4 4 4 4 4 4 +(15, 1, 0) 4 4 4 4 4 4 4 4 4 4 +(15, 2, 0) 4 4 4 4 4 4 4 4 4 4 +(15, 3, 0) 4 4 4 4 4 4 4 4 4 4 +(15, 4, 0) 4 4 4 4 4 4 4 4 4 4 +(15, 5, 0) 4 4 4 4 4 4 4 4 4 4 +(15, 6, 0) 4 4 4 4 4 4 4 4 4 4 +(15, 7, 0) 4 4 4 4 4 4 4 4 4 4 +(15, 8, 0) 4 4 4 4 4 4 4 4 4 4 +(15, 9, 0) 4 4 4 4 4 4 4 4 4 4 +(16, 0, 0) 10 10 10 10 10 10 10 10 10 10 +(16, 1, 0) 10 10 10 10 10 10 10 10 10 10 +(16, 2, 0) 10 10 10 10 10 10 10 10 10 10 +(16, 3, 0) 10 10 10 10 10 10 10 10 10 10 +(16, 4, 0) 10 10 10 10 10 10 10 10 10 10 +(16, 5, 0) 10 10 10 10 10 10 10 10 10 10 +(16, 6, 0) 10 10 10 10 10 10 10 10 10 10 +(16, 7, 0) 10 10 10 10 10 10 10 10 10 10 +(16, 8, 0) 10 10 10 10 10 10 10 10 10 10 +(16, 9, 0) 10 10 10 10 10 10 10 10 10 10 +(17, 0, 0) 20 20 20 20 20 20 20 20 20 20 +(17, 1, 0) 20 20 20 20 20 20 20 20 20 20 +(17, 2, 0) 20 20 20 20 20 20 20 20 20 20 +(17, 3, 0) 20 20 20 20 20 20 20 20 20 20 +(17, 4, 0) 20 20 20 20 20 20 20 20 20 20 +(17, 5, 0) 20 20 20 20 20 20 20 20 20 20 +(17, 6, 0) 20 20 20 20 20 20 20 20 20 20 +(17, 7, 0) 20 20 20 20 20 20 20 20 20 20 +(17, 8, 0) 20 20 20 20 20 20 20 20 20 20 +(17, 9, 0) 20 20 20 20 20 20 20 20 20 20 +(18, 0, 0) 30 30 30 30 30 30 30 30 30 30 +(18, 1, 0) 30 30 30 30 30 30 30 30 30 30 +(18, 2, 0) 30 30 30 30 30 30 30 30 30 30 +(18, 3, 0) 30 30 30 30 30 30 30 30 30 30 +(18, 4, 0) 30 30 30 30 30 30 30 30 30 30 +(18, 5, 0) 30 30 30 30 30 30 30 30 30 30 +(18, 6, 0) 30 30 30 30 30 30 30 30 30 30 +(18, 7, 0) 30 30 30 30 30 30 30 30 30 30 +(18, 8, 0) 30 30 30 30 30 30 30 30 30 30 +(18, 9, 0) 30 30 30 30 30 30 30 30 30 30 +(19, 0, 0) 40 40 40 40 40 40 40 40 40 40 +(19, 1, 0) 40 40 40 40 40 40 40 40 40 40 +(19, 2, 0) 40 40 40 40 40 40 40 40 40 40 +(19, 3, 0) 40 40 40 40 40 40 40 40 40 40 +(19, 4, 0) 40 40 40 40 40 40 40 40 40 40 +(19, 5, 0) 40 40 40 40 40 40 40 40 40 40 +(19, 6, 0) 40 40 40 40 40 40 40 40 40 40 +(19, 7, 0) 40 40 40 40 40 40 40 40 40 40 +(19, 8, 0) 40 40 40 40 40 40 40 40 40 40 +(19, 9, 0) 40 40 40 40 40 40 40 40 40 40 +(20, 0, 0) 0 0 0 0 0 0 0 0 0 0 +(20, 1, 0) 0 0 0 0 0 0 0 0 0 0 +(20, 2, 0) 0 0 0 0 0 0 0 0 0 0 +(20, 3, 0) 0 0 0 0 0 0 0 0 0 0 +(20, 4, 0) 0 0 0 0 0 0 0 0 0 0 +(20, 5, 0) 0 0 0 0 0 0 0 0 0 0 +(20, 6, 0) 0 0 0 0 0 0 0 0 0 0 +(20, 7, 0) 0 0 0 0 0 0 0 0 0 0 +(20, 8, 0) 0 0 0 0 0 0 0 0 0 0 +(20, 9, 0) 0 0 0 0 0 0 0 0 0 0 +(21, 0, 0) 20 20 20 20 20 20 20 20 20 20 +(21, 1, 0) 20 20 20 20 20 20 20 20 20 20 +(21, 2, 0) 20 20 20 20 20 20 20 20 20 20 +(21, 3, 0) 20 20 20 20 20 20 20 20 20 20 +(21, 4, 0) 20 20 20 20 20 20 20 20 20 20 +(21, 5, 0) 20 20 20 20 20 20 20 20 20 20 +(21, 6, 0) 20 20 20 20 20 20 20 20 20 20 +(21, 7, 0) 20 20 20 20 20 20 20 20 20 20 +(21, 8, 0) 20 20 20 20 20 20 20 20 20 20 +(21, 9, 0) 20 20 20 20 20 20 20 20 20 20 +(22, 0, 0) 30 30 30 30 30 30 30 30 30 30 +(22, 1, 0) 30 30 30 30 30 30 30 30 30 30 +(22, 2, 0) 30 30 30 30 30 30 30 30 30 30 +(22, 3, 0) 30 30 30 30 30 30 30 30 30 30 +(22, 4, 0) 30 30 30 30 30 30 30 30 30 30 +(22, 5, 0) 30 30 30 30 30 30 30 30 30 30 +(22, 6, 0) 30 30 30 30 30 30 30 30 30 30 +(22, 7, 0) 30 30 30 30 30 30 30 30 30 30 +(22, 8, 0) 30 30 30 30 30 30 30 30 30 30 +(22, 9, 0) 30 30 30 30 30 30 30 30 30 30 +(23, 0, 0) 40 40 40 40 40 40 40 40 40 40 +(23, 1, 0) 40 40 40 40 40 40 40 40 40 40 +(23, 2, 0) 40 40 40 40 40 40 40 40 40 40 +(23, 3, 0) 40 40 40 40 40 40 40 40 40 40 +(23, 4, 0) 40 40 40 40 40 40 40 40 40 40 +(23, 5, 0) 40 40 40 40 40 40 40 40 40 40 +(23, 6, 0) 40 40 40 40 40 40 40 40 40 40 +(23, 7, 0) 40 40 40 40 40 40 40 40 40 40 +(23, 8, 0) 40 40 40 40 40 40 40 40 40 40 +(23, 9, 0) 40 40 40 40 40 40 40 40 40 40 +(24, 0, 0) 0 0 0 0 0 0 0 0 0 0 +(24, 1, 0) 0 0 0 0 0 0 0 0 0 0 +(24, 2, 0) 0 0 0 0 0 0 0 0 0 0 +(24, 3, 0) 0 0 0 0 0 0 0 0 0 0 +(24, 4, 0) 0 0 0 0 0 0 0 0 0 0 +(24, 5, 0) 0 0 0 0 0 0 0 0 0 0 +(24, 6, 0) 0 0 0 0 0 0 0 0 0 0 +(24, 7, 0) 0 0 0 0 0 0 0 0 0 0 +(24, 8, 0) 0 0 0 0 0 0 0 0 0 0 +(24, 9, 0) 0 0 0 0 0 0 0 0 0 0 +(25, 0, 0) 0 0 0 0 0 0 0 0 0 0 +(25, 1, 0) 0 0 0 0 0 0 0 0 0 0 +(25, 2, 0) 0 0 0 0 0 0 0 0 0 0 +(25, 3, 0) 0 0 0 0 0 0 0 0 0 0 +(25, 4, 0) 0 0 0 0 0 0 0 0 0 0 +(25, 5, 0) 0 0 0 0 0 0 0 0 0 0 +(25, 6, 0) 0 0 0 0 0 0 0 0 0 0 +(25, 7, 0) 0 0 0 0 0 0 0 0 0 0 +(25, 8, 0) 0 0 0 0 0 0 0 0 0 0 +(25, 9, 0) 0 0 0 0 0 0 0 0 0 0 +(26, 0, 0) 30 30 30 30 30 30 30 30 30 30 +(26, 1, 0) 30 30 30 30 30 30 30 30 30 30 +(26, 2, 0) 30 30 30 30 30 30 30 30 30 30 +(26, 3, 0) 30 30 30 30 30 30 30 30 30 30 +(26, 4, 0) 30 30 30 30 30 30 30 30 30 30 +(26, 5, 0) 30 30 30 30 30 30 30 30 30 30 +(26, 6, 0) 30 30 30 30 30 30 30 30 30 30 +(26, 7, 0) 30 30 30 30 30 30 30 30 30 30 +(26, 8, 0) 30 30 30 30 30 30 30 30 30 30 +(26, 9, 0) 30 30 30 30 30 30 30 30 30 30 +(27, 0, 0) 40 40 40 40 40 40 40 40 40 40 +(27, 1, 0) 40 40 40 40 40 40 40 40 40 40 +(27, 2, 0) 40 40 40 40 40 40 40 40 40 40 +(27, 3, 0) 40 40 40 40 40 40 40 40 40 40 +(27, 4, 0) 40 40 40 40 40 40 40 40 40 40 +(27, 5, 0) 40 40 40 40 40 40 40 40 40 40 +(27, 6, 0) 40 40 40 40 40 40 40 40 40 40 +(27, 7, 0) 40 40 40 40 40 40 40 40 40 40 +(27, 8, 0) 40 40 40 40 40 40 40 40 40 40 +(27, 9, 0) 40 40 40 40 40 40 40 40 40 40 +(28, 0, 0) 0 0 0 0 0 0 0 0 0 0 +(28, 1, 0) 0 0 0 0 0 0 0 0 0 0 +(28, 2, 0) 0 0 0 0 0 0 0 0 0 0 +(28, 3, 0) 0 0 0 0 0 0 0 0 0 0 +(28, 4, 0) 0 0 0 0 0 0 0 0 0 0 +(28, 5, 0) 0 0 0 0 0 0 0 0 0 0 +(28, 6, 0) 0 0 0 0 0 0 0 0 0 0 +(28, 7, 0) 0 0 0 0 0 0 0 0 0 0 +(28, 8, 0) 0 0 0 0 0 0 0 0 0 0 +(28, 9, 0) 0 0 0 0 0 0 0 0 0 0 +(29, 0, 0) 0 0 0 0 0 0 0 0 0 0 +(29, 1, 0) 0 0 0 0 0 0 0 0 0 0 +(29, 2, 0) 0 0 0 0 0 0 0 0 0 0 +(29, 3, 0) 0 0 0 0 0 0 0 0 0 0 +(29, 4, 0) 0 0 0 0 0 0 0 0 0 0 +(29, 5, 0) 0 0 0 0 0 0 0 0 0 0 +(29, 6, 0) 0 0 0 0 0 0 0 0 0 0 +(29, 7, 0) 0 0 0 0 0 0 0 0 0 0 +(29, 8, 0) 0 0 0 0 0 0 0 0 0 0 +(29, 9, 0) 0 0 0 0 0 0 0 0 0 0 +(30, 0, 0) 0 0 0 0 0 0 0 0 0 0 +(30, 1, 0) 0 0 0 0 0 0 0 0 0 0 +(30, 2, 0) 0 0 0 0 0 0 0 0 0 0 +(30, 3, 0) 0 0 0 0 0 0 0 0 0 0 +(30, 4, 0) 0 0 0 0 0 0 0 0 0 0 +(30, 5, 0) 0 0 0 0 0 0 0 0 0 0 +(30, 6, 0) 0 0 0 0 0 0 0 0 0 0 +(30, 7, 0) 0 0 0 0 0 0 0 0 0 0 +(30, 8, 0) 0 0 0 0 0 0 0 0 0 0 +(30, 9, 0) 0 0 0 0 0 0 0 0 0 0 +(31, 0, 0) 40 40 40 40 40 40 40 40 40 40 +(31, 1, 0) 40 40 40 40 40 40 40 40 40 40 +(31, 2, 0) 40 40 40 40 40 40 40 40 40 40 +(31, 3, 0) 40 40 40 40 40 40 40 40 40 40 +(31, 4, 0) 40 40 40 40 40 40 40 40 40 40 +(31, 5, 0) 40 40 40 40 40 40 40 40 40 40 +(31, 6, 0) 40 40 40 40 40 40 40 40 40 40 +(31, 7, 0) 40 40 40 40 40 40 40 40 40 40 +(31, 8, 0) 40 40 40 40 40 40 40 40 40 40 +(31, 9, 0) 40 40 40 40 40 40 40 40 40 40 diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.ddl b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.ddl new file mode 100644 index 0000000..4a51060 --- /dev/null +++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.ddl @@ -0,0 +1,810 @@ +HDF5 "h5ex_vds-percival-unlim.h5" { +GROUP "/" { + DATASET "VDS-Percival-unlim" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 80, 10, 10 ) / ( H5S_UNLIMITED, 10, 10 ) } + DATA { + (0,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (1,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (2,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (3,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (4,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (5,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (6,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (7,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (8,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (9,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (10,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (11,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (12,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (13,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (14,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (15,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (16,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (16,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (16,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (16,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (16,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (16,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (16,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (16,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (16,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (16,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (17,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (17,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (17,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (17,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (17,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (17,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (17,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (17,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (17,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (17,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (18,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (19,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (19,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (19,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (19,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (19,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (19,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (19,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (19,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (19,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (19,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (20,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (20,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (20,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (20,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (20,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (20,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (20,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (20,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (20,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (20,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (21,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (21,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (21,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (21,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (21,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (21,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (21,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (21,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (21,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (21,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (22,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (22,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (22,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (22,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (22,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (22,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (22,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (22,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (22,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (22,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (23,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (23,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (23,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (23,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (23,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (23,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (23,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (23,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (23,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (23,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (24,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (24,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (24,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (24,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (24,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (24,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (24,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (24,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (24,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (24,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (25,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (25,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (25,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (25,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (25,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (25,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (25,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (25,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (25,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (25,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (26,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (26,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (26,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (26,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (26,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (26,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (26,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (26,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (26,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (26,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (27,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (27,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (27,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (27,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (27,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (27,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (27,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (27,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (27,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (27,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (28,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (28,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (28,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (28,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (28,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (28,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (28,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (28,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (28,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (28,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (29,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (29,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (29,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (29,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (29,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (29,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (29,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (29,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (29,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (29,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (30,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (30,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (30,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (30,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (30,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (30,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (30,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (30,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (30,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (30,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (31,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (31,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (31,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (31,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (31,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (31,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (31,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (31,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (31,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (31,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (32,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (32,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (32,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (32,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (32,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (32,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (32,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (32,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (32,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (32,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (33,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (33,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (33,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (33,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (33,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (33,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (33,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (33,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (33,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (33,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (34,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (34,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (34,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (34,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (34,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (34,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (34,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (34,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (34,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (34,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (35,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (35,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (35,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (35,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (35,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (35,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (35,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (35,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (35,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (35,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (36,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (36,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (36,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (36,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (36,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (36,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (36,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (36,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (36,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (36,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (37,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (37,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (37,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (37,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (37,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (37,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (37,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (37,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (37,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (37,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (38,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (38,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (38,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (38,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (38,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (38,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (38,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (38,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (38,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (38,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (39,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (39,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (39,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (39,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (39,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (39,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (39,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (39,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (39,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (39,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (40,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (40,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (40,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (40,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (40,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (40,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (40,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (40,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (40,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (40,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (41,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (41,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (41,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (41,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (41,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (41,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (41,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (41,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (41,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (41,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (42,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (42,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (42,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (42,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (42,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (42,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (42,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (42,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (42,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (42,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (43,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (43,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (43,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (43,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (43,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (43,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (43,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (43,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (43,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (43,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (44,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (44,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (44,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (44,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (44,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (44,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (44,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (44,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (44,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (44,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (45,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (45,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (45,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (45,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (45,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (45,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (45,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (45,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (45,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (45,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (46,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (46,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (46,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (46,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (46,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (46,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (46,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (46,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (46,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (46,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (47,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (47,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (47,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (47,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (47,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (47,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (47,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (47,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (47,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (47,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (48,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (48,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (48,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (48,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (48,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (48,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (48,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (48,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (48,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (48,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (49,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (49,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (49,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (49,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (49,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (49,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (49,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (49,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (49,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (49,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (50,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (50,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (50,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (50,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (50,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (50,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (50,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (50,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (50,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (50,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (51,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (51,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (51,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (51,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (51,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (51,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (51,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (51,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (51,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (51,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (52,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (52,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (52,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (52,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (52,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (52,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (52,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (52,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (52,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (52,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (53,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (53,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (53,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (53,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (53,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (53,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (53,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (53,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (53,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (53,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (54,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (54,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (54,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (54,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (54,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (54,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (54,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (54,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (54,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (54,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (55,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (55,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (55,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (55,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (55,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (55,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (55,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (55,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (55,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (55,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (56,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (56,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (56,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (56,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (56,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (56,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (56,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (56,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (56,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (56,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (57,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (57,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (57,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (57,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (57,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (57,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (57,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (57,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (57,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (57,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (58,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (58,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (58,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (58,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (58,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (58,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (58,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (58,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (58,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (58,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (59,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (59,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (59,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (59,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (59,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (59,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (59,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (59,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (59,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (59,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (60,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (60,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (60,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (60,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (60,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (60,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (60,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (60,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (60,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (60,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (61,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (61,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (61,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (61,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (61,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (61,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (61,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (61,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (61,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (61,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (62,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (62,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (62,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (62,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (62,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (62,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (62,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (62,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (62,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (62,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (63,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (63,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (63,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (63,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (63,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (63,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (63,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (63,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (63,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (63,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (64,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (64,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (64,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (64,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (64,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (64,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (64,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (64,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (64,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (64,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (65,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (65,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (65,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (65,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (65,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (65,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (65,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (65,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (65,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (65,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (66,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (66,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (66,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (66,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (66,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (66,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (66,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (66,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (66,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (66,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (67,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (67,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (67,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (67,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (67,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (67,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (67,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (67,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (67,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (67,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (68,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (68,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (68,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (68,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (68,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (68,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (68,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (68,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (68,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (68,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (69,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (69,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (69,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (69,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (69,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (69,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (69,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (69,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (69,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (69,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (70,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (70,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (70,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (70,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (70,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (70,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (70,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (70,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (70,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (70,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (71,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (71,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (71,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (71,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (71,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (71,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (71,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (71,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (71,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (71,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (72,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (72,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (72,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (72,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (72,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (72,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (72,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (72,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (72,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (72,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (73,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (73,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (73,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (73,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (73,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (73,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (73,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (73,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (73,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (73,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (74,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (74,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (74,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (74,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (74,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (74,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (74,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (74,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (74,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (74,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (75,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (75,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (75,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (75,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (75,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (75,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (75,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (75,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (75,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (75,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (76,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (76,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (76,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (76,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (76,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (76,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (76,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (76,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (76,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (76,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + (77,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (77,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (77,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (77,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (77,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (77,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (77,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (77,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (77,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (77,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + (78,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (78,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (78,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (78,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (78,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (78,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (78,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (78,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (78,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (78,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + (79,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (79,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (79,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (79,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (79,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (79,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (79,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (79,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (79,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + (79,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40 + } + } +} +} diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.tst b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.tst new file mode 100644 index 0000000..d6197f0 --- /dev/null +++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.tst @@ -0,0 +1,1060 @@ +VDS dimensions first time + Current: 40 10 10 + Dataset has a virtual layout + Number of mappings is 4 + Mapping 0 + Selection in the virtual dataset + start = [0, 0, 0] + stride = [4, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 10, 10] + Source filename apu.h5 + Source dataset name A + Selection in the source dataset + start = [0, 0, 0] + stride = [1, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 10, 10] + Mapping 1 + Selection in the virtual dataset + start = [1, 0, 0] + stride = [4, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 10, 10] + Source filename bpu.h5 + Source dataset name B + Selection in the source dataset + start = [0, 0, 0] + stride = [1, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 10, 10] + Mapping 2 + Selection in the virtual dataset + start = [2, 0, 0] + stride = [4, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 10, 10] + Source filename cpu.h5 + Source dataset name C + Selection in the source dataset + start = [0, 0, 0] + stride = [1, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 10, 10] + Mapping 3 + Selection in the virtual dataset + start = [3, 0, 0] + stride = [4, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 10, 10] + Source filename dpu.h5 + Source dataset name D + Selection in the source dataset + start = [0, 0, 0] + stride = [1, 1, 1] + count = [18446744073709551615, 1, 1] + block = [1, 10, 10] +VDS dimensions second time + Current: 80 10 10 + All data: +(0, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(1, 0, 0) 2 2 2 2 2 2 2 2 2 2 +(1, 1, 0) 2 2 2 2 2 2 2 2 2 2 +(1, 2, 0) 2 2 2 2 2 2 2 2 2 2 +(1, 3, 0) 2 2 2 2 2 2 2 2 2 2 +(1, 4, 0) 2 2 2 2 2 2 2 2 2 2 +(1, 5, 0) 2 2 2 2 2 2 2 2 2 2 +(1, 6, 0) 2 2 2 2 2 2 2 2 2 2 +(1, 7, 0) 2 2 2 2 2 2 2 2 2 2 +(1, 8, 0) 2 2 2 2 2 2 2 2 2 2 +(1, 9, 0) 2 2 2 2 2 2 2 2 2 2 +(2, 0, 0) 3 3 3 3 3 3 3 3 3 3 +(2, 1, 0) 3 3 3 3 3 3 3 3 3 3 +(2, 2, 0) 3 3 3 3 3 3 3 3 3 3 +(2, 3, 0) 3 3 3 3 3 3 3 3 3 3 +(2, 4, 0) 3 3 3 3 3 3 3 3 3 3 +(2, 5, 0) 3 3 3 3 3 3 3 3 3 3 +(2, 6, 0) 3 3 3 3 3 3 3 3 3 3 +(2, 7, 0) 3 3 3 3 3 3 3 3 3 3 +(2, 8, 0) 3 3 3 3 3 3 3 3 3 3 +(2, 9, 0) 3 3 3 3 3 3 3 3 3 3 +(3, 0, 0) 4 4 4 4 4 4 4 4 4 4 +(3, 1, 0) 4 4 4 4 4 4 4 4 4 4 +(3, 2, 0) 4 4 4 4 4 4 4 4 4 4 +(3, 3, 0) 4 4 4 4 4 4 4 4 4 4 +(3, 4, 0) 4 4 4 4 4 4 4 4 4 4 +(3, 5, 0) 4 4 4 4 4 4 4 4 4 4 +(3, 6, 0) 4 4 4 4 4 4 4 4 4 4 +(3, 7, 0) 4 4 4 4 4 4 4 4 4 4 +(3, 8, 0) 4 4 4 4 4 4 4 4 4 4 +(3, 9, 0) 4 4 4 4 4 4 4 4 4 4 +(4, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(5, 0, 0) 2 2 2 2 2 2 2 2 2 2 +(5, 1, 0) 2 2 2 2 2 2 2 2 2 2 +(5, 2, 0) 2 2 2 2 2 2 2 2 2 2 +(5, 3, 0) 2 2 2 2 2 2 2 2 2 2 +(5, 4, 0) 2 2 2 2 2 2 2 2 2 2 +(5, 5, 0) 2 2 2 2 2 2 2 2 2 2 +(5, 6, 0) 2 2 2 2 2 2 2 2 2 2 +(5, 7, 0) 2 2 2 2 2 2 2 2 2 2 +(5, 8, 0) 2 2 2 2 2 2 2 2 2 2 +(5, 9, 0) 2 2 2 2 2 2 2 2 2 2 +(6, 0, 0) 3 3 3 3 3 3 3 3 3 3 +(6, 1, 0) 3 3 3 3 3 3 3 3 3 3 +(6, 2, 0) 3 3 3 3 3 3 3 3 3 3 +(6, 3, 0) 3 3 3 3 3 3 3 3 3 3 +(6, 4, 0) 3 3 3 3 3 3 3 3 3 3 +(6, 5, 0) 3 3 3 3 3 3 3 3 3 3 +(6, 6, 0) 3 3 3 3 3 3 3 3 3 3 +(6, 7, 0) 3 3 3 3 3 3 3 3 3 3 +(6, 8, 0) 3 3 3 3 3 3 3 3 3 3 +(6, 9, 0) 3 3 3 3 3 3 3 3 3 3 +(7, 0, 0) 4 4 4 4 4 4 4 4 4 4 +(7, 1, 0) 4 4 4 4 4 4 4 4 4 4 +(7, 2, 0) 4 4 4 4 4 4 4 4 4 4 +(7, 3, 0) 4 4 4 4 4 4 4 4 4 4 +(7, 4, 0) 4 4 4 4 4 4 4 4 4 4 +(7, 5, 0) 4 4 4 4 4 4 4 4 4 4 +(7, 6, 0) 4 4 4 4 4 4 4 4 4 4 +(7, 7, 0) 4 4 4 4 4 4 4 4 4 4 +(7, 8, 0) 4 4 4 4 4 4 4 4 4 4 +(7, 9, 0) 4 4 4 4 4 4 4 4 4 4 +(8, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(9, 0, 0) 2 2 2 2 2 2 2 2 2 2 +(9, 1, 0) 2 2 2 2 2 2 2 2 2 2 +(9, 2, 0) 2 2 2 2 2 2 2 2 2 2 +(9, 3, 0) 2 2 2 2 2 2 2 2 2 2 +(9, 4, 0) 2 2 2 2 2 2 2 2 2 2 +(9, 5, 0) 2 2 2 2 2 2 2 2 2 2 +(9, 6, 0) 2 2 2 2 2 2 2 2 2 2 +(9, 7, 0) 2 2 2 2 2 2 2 2 2 2 +(9, 8, 0) 2 2 2 2 2 2 2 2 2 2 +(9, 9, 0) 2 2 2 2 2 2 2 2 2 2 +(10, 0, 0) 3 3 3 3 3 3 3 3 3 3 +(10, 1, 0) 3 3 3 3 3 3 3 3 3 3 +(10, 2, 0) 3 3 3 3 3 3 3 3 3 3 +(10, 3, 0) 3 3 3 3 3 3 3 3 3 3 +(10, 4, 0) 3 3 3 3 3 3 3 3 3 3 +(10, 5, 0) 3 3 3 3 3 3 3 3 3 3 +(10, 6, 0) 3 3 3 3 3 3 3 3 3 3 +(10, 7, 0) 3 3 3 3 3 3 3 3 3 3 +(10, 8, 0) 3 3 3 3 3 3 3 3 3 3 +(10, 9, 0) 3 3 3 3 3 3 3 3 3 3 +(11, 0, 0) 4 4 4 4 4 4 4 4 4 4 +(11, 1, 0) 4 4 4 4 4 4 4 4 4 4 +(11, 2, 0) 4 4 4 4 4 4 4 4 4 4 +(11, 3, 0) 4 4 4 4 4 4 4 4 4 4 +(11, 4, 0) 4 4 4 4 4 4 4 4 4 4 +(11, 5, 0) 4 4 4 4 4 4 4 4 4 4 +(11, 6, 0) 4 4 4 4 4 4 4 4 4 4 +(11, 7, 0) 4 4 4 4 4 4 4 4 4 4 +(11, 8, 0) 4 4 4 4 4 4 4 4 4 4 +(11, 9, 0) 4 4 4 4 4 4 4 4 4 4 +(12, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(12, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(12, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(12, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(12, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(12, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(12, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(12, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(12, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(12, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(13, 0, 0) 2 2 2 2 2 2 2 2 2 2 +(13, 1, 0) 2 2 2 2 2 2 2 2 2 2 +(13, 2, 0) 2 2 2 2 2 2 2 2 2 2 +(13, 3, 0) 2 2 2 2 2 2 2 2 2 2 +(13, 4, 0) 2 2 2 2 2 2 2 2 2 2 +(13, 5, 0) 2 2 2 2 2 2 2 2 2 2 +(13, 6, 0) 2 2 2 2 2 2 2 2 2 2 +(13, 7, 0) 2 2 2 2 2 2 2 2 2 2 +(13, 8, 0) 2 2 2 2 2 2 2 2 2 2 +(13, 9, 0) 2 2 2 2 2 2 2 2 2 2 +(14, 0, 0) 3 3 3 3 3 3 3 3 3 3 +(14, 1, 0) 3 3 3 3 3 3 3 3 3 3 +(14, 2, 0) 3 3 3 3 3 3 3 3 3 3 +(14, 3, 0) 3 3 3 3 3 3 3 3 3 3 +(14, 4, 0) 3 3 3 3 3 3 3 3 3 3 +(14, 5, 0) 3 3 3 3 3 3 3 3 3 3 +(14, 6, 0) 3 3 3 3 3 3 3 3 3 3 +(14, 7, 0) 3 3 3 3 3 3 3 3 3 3 +(14, 8, 0) 3 3 3 3 3 3 3 3 3 3 +(14, 9, 0) 3 3 3 3 3 3 3 3 3 3 +(15, 0, 0) 4 4 4 4 4 4 4 4 4 4 +(15, 1, 0) 4 4 4 4 4 4 4 4 4 4 +(15, 2, 0) 4 4 4 4 4 4 4 4 4 4 +(15, 3, 0) 4 4 4 4 4 4 4 4 4 4 +(15, 4, 0) 4 4 4 4 4 4 4 4 4 4 +(15, 5, 0) 4 4 4 4 4 4 4 4 4 4 +(15, 6, 0) 4 4 4 4 4 4 4 4 4 4 +(15, 7, 0) 4 4 4 4 4 4 4 4 4 4 +(15, 8, 0) 4 4 4 4 4 4 4 4 4 4 +(15, 9, 0) 4 4 4 4 4 4 4 4 4 4 +(16, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(16, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(16, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(16, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(16, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(16, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(16, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(16, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(16, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(16, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(17, 0, 0) 2 2 2 2 2 2 2 2 2 2 +(17, 1, 0) 2 2 2 2 2 2 2 2 2 2 +(17, 2, 0) 2 2 2 2 2 2 2 2 2 2 +(17, 3, 0) 2 2 2 2 2 2 2 2 2 2 +(17, 4, 0) 2 2 2 2 2 2 2 2 2 2 +(17, 5, 0) 2 2 2 2 2 2 2 2 2 2 +(17, 6, 0) 2 2 2 2 2 2 2 2 2 2 +(17, 7, 0) 2 2 2 2 2 2 2 2 2 2 +(17, 8, 0) 2 2 2 2 2 2 2 2 2 2 +(17, 9, 0) 2 2 2 2 2 2 2 2 2 2 +(18, 0, 0) 3 3 3 3 3 3 3 3 3 3 +(18, 1, 0) 3 3 3 3 3 3 3 3 3 3 +(18, 2, 0) 3 3 3 3 3 3 3 3 3 3 +(18, 3, 0) 3 3 3 3 3 3 3 3 3 3 +(18, 4, 0) 3 3 3 3 3 3 3 3 3 3 +(18, 5, 0) 3 3 3 3 3 3 3 3 3 3 +(18, 6, 0) 3 3 3 3 3 3 3 3 3 3 +(18, 7, 0) 3 3 3 3 3 3 3 3 3 3 +(18, 8, 0) 3 3 3 3 3 3 3 3 3 3 +(18, 9, 0) 3 3 3 3 3 3 3 3 3 3 +(19, 0, 0) 4 4 4 4 4 4 4 4 4 4 +(19, 1, 0) 4 4 4 4 4 4 4 4 4 4 +(19, 2, 0) 4 4 4 4 4 4 4 4 4 4 +(19, 3, 0) 4 4 4 4 4 4 4 4 4 4 +(19, 4, 0) 4 4 4 4 4 4 4 4 4 4 +(19, 5, 0) 4 4 4 4 4 4 4 4 4 4 +(19, 6, 0) 4 4 4 4 4 4 4 4 4 4 +(19, 7, 0) 4 4 4 4 4 4 4 4 4 4 +(19, 8, 0) 4 4 4 4 4 4 4 4 4 4 +(19, 9, 0) 4 4 4 4 4 4 4 4 4 4 +(20, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(20, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(20, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(20, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(20, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(20, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(20, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(20, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(20, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(20, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(21, 0, 0) 2 2 2 2 2 2 2 2 2 2 +(21, 1, 0) 2 2 2 2 2 2 2 2 2 2 +(21, 2, 0) 2 2 2 2 2 2 2 2 2 2 +(21, 3, 0) 2 2 2 2 2 2 2 2 2 2 +(21, 4, 0) 2 2 2 2 2 2 2 2 2 2 +(21, 5, 0) 2 2 2 2 2 2 2 2 2 2 +(21, 6, 0) 2 2 2 2 2 2 2 2 2 2 +(21, 7, 0) 2 2 2 2 2 2 2 2 2 2 +(21, 8, 0) 2 2 2 2 2 2 2 2 2 2 +(21, 9, 0) 2 2 2 2 2 2 2 2 2 2 +(22, 0, 0) 3 3 3 3 3 3 3 3 3 3 +(22, 1, 0) 3 3 3 3 3 3 3 3 3 3 +(22, 2, 0) 3 3 3 3 3 3 3 3 3 3 +(22, 3, 0) 3 3 3 3 3 3 3 3 3 3 +(22, 4, 0) 3 3 3 3 3 3 3 3 3 3 +(22, 5, 0) 3 3 3 3 3 3 3 3 3 3 +(22, 6, 0) 3 3 3 3 3 3 3 3 3 3 +(22, 7, 0) 3 3 3 3 3 3 3 3 3 3 +(22, 8, 0) 3 3 3 3 3 3 3 3 3 3 +(22, 9, 0) 3 3 3 3 3 3 3 3 3 3 +(23, 0, 0) 4 4 4 4 4 4 4 4 4 4 +(23, 1, 0) 4 4 4 4 4 4 4 4 4 4 +(23, 2, 0) 4 4 4 4 4 4 4 4 4 4 +(23, 3, 0) 4 4 4 4 4 4 4 4 4 4 +(23, 4, 0) 4 4 4 4 4 4 4 4 4 4 +(23, 5, 0) 4 4 4 4 4 4 4 4 4 4 +(23, 6, 0) 4 4 4 4 4 4 4 4 4 4 +(23, 7, 0) 4 4 4 4 4 4 4 4 4 4 +(23, 8, 0) 4 4 4 4 4 4 4 4 4 4 +(23, 9, 0) 4 4 4 4 4 4 4 4 4 4 +(24, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(24, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(24, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(24, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(24, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(24, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(24, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(24, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(24, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(24, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(25, 0, 0) 2 2 2 2 2 2 2 2 2 2 +(25, 1, 0) 2 2 2 2 2 2 2 2 2 2 +(25, 2, 0) 2 2 2 2 2 2 2 2 2 2 +(25, 3, 0) 2 2 2 2 2 2 2 2 2 2 +(25, 4, 0) 2 2 2 2 2 2 2 2 2 2 +(25, 5, 0) 2 2 2 2 2 2 2 2 2 2 +(25, 6, 0) 2 2 2 2 2 2 2 2 2 2 +(25, 7, 0) 2 2 2 2 2 2 2 2 2 2 +(25, 8, 0) 2 2 2 2 2 2 2 2 2 2 +(25, 9, 0) 2 2 2 2 2 2 2 2 2 2 +(26, 0, 0) 3 3 3 3 3 3 3 3 3 3 +(26, 1, 0) 3 3 3 3 3 3 3 3 3 3 +(26, 2, 0) 3 3 3 3 3 3 3 3 3 3 +(26, 3, 0) 3 3 3 3 3 3 3 3 3 3 +(26, 4, 0) 3 3 3 3 3 3 3 3 3 3 +(26, 5, 0) 3 3 3 3 3 3 3 3 3 3 +(26, 6, 0) 3 3 3 3 3 3 3 3 3 3 +(26, 7, 0) 3 3 3 3 3 3 3 3 3 3 +(26, 8, 0) 3 3 3 3 3 3 3 3 3 3 +(26, 9, 0) 3 3 3 3 3 3 3 3 3 3 +(27, 0, 0) 4 4 4 4 4 4 4 4 4 4 +(27, 1, 0) 4 4 4 4 4 4 4 4 4 4 +(27, 2, 0) 4 4 4 4 4 4 4 4 4 4 +(27, 3, 0) 4 4 4 4 4 4 4 4 4 4 +(27, 4, 0) 4 4 4 4 4 4 4 4 4 4 +(27, 5, 0) 4 4 4 4 4 4 4 4 4 4 +(27, 6, 0) 4 4 4 4 4 4 4 4 4 4 +(27, 7, 0) 4 4 4 4 4 4 4 4 4 4 +(27, 8, 0) 4 4 4 4 4 4 4 4 4 4 +(27, 9, 0) 4 4 4 4 4 4 4 4 4 4 +(28, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(28, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(28, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(28, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(28, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(28, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(28, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(28, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(28, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(28, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(29, 0, 0) 2 2 2 2 2 2 2 2 2 2 +(29, 1, 0) 2 2 2 2 2 2 2 2 2 2 +(29, 2, 0) 2 2 2 2 2 2 2 2 2 2 +(29, 3, 0) 2 2 2 2 2 2 2 2 2 2 +(29, 4, 0) 2 2 2 2 2 2 2 2 2 2 +(29, 5, 0) 2 2 2 2 2 2 2 2 2 2 +(29, 6, 0) 2 2 2 2 2 2 2 2 2 2 +(29, 7, 0) 2 2 2 2 2 2 2 2 2 2 +(29, 8, 0) 2 2 2 2 2 2 2 2 2 2 +(29, 9, 0) 2 2 2 2 2 2 2 2 2 2 +(30, 0, 0) 3 3 3 3 3 3 3 3 3 3 +(30, 1, 0) 3 3 3 3 3 3 3 3 3 3 +(30, 2, 0) 3 3 3 3 3 3 3 3 3 3 +(30, 3, 0) 3 3 3 3 3 3 3 3 3 3 +(30, 4, 0) 3 3 3 3 3 3 3 3 3 3 +(30, 5, 0) 3 3 3 3 3 3 3 3 3 3 +(30, 6, 0) 3 3 3 3 3 3 3 3 3 3 +(30, 7, 0) 3 3 3 3 3 3 3 3 3 3 +(30, 8, 0) 3 3 3 3 3 3 3 3 3 3 +(30, 9, 0) 3 3 3 3 3 3 3 3 3 3 +(31, 0, 0) 4 4 4 4 4 4 4 4 4 4 +(31, 1, 0) 4 4 4 4 4 4 4 4 4 4 +(31, 2, 0) 4 4 4 4 4 4 4 4 4 4 +(31, 3, 0) 4 4 4 4 4 4 4 4 4 4 +(31, 4, 0) 4 4 4 4 4 4 4 4 4 4 +(31, 5, 0) 4 4 4 4 4 4 4 4 4 4 +(31, 6, 0) 4 4 4 4 4 4 4 4 4 4 +(31, 7, 0) 4 4 4 4 4 4 4 4 4 4 +(31, 8, 0) 4 4 4 4 4 4 4 4 4 4 +(31, 9, 0) 4 4 4 4 4 4 4 4 4 4 +(32, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(32, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(32, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(32, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(32, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(32, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(32, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(32, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(32, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(32, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(33, 0, 0) 2 2 2 2 2 2 2 2 2 2 +(33, 1, 0) 2 2 2 2 2 2 2 2 2 2 +(33, 2, 0) 2 2 2 2 2 2 2 2 2 2 +(33, 3, 0) 2 2 2 2 2 2 2 2 2 2 +(33, 4, 0) 2 2 2 2 2 2 2 2 2 2 +(33, 5, 0) 2 2 2 2 2 2 2 2 2 2 +(33, 6, 0) 2 2 2 2 2 2 2 2 2 2 +(33, 7, 0) 2 2 2 2 2 2 2 2 2 2 +(33, 8, 0) 2 2 2 2 2 2 2 2 2 2 +(33, 9, 0) 2 2 2 2 2 2 2 2 2 2 +(34, 0, 0) 3 3 3 3 3 3 3 3 3 3 +(34, 1, 0) 3 3 3 3 3 3 3 3 3 3 +(34, 2, 0) 3 3 3 3 3 3 3 3 3 3 +(34, 3, 0) 3 3 3 3 3 3 3 3 3 3 +(34, 4, 0) 3 3 3 3 3 3 3 3 3 3 +(34, 5, 0) 3 3 3 3 3 3 3 3 3 3 +(34, 6, 0) 3 3 3 3 3 3 3 3 3 3 +(34, 7, 0) 3 3 3 3 3 3 3 3 3 3 +(34, 8, 0) 3 3 3 3 3 3 3 3 3 3 +(34, 9, 0) 3 3 3 3 3 3 3 3 3 3 +(35, 0, 0) 4 4 4 4 4 4 4 4 4 4 +(35, 1, 0) 4 4 4 4 4 4 4 4 4 4 +(35, 2, 0) 4 4 4 4 4 4 4 4 4 4 +(35, 3, 0) 4 4 4 4 4 4 4 4 4 4 +(35, 4, 0) 4 4 4 4 4 4 4 4 4 4 +(35, 5, 0) 4 4 4 4 4 4 4 4 4 4 +(35, 6, 0) 4 4 4 4 4 4 4 4 4 4 +(35, 7, 0) 4 4 4 4 4 4 4 4 4 4 +(35, 8, 0) 4 4 4 4 4 4 4 4 4 4 +(35, 9, 0) 4 4 4 4 4 4 4 4 4 4 +(36, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(36, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(36, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(36, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(36, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(36, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(36, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(36, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(36, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(36, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(37, 0, 0) 2 2 2 2 2 2 2 2 2 2 +(37, 1, 0) 2 2 2 2 2 2 2 2 2 2 +(37, 2, 0) 2 2 2 2 2 2 2 2 2 2 +(37, 3, 0) 2 2 2 2 2 2 2 2 2 2 +(37, 4, 0) 2 2 2 2 2 2 2 2 2 2 +(37, 5, 0) 2 2 2 2 2 2 2 2 2 2 +(37, 6, 0) 2 2 2 2 2 2 2 2 2 2 +(37, 7, 0) 2 2 2 2 2 2 2 2 2 2 +(37, 8, 0) 2 2 2 2 2 2 2 2 2 2 +(37, 9, 0) 2 2 2 2 2 2 2 2 2 2 +(38, 0, 0) 3 3 3 3 3 3 3 3 3 3 +(38, 1, 0) 3 3 3 3 3 3 3 3 3 3 +(38, 2, 0) 3 3 3 3 3 3 3 3 3 3 +(38, 3, 0) 3 3 3 3 3 3 3 3 3 3 +(38, 4, 0) 3 3 3 3 3 3 3 3 3 3 +(38, 5, 0) 3 3 3 3 3 3 3 3 3 3 +(38, 6, 0) 3 3 3 3 3 3 3 3 3 3 +(38, 7, 0) 3 3 3 3 3 3 3 3 3 3 +(38, 8, 0) 3 3 3 3 3 3 3 3 3 3 +(38, 9, 0) 3 3 3 3 3 3 3 3 3 3 +(39, 0, 0) 4 4 4 4 4 4 4 4 4 4 +(39, 1, 0) 4 4 4 4 4 4 4 4 4 4 +(39, 2, 0) 4 4 4 4 4 4 4 4 4 4 +(39, 3, 0) 4 4 4 4 4 4 4 4 4 4 +(39, 4, 0) 4 4 4 4 4 4 4 4 4 4 +(39, 5, 0) 4 4 4 4 4 4 4 4 4 4 +(39, 6, 0) 4 4 4 4 4 4 4 4 4 4 +(39, 7, 0) 4 4 4 4 4 4 4 4 4 4 +(39, 8, 0) 4 4 4 4 4 4 4 4 4 4 +(39, 9, 0) 4 4 4 4 4 4 4 4 4 4 +(40, 0, 0) 10 10 10 10 10 10 10 10 10 10 +(40, 1, 0) 10 10 10 10 10 10 10 10 10 10 +(40, 2, 0) 10 10 10 10 10 10 10 10 10 10 +(40, 3, 0) 10 10 10 10 10 10 10 10 10 10 +(40, 4, 0) 10 10 10 10 10 10 10 10 10 10 +(40, 5, 0) 10 10 10 10 10 10 10 10 10 10 +(40, 6, 0) 10 10 10 10 10 10 10 10 10 10 +(40, 7, 0) 10 10 10 10 10 10 10 10 10 10 +(40, 8, 0) 10 10 10 10 10 10 10 10 10 10 +(40, 9, 0) 10 10 10 10 10 10 10 10 10 10 +(41, 0, 0) 20 20 20 20 20 20 20 20 20 20 +(41, 1, 0) 20 20 20 20 20 20 20 20 20 20 +(41, 2, 0) 20 20 20 20 20 20 20 20 20 20 +(41, 3, 0) 20 20 20 20 20 20 20 20 20 20 +(41, 4, 0) 20 20 20 20 20 20 20 20 20 20 +(41, 5, 0) 20 20 20 20 20 20 20 20 20 20 +(41, 6, 0) 20 20 20 20 20 20 20 20 20 20 +(41, 7, 0) 20 20 20 20 20 20 20 20 20 20 +(41, 8, 0) 20 20 20 20 20 20 20 20 20 20 +(41, 9, 0) 20 20 20 20 20 20 20 20 20 20 +(42, 0, 0) 30 30 30 30 30 30 30 30 30 30 +(42, 1, 0) 30 30 30 30 30 30 30 30 30 30 +(42, 2, 0) 30 30 30 30 30 30 30 30 30 30 +(42, 3, 0) 30 30 30 30 30 30 30 30 30 30 +(42, 4, 0) 30 30 30 30 30 30 30 30 30 30 +(42, 5, 0) 30 30 30 30 30 30 30 30 30 30 +(42, 6, 0) 30 30 30 30 30 30 30 30 30 30 +(42, 7, 0) 30 30 30 30 30 30 30 30 30 30 +(42, 8, 0) 30 30 30 30 30 30 30 30 30 30 +(42, 9, 0) 30 30 30 30 30 30 30 30 30 30 +(43, 0, 0) 40 40 40 40 40 40 40 40 40 40 +(43, 1, 0) 40 40 40 40 40 40 40 40 40 40 +(43, 2, 0) 40 40 40 40 40 40 40 40 40 40 +(43, 3, 0) 40 40 40 40 40 40 40 40 40 40 +(43, 4, 0) 40 40 40 40 40 40 40 40 40 40 +(43, 5, 0) 40 40 40 40 40 40 40 40 40 40 +(43, 6, 0) 40 40 40 40 40 40 40 40 40 40 +(43, 7, 0) 40 40 40 40 40 40 40 40 40 40 +(43, 8, 0) 40 40 40 40 40 40 40 40 40 40 +(43, 9, 0) 40 40 40 40 40 40 40 40 40 40 +(44, 0, 0) 10 10 10 10 10 10 10 10 10 10 +(44, 1, 0) 10 10 10 10 10 10 10 10 10 10 +(44, 2, 0) 10 10 10 10 10 10 10 10 10 10 +(44, 3, 0) 10 10 10 10 10 10 10 10 10 10 +(44, 4, 0) 10 10 10 10 10 10 10 10 10 10 +(44, 5, 0) 10 10 10 10 10 10 10 10 10 10 +(44, 6, 0) 10 10 10 10 10 10 10 10 10 10 +(44, 7, 0) 10 10 10 10 10 10 10 10 10 10 +(44, 8, 0) 10 10 10 10 10 10 10 10 10 10 +(44, 9, 0) 10 10 10 10 10 10 10 10 10 10 +(45, 0, 0) 20 20 20 20 20 20 20 20 20 20 +(45, 1, 0) 20 20 20 20 20 20 20 20 20 20 +(45, 2, 0) 20 20 20 20 20 20 20 20 20 20 +(45, 3, 0) 20 20 20 20 20 20 20 20 20 20 +(45, 4, 0) 20 20 20 20 20 20 20 20 20 20 +(45, 5, 0) 20 20 20 20 20 20 20 20 20 20 +(45, 6, 0) 20 20 20 20 20 20 20 20 20 20 +(45, 7, 0) 20 20 20 20 20 20 20 20 20 20 +(45, 8, 0) 20 20 20 20 20 20 20 20 20 20 +(45, 9, 0) 20 20 20 20 20 20 20 20 20 20 +(46, 0, 0) 30 30 30 30 30 30 30 30 30 30 +(46, 1, 0) 30 30 30 30 30 30 30 30 30 30 +(46, 2, 0) 30 30 30 30 30 30 30 30 30 30 +(46, 3, 0) 30 30 30 30 30 30 30 30 30 30 +(46, 4, 0) 30 30 30 30 30 30 30 30 30 30 +(46, 5, 0) 30 30 30 30 30 30 30 30 30 30 +(46, 6, 0) 30 30 30 30 30 30 30 30 30 30 +(46, 7, 0) 30 30 30 30 30 30 30 30 30 30 +(46, 8, 0) 30 30 30 30 30 30 30 30 30 30 +(46, 9, 0) 30 30 30 30 30 30 30 30 30 30 +(47, 0, 0) 40 40 40 40 40 40 40 40 40 40 +(47, 1, 0) 40 40 40 40 40 40 40 40 40 40 +(47, 2, 0) 40 40 40 40 40 40 40 40 40 40 +(47, 3, 0) 40 40 40 40 40 40 40 40 40 40 +(47, 4, 0) 40 40 40 40 40 40 40 40 40 40 +(47, 5, 0) 40 40 40 40 40 40 40 40 40 40 +(47, 6, 0) 40 40 40 40 40 40 40 40 40 40 +(47, 7, 0) 40 40 40 40 40 40 40 40 40 40 +(47, 8, 0) 40 40 40 40 40 40 40 40 40 40 +(47, 9, 0) 40 40 40 40 40 40 40 40 40 40 +(48, 0, 0) 10 10 10 10 10 10 10 10 10 10 +(48, 1, 0) 10 10 10 10 10 10 10 10 10 10 +(48, 2, 0) 10 10 10 10 10 10 10 10 10 10 +(48, 3, 0) 10 10 10 10 10 10 10 10 10 10 +(48, 4, 0) 10 10 10 10 10 10 10 10 10 10 +(48, 5, 0) 10 10 10 10 10 10 10 10 10 10 +(48, 6, 0) 10 10 10 10 10 10 10 10 10 10 +(48, 7, 0) 10 10 10 10 10 10 10 10 10 10 +(48, 8, 0) 10 10 10 10 10 10 10 10 10 10 +(48, 9, 0) 10 10 10 10 10 10 10 10 10 10 +(49, 0, 0) 20 20 20 20 20 20 20 20 20 20 +(49, 1, 0) 20 20 20 20 20 20 20 20 20 20 +(49, 2, 0) 20 20 20 20 20 20 20 20 20 20 +(49, 3, 0) 20 20 20 20 20 20 20 20 20 20 +(49, 4, 0) 20 20 20 20 20 20 20 20 20 20 +(49, 5, 0) 20 20 20 20 20 20 20 20 20 20 +(49, 6, 0) 20 20 20 20 20 20 20 20 20 20 +(49, 7, 0) 20 20 20 20 20 20 20 20 20 20 +(49, 8, 0) 20 20 20 20 20 20 20 20 20 20 +(49, 9, 0) 20 20 20 20 20 20 20 20 20 20 +(50, 0, 0) 30 30 30 30 30 30 30 30 30 30 +(50, 1, 0) 30 30 30 30 30 30 30 30 30 30 +(50, 2, 0) 30 30 30 30 30 30 30 30 30 30 +(50, 3, 0) 30 30 30 30 30 30 30 30 30 30 +(50, 4, 0) 30 30 30 30 30 30 30 30 30 30 +(50, 5, 0) 30 30 30 30 30 30 30 30 30 30 +(50, 6, 0) 30 30 30 30 30 30 30 30 30 30 +(50, 7, 0) 30 30 30 30 30 30 30 30 30 30 +(50, 8, 0) 30 30 30 30 30 30 30 30 30 30 +(50, 9, 0) 30 30 30 30 30 30 30 30 30 30 +(51, 0, 0) 40 40 40 40 40 40 40 40 40 40 +(51, 1, 0) 40 40 40 40 40 40 40 40 40 40 +(51, 2, 0) 40 40 40 40 40 40 40 40 40 40 +(51, 3, 0) 40 40 40 40 40 40 40 40 40 40 +(51, 4, 0) 40 40 40 40 40 40 40 40 40 40 +(51, 5, 0) 40 40 40 40 40 40 40 40 40 40 +(51, 6, 0) 40 40 40 40 40 40 40 40 40 40 +(51, 7, 0) 40 40 40 40 40 40 40 40 40 40 +(51, 8, 0) 40 40 40 40 40 40 40 40 40 40 +(51, 9, 0) 40 40 40 40 40 40 40 40 40 40 +(52, 0, 0) 10 10 10 10 10 10 10 10 10 10 +(52, 1, 0) 10 10 10 10 10 10 10 10 10 10 +(52, 2, 0) 10 10 10 10 10 10 10 10 10 10 +(52, 3, 0) 10 10 10 10 10 10 10 10 10 10 +(52, 4, 0) 10 10 10 10 10 10 10 10 10 10 +(52, 5, 0) 10 10 10 10 10 10 10 10 10 10 +(52, 6, 0) 10 10 10 10 10 10 10 10 10 10 +(52, 7, 0) 10 10 10 10 10 10 10 10 10 10 +(52, 8, 0) 10 10 10 10 10 10 10 10 10 10 +(52, 9, 0) 10 10 10 10 10 10 10 10 10 10 +(53, 0, 0) 20 20 20 20 20 20 20 20 20 20 +(53, 1, 0) 20 20 20 20 20 20 20 20 20 20 +(53, 2, 0) 20 20 20 20 20 20 20 20 20 20 +(53, 3, 0) 20 20 20 20 20 20 20 20 20 20 +(53, 4, 0) 20 20 20 20 20 20 20 20 20 20 +(53, 5, 0) 20 20 20 20 20 20 20 20 20 20 +(53, 6, 0) 20 20 20 20 20 20 20 20 20 20 +(53, 7, 0) 20 20 20 20 20 20 20 20 20 20 +(53, 8, 0) 20 20 20 20 20 20 20 20 20 20 +(53, 9, 0) 20 20 20 20 20 20 20 20 20 20 +(54, 0, 0) 30 30 30 30 30 30 30 30 30 30 +(54, 1, 0) 30 30 30 30 30 30 30 30 30 30 +(54, 2, 0) 30 30 30 30 30 30 30 30 30 30 +(54, 3, 0) 30 30 30 30 30 30 30 30 30 30 +(54, 4, 0) 30 30 30 30 30 30 30 30 30 30 +(54, 5, 0) 30 30 30 30 30 30 30 30 30 30 +(54, 6, 0) 30 30 30 30 30 30 30 30 30 30 +(54, 7, 0) 30 30 30 30 30 30 30 30 30 30 +(54, 8, 0) 30 30 30 30 30 30 30 30 30 30 +(54, 9, 0) 30 30 30 30 30 30 30 30 30 30 +(55, 0, 0) 40 40 40 40 40 40 40 40 40 40 +(55, 1, 0) 40 40 40 40 40 40 40 40 40 40 +(55, 2, 0) 40 40 40 40 40 40 40 40 40 40 +(55, 3, 0) 40 40 40 40 40 40 40 40 40 40 +(55, 4, 0) 40 40 40 40 40 40 40 40 40 40 +(55, 5, 0) 40 40 40 40 40 40 40 40 40 40 +(55, 6, 0) 40 40 40 40 40 40 40 40 40 40 +(55, 7, 0) 40 40 40 40 40 40 40 40 40 40 +(55, 8, 0) 40 40 40 40 40 40 40 40 40 40 +(55, 9, 0) 40 40 40 40 40 40 40 40 40 40 +(56, 0, 0) 10 10 10 10 10 10 10 10 10 10 +(56, 1, 0) 10 10 10 10 10 10 10 10 10 10 +(56, 2, 0) 10 10 10 10 10 10 10 10 10 10 +(56, 3, 0) 10 10 10 10 10 10 10 10 10 10 +(56, 4, 0) 10 10 10 10 10 10 10 10 10 10 +(56, 5, 0) 10 10 10 10 10 10 10 10 10 10 +(56, 6, 0) 10 10 10 10 10 10 10 10 10 10 +(56, 7, 0) 10 10 10 10 10 10 10 10 10 10 +(56, 8, 0) 10 10 10 10 10 10 10 10 10 10 +(56, 9, 0) 10 10 10 10 10 10 10 10 10 10 +(57, 0, 0) 20 20 20 20 20 20 20 20 20 20 +(57, 1, 0) 20 20 20 20 20 20 20 20 20 20 +(57, 2, 0) 20 20 20 20 20 20 20 20 20 20 +(57, 3, 0) 20 20 20 20 20 20 20 20 20 20 +(57, 4, 0) 20 20 20 20 20 20 20 20 20 20 +(57, 5, 0) 20 20 20 20 20 20 20 20 20 20 +(57, 6, 0) 20 20 20 20 20 20 20 20 20 20 +(57, 7, 0) 20 20 20 20 20 20 20 20 20 20 +(57, 8, 0) 20 20 20 20 20 20 20 20 20 20 +(57, 9, 0) 20 20 20 20 20 20 20 20 20 20 +(58, 0, 0) 30 30 30 30 30 30 30 30 30 30 +(58, 1, 0) 30 30 30 30 30 30 30 30 30 30 +(58, 2, 0) 30 30 30 30 30 30 30 30 30 30 +(58, 3, 0) 30 30 30 30 30 30 30 30 30 30 +(58, 4, 0) 30 30 30 30 30 30 30 30 30 30 +(58, 5, 0) 30 30 30 30 30 30 30 30 30 30 +(58, 6, 0) 30 30 30 30 30 30 30 30 30 30 +(58, 7, 0) 30 30 30 30 30 30 30 30 30 30 +(58, 8, 0) 30 30 30 30 30 30 30 30 30 30 +(58, 9, 0) 30 30 30 30 30 30 30 30 30 30 +(59, 0, 0) 40 40 40 40 40 40 40 40 40 40 +(59, 1, 0) 40 40 40 40 40 40 40 40 40 40 +(59, 2, 0) 40 40 40 40 40 40 40 40 40 40 +(59, 3, 0) 40 40 40 40 40 40 40 40 40 40 +(59, 4, 0) 40 40 40 40 40 40 40 40 40 40 +(59, 5, 0) 40 40 40 40 40 40 40 40 40 40 +(59, 6, 0) 40 40 40 40 40 40 40 40 40 40 +(59, 7, 0) 40 40 40 40 40 40 40 40 40 40 +(59, 8, 0) 40 40 40 40 40 40 40 40 40 40 +(59, 9, 0) 40 40 40 40 40 40 40 40 40 40 +(60, 0, 0) 10 10 10 10 10 10 10 10 10 10 +(60, 1, 0) 10 10 10 10 10 10 10 10 10 10 +(60, 2, 0) 10 10 10 10 10 10 10 10 10 10 +(60, 3, 0) 10 10 10 10 10 10 10 10 10 10 +(60, 4, 0) 10 10 10 10 10 10 10 10 10 10 +(60, 5, 0) 10 10 10 10 10 10 10 10 10 10 +(60, 6, 0) 10 10 10 10 10 10 10 10 10 10 +(60, 7, 0) 10 10 10 10 10 10 10 10 10 10 +(60, 8, 0) 10 10 10 10 10 10 10 10 10 10 +(60, 9, 0) 10 10 10 10 10 10 10 10 10 10 +(61, 0, 0) 20 20 20 20 20 20 20 20 20 20 +(61, 1, 0) 20 20 20 20 20 20 20 20 20 20 +(61, 2, 0) 20 20 20 20 20 20 20 20 20 20 +(61, 3, 0) 20 20 20 20 20 20 20 20 20 20 +(61, 4, 0) 20 20 20 20 20 20 20 20 20 20 +(61, 5, 0) 20 20 20 20 20 20 20 20 20 20 +(61, 6, 0) 20 20 20 20 20 20 20 20 20 20 +(61, 7, 0) 20 20 20 20 20 20 20 20 20 20 +(61, 8, 0) 20 20 20 20 20 20 20 20 20 20 +(61, 9, 0) 20 20 20 20 20 20 20 20 20 20 +(62, 0, 0) 30 30 30 30 30 30 30 30 30 30 +(62, 1, 0) 30 30 30 30 30 30 30 30 30 30 +(62, 2, 0) 30 30 30 30 30 30 30 30 30 30 +(62, 3, 0) 30 30 30 30 30 30 30 30 30 30 +(62, 4, 0) 30 30 30 30 30 30 30 30 30 30 +(62, 5, 0) 30 30 30 30 30 30 30 30 30 30 +(62, 6, 0) 30 30 30 30 30 30 30 30 30 30 +(62, 7, 0) 30 30 30 30 30 30 30 30 30 30 +(62, 8, 0) 30 30 30 30 30 30 30 30 30 30 +(62, 9, 0) 30 30 30 30 30 30 30 30 30 30 +(63, 0, 0) 40 40 40 40 40 40 40 40 40 40 +(63, 1, 0) 40 40 40 40 40 40 40 40 40 40 +(63, 2, 0) 40 40 40 40 40 40 40 40 40 40 +(63, 3, 0) 40 40 40 40 40 40 40 40 40 40 +(63, 4, 0) 40 40 40 40 40 40 40 40 40 40 +(63, 5, 0) 40 40 40 40 40 40 40 40 40 40 +(63, 6, 0) 40 40 40 40 40 40 40 40 40 40 +(63, 7, 0) 40 40 40 40 40 40 40 40 40 40 +(63, 8, 0) 40 40 40 40 40 40 40 40 40 40 +(63, 9, 0) 40 40 40 40 40 40 40 40 40 40 +(64, 0, 0) 10 10 10 10 10 10 10 10 10 10 +(64, 1, 0) 10 10 10 10 10 10 10 10 10 10 +(64, 2, 0) 10 10 10 10 10 10 10 10 10 10 +(64, 3, 0) 10 10 10 10 10 10 10 10 10 10 +(64, 4, 0) 10 10 10 10 10 10 10 10 10 10 +(64, 5, 0) 10 10 10 10 10 10 10 10 10 10 +(64, 6, 0) 10 10 10 10 10 10 10 10 10 10 +(64, 7, 0) 10 10 10 10 10 10 10 10 10 10 +(64, 8, 0) 10 10 10 10 10 10 10 10 10 10 +(64, 9, 0) 10 10 10 10 10 10 10 10 10 10 +(65, 0, 0) 20 20 20 20 20 20 20 20 20 20 +(65, 1, 0) 20 20 20 20 20 20 20 20 20 20 +(65, 2, 0) 20 20 20 20 20 20 20 20 20 20 +(65, 3, 0) 20 20 20 20 20 20 20 20 20 20 +(65, 4, 0) 20 20 20 20 20 20 20 20 20 20 +(65, 5, 0) 20 20 20 20 20 20 20 20 20 20 +(65, 6, 0) 20 20 20 20 20 20 20 20 20 20 +(65, 7, 0) 20 20 20 20 20 20 20 20 20 20 +(65, 8, 0) 20 20 20 20 20 20 20 20 20 20 +(65, 9, 0) 20 20 20 20 20 20 20 20 20 20 +(66, 0, 0) 30 30 30 30 30 30 30 30 30 30 +(66, 1, 0) 30 30 30 30 30 30 30 30 30 30 +(66, 2, 0) 30 30 30 30 30 30 30 30 30 30 +(66, 3, 0) 30 30 30 30 30 30 30 30 30 30 +(66, 4, 0) 30 30 30 30 30 30 30 30 30 30 +(66, 5, 0) 30 30 30 30 30 30 30 30 30 30 +(66, 6, 0) 30 30 30 30 30 30 30 30 30 30 +(66, 7, 0) 30 30 30 30 30 30 30 30 30 30 +(66, 8, 0) 30 30 30 30 30 30 30 30 30 30 +(66, 9, 0) 30 30 30 30 30 30 30 30 30 30 +(67, 0, 0) 40 40 40 40 40 40 40 40 40 40 +(67, 1, 0) 40 40 40 40 40 40 40 40 40 40 +(67, 2, 0) 40 40 40 40 40 40 40 40 40 40 +(67, 3, 0) 40 40 40 40 40 40 40 40 40 40 +(67, 4, 0) 40 40 40 40 40 40 40 40 40 40 +(67, 5, 0) 40 40 40 40 40 40 40 40 40 40 +(67, 6, 0) 40 40 40 40 40 40 40 40 40 40 +(67, 7, 0) 40 40 40 40 40 40 40 40 40 40 +(67, 8, 0) 40 40 40 40 40 40 40 40 40 40 +(67, 9, 0) 40 40 40 40 40 40 40 40 40 40 +(68, 0, 0) 10 10 10 10 10 10 10 10 10 10 +(68, 1, 0) 10 10 10 10 10 10 10 10 10 10 +(68, 2, 0) 10 10 10 10 10 10 10 10 10 10 +(68, 3, 0) 10 10 10 10 10 10 10 10 10 10 +(68, 4, 0) 10 10 10 10 10 10 10 10 10 10 +(68, 5, 0) 10 10 10 10 10 10 10 10 10 10 +(68, 6, 0) 10 10 10 10 10 10 10 10 10 10 +(68, 7, 0) 10 10 10 10 10 10 10 10 10 10 +(68, 8, 0) 10 10 10 10 10 10 10 10 10 10 +(68, 9, 0) 10 10 10 10 10 10 10 10 10 10 +(69, 0, 0) 20 20 20 20 20 20 20 20 20 20 +(69, 1, 0) 20 20 20 20 20 20 20 20 20 20 +(69, 2, 0) 20 20 20 20 20 20 20 20 20 20 +(69, 3, 0) 20 20 20 20 20 20 20 20 20 20 +(69, 4, 0) 20 20 20 20 20 20 20 20 20 20 +(69, 5, 0) 20 20 20 20 20 20 20 20 20 20 +(69, 6, 0) 20 20 20 20 20 20 20 20 20 20 +(69, 7, 0) 20 20 20 20 20 20 20 20 20 20 +(69, 8, 0) 20 20 20 20 20 20 20 20 20 20 +(69, 9, 0) 20 20 20 20 20 20 20 20 20 20 +(70, 0, 0) 30 30 30 30 30 30 30 30 30 30 +(70, 1, 0) 30 30 30 30 30 30 30 30 30 30 +(70, 2, 0) 30 30 30 30 30 30 30 30 30 30 +(70, 3, 0) 30 30 30 30 30 30 30 30 30 30 +(70, 4, 0) 30 30 30 30 30 30 30 30 30 30 +(70, 5, 0) 30 30 30 30 30 30 30 30 30 30 +(70, 6, 0) 30 30 30 30 30 30 30 30 30 30 +(70, 7, 0) 30 30 30 30 30 30 30 30 30 30 +(70, 8, 0) 30 30 30 30 30 30 30 30 30 30 +(70, 9, 0) 30 30 30 30 30 30 30 30 30 30 +(71, 0, 0) 40 40 40 40 40 40 40 40 40 40 +(71, 1, 0) 40 40 40 40 40 40 40 40 40 40 +(71, 2, 0) 40 40 40 40 40 40 40 40 40 40 +(71, 3, 0) 40 40 40 40 40 40 40 40 40 40 +(71, 4, 0) 40 40 40 40 40 40 40 40 40 40 +(71, 5, 0) 40 40 40 40 40 40 40 40 40 40 +(71, 6, 0) 40 40 40 40 40 40 40 40 40 40 +(71, 7, 0) 40 40 40 40 40 40 40 40 40 40 +(71, 8, 0) 40 40 40 40 40 40 40 40 40 40 +(71, 9, 0) 40 40 40 40 40 40 40 40 40 40 +(72, 0, 0) 10 10 10 10 10 10 10 10 10 10 +(72, 1, 0) 10 10 10 10 10 10 10 10 10 10 +(72, 2, 0) 10 10 10 10 10 10 10 10 10 10 +(72, 3, 0) 10 10 10 10 10 10 10 10 10 10 +(72, 4, 0) 10 10 10 10 10 10 10 10 10 10 +(72, 5, 0) 10 10 10 10 10 10 10 10 10 10 +(72, 6, 0) 10 10 10 10 10 10 10 10 10 10 +(72, 7, 0) 10 10 10 10 10 10 10 10 10 10 +(72, 8, 0) 10 10 10 10 10 10 10 10 10 10 +(72, 9, 0) 10 10 10 10 10 10 10 10 10 10 +(73, 0, 0) 20 20 20 20 20 20 20 20 20 20 +(73, 1, 0) 20 20 20 20 20 20 20 20 20 20 +(73, 2, 0) 20 20 20 20 20 20 20 20 20 20 +(73, 3, 0) 20 20 20 20 20 20 20 20 20 20 +(73, 4, 0) 20 20 20 20 20 20 20 20 20 20 +(73, 5, 0) 20 20 20 20 20 20 20 20 20 20 +(73, 6, 0) 20 20 20 20 20 20 20 20 20 20 +(73, 7, 0) 20 20 20 20 20 20 20 20 20 20 +(73, 8, 0) 20 20 20 20 20 20 20 20 20 20 +(73, 9, 0) 20 20 20 20 20 20 20 20 20 20 +(74, 0, 0) 30 30 30 30 30 30 30 30 30 30 +(74, 1, 0) 30 30 30 30 30 30 30 30 30 30 +(74, 2, 0) 30 30 30 30 30 30 30 30 30 30 +(74, 3, 0) 30 30 30 30 30 30 30 30 30 30 +(74, 4, 0) 30 30 30 30 30 30 30 30 30 30 +(74, 5, 0) 30 30 30 30 30 30 30 30 30 30 +(74, 6, 0) 30 30 30 30 30 30 30 30 30 30 +(74, 7, 0) 30 30 30 30 30 30 30 30 30 30 +(74, 8, 0) 30 30 30 30 30 30 30 30 30 30 +(74, 9, 0) 30 30 30 30 30 30 30 30 30 30 +(75, 0, 0) 40 40 40 40 40 40 40 40 40 40 +(75, 1, 0) 40 40 40 40 40 40 40 40 40 40 +(75, 2, 0) 40 40 40 40 40 40 40 40 40 40 +(75, 3, 0) 40 40 40 40 40 40 40 40 40 40 +(75, 4, 0) 40 40 40 40 40 40 40 40 40 40 +(75, 5, 0) 40 40 40 40 40 40 40 40 40 40 +(75, 6, 0) 40 40 40 40 40 40 40 40 40 40 +(75, 7, 0) 40 40 40 40 40 40 40 40 40 40 +(75, 8, 0) 40 40 40 40 40 40 40 40 40 40 +(75, 9, 0) 40 40 40 40 40 40 40 40 40 40 +(76, 0, 0) 10 10 10 10 10 10 10 10 10 10 +(76, 1, 0) 10 10 10 10 10 10 10 10 10 10 +(76, 2, 0) 10 10 10 10 10 10 10 10 10 10 +(76, 3, 0) 10 10 10 10 10 10 10 10 10 10 +(76, 4, 0) 10 10 10 10 10 10 10 10 10 10 +(76, 5, 0) 10 10 10 10 10 10 10 10 10 10 +(76, 6, 0) 10 10 10 10 10 10 10 10 10 10 +(76, 7, 0) 10 10 10 10 10 10 10 10 10 10 +(76, 8, 0) 10 10 10 10 10 10 10 10 10 10 +(76, 9, 0) 10 10 10 10 10 10 10 10 10 10 +(77, 0, 0) 20 20 20 20 20 20 20 20 20 20 +(77, 1, 0) 20 20 20 20 20 20 20 20 20 20 +(77, 2, 0) 20 20 20 20 20 20 20 20 20 20 +(77, 3, 0) 20 20 20 20 20 20 20 20 20 20 +(77, 4, 0) 20 20 20 20 20 20 20 20 20 20 +(77, 5, 0) 20 20 20 20 20 20 20 20 20 20 +(77, 6, 0) 20 20 20 20 20 20 20 20 20 20 +(77, 7, 0) 20 20 20 20 20 20 20 20 20 20 +(77, 8, 0) 20 20 20 20 20 20 20 20 20 20 +(77, 9, 0) 20 20 20 20 20 20 20 20 20 20 +(78, 0, 0) 30 30 30 30 30 30 30 30 30 30 +(78, 1, 0) 30 30 30 30 30 30 30 30 30 30 +(78, 2, 0) 30 30 30 30 30 30 30 30 30 30 +(78, 3, 0) 30 30 30 30 30 30 30 30 30 30 +(78, 4, 0) 30 30 30 30 30 30 30 30 30 30 +(78, 5, 0) 30 30 30 30 30 30 30 30 30 30 +(78, 6, 0) 30 30 30 30 30 30 30 30 30 30 +(78, 7, 0) 30 30 30 30 30 30 30 30 30 30 +(78, 8, 0) 30 30 30 30 30 30 30 30 30 30 +(78, 9, 0) 30 30 30 30 30 30 30 30 30 30 +(79, 0, 0) 40 40 40 40 40 40 40 40 40 40 +(79, 1, 0) 40 40 40 40 40 40 40 40 40 40 +(79, 2, 0) 40 40 40 40 40 40 40 40 40 40 +(79, 3, 0) 40 40 40 40 40 40 40 40 40 40 +(79, 4, 0) 40 40 40 40 40 40 40 40 40 40 +(79, 5, 0) 40 40 40 40 40 40 40 40 40 40 +(79, 6, 0) 40 40 40 40 40 40 40 40 40 40 +(79, 7, 0) 40 40 40 40 40 40 40 40 40 40 +(79, 8, 0) 40 40 40 40 40 40 40 40 40 40 +(79, 9, 0) 40 40 40 40 40 40 40 40 40 40 + All data: +(0, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(0, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(1, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(1, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(1, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(1, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(1, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(1, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(1, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(1, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(1, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(1, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(2, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(2, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(2, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(2, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(2, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(2, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(2, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(2, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(2, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(2, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(3, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(3, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(3, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(3, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(3, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(3, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(3, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(3, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(3, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(3, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(4, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(5, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(5, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(5, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(5, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(5, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(5, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(5, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(5, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(5, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(5, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(6, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(6, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(6, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(6, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(6, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(6, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(6, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(6, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(6, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(6, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(7, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(7, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(7, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(7, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(7, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(7, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(7, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(7, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(7, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(7, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(8, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(9, 0, 0) 1 1 1 1 1 1 1 1 1 1 +(9, 1, 0) 1 1 1 1 1 1 1 1 1 1 +(9, 2, 0) 1 1 1 1 1 1 1 1 1 1 +(9, 3, 0) 1 1 1 1 1 1 1 1 1 1 +(9, 4, 0) 1 1 1 1 1 1 1 1 1 1 +(9, 5, 0) 1 1 1 1 1 1 1 1 1 1 +(9, 6, 0) 1 1 1 1 1 1 1 1 1 1 +(9, 7, 0) 1 1 1 1 1 1 1 1 1 1 +(9, 8, 0) 1 1 1 1 1 1 1 1 1 1 +(9, 9, 0) 1 1 1 1 1 1 1 1 1 1 +(10, 0, 0) 10 10 10 10 10 10 10 10 10 10 +(10, 1, 0) 10 10 10 10 10 10 10 10 10 10 +(10, 2, 0) 10 10 10 10 10 10 10 10 10 10 +(10, 3, 0) 10 10 10 10 10 10 10 10 10 10 +(10, 4, 0) 10 10 10 10 10 10 10 10 10 10 +(10, 5, 0) 10 10 10 10 10 10 10 10 10 10 +(10, 6, 0) 10 10 10 10 10 10 10 10 10 10 +(10, 7, 0) 10 10 10 10 10 10 10 10 10 10 +(10, 8, 0) 10 10 10 10 10 10 10 10 10 10 +(10, 9, 0) 10 10 10 10 10 10 10 10 10 10 +(11, 0, 0) 10 10 10 10 10 10 10 10 10 10 +(11, 1, 0) 10 10 10 10 10 10 10 10 10 10 +(11, 2, 0) 10 10 10 10 10 10 10 10 10 10 +(11, 3, 0) 10 10 10 10 10 10 10 10 10 10 +(11, 4, 0) 10 10 10 10 10 10 10 10 10 10 +(11, 5, 0) 10 10 10 10 10 10 10 10 10 10 +(11, 6, 0) 10 10 10 10 10 10 10 10 10 10 +(11, 7, 0) 10 10 10 10 10 10 10 10 10 10 +(11, 8, 0) 10 10 10 10 10 10 10 10 10 10 +(11, 9, 0) 10 10 10 10 10 10 10 10 10 10 +(12, 0, 0) 10 10 10 10 10 10 10 10 10 10 +(12, 1, 0) 10 10 10 10 10 10 10 10 10 10 +(12, 2, 0) 10 10 10 10 10 10 10 10 10 10 +(12, 3, 0) 10 10 10 10 10 10 10 10 10 10 +(12, 4, 0) 10 10 10 10 10 10 10 10 10 10 +(12, 5, 0) 10 10 10 10 10 10 10 10 10 10 +(12, 6, 0) 10 10 10 10 10 10 10 10 10 10 +(12, 7, 0) 10 10 10 10 10 10 10 10 10 10 +(12, 8, 0) 10 10 10 10 10 10 10 10 10 10 +(12, 9, 0) 10 10 10 10 10 10 10 10 10 10 +(13, 0, 0) 10 10 10 10 10 10 10 10 10 10 +(13, 1, 0) 10 10 10 10 10 10 10 10 10 10 +(13, 2, 0) 10 10 10 10 10 10 10 10 10 10 +(13, 3, 0) 10 10 10 10 10 10 10 10 10 10 +(13, 4, 0) 10 10 10 10 10 10 10 10 10 10 +(13, 5, 0) 10 10 10 10 10 10 10 10 10 10 +(13, 6, 0) 10 10 10 10 10 10 10 10 10 10 +(13, 7, 0) 10 10 10 10 10 10 10 10 10 10 +(13, 8, 0) 10 10 10 10 10 10 10 10 10 10 +(13, 9, 0) 10 10 10 10 10 10 10 10 10 10 +(14, 0, 0) 10 10 10 10 10 10 10 10 10 10 +(14, 1, 0) 10 10 10 10 10 10 10 10 10 10 +(14, 2, 0) 10 10 10 10 10 10 10 10 10 10 +(14, 3, 0) 10 10 10 10 10 10 10 10 10 10 +(14, 4, 0) 10 10 10 10 10 10 10 10 10 10 +(14, 5, 0) 10 10 10 10 10 10 10 10 10 10 +(14, 6, 0) 10 10 10 10 10 10 10 10 10 10 +(14, 7, 0) 10 10 10 10 10 10 10 10 10 10 +(14, 8, 0) 10 10 10 10 10 10 10 10 10 10 +(14, 9, 0) 10 10 10 10 10 10 10 10 10 10 +(15, 0, 0) 10 10 10 10 10 10 10 10 10 10 +(15, 1, 0) 10 10 10 10 10 10 10 10 10 10 +(15, 2, 0) 10 10 10 10 10 10 10 10 10 10 +(15, 3, 0) 10 10 10 10 10 10 10 10 10 10 +(15, 4, 0) 10 10 10 10 10 10 10 10 10 10 +(15, 5, 0) 10 10 10 10 10 10 10 10 10 10 +(15, 6, 0) 10 10 10 10 10 10 10 10 10 10 +(15, 7, 0) 10 10 10 10 10 10 10 10 10 10 +(15, 8, 0) 10 10 10 10 10 10 10 10 10 10 +(15, 9, 0) 10 10 10 10 10 10 10 10 10 10 +(16, 0, 0) 10 10 10 10 10 10 10 10 10 10 +(16, 1, 0) 10 10 10 10 10 10 10 10 10 10 +(16, 2, 0) 10 10 10 10 10 10 10 10 10 10 +(16, 3, 0) 10 10 10 10 10 10 10 10 10 10 +(16, 4, 0) 10 10 10 10 10 10 10 10 10 10 +(16, 5, 0) 10 10 10 10 10 10 10 10 10 10 +(16, 6, 0) 10 10 10 10 10 10 10 10 10 10 +(16, 7, 0) 10 10 10 10 10 10 10 10 10 10 +(16, 8, 0) 10 10 10 10 10 10 10 10 10 10 +(16, 9, 0) 10 10 10 10 10 10 10 10 10 10 +(17, 0, 0) 10 10 10 10 10 10 10 10 10 10 +(17, 1, 0) 10 10 10 10 10 10 10 10 10 10 +(17, 2, 0) 10 10 10 10 10 10 10 10 10 10 +(17, 3, 0) 10 10 10 10 10 10 10 10 10 10 +(17, 4, 0) 10 10 10 10 10 10 10 10 10 10 +(17, 5, 0) 10 10 10 10 10 10 10 10 10 10 +(17, 6, 0) 10 10 10 10 10 10 10 10 10 10 +(17, 7, 0) 10 10 10 10 10 10 10 10 10 10 +(17, 8, 0) 10 10 10 10 10 10 10 10 10 10 +(17, 9, 0) 10 10 10 10 10 10 10 10 10 10 +(18, 0, 0) 10 10 10 10 10 10 10 10 10 10 +(18, 1, 0) 10 10 10 10 10 10 10 10 10 10 +(18, 2, 0) 10 10 10 10 10 10 10 10 10 10 +(18, 3, 0) 10 10 10 10 10 10 10 10 10 10 +(18, 4, 0) 10 10 10 10 10 10 10 10 10 10 +(18, 5, 0) 10 10 10 10 10 10 10 10 10 10 +(18, 6, 0) 10 10 10 10 10 10 10 10 10 10 +(18, 7, 0) 10 10 10 10 10 10 10 10 10 10 +(18, 8, 0) 10 10 10 10 10 10 10 10 10 10 +(18, 9, 0) 10 10 10 10 10 10 10 10 10 10 +(19, 0, 0) 10 10 10 10 10 10 10 10 10 10 +(19, 1, 0) 10 10 10 10 10 10 10 10 10 10 +(19, 2, 0) 10 10 10 10 10 10 10 10 10 10 +(19, 3, 0) 10 10 10 10 10 10 10 10 10 10 +(19, 4, 0) 10 10 10 10 10 10 10 10 10 10 +(19, 5, 0) 10 10 10 10 10 10 10 10 10 10 +(19, 6, 0) 10 10 10 10 10 10 10 10 10 10 +(19, 7, 0) 10 10 10 10 10 10 10 10 10 10 +(19, 8, 0) 10 10 10 10 10 10 10 10 10 10 +(19, 9, 0) 10 10 10 10 10 10 10 10 10 10 diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival.ddl b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival.ddl new file mode 100644 index 0000000..5279876 --- /dev/null +++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival.ddl @@ -0,0 +1,410 @@ +HDF5 "h5ex_vds-percival.h5" { +GROUP "/" { + DATASET "VDS-Percival" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 40, 10, 10 ) / ( 40, 10, 10 ) } + DATA { + (0,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (0,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (1,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (1,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (2,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (2,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (3,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (3,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (4,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (4,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (5,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (5,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (6,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (6,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (7,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (7,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (8,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (8,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (9,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (9,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (10,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (10,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (11,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (11,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (12,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (12,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (13,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (13,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (14,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (14,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (15,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (15,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (16,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (16,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (16,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (16,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (16,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (16,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (16,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (16,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (16,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (16,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (17,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (17,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (17,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (17,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (17,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (17,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (17,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (17,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (17,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (17,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (18,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (18,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (19,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (19,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (19,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (19,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (19,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (19,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (19,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (19,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (19,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (19,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (20,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (20,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (20,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (20,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (20,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (20,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (20,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (20,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (20,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (20,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (21,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (21,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (21,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (21,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (21,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (21,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (21,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (21,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (21,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (21,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (22,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (22,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (22,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (22,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (22,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (22,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (22,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (22,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (22,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (22,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (23,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (23,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (23,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (23,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (23,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (23,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (23,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (23,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (23,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (23,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (24,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (24,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (24,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (24,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (24,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (24,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (24,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (24,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (24,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (24,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (25,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (25,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (25,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (25,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (25,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (25,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (25,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (25,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (25,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (25,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (26,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (26,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (26,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (26,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (26,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (26,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (26,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (26,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (26,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (26,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (27,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (27,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (27,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (27,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (27,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (27,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (27,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (27,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (27,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (27,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (28,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (28,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (28,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (28,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (28,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (28,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (28,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (28,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (28,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (28,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (29,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (29,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (29,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (29,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (29,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (29,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (29,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (29,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (29,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (29,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (30,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (30,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (30,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (30,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (30,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (30,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (30,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (30,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (30,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (30,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (31,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (31,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (31,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (31,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (31,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (31,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (31,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (31,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (31,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (31,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (32,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (32,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (32,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (32,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (32,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (32,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (32,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (32,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (32,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (32,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (33,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (33,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (33,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (33,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (33,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (33,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (33,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (33,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (33,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (33,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (34,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (34,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (34,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (34,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (34,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (34,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (34,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (34,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (34,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (34,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (35,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (35,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (35,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (35,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (35,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (35,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (35,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (35,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (35,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (35,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (36,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (36,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (36,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (36,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (36,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (36,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (36,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (36,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (36,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (36,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + (37,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (37,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (37,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (37,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (37,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (37,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (37,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (37,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (37,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (37,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + (38,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (38,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (38,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (38,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (38,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (38,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (38,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (38,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (38,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (38,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + (39,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (39,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (39,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (39,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (39,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (39,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (39,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (39,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (39,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + (39,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 + } + } +} +} diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival.tst b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival.tst new file mode 100644 index 0000000..9d39e9e --- /dev/null +++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival.tst @@ -0,0 +1,95 @@ + Dataset has a virtual layout + Number of mappings is 4 + Mapping 0 + Selection in the virtual dataset + start = [0, 0, 0] + stride = [4, 1, 1] + count = [10, 1, 1] + block = [1, 10, 10] + Source filename ap.h5 + Source dataset name A + Selection in the source dataset + start = [0, 0, 0] + stride = [1, 1, 1] + count = [1, 1, 1] + block = [10, 10, 10] + Mapping 1 + Selection in the virtual dataset + start = [1, 0, 0] + stride = [4, 1, 1] + count = [10, 1, 1] + block = [1, 10, 10] + Source filename bp.h5 + Source dataset name B + Selection in the source dataset + start = [0, 0, 0] + stride = [1, 1, 1] + count = [1, 1, 1] + block = [10, 10, 10] + Mapping 2 + Selection in the virtual dataset + start = [2, 0, 0] + stride = [4, 1, 1] + count = [10, 1, 1] + block = [1, 10, 10] + Source filename cp.h5 + Source dataset name C + Selection in the source dataset + start = [0, 0, 0] + stride = [1, 1, 1] + count = [1, 1, 1] + block = [10, 10, 10] + Mapping 3 + Selection in the virtual dataset + start = [3, 0, 0] + stride = [4, 1, 1] + count = [10, 1, 1] + block = [1, 10, 10] + Source filename dp.h5 + Source dataset name D + Selection in the source dataset + start = [0, 0, 0] + stride = [1, 1, 1] + count = [1, 1, 1] + block = [10, 10, 10] + VDS Data: + [ [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1]] + [ [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2]] + [ [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3]] + [ [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4]] + [ [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1]] + [ [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2]] + [ [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3]] + [ [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4]] + [ [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1]] + [ [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2]] + [ [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3]] + [ [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4]] + [ [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1]] + [ [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2]] + [ [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3]] + [ [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4]] + [ [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1]] + [ [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2]] + [ [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3]] + [ [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4]] + [ [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1]] + [ [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2]] + [ [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3]] + [ [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4]] + [ [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1]] + [ [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2]] + [ [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3]] + [ [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4]] + [ [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1]] + [ [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2]] + [ [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3]] + [ [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4]] + [ [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1]] + [ [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2]] + [ [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3]] + [ [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4]] + [ [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1]] + [ [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2]] + [ [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3]] + [ [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4]] diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-simpleIO.ddl b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-simpleIO.ddl new file mode 100644 index 0000000..8a667e6 --- /dev/null +++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-simpleIO.ddl @@ -0,0 +1,14 @@ +HDF5 "h5ex_vds-simpleIO.h5" { +GROUP "/" { + DATASET "VDS" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } + DATA { + (0,0): 1, 1, 1, 1, 1, 1, + (1,0): 2, 2, 2, 2, 2, 2, + (2,0): 3, 3, 3, 3, 3, 3, + (3,0): 4, 4, 4, 4, 4, 4 + } + } +} +} diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-simpleIO.tst b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-simpleIO.tst new file mode 100644 index 0000000..ec39242 --- /dev/null +++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-simpleIO.tst @@ -0,0 +1,12 @@ + Dataset has a virtual layout + Number of mappings is 1 + Mapping 0 + Selection in the virtual dataset Selection is H5S_ALL + Source filename as.h5 + Source dataset name /A + Selection in the source dataset Selection is H5S_ALL + VDS Data: + [ 1 1 1 1 1 1] + [ 2 2 2 2 2 2] + [ 3 3 3 3 3 3] + [ 4 4 4 4 4 4] diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds.ddl b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds.ddl new file mode 100644 index 0000000..efbff7d --- /dev/null +++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds.ddl @@ -0,0 +1,14 @@ +HDF5 "h5ex_vds.h5" { +GROUP "/" { + DATASET "VDS" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) } + DATA { + (0,0): 1, 1, 1, 1, 1, 1, + (1,0): 2, 2, 2, 2, 2, 2, + (2,0): 3, 3, 3, 3, 3, 3, + (3,0): -1, -1, -1, -1, -1, -1 + } + } +} +} diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds.tst b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds.tst new file mode 100644 index 0000000..410ac4d --- /dev/null +++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds.tst @@ -0,0 +1,34 @@ + Dataset has a virtual layout + Number of mappings is 3 + Mapping 0 + Selection in the virtual dataset (0,0) - (0,5) + start = [0, 0] + stride = [1, 1] + count = [1, 1] + block = [1, 6] + Source filename h5ex_vds_a.h5 + Source dataset name A + Selection in the source dataset (0) - (5) + Mapping 1 + Selection in the virtual dataset (1,0) - (1,5) + start = [1, 0] + stride = [1, 1] + count = [1, 1] + block = [1, 6] + Source filename h5ex_vds_b.h5 + Source dataset name B + Selection in the source dataset (0) - (5) + Mapping 2 + Selection in the virtual dataset (2,0) - (2,5) + start = [2, 0] + stride = [1, 1] + count = [1, 1] + block = [1, 6] + Source filename h5ex_vds_c.h5 + Source dataset name C + Selection in the source dataset (0) - (5) + VDS Data: + [ 1 1 1 1 1 1] + [ 2 2 2 2 2 2] + [ 3 3 3 3 3 3] + [ -1 -1 -1 -1 -1 -1] diff --git a/HDF5Examples/C/Perf/CMakeLists.txt b/HDF5Examples/C/Perf/CMakeLists.txt index 5cbba67..e41def2 100644 --- a/HDF5Examples/C/Perf/CMakeLists.txt +++ b/HDF5Examples/C/Perf/CMakeLists.txt @@ -42,7 +42,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_OUTPUT=${testname}.out" -D "TEST_REFERENCE=${testname}.tst" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall) if (HDF5_BUILD_TOOLS) @@ -56,7 +56,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_EXPECT=0" -D "TEST_REFERENCE=${testname}.dmp" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}) endif () diff --git a/HDF5Examples/CMakeLists.txt b/HDF5Examples/CMakeLists.txt index e944b9e..00adfc0 100644 --- a/HDF5Examples/CMakeLists.txt +++ b/HDF5Examples/CMakeLists.txt @@ -4,29 +4,45 @@ project (H5EXAMPLES C) #----------------------------------------------------------------------------- # Define some CMake variables for use later in the project #----------------------------------------------------------------------------- -set (HDF5EX_C_SRC_DIR ${H5EXAMPLES_SOURCE_DIR}/C) -set (HDF5EX_F90_SRC_DIR ${H5EXAMPLES_SOURCE_DIR}/FORTRAN) -set (HDF5EX_JAVA_DIR ${H5EXAMPLES_SOURCE_DIR}/JAVA) -set (HDF5EX_RESOURCES_DIR ${H5EXAMPLES_SOURCE_DIR}/config/cmake) - +set (H5EX_C_SRC_DIR ${H5EXAMPLES_SOURCE_DIR}/C) +set (H5EX_F90_SRC_DIR ${H5EXAMPLES_SOURCE_DIR}/FORTRAN) +set (H5EX_JAVA_DIR ${H5EXAMPLES_SOURCE_DIR}/JAVA) #----------------------------------------------------------------------------- # Basic HDF5Examples stuff here #----------------------------------------------------------------------------- -include (${HDF5EX_RESOURCES_DIR}/HDFMacros.cmake) -include (${HDF5EX_RESOURCES_DIR}/HDFExampleMacros.cmake) -set (CMAKE_JAVA_INCLUDE_PATH "") +if (NOT EXAMPLES_EXTERNALLY_CONFIGURED) + set (H5EX_RESOURCES_DIR ${H5EXAMPLES_SOURCE_DIR}/config/cmake) + + include (${H5EX_RESOURCES_DIR}/HDFMacros.cmake) + include (${H5EX_RESOURCES_DIR}/HDFExampleMacros.cmake) + set (CMAKE_JAVA_INCLUDE_PATH "") -SET_HDF_BUILD_TYPE() + SET_HDF_BUILD_TYPE() -BASIC_SETTINGS (EXAMPLES) + BASIC_SETTINGS (EX) + + #----------------------------------------------------------------------------- + # HDF5 support + #----------------------------------------------------------------------------- + HDF5_SUPPORT (TRUE) + APIVersion(${HDF5_VERSION} H5_LIBVER_DIR) +endif () +message (STATUS "HDF5 link libs: ${H5EX_HDF5_LINK_LIBS}") +message (STATUS "HDF5 H5_LIBVER_DIR: ${H5_LIBVER_DIR} HDF5_VERSION_MAJOR: ${HDF5_VERSION_MAJOR}") #----------------------------------------------------------------------------- -# HDF5 support +# Option to build JAVA examples #----------------------------------------------------------------------------- -HDF5_SUPPORT (TRUE) -message (STATUS "HDF5 link libs: ${H5EX_HDF5_LINK_LIBS}") -APIVersion(${HDF5_VERSION} H5_LIBVER_DIR) -message (STATUS "HDF5 H5_LIBVER_DIR: ${H5_LIBVER_DIR}") +option (HDF_BUILD_JAVA "Build JAVA support" OFF) +if (HDF_BUILD_JAVA) + find_package (Java) + INCLUDE_DIRECTORIES ( + ${JAVA_INCLUDE_PATH} + ${JAVA_INCLUDE_PATH2} + ) + + include (${H5EX_RESOURCES_DIR}/UseJava.cmake) +endif () #----------------------------------------------------------------------------- # parse the full version number from H5public.h and include in H5_VERS_INFO @@ -54,7 +70,7 @@ endif () #----------------------------------------------------------------------------- # Option to Enable MPI Parallel #----------------------------------------------------------------------------- -set (CMAKE_MODULE_PATH ${H5EXAMPLES_RESOURCES_DIR} ${CMAKE_MODULE_PATH}) +set (CMAKE_MODULE_PATH ${H5EX_RESOURCES_DIR} ${CMAKE_MODULE_PATH}) option (HDF_ENABLE_PARALLEL "Enable parallel build (requires MPI)" OFF) if (HDF_ENABLE_PARALLEL) find_package(MPI REQUIRED) @@ -117,7 +133,7 @@ if (H5EX_BUILD_TESTING) enable_testing () include (CTest) include (${PROJECT_SOURCE_DIR}/CTestConfig.cmake) - configure_file (${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/CTestCustom.cmake ${PROJECT_BINARY_DIR}/CTestCustom.ctest @ONLY) + configure_file (${H5EX_RESOURCES_DIR}/CTestCustom.cmake ${PROJECT_BINARY_DIR}/CTestCustom.ctest @ONLY) endif () if (${H5_LIBVER_DIR} GREATER 16) @@ -142,7 +158,7 @@ if (${H5_LIBVER_DIR} GREATER 16) endif () endif () - configure_file (${HDF5EX_F90_SRC_DIR}/H5D/h5_version.h.in ${PROJECT_BINARY_DIR}/FORTRAN/H5D/h5_version.h @ONLY) + configure_file (${H5EX_F90_SRC_DIR}/H5D/h5_version.h.in ${PROJECT_BINARY_DIR}/FORTRAN/H5D/h5_version.h @ONLY) else () set (HDF_BUILD_FORTRAN OFF CACHE BOOL "Build examples FORTRAN support" FORCE) endif () diff --git a/HDF5Examples/FORTRAN/H5D/CMakeLists.txt b/HDF5Examples/FORTRAN/H5D/CMakeLists.txt index 5369a49..0d7f5b5 100644 --- a/HDF5Examples/FORTRAN/H5D/CMakeLists.txt +++ b/HDF5Examples/FORTRAN/H5D/CMakeLists.txt @@ -255,7 +255,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_OUTPUT=${testname}.out" -D "TEST_REFERENCE=${testname}.tst" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall) if (HDF5_BUILD_TOOLS) @@ -269,7 +269,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_EXPECT=0" -D "TEST_REFERENCE=${testname}.ddl" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}) endif () diff --git a/HDF5Examples/FORTRAN/H5G/CMakeLists.txt b/HDF5Examples/FORTRAN/H5G/CMakeLists.txt index 508283c..77bd0cb 100644 --- a/HDF5Examples/FORTRAN/H5G/CMakeLists.txt +++ b/HDF5Examples/FORTRAN/H5G/CMakeLists.txt @@ -205,7 +205,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_SKIP_COMPARE=TRUE" -D "TEST_OUTPUT=${testname}.out" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall) if (HDF5_BUILD_TOOLS) @@ -219,7 +219,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_EXPECT=0" -D "TEST_REFERENCE=${testname}.ddl" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}) endif () @@ -236,7 +236,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_OUTPUT=${testname}.out" -D "TEST_REFERENCE=${testname}.tst" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) if (HDF5_BUILD_TOOLS) add_test ( @@ -249,7 +249,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_EXPECT=0" -D "TEST_REFERENCE=${testname}.ddl" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}) endif () @@ -274,7 +274,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_SKIP_COMPARE=TRUE" -D "TEST_OUTPUT=${testname}.out" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) else () add_test ( @@ -287,7 +287,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_OUTPUT=${testname}.out" -D "TEST_REFERENCE=${testname}.tst" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) endif () set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall) @@ -302,7 +302,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_EXPECT=0" -D "TEST_REFERENCE=${testname}1.ddl" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}1 PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}) add_test ( @@ -315,7 +315,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_EXPECT=0" -D "TEST_REFERENCE=${testname}2.ddl" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}2 PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}1) endif () @@ -338,7 +338,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_OUTPUT=${testname}.out" -D "TEST_REFERENCE=${testname}.tst" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall) endmacro () diff --git a/HDF5Examples/FORTRAN/H5PAR/CMakeLists.txt b/HDF5Examples/FORTRAN/H5PAR/CMakeLists.txt index 792caaf..98ef271 100644 --- a/HDF5Examples/FORTRAN/H5PAR/CMakeLists.txt +++ b/HDF5Examples/FORTRAN/H5PAR/CMakeLists.txt @@ -57,7 +57,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_OUTPUT=${testname}.out" -D "TEST_REFERENCE:STRING=PHDF5 example finished with no errors" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/grepTest.cmake" + -P "${H5EX_RESOURCES_DIR}/grepTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall) set (last_test "${EXAMPLE_VARNAME}_f90_${testname}") diff --git a/HDF5Examples/FORTRAN/H5T/CMakeLists.txt b/HDF5Examples/FORTRAN/H5T/CMakeLists.txt index 262adf8..8462bbf 100644 --- a/HDF5Examples/FORTRAN/H5T/CMakeLists.txt +++ b/HDF5Examples/FORTRAN/H5T/CMakeLists.txt @@ -148,7 +148,7 @@ if (HDF5_BUILD_TOOLS) ) endif () elseif ((${example_name} STREQUAL "h5ex_t_objref_F03" OR ${example_name} STREQUAL "h5ex_t_objrefatt_F03") OR (${example_name} STREQUAL "h5ex_t_regref_F03" OR ${example_name} STREQUAL "h5ex_t_regrefatt_F03")) - if (${${EXAMPLE_VARNAME}_USE_16_API} OR ${${EXAMPLE_VARNAME}_USE_18_API} OR ${${EXAMPLE_VARNAME}_USE_110_API}) + if (${EXAMPLE_VARNAME}_USE_16_API OR ${EXAMPLE_VARNAME}_USE_18_API OR ${EXAMPLE_VARNAME}_USE_110_API) if (HDF5_VERSION_MAJOR VERSION_EQUAL "1.8") if (HDF5_VERSION_STRING VERSION_LESS_EQUAL "1.8.21") add_custom_command ( @@ -317,7 +317,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_OUTPUT=${testname}.out" -D "TEST_REFERENCE=${testname}.tst" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall) if (HDF5_BUILD_TOOLS) @@ -331,7 +331,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_EXPECT=0" -D "TEST_REFERENCE=${testname}.ddl" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}) endif () @@ -354,7 +354,7 @@ if (H5EX_BUILD_TESTING) -D "TEST_OUTPUT=${testname}.out" -D "TEST_REFERENCE=${testname}.tst" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" + -P "${H5EX_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall) endmacro () diff --git a/HDF5Examples/JAVA/H5D/CMakeLists.txt b/HDF5Examples/JAVA/H5D/CMakeLists.txt index bc06506..017830b 100644 --- a/HDF5Examples/JAVA/H5D/CMakeLists.txt +++ b/HDF5Examples/JAVA/H5D/CMakeLists.txt @@ -19,15 +19,18 @@ else () set (CMAKE_JAVA_INCLUDE_FLAG_SEP ":") endif () -set (CMAKE_JAVA_INCLUDE_PATH "${HDF5_JAVA_INCLUDE_DIRS}") +set (CMAKE_JAVA_INCLUDE_PATH ".") +foreach (CMAKE_JINCLUDE_PATH ${HDF5_JAVA_INCLUDE_DIRS}) + set (CMAKE_JAVA_INCLUDE_PATH "${CMAKE_JAVA_INCLUDE_PATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_JINCLUDE_PATH}") +endforeach () set (CMD_ARGS "-Dhdf.hdf5lib.H5.loadLibraryName=${H5EX_JAVA_LIBRARY}$<$,$>:${CMAKE_DEBUG_POSTFIX}>;") set (CMAKE_JAVA_CLASSPATH ".") -foreach (CMAKE_INCLUDE_PATH ${CMAKE_JAVA_INCLUDE_PATH}) +foreach (CMAKE_INCLUDE_PATH ${HDF5_JAVA_INCLUDE_DIRS}) set (CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_INCLUDE_PATH}") endforeach () -foreach (HCP_JAR ${CMAKE_JAVA_INCLUDE_PATH}) +foreach (HCP_JAR ${HDF5_JAVA_INCLUDE_DIRS}) get_filename_component (_HCP_FILE ${HCP_JAR} NAME) set (HDFJAVA_CLASSJARS "${_HCP_FILE} ${HDFJAVA_CLASSJARS}") endforeach () @@ -39,13 +42,13 @@ foreach (example ${HDF_JAVA_EXAMPLES}) Class-Path: ${HDFJAVA_CLASSJARS} " ) - add_jar (${EXAMPLE_VARNAME}_${example_name} + add_jar (${EXAMPLE_VARNAME}J_${example_name} SOURCES ${example} MANIFEST ${PROJECT_BINARY_DIR}/${example_name}_Manifest.txt ) - get_target_property (${EXAMPLE_VARNAME}_${example_name}_JAR_FILE ${EXAMPLE_VARNAME}_${example_name} JAR_FILE) - get_target_property (${EXAMPLE_VARNAME}_${example_name}_CLASSPATH ${EXAMPLE_VARNAME}_${example_name} CLASSDIR) - add_dependencies (${EXAMPLE_VARNAME}_${example_name} ${H5EX_JAVA_LIBRARIES}) + get_target_property (${EXAMPLE_VARNAME}J_${example_name}_JAR_FILE ${EXAMPLE_VARNAME}J_${example_name} JAR_FILE) + get_target_property (${EXAMPLE_VARNAME}J_${example_name}_CLASSPATH ${EXAMPLE_VARNAME}J_${example_name} CLASSDIR) + add_dependencies (${EXAMPLE_VARNAME}J_${example_name} ${H5EX_JAVA_LIBRARIES}) endforeach () if (H5EX_BUILD_TESTING) @@ -56,14 +59,14 @@ if (H5EX_BUILD_TESTING) -D "TEST_TESTER=${CMAKE_Java_RUNTIME};${CMAKE_Java_RUNTIME_FLAGS}" -D "TEST_PROGRAM=${resultfile}" -D "TEST_ARGS:STRING=${ARGN};${CMD_ARGS}" - -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${EXAMPLE_VARNAME}_${resultfile}_JAR_FILE}" + -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${EXAMPLE_VARNAME}J_${resultfile}_JAR_FILE}" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" -D "TEST_OUTPUT=${PROJECT_BINARY_DIR}/${resultfile}.out" -D "TEST_REFERENCE=${resultfile}.txt" -D "TEST_EXPECT=${resultcode}" -D "TEST_SKIP_COMPARE=TRUE" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/jrunTest.cmake" + -P "${H5EX_RESOURCES_DIR}/jrunTest.cmake" ) if (NOT "${last_test}" STREQUAL "") set_tests_properties (${EXAMPLE_VARNAME}_jnative-h5-${resultfile} PROPERTIES DEPENDS ${last_test}) diff --git a/HDF5Examples/JAVA/H5G/CMakeLists.txt b/HDF5Examples/JAVA/H5G/CMakeLists.txt index 957934b..bd43f2a 100644 --- a/HDF5Examples/JAVA/H5G/CMakeLists.txt +++ b/HDF5Examples/JAVA/H5G/CMakeLists.txt @@ -19,15 +19,18 @@ else () set (CMAKE_JAVA_INCLUDE_FLAG_SEP ":") endif () -set (CMAKE_JAVA_INCLUDE_PATH "${HDF5_JAVA_INCLUDE_DIRS}") +set (CMAKE_JAVA_INCLUDE_PATH ".") +foreach (CMAKE_JINCLUDE_PATH ${HDF5_JAVA_INCLUDE_DIRS}) + set (CMAKE_JAVA_INCLUDE_PATH "${CMAKE_JAVA_INCLUDE_PATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_JINCLUDE_PATH}") +endforeach () set (CMD_ARGS "-Dhdf.hdf5lib.H5.loadLibraryName=${H5EX_JAVA_LIBRARY}$<$,$>:${CMAKE_DEBUG_POSTFIX}>;") set (CMAKE_JAVA_CLASSPATH ".") -foreach (CMAKE_INCLUDE_PATH ${CMAKE_JAVA_INCLUDE_PATH}) +foreach (CMAKE_INCLUDE_PATH ${HDF5_JAVA_INCLUDE_DIRS}) set (CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_INCLUDE_PATH}") endforeach () -foreach (HCP_JAR ${CMAKE_JAVA_INCLUDE_PATH}) +foreach (HCP_JAR ${HDF5_JAVA_INCLUDE_DIRS}) get_filename_component (_HCP_FILE ${HCP_JAR} NAME) set (HDFJAVA_CLASSJARS "${_HCP_FILE} ${HDFJAVA_CLASSJARS}") endforeach () @@ -39,13 +42,13 @@ foreach (example ${HDF_JAVA_EXAMPLES}) Class-Path: ${HDFJAVA_CLASSJARS} " ) - add_jar (${EXAMPLE_VARNAME}_${example_name} + add_jar (${EXAMPLE_VARNAME}J_${example_name} SOURCES ${example} MANIFEST ${PROJECT_BINARY_DIR}/${example_name}_Manifest.txt ) - get_target_property (${EXAMPLE_VARNAME}_${example_name}_JAR_FILE ${EXAMPLE_VARNAME}_${example_name} JAR_FILE) - get_target_property (${EXAMPLE_VARNAME}_${example_name}_CLASSPATH ${EXAMPLE_VARNAME}_${example_name} CLASSDIR) - add_dependencies (${EXAMPLE_VARNAME}_${example_name} ${H5EX_JAVA_LIBRARIES}) + get_target_property (${EXAMPLE_VARNAME}J_${example_name}_JAR_FILE ${EXAMPLE_VARNAME}J_${example_name} JAR_FILE) + get_target_property (${EXAMPLE_VARNAME}J_${example_name}_CLASSPATH ${EXAMPLE_VARNAME}J_${example_name} CLASSDIR) + add_dependencies (${EXAMPLE_VARNAME}J_${example_name} ${H5EX_JAVA_LIBRARIES}) endforeach () if (H5EX_BUILD_TESTING) @@ -56,14 +59,14 @@ if (H5EX_BUILD_TESTING) -D "TEST_TESTER=${CMAKE_Java_RUNTIME};${CMAKE_Java_RUNTIME_FLAGS}" -D "TEST_PROGRAM=${resultfile}" -D "TEST_ARGS:STRING=${ARGN};${CMD_ARGS}" - -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${EXAMPLE_VARNAME}_${resultfile}_JAR_FILE}" + -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${EXAMPLE_VARNAME}J_${resultfile}_JAR_FILE}" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" -D "TEST_OUTPUT=${PROJECT_BINARY_DIR}/${resultfile}.out" -D "TEST_REFERENCE=${resultfile}.txt" -D "TEST_EXPECT=${resultcode}" -D "TEST_SKIP_COMPARE=TRUE" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/jrunTest.cmake" + -P "${H5EX_RESOURCES_DIR}/jrunTest.cmake" ) if (NOT "${last_test}" STREQUAL "") set_tests_properties (${EXAMPLE_VARNAME}_jnative-h5-${resultfile} PROPERTIES DEPENDS ${last_test}) diff --git a/HDF5Examples/JAVA/H5G/Java_sourcefiles.cmake b/HDF5Examples/JAVA/H5G/Java_sourcefiles.cmake index d5142bd..ad7732a 100644 --- a/HDF5Examples/JAVA/H5G/Java_sourcefiles.cmake +++ b/HDF5Examples/JAVA/H5G/Java_sourcefiles.cmake @@ -8,7 +8,7 @@ set (HDF_JAVA_EXAMPLES H5Ex_G_Phase.java ) if (${H5_LIBVER_DIR} GREATER 18) - if ((${H5_LIBVER_DIR} EQUAL 110) AND NOT (${${EXAMPLE_VARNAME}_USE_16_API} OR ${${EXAMPLE_VARNAME}_USE_18_API} OR ${${EXAMPLE_VARNAME}_USE_110_API})) + if ((H5_LIBVER_DIR EQUAL 110) AND NOT (${EXAMPLE_VARNAME}_USE_16_API OR ${EXAMPLE_VARNAME}_USE_18_API OR ${EXAMPLE_VARNAME}_USE_110_API)) set (HDF_JAVA_EXAMPLES ${HDF_JAVA_EXAMPLES} 110/H5Ex_G_Iterate.java 110/H5Ex_G_Intermediate.java diff --git a/HDF5Examples/JAVA/H5J/CMakeLists.txt b/HDF5Examples/JAVA/H5J/CMakeLists.txt index eaefa7d..1bd28a1 100644 --- a/HDF5Examples/JAVA/H5J/CMakeLists.txt +++ b/HDF5Examples/JAVA/H5J/CMakeLists.txt @@ -19,15 +19,18 @@ else () set (CMAKE_JAVA_INCLUDE_FLAG_SEP ":") endif () -set (CMAKE_JAVA_INCLUDE_PATH "${HDF5_JAVA_INCLUDE_DIRS}") +set (CMAKE_JAVA_INCLUDE_PATH ".") +foreach (CMAKE_JINCLUDE_PATH ${HDF5_JAVA_INCLUDE_DIRS}) + set (CMAKE_JAVA_INCLUDE_PATH "${CMAKE_JAVA_INCLUDE_PATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_JINCLUDE_PATH}") +endforeach () set (CMD_ARGS "-Dhdf.hdf5lib.H5.loadLibraryName=${H5EX_JAVA_LIBRARY}$<$,$>:${CMAKE_DEBUG_POSTFIX}>;") set (CMAKE_JAVA_CLASSPATH ".") -foreach (CMAKE_INCLUDE_PATH ${CMAKE_JAVA_INCLUDE_PATH}) +foreach (CMAKE_INCLUDE_PATH ${HDF5_JAVA_INCLUDE_DIRS}) set (CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_INCLUDE_PATH}") endforeach () -foreach (HCP_JAR ${CMAKE_JAVA_INCLUDE_PATH}) +foreach (HCP_JAR ${HDF5_JAVA_INCLUDE_DIRS}) get_filename_component (_HCP_FILE ${HCP_JAR} NAME) set (HDFJAVA_CLASSJARS "${_HCP_FILE} ${HDFJAVA_CLASSJARS}") endforeach () @@ -39,13 +42,13 @@ foreach (example ${HDF_JAVA_EXAMPLES}) Class-Path: ${HDFJAVA_CLASSJARS} " ) - add_jar (${EXAMPLE_VARNAME}_${example_name} + add_jar (${EXAMPLE_VARNAME}J_${example_name} SOURCES ${example} MANIFEST ${PROJECT_BINARY_DIR}/${example_name}_Manifest.txt ) - get_target_property (${EXAMPLE_VARNAME}_${example_name}_JAR_FILE ${EXAMPLE_VARNAME}_${example_name} JAR_FILE) - get_target_property (${EXAMPLE_VARNAME}_${example_name}_CLASSPATH ${EXAMPLE_VARNAME}_${example_name} CLASSDIR) - add_dependencies (${EXAMPLE_VARNAME}_${example_name} ${H5EX_JAVA_LIBRARIES}) + get_target_property (${EXAMPLE_VARNAME}J_${example_name}_JAR_FILE ${EXAMPLE_VARNAME}J_${example_name} JAR_FILE) + get_target_property (${EXAMPLE_VARNAME}J_${example_name}_CLASSPATH ${EXAMPLE_VARNAME}J_${example_name} CLASSDIR) + add_dependencies (${EXAMPLE_VARNAME}J_${example_name} ${H5EX_JAVA_LIBRARIES}) endforeach () if (H5EX_BUILD_TESTING) @@ -56,14 +59,14 @@ if (H5EX_BUILD_TESTING) -D "TEST_TESTER=${CMAKE_Java_RUNTIME};${CMAKE_Java_RUNTIME_FLAGS}" -D "TEST_PROGRAM=${resultfile}" -D "TEST_ARGS:STRING=${ARGN};${CMD_ARGS}" - -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${EXAMPLE_VARNAME}_${resultfile}_JAR_FILE}" + -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${EXAMPLE_VARNAME}J_${resultfile}_JAR_FILE}" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" -D "TEST_OUTPUT=${PROJECT_BINARY_DIR}/${resultfile}.out" -D "TEST_REFERENCE=${resultfile}.txt" -D "TEST_EXPECT=${resultcode}" -D "TEST_SKIP_COMPARE=TRUE" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/jrunTest.cmake" + -P "${H5EX_RESOURCES_DIR}/jrunTest.cmake" ) if (NOT "${last_test}" STREQUAL "") set_tests_properties (${EXAMPLE_VARNAME}_jnative-h5-${resultfile} PROPERTIES DEPENDS ${last_test}) diff --git a/HDF5Examples/JAVA/H5J/Java_sourcefiles.cmake b/HDF5Examples/JAVA/H5J/Java_sourcefiles.cmake index 0a8a40b..c643a16 100644 --- a/HDF5Examples/JAVA/H5J/Java_sourcefiles.cmake +++ b/HDF5Examples/JAVA/H5J/Java_sourcefiles.cmake @@ -10,7 +10,7 @@ set (HDF_JAVA_EXAMPLES HDF5GroupDatasetCreate.java HDF5SubsetSelect.java ) -if (NOT ${${EXAMPLE_VARNAME}_USE_110_API} AND ${H5_LIBVER_DIR} EQUAL 110) +if (NOT ${EXAMPLE_VARNAME}_USE_110_API AND H5_LIBVER_DIR EQUAL 110) set (HDF_JAVA_EXAMPLES ${HDF_JAVA_EXAMPLES} 110/HDF5FileStructure.java ) diff --git a/HDF5Examples/JAVA/H5T/CMakeLists.txt b/HDF5Examples/JAVA/H5T/CMakeLists.txt index 0d2cb41..1c06804 100644 --- a/HDF5Examples/JAVA/H5T/CMakeLists.txt +++ b/HDF5Examples/JAVA/H5T/CMakeLists.txt @@ -19,15 +19,18 @@ else () set (CMAKE_JAVA_INCLUDE_FLAG_SEP ":") endif () -set (CMAKE_JAVA_INCLUDE_PATH "${HDF5_JAVA_INCLUDE_DIRS}") +set (CMAKE_JAVA_INCLUDE_PATH ".") +foreach (CMAKE_JINCLUDE_PATH ${HDF5_JAVA_INCLUDE_DIRS}) + set (CMAKE_JAVA_INCLUDE_PATH "${CMAKE_JAVA_INCLUDE_PATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_JINCLUDE_PATH}") +endforeach () set (CMD_ARGS "-Dhdf.hdf5lib.H5.loadLibraryName=${H5EX_JAVA_LIBRARY}$<$,$>:${CMAKE_DEBUG_POSTFIX}>;") set (CMAKE_JAVA_CLASSPATH ".") -foreach (CMAKE_INCLUDE_PATH ${CMAKE_JAVA_INCLUDE_PATH}) +foreach (CMAKE_INCLUDE_PATH ${HDF5_JAVA_INCLUDE_DIRS}) set (CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_INCLUDE_PATH}") endforeach () -foreach (HCP_JAR ${CMAKE_JAVA_INCLUDE_PATH}) +foreach (HCP_JAR ${HDF5_JAVA_INCLUDE_DIRS}) get_filename_component (_HCP_FILE ${HCP_JAR} NAME) set (HDFJAVA_CLASSJARS "${_HCP_FILE} ${HDFJAVA_CLASSJARS}") endforeach () @@ -39,13 +42,13 @@ foreach (example ${HDF_JAVA_EXAMPLES}) Class-Path: ${HDFJAVA_CLASSJARS} " ) - add_jar (${EXAMPLE_VARNAME}_${example_name} + add_jar (${EXAMPLE_VARNAME}J_${example_name} SOURCES ${example} MANIFEST ${PROJECT_BINARY_DIR}/${example_name}_Manifest.txt ) - get_target_property (${EXAMPLE_VARNAME}_${example_name}_JAR_FILE ${EXAMPLE_VARNAME}_${example_name} JAR_FILE) - get_target_property (${EXAMPLE_VARNAME}_${example_name}_CLASSPATH ${EXAMPLE_VARNAME}_${example_name} CLASSDIR) - add_dependencies (${EXAMPLE_VARNAME}_${example_name} ${H5EX_JAVA_LIBRARIES}) + get_target_property (${EXAMPLE_VARNAME}J_${example_name}_JAR_FILE ${EXAMPLE_VARNAME}J_${example_name} JAR_FILE) + get_target_property (${EXAMPLE_VARNAME}J_${example_name}_CLASSPATH ${EXAMPLE_VARNAME}J_${example_name} CLASSDIR) + add_dependencies (${EXAMPLE_VARNAME}J_${example_name} ${H5EX_JAVA_LIBRARIES}) endforeach () if (H5EX_BUILD_TESTING) @@ -56,14 +59,14 @@ if (H5EX_BUILD_TESTING) -D "TEST_TESTER=${CMAKE_Java_RUNTIME};${CMAKE_Java_RUNTIME_FLAGS}" -D "TEST_PROGRAM=${resultfile}" -D "TEST_ARGS:STRING=${ARGN};${CMD_ARGS}" - -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${EXAMPLE_VARNAME}_${resultfile}_JAR_FILE}" + -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${EXAMPLE_VARNAME}J_${resultfile}_JAR_FILE}" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" -D "TEST_OUTPUT=${PROJECT_BINARY_DIR}/${resultfile}.out" -D "TEST_REFERENCE=${resultfile}.txt" -D "TEST_EXPECT=${resultcode}" -D "TEST_SKIP_COMPARE=TRUE" - -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/jrunTest.cmake" + -P "${H5EX_RESOURCES_DIR}/jrunTest.cmake" ) if (NOT "${last_test}" STREQUAL "") set_tests_properties (${EXAMPLE_VARNAME}_jnative-h5-${resultfile} PROPERTIES DEPENDS ${last_test}) diff --git a/HDF5Examples/config/cmake/HDFExampleMacros.cmake b/HDF5Examples/config/cmake/HDFExampleMacros.cmake index 82fd8ac..3bb1d48 100644 --- a/HDF5Examples/config/cmake/HDFExampleMacros.cmake +++ b/HDF5Examples/config/cmake/HDFExampleMacros.cmake @@ -21,23 +21,10 @@ macro (BASIC_SETTINGS varname) set (CMAKE_NO_SYSTEM_FROM_IMPORTED 1) #----------------------------------------------------------------------------- - # Define some CMake variables for use later in the project - #----------------------------------------------------------------------------- - set (${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR ${${EXAMPLE_PACKAGE_NAME}_SOURCE_DIR}/config/cmake) - set (${EXAMPLE_PACKAGE_NAME}_SRC_DIR ${${EXAMPLE_PACKAGE_NAME}_SOURCE_DIR}/src) - - #----------------------------------------------------------------------------- # Setup output Directories #----------------------------------------------------------------------------- SET_HDF_OUTPUT_DIRS(${EXAMPLE_PACKAGE_NAME}) - #----------------------------------------------------------------------------- - # Option to use Shared/Static libs, default is static - #----------------------------------------------------------------------------- - set (LIB_TYPE STATIC) - if (BUILD_SHARED_LIBS) - set (LIB_TYPE SHARED) - endif () set (CMAKE_POSITION_INDEPENDENT_CODE ON) if (MSVC) @@ -116,24 +103,10 @@ macro (BASIC_SETTINGS varname) set (${EXAMPLE_PACKAGE_NAME}_INCLUDES_BUILD_TIME ${${EXAMPLE_PACKAGE_NAME}_SRC_DIR} ${${EXAMPLE_PACKAGE_NAME}_BINARY_DIR} ) - - #----------------------------------------------------------------------------- - # Option to build JAVA examples - #----------------------------------------------------------------------------- - option (HDF_BUILD_JAVA "Build JAVA support" OFF) - if (HDF_BUILD_JAVA) - find_package (Java) - INCLUDE_DIRECTORIES ( - ${JAVA_INCLUDE_PATH} - ${JAVA_INCLUDE_PATH2} - ) - - include (${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/UseJava.cmake) - endif () endmacro () macro (HDF5_SUPPORT) - set (CMAKE_MODULE_PATH ${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR} ${CMAKE_MODULE_PATH}) + set (CMAKE_MODULE_PATH ${H5EX_RESOURCES_DIR} ${CMAKE_MODULE_PATH}) option (USE_SHARED_LIBS "Use Shared Libraries" ON) if (NOT H5EX_HDF5_HEADER) @@ -273,12 +246,6 @@ macro (HDF5_SUPPORT) list (APPEND H5EX_HDF5_INCLUDE_DIRS ${HDF5_INCLUDE_DIR_FORTRAN}) endif () message (STATUS "HDF5 link libs: ${H5EX_HDF5_LINK_LIBS} Includes: ${H5EX_HDF5_INCLUDE_DIRS}") - - if (USE_SHARED_LIBS) - set (H5_LIB_TYPE SHARED) - else () - set (H5_LIB_TYPE STATIC) - endif () endmacro () #------------------------------------------------------------------------------- diff --git a/HDF5Examples/config/cmake/UseJava.cmake b/HDF5Examples/config/cmake/UseJava.cmake index b4af653..12e324c 100644 --- a/HDF5Examples/config/cmake/UseJava.cmake +++ b/HDF5Examples/config/cmake/UseJava.cmake @@ -881,7 +881,7 @@ function(add_jar _TARGET_NAME) ${_GENERATE_NATIVE_HEADERS} ${_JAVA_SOURCES_FILELISTS} COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_compiled_${_TARGET_NAME} - DEPENDS ${_JAVA_COMPILE_FILES} ${_JAVA_COMPILE_FILELISTS} ${_JAVA_COMPILE_DEPENDS} + DEPENDS ${_JAVA_COMPILE_FILES} ${_JAVA_COMPILE_FILELISTS} ${_JAVA_COMPILE_DEPENDS} ${_JAVA_SOURCES_FILE} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMENT "Building Java objects for ${_TARGET_NAME}.jar" VERBATIM diff --git a/config/cmake/HDF5ExampleCache.cmake b/config/cmake/HDF5ExampleCache.cmake index 043be1a..f5fb620 100644 --- a/config/cmake/HDF5ExampleCache.cmake +++ b/config/cmake/HDF5ExampleCache.cmake @@ -23,6 +23,23 @@ set (H5EX_HDF5_INCLUDE_DIRS "${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR}" CA set (H5EX_HDF5_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE STRING "HDF5 build folder" FORCE) set (EXAMPLES_EXTERNALLY_CONFIGURED ON CACHE BOOL "Examples build is used in another project" FORCE) +set (EXAMPLE_VARNAME "H5") +set (H5EX_RESOURCES_DIR ${HDF_RESOURCES_DIR}) +message (STATUS "HDF5 Example H5EX_RESOURCES_DIR: ${H5EX_RESOURCES_DIR}") +if (DEFAULT_API_VERSION MATCHES "v16") + set (H5_LIBVER_DIR 16) +elseif (DEFAULT_API_VERSION MATCHES "v18") + set (H5_LIBVER_DIR 18) +elseif (DEFAULT_API_VERSION MATCHES "v110") + set (H5_LIBVER_DIR 110) +elseif (DEFAULT_API_VERSION MATCHES "v112") + set (H5_LIBVER_DIR 112) +elseif (DEFAULT_API_VERSION MATCHES "v114") + set (H5_LIBVER_DIR 114) +elseif (DEFAULT_API_VERSION MATCHES "v116") + set (H5_LIBVER_DIR 116) +endif () + if (NOT BUILD_SHARED_LIBS AND BUILD_STATIC_LIBS) set (USE_SHARED_LIBS OFF CACHE BOOL "Use Shared Libraries for Examples" FORCE) set (H5EX_HDF5_LINK_LIBS ${HDF5_LIB_TARGET} CACHE STRING "HDF5 target" FORCE) @@ -53,3 +70,4 @@ message (STATUS "HDF5 Example link libs: ${H5EX_HDF5_LINK_LIBS} Includes: ${H5EX set (HDF5_TOOLS_DIR ${CMAKE_TEST_OUTPUT_DIRECTORY} CACHE STRING "HDF5 Directory for all Executables" FORCE) set (H5EX_HDF5_DUMP_EXECUTABLE $ CACHE STRING "HDF5 h5dump target" FORCE) set (H5EX_HDF5_REPACK_EXECUTABLE $ CACHE STRING "HDF5 h5repack target" FORCE) + diff --git a/config/cmake/HDFMacros.cmake b/config/cmake/HDFMacros.cmake index 369df96..30c16e6 100644 --- a/config/cmake/HDFMacros.cmake +++ b/config/cmake/HDFMacros.cmake @@ -482,9 +482,7 @@ macro (HDF_DIR_PATHS package_prefix) endif () SET_HDF_BUILD_TYPE() -#----------------------------------------------------------------------------- -# Setup output Directories -#----------------------------------------------------------------------------- + SET_HDF_OUTPUT_DIRS(${package_prefix}) include (FetchContent) @@ -510,4 +508,3 @@ macro (ADD_H5_FLAGS h5_flag_var infile) endif () #message (TRACE "h5_flag_var=${${h5_flag_var}}") endmacro () - diff --git a/config/cmake/UseJava.cmake b/config/cmake/UseJava.cmake index 2783cb6..12e324c 100644 --- a/config/cmake/UseJava.cmake +++ b/config/cmake/UseJava.cmake @@ -6,7 +6,7 @@ UseJava This file provides support for ``Java``. It is assumed that :module:`FindJava` has already been loaded. See :module:`FindJava` for -information on how to load Java into your ``CMake`` project. +information on how to load Java into your CMake project. Synopsis ^^^^^^^^ @@ -42,6 +42,7 @@ Creating And Installing JARs add_jar( [SOURCES] [...] [...] + [RESOURCES NAMESPACE ... [NAMESPACE ...]... ] [INCLUDE_JARS [...]] [ENTRY_POINT ] [VERSION ] @@ -64,6 +65,34 @@ Creating And Installing JARs .. versionadded:: 3.4 Support for response files, prefixed by ``@``. + ``RESOURCES`` + .. versionadded:: 3.21 + + Adds the named ```` files to the jar by stripping the source file + path and placing the file beneath ```` within the jar. + + For example:: + + RESOURCES NAMESPACE "/com/my/namespace" "a/path/to/resource.txt" + + results in a resource accessible via ``/com/my/namespace/resource.txt`` + within the jar. + + Resources may be added without adjusting the namespace by adding them to + the list of ``SOURCES`` (original behavior), in this case, resource + paths must be relative to ``CMAKE_CURRENT_SOURCE_DIR``. Adding resources + without using the ``RESOURCES`` parameter in out of source builds will + almost certainly result in confusion. + + .. note:: + + Adding resources via the ``SOURCES`` parameter relies upon a hard-coded + list of file extensions which are tested to determine whether they + compile (e.g. File.java). ``SOURCES`` files which match the extensions + are compiled. Files which do not match are treated as resources. To + include uncompiled resources matching those file extensions use + the ``RESOURCES`` parameter. + ``INCLUDE_JARS`` The list of jars are added to the classpath when compiling the java sources and also to the dependencies of the target. ``INCLUDE_JARS`` also accepts @@ -264,7 +293,7 @@ Header Generation .. deprecated:: 3.11 This command will no longer be supported starting with version 10 of the JDK - due to the `suppression of javah tool `_. + due to the `suppression of javah tool `_. The :ref:`add_jar(GENERATE_NATIVE_HEADERS) ` command should be used instead. @@ -526,6 +555,7 @@ function (__java_copy_file src dest comment) ${dest} DEPENDS ${src} COMMENT ${comment} + VERBATIM ) endfunction () @@ -552,6 +582,58 @@ function(__java_export_jar VAR TARGET PATH) set(${VAR} "${${VAR}}" PARENT_SCOPE) endfunction() +function(__java_copy_resource_namespaces VAR DEST JAVA_RESOURCE_FILES JAVA_RESOURCE_FILES_RELATIVE) + + set(_ns_ID "") + set(_ns_VAL "") + + foreach(_item IN LISTS VAR) + if(NOT _ns_ID) + if(NOT _item STREQUAL "NAMESPACE") + message(FATAL_ERROR "UseJava: Expecting \"NAMESPACE\", got\t\"${_item}\"") + return() + endif() + endif() + + if(_item STREQUAL "NAMESPACE") + set(_ns_VAL "") # Prepare for next namespace + set(_ns_ID "${_item}") + continue() + endif() + + if( NOT _ns_VAL) + # we're expecting the next token to be a namespace value + # whatever it is, we're treating it like a namespace + set(_ns_VAL "${_item}") + continue() + endif() + + if(_ns_ID AND _ns_VAL) + # We're expecting a file name, check to see if we got one + cmake_path(ABSOLUTE_PATH _item OUTPUT_VARIABLE _test_file_name) + if (NOT EXISTS "${_test_file_name}") + message(FATAL_ERROR "UseJava: File does not exist:\t${_item}") + return() + endif() + endif() + + cmake_path(ABSOLUTE_PATH _item OUTPUT_VARIABLE _abs_file_name) + cmake_path(GET _item FILENAME _resource_file_name) + set(_dest_resource_file_name "${_ns_VAL}/${_resource_file_name}" ) + + __java_copy_file( ${_abs_file_name} + ${DEST}/${_dest_resource_file_name} + "Copying ${_item} to the build directory") + + list(APPEND RESOURCE_FILES_LIST ${DEST}/${_dest_resource_file_name}) + list(APPEND RELATIVE_RESOURCE_FILES_LIST ${_dest_resource_file_name}) + + endforeach() + + set(${JAVA_RESOURCE_FILES} "${RESOURCE_FILES_LIST}" PARENT_SCOPE) + set(${JAVA_RESOURCE_FILES_RELATIVE} "${RELATIVE_RESOURCE_FILES_LIST}" PARENT_SCOPE) +endfunction() + # define helper scripts set(_JAVA_EXPORT_TARGETS_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/javaTargets.cmake.in) set(_JAVA_CLASS_FILELIST_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/UseJavaClassFilelist.cmake) @@ -746,6 +828,13 @@ function(add_jar _TARGET_NAME) endif () endforeach() + if(_add_jar_RESOURCES) # Process RESOURCES if it exists + __java_copy_resource_namespaces("${_add_jar_RESOURCES}" + ${CMAKE_JAVA_CLASS_OUTPUT_PATH} + _JAVA_RESOURCE_FILES + _JAVA_RESOURCE_FILES_RELATIVE) + endif() + foreach(_JAVA_INCLUDE_JAR IN LISTS _add_jar_INCLUDE_JARS) if (TARGET ${_JAVA_INCLUDE_JAR}) get_target_property(_JAVA_JAR_PATH ${_JAVA_INCLUDE_JAR} JAR_FILE) @@ -792,9 +881,10 @@ function(add_jar _TARGET_NAME) ${_GENERATE_NATIVE_HEADERS} ${_JAVA_SOURCES_FILELISTS} COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_compiled_${_TARGET_NAME} - DEPENDS ${_JAVA_COMPILE_FILES} ${_JAVA_COMPILE_FILELISTS} ${_JAVA_COMPILE_DEPENDS} + DEPENDS ${_JAVA_COMPILE_FILES} ${_JAVA_COMPILE_FILELISTS} ${_JAVA_COMPILE_DEPENDS} ${_JAVA_SOURCES_FILE} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMENT "Building Java objects for ${_TARGET_NAME}.jar" + VERBATIM ) add_custom_command( OUTPUT ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist @@ -804,6 +894,7 @@ function(add_jar _TARGET_NAME) -P ${_JAVA_CLASS_FILELIST_SCRIPT} DEPENDS ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_compiled_${_TARGET_NAME} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + VERBATIM ) else () # create an empty java_class_filelist @@ -834,6 +925,7 @@ function(add_jar _TARGET_NAME) DEPENDS ${_JAVA_RESOURCE_FILES} ${_JAVA_DEPENDS} ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist WORKING_DIRECTORY ${CMAKE_JAVA_CLASS_OUTPUT_PATH} COMMENT "Creating Java archive ${_JAVA_TARGET_OUTPUT_NAME}" + VERBATIM ) else () add_custom_command( @@ -849,6 +941,7 @@ function(add_jar _TARGET_NAME) WORKING_DIRECTORY ${CMAKE_JAVA_CLASS_OUTPUT_PATH} DEPENDS ${_JAVA_RESOURCE_FILES} ${_JAVA_DEPENDS} ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist COMMENT "Creating Java archive ${_JAVA_TARGET_OUTPUT_NAME}" + VERBATIM ) endif () diff --git a/config/cmake/javaTargets.cmake.in b/config/cmake/javaTargets.cmake.in index 6e14256..f3670c2 100644 --- a/config/cmake/javaTargets.cmake.in +++ b/config/cmake/javaTargets.cmake.in @@ -1,6 +1,5 @@ -cmake_minimum_required(VERSION 2.8.12) cmake_policy(PUSH) -cmake_policy(VERSION 2.8) +cmake_policy(VERSION 2.8.12...3.27) #---------------------------------------------------------------- # Generated CMake Java target import file. diff --git a/doxygen/dox/ExamplesAPI.dox b/doxygen/dox/ExamplesAPI.dox index a6fbab1..5178b08 100644 --- a/doxygen/dox/ExamplesAPI.dox +++ b/doxygen/dox/ExamplesAPI.dox @@ -27,236 +27,236 @@ Languages are C, Fortran, Java (JHI5), Java Object Package, Python (High Level), Set Space Allocation Time for Dataset -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_d_alloc.h5 -h5ex_d_alloc.tst -h5ex_d_alloc.ddl +h5ex_d_alloc.tst +h5ex_d_alloc.ddl Read / Write Dataset using Fletcher32 Checksum Filter -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_d_checksum.h5 -h5ex_d_checksum.tst -h5ex_d_checksum.ddl +h5ex_d_checksum.tst +h5ex_d_checksum.ddl Read / Write Chunked Dataset -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_d_chunk.h5 -h5ex_d_chunk.tst -h5ex_d_chunk.ddl +h5ex_d_chunk.tst +h5ex_d_chunk.ddl Read / Write Compact Dataset -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_d_compact.h5 -h5ex_d_compact.tst -h5ex_d_compact.ddl +h5ex_d_compact.tst +h5ex_d_compact.ddl Read / Write to External Dataset -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_d_extern.h5 -h5ex_d_extern.tst -h5ex_d_extern.ddl +h5ex_d_extern.tst +h5ex_d_extern.ddl Read / Write Dataset w/ Fill Value -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_d_fillval.h5 -h5ex_d_fillval.tst -h5ex_d_fillval.ddl +h5ex_d_fillval.tst +h5ex_d_fillval.ddl Read / Write GZIP Compressed Dataset -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_d_gzip.h5 -h5ex_d_gzip.tst -h5ex_d_gzip.ddl +h5ex_d_gzip.tst +h5ex_d_gzip.ddl Read / Write Data by Hyperslabs -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_d_hyper.h5 -h5ex_d_hyper.tst -h5ex_d_hyper.ddl +h5ex_d_hyper.tst +h5ex_d_hyper.ddl Read / Write Dataset with n-bit Filter -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_d_nbit.h5 -h5ex_d_nbit.tst -h5ex_d_nbit.ddl +h5ex_d_nbit.tst +h5ex_d_nbit.ddl Read / Write Integer Dataset -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_d_rdwrc.h5 -h5ex_d_rdwrc.tst -h5ex_d_rdwr.ddl +h5ex_d_rdwrc.tst +h5ex_d_rdwr.ddl Read / Write Dataset w/ Shuffle Filter and GZIP Compression -C +C FORTRAN -Java +Java JavaObj MATLAB PyHigh PyLow h5ex_d_shuffle.h5 -h5ex_d_shuffle.tst -h5ex_d_shuffle.ddl +h5ex_d_shuffle.tst +h5ex_d_shuffle.ddl Read / Write Dataset using Scale-Offset Filter (float) -C +C FORTRAN -Java +Java JavaObj MATLAB PyHigh PyLow h5ex_d_sofloat.h5 -h5ex_d_sofloat.tst -h5ex_d_sofloat.ddl +h5ex_d_sofloat.tst +h5ex_d_sofloat.ddl Read / Write Dataset using Scale-Offset Filter (integer) -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_d_soint.h5 -h5ex_d_soint.tst -h5ex_d_soint.ddl +h5ex_d_soint.tst +h5ex_d_soint.ddl Read / Write Dataset using SZIP Compression -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_d_szip.h5 -h5ex_d_szip.tst -h5ex_d_szip.ddl +h5ex_d_szip.tst +h5ex_d_szip.ddl Read / Write Dataset using Data Transform Expression -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_d_transform.h5 -h5ex_d_transform.tst -h5ex_d_transform.ddl +h5ex_d_transform.tst +h5ex_d_transform.ddl Read / Write Unlimited Dimension Dataset -C +C FORTRAN -Java +Java JavaObj MATLAB PyHigh PyLow h5ex_d_unlimadd.h5 -h5ex_d_unlimadd.tst -h5ex_d_unlimadd.ddl +h5ex_d_unlimadd.tst +h5ex_d_unlimadd.ddl Read / Write GZIP Compressed Unlimited Dimension Dataset -C +C FORTRAN -Java +Java JavaObj MATLAB PyHigh PyLow h5ex_d_unlimgzip.h5 -h5ex_d_unlimgzip.tst -h5ex_d_unlimgzip.ddl +h5ex_d_unlimgzip.tst +h5ex_d_unlimgzip.ddl Read / Write / Edit Unlimited Dimension Dataset -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_d_unlimmod.h5 -h5ex_d_unlimmod.tst -h5ex_d_unlimmod.ddl +h5ex_d_unlimmod.tst +h5ex_d_unlimmod.ddl @@ -272,105 +272,105 @@ FORTRAN Create "compact-or-indexed" Format Groups -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_g_compact.h5 -h5ex_g_.tst -h5ex_g_compact1.ddl -h5ex_g_compact2.ddl +h5ex_g_.tst +h5ex_g_compact1.ddl +h5ex_g_compact2.ddl Track links in a Group by Creation Order -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_g_corder.h5 -h5ex_g_corder.tst +h5ex_g_corder.tst h5ex_g_corder.ddl Create / Open / Close a Group -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_g_create.h5 h5ex_g_create.tst -h5ex_g_create.ddl +h5ex_g_create.ddl Create Intermediate Groups -C +C FORTRAN -Java +Java JavaObj MATLAB PyHigh PyLow h5ex_g_intermediate.h5 -h5ex_g_intermediate.tst +h5ex_g_intermediate.tst h5ex_g_intermediate.ddl Iterate over Groups w/ H5Literate -C +C FORTRAN -Java +Java JavaObj MATLAB PyHigh PyLow h5ex_g_iterate.h5 -h5ex_g_iterate.tst +h5ex_g_iterate.tst h5ex_g_iterate.ddl Set Conditions to Convert between Compact and Dense Groups -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_g_phase.h5 -h5ex_g_phase.tst +h5ex_g_phase.tst h5ex_g_phase.ddl Recursively Traverse a File with H5Literate -C +C FORTRAN -Java +Java JavaObj MATLAB PyHigh PyLow h5ex_g_traverse.h5 -h5ex_g_traverse.tst +h5ex_g_traverse.tst h5ex_g_traverse.ddl Recursively Traverse a File with H5Ovisit / H5Lvisit -C +C FORTRAN -Java +Java JavaObj MATLAB PyHigh PyLow h5ex_g_visit.h5 -h5ex_g_visit.tst +h5ex_g_visit.tst h5ex_g_visit.ddl @@ -387,347 +387,347 @@ FORTRAN Read / Write Array (Attribute) -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_t_arrayatt.h5 -h5ex_t_arrayatt.tst -h5ex_t_arrayatt.ddl +h5ex_t_arrayatt.tst +h5ex_t_arrayatt.ddl Read / Write Array (Dataset) -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_t_array.h5 -h5ex_t_array.tst -h5ex_t_array.ddl +h5ex_t_array.tst +h5ex_t_array.ddl Read / Write Bitfield (Attribute) -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_t_bitatt.h5 -h5ex_t_bitatt.tst -h5ex_t_bitatt.ddl +h5ex_t_bitatt.tst +h5ex_t_bitatt.ddl Read / Write Bitfield (Dataset) -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_t_bit.h5 -h5ex_t_bit.tst -h5ex_t_bit.ddl +h5ex_t_bit.tst +h5ex_t_bit.ddl Read / Write Compound (Attribute) -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_t_cmpdatt.h5 -h5ex_t_cmpdatt.tst -h5ex_t_cmpdatt.ddl +h5ex_t_cmpdatt.tst +h5ex_t_cmpdatt.ddl Read / Write Compound (Dataset) -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_t_cmpd.h5 -h5ex_t_cmpd.tst -h5ex_t_cmpd.ddl +h5ex_t_cmpd.tst +h5ex_t_cmpd.ddl Commit Named Datatype and Read Back -C +C FORTRAN -Java +Java JavaObj MATLAB PyHigh PyLow h5ex_t_commit.h5 -h5ex_t_commit.tst -h5ex_t_commit.ddl +h5ex_t_commit.tst +h5ex_t_commit.ddl Convert Between Datatypes in Memory -C +C FORTRAN Java JavaObj MATLAB PyHigh PyLow h5ex_t_convert.h5 -h5ex_t_convert.tst -h5ex_t_convert.ddl +h5ex_t_convert.tst +h5ex_t_convert.ddl Read / Write Complex Compound (Attribute) -C +C FORTRAN Java JavaObj MATLAB PyHigh PyLow h5ex_t_cpxcmpdatt.h5 -h5ex_t_cpxcmpdatt.tst -h5ex_t_cpxcmpdatt.ddl +h5ex_t_cpxcmpdatt.tst +h5ex_t_cpxcmpdatt.ddl Read / Write Complex Compound (Dataset) -C +C FORTRAN Java JavaObj MATLAB PyHigh PyLow h5ex_t_cpxcmpd.h5 -h5ex_t_cpxcmpd.tst -h5ex_t_cpxcmpd.ddl +h5ex_t_cpxcmpd.tst +h5ex_t_cpxcmpd.ddl Read / Write Enumerated (Attribute) -C -FORTRAN +C +FORTRAN Java JavaObj MATLAB PyHigh PyLow h5ex_t_enumatt.h5 -h5ex_t_enumatt.tst -h5ex_t_enumatt.ddl +h5ex_t_enumatt.tst +h5ex_t_enumatt.ddl Read / Write Enumerated (Dataset) -C -FORTRAN +C +FORTRAN Java JavaObj MATLAB PyHigh PyLow h5ex_t_enum.h5 -h5ex_t_enum.tst -h5ex_t_enum.ddl +h5ex_t_enum.tst +h5ex_t_enum.ddl Read / Write Floating Point (Attribute) -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_t_floatatt.h5 -h5ex_t_floatatt.tst -h5ex_t_floatatt.ddl +h5ex_t_floatatt.tst +h5ex_t_floatatt.ddl Read / Write Floating Point (Dataset) -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_t_float.h5 -h5ex_t_float.tst -h5ex_t_float.ddl +h5ex_t_float.tst +h5ex_t_float.ddl Read / Write Integer Datatype (Attribute) -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_t_intatt.h5 -h5ex_t_intatt.tst -h5ex_t_intatt.ddl +h5ex_t_intatt.tst +h5ex_t_intatt.ddl Read / Write Integer Datatype (Dataset) -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_t_int.h5 -h5ex_t_int.tst -h5ex_t_int.ddl +h5ex_t_int.tst +h5ex_t_int.ddl Read / Write Object References (Attribute) -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_t_objrefatt.h5 -h5ex_t_objrefatt.tst -h5ex_t_objrefatt.ddl +h5ex_t_objrefatt.tst +h5ex_t_objrefatt.ddl Read / Write Object References (Dataset) -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_t_objref.h5 -h5ex_t_objref.tst -h5ex_t_objref.ddl +h5ex_t_objref.tst +h5ex_t_objref.ddl Read / Write Opaque (Attribute) -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_t_opaqueatt.h5 -h5ex_t_opaqueatt.tst -h5ex_t_opaqueatt.ddl +h5ex_t_opaqueatt.tst +h5ex_t_opaqueatt.ddl Read / Write Opaque (Dataset) -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_t_opaque.h5 -h5ex_t_opaque.tst -h5ex_t_opaque.ddl +h5ex_t_opaque.tst +h5ex_t_opaque.ddl Read / Write Region References (Attribute) -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_t_regrefatt.h5 -h5ex_t_regrefatt.tst -h5ex_t_regrefatt.ddl +h5ex_t_regrefatt.tst +h5ex_t_regrefatt.ddl Read / Write Region References (Dataset) -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_t_regref.h5 -h5ex_t_regref.tst -h5ex_t_regref.ddl +h5ex_t_regref.tst +h5ex_t_regref.ddl Read / Write String (Attribute) -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_t_stringatt.h5 -h5ex_t_stringatt.tst -h5ex_t_stringatt.ddl +h5ex_t_stringatt.tst +h5ex_t_stringatt.ddl Read / Write String (Dataset) -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_t_string.h5 -h5ex_t_string.tst -h5ex_t_string.ddl +h5ex_t_string.tst +h5ex_t_string.ddl Read / Write Variable Length (Attribute) -C -FORTRAN +C +FORTRAN Java JavaObj MATLAB PyHigh PyLow h5ex_t_vlenatt.h5 -h5ex_t_vlenatt.tst -h5ex_t_vlenatt.ddl +h5ex_t_vlenatt.tst +h5ex_t_vlenatt.ddl Read / Write Variable Length (Dataset) -C -FORTRAN +C +FORTRAN Java JavaObj MATLAB PyHigh PyLow h5ex_t_vlen.h5 -h5ex_t_vlen.tst -h5ex_t_vlen.ddl +h5ex_t_vlen.tst +h5ex_t_vlen.ddl Read / Write Variable Length String (Attribute) -C -FORTRAN +C +FORTRAN Java JavaObj MATLAB PyHigh PyLow h5ex_t_vlstringatt.h5 -h5ex_t_vlstringatt.tst -h5ex_t_vlstringatt.ddl +h5ex_t_vlstringatt.tst +h5ex_t_vlstringatt.ddl Read / Write Variable Length String (Dataset) -C -FORTRAN -Java +C +FORTRAN +Java JavaObj MATLAB PyHigh PyLow h5ex_t_vlstring.h5 -h5ex_t_vlstring.tst -h5ex_t_vlstring.ddl +h5ex_t_vlstring.tst +h5ex_t_vlstring.ddl @@ -743,92 +743,92 @@ FORTRAN Read / Write Dataset using Blosc Compression -C +C FORTRAN Java JavaObj MATLAB PyHigh PyLow -h5ex_d_blosc.h5 -h5ex_d_blosc.tst -h5ex_d_blosc.ddl +h5ex_d_blosc.h5 +h5ex_d_blosc.tst +h5ex_d_blosc.ddl Read / Write Dataset using Bit Shuffle Compression -C +C FORTRAN Java JavaObj MATLAB PyHigh PyLow -h5ex_d_bshuf.h5 -h5ex_d_bshuf.tst -h5ex_d_bshuf.ddl +h5ex_d_bshuf.h5 +h5ex_d_bshuf.tst +h5ex_d_bshuf.ddl Read / Write Dataset using BZip2 Compression -C +C FORTRAN Java JavaObj MATLAB PyHigh PyLow -h5ex_d_bzip2.h5 -h5ex_d_bzip2.tst -h5ex_d_bzip2.ddl +h5ex_d_bzip2.h5 +h5ex_d_bzip2.tst +h5ex_d_bzip2.ddl Read / Write Dataset using JPEG Compression -C +C FORTRAN Java JavaObj MATLAB PyHigh PyLow -h5ex_d_jpeg.h5 -h5ex_d_jpeg.tst -h5ex_d_jpeg.ddl +h5ex_d_jpeg.h5 +h5ex_d_jpeg.tst +h5ex_d_jpeg.ddl Read / Write Dataset using LZ4 Compression -C +C FORTRAN Java JavaObj MATLAB PyHigh PyLow -h5ex_d_lz4.h5 -h5ex_d_lz4.tst -h5ex_d_lz4.ddl +h5ex_d_lz4.h5 +h5ex_d_lz4.tst +h5ex_d_lz4.ddl Read / Write Dataset using LZF Compression -C +C FORTRAN Java JavaObj MATLAB PyHigh PyLow -h5ex_d_lzf.h5 -h5ex_d_lzf.tst -h5ex_d_lzf.ddl +h5ex_d_lzf.h5 +h5ex_d_lzf.tst +h5ex_d_lzf.ddl Read / Write Dataset using MAFISC Compression -C +C FORTRAN Java JavaObj MATLAB PyHigh PyLow -h5ex_d_mafisc.h5 -h5ex_d_mafisc.tst -h5ex_d_mafisc.ddl +h5ex_d_mafisc.h5 +h5ex_d_mafisc.tst +h5ex_d_mafisc.ddl Read / Write Dataset using ZFP Compression -C +C FORTRAN Java JavaObj MATLAB PyHigh PyLow -h5ex_d_zfp.h5 -h5ex_d_zfp.tst -h5ex_d_zfp.ddl +h5ex_d_zfp.h5 +h5ex_d_zfp.tst +h5ex_d_zfp.ddl Read / Write Dataset using ZStd Compression -C +C FORTRAN Java JavaObj MATLAB PyHigh PyLow -h5ex_d_zstd.h5 -h5ex_d_zstd.tst -h5ex_d_zstd.ddl +h5ex_d_zstd.h5 +h5ex_d_zstd.tst +h5ex_d_zstd.ddl @@ -842,66 +842,66 @@ FORTRAN Create/Read/Write an Attribute -Java +Java JavaObj -HDF5AttributeCreate.txt +HDF5AttributeCreate.txt Create Datasets -Java +Java JavaObj -HDF5DatasetCreate.txt +HDF5DatasetCreate.txt Read/Write Datasets -Java +Java JavaObj -HDF5DatasetRead.txt +HDF5DatasetRead.txt Create an Empty File -Java +Java JavaObj -HDF5FileCreate.txt +HDF5FileCreate.txt Retrieve the File Structure -Java +Java JavaObj -HDF5FileStructure.txt +HDF5FileStructure.txt Create Groups -Java +Java JavaObj -HDF5GroupCreate.txt +HDF5GroupCreate.txt Select a Subset of a Dataset -Java +Java JavaObj -HDF5SubsetSelect.txt +HDF5SubsetSelect.txt Create Two Datasets Within Groups -Java +Java JavaObj -HDF5GroupDatasetCreate.txt +HDF5GroupDatasetCreate.txt @@ -917,8 +917,8 @@ FORTRAN Creating and Accessing a File -C -FORTRAN +C +FORTRAN MATLAB PyHigh PyLow ph5_.h5 @@ -927,8 +927,8 @@ FORTRAN Creating and Accessing a Dataset -C -FORTRAN +C +FORTRAN MATLAB PyHigh PyLow ph5_.h5 @@ -937,8 +937,8 @@ FORTRAN Writing and Reading Contiguous Hyperslabs -C -FORTRAN +C +FORTRAN MATLAB PyHigh PyLow ph5_.h5 @@ -947,8 +947,8 @@ FORTRAN Writing and Reading Regularly Spaced Data Hyperslabs -C -FORTRAN +C +FORTRAN MATLAB PyHigh PyLow ph5_.h5 @@ -957,8 +957,8 @@ FORTRAN Writing and Reading Pattern Hyperslabs -C -FORTRAN +C +FORTRAN MATLAB PyHigh PyLow ph5_.h5 @@ -967,8 +967,8 @@ FORTRAN Writing and Reading Chunk Hyperslabs -C -FORTRAN +C +FORTRAN MATLAB PyHigh PyLow ph5_.h5 @@ -977,7 +977,7 @@ FORTRAN Using the Subfiling VFD to Write a File Striped Across Multiple Subfiles -C +C FORTRAN MATLAB PyHigh PyLow ph5_.h5 @@ -986,7 +986,7 @@ FORTRAN Write to Datasets with Filters Applied -C +C FORTRAN MATLAB PyHigh PyLow ph5_.h5 @@ -995,7 +995,7 @@ FORTRAN Collectively Write Datasets with Filters and Not All Ranks have Data -C +C FORTRAN MATLAB PyHigh PyLow ph5_.h5 diff --git a/doxygen/dox/IntroParExamples.dox b/doxygen/dox/IntroParExamples.dox index 3929106..40e07c7 100644 --- a/doxygen/dox/IntroParExamples.dox +++ b/doxygen/dox/IntroParExamples.dox @@ -95,7 +95,7 @@ Below is the example program:
-hyperslab_by_row.c +hyperslab_by_row.c
@@ -205,7 +205,7 @@ Below is the F90 example program which illustrates how to write contiguous hyper
-hyperslab_by_col.F90 +hyperslab_by_col.F90
@@ -275,7 +275,7 @@ Below is an example program for writing hyperslabs by column in Parallel HDF5:
-hyperslab_by_col.c +hyperslab_by_col.c
@@ -346,7 +346,7 @@ Below is the example program for writing hyperslabs by column in Parallel HDF5:
-hyperslab_by_row.F90 +hyperslab_by_row.F90
@@ -431,12 +431,12 @@ Below are example programs for writing hyperslabs by pattern in Parallel HDF5:
-hyperslab_by_pattern.c +hyperslab_by_pattern.c
-hyperslab_by_pattern.F90 +hyperslab_by_pattern.F90
@@ -530,12 +530,12 @@ Below are example programs for writing hyperslabs by pattern in Parallel HDF5:
-hyperslab_by_chunk.c +hyperslab_by_chunk.c
-hyperslab_by_chunk.F90 +hyperslab_by_chunk.F90
diff --git a/doxygen/dox/IntroParHDF5.dox b/doxygen/dox/IntroParHDF5.dox index 1f04e96..73a2589 100644 --- a/doxygen/dox/IntroParHDF5.dox +++ b/doxygen/dox/IntroParHDF5.dox @@ -145,8 +145,8 @@ Following is example code for creating an access template in HDF5: \endcode The following example programs create an HDF5 file using Parallel HDF5: -C: file_create.c -F90: file_create.F90 +C: file_create.c +F90: file_create.F90 \subsection subsec_pintro_create_dset Creating and Accessing a Dataset with PHDF5 @@ -226,8 +226,8 @@ The following code demonstrates a collective write using Parallel HDF5: \endcode The following example programs create an HDF5 dataset using Parallel HDF5: -C: dataset.c -F90: dataset.F90 +C: dataset.c +F90: dataset.F90 \subsubsection subsec_pintro_hyperslabs Hyperslabs diff --git a/doxygen/dox/LearnBasics3.dox b/doxygen/dox/LearnBasics3.dox index eb3dc7c..abfb7b1 100644 --- a/doxygen/dox/LearnBasics3.dox +++ b/doxygen/dox/LearnBasics3.dox @@ -156,9 +156,9 @@ Specifically look at the \ref ExAPI. There are examples for different languages. The C example to create a chunked dataset is: -h5ex_d_chunk.c +h5ex_d_chunk.c The C example to create a compact dataset is: -h5ex_d_compact.c +h5ex_d_compact.c \section secLBDsetLayoutChange Changing the Layout after Dataset Creation The dataset layout is a Dataset Creation Property List. This means that once the dataset has been diff --git a/doxygen/hdf5doxy_layout.xml b/doxygen/hdf5doxy_layout.xml index 77900a3..2dee15f 100644 --- a/doxygen/hdf5doxy_layout.xml +++ b/doxygen/hdf5doxy_layout.xml @@ -8,6 +8,7 @@ + -- cgit v0.12