summaryrefslogtreecommitdiffstats
path: root/HDF5Examples
diff options
context:
space:
mode:
authorAllen Byrne <50328838+byrnHDF@users.noreply.github.com>2023-12-21 15:53:24 (GMT)
committerGitHub <noreply@github.com>2023-12-21 15:53:24 (GMT)
commitaa734a5d7e19c0eb9232e55a2f257fd87ffee0f1 (patch)
tree4ae5cdc2ab39a1b73813203c194c72c9abcd3a42 /HDF5Examples
parent773245a0847e6b482f28b919fe4ed29b0f366834 (diff)
downloadhdf5-aa734a5d7e19c0eb9232e55a2f257fd87ffee0f1.zip
hdf5-aa734a5d7e19c0eb9232e55a2f257fd87ffee0f1.tar.gz
hdf5-aa734a5d7e19c0eb9232e55a2f257fd87ffee0f1.tar.bz2
Add VDS examples and fix non-standalone build (#3898)
* Choose a size for rdata dimension * Fix platform naming conflicts * Fix doxygen references to point within library repo
Diffstat (limited to 'HDF5Examples')
-rw-r--r--HDF5Examples/C/CMakeLists.txt4
-rw-r--r--HDF5Examples/C/H5D/CMakeLists.txt5
-rw-r--r--HDF5Examples/C/H5D/C_sourcefiles.cmake2
-rw-r--r--HDF5Examples/C/H5FLT/CMakeLists.txt13
-rw-r--r--HDF5Examples/C/H5G/CMakeLists.txt18
-rw-r--r--HDF5Examples/C/H5G/C_sourcefiles.cmake2
-rw-r--r--HDF5Examples/C/H5PAR/CMakeLists.txt2
-rw-r--r--HDF5Examples/C/H5T/CMakeLists.txt8
-rw-r--r--HDF5Examples/C/H5VDS/CMakeLists.txt164
-rw-r--r--HDF5Examples/C/H5VDS/C_sourcefiles.cmake20
-rw-r--r--HDF5Examples/C/H5VDS/Makefile.am51
-rw-r--r--HDF5Examples/C/H5VDS/h5ex_vds-eiger.c205
-rw-r--r--HDF5Examples/C/H5VDS/h5ex_vds-exc.c245
-rw-r--r--HDF5Examples/C/H5VDS/h5ex_vds-exclim.c239
-rw-r--r--HDF5Examples/C/H5VDS/h5ex_vds-percival-unlim-maxmin.c358
-rw-r--r--HDF5Examples/C/H5VDS/h5ex_vds-percival-unlim.c357
-rw-r--r--HDF5Examples/C/H5VDS/h5ex_vds-percival.c254
-rw-r--r--HDF5Examples/C/H5VDS/h5ex_vds-simpleIO.c196
-rw-r--r--HDF5Examples/C/H5VDS/h5ex_vds.c254
-rw-r--r--HDF5Examples/C/H5VDS/test.sh.in98
-rw-r--r--HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-eiger.ddl10
-rw-r--r--HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-eiger.tst17
-rw-r--r--HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exc.ddl10
-rw-r--r--HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exc.tst81
-rw-r--r--HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exclim.ddl55
-rw-r--r--HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exclim.tst84
-rw-r--r--HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim-maxmin.ddl330
-rw-r--r--HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim-maxmin.tst379
-rw-r--r--HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.ddl810
-rw-r--r--HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.tst1060
-rw-r--r--HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival.ddl410
-rw-r--r--HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival.tst95
-rw-r--r--HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-simpleIO.ddl14
-rw-r--r--HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-simpleIO.tst12
-rw-r--r--HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds.ddl14
-rw-r--r--HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds.tst34
-rw-r--r--HDF5Examples/C/Perf/CMakeLists.txt4
-rw-r--r--HDF5Examples/CMakeLists.txt52
-rw-r--r--HDF5Examples/FORTRAN/H5D/CMakeLists.txt4
-rw-r--r--HDF5Examples/FORTRAN/H5G/CMakeLists.txt18
-rw-r--r--HDF5Examples/FORTRAN/H5PAR/CMakeLists.txt2
-rw-r--r--HDF5Examples/FORTRAN/H5T/CMakeLists.txt8
-rw-r--r--HDF5Examples/JAVA/H5D/CMakeLists.txt21
-rw-r--r--HDF5Examples/JAVA/H5G/CMakeLists.txt21
-rw-r--r--HDF5Examples/JAVA/H5G/Java_sourcefiles.cmake2
-rw-r--r--HDF5Examples/JAVA/H5J/CMakeLists.txt21
-rw-r--r--HDF5Examples/JAVA/H5J/Java_sourcefiles.cmake2
-rw-r--r--HDF5Examples/JAVA/H5T/CMakeLists.txt21
-rw-r--r--HDF5Examples/config/cmake/HDFExampleMacros.cmake35
-rw-r--r--HDF5Examples/config/cmake/UseJava.cmake2
50 files changed, 5991 insertions, 132 deletions
diff --git a/HDF5Examples/C/CMakeLists.txt b/HDF5Examples/C/CMakeLists.txt
index 4cc0b3a..4e589bc 100644
--- a/HDF5Examples/C/CMakeLists.txt
+++ b/HDF5Examples/C/CMakeLists.txt
@@ -15,6 +15,10 @@ if (${H5_LIBVER_DIR} GREATER 16)
endif ()
endif ()
+if (${H5_LIBVER_DIR} GREATER 110)
+ add_subdirectory (${PROJECT_SOURCE_DIR}/H5VDS)
+endif ()
+
if (H5_HAVE_PARALLEL AND HDF5_ENABLE_PARALLEL)
add_subdirectory (${PROJECT_SOURCE_DIR}/H5PAR)
endif ()
diff --git a/HDF5Examples/C/H5D/CMakeLists.txt b/HDF5Examples/C/H5D/CMakeLists.txt
index 68cbd23..02f9ac7 100644
--- a/HDF5Examples/C/H5D/CMakeLists.txt
+++ b/HDF5Examples/C/H5D/CMakeLists.txt
@@ -88,7 +88,6 @@ endif ()
# endif ()
# endforeach ()
#endif ()
-
#if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.12")
# foreach (example_name ${1_12_examples})
# if (H5EX_BUILD_TESTING)
@@ -232,7 +231,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_OUTPUT=${testname}.out"
-D "TEST_REFERENCE=${testname}.tst"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall)
if (HDF5_BUILD_TOOLS)
@@ -246,7 +245,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_EXPECT=0"
-D "TEST_REFERENCE=${testname}.ddl"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname})
endif ()
diff --git a/HDF5Examples/C/H5D/C_sourcefiles.cmake b/HDF5Examples/C/H5D/C_sourcefiles.cmake
index 87e0d6f..971993f 100644
--- a/HDF5Examples/C/H5D/C_sourcefiles.cmake
+++ b/HDF5Examples/C/H5D/C_sourcefiles.cmake
@@ -30,7 +30,7 @@ if (HDF5_ENABLE_SZIP_SUPPORT)
)
endif ()
-if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.8" AND NOT ${${EXAMPLE_VARNAME}_USE_16_API})
+if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.8" AND NOT ${EXAMPLE_VARNAME}_USE_16_API)
set (1_8_examples
h5ex_d_nbit
h5ex_d_sofloat
diff --git a/HDF5Examples/C/H5FLT/CMakeLists.txt b/HDF5Examples/C/H5FLT/CMakeLists.txt
index 482d65b..9345b66 100644
--- a/HDF5Examples/C/H5FLT/CMakeLists.txt
+++ b/HDF5Examples/C/H5FLT/CMakeLists.txt
@@ -141,6 +141,11 @@ else ()
set (ZSTD_AVAILABLE 0)
endif ()
+set (LIB_TYPE STATIC)
+if (BUILD_SHARED_LIBS)
+ set (LIB_TYPE SHARED)
+endif ()
+
#run-time loadable library examples
foreach (example ${dyn_examples})
add_executable (${EXAMPLE_VARNAME}_${example} ${PROJECT_SOURCE_DIR}/${example}.c)
@@ -196,7 +201,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_ERRREF=1"
-D "GREP_ERRREF=Filter present but encoding disabled"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname}-ERR PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall)
add_test (
@@ -219,7 +224,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_ENV_VAR=HDF5_PLUGIN_PATH"
-D "TEST_ENV_VALUE=${H5EX_HDF5_PLUGIN_PATH}"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall)
endif ()
@@ -240,7 +245,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_ENV_VAR=HDF5_PLUGIN_PATH"
-D "TEST_ENV_VALUE=${H5EX_HDF5_PLUGIN_PATH}"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
else ()
add_test (
@@ -257,7 +262,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_ENV_VAR=HDF5_PLUGIN_PATH"
-D "TEST_ENV_VALUE=${H5EX_HDF5_PLUGIN_PATH}"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
endif ()
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname})
diff --git a/HDF5Examples/C/H5G/CMakeLists.txt b/HDF5Examples/C/H5G/CMakeLists.txt
index ffbc614..f517199 100644
--- a/HDF5Examples/C/H5G/CMakeLists.txt
+++ b/HDF5Examples/C/H5G/CMakeLists.txt
@@ -212,7 +212,7 @@ if (H5EX_BUILD_TESTING)
h5ex_g_iterate
h5ex_g_traverse
)
- if (NOT ${H5_LIBVER_DIR} EQUAL 16)
+ if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.8")
set (exfiles ${exfiles}
h5ex_g_visit
)
@@ -243,7 +243,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_SKIP_COMPARE=TRUE"
-D "TEST_OUTPUT=${testname}.out"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall)
if (HDF5_BUILD_TOOLS)
@@ -257,7 +257,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_EXPECT=0"
-D "TEST_REFERENCE=${testname}.ddl"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname})
endif ()
@@ -274,7 +274,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_OUTPUT=${testname}.out"
-D "TEST_REFERENCE=${testname}.tst"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
if (HDF5_BUILD_TOOLS)
add_test (
@@ -287,7 +287,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_EXPECT=0"
-D "TEST_REFERENCE=${testname}.ddl"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname})
endif ()
@@ -311,7 +311,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_OUTPUT=${testname}.out"
-D "TEST_REFERENCE=${testname}.tst"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall)
if (HDF5_BUILD_TOOLS)
@@ -325,7 +325,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_EXPECT=0"
-D "TEST_REFERENCE=${testname}1.ddl"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname}1 PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname})
add_test (
@@ -338,7 +338,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_EXPECT=0"
-D "TEST_REFERENCE=${testname}2.ddl"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname}2 PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_H5DUMP-${testname}1)
endif ()
@@ -361,7 +361,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_OUTPUT=${testname}.out"
-D "TEST_REFERENCE=${testname}.tst"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall)
endmacro ()
diff --git a/HDF5Examples/C/H5G/C_sourcefiles.cmake b/HDF5Examples/C/H5G/C_sourcefiles.cmake
index 133fb43..e8e3692 100644
--- a/HDF5Examples/C/H5G/C_sourcefiles.cmake
+++ b/HDF5Examples/C/H5G/C_sourcefiles.cmake
@@ -9,7 +9,7 @@ set (common_examples
h5ex_g_traverse
)
-if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.8" AND NOT ${${EXAMPLE_VARNAME}_USE_16_API})
+if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.8" AND NOT ${EXAMPLE_VARNAME}_USE_16_API)
set (1_8_examples
h5ex_g_compact
h5ex_g_corder
diff --git a/HDF5Examples/C/H5PAR/CMakeLists.txt b/HDF5Examples/C/H5PAR/CMakeLists.txt
index 4e2e297..6e569b4 100644
--- a/HDF5Examples/C/H5PAR/CMakeLists.txt
+++ b/HDF5Examples/C/H5PAR/CMakeLists.txt
@@ -41,7 +41,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_OUTPUT=${testname}.out"
-D "TEST_REFERENCE:STRING=PHDF5 example finished with no errors"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/grepTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/grepTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall)
set (last_test "${EXAMPLE_VARNAME}_${testname}")
diff --git a/HDF5Examples/C/H5T/CMakeLists.txt b/HDF5Examples/C/H5T/CMakeLists.txt
index 0f8884b..fb5a4e4 100644
--- a/HDF5Examples/C/H5T/CMakeLists.txt
+++ b/HDF5Examples/C/H5T/CMakeLists.txt
@@ -146,7 +146,7 @@ if (HDF5_BUILD_TOOLS)
)
endif ()
elseif ((${example_name} STREQUAL "h5ex_t_objref" OR ${example_name} STREQUAL "h5ex_t_objrefatt") OR (${example_name} STREQUAL "h5ex_t_regref" OR ${example_name} STREQUAL "h5ex_t_regrefatt"))
- if (${${EXAMPLE_VARNAME}_USE_16_API} OR ${${EXAMPLE_VARNAME}_USE_18_API} OR ${${EXAMPLE_VARNAME}_USE_110_API})
+ if (${EXAMPLE_VARNAME}_USE_16_API OR ${EXAMPLE_VARNAME}_USE_18_API OR ${EXAMPLE_VARNAME}_USE_110_API)
if (HDF5_VERSION_MAJOR VERSION_EQUAL "1.8")
if (HDF5_VERSION_STRING VERSION_LESS_EQUAL "1.8.21")
add_custom_command (
@@ -340,7 +340,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_OUTPUT=${testname}.out"
-D "TEST_REFERENCE=${testname}.tst"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall)
if (HDF5_BUILD_TOOLS)
@@ -354,7 +354,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_EXPECT=0"
-D "TEST_REFERENCE=${testname}.ddl"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname})
endif ()
@@ -377,7 +377,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_OUTPUT=${testname}.out"
-D "TEST_REFERENCE=${testname}.tst"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall)
endmacro ()
diff --git a/HDF5Examples/C/H5VDS/CMakeLists.txt b/HDF5Examples/C/H5VDS/CMakeLists.txt
new file mode 100644
index 0000000..87fcb9f
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/CMakeLists.txt
@@ -0,0 +1,164 @@
+cmake_minimum_required (VERSION 3.12)
+project (HDF5Examples_C_H5VDS C)
+
+#-----------------------------------------------------------------------------
+# Define Sources
+#-----------------------------------------------------------------------------
+include (C_sourcefiles.cmake)
+
+#foreach (example_name ${examples})
+#endforeach ()
+
+if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.10")
+ foreach (example_name ${1_10_examples})
+ add_executable (${EXAMPLE_VARNAME}_${example_name} ${PROJECT_SOURCE_DIR}/${example_name}.c)
+ target_compile_options(${EXAMPLE_VARNAME}_${example_name}
+ PRIVATE
+ "$<$<BOOL:${${EXAMPLE_VARNAME}_USE_16_API}>:-DH5_USE_16_API>"
+ "$<$<BOOL:${${EXAMPLE_VARNAME}_USE_18_API}>:-DH5_USE_18_API>"
+ "$<$<BOOL:${${EXAMPLE_VARNAME}_USE_110_API}>:-DH5_USE_110_API>"
+ "$<$<BOOL:${${EXAMPLE_VARNAME}_USE_112_API}>:-DH5_USE_112_API>"
+ "$<$<BOOL:${${EXAMPLE_VARNAME}_USE_114_API}>:-DH5_USE_114_API>"
+ "$<$<BOOL:${${EXAMPLE_VARNAME}_USE_116_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=$<TARGET_FILE:${EXAMPLE_VARNAME}_${testname}>"
+ -D "TEST_ARGS:STRING="
+ -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
+ -D "TEST_EXPECT=0"
+ -D "TEST_OUTPUT=${testname}.out"
+ -D "TEST_REFERENCE=${testname}.tst"
+ -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
+ )
+ set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall)
+ if (HDF5_BUILD_TOOLS)
+ add_test (
+ NAME ${EXAMPLE_VARNAME}_H5DUMP-${testname}
+ COMMAND "${CMAKE_COMMAND}"
+ -D "TEST_PROGRAM=${H5EX_HDF5_DUMP_EXECUTABLE}"
+ -D "TEST_ARGS:STRING=${ARGN};${testname}.h5"
+ -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
+ -D "TEST_OUTPUT=${testname}.ddl.out"
+ -D "TEST_EXPECT=0"
+ -D "TEST_REFERENCE=${testname}.ddl"
+ -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
+ )
+ set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname})
+ endif ()
+ endmacro ()
+
+ foreach (example_name ${examples} ${1_10_examples})
+ ADD_H5_TEST (${example_name})
+ endforeach ()
+endif ()
diff --git a/HDF5Examples/C/H5VDS/C_sourcefiles.cmake b/HDF5Examples/C/H5VDS/C_sourcefiles.cmake
new file mode 100644
index 0000000..a408faf
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/C_sourcefiles.cmake
@@ -0,0 +1,20 @@
+#-----------------------------------------------------------------------------
+# Define Sources, one file per application
+#-----------------------------------------------------------------------------
+set (examples)
+
+if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.10" AND NOT ${EXAMPLE_VARNAME}_USE_16_API AND NOT ${EXAMPLE_VARNAME}_USE_18_API)
+ set (1_10_examples
+ h5ex_vds
+ h5ex_vds-exc
+# h5ex_vds-exclim
+ h5ex_vds-eiger
+ h5ex_vds-simpleIO
+ h5ex_vds-percival
+ h5ex_vds-percival-unlim
+ h5ex_vds-percival-unlim-maxmin
+ )
+else ()
+ set (1_10_examples)
+endif ()
+
diff --git a/HDF5Examples/C/H5VDS/Makefile.am b/HDF5Examples/C/H5VDS/Makefile.am
new file mode 100644
index 0000000..e4f5320
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/Makefile.am
@@ -0,0 +1,51 @@
+#
+# Copyright by The HDF Group.
+# Copyright by the Board of Trustees of the University of Illinois.
+# All rights reserved.
+#
+# This file is part of HDF5. The full HDF5 copyright notice, including
+# terms governing use, modification, and redistribution, is contained in
+# the files COPYING and Copyright.html. COPYING can be found at the root
+# of the source code distribution tree; Copyright.html can be found at the
+# root level of an installed copy of the electronic HDF5 document set and
+# is linked from the top-level documents page. It can also be found at
+# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have
+# access to either file, you may request a copy from help@hdfgroup.org.
+##
+## Makefile.am
+## Run automake to generate a Makefile.in from this file.
+##
+
+noinst_PROGRAMS = \
+ h5ex_vds \
+ h5ex_vds-exc \
+ h5ex_vds-exclim \
+ h5ex_vds-eiger \
+ h5ex_vds-simpleIO \
+ h5ex_vds-percival \
+ h5ex_vds-percival-unlim \
+ h5ex_vds-percival-unlim-maxmin
+
+
+EXTRA_DIST = \
+ tfiles/h5ex_vds.tst \
+ tfiles/h5ex_vds-exc.tst \
+ tfiles/h5ex_vds-exclim.tst \
+ tfiles/h5ex_vds-eiger.tst \
+ tfiles/h5ex_vds-simpleIO.tst \
+ tfiles/h5ex_vds-percival.tst \
+ tfiles/h5ex_vds-percival-unlim.tst \
+ tfiles/h5ex_vds-percival-unlim-maxmin.tst \
+ tfiles/h5ex_vds.ddl \
+ tfiles/h5ex_vds-exc.ddl \
+ tfiles/h5ex_vds-exclim.ddl \
+ tfiles/h5ex_vds-eiger.ddl \
+ tfiles/h5ex_vds-simpleIO.ddl \
+ tfiles/h5ex_vds-percival.ddl \
+ tfiles/h5ex_vds-percival-unlim.ddl \
+ tfiles/h5ex_vds-percival-unlim-maxmin.ddl \
+ test.sh
+
+TESTS = test.sh
+
+CLEANFILES = Makefile test.sh
diff --git a/HDF5Examples/C/H5VDS/h5ex_vds-eiger.c b/HDF5Examples/C/H5VDS/h5ex_vds-eiger.c
new file mode 100644
index 0000000..0629d73
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/h5ex_vds-eiger.c
@@ -0,0 +1,205 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/************************************************************
+
+ This example illustrates the concept of the virtual dataset.
+ Eiger use case. Every 5 frames 10x10 are in the source
+ dataset "/A" in file with the name f-<#>.h5
+ This file is intended for use with HDF5 Library version 1.10
+
+ ************************************************************/
+
+#include "hdf5.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+#define FILE "h5ex_vds-eiger.h5"
+#define DATASET "VDS-Eiger"
+#define VDSDIM0 5
+#define VDSDIM1 10
+#define VDSDIM2 10
+#define DIM0 5
+#define DIM1 10
+#define DIM2 10
+#define RANK 3
+
+int
+main(void)
+{
+ hid_t file = H5I_INVALID_HID;
+ hid_t space = H5I_INVALID_HID;
+ hid_t dset = H5I_INVALID_HID;
+ hid_t src_space = H5I_INVALID_HID;
+ hid_t vspace = H5I_INVALID_HID;
+ hid_t dcpl = H5I_INVALID_HID;
+ herr_t status;
+ hsize_t vdsdims[3] = {VDSDIM0, VDSDIM1, VDSDIM2};
+ hsize_t vdsdims_max[3] = {H5S_UNLIMITED, VDSDIM1, VDSDIM1};
+ hsize_t dims[3] = {DIM0, DIM1, DIM2};
+ hsize_t start[3], stride[3], count[3], block[3]; /* Hyperslab parameters */
+ hsize_t start_out[3], stride_out[3], count_out[3], block_out[3]; /* Hyperslab parameter out */
+ int rdata[VDSDIM0][VDSDIM1][VDSDIM2]; /* Read buffer for virtual dataset */
+ int i, j, k;
+ H5D_layout_t layout; /* Storage layout */
+ size_t num_map; /* Number of mappings */
+ ssize_t len; /* Length of the string; also a return value */
+ char *filename = NULL;
+ char *dsetname = NULL;
+
+ file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Create VDS dataspace. */
+ vspace = H5Screate_simple(RANK, vdsdims, vdsdims_max);
+
+ /* Create dataspaces for the source dataset. */
+ src_space = H5Screate_simple(RANK, dims, NULL);
+
+ /* Create VDS creation property */
+ dcpl = H5Pcreate(H5P_DATASET_CREATE);
+
+ /* Initialize hyperslab values */
+
+ start[0] = 0;
+ start[1] = 0;
+ start[2] = 0;
+ stride[0] = DIM0;
+ stride[1] = 1;
+ stride[2] = 1;
+ count[0] = H5S_UNLIMITED;
+ count[1] = 1;
+ count[2] = 1;
+ block[0] = DIM0;
+ block[1] = DIM1;
+ block[2] = DIM2;
+
+ /*
+ * Build the mappings
+ *
+ */
+ status = H5Sselect_hyperslab(vspace, H5S_SELECT_SET, start, stride, count, block);
+ status = H5Pset_virtual(dcpl, vspace, "f-%b.h5", "/A", src_space);
+
+ /* Create a virtual dataset */
+ dset = H5Dcreate2(file, DATASET, H5T_NATIVE_INT, vspace, H5P_DEFAULT, dcpl, H5P_DEFAULT);
+ status = H5Sclose(vspace);
+ status = H5Sclose(src_space);
+ status = H5Dclose(dset);
+ status = H5Fclose(file);
+
+ /*
+ * Now we begin the read section of this example.
+ */
+
+ /*
+ * Open file and dataset using the default properties.
+ */
+ file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT);
+ dset = H5Dopen2(file, DATASET, H5P_DEFAULT);
+
+ /*
+ * Get creation property list and mapping properties.
+ */
+ dcpl = H5Dget_create_plist(dset);
+
+ /*
+ * Get storage layout.
+ */
+ layout = H5Pget_layout(dcpl);
+ if (H5D_VIRTUAL == layout)
+ printf(" Dataset has a virtual layout \n");
+ else
+ printf("Wrong layout found \n");
+
+ /*
+ * Find the number of mappings.
+ */
+ status = H5Pget_virtual_count(dcpl, &num_map);
+ printf(" Number of mappings is %lu\n", (unsigned long)num_map);
+
+ /*
+ * Get mapping parameters for each mapping.
+ */
+ for (i = 0; i < (int)num_map; i++) {
+ printf(" Mapping %d \n", i);
+ printf(" Selection in the virtual dataset \n");
+ /* Get selection in the virtual dataset */
+ vspace = H5Pget_virtual_vspace(dcpl, (size_t)i);
+
+ /* Make sure that this is a hyperslab selection and then print information. */
+ if (H5Sget_select_type(vspace) == H5S_SEL_HYPERSLABS) {
+ if (H5Sis_regular_hyperslab(vspace)) {
+ status = H5Sget_regular_hyperslab(vspace, start_out, stride_out, count_out, block_out);
+ printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0],
+ (unsigned long long)start_out[1], (unsigned long long)start_out[2]);
+ printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0],
+ (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]);
+ printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0],
+ (unsigned long long)count_out[1], (unsigned long long)count_out[2]);
+ printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0],
+ (unsigned long long)block_out[1], (unsigned long long)block_out[2]);
+ }
+ }
+ /* Get source file name */
+ len = H5Pget_virtual_filename(dcpl, (size_t)i, NULL, 0);
+ filename = (char *)malloc((size_t)len * sizeof(char) + 1);
+ H5Pget_virtual_filename(dcpl, (size_t)i, filename, len + 1);
+ printf(" Source filename %s\n", filename);
+
+ /* Get source dataset name */
+ len = H5Pget_virtual_dsetname(dcpl, (size_t)i, NULL, 0);
+ dsetname = (char *)malloc((size_t)len * sizeof(char) + 1);
+ H5Pget_virtual_dsetname(dcpl, (size_t)i, dsetname, len + 1);
+ printf(" Source dataset name %s\n", dsetname);
+
+ /* Get selection in the source dataset */
+ printf(" Selection in the source dataset ");
+ src_space = H5Pget_virtual_srcspace(dcpl, (size_t)i);
+
+ /* Make sure it is ALL selection and then print the coordinates. */
+ if (H5Sget_select_type(src_space) == H5S_SEL_ALL) {
+ printf("H5S_ALL \n");
+ }
+ H5Sclose(vspace);
+ H5Sclose(src_space);
+ free(filename);
+ free(dsetname);
+ }
+
+ /*
+ * Read the data using the default properties.
+ */
+ status = H5Dread(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata[0]);
+
+ /*
+ * Output the data to the screen.
+ */
+ printf(" VDS Data:\n");
+ for (i = 0; i < VDSDIM0; i++) {
+ printf(" [");
+ for (j = 0; j < VDSDIM1; j++) {
+ printf(" [");
+ for (k = 0; k < VDSDIM1; k++)
+ printf(" %3d", rdata[i][j][k]);
+ printf("]");
+ }
+ printf("]\n");
+ }
+
+ /*
+ * Close and release resources.
+ */
+ status = H5Pclose(dcpl);
+ status = H5Dclose(dset);
+ status = H5Fclose(file);
+
+ return 0;
+}
diff --git a/HDF5Examples/C/H5VDS/h5ex_vds-exc.c b/HDF5Examples/C/H5VDS/h5ex_vds-exc.c
new file mode 100644
index 0000000..10bb68c
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/h5ex_vds-exc.c
@@ -0,0 +1,245 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/************************************************************
+
+ This example illustrates the concept of the virtual dataset.
+ Excalibur use case with k=2 and m=3.
+ This file is intended for use with HDF5 Library version 1.10
+
+ ************************************************************/
+
+#include "hdf5.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+#define FILE "h5ex_vds-exc.h5"
+#define DATASET "VDS-Excalibur"
+#define VDSDIM0 0
+#define VDSDIM1 15
+#define VDSDIM2 6
+#define LDIM0 0
+#define LDIM1 2
+#define LDIM2 6
+#define NDIM0 0
+#define NDIM1 3
+#define NDIM2 6
+#define RANK 3
+
+const char *SRC_FILE[] = {"ae.h5", "be.h5", "ce.h5", "de.h5", "ee.h5", "fe.h5"};
+
+const char *SRC_DATASET[] = {"A", "B", "C", "D", "E", "F"};
+
+int
+main(void)
+{
+ hid_t file = H5I_INVALID_HID;
+ hid_t space = H5I_INVALID_HID;
+ hid_t dset = H5I_INVALID_HID;
+ hid_t src_space = H5I_INVALID_HID;
+ hid_t lsrc_space = H5I_INVALID_HID;
+ hid_t nsrc_space = H5I_INVALID_HID;
+ hid_t vspace = H5I_INVALID_HID;
+ hid_t dcpl = H5I_INVALID_HID;
+ herr_t status;
+ hsize_t vdsdims[3] = {VDSDIM0, VDSDIM1, VDSDIM2};
+ hsize_t vdsdims_max[3] = {H5S_UNLIMITED, VDSDIM1, VDSDIM2};
+ hsize_t ldims[3] = {LDIM0, LDIM1, LDIM2};
+ hsize_t ldims_max[3] = {H5S_UNLIMITED, LDIM1, LDIM2};
+ hsize_t ndims[3] = {NDIM0, NDIM1, NDIM2};
+ hsize_t ndims_max[3] = {H5S_UNLIMITED, NDIM1, NDIM2};
+ hsize_t start[3], count[3], block[3]; /* Hyperslab parameters */
+ hsize_t start_out[3], stride_out[3], count_out[3], block_out[3];
+ int rdata[40][VDSDIM1][VDSDIM2]; /* Read buffer for virtual dataset */
+ int l = 2;
+ int n = 3;
+ int i, j, k;
+ H5D_layout_t layout; /* Storage layout */
+ size_t num_map; /* Number of mappings */
+ ssize_t len; /* Length of the string; also a return value */
+ char *filename = NULL;
+ char *dsetname = NULL;
+
+ file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Create VDS dataspace. */
+ space = H5Screate_simple(RANK, vdsdims, vdsdims_max);
+ /* Create dataspaces for A, C, and E datasets. */
+ lsrc_space = H5Screate_simple(RANK, ldims, ldims_max);
+ /* Create dataspaces for B, D, and F datasets. */
+ nsrc_space = H5Screate_simple(RANK, ndims, ndims_max);
+
+ /* Create VDS creation property */
+ dcpl = H5Pcreate(H5P_DATASET_CREATE);
+
+ /* Initialize hyperslab values */
+
+ start[0] = 0;
+ start[1] = 0;
+ start[2] = 0;
+ count[0] = H5S_UNLIMITED;
+ count[1] = 1;
+ count[2] = 1;
+ block[0] = 1;
+ block[1] = l;
+ block[2] = VDSDIM2;
+
+ /*
+ * Build the mappings for A, C and E source datasets.
+ * Unlimited hyperslab selection is the same in the source datasets.
+ * Unlimited hyperslab selections in the virtual dataset have different offsets.
+ */
+ status = H5Sselect_hyperslab(lsrc_space, H5S_SELECT_SET, start, NULL, count, block);
+ for (i = 0; i < 3; i++) {
+ start[1] = (hsize_t)((l + n) * i);
+ status = H5Sselect_hyperslab(space, H5S_SELECT_SET, start, NULL, count, block);
+ status = H5Pset_virtual(dcpl, space, SRC_FILE[2 * i], SRC_DATASET[2 * i], lsrc_space);
+ }
+
+ /* Reinitialize start[1] and block[1] to build the second set of mappings. */
+ start[1] = 0;
+ block[1] = n;
+ /*
+ * Build the mappings for B, D and F source datasets.
+ * Unlimited hyperslab selection is the same in the source datasets.
+ * Unlimited hyperslab selections in the virtual dataset have different offsets.
+ */
+ status = H5Sselect_hyperslab(nsrc_space, H5S_SELECT_SET, start, NULL, count, block);
+ for (i = 0; i < 3; i++) {
+ start[1] = (hsize_t)(l + (l + n) * i);
+ status = H5Sselect_hyperslab(space, H5S_SELECT_SET, start, NULL, count, block);
+ status = H5Pset_virtual(dcpl, space, SRC_FILE[2 * i + 1], SRC_DATASET[2 * i + 1], nsrc_space);
+ }
+
+ /* Create a virtual dataset */
+ dset = H5Dcreate2(file, DATASET, H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT);
+ status = H5Sclose(space);
+ status = H5Sclose(nsrc_space);
+ status = H5Sclose(lsrc_space);
+ status = H5Dclose(dset);
+ status = H5Fclose(file);
+
+ /*
+ * Now we begin the read section of this example.
+ */
+
+ /*
+ * Open file and dataset using the default properties.
+ */
+ file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT);
+ dset = H5Dopen2(file, DATASET, H5P_DEFAULT);
+
+ /*
+ * Get creation property list and mapping properties.
+ */
+ dcpl = H5Dget_create_plist(dset);
+
+ /*
+ * Get storage layout.
+ */
+ layout = H5Pget_layout(dcpl);
+ if (H5D_VIRTUAL == layout)
+ printf(" Dataset has a virtual layout \n");
+ else
+ printf("Wrong layout found \n");
+
+ /*
+ * Find the number of mappings.
+ */
+ status = H5Pget_virtual_count(dcpl, &num_map);
+ printf(" Number of mappings is %lu\n", (unsigned long)num_map);
+
+ /*
+ * Get mapping parameters for each mapping.
+ */
+ for (i = 0; i < (int)num_map; i++) {
+ printf(" Mapping %d \n", i);
+ printf(" Selection in the virtual dataset \n");
+ /* Get selection in the virtual dataset */
+ vspace = H5Pget_virtual_vspace(dcpl, (size_t)i);
+
+ /* Make sure that this is a hyperslab selection and then print information. */
+ if (H5Sget_select_type(vspace) == H5S_SEL_HYPERSLABS) {
+ if (H5Sis_regular_hyperslab(vspace)) {
+ status = H5Sget_regular_hyperslab(vspace, start_out, stride_out, count_out, block_out);
+ printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0],
+ (unsigned long long)start_out[1], (unsigned long long)start_out[2]);
+ printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0],
+ (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]);
+ printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0],
+ (unsigned long long)count_out[1], (unsigned long long)count_out[2]);
+ printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0],
+ (unsigned long long)block_out[1], (unsigned long long)block_out[2]);
+ }
+ }
+ /* Get source file name */
+ len = H5Pget_virtual_filename(dcpl, (size_t)i, NULL, 0);
+ filename = (char *)malloc((size_t)len * sizeof(char) + 1);
+ H5Pget_virtual_filename(dcpl, (size_t)i, filename, len + 1);
+ printf(" Source filename %s\n", filename);
+
+ /* Get source dataset name */
+ len = H5Pget_virtual_dsetname(dcpl, (size_t)i, NULL, 0);
+ dsetname = (char *)malloc((size_t)len * sizeof(char) + 1);
+ H5Pget_virtual_dsetname(dcpl, (size_t)i, dsetname, len + 1);
+ printf(" Source dataset name %s\n", dsetname);
+
+ /* Get selection in the source dataset */
+ printf(" Selection in the source dataset \n");
+ src_space = H5Pget_virtual_srcspace(dcpl, (size_t)i);
+ if (H5Sget_select_type(src_space) == H5S_SEL_HYPERSLABS) {
+ if (H5Sis_regular_hyperslab(vspace)) {
+ status = H5Sget_regular_hyperslab(src_space, start_out, stride_out, count_out, block_out);
+ printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0],
+ (unsigned long long)start_out[1], (unsigned long long)start_out[2]);
+ printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0],
+ (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]);
+ printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0],
+ (unsigned long long)count_out[1], (unsigned long long)count_out[2]);
+ printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0],
+ (unsigned long long)block_out[1], (unsigned long long)block_out[2]);
+ }
+ }
+ H5Sclose(vspace);
+ H5Sclose(src_space);
+ free(filename);
+ free(dsetname);
+ }
+
+ /*
+ * Read the data using the default properties.
+ */
+ status = H5Dread(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata[0]);
+
+ /*
+ * Output the data to the screen.
+ */
+ printf(" VDS Data:\n");
+ for (i = 0; i < VDSDIM0; i++) {
+ printf(" [");
+ for (j = 0; j < VDSDIM1; j++) {
+ printf(" [");
+ for (k = 0; k < VDSDIM1; k++)
+ printf(" %3d", rdata[i][j][k]);
+ printf("]");
+ }
+ printf("]\n");
+ }
+
+ /*
+ * Close and release resources.
+ */
+ status = H5Pclose(dcpl);
+ status = H5Dclose(dset);
+ status = H5Fclose(file);
+
+ return 0;
+}
diff --git a/HDF5Examples/C/H5VDS/h5ex_vds-exclim.c b/HDF5Examples/C/H5VDS/h5ex_vds-exclim.c
new file mode 100644
index 0000000..6bebe76
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/h5ex_vds-exclim.c
@@ -0,0 +1,239 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/************************************************************
+
+ This example illustrates the concept of the virtual dataset.
+ Excalibur use case with k=2 and m=3 and only 3 planes in
+ Z-direction (i.e., not unlimited).
+ This file is intended for use with HDF5 Library version 1.10
+
+ ************************************************************/
+
+#include "hdf5.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+#define FILE "h5ex_vds-exclim.h5"
+#define DATASET "VDS-Excaliburlim"
+#define VDSDIM0 3
+#define VDSDIM1 15
+#define VDSDIM2 6
+#define LDIM0 3
+#define LDIM1 2
+#define LDIM2 6
+#define NDIM0 3
+#define NDIM1 3
+#define NDIM2 6
+#define RANK 3
+
+const char *SRC_FILE[] = {"ael.h5", "bel.h5", "cel.h5", "del.h5", "eel.h5", "fel.h5"};
+
+const char *SRC_DATASET[] = {"A", "B", "C", "D", "E", "F"};
+
+int
+main(void)
+{
+ hid_t file = H5I_INVALID_HID;
+ hid_t space = H5I_INVALID_HID;
+ hid_t dset = H5I_INVALID_HID;
+ hid_t src_space = H5I_INVALID_HID;
+ hid_t lsrc_space = H5I_INVALID_HID;
+ hid_t nsrc_space = H5I_INVALID_HID;
+ hid_t vspace = H5I_INVALID_HID;
+ hid_t dcpl = H5I_INVALID_HID;
+ herr_t status;
+ hsize_t vdsdims[3] = {VDSDIM0, VDSDIM1, VDSDIM2};
+ hsize_t ldims[3] = {LDIM0, LDIM1, LDIM2};
+ hsize_t ndims[3] = {NDIM0, NDIM1, NDIM2};
+ hsize_t start[3], count[3], block[3]; /* Hyperslab parameters */
+ hsize_t start_out[3], stride_out[3], count_out[3], block_out[3];
+ int rdata[VDSDIM0][VDSDIM1][VDSDIM2]; /* Read buffer for virtual dataset */
+ int l = 2;
+ int n = 3;
+ int i, j, k;
+ H5D_layout_t layout; /* Storage layout */
+ size_t num_map; /* Number of mappings */
+ ssize_t len; /* Length of the string; also a return value */
+ char *filename = NULL;
+ char *dsetname = NULL;
+
+ file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Create VDS dataspace. */
+ space = H5Screate_simple(RANK, vdsdims, NULL);
+ /* Create dataspaces for A, C, and E datasets. */
+ lsrc_space = H5Screate_simple(RANK, ldims, NULL);
+ /* Create dataspaces for B, D, and F datasets. */
+ nsrc_space = H5Screate_simple(RANK, ndims, NULL);
+
+ /* Create VDS creation property */
+ dcpl = H5Pcreate(H5P_DATASET_CREATE);
+
+ /* Initialize hyperslab values */
+
+ start[0] = 0;
+ start[1] = 0;
+ start[2] = 0;
+ count[0] = VDSDIM0;
+ count[1] = 1;
+ count[2] = 1;
+ block[0] = 1;
+ block[1] = l;
+ block[2] = VDSDIM2;
+
+ /*
+ * Build the mappings for A, C and E source datasets.
+ */
+ status = H5Sselect_hyperslab(lsrc_space, H5S_SELECT_SET, start, NULL, count, block);
+ for (i = 0; i < 3; i++) {
+ start[1] = (hsize_t)((l + n) * i);
+ status = H5Sselect_hyperslab(space, H5S_SELECT_SET, start, NULL, count, block);
+ status = H5Pset_virtual(dcpl, space, SRC_FILE[2 * i], SRC_DATASET[2 * i], lsrc_space);
+ }
+
+ /* Reinitialize start[0] and block[1] */
+ start[0] = 0;
+ block[1] = n;
+ /*
+ * Build the mappings for B, D and F source datasets.
+ */
+ status = H5Sselect_hyperslab(nsrc_space, H5S_SELECT_SET, start, NULL, count, block);
+ for (i = 0; i < 3; i++) {
+ start[1] = (hsize_t)(l + (l + n) * i);
+ status = H5Sselect_hyperslab(space, H5S_SELECT_SET, start, NULL, count, block);
+ status = H5Pset_virtual(dcpl, space, SRC_FILE[2 * i + 1], SRC_DATASET[2 * i + 1], nsrc_space);
+ }
+
+ /* Create a virtual dataset */
+ dset = H5Dcreate2(file, DATASET, H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT);
+ status = H5Sclose(space);
+ status = H5Sclose(nsrc_space);
+ status = H5Sclose(lsrc_space);
+ status = H5Dclose(dset);
+ status = H5Fclose(file);
+
+ /*
+ * Now we begin the read section of this example.
+ */
+
+ /*
+ * Open file and dataset using the default properties.
+ */
+ file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT);
+ dset = H5Dopen2(file, DATASET, H5P_DEFAULT);
+
+ /*
+ * Get creation property list and mapping properties.
+ */
+ dcpl = H5Dget_create_plist(dset);
+
+ /*
+ * Get storage layout.
+ */
+ layout = H5Pget_layout(dcpl);
+ if (H5D_VIRTUAL == layout)
+ printf(" Dataset has a virtual layout \n");
+ else
+ printf("Wrong layout found \n");
+
+ /*
+ * Find the number of mappings.
+ */
+ status = H5Pget_virtual_count(dcpl, &num_map);
+ printf(" Number of mappings is %lu\n", (unsigned long)num_map);
+
+ /*
+ * Get mapping parameters for each mapping.
+ */
+ for (i = 0; i < (int)num_map; i++) {
+ printf(" Mapping %d \n", i);
+ printf(" Selection in the virtual dataset \n");
+ /* Get selection in the virtual dataset */
+ vspace = H5Pget_virtual_vspace(dcpl, (size_t)i);
+
+ /* Make sure that this is a hyperslab selection and then print information. */
+ if (H5Sget_select_type(vspace) == H5S_SEL_HYPERSLABS) {
+ if (H5Sis_regular_hyperslab(vspace)) {
+ status = H5Sget_regular_hyperslab(vspace, start_out, stride_out, count_out, block_out);
+ printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0],
+ (unsigned long long)start_out[1], (unsigned long long)start_out[2]);
+ printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0],
+ (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]);
+ printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0],
+ (unsigned long long)count_out[1], (unsigned long long)count_out[2]);
+ printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0],
+ (unsigned long long)block_out[1], (unsigned long long)block_out[2]);
+ }
+ }
+ /* Get source file name */
+ len = H5Pget_virtual_filename(dcpl, (size_t)i, NULL, 0);
+ filename = (char *)malloc((size_t)len * sizeof(char) + 1);
+ H5Pget_virtual_filename(dcpl, (size_t)i, filename, len + 1);
+ printf(" Source filename %s\n", filename);
+
+ /* Get source dataset name */
+ len = H5Pget_virtual_dsetname(dcpl, (size_t)i, NULL, 0);
+ dsetname = (char *)malloc((size_t)len * sizeof(char) + 1);
+ H5Pget_virtual_dsetname(dcpl, (size_t)i, dsetname, len + 1);
+ printf(" Source dataset name %s\n", dsetname);
+
+ /* Get selection in the source dataset */
+ printf(" Selection in the source dataset \n");
+ src_space = H5Pget_virtual_srcspace(dcpl, (size_t)i);
+ if (H5Sget_select_type(src_space) == H5S_SEL_HYPERSLABS) {
+ if (H5Sis_regular_hyperslab(vspace)) {
+ status = H5Sget_regular_hyperslab(vspace, start_out, stride_out, count_out, block_out);
+ printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0],
+ (unsigned long long)start_out[1], (unsigned long long)start_out[2]);
+ printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0],
+ (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]);
+ printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0],
+ (unsigned long long)count_out[1], (unsigned long long)count_out[2]);
+ printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0],
+ (unsigned long long)block_out[1], (unsigned long long)block_out[2]);
+ }
+ }
+ H5Sclose(vspace);
+ H5Sclose(src_space);
+ free(filename);
+ free(dsetname);
+ }
+
+ /*
+ * Read the data using the default properties.
+ */
+ status = H5Dread(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata[0]);
+
+ /*
+ * Output the data to the screen.
+ */
+ printf(" VDS Data:\n");
+ for (i = 0; i < VDSDIM0; i++) {
+ printf(" [");
+ for (j = 0; j < VDSDIM1; j++) {
+ printf(" [");
+ for (k = 0; k < VDSDIM1; k++)
+ printf(" %3d", rdata[i][j][k]);
+ printf("]");
+ }
+ printf("]\n");
+ }
+
+ /*
+ * Close and release resources.
+ */
+ status = H5Pclose(dcpl);
+ status = H5Dclose(dset);
+ status = H5Fclose(file);
+
+ return 0;
+}
diff --git a/HDF5Examples/C/H5VDS/h5ex_vds-percival-unlim-maxmin.c b/HDF5Examples/C/H5VDS/h5ex_vds-percival-unlim-maxmin.c
new file mode 100644
index 0000000..8ef996a
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/h5ex_vds-percival-unlim-maxmin.c
@@ -0,0 +1,358 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/************************************************************
+
+ This example illustrates the concept of the virtual dataset.
+ Percival use case. Every fifth 10x10 plane in VDS is stored in
+ the corresponding 3D unlimited dataset.
+ There are 4 source datasets total.
+ Each of the source datasets is extended to different sizes.
+ VDS access property can be used to get max and min extent.
+ This file is intended for use with HDF5 Library version 1.10
+
+ ************************************************************/
+
+#include "hdf5.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+#define VFILE "h5ex_vds-percival-unlim-maxmin.h5"
+#define DATASET "VDS-Percival-unlim-maxmin"
+#define VDSDIM0 H5S_UNLIMITED
+#define VDSDIM1 10
+#define VDSDIM2 10
+
+#define DIM0 H5S_UNLIMITED
+#define DIM0_1 4 /* Initial size of the source datasets */
+#define DIM1 10
+#define DIM2 10
+#define RANK 3
+#define PLANE_STRIDE 4
+
+const char *SRC_FILE[] = {"apum.h5", "bpum.h5", "cpum.h5", "dpum.h5"};
+
+const char *SRC_DATASET[] = {"A", "B", "C", "D"};
+
+int
+main(void)
+{
+ hid_t file = H5I_INVALID_HID;
+ hid_t vfile = H5I_INVALID_HID;
+ hid_t space = H5I_INVALID_HID;
+ hid_t dset = H5I_INVALID_HID;
+ hid_t vdset = H5I_INVALID_HID;
+ hid_t src_space = H5I_INVALID_HID;
+ hid_t mem_space = H5I_INVALID_HID;
+ hid_t vspace = H5I_INVALID_HID;
+ hid_t dcpl = H5I_INVALID_HID;
+ hid_t dapl = H5I_INVALID_HID;
+ herr_t status;
+ hsize_t vdsdims[3] = {4 * DIM0_1, VDSDIM1, VDSDIM2};
+ hsize_t vdsdims_max[3] = {VDSDIM0, VDSDIM1, VDSDIM2};
+ hsize_t dims[3] = {DIM0_1, DIM1, DIM2};
+ hsize_t memdims[3] = {DIM0_1, DIM1, DIM2};
+ hsize_t extdims[3] = {0, DIM1, DIM2}; /* Dimensions of the extended source datasets */
+ hsize_t chunk_dims[3] = {DIM0_1, DIM1, DIM2};
+ hsize_t dims_max[3] = {DIM0, DIM1, DIM2};
+ hsize_t vdsdims_out[3];
+ hsize_t vdsdims_max_out[3], start[3], stride[3], count[3], src_count[3],
+ block[3]; /* Hyperslab parameters */
+ hsize_t start_out[3], stride_out[3], count_out[3], block_out[3]; /* Hyperslab parameter out */
+ int wdata[DIM0_1 * DIM1 * DIM2];
+ int rdata[8 * DIM0_1][VDSDIM1][VDSDIM2]; /* Read buffer for virtual dataset */
+ int i, j, k;
+ H5D_layout_t layout; /* Storage layout */
+ size_t num_map; /* Number of mappings */
+ ssize_t len; /* Length of the string; also a return value */
+ char *filename = NULL;
+ char *dsetname = NULL;
+
+ /*
+ * Create source files and datasets. This step is optional.
+ */
+ for (i = 0; i < PLANE_STRIDE; i++) {
+ /*
+ * Initialize data for i-th source dataset.
+ */
+ for (j = 0; j < DIM0_1 * DIM1 * DIM2; j++)
+ wdata[j] = i + 1;
+
+ /*
+ * Create the source files and datasets. Write data to each dataset and
+ * close all resources.
+ */
+
+ file = H5Fcreate(SRC_FILE[i], H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+ src_space = H5Screate_simple(RANK, dims, dims_max);
+ dcpl = H5Pcreate(H5P_DATASET_CREATE);
+ status = H5Pset_chunk(dcpl, RANK, chunk_dims);
+ dset = H5Dcreate2(file, SRC_DATASET[i], H5T_NATIVE_INT, src_space, H5P_DEFAULT, dcpl, H5P_DEFAULT);
+ status = H5Dwrite(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata);
+ status = H5Sclose(src_space);
+ status = H5Pclose(dcpl);
+ status = H5Dclose(dset);
+ status = H5Fclose(file);
+ }
+
+ vfile = H5Fcreate(VFILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Create VDS dataspace. */
+ vspace = H5Screate_simple(RANK, vdsdims, vdsdims_max);
+
+ /* Create dataspaces for the source dataset. */
+ src_space = H5Screate_simple(RANK, dims, dims_max);
+
+ /* Create VDS creation property */
+ dcpl = H5Pcreate(H5P_DATASET_CREATE);
+
+ /* Initialize hyperslab values */
+
+ start[0] = 0;
+ start[1] = 0;
+ start[2] = 0;
+ stride[0] = PLANE_STRIDE; /* we will select every fifth plane in VDS */
+ stride[1] = 1;
+ stride[2] = 1;
+ count[0] = H5S_UNLIMITED;
+ count[1] = 1;
+ count[2] = 1;
+ src_count[0] = H5S_UNLIMITED;
+ src_count[1] = 1;
+ src_count[2] = 1;
+ block[0] = 1;
+ block[1] = DIM1;
+ block[2] = DIM2;
+
+ /*
+ * Build the mappings
+ */
+ status = H5Sselect_hyperslab(src_space, H5S_SELECT_SET, start, NULL, src_count, block);
+ for (i = 0; i < PLANE_STRIDE; i++) {
+ status = H5Sselect_hyperslab(vspace, H5S_SELECT_SET, start, stride, count, block);
+ status = H5Pset_virtual(dcpl, vspace, SRC_FILE[i], SRC_DATASET[i], src_space);
+ start[0]++;
+ }
+
+ H5Sselect_none(vspace);
+
+ /* Create a virtual dataset */
+ vdset = H5Dcreate2(vfile, DATASET, H5T_NATIVE_INT, vspace, H5P_DEFAULT, dcpl, H5P_DEFAULT);
+ status = H5Sclose(vspace);
+ status = H5Sclose(src_space);
+ status = H5Pclose(dcpl);
+
+ /* Let's add data to the source datasets and check new dimensions for VDS */
+ /* We will add only one plane to the first source dataset, two planes to the
+ second one, three to the third, and four to the forth. */
+
+ /* Let's add data to the source datasets and check new dimensions for VDS */
+ for (i = 0; i < PLANE_STRIDE; i++) {
+ /*
+ * Initialize data for i-th source dataset.
+ */
+ for (j = 0; j < (i + 1) * DIM1 * DIM2; j++)
+ wdata[j] = 10 * (i + 1);
+
+ /*
+ * Open the source files and datasets. Append data to each dataset and
+ * close all resources.
+ */
+
+ file = H5Fopen(SRC_FILE[i], H5F_ACC_RDWR, H5P_DEFAULT);
+ dset = H5Dopen2(file, SRC_DATASET[i], H5P_DEFAULT);
+ extdims[0] = DIM0_1 + i + 1;
+ status = H5Dset_extent(dset, extdims);
+ src_space = H5Dget_space(dset);
+ start[0] = DIM0_1;
+ start[1] = 0;
+ start[2] = 0;
+ count[0] = 1;
+ count[1] = 1;
+ count[2] = 1;
+ block[0] = i + 1;
+ block[1] = DIM1;
+ block[2] = DIM2;
+
+ memdims[0] = i + 1;
+ mem_space = H5Screate_simple(RANK, memdims, NULL);
+ status = H5Sselect_hyperslab(src_space, H5S_SELECT_SET, start, NULL, count, block);
+ status = H5Dwrite(dset, H5T_NATIVE_INT, mem_space, src_space, H5P_DEFAULT, wdata);
+ status = H5Sclose(src_space);
+ status = H5Dclose(dset);
+ status = H5Fclose(file);
+ }
+
+ status = H5Dclose(vdset);
+ status = H5Fclose(vfile);
+
+ /*
+ * Now we begin the read section of this example.
+ */
+
+ /*
+ * Open file and dataset using the default properties.
+ */
+ vfile = H5Fopen(VFILE, H5F_ACC_RDONLY, H5P_DEFAULT);
+
+ /*
+ * Open VDS using different access properties to use max or
+ * min extents depending on the sizes of the underlying datasets
+ */
+ dapl = H5Pcreate(H5P_DATASET_ACCESS);
+
+ for (i = 0; i < 2; i++) {
+ status = H5Pset_virtual_view(dapl, i ? H5D_VDS_LAST_AVAILABLE : H5D_VDS_FIRST_MISSING);
+ vdset = H5Dopen2(vfile, DATASET, dapl);
+
+ /* Let's get space of the VDS and its dimension; we should get 32(or 20)x10x10 */
+ vspace = H5Dget_space(vdset);
+ H5Sget_simple_extent_dims(vspace, vdsdims_out, vdsdims_max_out);
+ printf("VDS dimensions, bounds = H5D_VDS_%s: ", i ? "LAST_AVAILABLE" : "FIRST_MISSING");
+ for (j = 0; j < RANK; j++)
+ printf(" %d ", (int)vdsdims_out[j]);
+ printf("\n");
+
+ /* Close */
+ status = H5Dclose(vdset);
+ status = H5Sclose(vspace);
+ }
+
+ status = H5Pclose(dapl);
+
+ vdset = H5Dopen2(vfile, DATASET, H5P_DEFAULT);
+
+ /*
+ * Get creation property list and mapping properties.
+ */
+ dcpl = H5Dget_create_plist(vdset);
+
+ /*
+ * Get storage layout.
+ */
+ layout = H5Pget_layout(dcpl);
+ if (H5D_VIRTUAL == layout)
+ printf(" Dataset has a virtual layout \n");
+ else
+ printf("Wrong layout found \n");
+
+ /*
+ * Find the number of mappings.
+ */
+ status = H5Pget_virtual_count(dcpl, &num_map);
+ printf(" Number of mappings is %lu\n", (unsigned long)num_map);
+
+ /*
+ * Get mapping parameters for each mapping.
+ */
+ for (i = 0; i < (int)num_map; i++) {
+ printf(" Mapping %d \n", i);
+ printf(" Selection in the virtual dataset \n");
+ /* Get selection in the virtual dataset */
+ vspace = H5Pget_virtual_vspace(dcpl, (size_t)i);
+
+ /* Make sure that this is a hyperslab selection and then print information. */
+ if (H5Sget_select_type(vspace) == H5S_SEL_HYPERSLABS) {
+ if (H5Sis_regular_hyperslab(vspace)) {
+ status = H5Sget_regular_hyperslab(vspace, start_out, stride_out, count_out, block_out);
+ printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0],
+ (unsigned long long)start_out[1], (unsigned long long)start_out[2]);
+ printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0],
+ (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]);
+ printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0],
+ (unsigned long long)count_out[1], (unsigned long long)count_out[2]);
+ printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0],
+ (unsigned long long)block_out[1], (unsigned long long)block_out[2]);
+ }
+ }
+ /* Get source file name */
+ len = H5Pget_virtual_filename(dcpl, (size_t)i, NULL, 0);
+ filename = (char *)malloc((size_t)len * sizeof(char) + 1);
+ H5Pget_virtual_filename(dcpl, (size_t)i, filename, len + 1);
+ printf(" Source filename %s\n", filename);
+
+ /* Get source dataset name */
+ len = H5Pget_virtual_dsetname(dcpl, (size_t)i, NULL, 0);
+ dsetname = (char *)malloc((size_t)len * sizeof(char) + 1);
+ H5Pget_virtual_dsetname(dcpl, (size_t)i, dsetname, len + 1);
+ printf(" Source dataset name %s\n", dsetname);
+
+ /* Get selection in the source dataset */
+ printf(" Selection in the source dataset \n");
+ src_space = H5Pget_virtual_srcspace(dcpl, (size_t)i);
+ if (H5Sget_select_type(src_space) == H5S_SEL_HYPERSLABS) {
+ if (H5Sis_regular_hyperslab(src_space)) {
+ status = H5Sget_regular_hyperslab(src_space, start_out, stride_out, count_out, block_out);
+ printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0],
+ (unsigned long long)start_out[1], (unsigned long long)start_out[2]);
+ printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0],
+ (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]);
+ printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0],
+ (unsigned long long)count_out[1], (unsigned long long)count_out[2]);
+ printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0],
+ (unsigned long long)block_out[1], (unsigned long long)block_out[2]);
+ }
+ }
+ H5Sclose(vspace);
+ H5Sclose(src_space);
+ free(filename);
+ free(dsetname);
+ }
+
+ /*
+ * Read data from VDS.
+ */
+ vspace = H5Dget_space(vdset);
+ H5Sget_simple_extent_dims(vspace, vdsdims_out, vdsdims_max_out);
+ printf("VDS dimensions second time \n");
+ printf(" Current: ");
+ for (i = 0; i < RANK; i++)
+ printf(" %d ", (int)vdsdims_out[i]);
+ printf("\n");
+
+ /* Read all VDS data */
+
+ /* We should be able to do it by using H5S_ALL instead of making selection
+ * or using H5Sselect_all from vspace.
+ */
+ start[0] = 0;
+ start[1] = 0;
+ start[2] = 0;
+ count[0] = 1;
+ count[1] = 1;
+ count[2] = 1;
+ block[0] = vdsdims_out[0];
+ block[1] = vdsdims_out[1];
+ block[2] = vdsdims_out[2];
+
+ status = H5Sselect_hyperslab(vspace, H5S_SELECT_SET, start, NULL, count, block);
+ mem_space = H5Screate_simple(RANK, vdsdims_out, NULL);
+ status = H5Dread(vdset, H5T_NATIVE_INT, mem_space, vspace, H5P_DEFAULT, rdata);
+ printf(" All data: \n");
+ for (i = 0; i < (int)vdsdims_out[0]; i++) {
+ for (j = 0; j < (int)vdsdims_out[1]; j++) {
+ printf("(%d, %d, 0)", i, j);
+ for (k = 0; k < (int)vdsdims_out[2]; k++)
+ printf(" %d ", rdata[i][j][k]);
+ printf("\n");
+ }
+ }
+
+ /*
+ * Close and release resources.
+ */
+ status = H5Sclose(mem_space);
+ status = H5Pclose(dcpl);
+ status = H5Dclose(vdset);
+ status = H5Fclose(vfile);
+
+ return 0;
+}
diff --git a/HDF5Examples/C/H5VDS/h5ex_vds-percival-unlim.c b/HDF5Examples/C/H5VDS/h5ex_vds-percival-unlim.c
new file mode 100644
index 0000000..fadfb79
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/h5ex_vds-percival-unlim.c
@@ -0,0 +1,357 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/************************************************************
+
+ This example illustrates the concept of the virtual dataset.
+ Percival use case. Every fifth 10x10 plane in VDS is stored in
+ the corresponding 3D unlimited dataset.
+ There are 4 source datasets total.
+ This file is intended for use with HDF5 Library version 1.10
+
+ ************************************************************/
+
+#include "hdf5.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+#define VFILE "h5ex_vds-percival-unlim.h5"
+#define DATASET "VDS-Percival-unlim"
+#define VDSDIM0 H5S_UNLIMITED
+#define VDSDIM1 10
+#define VDSDIM2 10
+
+#define DIM0 H5S_UNLIMITED
+#define DIM0_1 10 /* Initial size of the datasets */
+#define DIM1 10
+#define DIM2 10
+#define RANK 3
+#define PLANE_STRIDE 4
+
+const char *SRC_FILE[] = {"apu.h5", "bpu.h5", "cpu.h5", "dpu.h5"};
+
+const char *SRC_DATASET[] = {"A", "B", "C", "D"};
+
+int
+main(void)
+{
+ hid_t file = H5I_INVALID_HID;
+ hid_t vfile = H5I_INVALID_HID;
+ hid_t space = H5I_INVALID_HID;
+ hid_t dset = H5I_INVALID_HID;
+ hid_t vdset = H5I_INVALID_HID;
+ hid_t src_space = H5I_INVALID_HID;
+ hid_t mem_space = H5I_INVALID_HID;
+ hid_t vspace = H5I_INVALID_HID;
+ hid_t dcpl = H5I_INVALID_HID;
+ herr_t status;
+ hsize_t vdsdims[3] = {4 * DIM0_1, VDSDIM1, VDSDIM2};
+ hsize_t vdsdims_max[3] = {VDSDIM0, VDSDIM1, VDSDIM2};
+ hsize_t dims[3] = {DIM0_1, DIM1, DIM2};
+ hsize_t extdims[3] = {2 * DIM0_1, DIM1, DIM2};
+ hsize_t chunk_dims[3] = {DIM0_1, DIM1, DIM2};
+ hsize_t dims_max[3] = {DIM0, DIM1, DIM2};
+ hsize_t vdsdims_out[3];
+ hsize_t vdsdims_max_out[3], start[3], stride[3], count[3], src_count[3],
+ block[3]; /* Hyperslab parameters */
+ hsize_t start_out[3], stride_out[3], count_out[3], block_out[3]; /* Hyperslab parameter out */
+ int wdata[DIM0_1 * DIM1 * DIM2];
+ int rdata[8 * DIM0_1][VDSDIM1][VDSDIM2];
+ int a_rdata[2 * DIM0_1][VDSDIM1][VDSDIM2];
+ int i, j, k;
+ H5D_layout_t layout; /* Storage layout */
+ size_t num_map; /* Number of mappings */
+ ssize_t len; /* Length of the string; also a return value */
+ char *filename = NULL;
+ char *dsetname = NULL;
+
+ /*
+ * Create source files and datasets. This step is optional.
+ */
+ for (i = 0; i < PLANE_STRIDE; i++) {
+ /*
+ * Initialize data for i-th source dataset.
+ */
+ for (j = 0; j < DIM0_1 * DIM1 * DIM2; j++)
+ wdata[j] = i + 1;
+
+ /*
+ * Create the source files and datasets. Write data to each dataset and
+ * close all resources.
+ */
+
+ file = H5Fcreate(SRC_FILE[i], H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+ src_space = H5Screate_simple(RANK, dims, dims_max);
+ dcpl = H5Pcreate(H5P_DATASET_CREATE);
+ status = H5Pset_chunk(dcpl, RANK, chunk_dims);
+ dset = H5Dcreate2(file, SRC_DATASET[i], H5T_NATIVE_INT, src_space, H5P_DEFAULT, dcpl, H5P_DEFAULT);
+ status = H5Dwrite(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata);
+ status = H5Sclose(src_space);
+ status = H5Pclose(dcpl);
+ status = H5Dclose(dset);
+ status = H5Fclose(file);
+ }
+
+ vfile = H5Fcreate(VFILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Create VDS dataspace. */
+ vspace = H5Screate_simple(RANK, vdsdims, vdsdims_max);
+
+ /* Create dataspaces for the source dataset. */
+ src_space = H5Screate_simple(RANK, dims, dims_max);
+
+ /* Create VDS creation property */
+ dcpl = H5Pcreate(H5P_DATASET_CREATE);
+
+ /* Initialize hyperslab values */
+
+ start[0] = 0;
+ start[1] = 0;
+ start[2] = 0;
+ stride[0] = PLANE_STRIDE; /* we will select every fifth plane in VDS */
+ stride[1] = 1;
+ stride[2] = 1;
+ count[0] = H5S_UNLIMITED;
+ count[1] = 1;
+ count[2] = 1;
+ src_count[0] = H5S_UNLIMITED;
+ src_count[1] = 1;
+ src_count[2] = 1;
+ block[0] = 1;
+ block[1] = DIM1;
+ block[2] = DIM2;
+
+ /*
+ * Build the mappings
+ */
+ status = H5Sselect_hyperslab(src_space, H5S_SELECT_SET, start, NULL, src_count, block);
+ for (i = 0; i < PLANE_STRIDE; i++) {
+ status = H5Sselect_hyperslab(vspace, H5S_SELECT_SET, start, stride, count, block);
+ status = H5Pset_virtual(dcpl, vspace, SRC_FILE[i], SRC_DATASET[i], src_space);
+ start[0]++;
+ }
+
+ H5Sselect_none(vspace);
+
+ /* Create a virtual dataset */
+ vdset = H5Dcreate2(vfile, DATASET, H5T_NATIVE_INT, vspace, H5P_DEFAULT, dcpl, H5P_DEFAULT);
+ status = H5Sclose(vspace);
+ status = H5Sclose(src_space);
+ status = H5Pclose(dcpl);
+
+ /* Let's get space of the VDS and its dimension; we should get 40x10x10 */
+ vspace = H5Dget_space(vdset);
+ H5Sget_simple_extent_dims(vspace, vdsdims_out, vdsdims_max_out);
+ printf("VDS dimensions first time \n");
+ printf(" Current: ");
+ for (i = 0; i < RANK; i++)
+ printf(" %d ", (int)vdsdims_out[i]);
+ printf("\n");
+
+ /* Let's add data to the source datasets and check new dimensions for VDS */
+ for (i = 0; i < PLANE_STRIDE; i++) {
+ /*
+ * Initialize data for i-th source dataset.
+ */
+ for (j = 0; j < DIM0_1 * DIM1 * DIM2; j++)
+ wdata[j] = 10 * (i + 1);
+
+ /*
+ * Create the source files and datasets. Write data to each dataset and
+ * close all resources.
+ */
+ file = H5Fopen(SRC_FILE[i], H5F_ACC_RDWR, H5P_DEFAULT);
+ dset = H5Dopen2(file, SRC_DATASET[i], H5P_DEFAULT);
+ status = H5Dset_extent(dset, extdims);
+ src_space = H5Dget_space(dset);
+ start[0] = DIM0_1;
+ start[1] = 0;
+ start[2] = 0;
+ count[0] = 1;
+ count[1] = 1;
+ count[2] = 1;
+ block[0] = DIM0_1;
+ block[1] = DIM1;
+ block[2] = DIM2;
+
+ mem_space = H5Screate_simple(RANK, dims, NULL);
+ status = H5Sselect_hyperslab(src_space, H5S_SELECT_SET, start, NULL, count, block);
+ status = H5Dwrite(dset, H5T_NATIVE_INT, mem_space, src_space, H5P_DEFAULT, wdata);
+ status = H5Sclose(src_space);
+ status = H5Dclose(dset);
+ status = H5Fclose(file);
+ }
+
+ status = H5Dclose(vdset);
+ status = H5Fclose(vfile);
+
+ /*
+ * Now we begin the read section of this example.
+ */
+
+ /*
+ * Open file and dataset using the default properties.
+ */
+ vfile = H5Fopen(VFILE, H5F_ACC_RDONLY, H5P_DEFAULT);
+ vdset = H5Dopen2(vfile, DATASET, H5P_DEFAULT);
+
+ /*
+ * Get creation property list and mapping properties.
+ */
+ dcpl = H5Dget_create_plist(vdset);
+
+ /*
+ * Get storage layout.
+ */
+ layout = H5Pget_layout(dcpl);
+ if (H5D_VIRTUAL == layout)
+ printf(" Dataset has a virtual layout \n");
+ else
+ printf("Wrong layout found \n");
+
+ /*
+ * Find the number of mappings.
+ */
+ status = H5Pget_virtual_count(dcpl, &num_map);
+ printf(" Number of mappings is %lu\n", (unsigned long)num_map);
+
+ /*
+ * Get mapping parameters for each mapping.
+ */
+ for (i = 0; i < (int)num_map; i++) {
+ printf(" Mapping %d \n", i);
+ printf(" Selection in the virtual dataset \n");
+ /* Get selection in the virtual dataset */
+ vspace = H5Pget_virtual_vspace(dcpl, (size_t)i);
+
+ /* Make sure that this is a hyperslab selection and then print information. */
+ if (H5Sget_select_type(vspace) == H5S_SEL_HYPERSLABS) {
+ if (H5Sis_regular_hyperslab(vspace)) {
+ status = H5Sget_regular_hyperslab(vspace, start_out, stride_out, count_out, block_out);
+ printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0],
+ (unsigned long long)start_out[1], (unsigned long long)start_out[2]);
+ printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0],
+ (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]);
+ printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0],
+ (unsigned long long)count_out[1], (unsigned long long)count_out[2]);
+ printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0],
+ (unsigned long long)block_out[1], (unsigned long long)block_out[2]);
+ }
+ }
+ /* Get source file name */
+ len = H5Pget_virtual_filename(dcpl, (size_t)i, NULL, 0);
+ filename = (char *)malloc((size_t)len * sizeof(char) + 1);
+ H5Pget_virtual_filename(dcpl, (size_t)i, filename, len + 1);
+ printf(" Source filename %s\n", filename);
+
+ /* Get source dataset name */
+ len = H5Pget_virtual_dsetname(dcpl, (size_t)i, NULL, 0);
+ dsetname = (char *)malloc((size_t)len * sizeof(char) + 1);
+ H5Pget_virtual_dsetname(dcpl, (size_t)i, dsetname, len + 1);
+ printf(" Source dataset name %s\n", dsetname);
+
+ /* Get selection in the source dataset */
+ printf(" Selection in the source dataset \n");
+ src_space = H5Pget_virtual_srcspace(dcpl, (size_t)i);
+ if (H5Sget_select_type(src_space) == H5S_SEL_HYPERSLABS) {
+ if (H5Sis_regular_hyperslab(src_space)) {
+ status = H5Sget_regular_hyperslab(src_space, start_out, stride_out, count_out, block_out);
+ printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0],
+ (unsigned long long)start_out[1], (unsigned long long)start_out[2]);
+ printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0],
+ (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]);
+ printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0],
+ (unsigned long long)count_out[1], (unsigned long long)count_out[2]);
+ printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0],
+ (unsigned long long)block_out[1], (unsigned long long)block_out[2]);
+ }
+ }
+ H5Sclose(vspace);
+ H5Sclose(src_space);
+ free(filename);
+ free(dsetname);
+ }
+
+ /*
+ * Read data from VDS.
+ */
+ vspace = H5Dget_space(vdset);
+ H5Sget_simple_extent_dims(vspace, vdsdims_out, vdsdims_max_out);
+ printf("VDS dimensions second time \n");
+ printf(" Current: ");
+ for (i = 0; i < RANK; i++)
+ printf(" %d ", (int)vdsdims_out[i]);
+ printf("\n");
+
+ /* Read all VDS data */
+
+ /* We should be able to do it by using H5S_ALL instead of making selection
+ * or using H5Sselect_all from vspace.
+ */
+ start[0] = 0;
+ start[1] = 0;
+ start[2] = 0;
+ count[0] = 1;
+ count[1] = 1;
+ count[2] = 1;
+ block[0] = vdsdims_out[0];
+ block[1] = vdsdims_out[1];
+ block[2] = vdsdims_out[2];
+
+ status = H5Sselect_hyperslab(vspace, H5S_SELECT_SET, start, NULL, count, block);
+ mem_space = H5Screate_simple(RANK, vdsdims_out, NULL);
+ status = H5Dread(vdset, H5T_NATIVE_INT, mem_space, vspace, H5P_DEFAULT, rdata);
+ printf(" All data: \n");
+ for (i = 0; i < (int)vdsdims_out[0]; i++) {
+ for (j = 0; j < (int)vdsdims_out[1]; j++) {
+ printf("(%d, %d, 0)", i, j);
+ for (k = 0; k < (int)vdsdims_out[2]; k++)
+ printf(" %d ", rdata[i][j][k]);
+ printf("\n");
+ }
+ }
+ /* Read VDS, but only data mapped to dataset a.h5 */
+ start[0] = 0;
+ start[1] = 0;
+ start[2] = 0;
+ stride[0] = PLANE_STRIDE;
+ stride[1] = 1;
+ stride[2] = 1;
+ count[0] = 2 * DIM0_1;
+ count[1] = 1;
+ count[2] = 1;
+ block[0] = 1;
+ block[1] = vdsdims_out[1];
+ block[2] = vdsdims_out[2];
+ dims[0] = 2 * DIM0_1;
+ status = H5Sselect_hyperslab(vspace, H5S_SELECT_SET, start, stride, count, block);
+ mem_space = H5Screate_simple(RANK, dims, NULL);
+ status = H5Dread(vdset, H5T_NATIVE_INT, mem_space, vspace, H5P_DEFAULT, a_rdata);
+ printf(" All data: \n");
+ for (i = 0; i < 2 * DIM0_1; i++) {
+ for (j = 0; j < (int)vdsdims_out[1]; j++) {
+ printf("(%d, %d, 0)", i, j);
+ for (k = 0; k < (int)vdsdims_out[2]; k++)
+ printf(" %d ", a_rdata[i][j][k]);
+ printf("\n");
+ }
+ }
+
+ /*
+ * Close and release resources.
+ */
+ status = H5Sclose(mem_space);
+ status = H5Pclose(dcpl);
+ status = H5Dclose(vdset);
+ status = H5Fclose(vfile);
+
+ return 0;
+}
diff --git a/HDF5Examples/C/H5VDS/h5ex_vds-percival.c b/HDF5Examples/C/H5VDS/h5ex_vds-percival.c
new file mode 100644
index 0000000..edbef18
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/h5ex_vds-percival.c
@@ -0,0 +1,254 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/************************************************************
+
+ This example illustrates the concept of the virtual dataset.
+ Percival use case. Every fifth 10x10 plane in VDS is stored in
+ the corresponding 3D unlimited dataset.
+ There are 4 source datasets total.
+ This file is intended for use with HDF5 Library version 1.10
+
+ ************************************************************/
+
+#include "hdf5.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+#define FILE "h5ex_vds-percival.h5"
+#define DATASET "VDS-Percival"
+#define VDSDIM0 40
+#define VDSDIM1 10
+#define VDSDIM2 10
+#define DIM0 10
+#define DIM1 10
+#define DIM2 10
+#define RANK 3
+#define PLANE_STRIDE 4
+
+const char *SRC_FILE[] = {"ap.h5", "bp.h5", "cp.h5", "dp.h5"};
+
+const char *SRC_DATASET[] = {"A", "B", "C", "D"};
+
+int
+main(void)
+{
+ hid_t file = H5I_INVALID_HID;
+ hid_t space = H5I_INVALID_HID;
+ hid_t dset = H5I_INVALID_HID;
+ hid_t src_space = H5I_INVALID_HID;
+ hid_t vspace = H5I_INVALID_HID;
+ hid_t dcpl = H5I_INVALID_HID;
+ herr_t status;
+ hsize_t vdsdims[3] = {VDSDIM0, VDSDIM1, VDSDIM2};
+ hsize_t vdsdims_max[3] = {VDSDIM0, VDSDIM1, VDSDIM2};
+ hsize_t dims[3] = {DIM0, DIM1, DIM2};
+ hsize_t dims_max[3] = {DIM0, DIM1, DIM2};
+ hsize_t start[3], stride[3], count[3], src_count[3], block[3]; /* Hyperslab start parameter for VDS */
+ hsize_t start_out[3], stride_out[3], count_out[3], block_out[3]; /* Hyperslab parameter out */
+ int wdata[DIM0 * DIM1 * DIM2];
+ int rdata[VDSDIM0][VDSDIM1][VDSDIM2]; /* Read buffer for virtual dataset */
+ int i, j, k;
+ H5D_layout_t layout; /* Storage layout */
+ size_t num_map; /* Number of mappings */
+ ssize_t len; /* Length of the string; also a return value */
+ char *filename = NULL;
+ char *dsetname = NULL;
+
+ /*
+ * Create source files and datasets. This step is optional.
+ */
+ for (i = 0; i < PLANE_STRIDE; i++) {
+ /*
+ * Initialize data for i-th source dataset.
+ */
+ for (j = 0; j < DIM0 * DIM1 * DIM2; j++)
+ wdata[j] = i + 1;
+
+ /*
+ * Create the source files and datasets. Write data to each dataset and
+ * close all resources.
+ */
+
+ file = H5Fcreate(SRC_FILE[i], H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+ src_space = H5Screate_simple(RANK, dims, NULL);
+ dset = H5Dcreate2(file, SRC_DATASET[i], H5T_NATIVE_INT, src_space, H5P_DEFAULT, H5P_DEFAULT,
+ H5P_DEFAULT);
+ status = H5Dwrite(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata);
+ status = H5Sclose(src_space);
+ status = H5Dclose(dset);
+ status = H5Fclose(file);
+ }
+
+ file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Create VDS dataspace. */
+ vspace = H5Screate_simple(RANK, vdsdims, vdsdims_max);
+
+ /* Create dataspaces for the source dataset. */
+ src_space = H5Screate_simple(RANK, dims, dims_max);
+
+ /* Create VDS creation property */
+ dcpl = H5Pcreate(H5P_DATASET_CREATE);
+
+ /* Initialize hyperslab values */
+
+ start[0] = 0;
+ start[1] = 0;
+ start[2] = 0;
+ stride[0] = PLANE_STRIDE; /* we will select every fifth plane in VDS */
+ stride[1] = 1;
+ stride[2] = 1;
+ count[0] = VDSDIM0 / 4;
+ count[1] = 1;
+ count[2] = 1;
+ src_count[0] = DIM0;
+ src_count[1] = 1;
+ src_count[2] = 1;
+ block[0] = 1;
+ block[1] = DIM1;
+ block[2] = DIM2;
+
+ /*
+ * Build the mappings
+ */
+ status = H5Sselect_hyperslab(src_space, H5S_SELECT_SET, start, NULL, src_count, block);
+ for (i = 0; i < PLANE_STRIDE; i++) {
+ status = H5Sselect_hyperslab(vspace, H5S_SELECT_SET, start, stride, count, block);
+ status = H5Pset_virtual(dcpl, vspace, SRC_FILE[i], SRC_DATASET[i], src_space);
+ start[0]++;
+ }
+
+ H5Sselect_none(vspace);
+
+ /* Create a virtual dataset */
+ dset = H5Dcreate2(file, DATASET, H5T_NATIVE_INT, vspace, H5P_DEFAULT, dcpl, H5P_DEFAULT);
+ status = H5Sclose(vspace);
+ status = H5Sclose(src_space);
+ status = H5Dclose(dset);
+ status = H5Fclose(file);
+
+ /*
+ * Now we begin the read section of this example.
+ */
+
+ /*
+ * Open file and dataset using the default properties.
+ */
+ file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT);
+ dset = H5Dopen2(file, DATASET, H5P_DEFAULT);
+
+ /*
+ * Get creation property list and mapping properties.
+ */
+ dcpl = H5Dget_create_plist(dset);
+
+ /*
+ * Get storage layout.
+ */
+ layout = H5Pget_layout(dcpl);
+ if (H5D_VIRTUAL == layout)
+ printf(" Dataset has a virtual layout \n");
+ else
+ printf("Wrong layout found \n");
+
+ /*
+ * Find the number of mappings.
+ */
+ status = H5Pget_virtual_count(dcpl, &num_map);
+ printf(" Number of mappings is %lu\n", (unsigned long)num_map);
+
+ /*
+ * Get mapping parameters for each mapping.
+ */
+ for (i = 0; i < (int)num_map; i++) {
+ printf(" Mapping %d \n", i);
+ printf(" Selection in the virtual dataset \n");
+ /* Get selection in the virtual dataset */
+ vspace = H5Pget_virtual_vspace(dcpl, (size_t)i);
+
+ /* Make sure that this is a hyperslab selection and then print information. */
+ if (H5Sget_select_type(vspace) == H5S_SEL_HYPERSLABS) {
+ if (H5Sis_regular_hyperslab(vspace)) {
+ status = H5Sget_regular_hyperslab(vspace, start_out, stride_out, count_out, block_out);
+ printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0],
+ (unsigned long long)start_out[1], (unsigned long long)start_out[2]);
+ printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0],
+ (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]);
+ printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0],
+ (unsigned long long)count_out[1], (unsigned long long)count_out[2]);
+ printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0],
+ (unsigned long long)block_out[1], (unsigned long long)block_out[2]);
+ }
+ }
+ /* Get source file name */
+ len = H5Pget_virtual_filename(dcpl, (size_t)i, NULL, 0);
+ filename = (char *)malloc((size_t)len * sizeof(char) + 1);
+ H5Pget_virtual_filename(dcpl, (size_t)i, filename, len + 1);
+ printf(" Source filename %s\n", filename);
+
+ /* Get source dataset name */
+ len = H5Pget_virtual_dsetname(dcpl, (size_t)i, NULL, 0);
+ dsetname = (char *)malloc((size_t)len * sizeof(char) + 1);
+ H5Pget_virtual_dsetname(dcpl, (size_t)i, dsetname, len + 1);
+ printf(" Source dataset name %s\n", dsetname);
+
+ /* Get selection in the source dataset */
+ printf(" Selection in the source dataset \n");
+ src_space = H5Pget_virtual_srcspace(dcpl, (size_t)i);
+ if (H5Sget_select_type(src_space) == H5S_SEL_HYPERSLABS) {
+ if (H5Sis_regular_hyperslab(src_space)) {
+ status = H5Sget_regular_hyperslab(src_space, start_out, stride_out, count_out, block_out);
+ printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0],
+ (unsigned long long)start_out[1], (unsigned long long)start_out[2]);
+ printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0],
+ (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]);
+ printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0],
+ (unsigned long long)count_out[1], (unsigned long long)count_out[2]);
+ printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0],
+ (unsigned long long)block_out[1], (unsigned long long)block_out[2]);
+ }
+ }
+ H5Sclose(vspace);
+ H5Sclose(src_space);
+ free(filename);
+ free(dsetname);
+ }
+
+ /*
+ * Read the data using the default properties.
+ */
+ status = H5Dread(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata[0]);
+
+ /*
+ * Output the data to the screen.
+ */
+ printf(" VDS Data:\n");
+ for (i = 0; i < VDSDIM0; i++) {
+ printf(" [");
+ for (j = 0; j < VDSDIM1; j++) {
+ printf(" [");
+ for (k = 0; k < VDSDIM1; k++)
+ printf(" %3d", rdata[i][j][k]);
+ printf("]");
+ }
+ printf("]\n");
+ }
+
+ /*
+ * Close and release resources.
+ */
+ status = H5Pclose(dcpl);
+ status = H5Dclose(dset);
+ status = H5Fclose(file);
+
+ return 0;
+}
diff --git a/HDF5Examples/C/H5VDS/h5ex_vds-simpleIO.c b/HDF5Examples/C/H5VDS/h5ex_vds-simpleIO.c
new file mode 100644
index 0000000..3bd3133
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/h5ex_vds-simpleIO.c
@@ -0,0 +1,196 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/************************************************************
+
+ This example illustrates the concept of virtual dataset I/O
+ The program creates 2-dim source dataset and writes
+ data to it. Then it creates 2-dim virtual dataset that has
+ the same dimension sizes and maps the all elements of the
+ virtual dataset to all elements of the source dataset.
+ Then VDS is read back.
+
+ This file is intended for use with HDF5 Library version 1.10
+
+ ************************************************************/
+
+#include "hdf5.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+#define FILE "h5ex_vds-simpleIO.h5"
+#define DATASET "VDS"
+#define DIM1 6
+#define DIM0 4
+#define RANK 2
+
+#define SRC_FILE "as.h5"
+#define SRC_DATASET "/A"
+
+int
+main(void)
+{
+ hid_t file = H5I_INVALID_HID;
+ hid_t space = H5I_INVALID_HID;
+ hid_t dset = H5I_INVALID_HID;
+ hid_t src_space = H5I_INVALID_HID;
+ hid_t vspace = H5I_INVALID_HID;
+ hid_t dcpl = H5I_INVALID_HID;
+ herr_t status;
+ hsize_t vdsdims[2] = {DIM0, DIM1}; /* Virtual dataset dimension */
+ hsize_t dims[2] = {DIM0, DIM1}; /* Source dataset dimensions */
+ int wdata[DIM0][DIM1]; /* Write buffer for source dataset */
+ int rdata[DIM0][DIM1]; /* Read buffer for virtual dataset */
+ int i, j;
+ H5D_layout_t layout; /* Storage layout */
+ size_t num_map; /* Number of mappings */
+ ssize_t len; /* Length of the string; also a return value */
+ char *filename = NULL;
+ char *dsetname = NULL;
+
+ /*
+ * Initialize data.
+ */
+ for (i = 0; i < DIM0; i++)
+ for (j = 0; j < DIM1; j++)
+ wdata[i][j] = i + 1;
+
+ /*
+ * Create the source file and the dataset. Write data to the source dataset
+ * and close all resources.
+ */
+ file = H5Fcreate(SRC_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+ space = H5Screate_simple(RANK, dims, NULL);
+ dset = H5Dcreate2(file, SRC_DATASET, H5T_NATIVE_INT, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+ status = H5Dwrite(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata[0]);
+ status = H5Sclose(space);
+ status = H5Dclose(dset);
+ status = H5Fclose(file);
+
+ /* Create file in which virtual dataset will be stored. */
+ file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Create VDS dataspace. */
+ vspace = H5Screate_simple(RANK, vdsdims, NULL);
+
+ /* Set VDS creation property. */
+ dcpl = H5Pcreate(H5P_DATASET_CREATE);
+
+ /*
+ * Build the mappings.
+ * Selections in the source datasets are H5S_ALL.
+ * In the virtual dataset we select the first, the second and the third rows
+ * and map each row to the data in the corresponding source dataset.
+ */
+ src_space = H5Screate_simple(RANK, dims, NULL);
+ status = H5Pset_virtual(dcpl, vspace, SRC_FILE, SRC_DATASET, src_space);
+
+ /* Create a virtual dataset */
+ dset = H5Dcreate2(file, DATASET, H5T_NATIVE_INT, vspace, H5P_DEFAULT, dcpl, H5P_DEFAULT);
+ status = H5Sclose(vspace);
+ status = H5Sclose(src_space);
+ status = H5Dclose(dset);
+ status = H5Fclose(file);
+
+ /*
+ * Now we begin the read section of this example.
+ */
+
+ /*
+ * Open the file and virtual dataset
+ */
+ file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT);
+ dset = H5Dopen2(file, DATASET, H5P_DEFAULT);
+
+ /*
+ * Get creation property list and mapping properties.
+ */
+ dcpl = H5Dget_create_plist(dset);
+
+ /*
+ * Get storage layout.
+ */
+ layout = H5Pget_layout(dcpl);
+ if (H5D_VIRTUAL == layout)
+ printf(" Dataset has a virtual layout \n");
+ else
+ printf("Wrong layout found \n");
+
+ /*
+ * Find the number of mappings.
+ */
+ status = H5Pget_virtual_count(dcpl, &num_map);
+ printf(" Number of mappings is %lu\n", (unsigned long)num_map);
+
+ /*
+ * Get mapping parameters for each mapping.
+ */
+ for (i = 0; i < (int)num_map; i++) {
+ printf(" Mapping %d \n", i);
+ printf(" Selection in the virtual dataset ");
+ /* Get selection in the virtual dataset */
+ vspace = H5Pget_virtual_vspace(dcpl, (size_t)i);
+
+ /* Make sure it is ALL selection and then print selection. */
+ if (H5Sget_select_type(vspace) == H5S_SEL_ALL) {
+ printf("Selection is H5S_ALL \n");
+ }
+ /* Get source file name */
+ len = H5Pget_virtual_filename(dcpl, (size_t)i, NULL, 0);
+ filename = (char *)malloc((size_t)len * sizeof(char) + 1);
+ H5Pget_virtual_filename(dcpl, (size_t)i, filename, len + 1);
+ printf(" Source filename %s\n", filename);
+
+ /* Get source dataset name */
+ len = H5Pget_virtual_dsetname(dcpl, (size_t)i, NULL, 0);
+ dsetname = (char *)malloc((size_t)len * sizeof(char) + 1);
+ H5Pget_virtual_dsetname(dcpl, (size_t)i, dsetname, len + 1);
+ printf(" Source dataset name %s\n", dsetname);
+
+ /* Get selection in the source dataset */
+ printf(" Selection in the source dataset ");
+ src_space = H5Pget_virtual_srcspace(dcpl, (size_t)i);
+
+ /* Make sure it is ALL selection and then print selection */
+ if (H5Sget_select_type(src_space) == H5S_SEL_ALL) {
+ printf("Selection is H5S_ALL \n");
+ }
+ H5Sclose(vspace);
+ H5Sclose(src_space);
+ free(filename);
+ free(dsetname);
+ }
+
+ /*
+ * Read the data using the default properties.
+ */
+ status = H5Dread(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata[0]);
+
+ /*
+ * Output the data to the screen.
+ */
+ printf(" VDS Data:\n");
+ for (i = 0; i < DIM0; i++) {
+ printf(" [");
+ for (j = 0; j < DIM1; j++)
+ printf(" %3d", rdata[i][j]);
+ printf("]\n");
+ }
+
+ /*
+ * Close and release resources.
+ */
+ status = H5Pclose(dcpl);
+ status = H5Dclose(dset);
+ status = H5Fclose(file);
+
+ return 0;
+}
diff --git a/HDF5Examples/C/H5VDS/h5ex_vds.c b/HDF5Examples/C/H5VDS/h5ex_vds.c
new file mode 100644
index 0000000..96a8137
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/h5ex_vds.c
@@ -0,0 +1,254 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/************************************************************
+
+ This example illustrates the concept of virtual dataset.
+ The program creates three 1-dim source datasets and writes
+ data to them. Then it creates a 2-dim virtual dataset and
+ maps the first three rows of the virtual dataset to the data
+ in the source datasets. Elements of a row are mapped to all
+ elements of the corresponding source dataset.
+ The fourth row is not mapped and will be filled with the fill
+ values when virtual dataset is read back.
+
+ The program closes all datasets, and then reopens the virtual
+ dataset, and finds and prints its creation properties.
+ Then it reads the values.
+
+ This file is intended for use with HDF5 Library version 1.10
+
+ ************************************************************/
+
+#include "hdf5.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+#define FILE "h5ex_vds.h5"
+#define DATASET "VDS"
+#define VDSDIM1 6
+#define VDSDIM0 4
+#define DIM0 6
+#define RANK1 1
+#define RANK2 2
+
+const char *SRC_FILE[] = {"h5ex_vds_a.h5", "h5ex_vds_b.h5", "h5ex_vds_c.h5"};
+
+const char *SRC_DATASET[] = {"A", "B", "C"};
+
+int
+main(void)
+{
+ hid_t file = H5I_INVALID_HID;
+ hid_t space = H5I_INVALID_HID;
+ hid_t dset = H5I_INVALID_HID;
+ hid_t src_space = H5I_INVALID_HID;
+ hid_t vspace = H5I_INVALID_HID;
+ hid_t dcpl = H5I_INVALID_HID;
+ herr_t status;
+ hsize_t vdsdims[2] = {VDSDIM0, VDSDIM1}; /* Virtual datasets dimension */
+ hsize_t dims[1] = {DIM0}; /* Source datasets dimensions */
+ hsize_t start[2], count[2], block[2]; /* Hyperslab parameters */
+ hsize_t start_out[2], stride_out[2], count_out[2], block_out[2];
+ int wdata[DIM0]; /* Write buffer for source dataset */
+ int rdata[VDSDIM0][VDSDIM1]; /* Read buffer for virtual dataset */
+ int i, j, k, l, block_inc;
+ int fill_value = -1; /* Fill value for VDS */
+ H5D_layout_t layout; /* Storage layout */
+ size_t num_map; /* Number of mappings */
+ ssize_t len; /* Length of the string; also a return value */
+ hsize_t *buf = NULL; /* Buffer to hold hyperslab coordinates */
+ char *filename = NULL;
+ char *dsetname = NULL;
+ hsize_t nblocks;
+
+ /*
+ * Create source files and datasets. This step is optional.
+ */
+ for (i = 0; i < 3; i++) {
+ /*
+ * Initialize data for i-th source dataset.
+ */
+ for (j = 0; j < DIM0; j++)
+ wdata[j] = i + 1;
+
+ /*
+ * Create the source files and datasets. Write data to each dataset and
+ * close all resources.
+ */
+
+ file = H5Fcreate(SRC_FILE[i], H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+ space = H5Screate_simple(RANK1, dims, NULL);
+ dset = H5Dcreate2(file, SRC_DATASET[i], H5T_NATIVE_INT, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+ status = H5Dwrite(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata);
+ status = H5Sclose(space);
+ status = H5Dclose(dset);
+ status = H5Fclose(file);
+ }
+
+ /* Create file in which virtual dataset will be stored. */
+ file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Create VDS dataspace. */
+ space = H5Screate_simple(RANK2, vdsdims, NULL);
+
+ /* Set VDS creation property. */
+ dcpl = H5Pcreate(H5P_DATASET_CREATE);
+ status = H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fill_value);
+
+ /* Initialize hyperslab values. */
+ start[0] = 0;
+ start[1] = 0;
+ count[0] = 1;
+ count[1] = 1;
+ block[0] = 1;
+ block[1] = VDSDIM1;
+
+ /*
+ * Build the mappings.
+ * Selections in the source datasets are H5S_ALL.
+ * In the virtual dataset we select the first, the second and the third rows
+ * and map each row to the data in the corresponding source dataset.
+ */
+ src_space = H5Screate_simple(RANK1, dims, NULL);
+ for (i = 0; i < 3; i++) {
+ start[0] = (hsize_t)i;
+ /* Select i-th row in the virtual dataset; selection in the source datasets is the same. */
+ status = H5Sselect_hyperslab(space, H5S_SELECT_SET, start, NULL, count, block);
+ status = H5Pset_virtual(dcpl, space, SRC_FILE[i], SRC_DATASET[i], src_space);
+ }
+
+ /* Create a virtual dataset. */
+ dset = H5Dcreate2(file, DATASET, H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT);
+ status = H5Sclose(space);
+ status = H5Sclose(src_space);
+ status = H5Dclose(dset);
+ status = H5Fclose(file);
+
+ /*
+ * Now we begin the read section of this example.
+ */
+
+ /*
+ * Open file and dataset using the default properties.
+ */
+ file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT);
+ dset = H5Dopen2(file, DATASET, H5P_DEFAULT);
+
+ /*
+ * Get creation property list and mapping properties.
+ */
+ dcpl = H5Dget_create_plist(dset);
+
+ /*
+ * Get storage layout.
+ */
+ layout = H5Pget_layout(dcpl);
+ if (H5D_VIRTUAL == layout)
+ printf(" Dataset has a virtual layout \n");
+ else
+ printf("Wrong layout found \n");
+
+ /*
+ * Find the number of mappings.
+ */
+ status = H5Pget_virtual_count(dcpl, &num_map);
+ printf(" Number of mappings is %lu\n", (unsigned long)num_map);
+
+ /*
+ * Get mapping parameters for each mapping.
+ */
+ for (i = 0; i < (int)num_map; i++) {
+ printf(" Mapping %d \n", i);
+ printf(" Selection in the virtual dataset ");
+ /* Get selection in the virtual dataset */
+ vspace = H5Pget_virtual_vspace(dcpl, (size_t)i);
+
+ /* Make sure that this is a hyperslab selection and then print information. */
+ if (H5Sget_select_type(vspace) == H5S_SEL_HYPERSLABS) {
+ nblocks = H5Sget_select_hyper_nblocks(vspace);
+ buf = (hsize_t *)malloc(sizeof(hsize_t) * 2 * RANK2 * nblocks);
+ status = H5Sget_select_hyper_blocklist(vspace, (hsize_t)0, nblocks, buf);
+ for (l = 0; l < nblocks; l++) {
+ block_inc = 2 * RANK2 * l;
+ printf("(");
+ for (k = 0; k < RANK2 - 1; k++)
+ printf("%d,", (int)buf[block_inc + k]);
+ printf("%d) - (", (int)buf[block_inc + k]);
+ for (k = 0; k < RANK2 - 1; k++)
+ printf("%d,", (int)buf[block_inc + RANK2 + k]);
+ printf("%d)\n", (int)buf[block_inc + RANK2 + k]);
+ }
+ /* We also can use new APIs to get start, stride, count and block */
+ if (H5Sis_regular_hyperslab(vspace)) {
+ status = H5Sget_regular_hyperslab(vspace, start_out, stride_out, count_out, block_out);
+ printf(" start = [%llu, %llu] \n", (unsigned long long)start_out[0],
+ (unsigned long long)start_out[1]);
+ printf(" stride = [%llu, %llu] \n", (unsigned long long)stride_out[0],
+ (unsigned long long)stride_out[1]);
+ printf(" count = [%llu, %llu] \n", (unsigned long long)count_out[0],
+ (unsigned long long)count_out[1]);
+ printf(" block = [%llu, %llu] \n", (unsigned long long)block_out[0],
+ (unsigned long long)block_out[1]);
+ }
+ }
+ /* Get source file name */
+ len = H5Pget_virtual_filename(dcpl, (size_t)i, NULL, 0);
+ filename = (char *)malloc((size_t)len * sizeof(char) + 1);
+ H5Pget_virtual_filename(dcpl, (size_t)i, filename, len + 1);
+ printf(" Source filename %s\n", filename);
+
+ /* Get source dataset name */
+ len = H5Pget_virtual_dsetname(dcpl, (size_t)i, NULL, 0);
+ dsetname = (char *)malloc((size_t)len * sizeof(char) + 1);
+ H5Pget_virtual_dsetname(dcpl, (size_t)i, dsetname, len + 1);
+ printf(" Source dataset name %s\n", dsetname);
+
+ /* Get selection in the source dataset */
+ printf(" Selection in the source dataset ");
+ src_space = H5Pget_virtual_srcspace(dcpl, (size_t)i);
+
+ /* Make sure it is ALL selection and then print the coordinates. */
+ if (H5Sget_select_type(src_space) == H5S_SEL_ALL) {
+ printf("(0) - (%d) \n", DIM0 - 1);
+ }
+ H5Sclose(vspace);
+ H5Sclose(src_space);
+ free(filename);
+ free(dsetname);
+ free(buf);
+ }
+
+ /*
+ * Read the data using the default properties.
+ */
+ status = H5Dread(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata[0]);
+
+ /*
+ * Output the data to the screen.
+ */
+ printf(" VDS Data:\n");
+ for (i = 0; i < VDSDIM0; i++) {
+ printf(" [");
+ for (j = 0; j < VDSDIM1; j++)
+ printf(" %3d", rdata[i][j]);
+ printf("]\n");
+ }
+
+ /*
+ * Close and release resources.
+ */
+ status = H5Pclose(dcpl);
+ status = H5Dclose(dset);
+ status = H5Fclose(file);
+
+ return 0;
+}
diff --git a/HDF5Examples/C/H5VDS/test.sh.in b/HDF5Examples/C/H5VDS/test.sh.in
new file mode 100644
index 0000000..91888f5
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/test.sh.in
@@ -0,0 +1,98 @@
+#! /bin/sh
+#
+# Copyright by The HDF Group.
+# Copyright by the Board of Trustees of the University of Illinois.
+# All rights reserved.
+#
+# This file is part of HDF5. The full HDF5 copyright notice, including
+# terms governing use, modification, and redistribution, is contained in
+# the files COPYING and Copyright.html. COPYING can be found at the root
+# of the source code distribution tree; Copyright.html can be found at the
+# root level of an installed copy of the electronic HDF5 document set and
+# is linked from the top-level documents page. It can also be found at
+# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have
+# access to either file, you may request a copy from help@hdfgroup.org.
+
+srcdir=@srcdir@
+
+
+case $CC in
+*/*) H5DUMP=`echo $CC | sed -e 's/\/[^/]*$/\/h5dump/'`;
+ test -x $H5DUMP || H5DUMP=h5dump;;
+*) H5DUMP=h5dump;;
+esac
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ;;
+ *) ECHO_N= ECHO_C='\c' ;;
+esac
+ECHO_N="echo $ECHO_N"
+
+
+exout() {
+ $*
+}
+
+dumpout() {
+ $H5DUMP $*
+}
+
+# compare current version, required version.
+# returns if cur_ver < req_ver is true.
+version_compare() {
+ version_lt=0
+ if [ ! "$(printf '%s\n' "$1" "$2" | sort -V | head -n1)" = "$2" ]; then
+ version_lt=1
+ fi
+}
+
+H5_LIBVER=@H5_LIBVER@
+H5_LIBVER_DIR=@H5_LIBVER_DIR@
+
+topics=""
+topics110="vds vds-exc vds-exclim vds-eiger vds-simpleIO vds-percival vds-percival-unlim vds-percival-unlim-maxmin"
+
+return_val=0
+
+version_compare "$H5_LIBVER" "1.10.0"
+if [ "$version_lt" = 0 ]; then
+ for topic in $topics110
+ do
+ fname=h5ex_$topic
+ $ECHO_N "Testing C/H5VDS/$fname...$ECHO_C"
+ exout ./$fname >tmp.test
+ status=$?
+ if test $status -eq 1
+ then
+ echo " Unsupported feature"
+ status=0
+ else
+ cmp -s tmp.test $srcdir/tfiles/110/$fname.tst
+ status=$?
+ if test $status -ne 0
+ then
+ echo " FAILED!"
+ else
+ dumpout $fname.h5 >tmp.test
+ rm -f $fname.h5
+ cmp -s tmp.test $srcdir/tfiles/110/$fname.ddl
+ status=$?
+ if test $status -ne 0
+ then
+ echo " FAILED!"
+ else
+ echo " Passed"
+ fi
+ fi
+ return_val=`expr $status + $return_val`
+ fi
+ done
+fi
+
+
+rm -f tmp.test
+echo "$return_val tests failed in C/H5VDS/"
+exit $return_val
diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-eiger.ddl b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-eiger.ddl
new file mode 100644
index 0000000..b622169
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-eiger.ddl
@@ -0,0 +1,10 @@
+HDF5 "h5ex_vds-eiger.h5" {
+GROUP "/" {
+ DATASET "VDS-Eiger" {
+ DATATYPE H5T_STD_I32LE
+ DATASPACE SIMPLE { ( 0, 10, 10 ) / ( H5S_UNLIMITED, 10, 10 ) }
+ DATA {
+ }
+ }
+}
+}
diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-eiger.tst b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-eiger.tst
new file mode 100644
index 0000000..580c708
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-eiger.tst
@@ -0,0 +1,17 @@
+ Dataset has a virtual layout
+ Number of mappings is 1
+ Mapping 0
+ Selection in the virtual dataset
+ start = [0, 0, 0]
+ stride = [5, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [5, 10, 10]
+ Source filename f-%b.h5
+ Source dataset name /A
+ Selection in the source dataset H5S_ALL
+ VDS Data:
+ [ [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0]]
+ [ [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0]]
+ [ [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0]]
+ [ [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0]]
+ [ [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0]]
diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exc.ddl b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exc.ddl
new file mode 100644
index 0000000..eb00999
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exc.ddl
@@ -0,0 +1,10 @@
+HDF5 "h5ex_vds-exc.h5" {
+GROUP "/" {
+ DATASET "VDS-Excalibur" {
+ DATATYPE H5T_STD_I32LE
+ DATASPACE SIMPLE { ( 0, 15, 6 ) / ( H5S_UNLIMITED, 15, 6 ) }
+ DATA {
+ }
+ }
+}
+}
diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exc.tst b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exc.tst
new file mode 100644
index 0000000..917c11a
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exc.tst
@@ -0,0 +1,81 @@
+ Dataset has a virtual layout
+ Number of mappings is 6
+ Mapping 0
+ Selection in the virtual dataset
+ start = [0, 0, 0]
+ stride = [1, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 2, 6]
+ Source filename ae.h5
+ Source dataset name A
+ Selection in the source dataset
+ start = [0, 0, 0]
+ stride = [1, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 2, 6]
+ Mapping 1
+ Selection in the virtual dataset
+ start = [0, 5, 0]
+ stride = [1, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 2, 6]
+ Source filename ce.h5
+ Source dataset name C
+ Selection in the source dataset
+ start = [0, 0, 0]
+ stride = [1, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 2, 6]
+ Mapping 2
+ Selection in the virtual dataset
+ start = [0, 10, 0]
+ stride = [1, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 2, 6]
+ Source filename ee.h5
+ Source dataset name E
+ Selection in the source dataset
+ start = [0, 0, 0]
+ stride = [1, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 2, 6]
+ Mapping 3
+ Selection in the virtual dataset
+ start = [0, 2, 0]
+ stride = [1, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 3, 6]
+ Source filename be.h5
+ Source dataset name B
+ Selection in the source dataset
+ start = [0, 0, 0]
+ stride = [1, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 3, 6]
+ Mapping 4
+ Selection in the virtual dataset
+ start = [0, 7, 0]
+ stride = [1, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 3, 6]
+ Source filename de.h5
+ Source dataset name D
+ Selection in the source dataset
+ start = [0, 0, 0]
+ stride = [1, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 3, 6]
+ Mapping 5
+ Selection in the virtual dataset
+ start = [0, 12, 0]
+ stride = [1, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 3, 6]
+ Source filename fe.h5
+ Source dataset name F
+ Selection in the source dataset
+ start = [0, 0, 0]
+ stride = [1, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 3, 6]
+ VDS Data:
diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exclim.ddl b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exclim.ddl
new file mode 100644
index 0000000..401b84f
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exclim.ddl
@@ -0,0 +1,55 @@
+HDF5 "h5ex_vds-exclim.h5" {
+GROUP "/" {
+ DATASET "VDS-Excaliburlim" {
+ DATATYPE H5T_STD_I32LE
+ DATASPACE SIMPLE { ( 3, 15, 6 ) / ( 3, 15, 6 ) }
+ DATA {
+ (0,0,0): 0, 0, 0, 0, 0, 0,
+ (0,1,0): 0, 0, 0, 0, 0, 0,
+ (0,2,0): 0, 0, 0, 0, 0, 0,
+ (0,3,0): 0, 0, 0, 0, 0, 0,
+ (0,4,0): 0, 0, 0, 0, 0, 0,
+ (0,5,0): 0, 0, 0, 0, 0, 0,
+ (0,6,0): 0, 0, 0, 0, 0, 0,
+ (0,7,0): 0, 0, 0, 0, 0, 0,
+ (0,8,0): 0, 0, 0, 0, 0, 0,
+ (0,9,0): 0, 0, 0, 0, 0, 0,
+ (0,10,0): 0, 0, 0, 0, 0, 0,
+ (0,11,0): 0, 0, 0, 0, 0, 0,
+ (0,12,0): 0, 0, 0, 0, 0, 0,
+ (0,13,0): 0, 0, 0, 0, 0, 0,
+ (0,14,0): 0, 0, 0, 0, 0, 0,
+ (1,0,0): 0, 0, 0, 0, 0, 0,
+ (1,1,0): 0, 0, 0, 0, 0, 0,
+ (1,2,0): 0, 0, 0, 0, 0, 0,
+ (1,3,0): 0, 0, 0, 0, 0, 0,
+ (1,4,0): 0, 0, 0, 0, 0, 0,
+ (1,5,0): 0, 0, 0, 0, 0, 0,
+ (1,6,0): 0, 0, 0, 0, 0, 0,
+ (1,7,0): 0, 0, 0, 0, 0, 0,
+ (1,8,0): 0, 0, 0, 0, 0, 0,
+ (1,9,0): 0, 0, 0, 0, 0, 0,
+ (1,10,0): 0, 0, 0, 0, 0, 0,
+ (1,11,0): 0, 0, 0, 0, 0, 0,
+ (1,12,0): 0, 0, 0, 0, 0, 0,
+ (1,13,0): 0, 0, 0, 0, 0, 0,
+ (1,14,0): 0, 0, 0, 0, 0, 0,
+ (2,0,0): 0, 0, 0, 0, 0, 0,
+ (2,1,0): 0, 0, 0, 0, 0, 0,
+ (2,2,0): 0, 0, 0, 0, 0, 0,
+ (2,3,0): 0, 0, 0, 0, 0, 0,
+ (2,4,0): 0, 0, 0, 0, 0, 0,
+ (2,5,0): 0, 0, 0, 0, 0, 0,
+ (2,6,0): 0, 0, 0, 0, 0, 0,
+ (2,7,0): 0, 0, 0, 0, 0, 0,
+ (2,8,0): 0, 0, 0, 0, 0, 0,
+ (2,9,0): 0, 0, 0, 0, 0, 0,
+ (2,10,0): 0, 0, 0, 0, 0, 0,
+ (2,11,0): 0, 0, 0, 0, 0, 0,
+ (2,12,0): 0, 0, 0, 0, 0, 0,
+ (2,13,0): 0, 0, 0, 0, 0, 0,
+ (2,14,0): 0, 0, 0, 0, 0, 0
+ }
+ }
+}
+}
diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exclim.tst b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exclim.tst
new file mode 100644
index 0000000..d5b0db7
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-exclim.tst
@@ -0,0 +1,84 @@
+ Dataset has a virtual layout
+ Number of mappings is 6
+ Mapping 0
+ Selection in the virtual dataset
+ start = [0, 0, 0]
+ stride = [1, 1, 1]
+ count = [1, 1, 1]
+ block = [3, 2, 6]
+ Source filename ael.h5
+ Source dataset name A
+ Selection in the source dataset
+ start = [0, 0, 0]
+ stride = [1, 1, 1]
+ count = [1, 1, 1]
+ block = [3, 2, 6]
+ Mapping 1
+ Selection in the virtual dataset
+ start = [0, 5, 0]
+ stride = [1, 1, 1]
+ count = [1, 1, 1]
+ block = [3, 2, 6]
+ Source filename cel.h5
+ Source dataset name C
+ Selection in the source dataset
+ start = [0, 5, 0]
+ stride = [1, 1, 1]
+ count = [1, 1, 1]
+ block = [3, 2, 6]
+ Mapping 2
+ Selection in the virtual dataset
+ start = [0, 10, 0]
+ stride = [1, 1, 1]
+ count = [1, 1, 1]
+ block = [3, 2, 6]
+ Source filename eel.h5
+ Source dataset name E
+ Selection in the source dataset
+ start = [0, 10, 0]
+ stride = [1, 1, 1]
+ count = [1, 1, 1]
+ block = [3, 2, 6]
+ Mapping 3
+ Selection in the virtual dataset
+ start = [0, 2, 0]
+ stride = [1, 1, 1]
+ count = [1, 1, 1]
+ block = [3, 3, 6]
+ Source filename bel.h5
+ Source dataset name B
+ Selection in the source dataset
+ start = [0, 2, 0]
+ stride = [1, 1, 1]
+ count = [1, 1, 1]
+ block = [3, 3, 6]
+ Mapping 4
+ Selection in the virtual dataset
+ start = [0, 7, 0]
+ stride = [1, 1, 1]
+ count = [1, 1, 1]
+ block = [3, 3, 6]
+ Source filename del.h5
+ Source dataset name D
+ Selection in the source dataset
+ start = [0, 7, 0]
+ stride = [1, 1, 1]
+ count = [1, 1, 1]
+ block = [3, 3, 6]
+ Mapping 5
+ Selection in the virtual dataset
+ start = [0, 12, 0]
+ stride = [1, 1, 1]
+ count = [1, 1, 1]
+ block = [3, 3, 6]
+ Source filename fel.h5
+ Source dataset name F
+ Selection in the source dataset
+ start = [0, 12, 0]
+ stride = [1, 1, 1]
+ count = [1, 1, 1]
+ block = [3, 3, 6]
+ VDS Data:
+ [ [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]
+ [ [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]
+ [ [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 1437410176 32670 -402914496] [ 0 0 0 0 0 0 1437410176 32670 -402914496 32764 -402914232 32764 -402914368 32764 1]]
diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim-maxmin.ddl b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim-maxmin.ddl
new file mode 100644
index 0000000..1008165
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim-maxmin.ddl
@@ -0,0 +1,330 @@
+HDF5 "h5ex_vds-percival-unlim-maxmin.h5" {
+GROUP "/" {
+ DATASET "VDS-Percival-unlim-maxmin" {
+ DATATYPE H5T_STD_I32LE
+ DATASPACE SIMPLE { ( 32, 10, 10 ) / ( H5S_UNLIMITED, 10, 10 ) }
+ DATA {
+ (0,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (1,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (2,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (3,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (4,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (5,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (6,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (7,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (8,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (9,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (10,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (11,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (12,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (13,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (14,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (15,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (16,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (16,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (16,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (16,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (16,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (16,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (16,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (16,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (16,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (16,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (17,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (17,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (17,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (17,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (17,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (17,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (17,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (17,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (17,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (17,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (18,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (18,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (18,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (18,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (18,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (18,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (18,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (18,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (18,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (18,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (19,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (19,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (19,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (19,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (19,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (19,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (19,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (19,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (19,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (19,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (20,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (20,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (20,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (20,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (20,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (20,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (20,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (20,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (20,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (20,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (21,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (21,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (21,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (21,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (21,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (21,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (21,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (21,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (21,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (21,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (22,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (22,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (22,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (22,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (22,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (22,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (22,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (22,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (22,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (22,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (23,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (23,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (23,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (23,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (23,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (23,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (23,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (23,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (23,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (23,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (24,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (24,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (24,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (24,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (24,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (24,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (24,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (24,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (24,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (24,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (25,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (25,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (25,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (25,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (25,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (25,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (25,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (25,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (25,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (25,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (26,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (26,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (26,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (26,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (26,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (26,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (26,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (26,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (26,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (26,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (27,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (27,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (27,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (27,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (27,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (27,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (27,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (27,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (27,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (27,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (28,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (28,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (28,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (28,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (28,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (28,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (28,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (28,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (28,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (28,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (29,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (29,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (29,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (29,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (29,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (29,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (29,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (29,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (29,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (29,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (30,0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (30,1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (30,2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (30,3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (30,4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (30,5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (30,6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (30,7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (30,8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (30,9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ (31,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (31,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (31,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (31,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (31,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (31,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (31,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (31,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (31,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (31,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40
+ }
+ }
+}
+}
diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim-maxmin.tst b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim-maxmin.tst
new file mode 100644
index 0000000..8ccd85e
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim-maxmin.tst
@@ -0,0 +1,379 @@
+VDS dimensions, bounds = H5D_VDS_FIRST_MISSING: 20 10 10
+VDS dimensions, bounds = H5D_VDS_LAST_AVAILABLE: 32 10 10
+ Dataset has a virtual layout
+ Number of mappings is 4
+ Mapping 0
+ Selection in the virtual dataset
+ start = [0, 0, 0]
+ stride = [4, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 10, 10]
+ Source filename apum.h5
+ Source dataset name A
+ Selection in the source dataset
+ start = [0, 0, 0]
+ stride = [1, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 10, 10]
+ Mapping 1
+ Selection in the virtual dataset
+ start = [1, 0, 0]
+ stride = [4, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 10, 10]
+ Source filename bpum.h5
+ Source dataset name B
+ Selection in the source dataset
+ start = [0, 0, 0]
+ stride = [1, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 10, 10]
+ Mapping 2
+ Selection in the virtual dataset
+ start = [2, 0, 0]
+ stride = [4, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 10, 10]
+ Source filename cpum.h5
+ Source dataset name C
+ Selection in the source dataset
+ start = [0, 0, 0]
+ stride = [1, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 10, 10]
+ Mapping 3
+ Selection in the virtual dataset
+ start = [3, 0, 0]
+ stride = [4, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 10, 10]
+ Source filename dpum.h5
+ Source dataset name D
+ Selection in the source dataset
+ start = [0, 0, 0]
+ stride = [1, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 10, 10]
+VDS dimensions second time
+ Current: 32 10 10
+ All data:
+(0, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(1, 0, 0) 2 2 2 2 2 2 2 2 2 2
+(1, 1, 0) 2 2 2 2 2 2 2 2 2 2
+(1, 2, 0) 2 2 2 2 2 2 2 2 2 2
+(1, 3, 0) 2 2 2 2 2 2 2 2 2 2
+(1, 4, 0) 2 2 2 2 2 2 2 2 2 2
+(1, 5, 0) 2 2 2 2 2 2 2 2 2 2
+(1, 6, 0) 2 2 2 2 2 2 2 2 2 2
+(1, 7, 0) 2 2 2 2 2 2 2 2 2 2
+(1, 8, 0) 2 2 2 2 2 2 2 2 2 2
+(1, 9, 0) 2 2 2 2 2 2 2 2 2 2
+(2, 0, 0) 3 3 3 3 3 3 3 3 3 3
+(2, 1, 0) 3 3 3 3 3 3 3 3 3 3
+(2, 2, 0) 3 3 3 3 3 3 3 3 3 3
+(2, 3, 0) 3 3 3 3 3 3 3 3 3 3
+(2, 4, 0) 3 3 3 3 3 3 3 3 3 3
+(2, 5, 0) 3 3 3 3 3 3 3 3 3 3
+(2, 6, 0) 3 3 3 3 3 3 3 3 3 3
+(2, 7, 0) 3 3 3 3 3 3 3 3 3 3
+(2, 8, 0) 3 3 3 3 3 3 3 3 3 3
+(2, 9, 0) 3 3 3 3 3 3 3 3 3 3
+(3, 0, 0) 4 4 4 4 4 4 4 4 4 4
+(3, 1, 0) 4 4 4 4 4 4 4 4 4 4
+(3, 2, 0) 4 4 4 4 4 4 4 4 4 4
+(3, 3, 0) 4 4 4 4 4 4 4 4 4 4
+(3, 4, 0) 4 4 4 4 4 4 4 4 4 4
+(3, 5, 0) 4 4 4 4 4 4 4 4 4 4
+(3, 6, 0) 4 4 4 4 4 4 4 4 4 4
+(3, 7, 0) 4 4 4 4 4 4 4 4 4 4
+(3, 8, 0) 4 4 4 4 4 4 4 4 4 4
+(3, 9, 0) 4 4 4 4 4 4 4 4 4 4
+(4, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(5, 0, 0) 2 2 2 2 2 2 2 2 2 2
+(5, 1, 0) 2 2 2 2 2 2 2 2 2 2
+(5, 2, 0) 2 2 2 2 2 2 2 2 2 2
+(5, 3, 0) 2 2 2 2 2 2 2 2 2 2
+(5, 4, 0) 2 2 2 2 2 2 2 2 2 2
+(5, 5, 0) 2 2 2 2 2 2 2 2 2 2
+(5, 6, 0) 2 2 2 2 2 2 2 2 2 2
+(5, 7, 0) 2 2 2 2 2 2 2 2 2 2
+(5, 8, 0) 2 2 2 2 2 2 2 2 2 2
+(5, 9, 0) 2 2 2 2 2 2 2 2 2 2
+(6, 0, 0) 3 3 3 3 3 3 3 3 3 3
+(6, 1, 0) 3 3 3 3 3 3 3 3 3 3
+(6, 2, 0) 3 3 3 3 3 3 3 3 3 3
+(6, 3, 0) 3 3 3 3 3 3 3 3 3 3
+(6, 4, 0) 3 3 3 3 3 3 3 3 3 3
+(6, 5, 0) 3 3 3 3 3 3 3 3 3 3
+(6, 6, 0) 3 3 3 3 3 3 3 3 3 3
+(6, 7, 0) 3 3 3 3 3 3 3 3 3 3
+(6, 8, 0) 3 3 3 3 3 3 3 3 3 3
+(6, 9, 0) 3 3 3 3 3 3 3 3 3 3
+(7, 0, 0) 4 4 4 4 4 4 4 4 4 4
+(7, 1, 0) 4 4 4 4 4 4 4 4 4 4
+(7, 2, 0) 4 4 4 4 4 4 4 4 4 4
+(7, 3, 0) 4 4 4 4 4 4 4 4 4 4
+(7, 4, 0) 4 4 4 4 4 4 4 4 4 4
+(7, 5, 0) 4 4 4 4 4 4 4 4 4 4
+(7, 6, 0) 4 4 4 4 4 4 4 4 4 4
+(7, 7, 0) 4 4 4 4 4 4 4 4 4 4
+(7, 8, 0) 4 4 4 4 4 4 4 4 4 4
+(7, 9, 0) 4 4 4 4 4 4 4 4 4 4
+(8, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(9, 0, 0) 2 2 2 2 2 2 2 2 2 2
+(9, 1, 0) 2 2 2 2 2 2 2 2 2 2
+(9, 2, 0) 2 2 2 2 2 2 2 2 2 2
+(9, 3, 0) 2 2 2 2 2 2 2 2 2 2
+(9, 4, 0) 2 2 2 2 2 2 2 2 2 2
+(9, 5, 0) 2 2 2 2 2 2 2 2 2 2
+(9, 6, 0) 2 2 2 2 2 2 2 2 2 2
+(9, 7, 0) 2 2 2 2 2 2 2 2 2 2
+(9, 8, 0) 2 2 2 2 2 2 2 2 2 2
+(9, 9, 0) 2 2 2 2 2 2 2 2 2 2
+(10, 0, 0) 3 3 3 3 3 3 3 3 3 3
+(10, 1, 0) 3 3 3 3 3 3 3 3 3 3
+(10, 2, 0) 3 3 3 3 3 3 3 3 3 3
+(10, 3, 0) 3 3 3 3 3 3 3 3 3 3
+(10, 4, 0) 3 3 3 3 3 3 3 3 3 3
+(10, 5, 0) 3 3 3 3 3 3 3 3 3 3
+(10, 6, 0) 3 3 3 3 3 3 3 3 3 3
+(10, 7, 0) 3 3 3 3 3 3 3 3 3 3
+(10, 8, 0) 3 3 3 3 3 3 3 3 3 3
+(10, 9, 0) 3 3 3 3 3 3 3 3 3 3
+(11, 0, 0) 4 4 4 4 4 4 4 4 4 4
+(11, 1, 0) 4 4 4 4 4 4 4 4 4 4
+(11, 2, 0) 4 4 4 4 4 4 4 4 4 4
+(11, 3, 0) 4 4 4 4 4 4 4 4 4 4
+(11, 4, 0) 4 4 4 4 4 4 4 4 4 4
+(11, 5, 0) 4 4 4 4 4 4 4 4 4 4
+(11, 6, 0) 4 4 4 4 4 4 4 4 4 4
+(11, 7, 0) 4 4 4 4 4 4 4 4 4 4
+(11, 8, 0) 4 4 4 4 4 4 4 4 4 4
+(11, 9, 0) 4 4 4 4 4 4 4 4 4 4
+(12, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(12, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(12, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(12, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(12, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(12, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(12, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(12, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(12, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(12, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(13, 0, 0) 2 2 2 2 2 2 2 2 2 2
+(13, 1, 0) 2 2 2 2 2 2 2 2 2 2
+(13, 2, 0) 2 2 2 2 2 2 2 2 2 2
+(13, 3, 0) 2 2 2 2 2 2 2 2 2 2
+(13, 4, 0) 2 2 2 2 2 2 2 2 2 2
+(13, 5, 0) 2 2 2 2 2 2 2 2 2 2
+(13, 6, 0) 2 2 2 2 2 2 2 2 2 2
+(13, 7, 0) 2 2 2 2 2 2 2 2 2 2
+(13, 8, 0) 2 2 2 2 2 2 2 2 2 2
+(13, 9, 0) 2 2 2 2 2 2 2 2 2 2
+(14, 0, 0) 3 3 3 3 3 3 3 3 3 3
+(14, 1, 0) 3 3 3 3 3 3 3 3 3 3
+(14, 2, 0) 3 3 3 3 3 3 3 3 3 3
+(14, 3, 0) 3 3 3 3 3 3 3 3 3 3
+(14, 4, 0) 3 3 3 3 3 3 3 3 3 3
+(14, 5, 0) 3 3 3 3 3 3 3 3 3 3
+(14, 6, 0) 3 3 3 3 3 3 3 3 3 3
+(14, 7, 0) 3 3 3 3 3 3 3 3 3 3
+(14, 8, 0) 3 3 3 3 3 3 3 3 3 3
+(14, 9, 0) 3 3 3 3 3 3 3 3 3 3
+(15, 0, 0) 4 4 4 4 4 4 4 4 4 4
+(15, 1, 0) 4 4 4 4 4 4 4 4 4 4
+(15, 2, 0) 4 4 4 4 4 4 4 4 4 4
+(15, 3, 0) 4 4 4 4 4 4 4 4 4 4
+(15, 4, 0) 4 4 4 4 4 4 4 4 4 4
+(15, 5, 0) 4 4 4 4 4 4 4 4 4 4
+(15, 6, 0) 4 4 4 4 4 4 4 4 4 4
+(15, 7, 0) 4 4 4 4 4 4 4 4 4 4
+(15, 8, 0) 4 4 4 4 4 4 4 4 4 4
+(15, 9, 0) 4 4 4 4 4 4 4 4 4 4
+(16, 0, 0) 10 10 10 10 10 10 10 10 10 10
+(16, 1, 0) 10 10 10 10 10 10 10 10 10 10
+(16, 2, 0) 10 10 10 10 10 10 10 10 10 10
+(16, 3, 0) 10 10 10 10 10 10 10 10 10 10
+(16, 4, 0) 10 10 10 10 10 10 10 10 10 10
+(16, 5, 0) 10 10 10 10 10 10 10 10 10 10
+(16, 6, 0) 10 10 10 10 10 10 10 10 10 10
+(16, 7, 0) 10 10 10 10 10 10 10 10 10 10
+(16, 8, 0) 10 10 10 10 10 10 10 10 10 10
+(16, 9, 0) 10 10 10 10 10 10 10 10 10 10
+(17, 0, 0) 20 20 20 20 20 20 20 20 20 20
+(17, 1, 0) 20 20 20 20 20 20 20 20 20 20
+(17, 2, 0) 20 20 20 20 20 20 20 20 20 20
+(17, 3, 0) 20 20 20 20 20 20 20 20 20 20
+(17, 4, 0) 20 20 20 20 20 20 20 20 20 20
+(17, 5, 0) 20 20 20 20 20 20 20 20 20 20
+(17, 6, 0) 20 20 20 20 20 20 20 20 20 20
+(17, 7, 0) 20 20 20 20 20 20 20 20 20 20
+(17, 8, 0) 20 20 20 20 20 20 20 20 20 20
+(17, 9, 0) 20 20 20 20 20 20 20 20 20 20
+(18, 0, 0) 30 30 30 30 30 30 30 30 30 30
+(18, 1, 0) 30 30 30 30 30 30 30 30 30 30
+(18, 2, 0) 30 30 30 30 30 30 30 30 30 30
+(18, 3, 0) 30 30 30 30 30 30 30 30 30 30
+(18, 4, 0) 30 30 30 30 30 30 30 30 30 30
+(18, 5, 0) 30 30 30 30 30 30 30 30 30 30
+(18, 6, 0) 30 30 30 30 30 30 30 30 30 30
+(18, 7, 0) 30 30 30 30 30 30 30 30 30 30
+(18, 8, 0) 30 30 30 30 30 30 30 30 30 30
+(18, 9, 0) 30 30 30 30 30 30 30 30 30 30
+(19, 0, 0) 40 40 40 40 40 40 40 40 40 40
+(19, 1, 0) 40 40 40 40 40 40 40 40 40 40
+(19, 2, 0) 40 40 40 40 40 40 40 40 40 40
+(19, 3, 0) 40 40 40 40 40 40 40 40 40 40
+(19, 4, 0) 40 40 40 40 40 40 40 40 40 40
+(19, 5, 0) 40 40 40 40 40 40 40 40 40 40
+(19, 6, 0) 40 40 40 40 40 40 40 40 40 40
+(19, 7, 0) 40 40 40 40 40 40 40 40 40 40
+(19, 8, 0) 40 40 40 40 40 40 40 40 40 40
+(19, 9, 0) 40 40 40 40 40 40 40 40 40 40
+(20, 0, 0) 0 0 0 0 0 0 0 0 0 0
+(20, 1, 0) 0 0 0 0 0 0 0 0 0 0
+(20, 2, 0) 0 0 0 0 0 0 0 0 0 0
+(20, 3, 0) 0 0 0 0 0 0 0 0 0 0
+(20, 4, 0) 0 0 0 0 0 0 0 0 0 0
+(20, 5, 0) 0 0 0 0 0 0 0 0 0 0
+(20, 6, 0) 0 0 0 0 0 0 0 0 0 0
+(20, 7, 0) 0 0 0 0 0 0 0 0 0 0
+(20, 8, 0) 0 0 0 0 0 0 0 0 0 0
+(20, 9, 0) 0 0 0 0 0 0 0 0 0 0
+(21, 0, 0) 20 20 20 20 20 20 20 20 20 20
+(21, 1, 0) 20 20 20 20 20 20 20 20 20 20
+(21, 2, 0) 20 20 20 20 20 20 20 20 20 20
+(21, 3, 0) 20 20 20 20 20 20 20 20 20 20
+(21, 4, 0) 20 20 20 20 20 20 20 20 20 20
+(21, 5, 0) 20 20 20 20 20 20 20 20 20 20
+(21, 6, 0) 20 20 20 20 20 20 20 20 20 20
+(21, 7, 0) 20 20 20 20 20 20 20 20 20 20
+(21, 8, 0) 20 20 20 20 20 20 20 20 20 20
+(21, 9, 0) 20 20 20 20 20 20 20 20 20 20
+(22, 0, 0) 30 30 30 30 30 30 30 30 30 30
+(22, 1, 0) 30 30 30 30 30 30 30 30 30 30
+(22, 2, 0) 30 30 30 30 30 30 30 30 30 30
+(22, 3, 0) 30 30 30 30 30 30 30 30 30 30
+(22, 4, 0) 30 30 30 30 30 30 30 30 30 30
+(22, 5, 0) 30 30 30 30 30 30 30 30 30 30
+(22, 6, 0) 30 30 30 30 30 30 30 30 30 30
+(22, 7, 0) 30 30 30 30 30 30 30 30 30 30
+(22, 8, 0) 30 30 30 30 30 30 30 30 30 30
+(22, 9, 0) 30 30 30 30 30 30 30 30 30 30
+(23, 0, 0) 40 40 40 40 40 40 40 40 40 40
+(23, 1, 0) 40 40 40 40 40 40 40 40 40 40
+(23, 2, 0) 40 40 40 40 40 40 40 40 40 40
+(23, 3, 0) 40 40 40 40 40 40 40 40 40 40
+(23, 4, 0) 40 40 40 40 40 40 40 40 40 40
+(23, 5, 0) 40 40 40 40 40 40 40 40 40 40
+(23, 6, 0) 40 40 40 40 40 40 40 40 40 40
+(23, 7, 0) 40 40 40 40 40 40 40 40 40 40
+(23, 8, 0) 40 40 40 40 40 40 40 40 40 40
+(23, 9, 0) 40 40 40 40 40 40 40 40 40 40
+(24, 0, 0) 0 0 0 0 0 0 0 0 0 0
+(24, 1, 0) 0 0 0 0 0 0 0 0 0 0
+(24, 2, 0) 0 0 0 0 0 0 0 0 0 0
+(24, 3, 0) 0 0 0 0 0 0 0 0 0 0
+(24, 4, 0) 0 0 0 0 0 0 0 0 0 0
+(24, 5, 0) 0 0 0 0 0 0 0 0 0 0
+(24, 6, 0) 0 0 0 0 0 0 0 0 0 0
+(24, 7, 0) 0 0 0 0 0 0 0 0 0 0
+(24, 8, 0) 0 0 0 0 0 0 0 0 0 0
+(24, 9, 0) 0 0 0 0 0 0 0 0 0 0
+(25, 0, 0) 0 0 0 0 0 0 0 0 0 0
+(25, 1, 0) 0 0 0 0 0 0 0 0 0 0
+(25, 2, 0) 0 0 0 0 0 0 0 0 0 0
+(25, 3, 0) 0 0 0 0 0 0 0 0 0 0
+(25, 4, 0) 0 0 0 0 0 0 0 0 0 0
+(25, 5, 0) 0 0 0 0 0 0 0 0 0 0
+(25, 6, 0) 0 0 0 0 0 0 0 0 0 0
+(25, 7, 0) 0 0 0 0 0 0 0 0 0 0
+(25, 8, 0) 0 0 0 0 0 0 0 0 0 0
+(25, 9, 0) 0 0 0 0 0 0 0 0 0 0
+(26, 0, 0) 30 30 30 30 30 30 30 30 30 30
+(26, 1, 0) 30 30 30 30 30 30 30 30 30 30
+(26, 2, 0) 30 30 30 30 30 30 30 30 30 30
+(26, 3, 0) 30 30 30 30 30 30 30 30 30 30
+(26, 4, 0) 30 30 30 30 30 30 30 30 30 30
+(26, 5, 0) 30 30 30 30 30 30 30 30 30 30
+(26, 6, 0) 30 30 30 30 30 30 30 30 30 30
+(26, 7, 0) 30 30 30 30 30 30 30 30 30 30
+(26, 8, 0) 30 30 30 30 30 30 30 30 30 30
+(26, 9, 0) 30 30 30 30 30 30 30 30 30 30
+(27, 0, 0) 40 40 40 40 40 40 40 40 40 40
+(27, 1, 0) 40 40 40 40 40 40 40 40 40 40
+(27, 2, 0) 40 40 40 40 40 40 40 40 40 40
+(27, 3, 0) 40 40 40 40 40 40 40 40 40 40
+(27, 4, 0) 40 40 40 40 40 40 40 40 40 40
+(27, 5, 0) 40 40 40 40 40 40 40 40 40 40
+(27, 6, 0) 40 40 40 40 40 40 40 40 40 40
+(27, 7, 0) 40 40 40 40 40 40 40 40 40 40
+(27, 8, 0) 40 40 40 40 40 40 40 40 40 40
+(27, 9, 0) 40 40 40 40 40 40 40 40 40 40
+(28, 0, 0) 0 0 0 0 0 0 0 0 0 0
+(28, 1, 0) 0 0 0 0 0 0 0 0 0 0
+(28, 2, 0) 0 0 0 0 0 0 0 0 0 0
+(28, 3, 0) 0 0 0 0 0 0 0 0 0 0
+(28, 4, 0) 0 0 0 0 0 0 0 0 0 0
+(28, 5, 0) 0 0 0 0 0 0 0 0 0 0
+(28, 6, 0) 0 0 0 0 0 0 0 0 0 0
+(28, 7, 0) 0 0 0 0 0 0 0 0 0 0
+(28, 8, 0) 0 0 0 0 0 0 0 0 0 0
+(28, 9, 0) 0 0 0 0 0 0 0 0 0 0
+(29, 0, 0) 0 0 0 0 0 0 0 0 0 0
+(29, 1, 0) 0 0 0 0 0 0 0 0 0 0
+(29, 2, 0) 0 0 0 0 0 0 0 0 0 0
+(29, 3, 0) 0 0 0 0 0 0 0 0 0 0
+(29, 4, 0) 0 0 0 0 0 0 0 0 0 0
+(29, 5, 0) 0 0 0 0 0 0 0 0 0 0
+(29, 6, 0) 0 0 0 0 0 0 0 0 0 0
+(29, 7, 0) 0 0 0 0 0 0 0 0 0 0
+(29, 8, 0) 0 0 0 0 0 0 0 0 0 0
+(29, 9, 0) 0 0 0 0 0 0 0 0 0 0
+(30, 0, 0) 0 0 0 0 0 0 0 0 0 0
+(30, 1, 0) 0 0 0 0 0 0 0 0 0 0
+(30, 2, 0) 0 0 0 0 0 0 0 0 0 0
+(30, 3, 0) 0 0 0 0 0 0 0 0 0 0
+(30, 4, 0) 0 0 0 0 0 0 0 0 0 0
+(30, 5, 0) 0 0 0 0 0 0 0 0 0 0
+(30, 6, 0) 0 0 0 0 0 0 0 0 0 0
+(30, 7, 0) 0 0 0 0 0 0 0 0 0 0
+(30, 8, 0) 0 0 0 0 0 0 0 0 0 0
+(30, 9, 0) 0 0 0 0 0 0 0 0 0 0
+(31, 0, 0) 40 40 40 40 40 40 40 40 40 40
+(31, 1, 0) 40 40 40 40 40 40 40 40 40 40
+(31, 2, 0) 40 40 40 40 40 40 40 40 40 40
+(31, 3, 0) 40 40 40 40 40 40 40 40 40 40
+(31, 4, 0) 40 40 40 40 40 40 40 40 40 40
+(31, 5, 0) 40 40 40 40 40 40 40 40 40 40
+(31, 6, 0) 40 40 40 40 40 40 40 40 40 40
+(31, 7, 0) 40 40 40 40 40 40 40 40 40 40
+(31, 8, 0) 40 40 40 40 40 40 40 40 40 40
+(31, 9, 0) 40 40 40 40 40 40 40 40 40 40
diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.ddl b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.ddl
new file mode 100644
index 0000000..4a51060
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.ddl
@@ -0,0 +1,810 @@
+HDF5 "h5ex_vds-percival-unlim.h5" {
+GROUP "/" {
+ DATASET "VDS-Percival-unlim" {
+ DATATYPE H5T_STD_I32LE
+ DATASPACE SIMPLE { ( 80, 10, 10 ) / ( H5S_UNLIMITED, 10, 10 ) }
+ DATA {
+ (0,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (1,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (2,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (3,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (4,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (5,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (6,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (7,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (8,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (9,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (10,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (11,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (12,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (13,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (14,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (15,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (16,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (16,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (16,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (16,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (16,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (16,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (16,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (16,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (16,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (16,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (17,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (17,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (17,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (17,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (17,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (17,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (17,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (17,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (17,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (17,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (18,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (18,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (18,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (18,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (18,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (18,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (18,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (18,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (18,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (18,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (19,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (19,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (19,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (19,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (19,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (19,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (19,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (19,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (19,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (19,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (20,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (20,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (20,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (20,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (20,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (20,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (20,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (20,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (20,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (20,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (21,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (21,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (21,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (21,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (21,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (21,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (21,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (21,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (21,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (21,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (22,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (22,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (22,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (22,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (22,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (22,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (22,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (22,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (22,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (22,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (23,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (23,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (23,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (23,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (23,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (23,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (23,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (23,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (23,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (23,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (24,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (24,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (24,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (24,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (24,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (24,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (24,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (24,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (24,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (24,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (25,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (25,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (25,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (25,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (25,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (25,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (25,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (25,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (25,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (25,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (26,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (26,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (26,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (26,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (26,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (26,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (26,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (26,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (26,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (26,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (27,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (27,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (27,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (27,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (27,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (27,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (27,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (27,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (27,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (27,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (28,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (28,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (28,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (28,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (28,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (28,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (28,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (28,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (28,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (28,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (29,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (29,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (29,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (29,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (29,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (29,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (29,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (29,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (29,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (29,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (30,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (30,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (30,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (30,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (30,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (30,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (30,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (30,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (30,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (30,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (31,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (31,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (31,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (31,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (31,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (31,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (31,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (31,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (31,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (31,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (32,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (32,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (32,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (32,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (32,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (32,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (32,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (32,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (32,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (32,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (33,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (33,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (33,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (33,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (33,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (33,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (33,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (33,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (33,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (33,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (34,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (34,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (34,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (34,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (34,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (34,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (34,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (34,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (34,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (34,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (35,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (35,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (35,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (35,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (35,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (35,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (35,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (35,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (35,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (35,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (36,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (36,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (36,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (36,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (36,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (36,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (36,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (36,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (36,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (36,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (37,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (37,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (37,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (37,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (37,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (37,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (37,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (37,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (37,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (37,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (38,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (38,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (38,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (38,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (38,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (38,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (38,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (38,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (38,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (38,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (39,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (39,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (39,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (39,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (39,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (39,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (39,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (39,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (39,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (39,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (40,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (40,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (40,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (40,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (40,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (40,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (40,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (40,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (40,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (40,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (41,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (41,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (41,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (41,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (41,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (41,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (41,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (41,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (41,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (41,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (42,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (42,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (42,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (42,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (42,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (42,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (42,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (42,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (42,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (42,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (43,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (43,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (43,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (43,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (43,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (43,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (43,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (43,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (43,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (43,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (44,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (44,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (44,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (44,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (44,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (44,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (44,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (44,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (44,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (44,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (45,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (45,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (45,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (45,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (45,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (45,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (45,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (45,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (45,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (45,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (46,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (46,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (46,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (46,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (46,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (46,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (46,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (46,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (46,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (46,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (47,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (47,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (47,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (47,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (47,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (47,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (47,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (47,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (47,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (47,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (48,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (48,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (48,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (48,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (48,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (48,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (48,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (48,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (48,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (48,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (49,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (49,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (49,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (49,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (49,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (49,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (49,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (49,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (49,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (49,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (50,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (50,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (50,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (50,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (50,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (50,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (50,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (50,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (50,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (50,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (51,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (51,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (51,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (51,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (51,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (51,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (51,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (51,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (51,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (51,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (52,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (52,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (52,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (52,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (52,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (52,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (52,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (52,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (52,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (52,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (53,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (53,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (53,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (53,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (53,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (53,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (53,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (53,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (53,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (53,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (54,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (54,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (54,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (54,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (54,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (54,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (54,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (54,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (54,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (54,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (55,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (55,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (55,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (55,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (55,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (55,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (55,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (55,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (55,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (55,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (56,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (56,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (56,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (56,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (56,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (56,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (56,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (56,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (56,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (56,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (57,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (57,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (57,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (57,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (57,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (57,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (57,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (57,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (57,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (57,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (58,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (58,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (58,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (58,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (58,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (58,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (58,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (58,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (58,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (58,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (59,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (59,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (59,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (59,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (59,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (59,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (59,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (59,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (59,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (59,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (60,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (60,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (60,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (60,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (60,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (60,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (60,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (60,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (60,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (60,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (61,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (61,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (61,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (61,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (61,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (61,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (61,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (61,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (61,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (61,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (62,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (62,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (62,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (62,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (62,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (62,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (62,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (62,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (62,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (62,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (63,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (63,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (63,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (63,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (63,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (63,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (63,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (63,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (63,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (63,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (64,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (64,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (64,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (64,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (64,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (64,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (64,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (64,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (64,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (64,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (65,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (65,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (65,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (65,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (65,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (65,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (65,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (65,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (65,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (65,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (66,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (66,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (66,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (66,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (66,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (66,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (66,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (66,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (66,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (66,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (67,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (67,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (67,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (67,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (67,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (67,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (67,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (67,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (67,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (67,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (68,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (68,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (68,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (68,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (68,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (68,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (68,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (68,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (68,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (68,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (69,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (69,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (69,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (69,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (69,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (69,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (69,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (69,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (69,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (69,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (70,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (70,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (70,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (70,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (70,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (70,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (70,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (70,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (70,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (70,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (71,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (71,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (71,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (71,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (71,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (71,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (71,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (71,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (71,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (71,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (72,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (72,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (72,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (72,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (72,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (72,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (72,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (72,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (72,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (72,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (73,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (73,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (73,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (73,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (73,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (73,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (73,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (73,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (73,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (73,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (74,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (74,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (74,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (74,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (74,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (74,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (74,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (74,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (74,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (74,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (75,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (75,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (75,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (75,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (75,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (75,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (75,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (75,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (75,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (75,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (76,0,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (76,1,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (76,2,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (76,3,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (76,4,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (76,5,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (76,6,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (76,7,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (76,8,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (76,9,0): 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ (77,0,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (77,1,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (77,2,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (77,3,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (77,4,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (77,5,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (77,6,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (77,7,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (77,8,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (77,9,0): 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ (78,0,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (78,1,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (78,2,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (78,3,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (78,4,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (78,5,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (78,6,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (78,7,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (78,8,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (78,9,0): 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ (79,0,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (79,1,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (79,2,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (79,3,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (79,4,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (79,5,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (79,6,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (79,7,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (79,8,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ (79,9,0): 40, 40, 40, 40, 40, 40, 40, 40, 40, 40
+ }
+ }
+}
+}
diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.tst b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.tst
new file mode 100644
index 0000000..d6197f0
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival-unlim.tst
@@ -0,0 +1,1060 @@
+VDS dimensions first time
+ Current: 40 10 10
+ Dataset has a virtual layout
+ Number of mappings is 4
+ Mapping 0
+ Selection in the virtual dataset
+ start = [0, 0, 0]
+ stride = [4, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 10, 10]
+ Source filename apu.h5
+ Source dataset name A
+ Selection in the source dataset
+ start = [0, 0, 0]
+ stride = [1, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 10, 10]
+ Mapping 1
+ Selection in the virtual dataset
+ start = [1, 0, 0]
+ stride = [4, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 10, 10]
+ Source filename bpu.h5
+ Source dataset name B
+ Selection in the source dataset
+ start = [0, 0, 0]
+ stride = [1, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 10, 10]
+ Mapping 2
+ Selection in the virtual dataset
+ start = [2, 0, 0]
+ stride = [4, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 10, 10]
+ Source filename cpu.h5
+ Source dataset name C
+ Selection in the source dataset
+ start = [0, 0, 0]
+ stride = [1, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 10, 10]
+ Mapping 3
+ Selection in the virtual dataset
+ start = [3, 0, 0]
+ stride = [4, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 10, 10]
+ Source filename dpu.h5
+ Source dataset name D
+ Selection in the source dataset
+ start = [0, 0, 0]
+ stride = [1, 1, 1]
+ count = [18446744073709551615, 1, 1]
+ block = [1, 10, 10]
+VDS dimensions second time
+ Current: 80 10 10
+ All data:
+(0, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(1, 0, 0) 2 2 2 2 2 2 2 2 2 2
+(1, 1, 0) 2 2 2 2 2 2 2 2 2 2
+(1, 2, 0) 2 2 2 2 2 2 2 2 2 2
+(1, 3, 0) 2 2 2 2 2 2 2 2 2 2
+(1, 4, 0) 2 2 2 2 2 2 2 2 2 2
+(1, 5, 0) 2 2 2 2 2 2 2 2 2 2
+(1, 6, 0) 2 2 2 2 2 2 2 2 2 2
+(1, 7, 0) 2 2 2 2 2 2 2 2 2 2
+(1, 8, 0) 2 2 2 2 2 2 2 2 2 2
+(1, 9, 0) 2 2 2 2 2 2 2 2 2 2
+(2, 0, 0) 3 3 3 3 3 3 3 3 3 3
+(2, 1, 0) 3 3 3 3 3 3 3 3 3 3
+(2, 2, 0) 3 3 3 3 3 3 3 3 3 3
+(2, 3, 0) 3 3 3 3 3 3 3 3 3 3
+(2, 4, 0) 3 3 3 3 3 3 3 3 3 3
+(2, 5, 0) 3 3 3 3 3 3 3 3 3 3
+(2, 6, 0) 3 3 3 3 3 3 3 3 3 3
+(2, 7, 0) 3 3 3 3 3 3 3 3 3 3
+(2, 8, 0) 3 3 3 3 3 3 3 3 3 3
+(2, 9, 0) 3 3 3 3 3 3 3 3 3 3
+(3, 0, 0) 4 4 4 4 4 4 4 4 4 4
+(3, 1, 0) 4 4 4 4 4 4 4 4 4 4
+(3, 2, 0) 4 4 4 4 4 4 4 4 4 4
+(3, 3, 0) 4 4 4 4 4 4 4 4 4 4
+(3, 4, 0) 4 4 4 4 4 4 4 4 4 4
+(3, 5, 0) 4 4 4 4 4 4 4 4 4 4
+(3, 6, 0) 4 4 4 4 4 4 4 4 4 4
+(3, 7, 0) 4 4 4 4 4 4 4 4 4 4
+(3, 8, 0) 4 4 4 4 4 4 4 4 4 4
+(3, 9, 0) 4 4 4 4 4 4 4 4 4 4
+(4, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(5, 0, 0) 2 2 2 2 2 2 2 2 2 2
+(5, 1, 0) 2 2 2 2 2 2 2 2 2 2
+(5, 2, 0) 2 2 2 2 2 2 2 2 2 2
+(5, 3, 0) 2 2 2 2 2 2 2 2 2 2
+(5, 4, 0) 2 2 2 2 2 2 2 2 2 2
+(5, 5, 0) 2 2 2 2 2 2 2 2 2 2
+(5, 6, 0) 2 2 2 2 2 2 2 2 2 2
+(5, 7, 0) 2 2 2 2 2 2 2 2 2 2
+(5, 8, 0) 2 2 2 2 2 2 2 2 2 2
+(5, 9, 0) 2 2 2 2 2 2 2 2 2 2
+(6, 0, 0) 3 3 3 3 3 3 3 3 3 3
+(6, 1, 0) 3 3 3 3 3 3 3 3 3 3
+(6, 2, 0) 3 3 3 3 3 3 3 3 3 3
+(6, 3, 0) 3 3 3 3 3 3 3 3 3 3
+(6, 4, 0) 3 3 3 3 3 3 3 3 3 3
+(6, 5, 0) 3 3 3 3 3 3 3 3 3 3
+(6, 6, 0) 3 3 3 3 3 3 3 3 3 3
+(6, 7, 0) 3 3 3 3 3 3 3 3 3 3
+(6, 8, 0) 3 3 3 3 3 3 3 3 3 3
+(6, 9, 0) 3 3 3 3 3 3 3 3 3 3
+(7, 0, 0) 4 4 4 4 4 4 4 4 4 4
+(7, 1, 0) 4 4 4 4 4 4 4 4 4 4
+(7, 2, 0) 4 4 4 4 4 4 4 4 4 4
+(7, 3, 0) 4 4 4 4 4 4 4 4 4 4
+(7, 4, 0) 4 4 4 4 4 4 4 4 4 4
+(7, 5, 0) 4 4 4 4 4 4 4 4 4 4
+(7, 6, 0) 4 4 4 4 4 4 4 4 4 4
+(7, 7, 0) 4 4 4 4 4 4 4 4 4 4
+(7, 8, 0) 4 4 4 4 4 4 4 4 4 4
+(7, 9, 0) 4 4 4 4 4 4 4 4 4 4
+(8, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(9, 0, 0) 2 2 2 2 2 2 2 2 2 2
+(9, 1, 0) 2 2 2 2 2 2 2 2 2 2
+(9, 2, 0) 2 2 2 2 2 2 2 2 2 2
+(9, 3, 0) 2 2 2 2 2 2 2 2 2 2
+(9, 4, 0) 2 2 2 2 2 2 2 2 2 2
+(9, 5, 0) 2 2 2 2 2 2 2 2 2 2
+(9, 6, 0) 2 2 2 2 2 2 2 2 2 2
+(9, 7, 0) 2 2 2 2 2 2 2 2 2 2
+(9, 8, 0) 2 2 2 2 2 2 2 2 2 2
+(9, 9, 0) 2 2 2 2 2 2 2 2 2 2
+(10, 0, 0) 3 3 3 3 3 3 3 3 3 3
+(10, 1, 0) 3 3 3 3 3 3 3 3 3 3
+(10, 2, 0) 3 3 3 3 3 3 3 3 3 3
+(10, 3, 0) 3 3 3 3 3 3 3 3 3 3
+(10, 4, 0) 3 3 3 3 3 3 3 3 3 3
+(10, 5, 0) 3 3 3 3 3 3 3 3 3 3
+(10, 6, 0) 3 3 3 3 3 3 3 3 3 3
+(10, 7, 0) 3 3 3 3 3 3 3 3 3 3
+(10, 8, 0) 3 3 3 3 3 3 3 3 3 3
+(10, 9, 0) 3 3 3 3 3 3 3 3 3 3
+(11, 0, 0) 4 4 4 4 4 4 4 4 4 4
+(11, 1, 0) 4 4 4 4 4 4 4 4 4 4
+(11, 2, 0) 4 4 4 4 4 4 4 4 4 4
+(11, 3, 0) 4 4 4 4 4 4 4 4 4 4
+(11, 4, 0) 4 4 4 4 4 4 4 4 4 4
+(11, 5, 0) 4 4 4 4 4 4 4 4 4 4
+(11, 6, 0) 4 4 4 4 4 4 4 4 4 4
+(11, 7, 0) 4 4 4 4 4 4 4 4 4 4
+(11, 8, 0) 4 4 4 4 4 4 4 4 4 4
+(11, 9, 0) 4 4 4 4 4 4 4 4 4 4
+(12, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(12, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(12, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(12, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(12, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(12, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(12, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(12, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(12, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(12, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(13, 0, 0) 2 2 2 2 2 2 2 2 2 2
+(13, 1, 0) 2 2 2 2 2 2 2 2 2 2
+(13, 2, 0) 2 2 2 2 2 2 2 2 2 2
+(13, 3, 0) 2 2 2 2 2 2 2 2 2 2
+(13, 4, 0) 2 2 2 2 2 2 2 2 2 2
+(13, 5, 0) 2 2 2 2 2 2 2 2 2 2
+(13, 6, 0) 2 2 2 2 2 2 2 2 2 2
+(13, 7, 0) 2 2 2 2 2 2 2 2 2 2
+(13, 8, 0) 2 2 2 2 2 2 2 2 2 2
+(13, 9, 0) 2 2 2 2 2 2 2 2 2 2
+(14, 0, 0) 3 3 3 3 3 3 3 3 3 3
+(14, 1, 0) 3 3 3 3 3 3 3 3 3 3
+(14, 2, 0) 3 3 3 3 3 3 3 3 3 3
+(14, 3, 0) 3 3 3 3 3 3 3 3 3 3
+(14, 4, 0) 3 3 3 3 3 3 3 3 3 3
+(14, 5, 0) 3 3 3 3 3 3 3 3 3 3
+(14, 6, 0) 3 3 3 3 3 3 3 3 3 3
+(14, 7, 0) 3 3 3 3 3 3 3 3 3 3
+(14, 8, 0) 3 3 3 3 3 3 3 3 3 3
+(14, 9, 0) 3 3 3 3 3 3 3 3 3 3
+(15, 0, 0) 4 4 4 4 4 4 4 4 4 4
+(15, 1, 0) 4 4 4 4 4 4 4 4 4 4
+(15, 2, 0) 4 4 4 4 4 4 4 4 4 4
+(15, 3, 0) 4 4 4 4 4 4 4 4 4 4
+(15, 4, 0) 4 4 4 4 4 4 4 4 4 4
+(15, 5, 0) 4 4 4 4 4 4 4 4 4 4
+(15, 6, 0) 4 4 4 4 4 4 4 4 4 4
+(15, 7, 0) 4 4 4 4 4 4 4 4 4 4
+(15, 8, 0) 4 4 4 4 4 4 4 4 4 4
+(15, 9, 0) 4 4 4 4 4 4 4 4 4 4
+(16, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(16, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(16, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(16, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(16, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(16, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(16, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(16, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(16, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(16, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(17, 0, 0) 2 2 2 2 2 2 2 2 2 2
+(17, 1, 0) 2 2 2 2 2 2 2 2 2 2
+(17, 2, 0) 2 2 2 2 2 2 2 2 2 2
+(17, 3, 0) 2 2 2 2 2 2 2 2 2 2
+(17, 4, 0) 2 2 2 2 2 2 2 2 2 2
+(17, 5, 0) 2 2 2 2 2 2 2 2 2 2
+(17, 6, 0) 2 2 2 2 2 2 2 2 2 2
+(17, 7, 0) 2 2 2 2 2 2 2 2 2 2
+(17, 8, 0) 2 2 2 2 2 2 2 2 2 2
+(17, 9, 0) 2 2 2 2 2 2 2 2 2 2
+(18, 0, 0) 3 3 3 3 3 3 3 3 3 3
+(18, 1, 0) 3 3 3 3 3 3 3 3 3 3
+(18, 2, 0) 3 3 3 3 3 3 3 3 3 3
+(18, 3, 0) 3 3 3 3 3 3 3 3 3 3
+(18, 4, 0) 3 3 3 3 3 3 3 3 3 3
+(18, 5, 0) 3 3 3 3 3 3 3 3 3 3
+(18, 6, 0) 3 3 3 3 3 3 3 3 3 3
+(18, 7, 0) 3 3 3 3 3 3 3 3 3 3
+(18, 8, 0) 3 3 3 3 3 3 3 3 3 3
+(18, 9, 0) 3 3 3 3 3 3 3 3 3 3
+(19, 0, 0) 4 4 4 4 4 4 4 4 4 4
+(19, 1, 0) 4 4 4 4 4 4 4 4 4 4
+(19, 2, 0) 4 4 4 4 4 4 4 4 4 4
+(19, 3, 0) 4 4 4 4 4 4 4 4 4 4
+(19, 4, 0) 4 4 4 4 4 4 4 4 4 4
+(19, 5, 0) 4 4 4 4 4 4 4 4 4 4
+(19, 6, 0) 4 4 4 4 4 4 4 4 4 4
+(19, 7, 0) 4 4 4 4 4 4 4 4 4 4
+(19, 8, 0) 4 4 4 4 4 4 4 4 4 4
+(19, 9, 0) 4 4 4 4 4 4 4 4 4 4
+(20, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(20, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(20, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(20, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(20, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(20, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(20, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(20, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(20, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(20, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(21, 0, 0) 2 2 2 2 2 2 2 2 2 2
+(21, 1, 0) 2 2 2 2 2 2 2 2 2 2
+(21, 2, 0) 2 2 2 2 2 2 2 2 2 2
+(21, 3, 0) 2 2 2 2 2 2 2 2 2 2
+(21, 4, 0) 2 2 2 2 2 2 2 2 2 2
+(21, 5, 0) 2 2 2 2 2 2 2 2 2 2
+(21, 6, 0) 2 2 2 2 2 2 2 2 2 2
+(21, 7, 0) 2 2 2 2 2 2 2 2 2 2
+(21, 8, 0) 2 2 2 2 2 2 2 2 2 2
+(21, 9, 0) 2 2 2 2 2 2 2 2 2 2
+(22, 0, 0) 3 3 3 3 3 3 3 3 3 3
+(22, 1, 0) 3 3 3 3 3 3 3 3 3 3
+(22, 2, 0) 3 3 3 3 3 3 3 3 3 3
+(22, 3, 0) 3 3 3 3 3 3 3 3 3 3
+(22, 4, 0) 3 3 3 3 3 3 3 3 3 3
+(22, 5, 0) 3 3 3 3 3 3 3 3 3 3
+(22, 6, 0) 3 3 3 3 3 3 3 3 3 3
+(22, 7, 0) 3 3 3 3 3 3 3 3 3 3
+(22, 8, 0) 3 3 3 3 3 3 3 3 3 3
+(22, 9, 0) 3 3 3 3 3 3 3 3 3 3
+(23, 0, 0) 4 4 4 4 4 4 4 4 4 4
+(23, 1, 0) 4 4 4 4 4 4 4 4 4 4
+(23, 2, 0) 4 4 4 4 4 4 4 4 4 4
+(23, 3, 0) 4 4 4 4 4 4 4 4 4 4
+(23, 4, 0) 4 4 4 4 4 4 4 4 4 4
+(23, 5, 0) 4 4 4 4 4 4 4 4 4 4
+(23, 6, 0) 4 4 4 4 4 4 4 4 4 4
+(23, 7, 0) 4 4 4 4 4 4 4 4 4 4
+(23, 8, 0) 4 4 4 4 4 4 4 4 4 4
+(23, 9, 0) 4 4 4 4 4 4 4 4 4 4
+(24, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(24, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(24, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(24, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(24, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(24, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(24, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(24, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(24, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(24, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(25, 0, 0) 2 2 2 2 2 2 2 2 2 2
+(25, 1, 0) 2 2 2 2 2 2 2 2 2 2
+(25, 2, 0) 2 2 2 2 2 2 2 2 2 2
+(25, 3, 0) 2 2 2 2 2 2 2 2 2 2
+(25, 4, 0) 2 2 2 2 2 2 2 2 2 2
+(25, 5, 0) 2 2 2 2 2 2 2 2 2 2
+(25, 6, 0) 2 2 2 2 2 2 2 2 2 2
+(25, 7, 0) 2 2 2 2 2 2 2 2 2 2
+(25, 8, 0) 2 2 2 2 2 2 2 2 2 2
+(25, 9, 0) 2 2 2 2 2 2 2 2 2 2
+(26, 0, 0) 3 3 3 3 3 3 3 3 3 3
+(26, 1, 0) 3 3 3 3 3 3 3 3 3 3
+(26, 2, 0) 3 3 3 3 3 3 3 3 3 3
+(26, 3, 0) 3 3 3 3 3 3 3 3 3 3
+(26, 4, 0) 3 3 3 3 3 3 3 3 3 3
+(26, 5, 0) 3 3 3 3 3 3 3 3 3 3
+(26, 6, 0) 3 3 3 3 3 3 3 3 3 3
+(26, 7, 0) 3 3 3 3 3 3 3 3 3 3
+(26, 8, 0) 3 3 3 3 3 3 3 3 3 3
+(26, 9, 0) 3 3 3 3 3 3 3 3 3 3
+(27, 0, 0) 4 4 4 4 4 4 4 4 4 4
+(27, 1, 0) 4 4 4 4 4 4 4 4 4 4
+(27, 2, 0) 4 4 4 4 4 4 4 4 4 4
+(27, 3, 0) 4 4 4 4 4 4 4 4 4 4
+(27, 4, 0) 4 4 4 4 4 4 4 4 4 4
+(27, 5, 0) 4 4 4 4 4 4 4 4 4 4
+(27, 6, 0) 4 4 4 4 4 4 4 4 4 4
+(27, 7, 0) 4 4 4 4 4 4 4 4 4 4
+(27, 8, 0) 4 4 4 4 4 4 4 4 4 4
+(27, 9, 0) 4 4 4 4 4 4 4 4 4 4
+(28, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(28, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(28, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(28, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(28, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(28, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(28, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(28, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(28, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(28, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(29, 0, 0) 2 2 2 2 2 2 2 2 2 2
+(29, 1, 0) 2 2 2 2 2 2 2 2 2 2
+(29, 2, 0) 2 2 2 2 2 2 2 2 2 2
+(29, 3, 0) 2 2 2 2 2 2 2 2 2 2
+(29, 4, 0) 2 2 2 2 2 2 2 2 2 2
+(29, 5, 0) 2 2 2 2 2 2 2 2 2 2
+(29, 6, 0) 2 2 2 2 2 2 2 2 2 2
+(29, 7, 0) 2 2 2 2 2 2 2 2 2 2
+(29, 8, 0) 2 2 2 2 2 2 2 2 2 2
+(29, 9, 0) 2 2 2 2 2 2 2 2 2 2
+(30, 0, 0) 3 3 3 3 3 3 3 3 3 3
+(30, 1, 0) 3 3 3 3 3 3 3 3 3 3
+(30, 2, 0) 3 3 3 3 3 3 3 3 3 3
+(30, 3, 0) 3 3 3 3 3 3 3 3 3 3
+(30, 4, 0) 3 3 3 3 3 3 3 3 3 3
+(30, 5, 0) 3 3 3 3 3 3 3 3 3 3
+(30, 6, 0) 3 3 3 3 3 3 3 3 3 3
+(30, 7, 0) 3 3 3 3 3 3 3 3 3 3
+(30, 8, 0) 3 3 3 3 3 3 3 3 3 3
+(30, 9, 0) 3 3 3 3 3 3 3 3 3 3
+(31, 0, 0) 4 4 4 4 4 4 4 4 4 4
+(31, 1, 0) 4 4 4 4 4 4 4 4 4 4
+(31, 2, 0) 4 4 4 4 4 4 4 4 4 4
+(31, 3, 0) 4 4 4 4 4 4 4 4 4 4
+(31, 4, 0) 4 4 4 4 4 4 4 4 4 4
+(31, 5, 0) 4 4 4 4 4 4 4 4 4 4
+(31, 6, 0) 4 4 4 4 4 4 4 4 4 4
+(31, 7, 0) 4 4 4 4 4 4 4 4 4 4
+(31, 8, 0) 4 4 4 4 4 4 4 4 4 4
+(31, 9, 0) 4 4 4 4 4 4 4 4 4 4
+(32, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(32, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(32, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(32, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(32, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(32, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(32, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(32, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(32, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(32, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(33, 0, 0) 2 2 2 2 2 2 2 2 2 2
+(33, 1, 0) 2 2 2 2 2 2 2 2 2 2
+(33, 2, 0) 2 2 2 2 2 2 2 2 2 2
+(33, 3, 0) 2 2 2 2 2 2 2 2 2 2
+(33, 4, 0) 2 2 2 2 2 2 2 2 2 2
+(33, 5, 0) 2 2 2 2 2 2 2 2 2 2
+(33, 6, 0) 2 2 2 2 2 2 2 2 2 2
+(33, 7, 0) 2 2 2 2 2 2 2 2 2 2
+(33, 8, 0) 2 2 2 2 2 2 2 2 2 2
+(33, 9, 0) 2 2 2 2 2 2 2 2 2 2
+(34, 0, 0) 3 3 3 3 3 3 3 3 3 3
+(34, 1, 0) 3 3 3 3 3 3 3 3 3 3
+(34, 2, 0) 3 3 3 3 3 3 3 3 3 3
+(34, 3, 0) 3 3 3 3 3 3 3 3 3 3
+(34, 4, 0) 3 3 3 3 3 3 3 3 3 3
+(34, 5, 0) 3 3 3 3 3 3 3 3 3 3
+(34, 6, 0) 3 3 3 3 3 3 3 3 3 3
+(34, 7, 0) 3 3 3 3 3 3 3 3 3 3
+(34, 8, 0) 3 3 3 3 3 3 3 3 3 3
+(34, 9, 0) 3 3 3 3 3 3 3 3 3 3
+(35, 0, 0) 4 4 4 4 4 4 4 4 4 4
+(35, 1, 0) 4 4 4 4 4 4 4 4 4 4
+(35, 2, 0) 4 4 4 4 4 4 4 4 4 4
+(35, 3, 0) 4 4 4 4 4 4 4 4 4 4
+(35, 4, 0) 4 4 4 4 4 4 4 4 4 4
+(35, 5, 0) 4 4 4 4 4 4 4 4 4 4
+(35, 6, 0) 4 4 4 4 4 4 4 4 4 4
+(35, 7, 0) 4 4 4 4 4 4 4 4 4 4
+(35, 8, 0) 4 4 4 4 4 4 4 4 4 4
+(35, 9, 0) 4 4 4 4 4 4 4 4 4 4
+(36, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(36, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(36, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(36, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(36, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(36, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(36, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(36, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(36, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(36, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(37, 0, 0) 2 2 2 2 2 2 2 2 2 2
+(37, 1, 0) 2 2 2 2 2 2 2 2 2 2
+(37, 2, 0) 2 2 2 2 2 2 2 2 2 2
+(37, 3, 0) 2 2 2 2 2 2 2 2 2 2
+(37, 4, 0) 2 2 2 2 2 2 2 2 2 2
+(37, 5, 0) 2 2 2 2 2 2 2 2 2 2
+(37, 6, 0) 2 2 2 2 2 2 2 2 2 2
+(37, 7, 0) 2 2 2 2 2 2 2 2 2 2
+(37, 8, 0) 2 2 2 2 2 2 2 2 2 2
+(37, 9, 0) 2 2 2 2 2 2 2 2 2 2
+(38, 0, 0) 3 3 3 3 3 3 3 3 3 3
+(38, 1, 0) 3 3 3 3 3 3 3 3 3 3
+(38, 2, 0) 3 3 3 3 3 3 3 3 3 3
+(38, 3, 0) 3 3 3 3 3 3 3 3 3 3
+(38, 4, 0) 3 3 3 3 3 3 3 3 3 3
+(38, 5, 0) 3 3 3 3 3 3 3 3 3 3
+(38, 6, 0) 3 3 3 3 3 3 3 3 3 3
+(38, 7, 0) 3 3 3 3 3 3 3 3 3 3
+(38, 8, 0) 3 3 3 3 3 3 3 3 3 3
+(38, 9, 0) 3 3 3 3 3 3 3 3 3 3
+(39, 0, 0) 4 4 4 4 4 4 4 4 4 4
+(39, 1, 0) 4 4 4 4 4 4 4 4 4 4
+(39, 2, 0) 4 4 4 4 4 4 4 4 4 4
+(39, 3, 0) 4 4 4 4 4 4 4 4 4 4
+(39, 4, 0) 4 4 4 4 4 4 4 4 4 4
+(39, 5, 0) 4 4 4 4 4 4 4 4 4 4
+(39, 6, 0) 4 4 4 4 4 4 4 4 4 4
+(39, 7, 0) 4 4 4 4 4 4 4 4 4 4
+(39, 8, 0) 4 4 4 4 4 4 4 4 4 4
+(39, 9, 0) 4 4 4 4 4 4 4 4 4 4
+(40, 0, 0) 10 10 10 10 10 10 10 10 10 10
+(40, 1, 0) 10 10 10 10 10 10 10 10 10 10
+(40, 2, 0) 10 10 10 10 10 10 10 10 10 10
+(40, 3, 0) 10 10 10 10 10 10 10 10 10 10
+(40, 4, 0) 10 10 10 10 10 10 10 10 10 10
+(40, 5, 0) 10 10 10 10 10 10 10 10 10 10
+(40, 6, 0) 10 10 10 10 10 10 10 10 10 10
+(40, 7, 0) 10 10 10 10 10 10 10 10 10 10
+(40, 8, 0) 10 10 10 10 10 10 10 10 10 10
+(40, 9, 0) 10 10 10 10 10 10 10 10 10 10
+(41, 0, 0) 20 20 20 20 20 20 20 20 20 20
+(41, 1, 0) 20 20 20 20 20 20 20 20 20 20
+(41, 2, 0) 20 20 20 20 20 20 20 20 20 20
+(41, 3, 0) 20 20 20 20 20 20 20 20 20 20
+(41, 4, 0) 20 20 20 20 20 20 20 20 20 20
+(41, 5, 0) 20 20 20 20 20 20 20 20 20 20
+(41, 6, 0) 20 20 20 20 20 20 20 20 20 20
+(41, 7, 0) 20 20 20 20 20 20 20 20 20 20
+(41, 8, 0) 20 20 20 20 20 20 20 20 20 20
+(41, 9, 0) 20 20 20 20 20 20 20 20 20 20
+(42, 0, 0) 30 30 30 30 30 30 30 30 30 30
+(42, 1, 0) 30 30 30 30 30 30 30 30 30 30
+(42, 2, 0) 30 30 30 30 30 30 30 30 30 30
+(42, 3, 0) 30 30 30 30 30 30 30 30 30 30
+(42, 4, 0) 30 30 30 30 30 30 30 30 30 30
+(42, 5, 0) 30 30 30 30 30 30 30 30 30 30
+(42, 6, 0) 30 30 30 30 30 30 30 30 30 30
+(42, 7, 0) 30 30 30 30 30 30 30 30 30 30
+(42, 8, 0) 30 30 30 30 30 30 30 30 30 30
+(42, 9, 0) 30 30 30 30 30 30 30 30 30 30
+(43, 0, 0) 40 40 40 40 40 40 40 40 40 40
+(43, 1, 0) 40 40 40 40 40 40 40 40 40 40
+(43, 2, 0) 40 40 40 40 40 40 40 40 40 40
+(43, 3, 0) 40 40 40 40 40 40 40 40 40 40
+(43, 4, 0) 40 40 40 40 40 40 40 40 40 40
+(43, 5, 0) 40 40 40 40 40 40 40 40 40 40
+(43, 6, 0) 40 40 40 40 40 40 40 40 40 40
+(43, 7, 0) 40 40 40 40 40 40 40 40 40 40
+(43, 8, 0) 40 40 40 40 40 40 40 40 40 40
+(43, 9, 0) 40 40 40 40 40 40 40 40 40 40
+(44, 0, 0) 10 10 10 10 10 10 10 10 10 10
+(44, 1, 0) 10 10 10 10 10 10 10 10 10 10
+(44, 2, 0) 10 10 10 10 10 10 10 10 10 10
+(44, 3, 0) 10 10 10 10 10 10 10 10 10 10
+(44, 4, 0) 10 10 10 10 10 10 10 10 10 10
+(44, 5, 0) 10 10 10 10 10 10 10 10 10 10
+(44, 6, 0) 10 10 10 10 10 10 10 10 10 10
+(44, 7, 0) 10 10 10 10 10 10 10 10 10 10
+(44, 8, 0) 10 10 10 10 10 10 10 10 10 10
+(44, 9, 0) 10 10 10 10 10 10 10 10 10 10
+(45, 0, 0) 20 20 20 20 20 20 20 20 20 20
+(45, 1, 0) 20 20 20 20 20 20 20 20 20 20
+(45, 2, 0) 20 20 20 20 20 20 20 20 20 20
+(45, 3, 0) 20 20 20 20 20 20 20 20 20 20
+(45, 4, 0) 20 20 20 20 20 20 20 20 20 20
+(45, 5, 0) 20 20 20 20 20 20 20 20 20 20
+(45, 6, 0) 20 20 20 20 20 20 20 20 20 20
+(45, 7, 0) 20 20 20 20 20 20 20 20 20 20
+(45, 8, 0) 20 20 20 20 20 20 20 20 20 20
+(45, 9, 0) 20 20 20 20 20 20 20 20 20 20
+(46, 0, 0) 30 30 30 30 30 30 30 30 30 30
+(46, 1, 0) 30 30 30 30 30 30 30 30 30 30
+(46, 2, 0) 30 30 30 30 30 30 30 30 30 30
+(46, 3, 0) 30 30 30 30 30 30 30 30 30 30
+(46, 4, 0) 30 30 30 30 30 30 30 30 30 30
+(46, 5, 0) 30 30 30 30 30 30 30 30 30 30
+(46, 6, 0) 30 30 30 30 30 30 30 30 30 30
+(46, 7, 0) 30 30 30 30 30 30 30 30 30 30
+(46, 8, 0) 30 30 30 30 30 30 30 30 30 30
+(46, 9, 0) 30 30 30 30 30 30 30 30 30 30
+(47, 0, 0) 40 40 40 40 40 40 40 40 40 40
+(47, 1, 0) 40 40 40 40 40 40 40 40 40 40
+(47, 2, 0) 40 40 40 40 40 40 40 40 40 40
+(47, 3, 0) 40 40 40 40 40 40 40 40 40 40
+(47, 4, 0) 40 40 40 40 40 40 40 40 40 40
+(47, 5, 0) 40 40 40 40 40 40 40 40 40 40
+(47, 6, 0) 40 40 40 40 40 40 40 40 40 40
+(47, 7, 0) 40 40 40 40 40 40 40 40 40 40
+(47, 8, 0) 40 40 40 40 40 40 40 40 40 40
+(47, 9, 0) 40 40 40 40 40 40 40 40 40 40
+(48, 0, 0) 10 10 10 10 10 10 10 10 10 10
+(48, 1, 0) 10 10 10 10 10 10 10 10 10 10
+(48, 2, 0) 10 10 10 10 10 10 10 10 10 10
+(48, 3, 0) 10 10 10 10 10 10 10 10 10 10
+(48, 4, 0) 10 10 10 10 10 10 10 10 10 10
+(48, 5, 0) 10 10 10 10 10 10 10 10 10 10
+(48, 6, 0) 10 10 10 10 10 10 10 10 10 10
+(48, 7, 0) 10 10 10 10 10 10 10 10 10 10
+(48, 8, 0) 10 10 10 10 10 10 10 10 10 10
+(48, 9, 0) 10 10 10 10 10 10 10 10 10 10
+(49, 0, 0) 20 20 20 20 20 20 20 20 20 20
+(49, 1, 0) 20 20 20 20 20 20 20 20 20 20
+(49, 2, 0) 20 20 20 20 20 20 20 20 20 20
+(49, 3, 0) 20 20 20 20 20 20 20 20 20 20
+(49, 4, 0) 20 20 20 20 20 20 20 20 20 20
+(49, 5, 0) 20 20 20 20 20 20 20 20 20 20
+(49, 6, 0) 20 20 20 20 20 20 20 20 20 20
+(49, 7, 0) 20 20 20 20 20 20 20 20 20 20
+(49, 8, 0) 20 20 20 20 20 20 20 20 20 20
+(49, 9, 0) 20 20 20 20 20 20 20 20 20 20
+(50, 0, 0) 30 30 30 30 30 30 30 30 30 30
+(50, 1, 0) 30 30 30 30 30 30 30 30 30 30
+(50, 2, 0) 30 30 30 30 30 30 30 30 30 30
+(50, 3, 0) 30 30 30 30 30 30 30 30 30 30
+(50, 4, 0) 30 30 30 30 30 30 30 30 30 30
+(50, 5, 0) 30 30 30 30 30 30 30 30 30 30
+(50, 6, 0) 30 30 30 30 30 30 30 30 30 30
+(50, 7, 0) 30 30 30 30 30 30 30 30 30 30
+(50, 8, 0) 30 30 30 30 30 30 30 30 30 30
+(50, 9, 0) 30 30 30 30 30 30 30 30 30 30
+(51, 0, 0) 40 40 40 40 40 40 40 40 40 40
+(51, 1, 0) 40 40 40 40 40 40 40 40 40 40
+(51, 2, 0) 40 40 40 40 40 40 40 40 40 40
+(51, 3, 0) 40 40 40 40 40 40 40 40 40 40
+(51, 4, 0) 40 40 40 40 40 40 40 40 40 40
+(51, 5, 0) 40 40 40 40 40 40 40 40 40 40
+(51, 6, 0) 40 40 40 40 40 40 40 40 40 40
+(51, 7, 0) 40 40 40 40 40 40 40 40 40 40
+(51, 8, 0) 40 40 40 40 40 40 40 40 40 40
+(51, 9, 0) 40 40 40 40 40 40 40 40 40 40
+(52, 0, 0) 10 10 10 10 10 10 10 10 10 10
+(52, 1, 0) 10 10 10 10 10 10 10 10 10 10
+(52, 2, 0) 10 10 10 10 10 10 10 10 10 10
+(52, 3, 0) 10 10 10 10 10 10 10 10 10 10
+(52, 4, 0) 10 10 10 10 10 10 10 10 10 10
+(52, 5, 0) 10 10 10 10 10 10 10 10 10 10
+(52, 6, 0) 10 10 10 10 10 10 10 10 10 10
+(52, 7, 0) 10 10 10 10 10 10 10 10 10 10
+(52, 8, 0) 10 10 10 10 10 10 10 10 10 10
+(52, 9, 0) 10 10 10 10 10 10 10 10 10 10
+(53, 0, 0) 20 20 20 20 20 20 20 20 20 20
+(53, 1, 0) 20 20 20 20 20 20 20 20 20 20
+(53, 2, 0) 20 20 20 20 20 20 20 20 20 20
+(53, 3, 0) 20 20 20 20 20 20 20 20 20 20
+(53, 4, 0) 20 20 20 20 20 20 20 20 20 20
+(53, 5, 0) 20 20 20 20 20 20 20 20 20 20
+(53, 6, 0) 20 20 20 20 20 20 20 20 20 20
+(53, 7, 0) 20 20 20 20 20 20 20 20 20 20
+(53, 8, 0) 20 20 20 20 20 20 20 20 20 20
+(53, 9, 0) 20 20 20 20 20 20 20 20 20 20
+(54, 0, 0) 30 30 30 30 30 30 30 30 30 30
+(54, 1, 0) 30 30 30 30 30 30 30 30 30 30
+(54, 2, 0) 30 30 30 30 30 30 30 30 30 30
+(54, 3, 0) 30 30 30 30 30 30 30 30 30 30
+(54, 4, 0) 30 30 30 30 30 30 30 30 30 30
+(54, 5, 0) 30 30 30 30 30 30 30 30 30 30
+(54, 6, 0) 30 30 30 30 30 30 30 30 30 30
+(54, 7, 0) 30 30 30 30 30 30 30 30 30 30
+(54, 8, 0) 30 30 30 30 30 30 30 30 30 30
+(54, 9, 0) 30 30 30 30 30 30 30 30 30 30
+(55, 0, 0) 40 40 40 40 40 40 40 40 40 40
+(55, 1, 0) 40 40 40 40 40 40 40 40 40 40
+(55, 2, 0) 40 40 40 40 40 40 40 40 40 40
+(55, 3, 0) 40 40 40 40 40 40 40 40 40 40
+(55, 4, 0) 40 40 40 40 40 40 40 40 40 40
+(55, 5, 0) 40 40 40 40 40 40 40 40 40 40
+(55, 6, 0) 40 40 40 40 40 40 40 40 40 40
+(55, 7, 0) 40 40 40 40 40 40 40 40 40 40
+(55, 8, 0) 40 40 40 40 40 40 40 40 40 40
+(55, 9, 0) 40 40 40 40 40 40 40 40 40 40
+(56, 0, 0) 10 10 10 10 10 10 10 10 10 10
+(56, 1, 0) 10 10 10 10 10 10 10 10 10 10
+(56, 2, 0) 10 10 10 10 10 10 10 10 10 10
+(56, 3, 0) 10 10 10 10 10 10 10 10 10 10
+(56, 4, 0) 10 10 10 10 10 10 10 10 10 10
+(56, 5, 0) 10 10 10 10 10 10 10 10 10 10
+(56, 6, 0) 10 10 10 10 10 10 10 10 10 10
+(56, 7, 0) 10 10 10 10 10 10 10 10 10 10
+(56, 8, 0) 10 10 10 10 10 10 10 10 10 10
+(56, 9, 0) 10 10 10 10 10 10 10 10 10 10
+(57, 0, 0) 20 20 20 20 20 20 20 20 20 20
+(57, 1, 0) 20 20 20 20 20 20 20 20 20 20
+(57, 2, 0) 20 20 20 20 20 20 20 20 20 20
+(57, 3, 0) 20 20 20 20 20 20 20 20 20 20
+(57, 4, 0) 20 20 20 20 20 20 20 20 20 20
+(57, 5, 0) 20 20 20 20 20 20 20 20 20 20
+(57, 6, 0) 20 20 20 20 20 20 20 20 20 20
+(57, 7, 0) 20 20 20 20 20 20 20 20 20 20
+(57, 8, 0) 20 20 20 20 20 20 20 20 20 20
+(57, 9, 0) 20 20 20 20 20 20 20 20 20 20
+(58, 0, 0) 30 30 30 30 30 30 30 30 30 30
+(58, 1, 0) 30 30 30 30 30 30 30 30 30 30
+(58, 2, 0) 30 30 30 30 30 30 30 30 30 30
+(58, 3, 0) 30 30 30 30 30 30 30 30 30 30
+(58, 4, 0) 30 30 30 30 30 30 30 30 30 30
+(58, 5, 0) 30 30 30 30 30 30 30 30 30 30
+(58, 6, 0) 30 30 30 30 30 30 30 30 30 30
+(58, 7, 0) 30 30 30 30 30 30 30 30 30 30
+(58, 8, 0) 30 30 30 30 30 30 30 30 30 30
+(58, 9, 0) 30 30 30 30 30 30 30 30 30 30
+(59, 0, 0) 40 40 40 40 40 40 40 40 40 40
+(59, 1, 0) 40 40 40 40 40 40 40 40 40 40
+(59, 2, 0) 40 40 40 40 40 40 40 40 40 40
+(59, 3, 0) 40 40 40 40 40 40 40 40 40 40
+(59, 4, 0) 40 40 40 40 40 40 40 40 40 40
+(59, 5, 0) 40 40 40 40 40 40 40 40 40 40
+(59, 6, 0) 40 40 40 40 40 40 40 40 40 40
+(59, 7, 0) 40 40 40 40 40 40 40 40 40 40
+(59, 8, 0) 40 40 40 40 40 40 40 40 40 40
+(59, 9, 0) 40 40 40 40 40 40 40 40 40 40
+(60, 0, 0) 10 10 10 10 10 10 10 10 10 10
+(60, 1, 0) 10 10 10 10 10 10 10 10 10 10
+(60, 2, 0) 10 10 10 10 10 10 10 10 10 10
+(60, 3, 0) 10 10 10 10 10 10 10 10 10 10
+(60, 4, 0) 10 10 10 10 10 10 10 10 10 10
+(60, 5, 0) 10 10 10 10 10 10 10 10 10 10
+(60, 6, 0) 10 10 10 10 10 10 10 10 10 10
+(60, 7, 0) 10 10 10 10 10 10 10 10 10 10
+(60, 8, 0) 10 10 10 10 10 10 10 10 10 10
+(60, 9, 0) 10 10 10 10 10 10 10 10 10 10
+(61, 0, 0) 20 20 20 20 20 20 20 20 20 20
+(61, 1, 0) 20 20 20 20 20 20 20 20 20 20
+(61, 2, 0) 20 20 20 20 20 20 20 20 20 20
+(61, 3, 0) 20 20 20 20 20 20 20 20 20 20
+(61, 4, 0) 20 20 20 20 20 20 20 20 20 20
+(61, 5, 0) 20 20 20 20 20 20 20 20 20 20
+(61, 6, 0) 20 20 20 20 20 20 20 20 20 20
+(61, 7, 0) 20 20 20 20 20 20 20 20 20 20
+(61, 8, 0) 20 20 20 20 20 20 20 20 20 20
+(61, 9, 0) 20 20 20 20 20 20 20 20 20 20
+(62, 0, 0) 30 30 30 30 30 30 30 30 30 30
+(62, 1, 0) 30 30 30 30 30 30 30 30 30 30
+(62, 2, 0) 30 30 30 30 30 30 30 30 30 30
+(62, 3, 0) 30 30 30 30 30 30 30 30 30 30
+(62, 4, 0) 30 30 30 30 30 30 30 30 30 30
+(62, 5, 0) 30 30 30 30 30 30 30 30 30 30
+(62, 6, 0) 30 30 30 30 30 30 30 30 30 30
+(62, 7, 0) 30 30 30 30 30 30 30 30 30 30
+(62, 8, 0) 30 30 30 30 30 30 30 30 30 30
+(62, 9, 0) 30 30 30 30 30 30 30 30 30 30
+(63, 0, 0) 40 40 40 40 40 40 40 40 40 40
+(63, 1, 0) 40 40 40 40 40 40 40 40 40 40
+(63, 2, 0) 40 40 40 40 40 40 40 40 40 40
+(63, 3, 0) 40 40 40 40 40 40 40 40 40 40
+(63, 4, 0) 40 40 40 40 40 40 40 40 40 40
+(63, 5, 0) 40 40 40 40 40 40 40 40 40 40
+(63, 6, 0) 40 40 40 40 40 40 40 40 40 40
+(63, 7, 0) 40 40 40 40 40 40 40 40 40 40
+(63, 8, 0) 40 40 40 40 40 40 40 40 40 40
+(63, 9, 0) 40 40 40 40 40 40 40 40 40 40
+(64, 0, 0) 10 10 10 10 10 10 10 10 10 10
+(64, 1, 0) 10 10 10 10 10 10 10 10 10 10
+(64, 2, 0) 10 10 10 10 10 10 10 10 10 10
+(64, 3, 0) 10 10 10 10 10 10 10 10 10 10
+(64, 4, 0) 10 10 10 10 10 10 10 10 10 10
+(64, 5, 0) 10 10 10 10 10 10 10 10 10 10
+(64, 6, 0) 10 10 10 10 10 10 10 10 10 10
+(64, 7, 0) 10 10 10 10 10 10 10 10 10 10
+(64, 8, 0) 10 10 10 10 10 10 10 10 10 10
+(64, 9, 0) 10 10 10 10 10 10 10 10 10 10
+(65, 0, 0) 20 20 20 20 20 20 20 20 20 20
+(65, 1, 0) 20 20 20 20 20 20 20 20 20 20
+(65, 2, 0) 20 20 20 20 20 20 20 20 20 20
+(65, 3, 0) 20 20 20 20 20 20 20 20 20 20
+(65, 4, 0) 20 20 20 20 20 20 20 20 20 20
+(65, 5, 0) 20 20 20 20 20 20 20 20 20 20
+(65, 6, 0) 20 20 20 20 20 20 20 20 20 20
+(65, 7, 0) 20 20 20 20 20 20 20 20 20 20
+(65, 8, 0) 20 20 20 20 20 20 20 20 20 20
+(65, 9, 0) 20 20 20 20 20 20 20 20 20 20
+(66, 0, 0) 30 30 30 30 30 30 30 30 30 30
+(66, 1, 0) 30 30 30 30 30 30 30 30 30 30
+(66, 2, 0) 30 30 30 30 30 30 30 30 30 30
+(66, 3, 0) 30 30 30 30 30 30 30 30 30 30
+(66, 4, 0) 30 30 30 30 30 30 30 30 30 30
+(66, 5, 0) 30 30 30 30 30 30 30 30 30 30
+(66, 6, 0) 30 30 30 30 30 30 30 30 30 30
+(66, 7, 0) 30 30 30 30 30 30 30 30 30 30
+(66, 8, 0) 30 30 30 30 30 30 30 30 30 30
+(66, 9, 0) 30 30 30 30 30 30 30 30 30 30
+(67, 0, 0) 40 40 40 40 40 40 40 40 40 40
+(67, 1, 0) 40 40 40 40 40 40 40 40 40 40
+(67, 2, 0) 40 40 40 40 40 40 40 40 40 40
+(67, 3, 0) 40 40 40 40 40 40 40 40 40 40
+(67, 4, 0) 40 40 40 40 40 40 40 40 40 40
+(67, 5, 0) 40 40 40 40 40 40 40 40 40 40
+(67, 6, 0) 40 40 40 40 40 40 40 40 40 40
+(67, 7, 0) 40 40 40 40 40 40 40 40 40 40
+(67, 8, 0) 40 40 40 40 40 40 40 40 40 40
+(67, 9, 0) 40 40 40 40 40 40 40 40 40 40
+(68, 0, 0) 10 10 10 10 10 10 10 10 10 10
+(68, 1, 0) 10 10 10 10 10 10 10 10 10 10
+(68, 2, 0) 10 10 10 10 10 10 10 10 10 10
+(68, 3, 0) 10 10 10 10 10 10 10 10 10 10
+(68, 4, 0) 10 10 10 10 10 10 10 10 10 10
+(68, 5, 0) 10 10 10 10 10 10 10 10 10 10
+(68, 6, 0) 10 10 10 10 10 10 10 10 10 10
+(68, 7, 0) 10 10 10 10 10 10 10 10 10 10
+(68, 8, 0) 10 10 10 10 10 10 10 10 10 10
+(68, 9, 0) 10 10 10 10 10 10 10 10 10 10
+(69, 0, 0) 20 20 20 20 20 20 20 20 20 20
+(69, 1, 0) 20 20 20 20 20 20 20 20 20 20
+(69, 2, 0) 20 20 20 20 20 20 20 20 20 20
+(69, 3, 0) 20 20 20 20 20 20 20 20 20 20
+(69, 4, 0) 20 20 20 20 20 20 20 20 20 20
+(69, 5, 0) 20 20 20 20 20 20 20 20 20 20
+(69, 6, 0) 20 20 20 20 20 20 20 20 20 20
+(69, 7, 0) 20 20 20 20 20 20 20 20 20 20
+(69, 8, 0) 20 20 20 20 20 20 20 20 20 20
+(69, 9, 0) 20 20 20 20 20 20 20 20 20 20
+(70, 0, 0) 30 30 30 30 30 30 30 30 30 30
+(70, 1, 0) 30 30 30 30 30 30 30 30 30 30
+(70, 2, 0) 30 30 30 30 30 30 30 30 30 30
+(70, 3, 0) 30 30 30 30 30 30 30 30 30 30
+(70, 4, 0) 30 30 30 30 30 30 30 30 30 30
+(70, 5, 0) 30 30 30 30 30 30 30 30 30 30
+(70, 6, 0) 30 30 30 30 30 30 30 30 30 30
+(70, 7, 0) 30 30 30 30 30 30 30 30 30 30
+(70, 8, 0) 30 30 30 30 30 30 30 30 30 30
+(70, 9, 0) 30 30 30 30 30 30 30 30 30 30
+(71, 0, 0) 40 40 40 40 40 40 40 40 40 40
+(71, 1, 0) 40 40 40 40 40 40 40 40 40 40
+(71, 2, 0) 40 40 40 40 40 40 40 40 40 40
+(71, 3, 0) 40 40 40 40 40 40 40 40 40 40
+(71, 4, 0) 40 40 40 40 40 40 40 40 40 40
+(71, 5, 0) 40 40 40 40 40 40 40 40 40 40
+(71, 6, 0) 40 40 40 40 40 40 40 40 40 40
+(71, 7, 0) 40 40 40 40 40 40 40 40 40 40
+(71, 8, 0) 40 40 40 40 40 40 40 40 40 40
+(71, 9, 0) 40 40 40 40 40 40 40 40 40 40
+(72, 0, 0) 10 10 10 10 10 10 10 10 10 10
+(72, 1, 0) 10 10 10 10 10 10 10 10 10 10
+(72, 2, 0) 10 10 10 10 10 10 10 10 10 10
+(72, 3, 0) 10 10 10 10 10 10 10 10 10 10
+(72, 4, 0) 10 10 10 10 10 10 10 10 10 10
+(72, 5, 0) 10 10 10 10 10 10 10 10 10 10
+(72, 6, 0) 10 10 10 10 10 10 10 10 10 10
+(72, 7, 0) 10 10 10 10 10 10 10 10 10 10
+(72, 8, 0) 10 10 10 10 10 10 10 10 10 10
+(72, 9, 0) 10 10 10 10 10 10 10 10 10 10
+(73, 0, 0) 20 20 20 20 20 20 20 20 20 20
+(73, 1, 0) 20 20 20 20 20 20 20 20 20 20
+(73, 2, 0) 20 20 20 20 20 20 20 20 20 20
+(73, 3, 0) 20 20 20 20 20 20 20 20 20 20
+(73, 4, 0) 20 20 20 20 20 20 20 20 20 20
+(73, 5, 0) 20 20 20 20 20 20 20 20 20 20
+(73, 6, 0) 20 20 20 20 20 20 20 20 20 20
+(73, 7, 0) 20 20 20 20 20 20 20 20 20 20
+(73, 8, 0) 20 20 20 20 20 20 20 20 20 20
+(73, 9, 0) 20 20 20 20 20 20 20 20 20 20
+(74, 0, 0) 30 30 30 30 30 30 30 30 30 30
+(74, 1, 0) 30 30 30 30 30 30 30 30 30 30
+(74, 2, 0) 30 30 30 30 30 30 30 30 30 30
+(74, 3, 0) 30 30 30 30 30 30 30 30 30 30
+(74, 4, 0) 30 30 30 30 30 30 30 30 30 30
+(74, 5, 0) 30 30 30 30 30 30 30 30 30 30
+(74, 6, 0) 30 30 30 30 30 30 30 30 30 30
+(74, 7, 0) 30 30 30 30 30 30 30 30 30 30
+(74, 8, 0) 30 30 30 30 30 30 30 30 30 30
+(74, 9, 0) 30 30 30 30 30 30 30 30 30 30
+(75, 0, 0) 40 40 40 40 40 40 40 40 40 40
+(75, 1, 0) 40 40 40 40 40 40 40 40 40 40
+(75, 2, 0) 40 40 40 40 40 40 40 40 40 40
+(75, 3, 0) 40 40 40 40 40 40 40 40 40 40
+(75, 4, 0) 40 40 40 40 40 40 40 40 40 40
+(75, 5, 0) 40 40 40 40 40 40 40 40 40 40
+(75, 6, 0) 40 40 40 40 40 40 40 40 40 40
+(75, 7, 0) 40 40 40 40 40 40 40 40 40 40
+(75, 8, 0) 40 40 40 40 40 40 40 40 40 40
+(75, 9, 0) 40 40 40 40 40 40 40 40 40 40
+(76, 0, 0) 10 10 10 10 10 10 10 10 10 10
+(76, 1, 0) 10 10 10 10 10 10 10 10 10 10
+(76, 2, 0) 10 10 10 10 10 10 10 10 10 10
+(76, 3, 0) 10 10 10 10 10 10 10 10 10 10
+(76, 4, 0) 10 10 10 10 10 10 10 10 10 10
+(76, 5, 0) 10 10 10 10 10 10 10 10 10 10
+(76, 6, 0) 10 10 10 10 10 10 10 10 10 10
+(76, 7, 0) 10 10 10 10 10 10 10 10 10 10
+(76, 8, 0) 10 10 10 10 10 10 10 10 10 10
+(76, 9, 0) 10 10 10 10 10 10 10 10 10 10
+(77, 0, 0) 20 20 20 20 20 20 20 20 20 20
+(77, 1, 0) 20 20 20 20 20 20 20 20 20 20
+(77, 2, 0) 20 20 20 20 20 20 20 20 20 20
+(77, 3, 0) 20 20 20 20 20 20 20 20 20 20
+(77, 4, 0) 20 20 20 20 20 20 20 20 20 20
+(77, 5, 0) 20 20 20 20 20 20 20 20 20 20
+(77, 6, 0) 20 20 20 20 20 20 20 20 20 20
+(77, 7, 0) 20 20 20 20 20 20 20 20 20 20
+(77, 8, 0) 20 20 20 20 20 20 20 20 20 20
+(77, 9, 0) 20 20 20 20 20 20 20 20 20 20
+(78, 0, 0) 30 30 30 30 30 30 30 30 30 30
+(78, 1, 0) 30 30 30 30 30 30 30 30 30 30
+(78, 2, 0) 30 30 30 30 30 30 30 30 30 30
+(78, 3, 0) 30 30 30 30 30 30 30 30 30 30
+(78, 4, 0) 30 30 30 30 30 30 30 30 30 30
+(78, 5, 0) 30 30 30 30 30 30 30 30 30 30
+(78, 6, 0) 30 30 30 30 30 30 30 30 30 30
+(78, 7, 0) 30 30 30 30 30 30 30 30 30 30
+(78, 8, 0) 30 30 30 30 30 30 30 30 30 30
+(78, 9, 0) 30 30 30 30 30 30 30 30 30 30
+(79, 0, 0) 40 40 40 40 40 40 40 40 40 40
+(79, 1, 0) 40 40 40 40 40 40 40 40 40 40
+(79, 2, 0) 40 40 40 40 40 40 40 40 40 40
+(79, 3, 0) 40 40 40 40 40 40 40 40 40 40
+(79, 4, 0) 40 40 40 40 40 40 40 40 40 40
+(79, 5, 0) 40 40 40 40 40 40 40 40 40 40
+(79, 6, 0) 40 40 40 40 40 40 40 40 40 40
+(79, 7, 0) 40 40 40 40 40 40 40 40 40 40
+(79, 8, 0) 40 40 40 40 40 40 40 40 40 40
+(79, 9, 0) 40 40 40 40 40 40 40 40 40 40
+ All data:
+(0, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(0, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(1, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(1, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(1, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(1, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(1, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(1, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(1, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(1, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(1, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(1, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(2, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(2, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(2, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(2, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(2, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(2, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(2, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(2, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(2, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(2, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(3, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(3, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(3, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(3, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(3, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(3, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(3, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(3, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(3, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(3, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(4, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(5, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(5, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(5, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(5, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(5, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(5, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(5, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(5, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(5, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(5, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(6, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(6, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(6, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(6, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(6, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(6, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(6, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(6, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(6, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(6, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(7, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(7, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(7, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(7, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(7, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(7, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(7, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(7, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(7, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(7, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(8, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(9, 0, 0) 1 1 1 1 1 1 1 1 1 1
+(9, 1, 0) 1 1 1 1 1 1 1 1 1 1
+(9, 2, 0) 1 1 1 1 1 1 1 1 1 1
+(9, 3, 0) 1 1 1 1 1 1 1 1 1 1
+(9, 4, 0) 1 1 1 1 1 1 1 1 1 1
+(9, 5, 0) 1 1 1 1 1 1 1 1 1 1
+(9, 6, 0) 1 1 1 1 1 1 1 1 1 1
+(9, 7, 0) 1 1 1 1 1 1 1 1 1 1
+(9, 8, 0) 1 1 1 1 1 1 1 1 1 1
+(9, 9, 0) 1 1 1 1 1 1 1 1 1 1
+(10, 0, 0) 10 10 10 10 10 10 10 10 10 10
+(10, 1, 0) 10 10 10 10 10 10 10 10 10 10
+(10, 2, 0) 10 10 10 10 10 10 10 10 10 10
+(10, 3, 0) 10 10 10 10 10 10 10 10 10 10
+(10, 4, 0) 10 10 10 10 10 10 10 10 10 10
+(10, 5, 0) 10 10 10 10 10 10 10 10 10 10
+(10, 6, 0) 10 10 10 10 10 10 10 10 10 10
+(10, 7, 0) 10 10 10 10 10 10 10 10 10 10
+(10, 8, 0) 10 10 10 10 10 10 10 10 10 10
+(10, 9, 0) 10 10 10 10 10 10 10 10 10 10
+(11, 0, 0) 10 10 10 10 10 10 10 10 10 10
+(11, 1, 0) 10 10 10 10 10 10 10 10 10 10
+(11, 2, 0) 10 10 10 10 10 10 10 10 10 10
+(11, 3, 0) 10 10 10 10 10 10 10 10 10 10
+(11, 4, 0) 10 10 10 10 10 10 10 10 10 10
+(11, 5, 0) 10 10 10 10 10 10 10 10 10 10
+(11, 6, 0) 10 10 10 10 10 10 10 10 10 10
+(11, 7, 0) 10 10 10 10 10 10 10 10 10 10
+(11, 8, 0) 10 10 10 10 10 10 10 10 10 10
+(11, 9, 0) 10 10 10 10 10 10 10 10 10 10
+(12, 0, 0) 10 10 10 10 10 10 10 10 10 10
+(12, 1, 0) 10 10 10 10 10 10 10 10 10 10
+(12, 2, 0) 10 10 10 10 10 10 10 10 10 10
+(12, 3, 0) 10 10 10 10 10 10 10 10 10 10
+(12, 4, 0) 10 10 10 10 10 10 10 10 10 10
+(12, 5, 0) 10 10 10 10 10 10 10 10 10 10
+(12, 6, 0) 10 10 10 10 10 10 10 10 10 10
+(12, 7, 0) 10 10 10 10 10 10 10 10 10 10
+(12, 8, 0) 10 10 10 10 10 10 10 10 10 10
+(12, 9, 0) 10 10 10 10 10 10 10 10 10 10
+(13, 0, 0) 10 10 10 10 10 10 10 10 10 10
+(13, 1, 0) 10 10 10 10 10 10 10 10 10 10
+(13, 2, 0) 10 10 10 10 10 10 10 10 10 10
+(13, 3, 0) 10 10 10 10 10 10 10 10 10 10
+(13, 4, 0) 10 10 10 10 10 10 10 10 10 10
+(13, 5, 0) 10 10 10 10 10 10 10 10 10 10
+(13, 6, 0) 10 10 10 10 10 10 10 10 10 10
+(13, 7, 0) 10 10 10 10 10 10 10 10 10 10
+(13, 8, 0) 10 10 10 10 10 10 10 10 10 10
+(13, 9, 0) 10 10 10 10 10 10 10 10 10 10
+(14, 0, 0) 10 10 10 10 10 10 10 10 10 10
+(14, 1, 0) 10 10 10 10 10 10 10 10 10 10
+(14, 2, 0) 10 10 10 10 10 10 10 10 10 10
+(14, 3, 0) 10 10 10 10 10 10 10 10 10 10
+(14, 4, 0) 10 10 10 10 10 10 10 10 10 10
+(14, 5, 0) 10 10 10 10 10 10 10 10 10 10
+(14, 6, 0) 10 10 10 10 10 10 10 10 10 10
+(14, 7, 0) 10 10 10 10 10 10 10 10 10 10
+(14, 8, 0) 10 10 10 10 10 10 10 10 10 10
+(14, 9, 0) 10 10 10 10 10 10 10 10 10 10
+(15, 0, 0) 10 10 10 10 10 10 10 10 10 10
+(15, 1, 0) 10 10 10 10 10 10 10 10 10 10
+(15, 2, 0) 10 10 10 10 10 10 10 10 10 10
+(15, 3, 0) 10 10 10 10 10 10 10 10 10 10
+(15, 4, 0) 10 10 10 10 10 10 10 10 10 10
+(15, 5, 0) 10 10 10 10 10 10 10 10 10 10
+(15, 6, 0) 10 10 10 10 10 10 10 10 10 10
+(15, 7, 0) 10 10 10 10 10 10 10 10 10 10
+(15, 8, 0) 10 10 10 10 10 10 10 10 10 10
+(15, 9, 0) 10 10 10 10 10 10 10 10 10 10
+(16, 0, 0) 10 10 10 10 10 10 10 10 10 10
+(16, 1, 0) 10 10 10 10 10 10 10 10 10 10
+(16, 2, 0) 10 10 10 10 10 10 10 10 10 10
+(16, 3, 0) 10 10 10 10 10 10 10 10 10 10
+(16, 4, 0) 10 10 10 10 10 10 10 10 10 10
+(16, 5, 0) 10 10 10 10 10 10 10 10 10 10
+(16, 6, 0) 10 10 10 10 10 10 10 10 10 10
+(16, 7, 0) 10 10 10 10 10 10 10 10 10 10
+(16, 8, 0) 10 10 10 10 10 10 10 10 10 10
+(16, 9, 0) 10 10 10 10 10 10 10 10 10 10
+(17, 0, 0) 10 10 10 10 10 10 10 10 10 10
+(17, 1, 0) 10 10 10 10 10 10 10 10 10 10
+(17, 2, 0) 10 10 10 10 10 10 10 10 10 10
+(17, 3, 0) 10 10 10 10 10 10 10 10 10 10
+(17, 4, 0) 10 10 10 10 10 10 10 10 10 10
+(17, 5, 0) 10 10 10 10 10 10 10 10 10 10
+(17, 6, 0) 10 10 10 10 10 10 10 10 10 10
+(17, 7, 0) 10 10 10 10 10 10 10 10 10 10
+(17, 8, 0) 10 10 10 10 10 10 10 10 10 10
+(17, 9, 0) 10 10 10 10 10 10 10 10 10 10
+(18, 0, 0) 10 10 10 10 10 10 10 10 10 10
+(18, 1, 0) 10 10 10 10 10 10 10 10 10 10
+(18, 2, 0) 10 10 10 10 10 10 10 10 10 10
+(18, 3, 0) 10 10 10 10 10 10 10 10 10 10
+(18, 4, 0) 10 10 10 10 10 10 10 10 10 10
+(18, 5, 0) 10 10 10 10 10 10 10 10 10 10
+(18, 6, 0) 10 10 10 10 10 10 10 10 10 10
+(18, 7, 0) 10 10 10 10 10 10 10 10 10 10
+(18, 8, 0) 10 10 10 10 10 10 10 10 10 10
+(18, 9, 0) 10 10 10 10 10 10 10 10 10 10
+(19, 0, 0) 10 10 10 10 10 10 10 10 10 10
+(19, 1, 0) 10 10 10 10 10 10 10 10 10 10
+(19, 2, 0) 10 10 10 10 10 10 10 10 10 10
+(19, 3, 0) 10 10 10 10 10 10 10 10 10 10
+(19, 4, 0) 10 10 10 10 10 10 10 10 10 10
+(19, 5, 0) 10 10 10 10 10 10 10 10 10 10
+(19, 6, 0) 10 10 10 10 10 10 10 10 10 10
+(19, 7, 0) 10 10 10 10 10 10 10 10 10 10
+(19, 8, 0) 10 10 10 10 10 10 10 10 10 10
+(19, 9, 0) 10 10 10 10 10 10 10 10 10 10
diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival.ddl b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival.ddl
new file mode 100644
index 0000000..5279876
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival.ddl
@@ -0,0 +1,410 @@
+HDF5 "h5ex_vds-percival.h5" {
+GROUP "/" {
+ DATASET "VDS-Percival" {
+ DATATYPE H5T_STD_I32LE
+ DATASPACE SIMPLE { ( 40, 10, 10 ) / ( 40, 10, 10 ) }
+ DATA {
+ (0,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (0,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (1,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (1,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (2,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (2,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (3,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (3,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (4,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (4,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (5,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (5,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (6,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (6,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (7,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (7,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (8,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (8,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (9,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (9,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (10,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (10,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (11,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (11,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (12,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (12,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (13,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (13,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (14,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (14,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (15,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (15,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (16,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (16,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (16,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (16,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (16,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (16,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (16,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (16,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (16,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (16,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (17,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (17,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (17,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (17,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (17,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (17,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (17,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (17,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (17,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (17,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (18,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (18,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (18,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (18,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (18,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (18,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (18,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (18,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (18,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (18,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (19,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (19,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (19,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (19,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (19,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (19,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (19,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (19,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (19,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (19,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (20,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (20,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (20,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (20,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (20,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (20,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (20,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (20,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (20,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (20,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (21,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (21,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (21,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (21,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (21,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (21,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (21,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (21,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (21,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (21,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (22,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (22,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (22,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (22,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (22,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (22,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (22,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (22,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (22,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (22,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (23,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (23,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (23,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (23,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (23,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (23,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (23,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (23,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (23,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (23,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (24,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (24,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (24,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (24,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (24,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (24,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (24,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (24,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (24,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (24,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (25,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (25,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (25,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (25,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (25,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (25,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (25,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (25,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (25,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (25,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (26,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (26,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (26,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (26,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (26,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (26,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (26,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (26,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (26,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (26,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (27,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (27,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (27,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (27,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (27,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (27,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (27,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (27,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (27,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (27,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (28,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (28,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (28,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (28,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (28,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (28,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (28,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (28,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (28,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (28,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (29,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (29,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (29,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (29,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (29,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (29,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (29,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (29,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (29,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (29,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (30,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (30,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (30,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (30,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (30,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (30,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (30,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (30,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (30,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (30,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (31,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (31,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (31,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (31,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (31,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (31,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (31,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (31,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (31,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (31,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (32,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (32,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (32,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (32,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (32,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (32,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (32,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (32,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (32,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (32,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (33,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (33,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (33,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (33,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (33,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (33,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (33,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (33,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (33,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (33,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (34,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (34,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (34,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (34,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (34,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (34,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (34,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (34,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (34,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (34,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (35,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (35,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (35,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (35,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (35,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (35,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (35,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (35,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (35,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (35,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (36,0,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (36,1,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (36,2,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (36,3,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (36,4,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (36,5,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (36,6,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (36,7,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (36,8,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (36,9,0): 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ (37,0,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (37,1,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (37,2,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (37,3,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (37,4,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (37,5,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (37,6,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (37,7,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (37,8,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (37,9,0): 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ (38,0,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (38,1,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (38,2,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (38,3,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (38,4,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (38,5,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (38,6,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (38,7,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (38,8,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (38,9,0): 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ (39,0,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (39,1,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (39,2,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (39,3,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (39,4,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (39,5,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (39,6,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (39,7,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (39,8,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ (39,9,0): 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
+ }
+ }
+}
+}
diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival.tst b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival.tst
new file mode 100644
index 0000000..9d39e9e
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-percival.tst
@@ -0,0 +1,95 @@
+ Dataset has a virtual layout
+ Number of mappings is 4
+ Mapping 0
+ Selection in the virtual dataset
+ start = [0, 0, 0]
+ stride = [4, 1, 1]
+ count = [10, 1, 1]
+ block = [1, 10, 10]
+ Source filename ap.h5
+ Source dataset name A
+ Selection in the source dataset
+ start = [0, 0, 0]
+ stride = [1, 1, 1]
+ count = [1, 1, 1]
+ block = [10, 10, 10]
+ Mapping 1
+ Selection in the virtual dataset
+ start = [1, 0, 0]
+ stride = [4, 1, 1]
+ count = [10, 1, 1]
+ block = [1, 10, 10]
+ Source filename bp.h5
+ Source dataset name B
+ Selection in the source dataset
+ start = [0, 0, 0]
+ stride = [1, 1, 1]
+ count = [1, 1, 1]
+ block = [10, 10, 10]
+ Mapping 2
+ Selection in the virtual dataset
+ start = [2, 0, 0]
+ stride = [4, 1, 1]
+ count = [10, 1, 1]
+ block = [1, 10, 10]
+ Source filename cp.h5
+ Source dataset name C
+ Selection in the source dataset
+ start = [0, 0, 0]
+ stride = [1, 1, 1]
+ count = [1, 1, 1]
+ block = [10, 10, 10]
+ Mapping 3
+ Selection in the virtual dataset
+ start = [3, 0, 0]
+ stride = [4, 1, 1]
+ count = [10, 1, 1]
+ block = [1, 10, 10]
+ Source filename dp.h5
+ Source dataset name D
+ Selection in the source dataset
+ start = [0, 0, 0]
+ stride = [1, 1, 1]
+ count = [1, 1, 1]
+ block = [10, 10, 10]
+ VDS Data:
+ [ [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1]]
+ [ [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2]]
+ [ [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3]]
+ [ [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4]]
+ [ [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1]]
+ [ [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2]]
+ [ [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3]]
+ [ [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4]]
+ [ [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1]]
+ [ [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2]]
+ [ [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3]]
+ [ [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4]]
+ [ [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1]]
+ [ [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2]]
+ [ [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3]]
+ [ [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4]]
+ [ [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1]]
+ [ [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2]]
+ [ [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3]]
+ [ [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4]]
+ [ [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1]]
+ [ [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2]]
+ [ [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3]]
+ [ [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4]]
+ [ [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1]]
+ [ [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2]]
+ [ [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3]]
+ [ [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4]]
+ [ [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1]]
+ [ [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2]]
+ [ [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3]]
+ [ [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4]]
+ [ [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1]]
+ [ [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2]]
+ [ [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3]]
+ [ [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4]]
+ [ [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1] [ 1 1 1 1 1 1 1 1 1 1]]
+ [ [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2] [ 2 2 2 2 2 2 2 2 2 2]]
+ [ [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3] [ 3 3 3 3 3 3 3 3 3 3]]
+ [ [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4] [ 4 4 4 4 4 4 4 4 4 4]]
diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-simpleIO.ddl b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-simpleIO.ddl
new file mode 100644
index 0000000..8a667e6
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-simpleIO.ddl
@@ -0,0 +1,14 @@
+HDF5 "h5ex_vds-simpleIO.h5" {
+GROUP "/" {
+ DATASET "VDS" {
+ DATATYPE H5T_STD_I32LE
+ DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) }
+ DATA {
+ (0,0): 1, 1, 1, 1, 1, 1,
+ (1,0): 2, 2, 2, 2, 2, 2,
+ (2,0): 3, 3, 3, 3, 3, 3,
+ (3,0): 4, 4, 4, 4, 4, 4
+ }
+ }
+}
+}
diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-simpleIO.tst b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-simpleIO.tst
new file mode 100644
index 0000000..ec39242
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds-simpleIO.tst
@@ -0,0 +1,12 @@
+ Dataset has a virtual layout
+ Number of mappings is 1
+ Mapping 0
+ Selection in the virtual dataset Selection is H5S_ALL
+ Source filename as.h5
+ Source dataset name /A
+ Selection in the source dataset Selection is H5S_ALL
+ VDS Data:
+ [ 1 1 1 1 1 1]
+ [ 2 2 2 2 2 2]
+ [ 3 3 3 3 3 3]
+ [ 4 4 4 4 4 4]
diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds.ddl b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds.ddl
new file mode 100644
index 0000000..efbff7d
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds.ddl
@@ -0,0 +1,14 @@
+HDF5 "h5ex_vds.h5" {
+GROUP "/" {
+ DATASET "VDS" {
+ DATATYPE H5T_STD_I32LE
+ DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) }
+ DATA {
+ (0,0): 1, 1, 1, 1, 1, 1,
+ (1,0): 2, 2, 2, 2, 2, 2,
+ (2,0): 3, 3, 3, 3, 3, 3,
+ (3,0): -1, -1, -1, -1, -1, -1
+ }
+ }
+}
+}
diff --git a/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds.tst b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds.tst
new file mode 100644
index 0000000..410ac4d
--- /dev/null
+++ b/HDF5Examples/C/H5VDS/tfiles/110/h5ex_vds.tst
@@ -0,0 +1,34 @@
+ Dataset has a virtual layout
+ Number of mappings is 3
+ Mapping 0
+ Selection in the virtual dataset (0,0) - (0,5)
+ start = [0, 0]
+ stride = [1, 1]
+ count = [1, 1]
+ block = [1, 6]
+ Source filename h5ex_vds_a.h5
+ Source dataset name A
+ Selection in the source dataset (0) - (5)
+ Mapping 1
+ Selection in the virtual dataset (1,0) - (1,5)
+ start = [1, 0]
+ stride = [1, 1]
+ count = [1, 1]
+ block = [1, 6]
+ Source filename h5ex_vds_b.h5
+ Source dataset name B
+ Selection in the source dataset (0) - (5)
+ Mapping 2
+ Selection in the virtual dataset (2,0) - (2,5)
+ start = [2, 0]
+ stride = [1, 1]
+ count = [1, 1]
+ block = [1, 6]
+ Source filename h5ex_vds_c.h5
+ Source dataset name C
+ Selection in the source dataset (0) - (5)
+ VDS Data:
+ [ 1 1 1 1 1 1]
+ [ 2 2 2 2 2 2]
+ [ 3 3 3 3 3 3]
+ [ -1 -1 -1 -1 -1 -1]
diff --git a/HDF5Examples/C/Perf/CMakeLists.txt b/HDF5Examples/C/Perf/CMakeLists.txt
index 5cbba67..e41def2 100644
--- a/HDF5Examples/C/Perf/CMakeLists.txt
+++ b/HDF5Examples/C/Perf/CMakeLists.txt
@@ -42,7 +42,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_OUTPUT=${testname}.out"
-D "TEST_REFERENCE=${testname}.tst"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall)
if (HDF5_BUILD_TOOLS)
@@ -56,7 +56,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_EXPECT=0"
-D "TEST_REFERENCE=${testname}.dmp"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname})
endif ()
diff --git a/HDF5Examples/CMakeLists.txt b/HDF5Examples/CMakeLists.txt
index e944b9e..00adfc0 100644
--- a/HDF5Examples/CMakeLists.txt
+++ b/HDF5Examples/CMakeLists.txt
@@ -4,29 +4,45 @@ project (H5EXAMPLES C)
#-----------------------------------------------------------------------------
# Define some CMake variables for use later in the project
#-----------------------------------------------------------------------------
-set (HDF5EX_C_SRC_DIR ${H5EXAMPLES_SOURCE_DIR}/C)
-set (HDF5EX_F90_SRC_DIR ${H5EXAMPLES_SOURCE_DIR}/FORTRAN)
-set (HDF5EX_JAVA_DIR ${H5EXAMPLES_SOURCE_DIR}/JAVA)
-set (HDF5EX_RESOURCES_DIR ${H5EXAMPLES_SOURCE_DIR}/config/cmake)
-
+set (H5EX_C_SRC_DIR ${H5EXAMPLES_SOURCE_DIR}/C)
+set (H5EX_F90_SRC_DIR ${H5EXAMPLES_SOURCE_DIR}/FORTRAN)
+set (H5EX_JAVA_DIR ${H5EXAMPLES_SOURCE_DIR}/JAVA)
#-----------------------------------------------------------------------------
# Basic HDF5Examples stuff here
#-----------------------------------------------------------------------------
-include (${HDF5EX_RESOURCES_DIR}/HDFMacros.cmake)
-include (${HDF5EX_RESOURCES_DIR}/HDFExampleMacros.cmake)
-set (CMAKE_JAVA_INCLUDE_PATH "")
+if (NOT EXAMPLES_EXTERNALLY_CONFIGURED)
+ set (H5EX_RESOURCES_DIR ${H5EXAMPLES_SOURCE_DIR}/config/cmake)
+
+ include (${H5EX_RESOURCES_DIR}/HDFMacros.cmake)
+ include (${H5EX_RESOURCES_DIR}/HDFExampleMacros.cmake)
+ set (CMAKE_JAVA_INCLUDE_PATH "")
-SET_HDF_BUILD_TYPE()
+ SET_HDF_BUILD_TYPE()
-BASIC_SETTINGS (EXAMPLES)
+ BASIC_SETTINGS (EX)
+
+ #-----------------------------------------------------------------------------
+ # HDF5 support
+ #-----------------------------------------------------------------------------
+ HDF5_SUPPORT (TRUE)
+ APIVersion(${HDF5_VERSION} H5_LIBVER_DIR)
+endif ()
+message (STATUS "HDF5 link libs: ${H5EX_HDF5_LINK_LIBS}")
+message (STATUS "HDF5 H5_LIBVER_DIR: ${H5_LIBVER_DIR} HDF5_VERSION_MAJOR: ${HDF5_VERSION_MAJOR}")
#-----------------------------------------------------------------------------
-# HDF5 support
+# Option to build JAVA examples
#-----------------------------------------------------------------------------
-HDF5_SUPPORT (TRUE)
-message (STATUS "HDF5 link libs: ${H5EX_HDF5_LINK_LIBS}")
-APIVersion(${HDF5_VERSION} H5_LIBVER_DIR)
-message (STATUS "HDF5 H5_LIBVER_DIR: ${H5_LIBVER_DIR}")
+option (HDF_BUILD_JAVA "Build JAVA support" OFF)
+if (HDF_BUILD_JAVA)
+ find_package (Java)
+ INCLUDE_DIRECTORIES (
+ ${JAVA_INCLUDE_PATH}
+ ${JAVA_INCLUDE_PATH2}
+ )
+
+ include (${H5EX_RESOURCES_DIR}/UseJava.cmake)
+endif ()
#-----------------------------------------------------------------------------
# parse the full version number from H5public.h and include in H5_VERS_INFO
@@ -54,7 +70,7 @@ endif ()
#-----------------------------------------------------------------------------
# Option to Enable MPI Parallel
#-----------------------------------------------------------------------------
-set (CMAKE_MODULE_PATH ${H5EXAMPLES_RESOURCES_DIR} ${CMAKE_MODULE_PATH})
+set (CMAKE_MODULE_PATH ${H5EX_RESOURCES_DIR} ${CMAKE_MODULE_PATH})
option (HDF_ENABLE_PARALLEL "Enable parallel build (requires MPI)" OFF)
if (HDF_ENABLE_PARALLEL)
find_package(MPI REQUIRED)
@@ -117,7 +133,7 @@ if (H5EX_BUILD_TESTING)
enable_testing ()
include (CTest)
include (${PROJECT_SOURCE_DIR}/CTestConfig.cmake)
- configure_file (${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/CTestCustom.cmake ${PROJECT_BINARY_DIR}/CTestCustom.ctest @ONLY)
+ configure_file (${H5EX_RESOURCES_DIR}/CTestCustom.cmake ${PROJECT_BINARY_DIR}/CTestCustom.ctest @ONLY)
endif ()
if (${H5_LIBVER_DIR} GREATER 16)
@@ -142,7 +158,7 @@ if (${H5_LIBVER_DIR} GREATER 16)
endif ()
endif ()
- configure_file (${HDF5EX_F90_SRC_DIR}/H5D/h5_version.h.in ${PROJECT_BINARY_DIR}/FORTRAN/H5D/h5_version.h @ONLY)
+ configure_file (${H5EX_F90_SRC_DIR}/H5D/h5_version.h.in ${PROJECT_BINARY_DIR}/FORTRAN/H5D/h5_version.h @ONLY)
else ()
set (HDF_BUILD_FORTRAN OFF CACHE BOOL "Build examples FORTRAN support" FORCE)
endif ()
diff --git a/HDF5Examples/FORTRAN/H5D/CMakeLists.txt b/HDF5Examples/FORTRAN/H5D/CMakeLists.txt
index 5369a49..0d7f5b5 100644
--- a/HDF5Examples/FORTRAN/H5D/CMakeLists.txt
+++ b/HDF5Examples/FORTRAN/H5D/CMakeLists.txt
@@ -255,7 +255,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_OUTPUT=${testname}.out"
-D "TEST_REFERENCE=${testname}.tst"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall)
if (HDF5_BUILD_TOOLS)
@@ -269,7 +269,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_EXPECT=0"
-D "TEST_REFERENCE=${testname}.ddl"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname})
endif ()
diff --git a/HDF5Examples/FORTRAN/H5G/CMakeLists.txt b/HDF5Examples/FORTRAN/H5G/CMakeLists.txt
index 508283c..77bd0cb 100644
--- a/HDF5Examples/FORTRAN/H5G/CMakeLists.txt
+++ b/HDF5Examples/FORTRAN/H5G/CMakeLists.txt
@@ -205,7 +205,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_SKIP_COMPARE=TRUE"
-D "TEST_OUTPUT=${testname}.out"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall)
if (HDF5_BUILD_TOOLS)
@@ -219,7 +219,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_EXPECT=0"
-D "TEST_REFERENCE=${testname}.ddl"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname})
endif ()
@@ -236,7 +236,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_OUTPUT=${testname}.out"
-D "TEST_REFERENCE=${testname}.tst"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
if (HDF5_BUILD_TOOLS)
add_test (
@@ -249,7 +249,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_EXPECT=0"
-D "TEST_REFERENCE=${testname}.ddl"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname})
endif ()
@@ -274,7 +274,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_SKIP_COMPARE=TRUE"
-D "TEST_OUTPUT=${testname}.out"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
else ()
add_test (
@@ -287,7 +287,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_OUTPUT=${testname}.out"
-D "TEST_REFERENCE=${testname}.tst"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
endif ()
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall)
@@ -302,7 +302,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_EXPECT=0"
-D "TEST_REFERENCE=${testname}1.ddl"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}1 PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname})
add_test (
@@ -315,7 +315,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_EXPECT=0"
-D "TEST_REFERENCE=${testname}2.ddl"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}2 PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}1)
endif ()
@@ -338,7 +338,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_OUTPUT=${testname}.out"
-D "TEST_REFERENCE=${testname}.tst"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall)
endmacro ()
diff --git a/HDF5Examples/FORTRAN/H5PAR/CMakeLists.txt b/HDF5Examples/FORTRAN/H5PAR/CMakeLists.txt
index 792caaf..98ef271 100644
--- a/HDF5Examples/FORTRAN/H5PAR/CMakeLists.txt
+++ b/HDF5Examples/FORTRAN/H5PAR/CMakeLists.txt
@@ -57,7 +57,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_OUTPUT=${testname}.out"
-D "TEST_REFERENCE:STRING=PHDF5 example finished with no errors"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/grepTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/grepTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall)
set (last_test "${EXAMPLE_VARNAME}_f90_${testname}")
diff --git a/HDF5Examples/FORTRAN/H5T/CMakeLists.txt b/HDF5Examples/FORTRAN/H5T/CMakeLists.txt
index 262adf8..8462bbf 100644
--- a/HDF5Examples/FORTRAN/H5T/CMakeLists.txt
+++ b/HDF5Examples/FORTRAN/H5T/CMakeLists.txt
@@ -148,7 +148,7 @@ if (HDF5_BUILD_TOOLS)
)
endif ()
elseif ((${example_name} STREQUAL "h5ex_t_objref_F03" OR ${example_name} STREQUAL "h5ex_t_objrefatt_F03") OR (${example_name} STREQUAL "h5ex_t_regref_F03" OR ${example_name} STREQUAL "h5ex_t_regrefatt_F03"))
- if (${${EXAMPLE_VARNAME}_USE_16_API} OR ${${EXAMPLE_VARNAME}_USE_18_API} OR ${${EXAMPLE_VARNAME}_USE_110_API})
+ if (${EXAMPLE_VARNAME}_USE_16_API OR ${EXAMPLE_VARNAME}_USE_18_API OR ${EXAMPLE_VARNAME}_USE_110_API)
if (HDF5_VERSION_MAJOR VERSION_EQUAL "1.8")
if (HDF5_VERSION_STRING VERSION_LESS_EQUAL "1.8.21")
add_custom_command (
@@ -317,7 +317,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_OUTPUT=${testname}.out"
-D "TEST_REFERENCE=${testname}.tst"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall)
if (HDF5_BUILD_TOOLS)
@@ -331,7 +331,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_EXPECT=0"
-D "TEST_REFERENCE=${testname}.ddl"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname})
endif ()
@@ -354,7 +354,7 @@ if (H5EX_BUILD_TESTING)
-D "TEST_OUTPUT=${testname}.out"
-D "TEST_REFERENCE=${testname}.tst"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall)
endmacro ()
diff --git a/HDF5Examples/JAVA/H5D/CMakeLists.txt b/HDF5Examples/JAVA/H5D/CMakeLists.txt
index bc06506..017830b 100644
--- a/HDF5Examples/JAVA/H5D/CMakeLists.txt
+++ b/HDF5Examples/JAVA/H5D/CMakeLists.txt
@@ -19,15 +19,18 @@ else ()
set (CMAKE_JAVA_INCLUDE_FLAG_SEP ":")
endif ()
-set (CMAKE_JAVA_INCLUDE_PATH "${HDF5_JAVA_INCLUDE_DIRS}")
+set (CMAKE_JAVA_INCLUDE_PATH ".")
+foreach (CMAKE_JINCLUDE_PATH ${HDF5_JAVA_INCLUDE_DIRS})
+ set (CMAKE_JAVA_INCLUDE_PATH "${CMAKE_JAVA_INCLUDE_PATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_JINCLUDE_PATH}")
+endforeach ()
set (CMD_ARGS "-Dhdf.hdf5lib.H5.loadLibraryName=${H5EX_JAVA_LIBRARY}$<$<OR:$<CONFIG:Debug>,$<CONFIG:Developer>>:${CMAKE_DEBUG_POSTFIX}>;")
set (CMAKE_JAVA_CLASSPATH ".")
-foreach (CMAKE_INCLUDE_PATH ${CMAKE_JAVA_INCLUDE_PATH})
+foreach (CMAKE_INCLUDE_PATH ${HDF5_JAVA_INCLUDE_DIRS})
set (CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_INCLUDE_PATH}")
endforeach ()
-foreach (HCP_JAR ${CMAKE_JAVA_INCLUDE_PATH})
+foreach (HCP_JAR ${HDF5_JAVA_INCLUDE_DIRS})
get_filename_component (_HCP_FILE ${HCP_JAR} NAME)
set (HDFJAVA_CLASSJARS "${_HCP_FILE} ${HDFJAVA_CLASSJARS}")
endforeach ()
@@ -39,13 +42,13 @@ foreach (example ${HDF_JAVA_EXAMPLES})
Class-Path: ${HDFJAVA_CLASSJARS}
"
)
- add_jar (${EXAMPLE_VARNAME}_${example_name}
+ add_jar (${EXAMPLE_VARNAME}J_${example_name}
SOURCES ${example}
MANIFEST ${PROJECT_BINARY_DIR}/${example_name}_Manifest.txt
)
- get_target_property (${EXAMPLE_VARNAME}_${example_name}_JAR_FILE ${EXAMPLE_VARNAME}_${example_name} JAR_FILE)
- get_target_property (${EXAMPLE_VARNAME}_${example_name}_CLASSPATH ${EXAMPLE_VARNAME}_${example_name} CLASSDIR)
- add_dependencies (${EXAMPLE_VARNAME}_${example_name} ${H5EX_JAVA_LIBRARIES})
+ get_target_property (${EXAMPLE_VARNAME}J_${example_name}_JAR_FILE ${EXAMPLE_VARNAME}J_${example_name} JAR_FILE)
+ get_target_property (${EXAMPLE_VARNAME}J_${example_name}_CLASSPATH ${EXAMPLE_VARNAME}J_${example_name} CLASSDIR)
+ add_dependencies (${EXAMPLE_VARNAME}J_${example_name} ${H5EX_JAVA_LIBRARIES})
endforeach ()
if (H5EX_BUILD_TESTING)
@@ -56,14 +59,14 @@ if (H5EX_BUILD_TESTING)
-D "TEST_TESTER=${CMAKE_Java_RUNTIME};${CMAKE_Java_RUNTIME_FLAGS}"
-D "TEST_PROGRAM=${resultfile}"
-D "TEST_ARGS:STRING=${ARGN};${CMD_ARGS}"
- -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${EXAMPLE_VARNAME}_${resultfile}_JAR_FILE}"
+ -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${EXAMPLE_VARNAME}J_${resultfile}_JAR_FILE}"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
-D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
-D "TEST_OUTPUT=${PROJECT_BINARY_DIR}/${resultfile}.out"
-D "TEST_REFERENCE=${resultfile}.txt"
-D "TEST_EXPECT=${resultcode}"
-D "TEST_SKIP_COMPARE=TRUE"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/jrunTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/jrunTest.cmake"
)
if (NOT "${last_test}" STREQUAL "")
set_tests_properties (${EXAMPLE_VARNAME}_jnative-h5-${resultfile} PROPERTIES DEPENDS ${last_test})
diff --git a/HDF5Examples/JAVA/H5G/CMakeLists.txt b/HDF5Examples/JAVA/H5G/CMakeLists.txt
index 957934b..bd43f2a 100644
--- a/HDF5Examples/JAVA/H5G/CMakeLists.txt
+++ b/HDF5Examples/JAVA/H5G/CMakeLists.txt
@@ -19,15 +19,18 @@ else ()
set (CMAKE_JAVA_INCLUDE_FLAG_SEP ":")
endif ()
-set (CMAKE_JAVA_INCLUDE_PATH "${HDF5_JAVA_INCLUDE_DIRS}")
+set (CMAKE_JAVA_INCLUDE_PATH ".")
+foreach (CMAKE_JINCLUDE_PATH ${HDF5_JAVA_INCLUDE_DIRS})
+ set (CMAKE_JAVA_INCLUDE_PATH "${CMAKE_JAVA_INCLUDE_PATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_JINCLUDE_PATH}")
+endforeach ()
set (CMD_ARGS "-Dhdf.hdf5lib.H5.loadLibraryName=${H5EX_JAVA_LIBRARY}$<$<OR:$<CONFIG:Debug>,$<CONFIG:Developer>>:${CMAKE_DEBUG_POSTFIX}>;")
set (CMAKE_JAVA_CLASSPATH ".")
-foreach (CMAKE_INCLUDE_PATH ${CMAKE_JAVA_INCLUDE_PATH})
+foreach (CMAKE_INCLUDE_PATH ${HDF5_JAVA_INCLUDE_DIRS})
set (CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_INCLUDE_PATH}")
endforeach ()
-foreach (HCP_JAR ${CMAKE_JAVA_INCLUDE_PATH})
+foreach (HCP_JAR ${HDF5_JAVA_INCLUDE_DIRS})
get_filename_component (_HCP_FILE ${HCP_JAR} NAME)
set (HDFJAVA_CLASSJARS "${_HCP_FILE} ${HDFJAVA_CLASSJARS}")
endforeach ()
@@ -39,13 +42,13 @@ foreach (example ${HDF_JAVA_EXAMPLES})
Class-Path: ${HDFJAVA_CLASSJARS}
"
)
- add_jar (${EXAMPLE_VARNAME}_${example_name}
+ add_jar (${EXAMPLE_VARNAME}J_${example_name}
SOURCES ${example}
MANIFEST ${PROJECT_BINARY_DIR}/${example_name}_Manifest.txt
)
- get_target_property (${EXAMPLE_VARNAME}_${example_name}_JAR_FILE ${EXAMPLE_VARNAME}_${example_name} JAR_FILE)
- get_target_property (${EXAMPLE_VARNAME}_${example_name}_CLASSPATH ${EXAMPLE_VARNAME}_${example_name} CLASSDIR)
- add_dependencies (${EXAMPLE_VARNAME}_${example_name} ${H5EX_JAVA_LIBRARIES})
+ get_target_property (${EXAMPLE_VARNAME}J_${example_name}_JAR_FILE ${EXAMPLE_VARNAME}J_${example_name} JAR_FILE)
+ get_target_property (${EXAMPLE_VARNAME}J_${example_name}_CLASSPATH ${EXAMPLE_VARNAME}J_${example_name} CLASSDIR)
+ add_dependencies (${EXAMPLE_VARNAME}J_${example_name} ${H5EX_JAVA_LIBRARIES})
endforeach ()
if (H5EX_BUILD_TESTING)
@@ -56,14 +59,14 @@ if (H5EX_BUILD_TESTING)
-D "TEST_TESTER=${CMAKE_Java_RUNTIME};${CMAKE_Java_RUNTIME_FLAGS}"
-D "TEST_PROGRAM=${resultfile}"
-D "TEST_ARGS:STRING=${ARGN};${CMD_ARGS}"
- -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${EXAMPLE_VARNAME}_${resultfile}_JAR_FILE}"
+ -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${EXAMPLE_VARNAME}J_${resultfile}_JAR_FILE}"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
-D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
-D "TEST_OUTPUT=${PROJECT_BINARY_DIR}/${resultfile}.out"
-D "TEST_REFERENCE=${resultfile}.txt"
-D "TEST_EXPECT=${resultcode}"
-D "TEST_SKIP_COMPARE=TRUE"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/jrunTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/jrunTest.cmake"
)
if (NOT "${last_test}" STREQUAL "")
set_tests_properties (${EXAMPLE_VARNAME}_jnative-h5-${resultfile} PROPERTIES DEPENDS ${last_test})
diff --git a/HDF5Examples/JAVA/H5G/Java_sourcefiles.cmake b/HDF5Examples/JAVA/H5G/Java_sourcefiles.cmake
index d5142bd..ad7732a 100644
--- a/HDF5Examples/JAVA/H5G/Java_sourcefiles.cmake
+++ b/HDF5Examples/JAVA/H5G/Java_sourcefiles.cmake
@@ -8,7 +8,7 @@ set (HDF_JAVA_EXAMPLES
H5Ex_G_Phase.java
)
if (${H5_LIBVER_DIR} GREATER 18)
- if ((${H5_LIBVER_DIR} EQUAL 110) AND NOT (${${EXAMPLE_VARNAME}_USE_16_API} OR ${${EXAMPLE_VARNAME}_USE_18_API} OR ${${EXAMPLE_VARNAME}_USE_110_API}))
+ if ((H5_LIBVER_DIR EQUAL 110) AND NOT (${EXAMPLE_VARNAME}_USE_16_API OR ${EXAMPLE_VARNAME}_USE_18_API OR ${EXAMPLE_VARNAME}_USE_110_API))
set (HDF_JAVA_EXAMPLES ${HDF_JAVA_EXAMPLES}
110/H5Ex_G_Iterate.java
110/H5Ex_G_Intermediate.java
diff --git a/HDF5Examples/JAVA/H5J/CMakeLists.txt b/HDF5Examples/JAVA/H5J/CMakeLists.txt
index eaefa7d..1bd28a1 100644
--- a/HDF5Examples/JAVA/H5J/CMakeLists.txt
+++ b/HDF5Examples/JAVA/H5J/CMakeLists.txt
@@ -19,15 +19,18 @@ else ()
set (CMAKE_JAVA_INCLUDE_FLAG_SEP ":")
endif ()
-set (CMAKE_JAVA_INCLUDE_PATH "${HDF5_JAVA_INCLUDE_DIRS}")
+set (CMAKE_JAVA_INCLUDE_PATH ".")
+foreach (CMAKE_JINCLUDE_PATH ${HDF5_JAVA_INCLUDE_DIRS})
+ set (CMAKE_JAVA_INCLUDE_PATH "${CMAKE_JAVA_INCLUDE_PATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_JINCLUDE_PATH}")
+endforeach ()
set (CMD_ARGS "-Dhdf.hdf5lib.H5.loadLibraryName=${H5EX_JAVA_LIBRARY}$<$<OR:$<CONFIG:Debug>,$<CONFIG:Developer>>:${CMAKE_DEBUG_POSTFIX}>;")
set (CMAKE_JAVA_CLASSPATH ".")
-foreach (CMAKE_INCLUDE_PATH ${CMAKE_JAVA_INCLUDE_PATH})
+foreach (CMAKE_INCLUDE_PATH ${HDF5_JAVA_INCLUDE_DIRS})
set (CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_INCLUDE_PATH}")
endforeach ()
-foreach (HCP_JAR ${CMAKE_JAVA_INCLUDE_PATH})
+foreach (HCP_JAR ${HDF5_JAVA_INCLUDE_DIRS})
get_filename_component (_HCP_FILE ${HCP_JAR} NAME)
set (HDFJAVA_CLASSJARS "${_HCP_FILE} ${HDFJAVA_CLASSJARS}")
endforeach ()
@@ -39,13 +42,13 @@ foreach (example ${HDF_JAVA_EXAMPLES})
Class-Path: ${HDFJAVA_CLASSJARS}
"
)
- add_jar (${EXAMPLE_VARNAME}_${example_name}
+ add_jar (${EXAMPLE_VARNAME}J_${example_name}
SOURCES ${example}
MANIFEST ${PROJECT_BINARY_DIR}/${example_name}_Manifest.txt
)
- get_target_property (${EXAMPLE_VARNAME}_${example_name}_JAR_FILE ${EXAMPLE_VARNAME}_${example_name} JAR_FILE)
- get_target_property (${EXAMPLE_VARNAME}_${example_name}_CLASSPATH ${EXAMPLE_VARNAME}_${example_name} CLASSDIR)
- add_dependencies (${EXAMPLE_VARNAME}_${example_name} ${H5EX_JAVA_LIBRARIES})
+ get_target_property (${EXAMPLE_VARNAME}J_${example_name}_JAR_FILE ${EXAMPLE_VARNAME}J_${example_name} JAR_FILE)
+ get_target_property (${EXAMPLE_VARNAME}J_${example_name}_CLASSPATH ${EXAMPLE_VARNAME}J_${example_name} CLASSDIR)
+ add_dependencies (${EXAMPLE_VARNAME}J_${example_name} ${H5EX_JAVA_LIBRARIES})
endforeach ()
if (H5EX_BUILD_TESTING)
@@ -56,14 +59,14 @@ if (H5EX_BUILD_TESTING)
-D "TEST_TESTER=${CMAKE_Java_RUNTIME};${CMAKE_Java_RUNTIME_FLAGS}"
-D "TEST_PROGRAM=${resultfile}"
-D "TEST_ARGS:STRING=${ARGN};${CMD_ARGS}"
- -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${EXAMPLE_VARNAME}_${resultfile}_JAR_FILE}"
+ -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${EXAMPLE_VARNAME}J_${resultfile}_JAR_FILE}"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
-D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
-D "TEST_OUTPUT=${PROJECT_BINARY_DIR}/${resultfile}.out"
-D "TEST_REFERENCE=${resultfile}.txt"
-D "TEST_EXPECT=${resultcode}"
-D "TEST_SKIP_COMPARE=TRUE"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/jrunTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/jrunTest.cmake"
)
if (NOT "${last_test}" STREQUAL "")
set_tests_properties (${EXAMPLE_VARNAME}_jnative-h5-${resultfile} PROPERTIES DEPENDS ${last_test})
diff --git a/HDF5Examples/JAVA/H5J/Java_sourcefiles.cmake b/HDF5Examples/JAVA/H5J/Java_sourcefiles.cmake
index 0a8a40b..c643a16 100644
--- a/HDF5Examples/JAVA/H5J/Java_sourcefiles.cmake
+++ b/HDF5Examples/JAVA/H5J/Java_sourcefiles.cmake
@@ -10,7 +10,7 @@ set (HDF_JAVA_EXAMPLES
HDF5GroupDatasetCreate.java
HDF5SubsetSelect.java
)
-if (NOT ${${EXAMPLE_VARNAME}_USE_110_API} AND ${H5_LIBVER_DIR} EQUAL 110)
+if (NOT ${EXAMPLE_VARNAME}_USE_110_API AND H5_LIBVER_DIR EQUAL 110)
set (HDF_JAVA_EXAMPLES ${HDF_JAVA_EXAMPLES}
110/HDF5FileStructure.java
)
diff --git a/HDF5Examples/JAVA/H5T/CMakeLists.txt b/HDF5Examples/JAVA/H5T/CMakeLists.txt
index 0d2cb41..1c06804 100644
--- a/HDF5Examples/JAVA/H5T/CMakeLists.txt
+++ b/HDF5Examples/JAVA/H5T/CMakeLists.txt
@@ -19,15 +19,18 @@ else ()
set (CMAKE_JAVA_INCLUDE_FLAG_SEP ":")
endif ()
-set (CMAKE_JAVA_INCLUDE_PATH "${HDF5_JAVA_INCLUDE_DIRS}")
+set (CMAKE_JAVA_INCLUDE_PATH ".")
+foreach (CMAKE_JINCLUDE_PATH ${HDF5_JAVA_INCLUDE_DIRS})
+ set (CMAKE_JAVA_INCLUDE_PATH "${CMAKE_JAVA_INCLUDE_PATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_JINCLUDE_PATH}")
+endforeach ()
set (CMD_ARGS "-Dhdf.hdf5lib.H5.loadLibraryName=${H5EX_JAVA_LIBRARY}$<$<OR:$<CONFIG:Debug>,$<CONFIG:Developer>>:${CMAKE_DEBUG_POSTFIX}>;")
set (CMAKE_JAVA_CLASSPATH ".")
-foreach (CMAKE_INCLUDE_PATH ${CMAKE_JAVA_INCLUDE_PATH})
+foreach (CMAKE_INCLUDE_PATH ${HDF5_JAVA_INCLUDE_DIRS})
set (CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_INCLUDE_PATH}")
endforeach ()
-foreach (HCP_JAR ${CMAKE_JAVA_INCLUDE_PATH})
+foreach (HCP_JAR ${HDF5_JAVA_INCLUDE_DIRS})
get_filename_component (_HCP_FILE ${HCP_JAR} NAME)
set (HDFJAVA_CLASSJARS "${_HCP_FILE} ${HDFJAVA_CLASSJARS}")
endforeach ()
@@ -39,13 +42,13 @@ foreach (example ${HDF_JAVA_EXAMPLES})
Class-Path: ${HDFJAVA_CLASSJARS}
"
)
- add_jar (${EXAMPLE_VARNAME}_${example_name}
+ add_jar (${EXAMPLE_VARNAME}J_${example_name}
SOURCES ${example}
MANIFEST ${PROJECT_BINARY_DIR}/${example_name}_Manifest.txt
)
- get_target_property (${EXAMPLE_VARNAME}_${example_name}_JAR_FILE ${EXAMPLE_VARNAME}_${example_name} JAR_FILE)
- get_target_property (${EXAMPLE_VARNAME}_${example_name}_CLASSPATH ${EXAMPLE_VARNAME}_${example_name} CLASSDIR)
- add_dependencies (${EXAMPLE_VARNAME}_${example_name} ${H5EX_JAVA_LIBRARIES})
+ get_target_property (${EXAMPLE_VARNAME}J_${example_name}_JAR_FILE ${EXAMPLE_VARNAME}J_${example_name} JAR_FILE)
+ get_target_property (${EXAMPLE_VARNAME}J_${example_name}_CLASSPATH ${EXAMPLE_VARNAME}J_${example_name} CLASSDIR)
+ add_dependencies (${EXAMPLE_VARNAME}J_${example_name} ${H5EX_JAVA_LIBRARIES})
endforeach ()
if (H5EX_BUILD_TESTING)
@@ -56,14 +59,14 @@ if (H5EX_BUILD_TESTING)
-D "TEST_TESTER=${CMAKE_Java_RUNTIME};${CMAKE_Java_RUNTIME_FLAGS}"
-D "TEST_PROGRAM=${resultfile}"
-D "TEST_ARGS:STRING=${ARGN};${CMD_ARGS}"
- -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${EXAMPLE_VARNAME}_${resultfile}_JAR_FILE}"
+ -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${EXAMPLE_VARNAME}J_${resultfile}_JAR_FILE}"
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
-D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
-D "TEST_OUTPUT=${PROJECT_BINARY_DIR}/${resultfile}.out"
-D "TEST_REFERENCE=${resultfile}.txt"
-D "TEST_EXPECT=${resultcode}"
-D "TEST_SKIP_COMPARE=TRUE"
- -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/jrunTest.cmake"
+ -P "${H5EX_RESOURCES_DIR}/jrunTest.cmake"
)
if (NOT "${last_test}" STREQUAL "")
set_tests_properties (${EXAMPLE_VARNAME}_jnative-h5-${resultfile} PROPERTIES DEPENDS ${last_test})
diff --git a/HDF5Examples/config/cmake/HDFExampleMacros.cmake b/HDF5Examples/config/cmake/HDFExampleMacros.cmake
index 82fd8ac..3bb1d48 100644
--- a/HDF5Examples/config/cmake/HDFExampleMacros.cmake
+++ b/HDF5Examples/config/cmake/HDFExampleMacros.cmake
@@ -21,23 +21,10 @@ macro (BASIC_SETTINGS varname)
set (CMAKE_NO_SYSTEM_FROM_IMPORTED 1)
#-----------------------------------------------------------------------------
- # Define some CMake variables for use later in the project
- #-----------------------------------------------------------------------------
- set (${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR ${${EXAMPLE_PACKAGE_NAME}_SOURCE_DIR}/config/cmake)
- set (${EXAMPLE_PACKAGE_NAME}_SRC_DIR ${${EXAMPLE_PACKAGE_NAME}_SOURCE_DIR}/src)
-
- #-----------------------------------------------------------------------------
# Setup output Directories
#-----------------------------------------------------------------------------
SET_HDF_OUTPUT_DIRS(${EXAMPLE_PACKAGE_NAME})
- #-----------------------------------------------------------------------------
- # Option to use Shared/Static libs, default is static
- #-----------------------------------------------------------------------------
- set (LIB_TYPE STATIC)
- if (BUILD_SHARED_LIBS)
- set (LIB_TYPE SHARED)
- endif ()
set (CMAKE_POSITION_INDEPENDENT_CODE ON)
if (MSVC)
@@ -116,24 +103,10 @@ macro (BASIC_SETTINGS varname)
set (${EXAMPLE_PACKAGE_NAME}_INCLUDES_BUILD_TIME
${${EXAMPLE_PACKAGE_NAME}_SRC_DIR} ${${EXAMPLE_PACKAGE_NAME}_BINARY_DIR}
)
-
- #-----------------------------------------------------------------------------
- # Option to build JAVA examples
- #-----------------------------------------------------------------------------
- option (HDF_BUILD_JAVA "Build JAVA support" OFF)
- if (HDF_BUILD_JAVA)
- find_package (Java)
- INCLUDE_DIRECTORIES (
- ${JAVA_INCLUDE_PATH}
- ${JAVA_INCLUDE_PATH2}
- )
-
- include (${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/UseJava.cmake)
- endif ()
endmacro ()
macro (HDF5_SUPPORT)
- set (CMAKE_MODULE_PATH ${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR} ${CMAKE_MODULE_PATH})
+ set (CMAKE_MODULE_PATH ${H5EX_RESOURCES_DIR} ${CMAKE_MODULE_PATH})
option (USE_SHARED_LIBS "Use Shared Libraries" ON)
if (NOT H5EX_HDF5_HEADER)
@@ -273,12 +246,6 @@ macro (HDF5_SUPPORT)
list (APPEND H5EX_HDF5_INCLUDE_DIRS ${HDF5_INCLUDE_DIR_FORTRAN})
endif ()
message (STATUS "HDF5 link libs: ${H5EX_HDF5_LINK_LIBS} Includes: ${H5EX_HDF5_INCLUDE_DIRS}")
-
- if (USE_SHARED_LIBS)
- set (H5_LIB_TYPE SHARED)
- else ()
- set (H5_LIB_TYPE STATIC)
- endif ()
endmacro ()
#-------------------------------------------------------------------------------
diff --git a/HDF5Examples/config/cmake/UseJava.cmake b/HDF5Examples/config/cmake/UseJava.cmake
index b4af653..12e324c 100644
--- a/HDF5Examples/config/cmake/UseJava.cmake
+++ b/HDF5Examples/config/cmake/UseJava.cmake
@@ -881,7 +881,7 @@ function(add_jar _TARGET_NAME)
${_GENERATE_NATIVE_HEADERS}
${_JAVA_SOURCES_FILELISTS}
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_compiled_${_TARGET_NAME}
- DEPENDS ${_JAVA_COMPILE_FILES} ${_JAVA_COMPILE_FILELISTS} ${_JAVA_COMPILE_DEPENDS}
+ DEPENDS ${_JAVA_COMPILE_FILES} ${_JAVA_COMPILE_FILELISTS} ${_JAVA_COMPILE_DEPENDS} ${_JAVA_SOURCES_FILE}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Building Java objects for ${_TARGET_NAME}.jar"
VERBATIM