summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorcvs2svn <no_author@cvs2svn>2004-03-10 23:00:36 (GMT)
committercvs2svn <no_author@cvs2svn>2004-03-10 23:00:36 (GMT)
commitcdcf0e1e12259c617626518ad4db84285e27bb99 (patch)
tree2df02e2fe964fddb7944d06f8b5d760c5bf78b08 /tools
parent4644afd4afa287a1ffce555cb18c486a1536609f (diff)
downloadhdf5-cdcf0e1e12259c617626518ad4db84285e27bb99.zip
hdf5-cdcf0e1e12259c617626518ad4db84285e27bb99.tar.gz
hdf5-cdcf0e1e12259c617626518ad4db84285e27bb99.tar.bz2
[svn-r8248] This commit was manufactured by cvs2svn to create branch 'hdf5_1_6'.
Diffstat (limited to 'tools')
-rw-r--r--tools/h5repack/Dependencies660
-rw-r--r--tools/lib/h5trav.c651
-rw-r--r--tools/testfiles/h5diff_70.txt1023
-rw-r--r--tools/testfiles/h5diff_80.txt610
4 files changed, 2944 insertions, 0 deletions
diff --git a/tools/h5repack/Dependencies b/tools/h5repack/Dependencies
new file mode 100644
index 0000000..e63113a
--- /dev/null
+++ b/tools/h5repack/Dependencies
@@ -0,0 +1,660 @@
+## This file is machine generated on GNU systems.
+## Only temporary changes may be made here.
+
+h5repack.lo: \
+ $(top_srcdir)/tools/h5repack/h5repack.c \
+ $(top_srcdir)/tools/h5repack/h5repack.h \
+ $(top_srcdir)/src/hdf5.h \
+ $(top_srcdir)/src/H5public.h \
+ $(top_builddir)/src/H5pubconf.h \
+ $(top_srcdir)/src/H5api_adpt.h \
+ $(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
+ $(top_srcdir)/src/H5ACpublic.h \
+ $(top_srcdir)/src/H5Bpublic.h \
+ $(top_srcdir)/src/H5Dpublic.h \
+ $(top_srcdir)/src/H5Epublic.h \
+ $(top_srcdir)/src/H5Epubgen.h \
+ $(top_srcdir)/src/H5Fpublic.h \
+ $(top_srcdir)/src/H5FDpublic.h \
+ $(top_srcdir)/src/H5FPpublic.h \
+ $(top_srcdir)/src/H5Gpublic.h \
+ $(top_srcdir)/src/H5Opublic.h \
+ $(top_srcdir)/src/H5HGpublic.h \
+ $(top_srcdir)/src/H5HLpublic.h \
+ $(top_srcdir)/src/H5MMpublic.h \
+ $(top_srcdir)/src/H5Ppublic.h \
+ $(top_srcdir)/src/H5Zpublic.h \
+ $(top_srcdir)/src/H5Rpublic.h \
+ $(top_srcdir)/src/H5Spublic.h \
+ $(top_srcdir)/src/H5Tpublic.h \
+ $(top_srcdir)/src/H5FDcore.h \
+ $(top_srcdir)/src/H5FDfamily.h \
+ $(top_srcdir)/src/H5FDgass.h \
+ $(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDfphdf5.h \
+ $(top_srcdir)/src/H5FDmpio.h \
+ $(top_srcdir)/src/H5FDmpiposix.h \
+ $(top_srcdir)/src/H5FDmulti.h \
+ $(top_srcdir)/src/H5FDsec2.h \
+ $(top_srcdir)/src/H5FDsrb.h \
+ $(top_srcdir)/src/H5FDstdio.h \
+ $(top_srcdir)/src/H5FDstream.h \
+ $(top_srcdir)/tools/lib/h5trav.h
+h5repack_copy.lo: \
+ $(top_srcdir)/tools/h5repack/h5repack_copy.c \
+ $(top_srcdir)/src/H5private.h \
+ $(top_srcdir)/src/H5public.h \
+ $(top_builddir)/src/H5pubconf.h \
+ $(top_srcdir)/src/H5api_adpt.h \
+ $(top_srcdir)/src/H5MPprivate.h \
+ $(top_srcdir)/src/H5FSprivate.h \
+ $(top_srcdir)/tools/h5repack/h5repack.h \
+ $(top_srcdir)/src/hdf5.h \
+ $(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
+ $(top_srcdir)/src/H5ACpublic.h \
+ $(top_srcdir)/src/H5Bpublic.h \
+ $(top_srcdir)/src/H5Dpublic.h \
+ $(top_srcdir)/src/H5Epublic.h \
+ $(top_srcdir)/src/H5Epubgen.h \
+ $(top_srcdir)/src/H5Fpublic.h \
+ $(top_srcdir)/src/H5FDpublic.h \
+ $(top_srcdir)/src/H5FPpublic.h \
+ $(top_srcdir)/src/H5Gpublic.h \
+ $(top_srcdir)/src/H5Opublic.h \
+ $(top_srcdir)/src/H5HGpublic.h \
+ $(top_srcdir)/src/H5HLpublic.h \
+ $(top_srcdir)/src/H5MMpublic.h \
+ $(top_srcdir)/src/H5Ppublic.h \
+ $(top_srcdir)/src/H5Zpublic.h \
+ $(top_srcdir)/src/H5Rpublic.h \
+ $(top_srcdir)/src/H5Spublic.h \
+ $(top_srcdir)/src/H5Tpublic.h \
+ $(top_srcdir)/src/H5FDcore.h \
+ $(top_srcdir)/src/H5FDfamily.h \
+ $(top_srcdir)/src/H5FDgass.h \
+ $(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDfphdf5.h \
+ $(top_srcdir)/src/H5FDmpio.h \
+ $(top_srcdir)/src/H5FDmpiposix.h \
+ $(top_srcdir)/src/H5FDmulti.h \
+ $(top_srcdir)/src/H5FDsec2.h \
+ $(top_srcdir)/src/H5FDsrb.h \
+ $(top_srcdir)/src/H5FDstdio.h \
+ $(top_srcdir)/src/H5FDstream.h \
+ $(top_srcdir)/tools/lib/h5trav.h
+h5repack_filters.lo: \
+ $(top_srcdir)/tools/h5repack/h5repack_filters.c \
+ $(top_srcdir)/src/hdf5.h \
+ $(top_srcdir)/src/H5public.h \
+ $(top_builddir)/src/H5pubconf.h \
+ $(top_srcdir)/src/H5api_adpt.h \
+ $(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
+ $(top_srcdir)/src/H5ACpublic.h \
+ $(top_srcdir)/src/H5Bpublic.h \
+ $(top_srcdir)/src/H5Dpublic.h \
+ $(top_srcdir)/src/H5Epublic.h \
+ $(top_srcdir)/src/H5Epubgen.h \
+ $(top_srcdir)/src/H5Fpublic.h \
+ $(top_srcdir)/src/H5FDpublic.h \
+ $(top_srcdir)/src/H5FPpublic.h \
+ $(top_srcdir)/src/H5Gpublic.h \
+ $(top_srcdir)/src/H5Opublic.h \
+ $(top_srcdir)/src/H5HGpublic.h \
+ $(top_srcdir)/src/H5HLpublic.h \
+ $(top_srcdir)/src/H5MMpublic.h \
+ $(top_srcdir)/src/H5Ppublic.h \
+ $(top_srcdir)/src/H5Zpublic.h \
+ $(top_srcdir)/src/H5Rpublic.h \
+ $(top_srcdir)/src/H5Spublic.h \
+ $(top_srcdir)/src/H5Tpublic.h \
+ $(top_srcdir)/src/H5FDcore.h \
+ $(top_srcdir)/src/H5FDfamily.h \
+ $(top_srcdir)/src/H5FDgass.h \
+ $(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDfphdf5.h \
+ $(top_srcdir)/src/H5FDmpio.h \
+ $(top_srcdir)/src/H5FDmpiposix.h \
+ $(top_srcdir)/src/H5FDmulti.h \
+ $(top_srcdir)/src/H5FDsec2.h \
+ $(top_srcdir)/src/H5FDsrb.h \
+ $(top_srcdir)/src/H5FDstdio.h \
+ $(top_srcdir)/src/H5FDstream.h \
+ $(top_srcdir)/test/h5test.h \
+ $(top_srcdir)/src/H5private.h \
+ $(top_srcdir)/src/H5MPprivate.h \
+ $(top_srcdir)/src/H5FSprivate.h \
+ $(top_srcdir)/tools/h5repack/h5repack.h \
+ $(top_srcdir)/tools/lib/h5trav.h
+h5repack_refs.lo: \
+ $(top_srcdir)/tools/h5repack/h5repack_refs.c \
+ $(top_srcdir)/src/H5private.h \
+ $(top_srcdir)/src/H5public.h \
+ $(top_builddir)/src/H5pubconf.h \
+ $(top_srcdir)/src/H5api_adpt.h \
+ $(top_srcdir)/src/H5MPprivate.h \
+ $(top_srcdir)/src/H5FSprivate.h \
+ $(top_srcdir)/tools/h5repack/h5repack.h \
+ $(top_srcdir)/src/hdf5.h \
+ $(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
+ $(top_srcdir)/src/H5ACpublic.h \
+ $(top_srcdir)/src/H5Bpublic.h \
+ $(top_srcdir)/src/H5Dpublic.h \
+ $(top_srcdir)/src/H5Epublic.h \
+ $(top_srcdir)/src/H5Epubgen.h \
+ $(top_srcdir)/src/H5Fpublic.h \
+ $(top_srcdir)/src/H5FDpublic.h \
+ $(top_srcdir)/src/H5FPpublic.h \
+ $(top_srcdir)/src/H5Gpublic.h \
+ $(top_srcdir)/src/H5Opublic.h \
+ $(top_srcdir)/src/H5HGpublic.h \
+ $(top_srcdir)/src/H5HLpublic.h \
+ $(top_srcdir)/src/H5MMpublic.h \
+ $(top_srcdir)/src/H5Ppublic.h \
+ $(top_srcdir)/src/H5Zpublic.h \
+ $(top_srcdir)/src/H5Rpublic.h \
+ $(top_srcdir)/src/H5Spublic.h \
+ $(top_srcdir)/src/H5Tpublic.h \
+ $(top_srcdir)/src/H5FDcore.h \
+ $(top_srcdir)/src/H5FDfamily.h \
+ $(top_srcdir)/src/H5FDgass.h \
+ $(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDfphdf5.h \
+ $(top_srcdir)/src/H5FDmpio.h \
+ $(top_srcdir)/src/H5FDmpiposix.h \
+ $(top_srcdir)/src/H5FDmulti.h \
+ $(top_srcdir)/src/H5FDsec2.h \
+ $(top_srcdir)/src/H5FDsrb.h \
+ $(top_srcdir)/src/H5FDstdio.h \
+ $(top_srcdir)/src/H5FDstream.h \
+ $(top_srcdir)/tools/lib/h5trav.h
+h5repack_layout.lo: \
+ $(top_srcdir)/tools/h5repack/h5repack_layout.c \
+ $(top_srcdir)/src/hdf5.h \
+ $(top_srcdir)/src/H5public.h \
+ $(top_builddir)/src/H5pubconf.h \
+ $(top_srcdir)/src/H5api_adpt.h \
+ $(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
+ $(top_srcdir)/src/H5ACpublic.h \
+ $(top_srcdir)/src/H5Bpublic.h \
+ $(top_srcdir)/src/H5Dpublic.h \
+ $(top_srcdir)/src/H5Epublic.h \
+ $(top_srcdir)/src/H5Epubgen.h \
+ $(top_srcdir)/src/H5Fpublic.h \
+ $(top_srcdir)/src/H5FDpublic.h \
+ $(top_srcdir)/src/H5FPpublic.h \
+ $(top_srcdir)/src/H5Gpublic.h \
+ $(top_srcdir)/src/H5Opublic.h \
+ $(top_srcdir)/src/H5HGpublic.h \
+ $(top_srcdir)/src/H5HLpublic.h \
+ $(top_srcdir)/src/H5MMpublic.h \
+ $(top_srcdir)/src/H5Ppublic.h \
+ $(top_srcdir)/src/H5Zpublic.h \
+ $(top_srcdir)/src/H5Rpublic.h \
+ $(top_srcdir)/src/H5Spublic.h \
+ $(top_srcdir)/src/H5Tpublic.h \
+ $(top_srcdir)/src/H5FDcore.h \
+ $(top_srcdir)/src/H5FDfamily.h \
+ $(top_srcdir)/src/H5FDgass.h \
+ $(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDfphdf5.h \
+ $(top_srcdir)/src/H5FDmpio.h \
+ $(top_srcdir)/src/H5FDmpiposix.h \
+ $(top_srcdir)/src/H5FDmulti.h \
+ $(top_srcdir)/src/H5FDsec2.h \
+ $(top_srcdir)/src/H5FDsrb.h \
+ $(top_srcdir)/src/H5FDstdio.h \
+ $(top_srcdir)/src/H5FDstream.h \
+ $(top_srcdir)/test/h5test.h \
+ $(top_srcdir)/src/H5private.h \
+ $(top_srcdir)/src/H5MPprivate.h \
+ $(top_srcdir)/src/H5FSprivate.h \
+ $(top_srcdir)/tools/h5repack/h5repack.h \
+ $(top_srcdir)/tools/lib/h5trav.h
+h5repack_list.lo: \
+ $(top_srcdir)/tools/h5repack/h5repack_list.c \
+ $(top_srcdir)/src/H5private.h \
+ $(top_srcdir)/src/H5public.h \
+ $(top_builddir)/src/H5pubconf.h \
+ $(top_srcdir)/src/H5api_adpt.h \
+ $(top_srcdir)/src/H5MPprivate.h \
+ $(top_srcdir)/src/H5FSprivate.h \
+ $(top_srcdir)/tools/h5repack/h5repack.h \
+ $(top_srcdir)/src/hdf5.h \
+ $(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
+ $(top_srcdir)/src/H5ACpublic.h \
+ $(top_srcdir)/src/H5Bpublic.h \
+ $(top_srcdir)/src/H5Dpublic.h \
+ $(top_srcdir)/src/H5Epublic.h \
+ $(top_srcdir)/src/H5Epubgen.h \
+ $(top_srcdir)/src/H5Fpublic.h \
+ $(top_srcdir)/src/H5FDpublic.h \
+ $(top_srcdir)/src/H5FPpublic.h \
+ $(top_srcdir)/src/H5Gpublic.h \
+ $(top_srcdir)/src/H5Opublic.h \
+ $(top_srcdir)/src/H5HGpublic.h \
+ $(top_srcdir)/src/H5HLpublic.h \
+ $(top_srcdir)/src/H5MMpublic.h \
+ $(top_srcdir)/src/H5Ppublic.h \
+ $(top_srcdir)/src/H5Zpublic.h \
+ $(top_srcdir)/src/H5Rpublic.h \
+ $(top_srcdir)/src/H5Spublic.h \
+ $(top_srcdir)/src/H5Tpublic.h \
+ $(top_srcdir)/src/H5FDcore.h \
+ $(top_srcdir)/src/H5FDfamily.h \
+ $(top_srcdir)/src/H5FDgass.h \
+ $(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDfphdf5.h \
+ $(top_srcdir)/src/H5FDmpio.h \
+ $(top_srcdir)/src/H5FDmpiposix.h \
+ $(top_srcdir)/src/H5FDmulti.h \
+ $(top_srcdir)/src/H5FDsec2.h \
+ $(top_srcdir)/src/H5FDsrb.h \
+ $(top_srcdir)/src/H5FDstdio.h \
+ $(top_srcdir)/src/H5FDstream.h \
+ $(top_srcdir)/tools/lib/h5trav.h
+h5repack_main.lo: \
+ $(top_srcdir)/tools/h5repack/h5repack_main.c \
+ $(top_srcdir)/tools/h5repack/h5repack.h \
+ $(top_srcdir)/src/hdf5.h \
+ $(top_srcdir)/src/H5public.h \
+ $(top_builddir)/src/H5pubconf.h \
+ $(top_srcdir)/src/H5api_adpt.h \
+ $(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
+ $(top_srcdir)/src/H5ACpublic.h \
+ $(top_srcdir)/src/H5Bpublic.h \
+ $(top_srcdir)/src/H5Dpublic.h \
+ $(top_srcdir)/src/H5Epublic.h \
+ $(top_srcdir)/src/H5Epubgen.h \
+ $(top_srcdir)/src/H5Fpublic.h \
+ $(top_srcdir)/src/H5FDpublic.h \
+ $(top_srcdir)/src/H5FPpublic.h \
+ $(top_srcdir)/src/H5Gpublic.h \
+ $(top_srcdir)/src/H5Opublic.h \
+ $(top_srcdir)/src/H5HGpublic.h \
+ $(top_srcdir)/src/H5HLpublic.h \
+ $(top_srcdir)/src/H5MMpublic.h \
+ $(top_srcdir)/src/H5Ppublic.h \
+ $(top_srcdir)/src/H5Zpublic.h \
+ $(top_srcdir)/src/H5Rpublic.h \
+ $(top_srcdir)/src/H5Spublic.h \
+ $(top_srcdir)/src/H5Tpublic.h \
+ $(top_srcdir)/src/H5FDcore.h \
+ $(top_srcdir)/src/H5FDfamily.h \
+ $(top_srcdir)/src/H5FDgass.h \
+ $(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDfphdf5.h \
+ $(top_srcdir)/src/H5FDmpio.h \
+ $(top_srcdir)/src/H5FDmpiposix.h \
+ $(top_srcdir)/src/H5FDmulti.h \
+ $(top_srcdir)/src/H5FDsec2.h \
+ $(top_srcdir)/src/H5FDsrb.h \
+ $(top_srcdir)/src/H5FDstdio.h \
+ $(top_srcdir)/src/H5FDstream.h \
+ $(top_srcdir)/tools/lib/h5trav.h
+h5repack_opttable.lo: \
+ $(top_srcdir)/tools/h5repack/h5repack_opttable.c \
+ $(top_srcdir)/tools/h5repack/h5repack.h \
+ $(top_srcdir)/src/hdf5.h \
+ $(top_srcdir)/src/H5public.h \
+ $(top_builddir)/src/H5pubconf.h \
+ $(top_srcdir)/src/H5api_adpt.h \
+ $(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
+ $(top_srcdir)/src/H5ACpublic.h \
+ $(top_srcdir)/src/H5Bpublic.h \
+ $(top_srcdir)/src/H5Dpublic.h \
+ $(top_srcdir)/src/H5Epublic.h \
+ $(top_srcdir)/src/H5Epubgen.h \
+ $(top_srcdir)/src/H5Fpublic.h \
+ $(top_srcdir)/src/H5FDpublic.h \
+ $(top_srcdir)/src/H5FPpublic.h \
+ $(top_srcdir)/src/H5Gpublic.h \
+ $(top_srcdir)/src/H5Opublic.h \
+ $(top_srcdir)/src/H5HGpublic.h \
+ $(top_srcdir)/src/H5HLpublic.h \
+ $(top_srcdir)/src/H5MMpublic.h \
+ $(top_srcdir)/src/H5Ppublic.h \
+ $(top_srcdir)/src/H5Zpublic.h \
+ $(top_srcdir)/src/H5Rpublic.h \
+ $(top_srcdir)/src/H5Spublic.h \
+ $(top_srcdir)/src/H5Tpublic.h \
+ $(top_srcdir)/src/H5FDcore.h \
+ $(top_srcdir)/src/H5FDfamily.h \
+ $(top_srcdir)/src/H5FDgass.h \
+ $(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDfphdf5.h \
+ $(top_srcdir)/src/H5FDmpio.h \
+ $(top_srcdir)/src/H5FDmpiposix.h \
+ $(top_srcdir)/src/H5FDmulti.h \
+ $(top_srcdir)/src/H5FDsec2.h \
+ $(top_srcdir)/src/H5FDsrb.h \
+ $(top_srcdir)/src/H5FDstdio.h \
+ $(top_srcdir)/src/H5FDstream.h \
+ $(top_srcdir)/tools/lib/h5trav.h
+h5repack_parse.lo: \
+ $(top_srcdir)/tools/h5repack/h5repack_parse.c \
+ $(top_srcdir)/tools/h5repack/h5repack.h \
+ $(top_srcdir)/src/hdf5.h \
+ $(top_srcdir)/src/H5public.h \
+ $(top_builddir)/src/H5pubconf.h \
+ $(top_srcdir)/src/H5api_adpt.h \
+ $(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
+ $(top_srcdir)/src/H5ACpublic.h \
+ $(top_srcdir)/src/H5Bpublic.h \
+ $(top_srcdir)/src/H5Dpublic.h \
+ $(top_srcdir)/src/H5Epublic.h \
+ $(top_srcdir)/src/H5Epubgen.h \
+ $(top_srcdir)/src/H5Fpublic.h \
+ $(top_srcdir)/src/H5FDpublic.h \
+ $(top_srcdir)/src/H5FPpublic.h \
+ $(top_srcdir)/src/H5Gpublic.h \
+ $(top_srcdir)/src/H5Opublic.h \
+ $(top_srcdir)/src/H5HGpublic.h \
+ $(top_srcdir)/src/H5HLpublic.h \
+ $(top_srcdir)/src/H5MMpublic.h \
+ $(top_srcdir)/src/H5Ppublic.h \
+ $(top_srcdir)/src/H5Zpublic.h \
+ $(top_srcdir)/src/H5Rpublic.h \
+ $(top_srcdir)/src/H5Spublic.h \
+ $(top_srcdir)/src/H5Tpublic.h \
+ $(top_srcdir)/src/H5FDcore.h \
+ $(top_srcdir)/src/H5FDfamily.h \
+ $(top_srcdir)/src/H5FDgass.h \
+ $(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDfphdf5.h \
+ $(top_srcdir)/src/H5FDmpio.h \
+ $(top_srcdir)/src/H5FDmpiposix.h \
+ $(top_srcdir)/src/H5FDmulti.h \
+ $(top_srcdir)/src/H5FDsec2.h \
+ $(top_srcdir)/src/H5FDsrb.h \
+ $(top_srcdir)/src/H5FDstdio.h \
+ $(top_srcdir)/src/H5FDstream.h \
+ $(top_srcdir)/tools/lib/h5trav.h
+h5repack_verify.lo: \
+ $(top_srcdir)/tools/h5repack/h5repack_verify.c \
+ $(top_srcdir)/src/hdf5.h \
+ $(top_srcdir)/src/H5public.h \
+ $(top_builddir)/src/H5pubconf.h \
+ $(top_srcdir)/src/H5api_adpt.h \
+ $(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
+ $(top_srcdir)/src/H5ACpublic.h \
+ $(top_srcdir)/src/H5Bpublic.h \
+ $(top_srcdir)/src/H5Dpublic.h \
+ $(top_srcdir)/src/H5Epublic.h \
+ $(top_srcdir)/src/H5Epubgen.h \
+ $(top_srcdir)/src/H5Fpublic.h \
+ $(top_srcdir)/src/H5FDpublic.h \
+ $(top_srcdir)/src/H5FPpublic.h \
+ $(top_srcdir)/src/H5Gpublic.h \
+ $(top_srcdir)/src/H5Opublic.h \
+ $(top_srcdir)/src/H5HGpublic.h \
+ $(top_srcdir)/src/H5HLpublic.h \
+ $(top_srcdir)/src/H5MMpublic.h \
+ $(top_srcdir)/src/H5Ppublic.h \
+ $(top_srcdir)/src/H5Zpublic.h \
+ $(top_srcdir)/src/H5Rpublic.h \
+ $(top_srcdir)/src/H5Spublic.h \
+ $(top_srcdir)/src/H5Tpublic.h \
+ $(top_srcdir)/src/H5FDcore.h \
+ $(top_srcdir)/src/H5FDfamily.h \
+ $(top_srcdir)/src/H5FDgass.h \
+ $(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDfphdf5.h \
+ $(top_srcdir)/src/H5FDmpio.h \
+ $(top_srcdir)/src/H5FDmpiposix.h \
+ $(top_srcdir)/src/H5FDmulti.h \
+ $(top_srcdir)/src/H5FDsec2.h \
+ $(top_srcdir)/src/H5FDsrb.h \
+ $(top_srcdir)/src/H5FDstdio.h \
+ $(top_srcdir)/src/H5FDstream.h \
+ $(top_srcdir)/test/h5test.h \
+ $(top_srcdir)/src/H5private.h \
+ $(top_srcdir)/src/H5MPprivate.h \
+ $(top_srcdir)/src/H5FSprivate.h \
+ $(top_srcdir)/tools/h5repack/h5repack.h \
+ $(top_srcdir)/tools/lib/h5trav.h
+testh5repack_attr.lo: \
+ $(top_srcdir)/tools/h5repack/testh5repack_attr.c \
+ $(top_srcdir)/src/hdf5.h \
+ $(top_srcdir)/src/H5public.h \
+ $(top_builddir)/src/H5pubconf.h \
+ $(top_srcdir)/src/H5api_adpt.h \
+ $(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
+ $(top_srcdir)/src/H5ACpublic.h \
+ $(top_srcdir)/src/H5Bpublic.h \
+ $(top_srcdir)/src/H5Dpublic.h \
+ $(top_srcdir)/src/H5Epublic.h \
+ $(top_srcdir)/src/H5Epubgen.h \
+ $(top_srcdir)/src/H5Fpublic.h \
+ $(top_srcdir)/src/H5FDpublic.h \
+ $(top_srcdir)/src/H5FPpublic.h \
+ $(top_srcdir)/src/H5Gpublic.h \
+ $(top_srcdir)/src/H5Opublic.h \
+ $(top_srcdir)/src/H5HGpublic.h \
+ $(top_srcdir)/src/H5HLpublic.h \
+ $(top_srcdir)/src/H5MMpublic.h \
+ $(top_srcdir)/src/H5Ppublic.h \
+ $(top_srcdir)/src/H5Zpublic.h \
+ $(top_srcdir)/src/H5Rpublic.h \
+ $(top_srcdir)/src/H5Spublic.h \
+ $(top_srcdir)/src/H5Tpublic.h \
+ $(top_srcdir)/src/H5FDcore.h \
+ $(top_srcdir)/src/H5FDfamily.h \
+ $(top_srcdir)/src/H5FDgass.h \
+ $(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDfphdf5.h \
+ $(top_srcdir)/src/H5FDmpio.h \
+ $(top_srcdir)/src/H5FDmpiposix.h \
+ $(top_srcdir)/src/H5FDmulti.h \
+ $(top_srcdir)/src/H5FDsec2.h \
+ $(top_srcdir)/src/H5FDsrb.h \
+ $(top_srcdir)/src/H5FDstdio.h \
+ $(top_srcdir)/src/H5FDstream.h \
+ $(top_srcdir)/test/h5test.h \
+ $(top_srcdir)/src/H5private.h \
+ $(top_srcdir)/src/H5MPprivate.h \
+ $(top_srcdir)/src/H5FSprivate.h \
+ $(top_srcdir)/tools/h5repack/h5repack.h \
+ $(top_srcdir)/tools/lib/h5trav.h
+testh5repack_dset.lo: \
+ $(top_srcdir)/tools/h5repack/testh5repack_dset.c \
+ $(top_srcdir)/src/hdf5.h \
+ $(top_srcdir)/src/H5public.h \
+ $(top_builddir)/src/H5pubconf.h \
+ $(top_srcdir)/src/H5api_adpt.h \
+ $(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
+ $(top_srcdir)/src/H5ACpublic.h \
+ $(top_srcdir)/src/H5Bpublic.h \
+ $(top_srcdir)/src/H5Dpublic.h \
+ $(top_srcdir)/src/H5Epublic.h \
+ $(top_srcdir)/src/H5Epubgen.h \
+ $(top_srcdir)/src/H5Fpublic.h \
+ $(top_srcdir)/src/H5FDpublic.h \
+ $(top_srcdir)/src/H5FPpublic.h \
+ $(top_srcdir)/src/H5Gpublic.h \
+ $(top_srcdir)/src/H5Opublic.h \
+ $(top_srcdir)/src/H5HGpublic.h \
+ $(top_srcdir)/src/H5HLpublic.h \
+ $(top_srcdir)/src/H5MMpublic.h \
+ $(top_srcdir)/src/H5Ppublic.h \
+ $(top_srcdir)/src/H5Zpublic.h \
+ $(top_srcdir)/src/H5Rpublic.h \
+ $(top_srcdir)/src/H5Spublic.h \
+ $(top_srcdir)/src/H5Tpublic.h \
+ $(top_srcdir)/src/H5FDcore.h \
+ $(top_srcdir)/src/H5FDfamily.h \
+ $(top_srcdir)/src/H5FDgass.h \
+ $(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDfphdf5.h \
+ $(top_srcdir)/src/H5FDmpio.h \
+ $(top_srcdir)/src/H5FDmpiposix.h \
+ $(top_srcdir)/src/H5FDmulti.h \
+ $(top_srcdir)/src/H5FDsec2.h \
+ $(top_srcdir)/src/H5FDsrb.h \
+ $(top_srcdir)/src/H5FDstdio.h \
+ $(top_srcdir)/src/H5FDstream.h \
+ $(top_srcdir)/test/h5test.h \
+ $(top_srcdir)/src/H5private.h \
+ $(top_srcdir)/src/H5MPprivate.h \
+ $(top_srcdir)/src/H5FSprivate.h \
+ $(top_srcdir)/tools/h5repack/h5repack.h \
+ $(top_srcdir)/tools/lib/h5trav.h
+testh5repack_filters.lo: \
+ $(top_srcdir)/tools/h5repack/testh5repack_filters.c \
+ $(top_srcdir)/src/hdf5.h \
+ $(top_srcdir)/src/H5public.h \
+ $(top_builddir)/src/H5pubconf.h \
+ $(top_srcdir)/src/H5api_adpt.h \
+ $(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
+ $(top_srcdir)/src/H5ACpublic.h \
+ $(top_srcdir)/src/H5Bpublic.h \
+ $(top_srcdir)/src/H5Dpublic.h \
+ $(top_srcdir)/src/H5Epublic.h \
+ $(top_srcdir)/src/H5Epubgen.h \
+ $(top_srcdir)/src/H5Fpublic.h \
+ $(top_srcdir)/src/H5FDpublic.h \
+ $(top_srcdir)/src/H5FPpublic.h \
+ $(top_srcdir)/src/H5Gpublic.h \
+ $(top_srcdir)/src/H5Opublic.h \
+ $(top_srcdir)/src/H5HGpublic.h \
+ $(top_srcdir)/src/H5HLpublic.h \
+ $(top_srcdir)/src/H5MMpublic.h \
+ $(top_srcdir)/src/H5Ppublic.h \
+ $(top_srcdir)/src/H5Zpublic.h \
+ $(top_srcdir)/src/H5Rpublic.h \
+ $(top_srcdir)/src/H5Spublic.h \
+ $(top_srcdir)/src/H5Tpublic.h \
+ $(top_srcdir)/src/H5FDcore.h \
+ $(top_srcdir)/src/H5FDfamily.h \
+ $(top_srcdir)/src/H5FDgass.h \
+ $(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDfphdf5.h \
+ $(top_srcdir)/src/H5FDmpio.h \
+ $(top_srcdir)/src/H5FDmpiposix.h \
+ $(top_srcdir)/src/H5FDmulti.h \
+ $(top_srcdir)/src/H5FDsec2.h \
+ $(top_srcdir)/src/H5FDsrb.h \
+ $(top_srcdir)/src/H5FDstdio.h \
+ $(top_srcdir)/src/H5FDstream.h \
+ $(top_srcdir)/test/h5test.h \
+ $(top_srcdir)/src/H5private.h \
+ $(top_srcdir)/src/H5MPprivate.h \
+ $(top_srcdir)/src/H5FSprivate.h \
+ $(top_srcdir)/tools/h5repack/h5repack.h \
+ $(top_srcdir)/tools/lib/h5trav.h
+testh5repack_main.lo: \
+ $(top_srcdir)/tools/h5repack/testh5repack_main.c \
+ $(top_srcdir)/src/hdf5.h \
+ $(top_srcdir)/src/H5public.h \
+ $(top_builddir)/src/H5pubconf.h \
+ $(top_srcdir)/src/H5api_adpt.h \
+ $(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
+ $(top_srcdir)/src/H5ACpublic.h \
+ $(top_srcdir)/src/H5Bpublic.h \
+ $(top_srcdir)/src/H5Dpublic.h \
+ $(top_srcdir)/src/H5Epublic.h \
+ $(top_srcdir)/src/H5Epubgen.h \
+ $(top_srcdir)/src/H5Fpublic.h \
+ $(top_srcdir)/src/H5FDpublic.h \
+ $(top_srcdir)/src/H5FPpublic.h \
+ $(top_srcdir)/src/H5Gpublic.h \
+ $(top_srcdir)/src/H5Opublic.h \
+ $(top_srcdir)/src/H5HGpublic.h \
+ $(top_srcdir)/src/H5HLpublic.h \
+ $(top_srcdir)/src/H5MMpublic.h \
+ $(top_srcdir)/src/H5Ppublic.h \
+ $(top_srcdir)/src/H5Zpublic.h \
+ $(top_srcdir)/src/H5Rpublic.h \
+ $(top_srcdir)/src/H5Spublic.h \
+ $(top_srcdir)/src/H5Tpublic.h \
+ $(top_srcdir)/src/H5FDcore.h \
+ $(top_srcdir)/src/H5FDfamily.h \
+ $(top_srcdir)/src/H5FDgass.h \
+ $(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDfphdf5.h \
+ $(top_srcdir)/src/H5FDmpio.h \
+ $(top_srcdir)/src/H5FDmpiposix.h \
+ $(top_srcdir)/src/H5FDmulti.h \
+ $(top_srcdir)/src/H5FDsec2.h \
+ $(top_srcdir)/src/H5FDsrb.h \
+ $(top_srcdir)/src/H5FDstdio.h \
+ $(top_srcdir)/src/H5FDstream.h \
+ $(top_srcdir)/test/h5test.h \
+ $(top_srcdir)/src/H5private.h \
+ $(top_srcdir)/src/H5MPprivate.h \
+ $(top_srcdir)/src/H5FSprivate.h \
+ $(top_srcdir)/tools/h5repack/h5repack.h \
+ $(top_srcdir)/tools/lib/h5trav.h \
+ $(top_srcdir)/tools/lib/h5diff.h
+testh5repack_make.lo: \
+ $(top_srcdir)/tools/h5repack/testh5repack_make.c \
+ $(top_srcdir)/src/hdf5.h \
+ $(top_srcdir)/src/H5public.h \
+ $(top_builddir)/src/H5pubconf.h \
+ $(top_srcdir)/src/H5api_adpt.h \
+ $(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
+ $(top_srcdir)/src/H5ACpublic.h \
+ $(top_srcdir)/src/H5Bpublic.h \
+ $(top_srcdir)/src/H5Dpublic.h \
+ $(top_srcdir)/src/H5Epublic.h \
+ $(top_srcdir)/src/H5Epubgen.h \
+ $(top_srcdir)/src/H5Fpublic.h \
+ $(top_srcdir)/src/H5FDpublic.h \
+ $(top_srcdir)/src/H5FPpublic.h \
+ $(top_srcdir)/src/H5Gpublic.h \
+ $(top_srcdir)/src/H5Opublic.h \
+ $(top_srcdir)/src/H5HGpublic.h \
+ $(top_srcdir)/src/H5HLpublic.h \
+ $(top_srcdir)/src/H5MMpublic.h \
+ $(top_srcdir)/src/H5Ppublic.h \
+ $(top_srcdir)/src/H5Zpublic.h \
+ $(top_srcdir)/src/H5Rpublic.h \
+ $(top_srcdir)/src/H5Spublic.h \
+ $(top_srcdir)/src/H5Tpublic.h \
+ $(top_srcdir)/src/H5FDcore.h \
+ $(top_srcdir)/src/H5FDfamily.h \
+ $(top_srcdir)/src/H5FDgass.h \
+ $(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDfphdf5.h \
+ $(top_srcdir)/src/H5FDmpio.h \
+ $(top_srcdir)/src/H5FDmpiposix.h \
+ $(top_srcdir)/src/H5FDmulti.h \
+ $(top_srcdir)/src/H5FDsec2.h \
+ $(top_srcdir)/src/H5FDsrb.h \
+ $(top_srcdir)/src/H5FDstdio.h \
+ $(top_srcdir)/src/H5FDstream.h \
+ $(top_srcdir)/test/h5test.h \
+ $(top_srcdir)/src/H5private.h \
+ $(top_srcdir)/src/H5MPprivate.h \
+ $(top_srcdir)/src/H5FSprivate.h \
+ $(top_srcdir)/tools/h5repack/h5repack.h \
+ $(top_srcdir)/tools/lib/h5trav.h
diff --git a/tools/lib/h5trav.c b/tools/lib/h5trav.c
new file mode 100644
index 0000000..9c1db43
--- /dev/null
+++ b/tools/lib/h5trav.c
@@ -0,0 +1,651 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
+ * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+#include "h5trav.h"
+#include "H5private.h"
+
+
+
+/* functions for traversal */
+int traverse( hid_t loc_id,
+ const char *group_name,
+ trav_table_t *table,
+ trav_info_t *info,
+ int *idx );
+
+herr_t get_nnames( hid_t loc_id,
+ const char *group_name );
+
+herr_t get_name_type( hid_t loc_id,
+ const char *group_name,
+ int idx,
+ char **name,
+ H5G_obj_t *type );
+
+/*-------------------------------------------------------------------------
+ * Function: h5trav_getinfo
+ *
+ * Purpose: get an array of "trav_info_t" , containing the name and type of
+ * objects in the file
+ *
+ * Return: number of object names in file
+ *
+ * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ *
+ * Date: November 6, 2002
+ *
+ *-------------------------------------------------------------------------
+ */
+
+int h5trav_getinfo( hid_t file_id, trav_info_t *info )
+{
+
+ trav_table_t *table=NULL;
+ int nnames=0;
+
+ /* init table */
+ trav_table_init( &table );
+
+ /* iterate starting on the root group */
+ if (( nnames = traverse( file_id, "/", table, info, &nnames )) < 0 )
+ return -1;
+
+ /* free table */
+ trav_table_free( table );
+
+ return nnames;
+
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: h5trav_gettable
+ *
+ * Purpose: get the trav_table_t struct
+ *
+ * Return: 0, -1 on error
+ *
+ * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ *
+ * Date: December 17, 2003
+ *
+ *-------------------------------------------------------------------------
+ */
+
+int h5trav_gettable(hid_t fid, trav_table_t *travt)
+{
+ int nnames=0;
+
+ /* iterate starting on the root group */
+ if (( nnames = traverse(fid,"/",travt,NULL,&nnames))<0)
+ return -1;
+
+ return 0;
+
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: h5trav_getindex
+ *
+ * Purpose: get index of OBJ in list
+ *
+ * Return: index, -1 if not found
+ *
+ * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ *
+ * Date: May 9, 2003
+ *
+ *-------------------------------------------------------------------------
+ */
+
+int h5trav_getindex( const char *obj, int nobjs, trav_info_t *info )
+{
+ char *pdest;
+ int result;
+ int i;
+
+ for ( i = 0; i < nobjs; i++)
+ {
+ if ( strcmp(obj,info[i].name)==0 )
+ return i;
+
+ pdest = strstr( info[i].name, obj );
+ result = (int)(pdest - info[i].name);
+
+ /* found at position 1, meaning without '/' */
+ if( pdest != NULL && result==1 )
+ return i;
+ }
+ return -1;
+}
+
+
+
+/*-------------------------------------------------------------------------
+ * Function: h5trav_freeinfo
+ *
+ * Purpose: free info memory
+ *
+ *-------------------------------------------------------------------------
+ */
+
+void h5trav_freeinfo( trav_info_t *info, int nobjs )
+{
+ int i;
+ if ( info )
+ {
+ for ( i = 0; i < nobjs; i++)
+ {
+ if (info[i].name)
+ HDfree( info[i].name );
+ }
+ HDfree(info);
+ }
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: count_names
+ *
+ * Purpose: operator function
+ *
+ * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ *
+ * Date: October 10, 2002
+ *
+ * Comments:
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+
+static herr_t count_names( hid_t loc_id, const char *name, void *op_data)
+{
+
+ H5G_stat_t statbuf;
+
+ if (H5Gget_objinfo( loc_id, name, 0, &statbuf) < 0 )
+ return 1;
+
+ (*(int *)op_data)++;
+
+ /* Define a default zero value for return. This will cause the iterator to continue */
+ return 0;
+}
+
+/*-------------------------------------------------------------------------
+ * Function: get_nnames
+ *
+ * Purpose: Counts the number of names in the group GROUP_NAME
+ *
+ * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ *
+ * Date: October 10, 2002
+ *
+ * Return:
+ * Success: The return value of the first operator that
+ * returns non-zero, or zero if all members were
+ * processed with no operator returning non-zero.
+ *
+ * Failure: Negative if something goes wrong within the
+ * library, or the negative value returned by one
+ * of the operators.
+ *
+ *-------------------------------------------------------------------------
+ */
+
+herr_t get_nnames( hid_t loc_id, const char *group_name )
+{
+
+ int nobjs = 0;
+
+ if ( H5Giterate( loc_id, group_name, NULL, count_names, (void *)&nobjs ) < 0 )
+ return -1;
+
+ return nobjs;
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: opget_info
+ *
+ * Purpose: operator function
+ *
+ * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ *
+ * Date: October 10, 2002
+ *
+ * Comments:
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+
+static herr_t opget_info( hid_t loc_id, const char *name, void *op_data)
+{
+
+ H5G_stat_t statbuf;
+
+ if (H5Gget_objinfo( loc_id, name, 0, &statbuf) < 0 )
+ return -1;
+
+ ((trav_info_t *)op_data)->type = statbuf.type;
+ ((trav_info_t *)op_data)->name = (char *)HDstrdup(name);
+
+ /* Define 1 for return. This will cause the iterator to stop */
+ return 1;
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: get_name_type
+ *
+ * Purpose:
+ *
+ * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ *
+ * Date: October 10, 2002
+ *
+ * Return:
+ * Success: The return value of the first operator that
+ * returns non-zero, or zero if all members were
+ * processed with no operator returning non-zero.
+ *
+ * Failure: Negative if something goes wrong within the
+ * library, or the negative value returned by one
+ * of the operators.
+ *
+ *-------------------------------------------------------------------------
+ */
+
+herr_t get_name_type( hid_t loc_id,
+ const char *group_name,
+ int idx,
+ char **name,
+ H5G_obj_t *type )
+{
+
+ trav_info_t info;
+
+ if (H5Giterate( loc_id, group_name, &idx, opget_info, (void *)&info) < 0 )
+ return -1;
+
+ *name = info.name;
+ *type = info.type;
+
+ return 0;
+}
+
+/*-------------------------------------------------------------------------
+ * Function: traverse
+ *
+ * Purpose: recursive function that searches HDF5 objects in LOC_ID
+ *
+ * Return: number of objects found in LOC_ID
+ *
+ * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ *
+ * Date: November 4, 2002
+ *
+ *-------------------------------------------------------------------------
+ */
+
+int traverse( hid_t loc_id,
+ const char *group_name,
+ trav_table_t *table,
+ trav_info_t *info,
+ int *idx )
+{
+
+ char *name=NULL;
+ H5G_obj_t type;
+ int n_names;
+ char *path=NULL;
+ H5G_stat_t statbuf;
+ int inserted_objs=0;
+ int i, j;
+
+
+ /* get the number of names */
+ if (( n_names = get_nnames( loc_id, group_name )) < 0 )
+ return -1;
+
+ for ( i = 0; i < n_names; i++)
+ {
+
+ if (get_name_type( loc_id, group_name, i, &name, &type ) < 0 )
+ return -1;
+
+ /* allocate path buffer */
+ path = (char*) HDmalloc(strlen(group_name) + strlen(name) + 2);
+
+ /* initialize path */
+ strcpy( path, group_name );
+ if ( strcmp(group_name,"/")!=0 )
+ strcat( path, "/" );
+ strcat( path, name );
+
+ /* disable error reporting */
+ H5E_BEGIN_TRY {
+
+ /* get info */
+ H5Gget_objinfo( loc_id, path, 1, &statbuf);
+ } H5E_END_TRY;
+
+ /* add to array */
+ if ( info )
+ {
+ info[*idx].name = (char *)HDstrdup(path);
+ info[*idx].type = type;
+ (*idx)++;
+ }
+
+
+ switch ( type )
+ {
+
+ /*-------------------------------------------------------------------------
+ * H5G_GROUP
+ *-------------------------------------------------------------------------
+ */
+
+ case H5G_GROUP:
+
+ /* increment */
+ inserted_objs++;
+
+ /* nlink is number of hard links to object */
+ if (statbuf.nlink > 0 && trav_table_search(statbuf.objno, table ) == -1)
+ {
+ /* add object to table */
+ trav_table_add(statbuf.objno, path, H5G_GROUP, table );
+
+ /* recurse with the absolute name */
+ inserted_objs += traverse( loc_id, path, table, info, idx );
+ }
+
+ /* search table
+ group with more than one link to it */
+ if (statbuf.nlink > 1)
+ {
+ if ((j = trav_table_search(statbuf.objno, table )) < 0 )
+ return -1;
+
+ if ( table->objs[j].displayed == 0 )
+ {
+ table->objs[j].displayed = 1;
+ trav_table_addlink(table,j,path);
+ }
+ else
+ {
+#if defined (H5_TRAV_DEBUG)
+ printf("<%s> HARDLINK\n", path);
+#endif
+ trav_table_addlink(table,j,path);
+ }
+
+ }
+
+ break;
+
+ /*-------------------------------------------------------------------------
+ * H5G_DATASET
+ *-------------------------------------------------------------------------
+ */
+
+ case H5G_DATASET:
+
+ /* increment */
+ inserted_objs++;
+
+ /* nlink is number of hard links to object */
+ if (statbuf.nlink > 0 && trav_table_search(statbuf.objno, table ) == -1)
+ {
+ /* add object to table */
+ trav_table_add(statbuf.objno, path, H5G_DATASET, table );
+ }
+
+ /* search table
+ dataset with more than one link to it */
+ if (statbuf.nlink > 1)
+ {
+ if ((j = trav_table_search(statbuf.objno, table )) < 0 )
+ return -1;
+
+ if ( table->objs[j].displayed == 0 )
+ {
+ table->objs[j].displayed = 1;
+ trav_table_addlink(table,j,path);
+ }
+ else
+ {
+#if defined (H5_TRAV_DEBUG)
+ printf("<%s> HARDLINK\n", path);
+#endif
+ trav_table_addlink(table,j,path);
+ } /* displayed==1 */
+ } /* nlink>1 */
+
+
+ break;
+
+ /*-------------------------------------------------------------------------
+ * H5G_TYPE
+ *-------------------------------------------------------------------------
+ */
+
+ case H5G_TYPE:
+
+ /* increment */
+ inserted_objs++;
+
+ /* nlink is number of hard links to object */
+ if (statbuf.nlink > 0 && trav_table_search(statbuf.objno, table ) == -1)
+ {
+ /* add object to table */
+ trav_table_add(statbuf.objno, path, H5G_TYPE, table );
+ }
+
+ break;
+
+
+ /*-------------------------------------------------------------------------
+ * H5G_LINK
+ *-------------------------------------------------------------------------
+ */
+
+ case H5G_LINK:
+
+ /* increment */
+ inserted_objs++;
+
+ /* add object to table */
+ trav_table_add(statbuf.objno, path, H5G_LINK, table );
+
+ break;
+
+
+ default:
+ break;
+
+ }
+
+ /*-------------------------------------------------------------------------
+ * end switch
+ *-------------------------------------------------------------------------
+ */
+
+ if ( name )
+ HDfree( name );
+
+ if ( path )
+ HDfree( path );
+
+ } /* i */
+
+ return inserted_objs;
+}
+
+
+
+
+/*-------------------------------------------------------------------------
+ * Function: h5trav_printinfo
+ *
+ * Purpose: print list of names in file
+ *
+ * Return: void
+ *
+ * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ *
+ * Date: May 9, 2003
+ *
+ *-------------------------------------------------------------------------
+ */
+void h5trav_printinfo(int nobjs, trav_info_t *travi)
+{
+ int i;
+ for ( i = 0; i < nobjs; i++)
+ {
+ switch ( travi[i].type )
+ {
+ case H5G_GROUP:
+ printf(" %-10s %s\n", "group", travi[i].name );
+ break;
+ case H5G_DATASET:
+ printf(" %-10s %s\n", "dataset", travi[i].name );
+ break;
+ case H5G_TYPE:
+ printf(" %-10s %s\n", "datatype", travi[i].name );
+ break;
+ case H5G_LINK:
+ printf(" %-10s %s\n", "link", travi[i].name );
+ break;
+ default:
+ printf(" %-10s %s\n", "User defined object", travi[i].name );
+ break;
+ }
+ }
+}
+
+
+
+/*-------------------------------------------------------------------------
+ * Function: h5trav_printtable
+ *
+ * Purpose: print list of objects in file
+ *
+ * Return: void
+ *
+ * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ *
+ * Date: May 9, 2003
+ *
+ *-------------------------------------------------------------------------
+ */
+void h5trav_printtable(trav_table_t *table)
+{
+ int i, j;
+
+ for ( i = 0; i < table->nobjs; i++)
+ {
+ switch ( table->objs[i].type )
+ {
+ case H5G_GROUP:
+ printf(" %-10s %s\n", "group", table->objs[i].name );
+ break;
+ case H5G_DATASET:
+ printf(" %-10s %s\n", "dataset", table->objs[i].name );
+ break;
+ case H5G_TYPE:
+ printf(" %-10s %s\n", "datatype", table->objs[i].name );
+ break;
+ case H5G_LINK:
+ printf(" %-10s %s\n", "link", table->objs[i].name );
+ break;
+ default:
+ printf(" %-10s %s\n", "User defined object", table->objs[i].name );
+ break;
+ }
+
+ if (table->objs[i].nlinks)
+ {
+ for ( j=0; j<table->objs[i].nlinks; j++)
+ {
+ printf(" %-10s %s\n", " hardlink", table->objs[i].links[j].new_name );
+ }
+ }
+
+ }
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: h5trav_getindext
+ *
+ * Purpose: get index of NAME in list
+ *
+ * Return: index, -1 if not found
+ *
+ * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ *
+ * Date: December 18, 2003
+ *
+ *-------------------------------------------------------------------------
+ */
+
+int h5trav_getindext(const char *name, trav_table_t *table)
+{
+ char *pdest;
+ int result;
+ int i, j;
+
+ for ( i = 0; i < table->nobjs; i++)
+ {
+ if ( strcmp(name,table->objs[i].name)==0 )
+ return i;
+
+ pdest = strstr( table->objs[i].name, name );
+ result = (int)(pdest - table->objs[i].name);
+
+ /* found at position 1, meaning without '/' */
+ if( pdest != NULL && result==1 && strlen(table->objs[i].name)-1==strlen(name))
+ return i;
+
+ /* search also in the list of links */
+ if (table->objs[i].nlinks)
+ {
+ for ( j=0; j<table->objs[i].nlinks; j++)
+ {
+ if ( strcmp(name,table->objs[i].links[j].new_name)==0 )
+ return i;
+
+ pdest = strstr( table->objs[i].links[j].new_name, name );
+ result = (int)(pdest - table->objs[i].links[j].new_name);
+
+ /* found at position 1, meaning without '/' */
+ if( pdest != NULL && result==1 )
+ return i;
+
+ }
+ }
+
+ }
+ return -1;
+}
+
diff --git a/tools/testfiles/h5diff_70.txt b/tools/testfiles/h5diff_70.txt
new file mode 100644
index 0000000..a0413de
--- /dev/null
+++ b/tools/testfiles/h5diff_70.txt
@@ -0,0 +1,1023 @@
+#############################
+Expected output for 'h5diff file5.h5 file6.h5'
+#############################
+position string of </g1> string of </g1> difference
+------------------------------------------------------------
+[ 0 ] a z
+[ 0 ] b z
+[ 1 ] d z
+[ 1 ] e z
+position bitfield of </g1> bitfield of </g1> difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position opaque of </g1> opaque of </g1> difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position compound of </g1> compound of </g1> difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 0 ] 2.000000 0.000000 2.000000
+[ 1 ] 3 0 3
+[ 1 ] 4.000000 0.000000 4.000000
+position enum of </g1> enum of </g1> difference
+------------------------------------------------------------
+[ 0 ] RED GREEN
+[ 1 ] RED GREEN
+position vlen of </g1> vlen of </g1> difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+[ 1 ] 3 0 3
+position array of </g1> array of </g1> difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 0 ] 2 0 2
+[ 0 ] 3 0 3
+[ 1 ] 4 0 4
+[ 1 ] 5 0 5
+[ 1 ] 6 0 6
+position integer of </g1> integer of </g1> difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position float of </g1> float of </g1> difference
+------------------------------------------------------------
+[ 0 ] 1.000000 0.000000 1.000000
+[ 1 ] 2.000000 0.000000 2.000000
+position string2D of </g1> string2D of </g1> difference
+------------------------------------------------------------
+[ 0 0 ] a z
+[ 0 0 ] b z
+[ 0 1 ] c z
+[ 0 1 ] d z
+[ 1 0 ] e z
+[ 1 0 ] f z
+[ 1 1 ] g z
+[ 1 1 ] h z
+[ 2 0 ] i z
+[ 2 0 ] j z
+[ 2 1 ] k z
+[ 2 1 ] l z
+position bitfield2D of </g1> bitfield2D of </g1> difference
+------------------------------------------------------------
+[ 0 0 ] 1 0 1
+[ 0 1 ] 2 0 2
+[ 1 0 ] 3 0 3
+[ 1 1 ] 4 0 4
+[ 2 0 ] 5 0 5
+[ 2 1 ] 6 0 6
+position opaque2D of </g1> opaque2D of </g1> difference
+------------------------------------------------------------
+[ 0 0 ] 1 0 1
+[ 0 1 ] 2 0 2
+[ 1 0 ] 3 0 3
+[ 1 1 ] 4 0 4
+[ 2 0 ] 5 0 5
+[ 2 1 ] 6 0 6
+position compound2D of </g1> compound2D of </g1> difference
+------------------------------------------------------------
+[ 0 0 ] 1 0 1
+[ 0 0 ] 2.000000 0.000000 2.000000
+[ 0 1 ] 3 0 3
+[ 0 1 ] 4.000000 0.000000 4.000000
+[ 1 0 ] 5 0 5
+[ 1 0 ] 6.000000 0.000000 6.000000
+[ 1 1 ] 7 0 7
+[ 1 1 ] 8.000000 0.000000 8.000000
+[ 2 0 ] 9 0 9
+[ 2 0 ] 10.000000 0.000000 10.000000
+[ 2 1 ] 11 0 11
+[ 2 1 ] 12.000000 0.000000 12.000000
+position enum2D of </g1> enum2D of </g1> difference
+------------------------------------------------------------
+[ 0 0 ] RED GREEN
+[ 0 1 ] RED GREEN
+[ 1 0 ] RED GREEN
+[ 1 1 ] RED GREEN
+[ 2 0 ] RED GREEN
+[ 2 1 ] RED GREEN
+position vlen2D of </g1> vlen2D of </g1> difference
+------------------------------------------------------------
+[ 0 1 ] 1 0 1
+[ 1 0 ] 2 0 2
+[ 1 0 ] 3 0 3
+[ 1 1 ] 4 0 4
+[ 1 1 ] 5 0 5
+[ 2 0 ] 6 0 6
+[ 2 0 ] 7 0 7
+[ 2 0 ] 8 0 8
+[ 2 1 ] 9 0 9
+[ 2 1 ] 10 0 10
+[ 2 1 ] 11 0 11
+position array2D of </g1> array2D of </g1> difference
+------------------------------------------------------------
+[ 0 0 ] 1 0 1
+[ 0 0 ] 2 0 2
+[ 0 0 ] 3 0 3
+[ 0 1 ] 4 0 4
+[ 0 1 ] 5 0 5
+[ 0 1 ] 6 0 6
+[ 1 0 ] 7 0 7
+[ 1 0 ] 8 0 8
+[ 1 0 ] 9 0 9
+[ 1 1 ] 10 0 10
+[ 1 1 ] 11 0 11
+[ 1 1 ] 12 0 12
+[ 2 0 ] 13 0 13
+[ 2 0 ] 14 0 14
+[ 2 0 ] 15 0 15
+[ 2 1 ] 16 0 16
+[ 2 1 ] 17 0 17
+[ 2 1 ] 18 0 18
+position integer2D of </g1> integer2D of </g1> difference
+------------------------------------------------------------
+[ 0 0 ] 1 0 1
+[ 0 1 ] 2 0 2
+[ 1 0 ] 3 0 3
+[ 1 1 ] 4 0 4
+[ 2 0 ] 5 0 5
+[ 2 1 ] 6 0 6
+position float2D of </g1> float2D of </g1> difference
+------------------------------------------------------------
+[ 0 0 ] 1.000000 0.000000 1.000000
+[ 0 1 ] 2.000000 0.000000 2.000000
+[ 1 0 ] 3.000000 0.000000 3.000000
+[ 1 1 ] 4.000000 0.000000 4.000000
+[ 2 0 ] 5.000000 0.000000 5.000000
+[ 2 1 ] 6.000000 0.000000 6.000000
+position string3D of </g1> string3D of </g1> difference
+------------------------------------------------------------
+[ 0 0 0 ] a z
+[ 0 0 0 ] b z
+[ 0 0 1 ] c z
+[ 0 0 1 ] d z
+[ 0 1 0 ] e z
+[ 0 1 0 ] f z
+[ 0 1 1 ] g z
+[ 0 1 1 ] h z
+[ 0 2 0 ] i z
+[ 0 2 0 ] j z
+[ 0 2 1 ] k z
+[ 0 2 1 ] l z
+[ 1 0 0 ] m z
+[ 1 0 0 ] n z
+[ 1 0 1 ] p z
+[ 1 0 1 ] q z
+[ 1 1 0 ] r z
+[ 1 1 0 ] s z
+[ 1 1 1 ] t z
+[ 1 1 1 ] u z
+[ 1 2 0 ] v z
+[ 1 2 0 ] w z
+[ 1 2 1 ] x z
+[ 2 0 0 ] A z
+[ 2 0 0 ] B z
+[ 2 0 1 ] C z
+[ 2 0 1 ] D z
+[ 2 1 0 ] E z
+[ 2 1 0 ] F z
+[ 2 1 1 ] G z
+[ 2 1 1 ] H z
+[ 2 2 0 ] I z
+[ 2 2 0 ] J z
+[ 2 2 1 ] K z
+[ 2 2 1 ] L z
+[ 3 0 0 ] M z
+[ 3 0 0 ] N z
+[ 3 0 1 ] P z
+[ 3 0 1 ] Q z
+[ 3 1 0 ] R z
+[ 3 1 0 ] S z
+[ 3 1 1 ] T z
+[ 3 1 1 ] U z
+[ 3 2 0 ] V z
+[ 3 2 0 ] W z
+[ 3 2 1 ] X z
+[ 3 2 1 ] Z z
+position bitfield3D of </g1> bitfield3D of </g1> difference
+------------------------------------------------------------
+[ 0 0 0 ] 1 0 1
+[ 0 0 1 ] 2 0 2
+[ 0 1 0 ] 3 0 3
+[ 0 1 1 ] 4 0 4
+[ 0 2 0 ] 5 0 5
+[ 0 2 1 ] 6 0 6
+[ 1 0 0 ] 7 0 7
+[ 1 0 1 ] 8 0 8
+[ 1 1 0 ] 9 0 9
+[ 1 1 1 ] 10 0 10
+[ 1 2 0 ] 11 0 11
+[ 1 2 1 ] 12 0 12
+[ 2 0 0 ] 13 0 13
+[ 2 0 1 ] 14 0 14
+[ 2 1 0 ] 15 0 15
+[ 2 1 1 ] 16 0 16
+[ 2 2 0 ] 17 0 17
+[ 2 2 1 ] 18 0 18
+[ 3 0 0 ] 19 0 19
+[ 3 0 1 ] 20 0 20
+[ 3 1 0 ] 21 0 21
+[ 3 1 1 ] 22 0 22
+[ 3 2 0 ] 23 0 23
+[ 3 2 1 ] 24 0 24
+position opaque3D of </g1> opaque3D of </g1> difference
+------------------------------------------------------------
+[ 0 0 0 ] 1 0 1
+[ 0 0 1 ] 2 0 2
+[ 0 1 0 ] 3 0 3
+[ 0 1 1 ] 4 0 4
+[ 0 2 0 ] 5 0 5
+[ 0 2 1 ] 6 0 6
+[ 1 0 0 ] 7 0 7
+[ 1 0 1 ] 8 0 8
+[ 1 1 0 ] 9 0 9
+[ 1 1 1 ] 10 0 10
+[ 1 2 0 ] 11 0 11
+[ 1 2 1 ] 12 0 12
+[ 2 0 0 ] 13 0 13
+[ 2 0 1 ] 14 0 14
+[ 2 1 0 ] 15 0 15
+[ 2 1 1 ] 16 0 16
+[ 2 2 0 ] 17 0 17
+[ 2 2 1 ] 18 0 18
+[ 3 0 0 ] 19 0 19
+[ 3 0 1 ] 20 0 20
+[ 3 1 0 ] 21 0 21
+[ 3 1 1 ] 22 0 22
+[ 3 2 0 ] 23 0 23
+[ 3 2 1 ] 24 0 24
+position compound3D of </g1> compound3D of </g1> difference
+------------------------------------------------------------
+[ 0 0 0 ] 1 0 1
+[ 0 0 0 ] 2.000000 0.000000 2.000000
+[ 0 0 1 ] 3 0 3
+[ 0 0 1 ] 4.000000 0.000000 4.000000
+[ 0 1 0 ] 5 0 5
+[ 0 1 0 ] 6.000000 0.000000 6.000000
+[ 0 1 1 ] 7 0 7
+[ 0 1 1 ] 8.000000 0.000000 8.000000
+[ 0 2 0 ] 9 0 9
+[ 0 2 0 ] 10.000000 0.000000 10.000000
+[ 0 2 1 ] 11 0 11
+[ 0 2 1 ] 12.000000 0.000000 12.000000
+[ 1 0 0 ] 13 0 13
+[ 1 0 0 ] 14.000000 0.000000 14.000000
+[ 1 0 1 ] 15 0 15
+[ 1 0 1 ] 16.000000 0.000000 16.000000
+[ 1 1 0 ] 17 0 17
+[ 1 1 0 ] 18.000000 0.000000 18.000000
+[ 1 1 1 ] 19 0 19
+[ 1 1 1 ] 20.000000 0.000000 20.000000
+[ 1 2 0 ] 21 0 21
+[ 1 2 0 ] 22.000000 0.000000 22.000000
+[ 1 2 1 ] 23 0 23
+[ 1 2 1 ] 24.000000 0.000000 24.000000
+[ 2 0 0 ] 25 0 25
+[ 2 0 0 ] 26.000000 0.000000 26.000000
+[ 2 0 1 ] 27 0 27
+[ 2 0 1 ] 28.000000 0.000000 28.000000
+[ 2 1 0 ] 29 0 29
+[ 2 1 0 ] 30.000000 0.000000 30.000000
+[ 2 1 1 ] 31 0 31
+[ 2 1 1 ] 32.000000 0.000000 32.000000
+[ 2 2 0 ] 33 0 33
+[ 2 2 0 ] 34.000000 0.000000 34.000000
+[ 2 2 1 ] 35 0 35
+[ 2 2 1 ] 36.000000 0.000000 36.000000
+[ 3 0 0 ] 37 0 37
+[ 3 0 0 ] 38.000000 0.000000 38.000000
+[ 3 0 1 ] 39 0 39
+[ 3 0 1 ] 40.000000 0.000000 40.000000
+[ 3 1 0 ] 41 0 41
+[ 3 1 0 ] 42.000000 0.000000 42.000000
+[ 3 1 1 ] 43 0 43
+[ 3 1 1 ] 44.000000 0.000000 44.000000
+[ 3 2 0 ] 45 0 45
+[ 3 2 0 ] 46.000000 0.000000 46.000000
+[ 3 2 1 ] 47 0 47
+[ 3 2 1 ] 48.000000 0.000000 48.000000
+position enum3D of </g1> enum3D of </g1> difference
+------------------------------------------------------------
+[ 0 0 0 ] GREEN RED
+[ 0 0 1 ] GREEN RED
+[ 0 1 0 ] GREEN RED
+[ 0 1 1 ] GREEN RED
+[ 0 2 0 ] GREEN RED
+[ 0 2 1 ] GREEN RED
+[ 1 0 0 ] GREEN RED
+[ 1 0 1 ] GREEN RED
+[ 1 1 0 ] GREEN RED
+[ 1 1 1 ] GREEN RED
+[ 1 2 0 ] GREEN RED
+[ 1 2 1 ] GREEN RED
+[ 2 0 0 ] GREEN RED
+[ 2 0 1 ] GREEN RED
+[ 2 1 0 ] GREEN RED
+[ 2 1 1 ] GREEN RED
+[ 2 2 0 ] GREEN RED
+[ 2 2 1 ] GREEN RED
+[ 3 0 0 ] GREEN RED
+[ 3 0 1 ] GREEN RED
+[ 3 1 0 ] GREEN RED
+[ 3 1 1 ] GREEN RED
+[ 3 2 0 ] GREEN RED
+[ 3 2 1 ] GREEN RED
+position vlen3D of </g1> vlen3D of </g1> difference
+------------------------------------------------------------
+[ 0 0 1 ] 1 0 1
+[ 0 1 0 ] 2 0 2
+[ 0 1 1 ] 3 0 3
+[ 0 2 0 ] 4 0 4
+[ 0 2 1 ] 5 0 5
+[ 1 0 0 ] 6 0 6
+[ 1 0 0 ] 7 0 7
+[ 1 0 1 ] 8 0 8
+[ 1 0 1 ] 9 0 9
+[ 1 1 0 ] 10 0 10
+[ 1 1 0 ] 11 0 11
+[ 1 1 1 ] 12 0 12
+[ 1 1 1 ] 13 0 13
+[ 1 2 0 ] 14 0 14
+[ 1 2 0 ] 15 0 15
+[ 1 2 1 ] 16 0 16
+[ 1 2 1 ] 17 0 17
+[ 2 0 0 ] 18 0 18
+[ 2 0 0 ] 19 0 19
+[ 2 0 0 ] 20 0 20
+[ 2 0 1 ] 21 0 21
+[ 2 0 1 ] 22 0 22
+[ 2 0 1 ] 23 0 23
+[ 2 1 0 ] 24 0 24
+[ 2 1 0 ] 25 0 25
+[ 2 1 0 ] 26 0 26
+[ 2 1 1 ] 27 0 27
+[ 2 1 1 ] 28 0 28
+[ 2 1 1 ] 29 0 29
+[ 2 2 0 ] 30 0 30
+[ 2 2 0 ] 31 0 31
+[ 2 2 0 ] 32 0 32
+[ 2 2 1 ] 33 0 33
+[ 2 2 1 ] 34 0 34
+[ 2 2 1 ] 35 0 35
+[ 3 0 0 ] 36 0 36
+[ 3 0 0 ] 37 0 37
+[ 3 0 0 ] 38 0 38
+[ 3 0 0 ] 39 0 39
+[ 3 0 1 ] 40 0 40
+[ 3 0 1 ] 41 0 41
+[ 3 0 1 ] 42 0 42
+[ 3 0 1 ] 43 0 43
+[ 3 1 0 ] 44 0 44
+[ 3 1 0 ] 45 0 45
+[ 3 1 0 ] 46 0 46
+[ 3 1 0 ] 47 0 47
+[ 3 1 1 ] 48 0 48
+[ 3 1 1 ] 49 0 49
+[ 3 1 1 ] 50 0 50
+[ 3 1 1 ] 51 0 51
+[ 3 2 0 ] 52 0 52
+[ 3 2 0 ] 53 0 53
+[ 3 2 0 ] 54 0 54
+[ 3 2 0 ] 55 0 55
+[ 3 2 1 ] 56 0 56
+[ 3 2 1 ] 57 0 57
+[ 3 2 1 ] 58 0 58
+[ 3 2 1 ] 59 0 59
+position array3D of </g1> array3D of </g1> difference
+------------------------------------------------------------
+[ 0 0 0 ] 1 0 1
+[ 0 0 0 ] 2 0 2
+[ 0 0 0 ] 3 0 3
+[ 0 0 1 ] 4 0 4
+[ 0 0 1 ] 5 0 5
+[ 0 0 1 ] 6 0 6
+[ 0 1 0 ] 7 0 7
+[ 0 1 0 ] 8 0 8
+[ 0 1 0 ] 9 0 9
+[ 0 1 1 ] 10 0 10
+[ 0 1 1 ] 11 0 11
+[ 0 1 1 ] 12 0 12
+[ 0 2 0 ] 13 0 13
+[ 0 2 0 ] 14 0 14
+[ 0 2 0 ] 15 0 15
+[ 0 2 1 ] 16 0 16
+[ 0 2 1 ] 17 0 17
+[ 0 2 1 ] 18 0 18
+[ 1 0 0 ] 19 0 19
+[ 1 0 0 ] 20 0 20
+[ 1 0 0 ] 21 0 21
+[ 1 0 1 ] 22 0 22
+[ 1 0 1 ] 23 0 23
+[ 1 0 1 ] 24 0 24
+[ 1 1 0 ] 25 0 25
+[ 1 1 0 ] 26 0 26
+[ 1 1 0 ] 27 0 27
+[ 1 1 1 ] 28 0 28
+[ 1 1 1 ] 29 0 29
+[ 1 1 1 ] 30 0 30
+[ 1 2 0 ] 31 0 31
+[ 1 2 0 ] 32 0 32
+[ 1 2 0 ] 33 0 33
+[ 1 2 1 ] 34 0 34
+[ 1 2 1 ] 35 0 35
+[ 1 2 1 ] 36 0 36
+[ 2 0 0 ] 37 0 37
+[ 2 0 0 ] 38 0 38
+[ 2 0 0 ] 39 0 39
+[ 2 0 1 ] 40 0 40
+[ 2 0 1 ] 41 0 41
+[ 2 0 1 ] 42 0 42
+[ 2 1 0 ] 43 0 43
+[ 2 1 0 ] 44 0 44
+[ 2 1 0 ] 45 0 45
+[ 2 1 1 ] 46 0 46
+[ 2 1 1 ] 47 0 47
+[ 2 1 1 ] 48 0 48
+[ 2 2 0 ] 49 0 49
+[ 2 2 0 ] 50 0 50
+[ 2 2 0 ] 51 0 51
+[ 2 2 1 ] 52 0 52
+[ 2 2 1 ] 53 0 53
+[ 2 2 1 ] 54 0 54
+[ 3 0 0 ] 55 0 55
+[ 3 0 0 ] 56 0 56
+[ 3 0 0 ] 57 0 57
+[ 3 0 1 ] 58 0 58
+[ 3 0 1 ] 59 0 59
+[ 3 0 1 ] 60 0 60
+[ 3 1 0 ] 61 0 61
+[ 3 1 0 ] 62 0 62
+[ 3 1 0 ] 63 0 63
+[ 3 1 1 ] 64 0 64
+[ 3 1 1 ] 65 0 65
+[ 3 1 1 ] 66 0 66
+[ 3 2 0 ] 67 0 67
+[ 3 2 0 ] 68 0 68
+[ 3 2 0 ] 69 0 69
+[ 3 2 1 ] 70 0 70
+[ 3 2 1 ] 71 0 71
+[ 3 2 1 ] 72 0 72
+position integer3D of </g1> integer3D of </g1> difference
+------------------------------------------------------------
+[ 0 0 0 ] 1 0 1
+[ 0 0 1 ] 2 0 2
+[ 0 1 0 ] 3 0 3
+[ 0 1 1 ] 4 0 4
+[ 0 2 0 ] 5 0 5
+[ 0 2 1 ] 6 0 6
+[ 1 0 0 ] 7 0 7
+[ 1 0 1 ] 8 0 8
+[ 1 1 0 ] 9 0 9
+[ 1 1 1 ] 10 0 10
+[ 1 2 0 ] 11 0 11
+[ 1 2 1 ] 12 0 12
+[ 2 0 0 ] 13 0 13
+[ 2 0 1 ] 14 0 14
+[ 2 1 0 ] 15 0 15
+[ 2 1 1 ] 16 0 16
+[ 2 2 0 ] 17 0 17
+[ 2 2 1 ] 18 0 18
+[ 3 0 0 ] 19 0 19
+[ 3 0 1 ] 20 0 20
+[ 3 1 0 ] 21 0 21
+[ 3 1 1 ] 22 0 22
+[ 3 2 0 ] 23 0 23
+[ 3 2 1 ] 24 0 24
+position float3D of </g1> float3D of </g1> difference
+------------------------------------------------------------
+[ 0 0 0 ] 1.000000 0.000000 1.000000
+[ 0 0 1 ] 2.000000 0.000000 2.000000
+[ 0 1 0 ] 3.000000 0.000000 3.000000
+[ 0 1 1 ] 4.000000 0.000000 4.000000
+[ 0 2 0 ] 5.000000 0.000000 5.000000
+[ 0 2 1 ] 6.000000 0.000000 6.000000
+[ 1 0 0 ] 7.000000 0.000000 7.000000
+[ 1 0 1 ] 8.000000 0.000000 8.000000
+[ 1 1 0 ] 9.000000 0.000000 9.000000
+[ 1 1 1 ] 10.000000 0.000000 10.000000
+[ 1 2 0 ] 11.000000 0.000000 11.000000
+[ 1 2 1 ] 12.000000 0.000000 12.000000
+[ 2 0 0 ] 13.000000 0.000000 13.000000
+[ 2 0 1 ] 14.000000 0.000000 14.000000
+[ 2 1 0 ] 15.000000 0.000000 15.000000
+[ 2 1 1 ] 16.000000 0.000000 16.000000
+[ 2 2 0 ] 17.000000 0.000000 17.000000
+[ 2 2 1 ] 18.000000 0.000000 18.000000
+[ 3 0 0 ] 19.000000 0.000000 19.000000
+[ 3 0 1 ] 20.000000 0.000000 20.000000
+[ 3 1 0 ] 21.000000 0.000000 21.000000
+[ 3 1 1 ] 22.000000 0.000000 22.000000
+[ 3 2 0 ] 23.000000 0.000000 23.000000
+[ 3 2 1 ] 24.000000 0.000000 24.000000
+position string of </> string of </> difference
+------------------------------------------------------------
+[ 0 ] a z
+[ 0 ] b z
+[ 1 ] d z
+[ 1 ] e z
+position bitfield of </> bitfield of </> difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position opaque of </> opaque of </> difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position compound of </> compound of </> difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 0 ] 2.000000 0.000000 2.000000
+[ 1 ] 3 0 3
+[ 1 ] 4.000000 0.000000 4.000000
+position enum of </> enum of </> difference
+------------------------------------------------------------
+[ 0 ] RED GREEN
+[ 1 ] RED GREEN
+position vlen of </> vlen of </> difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+[ 1 ] 3 0 3
+position array of </> array of </> difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 0 ] 2 0 2
+[ 0 ] 3 0 3
+[ 1 ] 4 0 4
+[ 1 ] 5 0 5
+[ 1 ] 6 0 6
+position integer of </> integer of </> difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position float of </> float of </> difference
+------------------------------------------------------------
+[ 0 ] 1.000000 0.000000 1.000000
+[ 1 ] 2.000000 0.000000 2.000000
+position string2D of </> string2D of </> difference
+------------------------------------------------------------
+[ 0 0 ] a z
+[ 0 0 ] b z
+[ 0 1 ] c z
+[ 0 1 ] d z
+[ 1 0 ] e z
+[ 1 0 ] f z
+[ 1 1 ] g z
+[ 1 1 ] h z
+[ 2 0 ] i z
+[ 2 0 ] j z
+[ 2 1 ] k z
+[ 2 1 ] l z
+position bitfield2D of </> bitfield2D of </> difference
+------------------------------------------------------------
+[ 0 0 ] 1 0 1
+[ 0 1 ] 2 0 2
+[ 1 0 ] 3 0 3
+[ 1 1 ] 4 0 4
+[ 2 0 ] 5 0 5
+[ 2 1 ] 6 0 6
+position opaque2D of </> opaque2D of </> difference
+------------------------------------------------------------
+[ 0 0 ] 1 0 1
+[ 0 1 ] 2 0 2
+[ 1 0 ] 3 0 3
+[ 1 1 ] 4 0 4
+[ 2 0 ] 5 0 5
+[ 2 1 ] 6 0 6
+position compound2D of </> compound2D of </> difference
+------------------------------------------------------------
+[ 0 0 ] 1 0 1
+[ 0 0 ] 2.000000 0.000000 2.000000
+[ 0 1 ] 3 0 3
+[ 0 1 ] 4.000000 0.000000 4.000000
+[ 1 0 ] 5 0 5
+[ 1 0 ] 6.000000 0.000000 6.000000
+[ 1 1 ] 7 0 7
+[ 1 1 ] 8.000000 0.000000 8.000000
+[ 2 0 ] 9 0 9
+[ 2 0 ] 10.000000 0.000000 10.000000
+[ 2 1 ] 11 0 11
+[ 2 1 ] 12.000000 0.000000 12.000000
+position enum2D of </> enum2D of </> difference
+------------------------------------------------------------
+[ 0 0 ] RED GREEN
+[ 0 1 ] RED GREEN
+[ 1 0 ] RED GREEN
+[ 1 1 ] RED GREEN
+[ 2 0 ] RED GREEN
+[ 2 1 ] RED GREEN
+position vlen2D of </> vlen2D of </> difference
+------------------------------------------------------------
+[ 0 1 ] 1 0 1
+[ 1 0 ] 2 0 2
+[ 1 0 ] 3 0 3
+[ 1 1 ] 4 0 4
+[ 1 1 ] 5 0 5
+[ 2 0 ] 6 0 6
+[ 2 0 ] 7 0 7
+[ 2 0 ] 8 0 8
+[ 2 1 ] 9 0 9
+[ 2 1 ] 10 0 10
+[ 2 1 ] 11 0 11
+position array2D of </> array2D of </> difference
+------------------------------------------------------------
+[ 0 0 ] 1 0 1
+[ 0 0 ] 2 0 2
+[ 0 0 ] 3 0 3
+[ 0 1 ] 4 0 4
+[ 0 1 ] 5 0 5
+[ 0 1 ] 6 0 6
+[ 1 0 ] 7 0 7
+[ 1 0 ] 8 0 8
+[ 1 0 ] 9 0 9
+[ 1 1 ] 10 0 10
+[ 1 1 ] 11 0 11
+[ 1 1 ] 12 0 12
+[ 2 0 ] 13 0 13
+[ 2 0 ] 14 0 14
+[ 2 0 ] 15 0 15
+[ 2 1 ] 16 0 16
+[ 2 1 ] 17 0 17
+[ 2 1 ] 18 0 18
+position integer2D of </> integer2D of </> difference
+------------------------------------------------------------
+[ 0 0 ] 1 0 1
+[ 0 1 ] 2 0 2
+[ 1 0 ] 3 0 3
+[ 1 1 ] 4 0 4
+[ 2 0 ] 5 0 5
+[ 2 1 ] 6 0 6
+position float2D of </> float2D of </> difference
+------------------------------------------------------------
+[ 0 0 ] 1.000000 0.000000 1.000000
+[ 0 1 ] 2.000000 0.000000 2.000000
+[ 1 0 ] 3.000000 0.000000 3.000000
+[ 1 1 ] 4.000000 0.000000 4.000000
+[ 2 0 ] 5.000000 0.000000 5.000000
+[ 2 1 ] 6.000000 0.000000 6.000000
+position string3D of </> string3D of </> difference
+------------------------------------------------------------
+[ 0 0 0 ] a z
+[ 0 0 0 ] b z
+[ 0 0 1 ] c z
+[ 0 0 1 ] d z
+[ 0 1 0 ] e z
+[ 0 1 0 ] f z
+[ 0 1 1 ] g z
+[ 0 1 1 ] h z
+[ 0 2 0 ] i z
+[ 0 2 0 ] j z
+[ 0 2 1 ] k z
+[ 0 2 1 ] l z
+[ 1 0 0 ] m z
+[ 1 0 0 ] n z
+[ 1 0 1 ] p z
+[ 1 0 1 ] q z
+[ 1 1 0 ] r z
+[ 1 1 0 ] s z
+[ 1 1 1 ] t z
+[ 1 1 1 ] u z
+[ 1 2 0 ] v z
+[ 1 2 0 ] w z
+[ 1 2 1 ] x z
+[ 2 0 0 ] A z
+[ 2 0 0 ] B z
+[ 2 0 1 ] C z
+[ 2 0 1 ] D z
+[ 2 1 0 ] E z
+[ 2 1 0 ] F z
+[ 2 1 1 ] G z
+[ 2 1 1 ] H z
+[ 2 2 0 ] I z
+[ 2 2 0 ] J z
+[ 2 2 1 ] K z
+[ 2 2 1 ] L z
+[ 3 0 0 ] M z
+[ 3 0 0 ] N z
+[ 3 0 1 ] P z
+[ 3 0 1 ] Q z
+[ 3 1 0 ] R z
+[ 3 1 0 ] S z
+[ 3 1 1 ] T z
+[ 3 1 1 ] U z
+[ 3 2 0 ] V z
+[ 3 2 0 ] W z
+[ 3 2 1 ] X z
+[ 3 2 1 ] Z z
+position bitfield3D of </> bitfield3D of </> difference
+------------------------------------------------------------
+[ 0 0 0 ] 1 0 1
+[ 0 0 1 ] 2 0 2
+[ 0 1 0 ] 3 0 3
+[ 0 1 1 ] 4 0 4
+[ 0 2 0 ] 5 0 5
+[ 0 2 1 ] 6 0 6
+[ 1 0 0 ] 7 0 7
+[ 1 0 1 ] 8 0 8
+[ 1 1 0 ] 9 0 9
+[ 1 1 1 ] 10 0 10
+[ 1 2 0 ] 11 0 11
+[ 1 2 1 ] 12 0 12
+[ 2 0 0 ] 13 0 13
+[ 2 0 1 ] 14 0 14
+[ 2 1 0 ] 15 0 15
+[ 2 1 1 ] 16 0 16
+[ 2 2 0 ] 17 0 17
+[ 2 2 1 ] 18 0 18
+[ 3 0 0 ] 19 0 19
+[ 3 0 1 ] 20 0 20
+[ 3 1 0 ] 21 0 21
+[ 3 1 1 ] 22 0 22
+[ 3 2 0 ] 23 0 23
+[ 3 2 1 ] 24 0 24
+position opaque3D of </> opaque3D of </> difference
+------------------------------------------------------------
+[ 0 0 0 ] 1 0 1
+[ 0 0 1 ] 2 0 2
+[ 0 1 0 ] 3 0 3
+[ 0 1 1 ] 4 0 4
+[ 0 2 0 ] 5 0 5
+[ 0 2 1 ] 6 0 6
+[ 1 0 0 ] 7 0 7
+[ 1 0 1 ] 8 0 8
+[ 1 1 0 ] 9 0 9
+[ 1 1 1 ] 10 0 10
+[ 1 2 0 ] 11 0 11
+[ 1 2 1 ] 12 0 12
+[ 2 0 0 ] 13 0 13
+[ 2 0 1 ] 14 0 14
+[ 2 1 0 ] 15 0 15
+[ 2 1 1 ] 16 0 16
+[ 2 2 0 ] 17 0 17
+[ 2 2 1 ] 18 0 18
+[ 3 0 0 ] 19 0 19
+[ 3 0 1 ] 20 0 20
+[ 3 1 0 ] 21 0 21
+[ 3 1 1 ] 22 0 22
+[ 3 2 0 ] 23 0 23
+[ 3 2 1 ] 24 0 24
+position compound3D of </> compound3D of </> difference
+------------------------------------------------------------
+[ 0 0 0 ] 1 0 1
+[ 0 0 0 ] 2.000000 0.000000 2.000000
+[ 0 0 1 ] 3 0 3
+[ 0 0 1 ] 4.000000 0.000000 4.000000
+[ 0 1 0 ] 5 0 5
+[ 0 1 0 ] 6.000000 0.000000 6.000000
+[ 0 1 1 ] 7 0 7
+[ 0 1 1 ] 8.000000 0.000000 8.000000
+[ 0 2 0 ] 9 0 9
+[ 0 2 0 ] 10.000000 0.000000 10.000000
+[ 0 2 1 ] 11 0 11
+[ 0 2 1 ] 12.000000 0.000000 12.000000
+[ 1 0 0 ] 13 0 13
+[ 1 0 0 ] 14.000000 0.000000 14.000000
+[ 1 0 1 ] 15 0 15
+[ 1 0 1 ] 16.000000 0.000000 16.000000
+[ 1 1 0 ] 17 0 17
+[ 1 1 0 ] 18.000000 0.000000 18.000000
+[ 1 1 1 ] 19 0 19
+[ 1 1 1 ] 20.000000 0.000000 20.000000
+[ 1 2 0 ] 21 0 21
+[ 1 2 0 ] 22.000000 0.000000 22.000000
+[ 1 2 1 ] 23 0 23
+[ 1 2 1 ] 24.000000 0.000000 24.000000
+[ 2 0 0 ] 25 0 25
+[ 2 0 0 ] 26.000000 0.000000 26.000000
+[ 2 0 1 ] 27 0 27
+[ 2 0 1 ] 28.000000 0.000000 28.000000
+[ 2 1 0 ] 29 0 29
+[ 2 1 0 ] 30.000000 0.000000 30.000000
+[ 2 1 1 ] 31 0 31
+[ 2 1 1 ] 32.000000 0.000000 32.000000
+[ 2 2 0 ] 33 0 33
+[ 2 2 0 ] 34.000000 0.000000 34.000000
+[ 2 2 1 ] 35 0 35
+[ 2 2 1 ] 36.000000 0.000000 36.000000
+[ 3 0 0 ] 37 0 37
+[ 3 0 0 ] 38.000000 0.000000 38.000000
+[ 3 0 1 ] 39 0 39
+[ 3 0 1 ] 40.000000 0.000000 40.000000
+[ 3 1 0 ] 41 0 41
+[ 3 1 0 ] 42.000000 0.000000 42.000000
+[ 3 1 1 ] 43 0 43
+[ 3 1 1 ] 44.000000 0.000000 44.000000
+[ 3 2 0 ] 45 0 45
+[ 3 2 0 ] 46.000000 0.000000 46.000000
+[ 3 2 1 ] 47 0 47
+[ 3 2 1 ] 48.000000 0.000000 48.000000
+position enum3D of </> enum3D of </> difference
+------------------------------------------------------------
+[ 0 0 0 ] GREEN RED
+[ 0 0 1 ] GREEN RED
+[ 0 1 0 ] GREEN RED
+[ 0 1 1 ] GREEN RED
+[ 0 2 0 ] GREEN RED
+[ 0 2 1 ] GREEN RED
+[ 1 0 0 ] GREEN RED
+[ 1 0 1 ] GREEN RED
+[ 1 1 0 ] GREEN RED
+[ 1 1 1 ] GREEN RED
+[ 1 2 0 ] GREEN RED
+[ 1 2 1 ] GREEN RED
+[ 2 0 0 ] GREEN RED
+[ 2 0 1 ] GREEN RED
+[ 2 1 0 ] GREEN RED
+[ 2 1 1 ] GREEN RED
+[ 2 2 0 ] GREEN RED
+[ 2 2 1 ] GREEN RED
+[ 3 0 0 ] GREEN RED
+[ 3 0 1 ] GREEN RED
+[ 3 1 0 ] GREEN RED
+[ 3 1 1 ] GREEN RED
+[ 3 2 0 ] GREEN RED
+[ 3 2 1 ] GREEN RED
+position vlen3D of </> vlen3D of </> difference
+------------------------------------------------------------
+[ 0 0 1 ] 1 0 1
+[ 0 1 0 ] 2 0 2
+[ 0 1 1 ] 3 0 3
+[ 0 2 0 ] 4 0 4
+[ 0 2 1 ] 5 0 5
+[ 1 0 0 ] 6 0 6
+[ 1 0 0 ] 7 0 7
+[ 1 0 1 ] 8 0 8
+[ 1 0 1 ] 9 0 9
+[ 1 1 0 ] 10 0 10
+[ 1 1 0 ] 11 0 11
+[ 1 1 1 ] 12 0 12
+[ 1 1 1 ] 13 0 13
+[ 1 2 0 ] 14 0 14
+[ 1 2 0 ] 15 0 15
+[ 1 2 1 ] 16 0 16
+[ 1 2 1 ] 17 0 17
+[ 2 0 0 ] 18 0 18
+[ 2 0 0 ] 19 0 19
+[ 2 0 0 ] 20 0 20
+[ 2 0 1 ] 21 0 21
+[ 2 0 1 ] 22 0 22
+[ 2 0 1 ] 23 0 23
+[ 2 1 0 ] 24 0 24
+[ 2 1 0 ] 25 0 25
+[ 2 1 0 ] 26 0 26
+[ 2 1 1 ] 27 0 27
+[ 2 1 1 ] 28 0 28
+[ 2 1 1 ] 29 0 29
+[ 2 2 0 ] 30 0 30
+[ 2 2 0 ] 31 0 31
+[ 2 2 0 ] 32 0 32
+[ 2 2 1 ] 33 0 33
+[ 2 2 1 ] 34 0 34
+[ 2 2 1 ] 35 0 35
+[ 3 0 0 ] 36 0 36
+[ 3 0 0 ] 37 0 37
+[ 3 0 0 ] 38 0 38
+[ 3 0 0 ] 39 0 39
+[ 3 0 1 ] 40 0 40
+[ 3 0 1 ] 41 0 41
+[ 3 0 1 ] 42 0 42
+[ 3 0 1 ] 43 0 43
+[ 3 1 0 ] 44 0 44
+[ 3 1 0 ] 45 0 45
+[ 3 1 0 ] 46 0 46
+[ 3 1 0 ] 47 0 47
+[ 3 1 1 ] 48 0 48
+[ 3 1 1 ] 49 0 49
+[ 3 1 1 ] 50 0 50
+[ 3 1 1 ] 51 0 51
+[ 3 2 0 ] 52 0 52
+[ 3 2 0 ] 53 0 53
+[ 3 2 0 ] 54 0 54
+[ 3 2 0 ] 55 0 55
+[ 3 2 1 ] 56 0 56
+[ 3 2 1 ] 57 0 57
+[ 3 2 1 ] 58 0 58
+[ 3 2 1 ] 59 0 59
+position array3D of </> array3D of </> difference
+------------------------------------------------------------
+[ 0 0 0 ] 1 0 1
+[ 0 0 0 ] 2 0 2
+[ 0 0 0 ] 3 0 3
+[ 0 0 1 ] 4 0 4
+[ 0 0 1 ] 5 0 5
+[ 0 0 1 ] 6 0 6
+[ 0 1 0 ] 7 0 7
+[ 0 1 0 ] 8 0 8
+[ 0 1 0 ] 9 0 9
+[ 0 1 1 ] 10 0 10
+[ 0 1 1 ] 11 0 11
+[ 0 1 1 ] 12 0 12
+[ 0 2 0 ] 13 0 13
+[ 0 2 0 ] 14 0 14
+[ 0 2 0 ] 15 0 15
+[ 0 2 1 ] 16 0 16
+[ 0 2 1 ] 17 0 17
+[ 0 2 1 ] 18 0 18
+[ 1 0 0 ] 19 0 19
+[ 1 0 0 ] 20 0 20
+[ 1 0 0 ] 21 0 21
+[ 1 0 1 ] 22 0 22
+[ 1 0 1 ] 23 0 23
+[ 1 0 1 ] 24 0 24
+[ 1 1 0 ] 25 0 25
+[ 1 1 0 ] 26 0 26
+[ 1 1 0 ] 27 0 27
+[ 1 1 1 ] 28 0 28
+[ 1 1 1 ] 29 0 29
+[ 1 1 1 ] 30 0 30
+[ 1 2 0 ] 31 0 31
+[ 1 2 0 ] 32 0 32
+[ 1 2 0 ] 33 0 33
+[ 1 2 1 ] 34 0 34
+[ 1 2 1 ] 35 0 35
+[ 1 2 1 ] 36 0 36
+[ 2 0 0 ] 37 0 37
+[ 2 0 0 ] 38 0 38
+[ 2 0 0 ] 39 0 39
+[ 2 0 1 ] 40 0 40
+[ 2 0 1 ] 41 0 41
+[ 2 0 1 ] 42 0 42
+[ 2 1 0 ] 43 0 43
+[ 2 1 0 ] 44 0 44
+[ 2 1 0 ] 45 0 45
+[ 2 1 1 ] 46 0 46
+[ 2 1 1 ] 47 0 47
+[ 2 1 1 ] 48 0 48
+[ 2 2 0 ] 49 0 49
+[ 2 2 0 ] 50 0 50
+[ 2 2 0 ] 51 0 51
+[ 2 2 1 ] 52 0 52
+[ 2 2 1 ] 53 0 53
+[ 2 2 1 ] 54 0 54
+[ 3 0 0 ] 55 0 55
+[ 3 0 0 ] 56 0 56
+[ 3 0 0 ] 57 0 57
+[ 3 0 1 ] 58 0 58
+[ 3 0 1 ] 59 0 59
+[ 3 0 1 ] 60 0 60
+[ 3 1 0 ] 61 0 61
+[ 3 1 0 ] 62 0 62
+[ 3 1 0 ] 63 0 63
+[ 3 1 1 ] 64 0 64
+[ 3 1 1 ] 65 0 65
+[ 3 1 1 ] 66 0 66
+[ 3 2 0 ] 67 0 67
+[ 3 2 0 ] 68 0 68
+[ 3 2 0 ] 69 0 69
+[ 3 2 1 ] 70 0 70
+[ 3 2 1 ] 71 0 71
+[ 3 2 1 ] 72 0 72
+position integer3D of </> integer3D of </> difference
+------------------------------------------------------------
+[ 0 0 0 ] 1 0 1
+[ 0 0 1 ] 2 0 2
+[ 0 1 0 ] 3 0 3
+[ 0 1 1 ] 4 0 4
+[ 0 2 0 ] 5 0 5
+[ 0 2 1 ] 6 0 6
+[ 1 0 0 ] 7 0 7
+[ 1 0 1 ] 8 0 8
+[ 1 1 0 ] 9 0 9
+[ 1 1 1 ] 10 0 10
+[ 1 2 0 ] 11 0 11
+[ 1 2 1 ] 12 0 12
+[ 2 0 0 ] 13 0 13
+[ 2 0 1 ] 14 0 14
+[ 2 1 0 ] 15 0 15
+[ 2 1 1 ] 16 0 16
+[ 2 2 0 ] 17 0 17
+[ 2 2 1 ] 18 0 18
+[ 3 0 0 ] 19 0 19
+[ 3 0 1 ] 20 0 20
+[ 3 1 0 ] 21 0 21
+[ 3 1 1 ] 22 0 22
+[ 3 2 0 ] 23 0 23
+[ 3 2 1 ] 24 0 24
+position float3D of </> float3D of </> difference
+------------------------------------------------------------
+[ 0 0 0 ] 1.000000 0.000000 1.000000
+[ 0 0 1 ] 2.000000 0.000000 2.000000
+[ 0 1 0 ] 3.000000 0.000000 3.000000
+[ 0 1 1 ] 4.000000 0.000000 4.000000
+[ 0 2 0 ] 5.000000 0.000000 5.000000
+[ 0 2 1 ] 6.000000 0.000000 6.000000
+[ 1 0 0 ] 7.000000 0.000000 7.000000
+[ 1 0 1 ] 8.000000 0.000000 8.000000
+[ 1 1 0 ] 9.000000 0.000000 9.000000
+[ 1 1 1 ] 10.000000 0.000000 10.000000
+[ 1 2 0 ] 11.000000 0.000000 11.000000
+[ 1 2 1 ] 12.000000 0.000000 12.000000
+[ 2 0 0 ] 13.000000 0.000000 13.000000
+[ 2 0 1 ] 14.000000 0.000000 14.000000
+[ 2 1 0 ] 15.000000 0.000000 15.000000
+[ 2 1 1 ] 16.000000 0.000000 16.000000
+[ 2 2 0 ] 17.000000 0.000000 17.000000
+[ 2 2 1 ] 18.000000 0.000000 18.000000
+[ 3 0 0 ] 19.000000 0.000000 19.000000
+[ 3 0 1 ] 20.000000 0.000000 20.000000
+[ 3 1 0 ] 21.000000 0.000000 21.000000
+[ 3 1 1 ] 22.000000 0.000000 22.000000
+[ 3 2 0 ] 23.000000 0.000000 23.000000
+[ 3 2 1 ] 24.000000 0.000000 24.000000
diff --git a/tools/testfiles/h5diff_80.txt b/tools/testfiles/h5diff_80.txt
new file mode 100644
index 0000000..0bdf1ee
--- /dev/null
+++ b/tools/testfiles/h5diff_80.txt
@@ -0,0 +1,610 @@
+#############################
+Expected output for 'h5diff file7.h5 file8.h5'
+#############################
+position dset dset difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position array array difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 0 ] 2 0 2
+[ 0 ] 3 0 3
+[ 1 ] 4 0 4
+[ 1 ] 5 0 5
+[ 1 ] 6 0 6
+position array2D array2D difference
+------------------------------------------------------------
+[ 0 0 ] 1 0 1
+[ 0 0 ] 2 0 2
+[ 0 0 ] 3 0 3
+[ 0 1 ] 4 0 4
+[ 0 1 ] 5 0 5
+[ 0 1 ] 6 0 6
+[ 1 0 ] 7 0 7
+[ 1 0 ] 8 0 8
+[ 1 0 ] 9 0 9
+[ 1 1 ] 10 0 10
+[ 1 1 ] 11 0 11
+[ 1 1 ] 12 0 12
+[ 2 0 ] 13 0 13
+[ 2 0 ] 14 0 14
+[ 2 0 ] 15 0 15
+[ 2 1 ] 16 0 16
+[ 2 1 ] 17 0 17
+[ 2 1 ] 18 0 18
+position array3D array3D difference
+------------------------------------------------------------
+[ 0 0 0 ] 1 0 1
+[ 0 0 0 ] 2 0 2
+[ 0 0 0 ] 3 0 3
+[ 0 0 1 ] 4 0 4
+[ 0 0 1 ] 5 0 5
+[ 0 0 1 ] 6 0 6
+[ 0 1 0 ] 7 0 7
+[ 0 1 0 ] 8 0 8
+[ 0 1 0 ] 9 0 9
+[ 0 1 1 ] 10 0 10
+[ 0 1 1 ] 11 0 11
+[ 0 1 1 ] 12 0 12
+[ 0 2 0 ] 13 0 13
+[ 0 2 0 ] 14 0 14
+[ 0 2 0 ] 15 0 15
+[ 0 2 1 ] 16 0 16
+[ 0 2 1 ] 17 0 17
+[ 0 2 1 ] 18 0 18
+[ 1 0 0 ] 19 0 19
+[ 1 0 0 ] 20 0 20
+[ 1 0 0 ] 21 0 21
+[ 1 0 1 ] 22 0 22
+[ 1 0 1 ] 23 0 23
+[ 1 0 1 ] 24 0 24
+[ 1 1 0 ] 25 0 25
+[ 1 1 0 ] 26 0 26
+[ 1 1 0 ] 27 0 27
+[ 1 1 1 ] 28 0 28
+[ 1 1 1 ] 29 0 29
+[ 1 1 1 ] 30 0 30
+[ 1 2 0 ] 31 0 31
+[ 1 2 0 ] 32 0 32
+[ 1 2 0 ] 33 0 33
+[ 1 2 1 ] 34 0 34
+[ 1 2 1 ] 35 0 35
+[ 1 2 1 ] 36 0 36
+[ 2 0 0 ] 37 0 37
+[ 2 0 0 ] 38 0 38
+[ 2 0 0 ] 39 0 39
+[ 2 0 1 ] 40 0 40
+[ 2 0 1 ] 41 0 41
+[ 2 0 1 ] 42 0 42
+[ 2 1 0 ] 43 0 43
+[ 2 1 0 ] 44 0 44
+[ 2 1 0 ] 45 0 45
+[ 2 1 1 ] 46 0 46
+[ 2 1 1 ] 47 0 47
+[ 2 1 1 ] 48 0 48
+[ 2 2 0 ] 49 0 49
+[ 2 2 0 ] 50 0 50
+[ 2 2 0 ] 51 0 51
+[ 2 2 1 ] 52 0 52
+[ 2 2 1 ] 53 0 53
+[ 2 2 1 ] 54 0 54
+[ 3 0 0 ] 55 0 55
+[ 3 0 0 ] 56 0 56
+[ 3 0 0 ] 57 0 57
+[ 3 0 1 ] 58 0 58
+[ 3 0 1 ] 59 0 59
+[ 3 0 1 ] 60 0 60
+[ 3 1 0 ] 61 0 61
+[ 3 1 0 ] 62 0 62
+[ 3 1 0 ] 63 0 63
+[ 3 1 1 ] 64 0 64
+[ 3 1 1 ] 65 0 65
+[ 3 1 1 ] 66 0 66
+[ 3 2 0 ] 67 0 67
+[ 3 2 0 ] 68 0 68
+[ 3 2 0 ] 69 0 69
+[ 3 2 1 ] 70 0 70
+[ 3 2 1 ] 71 0 71
+[ 3 2 1 ] 72 0 72
+position bitfield bitfield difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position bitfield2D bitfield2D difference
+------------------------------------------------------------
+[ 0 0 ] 1 0 1
+[ 0 1 ] 2 0 2
+[ 1 0 ] 3 0 3
+[ 1 1 ] 4 0 4
+[ 2 0 ] 5 0 5
+[ 2 1 ] 6 0 6
+position bitfield3D bitfield3D difference
+------------------------------------------------------------
+[ 0 0 0 ] 1 0 1
+[ 0 0 1 ] 2 0 2
+[ 0 1 0 ] 3 0 3
+[ 0 1 1 ] 4 0 4
+[ 0 2 0 ] 5 0 5
+[ 0 2 1 ] 6 0 6
+[ 1 0 0 ] 7 0 7
+[ 1 0 1 ] 8 0 8
+[ 1 1 0 ] 9 0 9
+[ 1 1 1 ] 10 0 10
+[ 1 2 0 ] 11 0 11
+[ 1 2 1 ] 12 0 12
+[ 2 0 0 ] 13 0 13
+[ 2 0 1 ] 14 0 14
+[ 2 1 0 ] 15 0 15
+[ 2 1 1 ] 16 0 16
+[ 2 2 0 ] 17 0 17
+[ 2 2 1 ] 18 0 18
+[ 3 0 0 ] 19 0 19
+[ 3 0 1 ] 20 0 20
+[ 3 1 0 ] 21 0 21
+[ 3 1 1 ] 22 0 22
+[ 3 2 0 ] 23 0 23
+[ 3 2 1 ] 24 0 24
+position compound compound difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 0 ] 2.000000 0.000000 2.000000
+[ 1 ] 3 0 3
+[ 1 ] 4.000000 0.000000 4.000000
+position compound2D compound2D difference
+------------------------------------------------------------
+[ 0 0 ] 1 0 1
+[ 0 0 ] 2.000000 0.000000 2.000000
+[ 0 1 ] 3 0 3
+[ 0 1 ] 4.000000 0.000000 4.000000
+[ 1 0 ] 5 0 5
+[ 1 0 ] 6.000000 0.000000 6.000000
+[ 1 1 ] 7 0 7
+[ 1 1 ] 8.000000 0.000000 8.000000
+[ 2 0 ] 9 0 9
+[ 2 0 ] 10.000000 0.000000 10.000000
+[ 2 1 ] 11 0 11
+[ 2 1 ] 12.000000 0.000000 12.000000
+position compound3D compound3D difference
+------------------------------------------------------------
+[ 0 0 0 ] 1 0 1
+[ 0 0 0 ] 2.000000 0.000000 2.000000
+[ 0 0 1 ] 3 0 3
+[ 0 0 1 ] 4.000000 0.000000 4.000000
+[ 0 1 0 ] 5 0 5
+[ 0 1 0 ] 6.000000 0.000000 6.000000
+[ 0 1 1 ] 7 0 7
+[ 0 1 1 ] 8.000000 0.000000 8.000000
+[ 0 2 0 ] 9 0 9
+[ 0 2 0 ] 10.000000 0.000000 10.000000
+[ 0 2 1 ] 11 0 11
+[ 0 2 1 ] 12.000000 0.000000 12.000000
+[ 1 0 0 ] 13 0 13
+[ 1 0 0 ] 14.000000 0.000000 14.000000
+[ 1 0 1 ] 15 0 15
+[ 1 0 1 ] 16.000000 0.000000 16.000000
+[ 1 1 0 ] 17 0 17
+[ 1 1 0 ] 18.000000 0.000000 18.000000
+[ 1 1 1 ] 19 0 19
+[ 1 1 1 ] 20.000000 0.000000 20.000000
+[ 1 2 0 ] 21 0 21
+[ 1 2 0 ] 22.000000 0.000000 22.000000
+[ 1 2 1 ] 23 0 23
+[ 1 2 1 ] 24.000000 0.000000 24.000000
+[ 2 0 0 ] 25 0 25
+[ 2 0 0 ] 26.000000 0.000000 26.000000
+[ 2 0 1 ] 27 0 27
+[ 2 0 1 ] 28.000000 0.000000 28.000000
+[ 2 1 0 ] 29 0 29
+[ 2 1 0 ] 30.000000 0.000000 30.000000
+[ 2 1 1 ] 31 0 31
+[ 2 1 1 ] 32.000000 0.000000 32.000000
+[ 2 2 0 ] 33 0 33
+[ 2 2 0 ] 34.000000 0.000000 34.000000
+[ 2 2 1 ] 35 0 35
+[ 2 2 1 ] 36.000000 0.000000 36.000000
+[ 3 0 0 ] 37 0 37
+[ 3 0 0 ] 38.000000 0.000000 38.000000
+[ 3 0 1 ] 39 0 39
+[ 3 0 1 ] 40.000000 0.000000 40.000000
+[ 3 1 0 ] 41 0 41
+[ 3 1 0 ] 42.000000 0.000000 42.000000
+[ 3 1 1 ] 43 0 43
+[ 3 1 1 ] 44.000000 0.000000 44.000000
+[ 3 2 0 ] 45 0 45
+[ 3 2 0 ] 46.000000 0.000000 46.000000
+[ 3 2 1 ] 47 0 47
+[ 3 2 1 ] 48.000000 0.000000 48.000000
+position enum enum difference
+------------------------------------------------------------
+[ 0 ] RED GREEN
+position float float difference
+------------------------------------------------------------
+[ 0 ] 1.000000 0.000000 1.000000
+[ 1 ] 2.000000 0.000000 2.000000
+position float2D float2D difference
+------------------------------------------------------------
+[ 0 0 ] 1.000000 0.000000 1.000000
+[ 0 1 ] 2.000000 0.000000 2.000000
+[ 1 0 ] 3.000000 0.000000 3.000000
+[ 1 1 ] 4.000000 0.000000 4.000000
+[ 2 0 ] 5.000000 0.000000 5.000000
+[ 2 1 ] 6.000000 0.000000 6.000000
+position float3D float3D difference
+------------------------------------------------------------
+[ 0 0 0 ] 1.000000 0.000000 1.000000
+[ 0 0 1 ] 2.000000 0.000000 2.000000
+[ 0 1 0 ] 3.000000 0.000000 3.000000
+[ 0 1 1 ] 4.000000 0.000000 4.000000
+[ 0 2 0 ] 5.000000 0.000000 5.000000
+[ 0 2 1 ] 6.000000 0.000000 6.000000
+[ 1 0 0 ] 7.000000 0.000000 7.000000
+[ 1 0 1 ] 8.000000 0.000000 8.000000
+[ 1 1 0 ] 9.000000 0.000000 9.000000
+[ 1 1 1 ] 10.000000 0.000000 10.000000
+[ 1 2 0 ] 11.000000 0.000000 11.000000
+[ 1 2 1 ] 12.000000 0.000000 12.000000
+[ 2 0 0 ] 13.000000 0.000000 13.000000
+[ 2 0 1 ] 14.000000 0.000000 14.000000
+[ 2 1 0 ] 15.000000 0.000000 15.000000
+[ 2 1 1 ] 16.000000 0.000000 16.000000
+[ 2 2 0 ] 17.000000 0.000000 17.000000
+[ 2 2 1 ] 18.000000 0.000000 18.000000
+[ 3 0 0 ] 19.000000 0.000000 19.000000
+[ 3 0 1 ] 20.000000 0.000000 20.000000
+[ 3 1 0 ] 21.000000 0.000000 21.000000
+[ 3 1 1 ] 22.000000 0.000000 22.000000
+[ 3 2 0 ] 23.000000 0.000000 23.000000
+[ 3 2 1 ] 24.000000 0.000000 24.000000
+position integer integer difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position integer2D integer2D difference
+------------------------------------------------------------
+[ 0 0 ] 1 0 1
+[ 0 1 ] 2 0 2
+[ 1 0 ] 3 0 3
+[ 1 1 ] 4 0 4
+[ 2 0 ] 5 0 5
+[ 2 1 ] 6 0 6
+position integer3D integer3D difference
+------------------------------------------------------------
+[ 0 0 0 ] 1 0 1
+[ 0 0 1 ] 2 0 2
+[ 0 1 0 ] 3 0 3
+[ 0 1 1 ] 4 0 4
+[ 0 2 0 ] 5 0 5
+[ 0 2 1 ] 6 0 6
+[ 1 0 0 ] 7 0 7
+[ 1 0 1 ] 8 0 8
+[ 1 1 0 ] 9 0 9
+[ 1 1 1 ] 10 0 10
+[ 1 2 0 ] 11 0 11
+[ 1 2 1 ] 12 0 12
+[ 2 0 0 ] 13 0 13
+[ 2 0 1 ] 14 0 14
+[ 2 1 0 ] 15 0 15
+[ 2 1 1 ] 16 0 16
+[ 2 2 0 ] 17 0 17
+[ 2 2 1 ] 18 0 18
+[ 3 0 0 ] 19 0 19
+[ 3 0 1 ] 20 0 20
+[ 3 1 0 ] 21 0 21
+[ 3 1 1 ] 22 0 22
+[ 3 2 0 ] 23 0 23
+[ 3 2 1 ] 24 0 24
+position opaque opaque difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position opaque2D opaque2D difference
+------------------------------------------------------------
+[ 0 0 ] 1 0 1
+[ 0 1 ] 2 0 2
+[ 1 0 ] 3 0 3
+[ 1 1 ] 4 0 4
+[ 2 0 ] 5 0 5
+[ 2 1 ] 6 0 6
+position opaque3D opaque3D difference
+------------------------------------------------------------
+[ 0 0 0 ] 1 0 1
+[ 0 0 1 ] 2 0 2
+[ 0 1 0 ] 3 0 3
+[ 0 1 1 ] 4 0 4
+[ 0 2 0 ] 5 0 5
+[ 0 2 1 ] 6 0 6
+[ 1 0 0 ] 7 0 7
+[ 1 0 1 ] 8 0 8
+[ 1 1 0 ] 9 0 9
+[ 1 1 1 ] 10 0 10
+[ 1 2 0 ] 11 0 11
+[ 1 2 1 ] 12 0 12
+[ 2 0 0 ] 13 0 13
+[ 2 0 1 ] 14 0 14
+[ 2 1 0 ] 15 0 15
+[ 2 1 1 ] 16 0 16
+[ 2 2 0 ] 17 0 17
+[ 2 2 1 ] 18 0 18
+[ 3 0 0 ] 19 0 19
+[ 3 0 1 ] 20 0 20
+[ 3 1 0 ] 21 0 21
+[ 3 1 1 ] 22 0 22
+[ 3 2 0 ] 23 0 23
+[ 3 2 1 ] 24 0 24
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+position string string difference
+------------------------------------------------------------
+[ 0 ] a z
+[ 0 ] b z
+[ 1 ] d z
+[ 1 ] e z
+position string2D string2D difference
+------------------------------------------------------------
+[ 0 0 ] a z
+[ 0 0 ] b z
+[ 0 1 ] c z
+[ 0 1 ] d z
+[ 1 0 ] e z
+[ 1 0 ] f z
+[ 1 1 ] g z
+[ 1 1 ] h z
+[ 2 0 ] i z
+[ 2 0 ] j z
+[ 2 1 ] k z
+[ 2 1 ] l z
+position string3D string3D difference
+------------------------------------------------------------
+[ 0 0 0 ] a z
+[ 0 0 0 ] b z
+[ 0 0 1 ] c z
+[ 0 0 1 ] d z
+[ 0 1 0 ] e z
+[ 0 1 0 ] f z
+[ 0 1 1 ] g z
+[ 0 1 1 ] h z
+[ 0 2 0 ] i z
+[ 0 2 0 ] j z
+[ 0 2 1 ] k z
+[ 0 2 1 ] l z
+[ 1 0 0 ] m z
+[ 1 0 0 ] n z
+[ 1 0 1 ] p z
+[ 1 0 1 ] q z
+[ 1 1 0 ] r z
+[ 1 1 0 ] s z
+[ 1 1 1 ] t z
+[ 1 1 1 ] u z
+[ 1 2 0 ] v z
+[ 1 2 0 ] w z
+[ 1 2 1 ] x z
+[ 2 0 0 ] A z
+[ 2 0 0 ] B z
+[ 2 0 1 ] C z
+[ 2 0 1 ] D z
+[ 2 1 0 ] E z
+[ 2 1 0 ] F z
+[ 2 1 1 ] G z
+[ 2 1 1 ] H z
+[ 2 2 0 ] I z
+[ 2 2 0 ] J z
+[ 2 2 1 ] K z
+[ 2 2 1 ] L z
+[ 3 0 0 ] M z
+[ 3 0 0 ] N z
+[ 3 0 1 ] P z
+[ 3 0 1 ] Q z
+[ 3 1 0 ] R z
+[ 3 1 0 ] S z
+[ 3 1 1 ] T z
+[ 3 1 1 ] U z
+[ 3 2 0 ] V z
+[ 3 2 0 ] W z
+[ 3 2 1 ] X z
+[ 3 2 1 ] Z z
+position vlen vlen difference
+------------------------------------------------------------
+[ 0 ] 1 0 1
+[ 1 ] 2 0 2
+[ 1 ] 3 0 3
+position vlen2D vlen2D difference
+------------------------------------------------------------
+[ 0 1 ] 1 0 1
+[ 1 0 ] 2 0 2
+[ 1 0 ] 3 0 3
+[ 1 1 ] 4 0 4
+[ 1 1 ] 5 0 5
+[ 2 0 ] 6 0 6
+[ 2 0 ] 7 0 7
+[ 2 0 ] 8 0 8
+[ 2 1 ] 9 0 9
+[ 2 1 ] 10 0 10
+[ 2 1 ] 11 0 11
+position vlen3D vlen3D difference
+------------------------------------------------------------
+[ 0 0 1 ] 1 0 1
+[ 0 1 0 ] 2 0 2
+[ 0 1 1 ] 3 0 3
+[ 0 2 0 ] 4 0 4
+[ 0 2 1 ] 5 0 5
+[ 1 0 0 ] 6 0 6
+[ 1 0 0 ] 7 0 7
+[ 1 0 1 ] 8 0 8
+[ 1 0 1 ] 9 0 9
+[ 1 1 0 ] 10 0 10
+[ 1 1 0 ] 11 0 11
+[ 1 1 1 ] 12 0 12
+[ 1 1 1 ] 13 0 13
+[ 1 2 0 ] 14 0 14
+[ 1 2 0 ] 15 0 15
+[ 1 2 1 ] 16 0 16
+[ 1 2 1 ] 17 0 17
+[ 2 0 0 ] 18 0 18
+[ 2 0 0 ] 19 0 19
+[ 2 0 0 ] 20 0 20
+[ 2 0 1 ] 21 0 21
+[ 2 0 1 ] 22 0 22
+[ 2 0 1 ] 23 0 23
+[ 2 1 0 ] 24 0 24
+[ 2 1 0 ] 25 0 25
+[ 2 1 0 ] 26 0 26
+[ 2 1 1 ] 27 0 27
+[ 2 1 1 ] 28 0 28
+[ 2 1 1 ] 29 0 29
+[ 2 2 0 ] 30 0 30
+[ 2 2 0 ] 31 0 31
+[ 2 2 0 ] 32 0 32
+[ 2 2 1 ] 33 0 33
+[ 2 2 1 ] 34 0 34
+[ 2 2 1 ] 35 0 35
+[ 3 0 0 ] 36 0 36
+[ 3 0 0 ] 37 0 37
+[ 3 0 0 ] 38 0 38
+[ 3 0 0 ] 39 0 39
+[ 3 0 1 ] 40 0 40
+[ 3 0 1 ] 41 0 41
+[ 3 0 1 ] 42 0 42
+[ 3 0 1 ] 43 0 43
+[ 3 1 0 ] 44 0 44
+[ 3 1 0 ] 45 0 45
+[ 3 1 0 ] 46 0 46
+[ 3 1 0 ] 47 0 47
+[ 3 1 1 ] 48 0 48
+[ 3 1 1 ] 49 0 49
+[ 3 1 1 ] 50 0 50
+[ 3 1 1 ] 51 0 51
+[ 3 2 0 ] 52 0 52
+[ 3 2 0 ] 53 0 53
+[ 3 2 0 ] 54 0 54
+[ 3 2 0 ] 55 0 55
+[ 3 2 1 ] 56 0 56
+[ 3 2 1 ] 57 0 57
+[ 3 2 1 ] 58 0 58
+[ 3 2 1 ] 59 0 59