diff --git a/C/CMakeLists.txt b/C/CMakeLists.txt index 4cc0b3a..4e589bc 100644 --- a/C/CMakeLists.txt +++ b/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/C/H5D/CMakeLists.txt b/C/H5D/CMakeLists.txt index 68cbd23..02f9ac7 100644 --- a/C/H5D/CMakeLists.txt +++ b/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/C/H5D/C_sourcefiles.cmake b/C/H5D/C_sourcefiles.cmake index 87e0d6f..971993f 100644 --- a/C/H5D/C_sourcefiles.cmake +++ b/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/C/H5FLT/CMakeLists.txt b/C/H5FLT/CMakeLists.txt index 482d65b..9345b66 100644 --- a/C/H5FLT/CMakeLists.txt +++ b/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/C/H5G/CMakeLists.txt b/C/H5G/CMakeLists.txt index ffbc614..f517199 100644 --- a/C/H5G/CMakeLists.txt +++ b/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/C/H5G/C_sourcefiles.cmake b/C/H5G/C_sourcefiles.cmake index 133fb43..e8e3692 100644 --- a/C/H5G/C_sourcefiles.cmake +++ b/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/C/H5PAR/CMakeLists.txt b/C/H5PAR/CMakeLists.txt index 4e2e297..6e569b4 100644 --- a/C/H5PAR/CMakeLists.txt +++ b/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/C/H5T/CMakeLists.txt b/C/H5T/CMakeLists.txt index 0f8884b..fb5a4e4 100644 --- a/C/H5T/CMakeLists.txt +++ b/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/C/H5VDS/CMakeLists.txt b/C/H5VDS/CMakeLists.txt new file mode 100644 index 0000000..87fcb9f --- /dev/null +++ b/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/C/H5VDS/C_sourcefiles.cmake b/C/H5VDS/C_sourcefiles.cmake new file mode 100644 index 0000000..a408faf --- /dev/null +++ b/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/C/H5VDS/Makefile.am b/C/H5VDS/Makefile.am new file mode 100644 index 0000000..e4f5320 --- /dev/null +++ b/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/C/H5VDS/Makefile.in b/C/H5VDS/Makefile.in new file mode 100644 index 0000000..1fc4c77 --- /dev/null +++ b/C/H5VDS/Makefile.in @@ -0,0 +1,1013 @@ +# Makefile.in generated by automake 1.15.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2017 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# 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. + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +noinst_PROGRAMS = \ + h5ex_vds$(EXEEXT) \ + h5ex_vds-exc$(EXEEXT) \ + h5ex_vds-exclim$(EXEEXT) \ + h5ex_vds-eiger$(EXEEXT) \ + h5ex_vds-simpleIO$(EXEEXT) \ + h5ex_vds-percival$(EXEEXT) \ + h5ex_vds-percival-unlim$(EXEEXT) \ + h5ex_vds-percival-unlim-maxmin$(EXEEXT) +subdir = C/H5VDS +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = test.sh +CONFIG_CLEAN_VPATH_FILES = +PROGRAMS = $(noinst_PROGRAMS) +h5ex_vds_SOURCES = h5ex_vds.c +h5ex_vds_OBJECTS = h5ex_vds.$(OBJEXT) +h5ex_vds_LDADD = $(LDADD) +h5ex_vds-exc_SOURCES = h5ex_vds-exc.c +h5ex_vds-exc_OBJECTS = h5ex_vds-exc.$(OBJEXT) +h5ex_vds-exc_LDADD = $(LDADD) +h5ex_vds-exclim_SOURCES = h5ex_vds-exclim.c +h5ex_vds-exclim_OBJECTS = h5ex_vds-exclim.$(OBJEXT) +h5ex_vds-exclim_LDADD = $(LDADD) +h5ex_vds-eiger_SOURCES = h5ex_vds-eiger.c +h5ex_vds-eiger_OBJECTS = h5ex_vds-eiger.$(OBJEXT) +h5ex_vds-eiger_LDADD = $(LDADD) +h5ex_vds-simpleIO_SOURCES = h5ex_vds-simpleIO.c +h5ex_vds-simpleIO_OBJECTS = h5ex_vds-simpleIO.$(OBJEXT) +h5ex_vds-simpleIO_LDADD = $(LDADD) +h5ex_vds-percival_SOURCES = h5ex_vds-percival.c +h5ex_vds-percival_OBJECTS = h5ex_vds-percival.$(OBJEXT) +h5ex_vds-percival_LDADD = $(LDADD) +h5ex_vds-percival-unlim_SOURCES = h5ex_vds-percival-unlim.c +h5ex_vds-percival-unlim_OBJECTS = h5ex_vds-percival-unlim.$(OBJEXT) +h5ex_vds-percival-unlim_LDADD = $(LDADD) +h5ex_vds-percival-unlim-maxmin_SOURCES = h5ex_vds-percival-unlim-maxmin.c +h5ex_vds-percival-unlim-maxmin_OBJECTS = h5ex_vds-percival-unlim-maxmin.$(OBJEXT) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = \ + h5ex_vds.c \ + h5ex_vds-exc.c \ + h5ex_vds-exclim.c \ + h5ex_vds-eiger.c \ + h5ex_vds-simpleIO.c \ + h5ex_vds-percival.c \ + h5ex_vds-percival-unlim.c \ + h5ex_vds-percival-unlim-maxmin.c +DIST_SOURCES = \ + h5ex_vds.c \ + h5ex_vds-exc.c \ + h5ex_vds-exclim.c \ + h5ex_vds-eiger.c \ + h5ex_vds-simpleIO.c \ + h5ex_vds-percival.c \ + h5ex_vds-percival-unlim.c \ + h5ex_vds-percival-unlim-maxmin.c +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(srcdir)/test.sh.in $(top_srcdir)/depcomp \ + $(top_srcdir)/test-driver +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EXEEXT = @EXEEXT@ +FC = @FC@ +FCFLAGS = @FCFLAGS@ +FORTRAN_2003_CONDITIONAL_F = @FORTRAN_2003_CONDITIONAL_F@ +H5_APIVER = @H5_APIVER@ +H5_LIBVER = @H5_LIBVER@ +H5_LIBVER_DIR = @H5_LIBVER_DIR@ +H5_VERS_MAJOR = @H5_VERS_MAJOR@ +H5_VERS_MINOR = @H5_VERS_MINOR@ +H5_VERS_RELEASE = @H5_VERS_RELEASE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_FC = @ac_ct_FC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +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 +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign C/H5D/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign C/H5D/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +test.sh: $(top_builddir)/config.status $(srcdir)/test.sh.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +clean-noinstPROGRAMS: + -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) + +h5ex_vds$(EXEEXT): $(h5ex_vds_OBJECTS) $(h5ex_vds_DEPENDENCIES) $(EXTRA_h5ex_vds_DEPENDENCIES) + @rm -f h5ex_vds$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(h5ex_vds_OBJECTS) $(h5ex_vds_LDADD) $(LIBS) + +h5ex_vds-exc$(EXEEXT): $(h5ex_vds-exc_OBJECTS) $(h5ex_vds-exc_DEPENDENCIES) $(EXTRA_h5ex_vds-exc_DEPENDENCIES) + @rm -f h5ex_vds-exc$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(h5ex_vds-exc_OBJECTS) $(h5ex_vds-exc_LDADD) $(LIBS) + +h5ex_vds-exclim$(EXEEXT): $(h5ex_vds-exclim_OBJECTS) $(h5ex_vds-exclim_DEPENDENCIES) $(EXTRA_h5ex_vds-exclim_DEPENDENCIES) + @rm -f h5ex_vds-exclim$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(h5ex_vds-exclim_OBJECTS) $(h5ex_vds-exclim_LDADD) $(LIBS) + +h5ex_vds-eiger$(EXEEXT): $(h5ex_vds-eiger_OBJECTS) $(h5ex_vds-eiger_DEPENDENCIES) $(EXTRA_h5ex_vds-eiger_DEPENDENCIES) + @rm -f h5ex_vds-eiger$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(h5ex_vds-eiger_OBJECTS) $(h5ex_vds-eiger_LDADD) $(LIBS) + +h5ex_vds-simpleIO$(EXEEXT): $(h5ex_vds-simpleIO_OBJECTS) $(h5ex_vds-simpleIO_DEPENDENCIES) $(EXTRA_h5ex_vds-simpleIO_DEPENDENCIES) + @rm -f h5ex_vds-simpleIO$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(h5ex_vds-simpleIO_OBJECTS) $(h5ex_vds-simpleIO_LDADD) $(LIBS) + +h5ex_vds-percival$(EXEEXT): $(h5ex_vds-percival_OBJECTS) $(h5ex_vds-percival_DEPENDENCIES) $(EXTRA_h5ex_vds-percival_DEPENDENCIES) + @rm -f h5ex_vds-percival$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(h5ex_vds-percival_OBJECTS) $(h5ex_vds-percival_LDADD) $(LIBS) + +h5ex_vds-percival-unlim$(EXEEXT): $(h5ex_vds-percival-unlim_OBJECTS) $(h5ex_vds-percival-unlim_DEPENDENCIES) $(EXTRA_h5ex_vds-percival-unlim_DEPENDENCIES) + @rm -f h5ex_vds-percival-unlim$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(h5ex_vds-percival-unlim_OBJECTS) $(h5ex_vds-percival-unlim_LDADD) $(LIBS) + +h5ex_vds-percival-unlim-maxmin$(EXEEXT): $(h5ex_vds-percival-unlim-maxmin_OBJECTS) $(h5ex_vds-percival-unlim-maxmin_DEPENDENCIES) $(EXTRA_h5ex_vds-percival-unlim-maxmin_DEPENDENCIES) + @rm -f h5ex_vds-percival-unlim-maxmin$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(h5ex_vds-percival-unlim-maxmin_OBJECTS) $(h5ex_vds-percival-unlim-maxmin_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/h5ex_vds.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/h5ex_vds-exc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/h5ex_vds-exclim.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/h5ex_vds-eiger.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/h5ex_vds-simpleIO.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/h5ex_vds-percival.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/h5ex_vds-percival-unlim.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/h5ex_vds-percival-unlim-maxmin.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.sh.log: test.sh + @p='test.sh'; \ + b='test.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-generic clean-noinstPROGRAMS cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/C/H5VDS/h5ex_vds-eiger.c b/C/H5VDS/h5ex_vds-eiger.c new file mode 100644 index 0000000..0629d73 --- /dev/null +++ b/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/C/H5VDS/h5ex_vds-exc.c b/C/H5VDS/h5ex_vds-exc.c new file mode 100644 index 0000000..10bb68c --- /dev/null +++ b/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/C/H5VDS/h5ex_vds-exclim.c b/C/H5VDS/h5ex_vds-exclim.c new file mode 100644 index 0000000..6bebe76 --- /dev/null +++ b/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/C/H5VDS/h5ex_vds-percival-unlim-maxmin.c b/C/H5VDS/h5ex_vds-percival-unlim-maxmin.c new file mode 100644 index 0000000..8ef996a --- /dev/null +++ b/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/C/H5VDS/h5ex_vds-percival-unlim.c b/C/H5VDS/h5ex_vds-percival-unlim.c new file mode 100644 index 0000000..fadfb79 --- /dev/null +++ b/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/C/H5VDS/h5ex_vds-percival.c b/C/H5VDS/h5ex_vds-percival.c new file mode 100644 index 0000000..edbef18 --- /dev/null +++ b/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/C/H5VDS/h5ex_vds-simpleIO.c b/C/H5VDS/h5ex_vds-simpleIO.c new file mode 100644 index 0000000..3bd3133 --- /dev/null +++ b/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/C/H5VDS/h5ex_vds.c b/C/H5VDS/h5ex_vds.c new file mode 100644 index 0000000..96a8137 --- /dev/null +++ b/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/C/H5VDS/test.sh.in b/C/H5VDS/test.sh.in new file mode 100644 index 0000000..91888f5 --- /dev/null +++ b/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/C/H5VDS/tfiles/110/h5ex_vds-eiger.ddl b/C/H5VDS/tfiles/110/h5ex_vds-eiger.ddl new file mode 100644 index 0000000..b622169 --- /dev/null +++ b/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/C/H5VDS/tfiles/110/h5ex_vds-eiger.tst b/C/H5VDS/tfiles/110/h5ex_vds-eiger.tst new file mode 100644 index 0000000..580c708 --- /dev/null +++ b/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/C/H5VDS/tfiles/110/h5ex_vds-exc.ddl b/C/H5VDS/tfiles/110/h5ex_vds-exc.ddl new file mode 100644 index 0000000..eb00999 --- /dev/null +++ b/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/C/H5VDS/tfiles/110/h5ex_vds-exc.tst b/C/H5VDS/tfiles/110/h5ex_vds-exc.tst new file mode 100644 index 0000000..917c11a --- /dev/null +++ b/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/C/H5VDS/tfiles/110/h5ex_vds-exclim.ddl b/C/H5VDS/tfiles/110/h5ex_vds-exclim.ddl new file mode 100644 index 0000000..401b84f --- /dev/null +++ b/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/C/H5VDS/tfiles/110/h5ex_vds-exclim.tst b/C/H5VDS/tfiles/110/h5ex_vds-exclim.tst new file mode 100644 index 0000000..d5b0db7 --- /dev/null +++ b/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/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim-maxmin.ddl b/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim-maxmin.ddl new file mode 100644 index 0000000..1008165 --- /dev/null +++ b/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/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim-maxmin.tst b/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim-maxmin.tst new file mode 100644 index 0000000..8ccd85e --- /dev/null +++ b/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/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.ddl b/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.ddl new file mode 100644 index 0000000..4a51060 --- /dev/null +++ b/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/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.tst b/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.tst new file mode 100644 index 0000000..d6197f0 --- /dev/null +++ b/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/C/H5VDS/tfiles/110/h5ex_vds-percival.ddl b/C/H5VDS/tfiles/110/h5ex_vds-percival.ddl new file mode 100644 index 0000000..5279876 --- /dev/null +++ b/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/C/H5VDS/tfiles/110/h5ex_vds-percival.tst b/C/H5VDS/tfiles/110/h5ex_vds-percival.tst new file mode 100644 index 0000000..9d39e9e --- /dev/null +++ b/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/C/H5VDS/tfiles/110/h5ex_vds-simpleIO.ddl b/C/H5VDS/tfiles/110/h5ex_vds-simpleIO.ddl new file mode 100644 index 0000000..8a667e6 --- /dev/null +++ b/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/C/H5VDS/tfiles/110/h5ex_vds-simpleIO.tst b/C/H5VDS/tfiles/110/h5ex_vds-simpleIO.tst new file mode 100644 index 0000000..ec39242 --- /dev/null +++ b/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/C/H5VDS/tfiles/110/h5ex_vds.ddl b/C/H5VDS/tfiles/110/h5ex_vds.ddl new file mode 100644 index 0000000..efbff7d --- /dev/null +++ b/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/C/H5VDS/tfiles/110/h5ex_vds.tst b/C/H5VDS/tfiles/110/h5ex_vds.tst new file mode 100644 index 0000000..410ac4d --- /dev/null +++ b/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/C/Perf/CMakeLists.txt b/C/Perf/CMakeLists.txt index 5cbba67..e41def2 100644 --- a/C/Perf/CMakeLists.txt +++ b/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/CMakeLists.txt b/CMakeLists.txt index e944b9e..00adfc0 100644 --- a/CMakeLists.txt +++ b/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/FORTRAN/H5D/CMakeLists.txt b/FORTRAN/H5D/CMakeLists.txt index 5369a49..0d7f5b5 100644 --- a/FORTRAN/H5D/CMakeLists.txt +++ b/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/FORTRAN/H5G/CMakeLists.txt b/FORTRAN/H5G/CMakeLists.txt index 508283c..77bd0cb 100644 --- a/FORTRAN/H5G/CMakeLists.txt +++ b/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/FORTRAN/H5PAR/CMakeLists.txt b/FORTRAN/H5PAR/CMakeLists.txt index 792caaf..98ef271 100644 --- a/FORTRAN/H5PAR/CMakeLists.txt +++ b/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/FORTRAN/H5T/CMakeLists.txt b/FORTRAN/H5T/CMakeLists.txt index 262adf8..8462bbf 100644 --- a/FORTRAN/H5T/CMakeLists.txt +++ b/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/JAVA/H5D/CMakeLists.txt b/JAVA/H5D/CMakeLists.txt index bc06506..017830b 100644 --- a/JAVA/H5D/CMakeLists.txt +++ b/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/JAVA/H5G/CMakeLists.txt b/JAVA/H5G/CMakeLists.txt index 957934b..bd43f2a 100644 --- a/JAVA/H5G/CMakeLists.txt +++ b/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/JAVA/H5G/Java_sourcefiles.cmake b/JAVA/H5G/Java_sourcefiles.cmake index d5142bd..ad7732a 100644 --- a/JAVA/H5G/Java_sourcefiles.cmake +++ b/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/JAVA/H5J/CMakeLists.txt b/JAVA/H5J/CMakeLists.txt index eaefa7d..1bd28a1 100644 --- a/JAVA/H5J/CMakeLists.txt +++ b/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/JAVA/H5J/Java_sourcefiles.cmake b/JAVA/H5J/Java_sourcefiles.cmake index 0a8a40b..c643a16 100644 --- a/JAVA/H5J/Java_sourcefiles.cmake +++ b/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/JAVA/H5T/CMakeLists.txt b/JAVA/H5T/CMakeLists.txt index 0d2cb41..1c06804 100644 --- a/JAVA/H5T/CMakeLists.txt +++ b/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/config/cmake/HDFExampleMacros.cmake b/config/cmake/HDFExampleMacros.cmake index 82fd8ac..3bb1d48 100644 --- a/config/cmake/HDFExampleMacros.cmake +++ b/config/cmake/HDFExampleMacros.cmake @@ -20,24 +20,11 @@ macro (BASIC_SETTINGS varname) string (TOLOWER ${H5${EXAMPLE_PACKAGE_VARNAME}_PACKAGE_NAME} EXAMPLE_NAME) 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/config/cmake/UseJava.cmake b/config/cmake/UseJava.cmake index b4af653..12e324c 100644 --- a/config/cmake/UseJava.cmake +++ b/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