diff options
Diffstat (limited to 'hl')
-rwxr-xr-x | hl/Makefile.in | 21 | ||||
-rw-r--r-- | hl/c++/Makefile.in | 21 | ||||
-rw-r--r-- | hl/c++/examples/Makefile.in | 21 | ||||
-rw-r--r-- | hl/c++/src/Makefile.am | 4 | ||||
-rw-r--r-- | hl/c++/src/Makefile.in | 31 | ||||
-rw-r--r-- | hl/c++/test/Makefile.am | 2 | ||||
-rw-r--r-- | hl/c++/test/Makefile.in | 27 | ||||
-rw-r--r-- | hl/examples/Makefile.in | 21 | ||||
-rw-r--r-- | hl/fortran/Makefile.in | 21 | ||||
-rw-r--r-- | hl/fortran/examples/Makefile.in | 21 | ||||
-rw-r--r-- | hl/fortran/src/Makefile.am | 6 | ||||
-rw-r--r-- | hl/fortran/src/Makefile.in | 37 | ||||
-rw-r--r-- | hl/fortran/test/Makefile.am | 6 | ||||
-rw-r--r-- | hl/fortran/test/Makefile.in | 37 | ||||
-rw-r--r-- | hl/src/H5DS.c | 28 | ||||
-rw-r--r-- | hl/src/Makefile.am | 4 | ||||
-rw-r--r-- | hl/src/Makefile.in | 30 | ||||
-rw-r--r-- | hl/test/Makefile.am | 15 | ||||
-rw-r--r-- | hl/test/Makefile.in | 89 | ||||
-rw-r--r-- | hl/test/gen_test_ds.c | 595 | ||||
-rw-r--r-- | hl/test/test_ds.c | 2474 | ||||
-rw-r--r-- | hl/test/test_ds_be.h5 | bin | 0 -> 11024 bytes | |||
-rw-r--r-- | hl/test/test_ds_le.h5 | bin | 0 -> 14304 bytes | |||
-rw-r--r-- | hl/test/test_lite.c | 1 | ||||
-rw-r--r-- | hl/tools/Makefile.in | 21 | ||||
-rw-r--r-- | hl/tools/gif2h5/Makefile.am | 4 | ||||
-rw-r--r-- | hl/tools/gif2h5/Makefile.in | 25 |
27 files changed, 3138 insertions, 424 deletions
diff --git a/hl/Makefile.in b/hl/Makefile.in index 07dbefc..addfd5a 100755 --- a/hl/Makefile.in +++ b/hl/Makefile.in @@ -114,6 +114,16 @@ am__relativize = \ ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@ AMTAR = @AMTAR@ + +# H5_CFLAGS holds flags that should be used when building hdf5, +# but which should not be exported to h5cc for building other programs. +# AM_CFLAGS is an automake construct which should be used by Makefiles +# instead of CFLAGS, as CFLAGS is reserved solely for the user to define. +AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@ +AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ +AM_LDFLAGS = @AM_LDFLAGS@ AM_MAKEFLAGS = @AM_MAKEFLAGS@ AR = @AR@ @@ -127,21 +137,18 @@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ - -# H5_CFLAGS holds flags that should be used as CFLAGS when building hdf5, -# but which shouldn't be exported to h5cc for building other programs. -CFLAGS = @CFLAGS@ @H5_CFLAGS@ +CFLAGS = @CFLAGS@ CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ CONFIG_USER = @CONFIG_USER@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ @H5_CPPFLAGS@ +CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ @H5_CXXFLAGS@ +CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ @@ -164,7 +171,7 @@ F9XMODEXT = @F9XMODEXT@ F9XMODFLAG = @F9XMODFLAG@ F9XSUFFIXFLAG = @F9XSUFFIXFLAG@ FC = @FC@ -FCFLAGS = @FCFLAGS@ @H5_FCFLAGS@ +FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ diff --git a/hl/c++/Makefile.in b/hl/c++/Makefile.in index a2535cd..87a582c 100644 --- a/hl/c++/Makefile.in +++ b/hl/c++/Makefile.in @@ -110,6 +110,16 @@ am__relativize = \ ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@ AMTAR = @AMTAR@ + +# H5_CFLAGS holds flags that should be used when building hdf5, +# but which should not be exported to h5cc for building other programs. +# AM_CFLAGS is an automake construct which should be used by Makefiles +# instead of CFLAGS, as CFLAGS is reserved solely for the user to define. +AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@ +AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ +AM_LDFLAGS = @AM_LDFLAGS@ AM_MAKEFLAGS = @AM_MAKEFLAGS@ AR = @AR@ @@ -123,21 +133,18 @@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ - -# H5_CFLAGS holds flags that should be used as CFLAGS when building hdf5, -# but which shouldn't be exported to h5cc for building other programs. -CFLAGS = @CFLAGS@ @H5_CFLAGS@ +CFLAGS = @CFLAGS@ CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ CONFIG_USER = @CONFIG_USER@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ @H5_CPPFLAGS@ +CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ @H5_CXXFLAGS@ +CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ @@ -160,7 +167,7 @@ F9XMODEXT = @F9XMODEXT@ F9XMODFLAG = @F9XMODFLAG@ F9XSUFFIXFLAG = @F9XSUFFIXFLAG@ FC = @FC@ -FCFLAGS = @FCFLAGS@ @H5_FCFLAGS@ +FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ diff --git a/hl/c++/examples/Makefile.in b/hl/c++/examples/Makefile.in index 27e1585..4b11346 100644 --- a/hl/c++/examples/Makefile.in +++ b/hl/c++/examples/Makefile.in @@ -76,6 +76,16 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@ AMTAR = @AMTAR@ + +# H5_CFLAGS holds flags that should be used when building hdf5, +# but which should not be exported to h5cc for building other programs. +# AM_CFLAGS is an automake construct which should be used by Makefiles +# instead of CFLAGS, as CFLAGS is reserved solely for the user to define. +AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@ +AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ +AM_LDFLAGS = @AM_LDFLAGS@ AM_MAKEFLAGS = @AM_MAKEFLAGS@ AR = @AR@ @@ -89,21 +99,18 @@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ - -# H5_CFLAGS holds flags that should be used as CFLAGS when building hdf5, -# but which shouldn't be exported to h5cc for building other programs. -CFLAGS = @CFLAGS@ @H5_CFLAGS@ +CFLAGS = @CFLAGS@ CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ CONFIG_USER = @CONFIG_USER@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ @H5_CPPFLAGS@ +CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ @H5_CXXFLAGS@ +CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ @@ -126,7 +133,7 @@ F9XMODEXT = @F9XMODEXT@ F9XMODFLAG = @F9XMODFLAG@ F9XSUFFIXFLAG = @F9XSUFFIXFLAG@ FC = @FC@ -FCFLAGS = @FCFLAGS@ @H5_FCFLAGS@ +FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ diff --git a/hl/c++/src/Makefile.am b/hl/c++/src/Makefile.am index 1ff24be..15986d6 100644 --- a/hl/c++/src/Makefile.am +++ b/hl/c++/src/Makefile.am @@ -28,12 +28,12 @@ INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/hl/src lib_LTLIBRARIES=libhdf5_hl_cpp.la # Add libtool numbers to the HDF5 HL C++ library (from config/lt_vers.am) -libhdf5_hl_cpp_la_LDFLAGS= -version-info $(LT_VERS_INTERFACE):$(LT_VERS_REVISION):$(LT_VERS_AGE) +libhdf5_hl_cpp_la_LDFLAGS= -version-info $(LT_VERS_INTERFACE):$(LT_VERS_REVISION):$(LT_VERS_AGE) $(AM_LDFLAGS) # Shared C++ libraries aren't universally supported. if CXX_SHARED_CONDITIONAL else - AM_LDFLAGS=-static + AM_LDFLAGS+=-static endif # Source files for the library diff --git a/hl/c++/src/Makefile.in b/hl/c++/src/Makefile.in index cd81ccf..ad49fe4 100644 --- a/hl/c++/src/Makefile.in +++ b/hl/c++/src/Makefile.in @@ -56,6 +56,9 @@ DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(top_srcdir)/config/commence.am \ $(top_srcdir)/config/conclude.am \ $(top_srcdir)/config/lt_vers.am + +# Shared C++ libraries aren't universally supported. +@CXX_SHARED_CONDITIONAL_FALSE@am__append_1 = -static TESTS = subdir = hl/c++/src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -119,6 +122,16 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@ AMTAR = @AMTAR@ + +# H5_CFLAGS holds flags that should be used when building hdf5, +# but which should not be exported to h5cc for building other programs. +# AM_CFLAGS is an automake construct which should be used by Makefiles +# instead of CFLAGS, as CFLAGS is reserved solely for the user to define. +AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@ +AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ +AM_LDFLAGS = @AM_LDFLAGS@ $(am__append_1) AM_MAKEFLAGS = @AM_MAKEFLAGS@ AR = @AR@ @@ -132,21 +145,18 @@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ - -# H5_CFLAGS holds flags that should be used as CFLAGS when building hdf5, -# but which shouldn't be exported to h5cc for building other programs. -CFLAGS = @CFLAGS@ @H5_CFLAGS@ +CFLAGS = @CFLAGS@ CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ CONFIG_USER = @CONFIG_USER@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ @H5_CPPFLAGS@ +CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ @H5_CXXFLAGS@ +CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ @@ -169,7 +179,7 @@ F9XMODEXT = @F9XMODEXT@ F9XMODFLAG = @F9XMODFLAG@ F9XSUFFIXFLAG = @F9XSUFFIXFLAG@ FC = @FC@ -FCFLAGS = @FCFLAGS@ @H5_FCFLAGS@ +FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ @@ -370,7 +380,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog # Add libtool shared library version numbers to the HDF5 library # See libtool versioning documentation online. LT_VERS_INTERFACE = 6 -LT_VERS_REVISION = 37 +LT_VERS_REVISION = 41 LT_VERS_AGE = 0 # Include src directory @@ -380,10 +390,7 @@ INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/hl/src lib_LTLIBRARIES = libhdf5_hl_cpp.la # Add libtool numbers to the HDF5 HL C++ library (from config/lt_vers.am) -libhdf5_hl_cpp_la_LDFLAGS = -version-info $(LT_VERS_INTERFACE):$(LT_VERS_REVISION):$(LT_VERS_AGE) - -# Shared C++ libraries aren't universally supported. -@CXX_SHARED_CONDITIONAL_FALSE@AM_LDFLAGS = -static +libhdf5_hl_cpp_la_LDFLAGS = -version-info $(LT_VERS_INTERFACE):$(LT_VERS_REVISION):$(LT_VERS_AGE) $(AM_LDFLAGS) # Source files for the library # At the moment, only the H5PT Packet Table has a C++ API. diff --git a/hl/c++/test/Makefile.am b/hl/c++/test/Makefile.am index beebc33..6dcea1c 100644 --- a/hl/c++/test/Makefile.am +++ b/hl/c++/test/Makefile.am @@ -26,7 +26,7 @@ INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/c++/src -I$(top_srcdir)/hl/src -I$( # Shared C++ libraries aren't universally supported. if CXX_SHARED_CONDITIONAL else - AM_LDFLAGS=-static + AM_LDFLAGS+=-static endif # These are our main targets. They should be listed in the order to be diff --git a/hl/c++/test/Makefile.in b/hl/c++/test/Makefile.in index c2de2e7..6bb1a99 100644 --- a/hl/c++/test/Makefile.in +++ b/hl/c++/test/Makefile.in @@ -53,6 +53,9 @@ host_triplet = @host@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/commence.am \ $(top_srcdir)/config/conclude.am + +# Shared C++ libraries aren't universally supported. +@CXX_SHARED_CONDITIONAL_FALSE@am__append_1 = -static check_PROGRAMS = $(am__EXEEXT_1) TESTS = $(check_PROGRAMS) subdir = hl/c++/test @@ -93,6 +96,16 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@ AMTAR = @AMTAR@ + +# H5_CFLAGS holds flags that should be used when building hdf5, +# but which should not be exported to h5cc for building other programs. +# AM_CFLAGS is an automake construct which should be used by Makefiles +# instead of CFLAGS, as CFLAGS is reserved solely for the user to define. +AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@ +AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ +AM_LDFLAGS = @AM_LDFLAGS@ $(am__append_1) AM_MAKEFLAGS = @AM_MAKEFLAGS@ AR = @AR@ @@ -106,21 +119,18 @@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ - -# H5_CFLAGS holds flags that should be used as CFLAGS when building hdf5, -# but which shouldn't be exported to h5cc for building other programs. -CFLAGS = @CFLAGS@ @H5_CFLAGS@ +CFLAGS = @CFLAGS@ CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ CONFIG_USER = @CONFIG_USER@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ @H5_CPPFLAGS@ +CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ @H5_CXXFLAGS@ +CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ @@ -143,7 +153,7 @@ F9XMODEXT = @F9XMODEXT@ F9XMODFLAG = @F9XMODFLAG@ F9XSUFFIXFLAG = @F9XSUFFIXFLAG@ FC = @FC@ -FCFLAGS = @FCFLAGS@ @H5_FCFLAGS@ +FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ @@ -344,9 +354,6 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog # Include directories INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/c++/src -I$(top_srcdir)/hl/src -I$(top_srcdir)/hl/c++/src -I$(top_srcdir)/test -I$(top_builddir)/hl/test -I$(top_srcdir)/hl/test -# Shared C++ libraries aren't universally supported. -@CXX_SHARED_CONDITIONAL_FALSE@AM_LDFLAGS = -static - # These are our main targets. They should be listed in the order to be # executed, generally most specific tests to least specific tests. TEST_PROG = ptableTest diff --git a/hl/examples/Makefile.in b/hl/examples/Makefile.in index 0a2ec12..0380eaf 100644 --- a/hl/examples/Makefile.in +++ b/hl/examples/Makefile.in @@ -76,6 +76,16 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@ AMTAR = @AMTAR@ + +# H5_CFLAGS holds flags that should be used when building hdf5, +# but which should not be exported to h5cc for building other programs. +# AM_CFLAGS is an automake construct which should be used by Makefiles +# instead of CFLAGS, as CFLAGS is reserved solely for the user to define. +AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@ +AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ +AM_LDFLAGS = @AM_LDFLAGS@ AM_MAKEFLAGS = @AM_MAKEFLAGS@ AR = @AR@ @@ -89,21 +99,18 @@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ - -# H5_CFLAGS holds flags that should be used as CFLAGS when building hdf5, -# but which shouldn't be exported to h5cc for building other programs. -CFLAGS = @CFLAGS@ @H5_CFLAGS@ +CFLAGS = @CFLAGS@ CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ CONFIG_USER = @CONFIG_USER@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ @H5_CPPFLAGS@ +CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ @H5_CXXFLAGS@ +CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ @@ -126,7 +133,7 @@ F9XMODEXT = @F9XMODEXT@ F9XMODFLAG = @F9XMODFLAG@ F9XSUFFIXFLAG = @F9XSUFFIXFLAG@ FC = @FC@ -FCFLAGS = @FCFLAGS@ @H5_FCFLAGS@ +FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ diff --git a/hl/fortran/Makefile.in b/hl/fortran/Makefile.in index 9daf03a..79e0ce5 100644 --- a/hl/fortran/Makefile.in +++ b/hl/fortran/Makefile.in @@ -114,6 +114,16 @@ am__relativize = \ ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@ AMTAR = @AMTAR@ + +# H5_CFLAGS holds flags that should be used when building hdf5, +# but which should not be exported to h5cc for building other programs. +# AM_CFLAGS is an automake construct which should be used by Makefiles +# instead of CFLAGS, as CFLAGS is reserved solely for the user to define. +AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@ +AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ +AM_LDFLAGS = @AM_LDFLAGS@ AM_MAKEFLAGS = @AM_MAKEFLAGS@ AR = @AR@ @@ -127,21 +137,18 @@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ - -# H5_CFLAGS holds flags that should be used as CFLAGS when building hdf5, -# but which shouldn't be exported to h5cc for building other programs. -CFLAGS = @CFLAGS@ @H5_CFLAGS@ +CFLAGS = @CFLAGS@ CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ CONFIG_USER = @CONFIG_USER@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ @H5_CPPFLAGS@ +CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ @H5_CXXFLAGS@ +CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ @@ -164,7 +171,7 @@ F9XMODEXT = @F9XMODEXT@ F9XMODFLAG = @F9XMODFLAG@ F9XSUFFIXFLAG = @F9XSUFFIXFLAG@ FC = @FC@ -FCFLAGS = @FCFLAGS@ @H5_FCFLAGS@ +FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ diff --git a/hl/fortran/examples/Makefile.in b/hl/fortran/examples/Makefile.in index 0e59a7d..698ffbf 100644 --- a/hl/fortran/examples/Makefile.in +++ b/hl/fortran/examples/Makefile.in @@ -76,6 +76,16 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@ AMTAR = @AMTAR@ + +# H5_CFLAGS holds flags that should be used when building hdf5, +# but which should not be exported to h5cc for building other programs. +# AM_CFLAGS is an automake construct which should be used by Makefiles +# instead of CFLAGS, as CFLAGS is reserved solely for the user to define. +AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@ +AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ +AM_LDFLAGS = @AM_LDFLAGS@ AM_MAKEFLAGS = @AM_MAKEFLAGS@ AR = @AR@ @@ -89,21 +99,18 @@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ - -# H5_CFLAGS holds flags that should be used as CFLAGS when building hdf5, -# but which shouldn't be exported to h5cc for building other programs. -CFLAGS = @CFLAGS@ @H5_CFLAGS@ +CFLAGS = @CFLAGS@ CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ CONFIG_USER = @CONFIG_USER@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ @H5_CPPFLAGS@ +CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ @H5_CXXFLAGS@ +CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ @@ -126,7 +133,7 @@ F9XMODEXT = @F9XMODEXT@ F9XMODFLAG = @F9XMODFLAG@ F9XSUFFIXFLAG = @F9XSUFFIXFLAG@ FC = @FC@ -FCFLAGS = @FCFLAGS@ @H5_FCFLAGS@ +FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ diff --git a/hl/fortran/src/Makefile.am b/hl/fortran/src/Makefile.am index fbc3908..d4fec65 100644 --- a/hl/fortran/src/Makefile.am +++ b/hl/fortran/src/Makefile.am @@ -24,20 +24,20 @@ include $(top_srcdir)/config/lt_vers.am INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/hl/src -I$(top_builddir)/hl/src \ -I$(top_srcdir)/fortran/src -I$(top_builddir)/fortran/src -AM_FCFLAGS=-I$(top_builddir)/fortran/src $(F9XMODFLAG)$(top_builddir)/fortran/src +AM_FCFLAGS+=-I$(top_builddir)/fortran/src $(F9XMODFLAG)$(top_builddir)/fortran/src # Our main target, the high-level fortran library lib_LTLIBRARIES=libhdf5hl_fortran.la # Add libtool numbers to the HDF5 HL Fortran library (from config/lt_vers.am) -libhdf5hl_fortran_la_LDFLAGS= -version-info $(LT_VERS_INTERFACE):$(LT_VERS_REVISION):$(LT_VERS_AGE) +libhdf5hl_fortran_la_LDFLAGS= -version-info $(LT_VERS_INTERFACE):$(LT_VERS_REVISION):$(LT_VERS_AGE) $(AM_LDFLAGS) # Some Fortran compilers can't build shared libraries, so sometimes we # want to build a shared C library and a static Fortran library. If so, # pass the -static flag to the library linker. if FORTRAN_SHARED_CONDITIONAL else - AM_LDFLAGS=-static + AM_LDFLAGS+=-static endif # Source files for the library diff --git a/hl/fortran/src/Makefile.in b/hl/fortran/src/Makefile.in index 35c4349..def1880 100644 --- a/hl/fortran/src/Makefile.in +++ b/hl/fortran/src/Makefile.in @@ -55,6 +55,11 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/commence.am \ $(top_srcdir)/config/conclude.am \ $(top_srcdir)/config/lt_vers.am + +# Some Fortran compilers can't build shared libraries, so sometimes we +# want to build a shared C library and a static Fortran library. If so, +# pass the -static flag to the library linker. +@FORTRAN_SHARED_CONDITIONAL_FALSE@am__append_1 = -static TESTS = subdir = hl/fortran/src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -125,6 +130,17 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@ AMTAR = @AMTAR@ + +# H5_CFLAGS holds flags that should be used when building hdf5, +# but which should not be exported to h5cc for building other programs. +# AM_CFLAGS is an automake construct which should be used by Makefiles +# instead of CFLAGS, as CFLAGS is reserved solely for the user to define. +AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@ +AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ -I$(top_builddir)/fortran/src \ + $(F9XMODFLAG)$(top_builddir)/fortran/src +AM_LDFLAGS = @AM_LDFLAGS@ $(am__append_1) AM_MAKEFLAGS = @AM_MAKEFLAGS@ AR = @AR@ @@ -138,21 +154,18 @@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ - -# H5_CFLAGS holds flags that should be used as CFLAGS when building hdf5, -# but which shouldn't be exported to h5cc for building other programs. -CFLAGS = @CFLAGS@ @H5_CFLAGS@ +CFLAGS = @CFLAGS@ CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ CONFIG_USER = @CONFIG_USER@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ @H5_CPPFLAGS@ +CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ @H5_CXXFLAGS@ +CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ @@ -175,7 +188,7 @@ F9XMODEXT = @F9XMODEXT@ F9XMODFLAG = @F9XMODFLAG@ F9XSUFFIXFLAG = @F9XSUFFIXFLAG@ FC = @FC@ -FCFLAGS = @FCFLAGS@ @H5_FCFLAGS@ +FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ @@ -376,23 +389,17 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog # Add libtool shared library version numbers to the HDF5 library # See libtool versioning documentation online. LT_VERS_INTERFACE = 6 -LT_VERS_REVISION = 37 +LT_VERS_REVISION = 41 LT_VERS_AGE = 0 INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/hl/src -I$(top_builddir)/hl/src \ -I$(top_srcdir)/fortran/src -I$(top_builddir)/fortran/src -AM_FCFLAGS = -I$(top_builddir)/fortran/src $(F9XMODFLAG)$(top_builddir)/fortran/src # Our main target, the high-level fortran library lib_LTLIBRARIES = libhdf5hl_fortran.la # Add libtool numbers to the HDF5 HL Fortran library (from config/lt_vers.am) -libhdf5hl_fortran_la_LDFLAGS = -version-info $(LT_VERS_INTERFACE):$(LT_VERS_REVISION):$(LT_VERS_AGE) - -# Some Fortran compilers can't build shared libraries, so sometimes we -# want to build a shared C library and a static Fortran library. If so, -# pass the -static flag to the library linker. -@FORTRAN_SHARED_CONDITIONAL_FALSE@AM_LDFLAGS = -static +libhdf5hl_fortran_la_LDFLAGS = -version-info $(LT_VERS_INTERFACE):$(LT_VERS_REVISION):$(LT_VERS_AGE) $(AM_LDFLAGS) # Source files for the library #if BUILD_PARALLEL_CONDITIONAL diff --git a/hl/fortran/test/Makefile.am b/hl/fortran/test/Makefile.am index 9c94bed..7f149c8 100644 --- a/hl/fortran/test/Makefile.am +++ b/hl/fortran/test/Makefile.am @@ -21,15 +21,15 @@ include $(top_srcdir)/config/commence.am -AM_CPPFLAGS=-I$(top_srcdir)/src -I$(top_builddir)/src -I$(top_srcdir)/hl/src -AM_FCFLAGS=-I$(top_builddir)/fortran/src -I$(top_builddir)/hl/fortran/src $(F9XMODFLAG)$(top_builddir)/fortran/src $(F9XMODFLAG)$(top_builddir)/hl/fortran/src +AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_builddir)/src -I$(top_srcdir)/hl/src +AM_FCFLAGS+=-I$(top_builddir)/fortran/src -I$(top_builddir)/hl/fortran/src $(F9XMODFLAG)$(top_builddir)/fortran/src $(F9XMODFLAG)$(top_builddir)/hl/fortran/src # Some Fortran compilers can't build shared libraries, so sometimes we # need to make sure the Fortran programs link against the static version # of the HDF5 library. We do this by passing the -static flag to the linker. if FORTRAN_SHARED_CONDITIONAL else - AM_LDFLAGS=-static + AM_LDFLAGS+=-static endif # Our main target, the test programs diff --git a/hl/fortran/test/Makefile.in b/hl/fortran/test/Makefile.in index 8d9a94e..f395240 100644 --- a/hl/fortran/test/Makefile.in +++ b/hl/fortran/test/Makefile.in @@ -53,6 +53,11 @@ host_triplet = @host@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/commence.am \ $(top_srcdir)/config/conclude.am + +# Some Fortran compilers can't build shared libraries, so sometimes we +# need to make sure the Fortran programs link against the static version +# of the HDF5 library. We do this by passing the -static flag to the linker. +@FORTRAN_SHARED_CONDITIONAL_FALSE@am__append_1 = -static check_PROGRAMS = $(am__EXEEXT_1) TESTS = $(check_PROGRAMS) subdir = hl/fortran/test @@ -96,6 +101,20 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@ AMTAR = @AMTAR@ + +# H5_CFLAGS holds flags that should be used when building hdf5, +# but which should not be exported to h5cc for building other programs. +# AM_CFLAGS is an automake construct which should be used by Makefiles +# instead of CFLAGS, as CFLAGS is reserved solely for the user to define. +AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src \ + -I$(top_builddir)/src -I$(top_srcdir)/hl/src +AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@ +AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ -I$(top_builddir)/fortran/src \ + -I$(top_builddir)/hl/fortran/src \ + $(F9XMODFLAG)$(top_builddir)/fortran/src \ + $(F9XMODFLAG)$(top_builddir)/hl/fortran/src +AM_LDFLAGS = @AM_LDFLAGS@ $(am__append_1) AM_MAKEFLAGS = @AM_MAKEFLAGS@ AR = @AR@ @@ -109,21 +128,18 @@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ - -# H5_CFLAGS holds flags that should be used as CFLAGS when building hdf5, -# but which shouldn't be exported to h5cc for building other programs. -CFLAGS = @CFLAGS@ @H5_CFLAGS@ +CFLAGS = @CFLAGS@ CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ CONFIG_USER = @CONFIG_USER@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ @H5_CPPFLAGS@ +CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ @H5_CXXFLAGS@ +CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ @@ -146,7 +162,7 @@ F9XMODEXT = @F9XMODEXT@ F9XMODFLAG = @F9XMODFLAG@ F9XSUFFIXFLAG = @F9XSUFFIXFLAG@ FC = @FC@ -FCFLAGS = @FCFLAGS@ @H5_FCFLAGS@ +FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ @@ -346,13 +362,6 @@ TRACE = perl $(top_srcdir)/bin/trace # Temporary files. CHECK_CLEANFILES = *.chkexe *.chklog *.clog dsetf[1-4].h5 f1img.h5 \ f1tab.h5 -AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_builddir)/src -I$(top_srcdir)/hl/src -AM_FCFLAGS = -I$(top_builddir)/fortran/src -I$(top_builddir)/hl/fortran/src $(F9XMODFLAG)$(top_builddir)/fortran/src $(F9XMODFLAG)$(top_builddir)/hl/fortran/src - -# Some Fortran compilers can't build shared libraries, so sometimes we -# need to make sure the Fortran programs link against the static version -# of the HDF5 library. We do this by passing the -static flag to the linker. -@FORTRAN_SHARED_CONDITIONAL_FALSE@AM_LDFLAGS = -static # Our main target, the test programs TEST_PROG = tstlite tstimage tsttable diff --git a/hl/src/H5DS.c b/hl/src/H5DS.c index 8e697f1..e15c132 100644 --- a/hl/src/H5DS.c +++ b/hl/src/H5DS.c @@ -129,6 +129,7 @@ herr_t H5DSattach_scale(hid_t did, hssize_t nelmts; hid_t sid; /* space ID */ hid_t tid = -1; /* attribute type ID */ + hid_t ntid = -1; /* attribute native type ID */ hid_t aid = -1; /* attribute ID */ int rank; /* rank of dataset */ hsize_t *dims=NULL; /* dimension of the "REFERENCE_LIST" array */ @@ -472,6 +473,9 @@ herr_t H5DSattach_scale(hid_t did, if((tid = H5Aget_type(aid)) < 0) goto out; + + if((ntid = H5Tget_native_type(tid, H5T_DIR_DEFAULT)) < 0) + goto out; /* get and save the old reference(s) */ if((sid = H5Aget_space(aid)) < 0) @@ -487,7 +491,7 @@ herr_t H5DSattach_scale(hid_t did, if (dsbuf == NULL) goto out; - if (H5Aread(aid,tid,dsbuf) < 0) + if (H5Aread(aid,ntid,dsbuf) < 0) goto out; /* close */ @@ -495,6 +499,8 @@ herr_t H5DSattach_scale(hid_t did, goto out; if (H5Aclose(aid) < 0) goto out; + if (H5Tclose(ntid) < 0) + goto out; /*------------------------------------------------------------------------- * create a new attribute @@ -586,6 +592,7 @@ out: H5E_BEGIN_TRY { H5Sclose(sid); H5Aclose(aid); + H5Tclose(ntid); H5Tclose(tid); } H5E_END_TRY; return FAIL; @@ -631,6 +638,7 @@ herr_t H5DSdetach_scale(hid_t did, hid_t did_i; /* dataset ID in REFERENCE_LIST */ hid_t sid; /* space ID */ hid_t tid = -1; /* attribute type ID */ + hid_t ntid = -1; /* attribute native type ID */ hid_t aid = -1; /* attribute ID */ int rank; /* rank of dataset */ ds_list_t *dsbuf = NULL; /* array of attribute data in the DS pointing to the dataset */ @@ -823,6 +831,9 @@ herr_t H5DSdetach_scale(hid_t did, if((tid = H5Aget_type(aid)) < 0) goto out; + + if((ntid = H5Tget_native_type(tid, H5T_DIR_DEFAULT)) < 0) + goto out; /* get and save the old reference(s) */ if((sid = H5Aget_space(aid)) < 0) @@ -835,7 +846,7 @@ herr_t H5DSdetach_scale(hid_t did, if(dsbuf == NULL) goto out; - if (H5Aread(aid,tid,dsbuf) < 0) + if (H5Aread(aid,ntid,dsbuf) < 0) goto out; for(i=0; i<nelmts; i++) @@ -879,6 +890,8 @@ herr_t H5DSdetach_scale(hid_t did, goto out; if (H5Aclose(aid) < 0) goto out; + if (H5Tclose(ntid) < 0) + goto out; /*------------------------------------------------------------------------- * check if we found the pointed dataset @@ -961,6 +974,7 @@ out: H5E_BEGIN_TRY { H5Sclose(sid); H5Aclose(aid); + H5Tclose(ntid); H5Tclose(tid); if (dsbuf) @@ -1024,6 +1038,7 @@ htri_t H5DSis_attached(hid_t did, hssize_t nelmts; hid_t sid; /* space ID */ hid_t tid = -1; /* attribute type ID */ + hid_t ntid = -1; /* attribute native type ID */ hid_t aid = -1; /* attribute ID */ int rank; /* rank of dataset */ ds_list_t *dsbuf; /* array of attribute data in the DS pointing to the dataset */ @@ -1187,7 +1202,10 @@ htri_t H5DSis_attached(hid_t did, if((tid = H5Aget_type(aid)) < 0) goto out; - + + if((ntid = H5Tget_native_type(tid, H5T_DIR_DEFAULT)) < 0) + goto out; + /* get and save the old reference(s) */ if((sid = H5Aget_space(aid)) < 0) goto out; @@ -1200,7 +1218,7 @@ htri_t H5DSis_attached(hid_t did, if (dsbuf == NULL) goto out; - if (H5Aread(aid,tid,dsbuf) < 0) + if (H5Aread(aid,ntid,dsbuf) < 0) goto out; /*------------------------------------------------------------------------- @@ -1242,6 +1260,8 @@ htri_t H5DSis_attached(hid_t did, /* close */ if (H5Sclose(sid) < 0) goto out; + if (H5Tclose(ntid) < 0) + goto out; if (H5Tclose(tid) < 0) goto out; if (H5Aclose(aid) < 0) diff --git a/hl/src/Makefile.am b/hl/src/Makefile.am index 3ee186e..0eecbbb 100644 --- a/hl/src/Makefile.am +++ b/hl/src/Makefile.am @@ -22,13 +22,13 @@ include $(top_srcdir)/config/commence.am include $(top_srcdir)/config/lt_vers.am # Add include directories to the C preprocessor flags -AM_CPPFLAGS=-I$(top_srcdir)/src +AM_CPPFLAGS+=-I$(top_srcdir)/src # This library is our main target. lib_LTLIBRARIES=libhdf5_hl.la # Add libtool numbers to the HDF5 hl library (from config/lt_vers.am) -libhdf5_hl_la_LDFLAGS= -version-info $(LT_VERS_INTERFACE):$(LT_VERS_REVISION):$(LT_VERS_AGE) +libhdf5_hl_la_LDFLAGS= -version-info $(LT_VERS_INTERFACE):$(LT_VERS_REVISION):$(LT_VERS_AGE) $(AM_LDFLAGS) libhdf5_hl_la_SOURCES=H5DS.c H5IM.c H5LT.c H5LTanalyze.c H5LTparse.c H5PT.c H5TB.c diff --git a/hl/src/Makefile.in b/hl/src/Makefile.in index 9df4093..35282d2 100644 --- a/hl/src/Makefile.in +++ b/hl/src/Makefile.in @@ -120,6 +120,18 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@ AMTAR = @AMTAR@ + +# H5_CFLAGS holds flags that should be used when building hdf5, +# but which should not be exported to h5cc for building other programs. +# AM_CFLAGS is an automake construct which should be used by Makefiles +# instead of CFLAGS, as CFLAGS is reserved solely for the user to define. +AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@ + +# Add include directories to the C preprocessor flags +AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src +AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@ +AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ +AM_LDFLAGS = @AM_LDFLAGS@ AM_MAKEFLAGS = @AM_MAKEFLAGS@ AR = @AR@ @@ -133,21 +145,18 @@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ - -# H5_CFLAGS holds flags that should be used as CFLAGS when building hdf5, -# but which shouldn't be exported to h5cc for building other programs. -CFLAGS = @CFLAGS@ @H5_CFLAGS@ +CFLAGS = @CFLAGS@ CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ CONFIG_USER = @CONFIG_USER@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ @H5_CPPFLAGS@ +CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ @H5_CXXFLAGS@ +CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ @@ -170,7 +179,7 @@ F9XMODEXT = @F9XMODEXT@ F9XMODFLAG = @F9XMODFLAG@ F9XSUFFIXFLAG = @F9XSUFFIXFLAG@ FC = @FC@ -FCFLAGS = @FCFLAGS@ @H5_FCFLAGS@ +FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ @@ -371,17 +380,14 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog # Add libtool shared library version numbers to the HDF5 library # See libtool versioning documentation online. LT_VERS_INTERFACE = 6 -LT_VERS_REVISION = 37 +LT_VERS_REVISION = 41 LT_VERS_AGE = 0 -# Add include directories to the C preprocessor flags -AM_CPPFLAGS = -I$(top_srcdir)/src - # This library is our main target. lib_LTLIBRARIES = libhdf5_hl.la # Add libtool numbers to the HDF5 hl library (from config/lt_vers.am) -libhdf5_hl_la_LDFLAGS = -version-info $(LT_VERS_INTERFACE):$(LT_VERS_REVISION):$(LT_VERS_AGE) +libhdf5_hl_la_LDFLAGS = -version-info $(LT_VERS_INTERFACE):$(LT_VERS_REVISION):$(LT_VERS_AGE) $(AM_LDFLAGS) libhdf5_hl_la_SOURCES = H5DS.c H5IM.c H5LT.c H5LTanalyze.c H5LTparse.c H5PT.c H5TB.c # Public header files (to be installed) diff --git a/hl/test/Makefile.am b/hl/test/Makefile.am index 1e8a380..fc6e969 100644 --- a/hl/test/Makefile.am +++ b/hl/test/Makefile.am @@ -22,7 +22,7 @@ include $(top_srcdir)/config/commence.am # Add include directories to C preprocessor flags -AM_CPPFLAGS=-I. -I$(srcdir) -I$(top_builddir)/src -I$(top_srcdir)/src -I$(top_builddir)/test -I$(top_srcdir)/test -I$(top_srcdir)/hl/src +AM_CPPFLAGS+=-I. -I$(srcdir) -I$(top_builddir)/src -I$(top_srcdir)/src -I$(top_builddir)/test -I$(top_srcdir)/test -I$(top_srcdir)/hl/src # The tests depend on the hdf5, hdf5 test, and hdf5_hl libraries LDADD=$(LIBH5_HL) $(LIBH5TEST) $(LIBHDF5) @@ -32,8 +32,19 @@ LDADD=$(LIBH5_HL) $(LIBH5TEST) $(LIBHDF5) TEST_PROG=test_lite test_image test_table test_ds test_packet check_PROGRAMS=$(TEST_PROG) +# These programs generate test files for the tests. They don't need to be +# compiled every time we want to test the library. However, putting +# them in a conditional causes automake to generate rules so that they +# can be built by hand. They can also be built by specifying +# --enable-build-all at configure time. +BUILD_ALL_PROGS=gen_test_ds + +if BUILD_ALL_CONDITIONAL + noinst_PROGRAMS=$(BUILD_ALL_PROGS) +endif + # Temporary files. These files are the ones created by running `make test'. -CHECK_CLEANFILES+=combine_tables[1-2].h5 test_ds[1-7].h5 test_image[1-3].h5 \ +CHECK_CLEANFILES+=combine_tables[1-2].h5 test_ds[1-9].h5 test_image[1-3].h5 \ test_lite[1-2].h5 test_table.h5 test_packet_table.h5 \ test_packet_compress.h5 diff --git a/hl/test/Makefile.in b/hl/test/Makefile.in index 8913eef..4a5aa5b 100644 --- a/hl/test/Makefile.in +++ b/hl/test/Makefile.in @@ -33,6 +33,7 @@ # # HDF5 High-Level Test Makefile(.in) # + VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ @@ -56,6 +57,7 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/commence.am \ $(top_srcdir)/config/conclude.am COPYING check_PROGRAMS = $(am__EXEEXT_1) +@BUILD_ALL_CONDITIONAL_TRUE@noinst_PROGRAMS = $(am__EXEEXT_2) TESTS = $(check_PROGRAMS) subdir = hl/test ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -68,6 +70,12 @@ CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__EXEEXT_1 = test_lite$(EXEEXT) test_image$(EXEEXT) \ test_table$(EXEEXT) test_ds$(EXEEXT) test_packet$(EXEEXT) +am__EXEEXT_2 = gen_test_ds$(EXEEXT) +PROGRAMS = $(noinst_PROGRAMS) +gen_test_ds_SOURCES = gen_test_ds.c +gen_test_ds_OBJECTS = gen_test_ds.$(OBJEXT) +gen_test_ds_LDADD = $(LDADD) +gen_test_ds_DEPENDENCIES = $(LIBH5_HL) $(LIBH5TEST) $(LIBHDF5) test_ds_SOURCES = test_ds.c test_ds_OBJECTS = test_ds.$(OBJEXT) test_ds_LDADD = $(LDADD) @@ -101,10 +109,10 @@ CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ -SOURCES = test_ds.c test_image.c test_lite.c test_packet.c \ - test_table.c -DIST_SOURCES = test_ds.c test_image.c test_lite.c test_packet.c \ - test_table.c +SOURCES = gen_test_ds.c test_ds.c test_image.c test_lite.c \ + test_packet.c test_table.c +DIST_SOURCES = gen_test_ds.c test_ds.c test_image.c test_lite.c \ + test_packet.c test_table.c ETAGS = etags CTAGS = ctags am__tty_colors = \ @@ -113,6 +121,21 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@ AMTAR = @AMTAR@ + +# H5_CFLAGS holds flags that should be used when building hdf5, +# but which should not be exported to h5cc for building other programs. +# AM_CFLAGS is an automake construct which should be used by Makefiles +# instead of CFLAGS, as CFLAGS is reserved solely for the user to define. +AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@ + +# Add include directories to C preprocessor flags +AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I. -I$(srcdir) \ + -I$(top_builddir)/src -I$(top_srcdir)/src \ + -I$(top_builddir)/test -I$(top_srcdir)/test \ + -I$(top_srcdir)/hl/src +AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@ +AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ +AM_LDFLAGS = @AM_LDFLAGS@ AM_MAKEFLAGS = @AM_MAKEFLAGS@ AR = @AR@ @@ -126,21 +149,18 @@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ - -# H5_CFLAGS holds flags that should be used as CFLAGS when building hdf5, -# but which shouldn't be exported to h5cc for building other programs. -CFLAGS = @CFLAGS@ @H5_CFLAGS@ +CFLAGS = @CFLAGS@ CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ CONFIG_USER = @CONFIG_USER@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ @H5_CPPFLAGS@ +CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ @H5_CXXFLAGS@ +CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ @@ -163,7 +183,7 @@ F9XMODEXT = @F9XMODEXT@ F9XMODFLAG = @F9XMODFLAG@ F9XSUFFIXFLAG = @F9XSUFFIXFLAG@ FC = @FC@ -FCFLAGS = @FCFLAGS@ @H5_FCFLAGS@ +FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ @@ -362,12 +382,9 @@ TRACE = perl $(top_srcdir)/bin/trace # Temporary files. These files are the ones created by running `make test'. CHECK_CLEANFILES = *.chkexe *.chklog *.clog combine_tables[1-2].h5 \ - test_ds[1-7].h5 test_image[1-3].h5 test_lite[1-2].h5 \ + test_ds[1-9].h5 test_image[1-3].h5 test_lite[1-2].h5 \ test_table.h5 test_packet_table.h5 test_packet_compress.h5 -# Add include directories to C preprocessor flags -AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_builddir)/src -I$(top_srcdir)/src -I$(top_builddir)/test -I$(top_srcdir)/test -I$(top_srcdir)/hl/src - # The tests depend on the hdf5, hdf5 test, and hdf5_hl libraries LDADD = $(LIBH5_HL) $(LIBH5TEST) $(LIBHDF5) @@ -375,6 +392,13 @@ LDADD = $(LIBH5_HL) $(LIBH5TEST) $(LIBHDF5) # order to be executed, generally most specific tests to least specific tests. TEST_PROG = test_lite test_image test_table test_ds test_packet +# These programs generate test files for the tests. They don't need to be +# compiled every time we want to test the library. However, putting +# them in a conditional causes automake to generate rules so that they +# can be built by hand. They can also be built by specifying +# --enable-build-all at configure time. +BUILD_ALL_PROGS = gen_test_ds + # Automake needs to be taught how to build lib, progs, and tests targets. # These will be filled in automatically for the most part (e.g., # lib_LIBRARIES are built for lib target), but EXTRA_LIB, EXTRA_PROG, and @@ -433,6 +457,18 @@ clean-checkPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +gen_test_ds$(EXEEXT): $(gen_test_ds_OBJECTS) $(gen_test_ds_DEPENDENCIES) + @rm -f gen_test_ds$(EXEEXT) + $(LINK) $(gen_test_ds_OBJECTS) $(gen_test_ds_LDADD) $(LIBS) test_ds$(EXEEXT): $(test_ds_OBJECTS) $(test_ds_DEPENDENCIES) @rm -f test_ds$(EXEEXT) $(LINK) $(test_ds_OBJECTS) $(test_ds_LDADD) $(LIBS) @@ -455,6 +491,7 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gen_test_ds.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_ds.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_image.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_lite.Po@am__quote@ @@ -574,7 +611,7 @@ check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am -all-am: Makefile all-local +all-am: Makefile $(PROGRAMS) all-local installdirs: install: install-am install-exec: install-exec-am @@ -604,7 +641,7 @@ maintainer-clean-generic: clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ - mostlyclean-am + clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) @@ -675,15 +712,15 @@ uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \ - clean clean-checkPROGRAMS clean-generic clean-libtool ctags \ - distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ + clean clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstPROGRAMS ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \ pdf-am ps ps-am tags uninstall uninstall-am diff --git a/hl/test/gen_test_ds.c b/hl/test/gen_test_ds.c new file mode 100644 index 0000000..573fe20 --- /dev/null +++ b/hl/test/gen_test_ds.c @@ -0,0 +1,595 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * 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. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Purpose: This program is run to generate an HDF5 data file with datasets + * that use dimension scales. + * + * Compile and run this program to generate the "test_ds_xx.h5" + * file, where xx is "le" on a little-endian machine and "be" + * on a big-endian machine. + * Move it to the test directory in the current branch. + * The test: test_foreign_scaleattached(const char *fileforeign) + * in test_ds.c will read them. + */ + +#include <stdlib.h> +#include <string.h> +#include "h5hltest.h" +#include "H5DSpublic.h" +#include "H5LTpublic.h" + +/* prototypes */ +static hid_t open_test_file(const char *fileext); +herr_t create_long_dataset(hid_t fid, const char *dsname, const char *dsidx); +herr_t test_attach_scale(hid_t fid, hid_t did, const char *name, unsigned int idx); +herr_t test_detach_scale(hid_t fid, hid_t did, const char *name, unsigned int idx); +herr_t test_set_scalename(hid_t fid, hid_t did, const char *name, const char *scalename, unsigned int idx); +herr_t test_cmp_scalename(hid_t fid, hid_t did, const char *name, const char *scalename, unsigned int idx); + +static int test_long_attachscales(const char *filename); +static int test_duplicatelong_attachscales(const char *filename); +static int test_long_scalenames(const char *filename); +static int test_samelong_scalenames(const char *filename); +static int test_foreign_scaleattached(const char *filename); + + +#define DIM_DATA 12 +#define DIM1_SIZE 3 +#define DIM2_SIZE 4 +#define DIM3_SIZE 12 +#define DIM4_SIZE 2 +#define DIM0 0 +#define DIM1 1 +#define DIM2 2 +#define DIM3 3 + +#define DATASET_NAME "dset_" +#define DS_1_NAME "ds_1_" +#define DS_2_NAME "ds_2_" +#define DS_3_NAME "ds_3_" +#define DS_4_NAME "ds_4_" + +#define SCALE_1_NAME "scalename_1_" +#define SCALE_2_NAME "scalename_2_" +#define SCALE_3_NAME "scalename_3_" +#define SCALE_4_NAME "scalename_4_" + +#define FILENAME "test_ds_" +#define FILEEXT ".h5" + +/*------------------------------------------------------------------------- + * the main program + *------------------------------------------------------------------------- + */ +int main(int argc , char **argv) +{ + int nerrors=0; + char filename[65]; + + + if (argc < 2) { + printf("Usage: gen_test [le | be]\n"); + return 1; + } + + if ( argv[1] && (strcmp("le",argv[1])!=0) && (strcmp("be",argv[1])!=0) ) { + printf("Usage: gen_test [le | be]\n"); + return 1; + } + + /* create file to be used in following tests */ + strcpy(filename, FILENAME); + strcat(filename, argv[1]); + strcat(filename, FILEEXT); + if(H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT) < 0) { + nerrors = 1; + goto error; + } + nerrors += test_long_attachscales(filename) < 0 ? 1 : 0; + nerrors += test_duplicatelong_attachscales(filename) < 0 ? 1 : 0; + nerrors += test_samelong_scalenames(filename) < 0 ? 1 : 0; + nerrors += test_foreign_scaleattached(filename) < 0 ? 1 : 0; + + + if(nerrors) goto error; + printf("Dimension scales file generation passed.\n"); + return 0; + +error: + printf("***** %d DIMENSION SCALES FILE GENERATION FAILED! *****\n",nerrors); + return 1; +} + +static hid_t open_test_file(const char *fileext) +{ + char filename[65]; + + strcpy(filename, FILENAME); + strcat(filename, fileext); + strcat(filename, FILEEXT); + + return H5Fopen(filename, H5F_ACC_RDWR, H5P_DEFAULT); +} + +/*------------------------------------------------------------------------- + * create "data" dataset + *------------------------------------------------------------------------- + */ + +herr_t create_long_dataset(hid_t fid, const char *name, const char *dsidx) +{ + int rank = 4; + int rankds = 1; + hsize_t dims[4] = {DIM1_SIZE,DIM2_SIZE,DIM3_SIZE,DIM4_SIZE}; + long buf[DIM_DATA*3*2] = {1,2,3,4,5,6,7,8,9,10,11,12, + 1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12, + 1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12, + 1,2,3,4,5,6,7,8,9,10,11,12}; + hsize_t s1_dim[1] = {DIM1_SIZE}; + hsize_t s2_dim[1] = {DIM2_SIZE}; + hsize_t s3_dim[1] = {DIM3_SIZE}; + hsize_t s4_dim[1] = {DIM4_SIZE}; + long s1_wbuf[DIM1_SIZE] = {10,20,30}; + long s2_wbuf[DIM2_SIZE] = {100,200,300,400}; + long s3_wbuf[DIM3_SIZE] = {10,10,10,20,20,20,30,30,30,40,40,40}; + long s4_wbuf[DIM4_SIZE] = {18,18}; + + /* make a dataset */ + if(H5LTmake_dataset_long(fid, name, rank, dims, buf) >= 0) { + /* make a DS dataset for the first dimension */ + char dsname[32]; + + strcpy(dsname, DS_1_NAME); + strcat(dsname, dsidx); + /* make a DS dataset for the first dimension */ + if(H5LTmake_dataset_long(fid, dsname, rankds, s1_dim, s1_wbuf) < 0) + return FAIL; + + strcpy(dsname, DS_2_NAME); + strcat(dsname, dsidx); + /* make a DS dataset for the first dimension */ + if(H5LTmake_dataset_long(fid, dsname, rankds, s2_dim, s2_wbuf) < 0) + return FAIL; + + strcpy(dsname, DS_3_NAME); + strcat(dsname, dsidx); + /* make a DS dataset for the first dimension */ + if(H5LTmake_dataset_long(fid, dsname, rankds, s3_dim, s3_wbuf) < 0) + return FAIL; + + strcpy(dsname, DS_4_NAME); + strcat(dsname, dsidx); + /* make a DS dataset for the first dimension */ + if(H5LTmake_dataset_long(fid, dsname, rankds, s4_dim, s4_wbuf) < 0) + return FAIL; + } + else + return FAIL; + return SUCCEED; +} + +herr_t test_attach_scale(hid_t fid, hid_t did, const char *name, unsigned int idx) +{ + herr_t ret_value = FAIL; + hid_t dsid = -1; + + if((dsid = H5Dopen2(fid, name, H5P_DEFAULT)) >= 0) { + if(H5DSis_attached(did, dsid, idx) == 0) { + if(H5DSattach_scale(did, dsid, idx) >= 0) { + if(H5DSis_attached(did, dsid, idx) > 0) { + /* printf(" scale attached "); */ + ret_value = SUCCEED; + } + else if(H5DSis_attached(did, dsid, idx) == 0) { + printf(" scale not attached "); + } + } + } + if(H5Dclose(dsid) < 0) + ret_value = FAIL; + } + + return ret_value; +} + +herr_t test_detach_scale(hid_t fid, hid_t did, const char *name, unsigned int idx) +{ + herr_t ret_value = FAIL; + hid_t dsid = -1; + + if((dsid = H5Dopen2(fid, name, H5P_DEFAULT)) >= 0) { + if(H5DSis_attached(did, dsid, idx) == 1) { + if(H5DSdetach_scale(did, dsid, idx) >= 0) { + if(H5DSis_attached(did, dsid, idx) == 0) { + ret_value = SUCCEED; + } + } + } + if(H5Dclose(dsid) < 0) + ret_value = FAIL; + } + + return ret_value; +} + +herr_t test_set_scalename(hid_t fid, hid_t did, const char *name, const char *scalename, unsigned int idx) +{ + herr_t ret_value = FAIL; + hid_t dsid = -1; + + if((dsid = H5Dopen2(fid, name, H5P_DEFAULT)) >= 0) { + if(H5DSis_attached(did, dsid, idx) == 1) { + if(H5DSset_scale(dsid, scalename) >= 0) { + if(H5DSis_attached(did, dsid, idx) == 1) { + ret_value = SUCCEED; + } + } + } + if(H5Dclose(dsid) < 0) + ret_value = FAIL; + } + + return ret_value; +} + +herr_t test_cmp_scalename(hid_t fid, hid_t did, const char *name, const char *scalename, unsigned int idx) +{ + herr_t ret_value = FAIL; + hid_t dsid = -1; + ssize_t name_len; + char *name_out=NULL; + + if((dsid = H5Dopen2(fid, name, H5P_DEFAULT)) >= 0) { + if(H5DSis_attached(did, dsid, idx) == 1) { + if((name_len=H5DSget_scale_name(dsid,NULL,(size_t)0)) > 0) { + name_out = (char*)malloc((size_t)name_len * sizeof (char)); + if(name_out != NULL) { + if(H5DSget_scale_name(dsid, name_out, (size_t)name_len) >= 0) { + if(strcmp(scalename,name_out)==0) { + ret_value = SUCCEED; + } + free(name_out); + name_out=NULL; + } + } + } + } + if(H5Dclose(dsid) < 0) + ret_value = FAIL; + } + + return ret_value; +} + +static int test_long_attachscales(const char *filename) +{ + hid_t fid = -1; + hid_t did = -1; + char dsname[32]; + char scalename[32]; + strcpy(dsname, DATASET_NAME); + strcat(dsname, "al"); + + TESTING2("test_long_attachscales"); + + if((fid = H5Fopen(filename, H5F_ACC_RDWR, H5P_DEFAULT)) < 0) + goto out; + + /* make a dataset */ + if(create_long_dataset(fid, dsname, "al") < 0) + goto out; + + if((did = H5Dopen2(fid, dsname, H5P_DEFAULT)) >= 0) { + strcpy(scalename, DS_1_NAME); + strcat(scalename, "al"); + if(test_attach_scale(fid, did, scalename, DIM0) < 0) + goto out; + + strcpy(scalename, DS_2_NAME); + strcat(scalename, "al"); + if(test_attach_scale(fid, did, scalename, DIM1) < 0) + goto out; + + strcpy(scalename, DS_3_NAME); + strcat(scalename, "al"); + if(test_attach_scale(fid, did, scalename, DIM2) < 0) + goto out; + + strcpy(scalename, DS_4_NAME); + strcat(scalename, "al"); + if(test_attach_scale(fid, did, scalename, DIM3) < 0) + goto out; + + if(H5Dclose(did) < 0) + goto out; + } + else + goto out; + + PASSED(); + + H5Fclose(fid); + return SUCCEED; + +out: + H5E_BEGIN_TRY { + H5Dclose(did); + H5Fclose(fid); + } H5E_END_TRY; + + H5_FAILED(); + + return FAIL; +} + +static int test_duplicatelong_attachscales(const char *filename) +{ + hid_t fid = -1; + hid_t did = -1; + char dsname[32]; + char scalename[32]; + strcpy(dsname, DATASET_NAME); + strcat(dsname, "al2"); + + TESTING2("test_duplicatelong_attachscales"); + + if((fid = H5Fopen(filename, H5F_ACC_RDWR, H5P_DEFAULT)) < 0) + goto out; + + /* make a dataset 2 */ + if(create_long_dataset(fid, dsname, "al2") < 0) + goto out; + + if((did = H5Dopen2(fid, dsname, H5P_DEFAULT)) >= 0) { + strcpy(scalename, DS_1_NAME); + strcat(scalename, "al"); + if(test_attach_scale(fid, did, scalename, DIM0) < 0) + goto out; + + strcpy(scalename, DS_2_NAME); + strcat(scalename, "al"); + if(test_attach_scale(fid, did, scalename, DIM1) < 0) + goto out; + + strcpy(scalename, DS_3_NAME); + strcat(scalename, "al"); + if(test_attach_scale(fid, did, scalename, DIM2) < 0) + goto out; + + strcpy(scalename, DS_4_NAME); + strcat(scalename, "al"); + if(test_attach_scale(fid, did, scalename, DIM3) < 0) + goto out; + + if(H5Dclose(did) < 0) + goto out; + } + else + goto out; + + PASSED(); + + H5Fclose(fid); + return SUCCEED; + +out: + H5E_BEGIN_TRY { + H5Dclose(did); + H5Fclose(fid); + } H5E_END_TRY; + + H5_FAILED(); + + return FAIL; +} + +static int test_long_scalenames(const char *filename) { + hid_t fid = -1; + hid_t did = -1; + char dsname[32]; + char scalename[32]; + char name[32]; + strcpy(dsname, DATASET_NAME); + strcat(dsname, "al"); + + if((fid = H5Fopen(filename, H5F_ACC_RDWR, H5P_DEFAULT)) < 0) + goto out; + + TESTING2("set long scale/cmp scale name"); + if((did = H5Dopen2(fid, dsname, H5P_DEFAULT)) >= 0) { + strcpy(scalename, DS_1_NAME); + strcat(scalename, "al"); + strcpy(name, SCALE_1_NAME); + strcat(name, "al"); + if(test_set_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + strcpy(scalename, DS_2_NAME); + strcat(scalename, "al"); + strcpy(name, SCALE_2_NAME); + strcat(name, "al"); + if(test_set_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + strcpy(scalename, DS_3_NAME); + strcat(scalename, "al"); + strcpy(name, SCALE_3_NAME); + strcat(name, "al"); + if(test_set_scalename(fid, did, scalename, name, DIM2) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM2) < 0) + goto out; + + strcpy(scalename, DS_4_NAME); + strcat(scalename, "al"); + strcpy(name, SCALE_4_NAME); + strcat(name, "al"); + if(test_set_scalename(fid, did, scalename, name, DIM3) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM3) < 0) + goto out; + + if(H5Dclose(did) < 0) + goto out; + } + else + goto out; + + PASSED(); + + H5Fclose(fid); + return SUCCEED; + +out: + H5E_BEGIN_TRY { + H5Dclose(did); + H5Fclose(fid); + } H5E_END_TRY; + + H5_FAILED(); + + return FAIL; +} + +static int test_samelong_scalenames(const char *filename) { + hid_t fid = -1; + hid_t did = -1; + char dsname[32]; + char scalename[32]; + char name[32]; + + strcpy(dsname, DATASET_NAME); + strcat(dsname, "al2"); + + if((fid = open_test_file(filename)) < 0) + goto out; + + TESTING2("set same long scale/cmp scale name"); + if((did = H5Dopen2(fid, dsname, H5P_DEFAULT)) >= 0) { + strcpy(scalename, DS_1_NAME); + strcat(scalename, "al"); + strcpy(name, DS_1_NAME); + strcat(name, "al"); + if(test_set_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + strcpy(scalename, DS_2_NAME); + strcat(scalename, "al"); + strcpy(name, DS_2_NAME); + strcat(name, "al"); + if(test_set_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + strcpy(scalename, DS_3_NAME); + strcat(scalename, "al"); + strcpy(name, DS_3_NAME); + strcat(name, "al"); + if(test_set_scalename(fid, did, scalename, name, DIM2) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM2) < 0) + goto out; + + strcpy(scalename, DS_4_NAME); + strcat(scalename, "al"); + strcpy(name, DS_4_NAME); + strcat(name, "al"); + if(test_set_scalename(fid, did, scalename, name, DIM3) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM3) < 0) + goto out; + + if(H5Dclose(did) < 0) + goto out; + } + else + goto out; + + PASSED(); + + H5Fclose(fid); + return SUCCEED; + +out: + H5E_BEGIN_TRY { + H5Dclose(did); + H5Fclose(fid); + } H5E_END_TRY; + + H5_FAILED(); + + return FAIL; +} + +static int test_foreign_scaleattached(const char *filename) +{ + herr_t ret_value = FAIL; + hid_t fid = -1; + hid_t did = -1; + hid_t dsid = -1; + + TESTING2("test_foreign_scaleattached"); + + if((fid = H5Fopen(filename, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) + goto out; + + if((did = H5Dopen2(fid, "/dset_al", H5P_DEFAULT)) >= 0) { + if((dsid = H5Dopen2(fid, "/ds_4_al", H5P_DEFAULT)) >= 0) { + if(H5DSis_attached(did, dsid, 3) == 1) { + ret_value = SUCCEED; + } + if(H5Dclose(dsid) < 0) + goto out; + } + if(H5Dclose(did) < 0) + goto out; + } + else + goto out; + + if(ret_value == FAIL) + goto out; + + PASSED(); + + H5Fclose(fid); + return 0; + +out: + H5E_BEGIN_TRY { + H5Dclose(did); + H5Fclose(fid); + } H5E_END_TRY; + + H5_FAILED(); + + return FAIL; +} diff --git a/hl/test/test_ds.c b/hl/test/test_ds.c index 6951619..7e0f20e 100644 --- a/hl/test/test_ds.c +++ b/hl/test/test_ds.c @@ -28,6 +28,49 @@ static herr_t op_continue(hid_t did, unsigned dim, hid_t dsid, void *visitor_dat static herr_t op_stop(hid_t did, unsigned dim, hid_t dsid, void *visitor_data); /* prototypes */ +static int create_test_file(const char *fileext); +static int open_test_file(const char *fileext); +herr_t create_char_dataset(hid_t fid, const char *dsidx, int fulldims); +herr_t create_short_dataset(hid_t fid, const char *dsidx, int fulldims); +herr_t create_int_dataset(hid_t fid, const char *dsidx, int fulldims); +herr_t create_long_dataset(hid_t fid, const char *dsname, const char *dsidx, int fulldims); +herr_t create_float_dataset(hid_t fid, const char *dsidx, int fulldims); +herr_t create_DS1_char_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, char *s_wbuf, char *s1_wbuf); +herr_t create_DS2_char_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, char *s_wbuf, char *s1_wbuf, char *s2_wbuf); +herr_t create_DS3_char_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, char *s_wbuf, char *s1_wbuf, char *s2_wbuf, char *s3_wbuf); +herr_t create_DS1_short_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, short *s_wbuf, short *s1_wbuf); +herr_t create_DS2_short_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, short *s_wbuf, short *s1_wbuf, short *s2_wbuf); +herr_t create_DS3_short_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, short *s_wbuf, short *s1_wbuf, short *s2_wbuf, short *s3_wbuf); +herr_t create_DS1_int_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, int *s_wbuf, int *s1_wbuf); +herr_t create_DS2_int_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, int *s_wbuf, int *s1_wbuf, int *s2_wbuf); +herr_t create_DS3_int_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, int *s_wbuf, int *s1_wbuf, int *s2_wbuf, int *s3_wbuf); +herr_t create_DS1_long_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, long *s_wbuf, long *s1_wbuf); +herr_t create_DS2_long_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, long *s_wbuf, long *s1_wbuf, long *s2_wbuf); +herr_t create_DS3_long_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, long *s_wbuf, long *s1_wbuf, long *s2_wbuf, long *s3_wbuf); +herr_t create_DS4_long_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, long *s_wbuf, long *s1_wbuf, long *s2_wbuf, long *s3_wbuf, long *s4_wbuf); +herr_t create_DS1_float_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, float *s_wbuf, float *s1_wbuf); +herr_t create_DS2_float_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, float *s_wbuf, float *s1_wbuf, float *s2_wbuf); +herr_t create_DS3_float_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, float *s_wbuf, float *s1_wbuf, float *s2_wbuf, float *s3_wbuf); +herr_t test_attach_scale(hid_t fid, hid_t did, const char *name, unsigned int idx); +herr_t test_detach_scale(hid_t fid, hid_t did, const char *name, unsigned int idx); +herr_t test_set_scalename(hid_t fid, hid_t did, const char *name, const char *scalename, unsigned int idx); +herr_t test_cmp_scalename(hid_t fid, hid_t did, const char *name, const char *scalename, unsigned int idx); + +static int test_char_attachscales(const char *fileext); +static int test_short_attachscales(const char *fileext); +static int test_int_attachscales(const char *fileext); +static int test_long_attachscales(const char *fileext); +static int test_duplicatelong_attachscales(const char *fileext); +static int test_float_attachscales(const char *fileext); +static int test_numberofscales(const char *fileext); +static int test_char_scalenames(const char *fileext); +static int test_short_scalenames(const char *fileext); +static int test_int_scalenames(const char *fileext); +static int test_long_scalenames(const char *fileext); +static int test_samelong_scalenames(const char *fileext); +static int test_float_scalenames(const char *fileext); +static int test_foreign_scaleattached(const char *fileforeign); + static int test_simple(void); static int test_errors(void); static int test_errors2(void); @@ -42,32 +85,55 @@ static int read_data( const char* fname, int ndims, hsize_t *dims, float **buf ) #define DIM_DATA 12 #define DIM1_SIZE 3 #define DIM2_SIZE 4 -#define DIM3_SIZE 2 +#define DIM3_SIZE 12 +#define DIM4_SIZE 2 #define DIM0 0 #define DIM1 1 - -#define DS_1_NAME "ds_a_1" -#define DS_11_NAME "ds_a_11" -#define DS_2_NAME "ds_a_2" -#define DS_21_NAME "ds_a_21" -#define DS_22_NAME "ds_a_22" - -#define SCALE_1_NAME "Latitude set 0" -#define SCALE_11_NAME "Latitude set 1" -#define SCALE_2_NAME "Longitude set 0" -#define SCALE_21_NAME "Longitude set 1" -#define SCALE_22_NAME "Longitude set 2" +#define DIM2 2 +#define DIM3 3 + +#define DATASET_NAME "dset_" +#define DS_1_NAME "ds_1_" +#define DS_11_NAME "ds_11_" +#define DS_2_NAME "ds_2_" +#define DS_21_NAME "ds_21_" +#define DS_22_NAME "ds_22_" +#define DS_3_NAME "ds_3_" +#define DS_31_NAME "ds_31_" +#define DS_32_NAME "ds_32_" +#define DS_33_NAME "ds_33_" +#define DS_4_NAME "ds_4_" +#define DS_41_NAME "ds_41_" +#define DS_42_NAME "ds_42_" +#define DS_43_NAME "ds_43_" +#define DS_44_NAME "ds_44_" + +#define SCALE_1_NAME "scalename_1_" +#define SCALE_11_NAME "scalename_11_" +#define SCALE_2_NAME "scalename_2_" +#define SCALE_21_NAME "scalename_21_" +#define SCALE_22_NAME "scalename_22_" +#define SCALE_3_NAME "scalename_3_" +#define SCALE_31_NAME "scalename_31_" +#define SCALE_32_NAME "scalename_32_" +#define SCALE_33_NAME "scalename_33_" +#define SCALE_4_NAME "scalename_4_" #define DIM0_LABEL "Latitude" #define DIM1_LABEL "Longitude" -#define FILE1 "test_ds1.h5" -#define FILE2 "test_ds2.h5" -#define FILE3 "test_ds3.h5" -#define FILE4 "test_ds4.h5" -#define FILE5 "test_ds5.h5" -#define FILE6 "test_ds6.h5" -#define FILE7 "test_ds7.h5" +#define FOREIGN_FILE1 "test_ds_le.h5" +#define FOREIGN_FILE2 "test_ds_be.h5" +#define FILENAME "test_ds" +#define FILEEXT ".h5" + +#define FILE1 "test_ds3.h5" +#define FILE2 "test_ds4.h5" +#define FILE3 "test_ds5.h5" +#define FILE4 "test_ds6.h5" +#define FILE5 "test_ds7.h5" +#define FILE6 "test_ds8.h5" +#define FILE7 "test_ds9.h5" /*------------------------------------------------------------------------- * the main program @@ -77,6 +143,33 @@ int main(void) { int nerrors=0; + /* create file to be used in following tests */ + if(create_test_file("1") < 0) { + nerrors = 1; + goto error; + } + nerrors += test_char_attachscales("1") < 0 ? 1 : 0; + nerrors += test_short_attachscales("1") < 0 ? 1 : 0; + nerrors += test_int_attachscales("1") < 0 ? 1 : 0; + nerrors += test_long_attachscales("1") < 0 ? 1 : 0; + nerrors += test_float_attachscales("1") < 0 ? 1 : 0; + nerrors += test_char_scalenames("1") < 0 ? 1 : 0; + nerrors += test_short_scalenames("1") < 0 ? 1 : 0; + nerrors += test_int_scalenames("1") < 0 ? 1 : 0; + nerrors += test_long_scalenames("1") < 0 ? 1 : 0; + nerrors += test_float_scalenames("1") < 0 ? 1 : 0; + nerrors += test_numberofscales("1") < 0 ? 1 : 0; + if(create_test_file("2") < 0) { + nerrors = 1; + goto error; + } + nerrors += test_long_attachscales("2") < 0 ? 1 : 0; + nerrors += test_duplicatelong_attachscales("2") < 0 ? 1 : 0; + nerrors += test_samelong_scalenames("2") < 0 ? 1 : 0; + nerrors += test_foreign_scaleattached(FOREIGN_FILE1) < 0 ? 1 : 0; + nerrors += test_foreign_scaleattached(FOREIGN_FILE2) < 0 ? 1 : 0; + +/* the following tests have not been rewritten to match those above */ nerrors += test_simple() < 0 ?1:0; nerrors += test_errors() < 0 ?1:0; nerrors += test_errors2() < 0 ?1:0; @@ -114,44 +207,2026 @@ error: *------------------------------------------------------------------------- */ +static hid_t create_test_file(const char *fileext) +{ + char filename[65]; + + strcpy(filename, FILENAME); + strcat(filename, fileext); + strcat(filename, FILEEXT); + return H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); +} -static int test_simple(void) +static hid_t open_test_file(const char *fileext) { - hid_t fid = -1; /* file ID */ - hid_t did = -1; /* dataset ID */ - hid_t dsid = -1; /* DS dataset ID */ - hid_t sid = -1; /* space ID */ - hid_t gid = -1; /* group ID */ - int rank = RANK; /* rank of data dataset */ - int rankds = 1; /* rank of DS dataset */ - hsize_t dims[RANK] = {DIM1_SIZE,DIM2_SIZE}; /* size of data dataset */ - int buf[DIM_DATA] = {1,2,3,4,5,6,7,8,9,10,11,12}; /* data of data dataset */ - hsize_t s1_dim[1] = {DIM1_SIZE}; /* size of DS 1 dataset */ - hsize_t s2_dim[1] = {DIM2_SIZE}; /* size of DS 2 dataset */ - char sname[30]; /* scale name buffer */ - char dname[30]; /* dataset name */ - int s1_wbuf[DIM1_SIZE] = {10,20,30}; /* data of DS 1 dataset */ - int s11_wbuf[DIM1_SIZE] = {10,100,300}; /* data of DS 1 dataset */ - int s2_wbuf[DIM2_SIZE] = {100,200,300,400}; /* data of DS 2 dataset */ - int s21_wbuf[DIM2_SIZE] = {10,20,30,40}; /* data of DS 2 dataset */ - int s22_wbuf[DIM2_SIZE] = {5,10,50,300}; /* data of DS 2 dataset */ - char dim0_label[16]; /* read label for DIM 0 */ - char dim1_label[16]; /* read label for DIM 1 */ - char *dim0_labeld; /* read label for DIM 0 */ - char *dim1_labeld; /* read label for DIM 1 */ - char dim0_labels[3]; /* read label for DIM 0 */ - char dim1_labels[3]; /* read label for DIM 1 */ - ssize_t dim0_label_size; /* lenght of label buffer */ - ssize_t dim1_label_size; /* lenght of label buffer */ - unsigned int dim; /* dataset dimension index */ - int scale_idx; /* scale index */ + char filename[65]; + + strcpy(filename, FILENAME); + strcat(filename, fileext); + strcat(filename, FILEEXT); + + return H5Fopen(filename, H5F_ACC_RDWR, H5P_DEFAULT); +} + +/*------------------------------------------------------------------------- + * create "data" dataset + *------------------------------------------------------------------------- + */ +herr_t create_char_dataset(hid_t fid, const char *dsidx, int fulldims) +{ + int rank = 3; + int rankds = 1; + hsize_t dims[3] = {DIM1_SIZE,DIM2_SIZE,DIM3_SIZE}; + char buf[DIM_DATA*3] = {1,2,3,4,5,6,7,8,9,10,11,12, + 1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12}; + hsize_t s1_dim[1] = {DIM1_SIZE}; + hsize_t s2_dim[1] = {DIM2_SIZE}; + hsize_t s3_dim[1] = {DIM3_SIZE}; + char s1_wbuf[DIM1_SIZE] = {1,2,3}; + char s11_wbuf[DIM1_SIZE] = {10,20,30}; + char s2_wbuf[DIM2_SIZE] = {10,20,30,40}; + char s21_wbuf[DIM2_SIZE] = {1,2,3,4}; + char s22_wbuf[DIM2_SIZE] = {5,10,50,100}; + char s3_wbuf[DIM3_SIZE] = {10,10,10,20,20,20,30,30,30,40,40,40}; + char s31_wbuf[DIM3_SIZE] = {1,1,1,2,2,2,3,3,3,4,4,4}; + char s32_wbuf[DIM3_SIZE] = {5,5,5,10,10,10,50,50,50,100,100,100}; + char s33_wbuf[DIM3_SIZE] = {6,6,6,12,12,12,53,53,53,120,120,120}; + char name[32]; + + strcpy(name, DATASET_NAME); + strcat(name, dsidx); + /* make a dataset */ + if(H5LTmake_dataset_char(fid, name, rank, dims, buf) >= 0) { + if(fulldims==0) { + /* make a DS dataset for the first dimension */ + if(create_DS1_char_datasets(fid, dsidx, rankds, s1_dim, s1_wbuf, NULL) < 0) + return FAIL; + + /* make a DS dataset for the second dimension */ + if(create_DS2_char_datasets(fid, dsidx, rankds, s2_dim, s2_wbuf, NULL, NULL) < 0) + return FAIL; + + /* make a DS dataset for the third dimension */ + if(create_DS3_char_datasets(fid, dsidx, rankds, s3_dim, s3_wbuf, NULL, NULL, NULL) < 0) + return FAIL; + } + else { + if(create_DS1_char_datasets(fid, dsidx, rankds, s1_dim, s1_wbuf, s11_wbuf) < 0) + return FAIL; + + if(create_DS2_char_datasets(fid, dsidx, rankds, s2_dim, s2_wbuf, s21_wbuf, s22_wbuf) < 0) + return FAIL; + + if(create_DS3_char_datasets(fid, dsidx, rankds, s3_dim, s3_wbuf, s31_wbuf, s32_wbuf, s33_wbuf) < 0) + return FAIL; + } + } + else + return FAIL; + return SUCCEED; +} + +herr_t create_short_dataset(hid_t fid, const char *dsidx, int fulldims) +{ + int rank = 3; + int rankds = 1; + hsize_t dims[3] = {DIM1_SIZE,DIM2_SIZE,DIM3_SIZE}; + short buf[DIM_DATA*3] = {1,2,3,4,5,6,7,8,9,10,11,12, + 1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12}; + hsize_t s1_dim[1] = {DIM1_SIZE}; + hsize_t s2_dim[1] = {DIM2_SIZE}; + hsize_t s3_dim[1] = {DIM3_SIZE}; + short s1_wbuf[DIM1_SIZE] = {10,20,30}; + short s11_wbuf[DIM1_SIZE] = {10,100,300}; + short s2_wbuf[DIM2_SIZE] = {100,200,300,400}; + short s21_wbuf[DIM2_SIZE] = {10,20,30,40}; + short s22_wbuf[DIM2_SIZE] = {5,10,50,300}; + short s3_wbuf[DIM3_SIZE] = {10,10,10,20,20,20,30,30,30,40,40,40}; + short s31_wbuf[DIM3_SIZE] = {1,1,1,2,2,2,3,3,3,4,4,4}; + short s32_wbuf[DIM3_SIZE] = {5,5,5,10,10,10,50,50,50,100,100,100}; + short s33_wbuf[DIM3_SIZE] = {6,6,6,12,12,12,53,53,53,140,140,140}; + char name[32]; + + strcpy(name, DATASET_NAME); + strcat(name, dsidx); + + /* make a dataset */ + if(H5LTmake_dataset_short(fid, name, rank, dims, buf) >= 0) { + if(fulldims==0) { + /* make a DS dataset for the first dimension */ + if(create_DS1_short_datasets(fid, dsidx, rankds, s1_dim, s1_wbuf, NULL) < 0) + return FAIL; + + /* make a DS dataset for the second dimension */ + if(create_DS2_short_datasets(fid, dsidx, rankds, s2_dim, s2_wbuf, NULL, NULL) < 0) + return FAIL; + + /* make a DS dataset for the third dimension */ + if(create_DS3_short_datasets(fid, dsidx, rankds, s3_dim, s3_wbuf, NULL, NULL, NULL) < 0) + return FAIL; + } + else { + if(create_DS1_short_datasets(fid, dsidx, rankds, s1_dim, s1_wbuf, s11_wbuf) < 0) + return FAIL; + + if(create_DS2_short_datasets(fid, dsidx, rankds, s2_dim, s2_wbuf, s21_wbuf, s22_wbuf) < 0) + return FAIL; + + if(create_DS3_short_datasets(fid, dsidx, rankds, s3_dim, s3_wbuf, s31_wbuf, s32_wbuf, s33_wbuf) < 0) + return FAIL; + } + } + else + return FAIL; + return SUCCEED; +} + +herr_t create_int_dataset(hid_t fid, const char *dsidx, int fulldims) +{ + int rank = RANK; + int rankds = 1; + hsize_t dims[RANK] = {DIM1_SIZE,DIM2_SIZE}; + int buf[DIM_DATA] = {1,2,3,4,5,6,7,8,9,10,11,12}; + hsize_t s1_dim[1] = {DIM1_SIZE}; + hsize_t s2_dim[1] = {DIM2_SIZE}; + int s1_wbuf[DIM1_SIZE] = {10,20,30}; + int s11_wbuf[DIM1_SIZE] = {10,100,300}; + int s2_wbuf[DIM2_SIZE] = {100,200,300,400}; + int s21_wbuf[DIM2_SIZE] = {10,20,30,40}; + int s22_wbuf[DIM2_SIZE] = {5,10,50,300}; + char name[32]; + + strcpy(name, DATASET_NAME); + strcat(name, dsidx); + + /* make a dataset */ + if(H5LTmake_dataset_int(fid, name, rank, dims, buf) >= 0) { + if(fulldims==0) { + /* make a DS dataset for the first dimension */ + if(create_DS1_int_datasets(fid, dsidx, rankds, s1_dim, s1_wbuf, NULL) < 0) + return FAIL; + + /* make a DS dataset for the second dimension */ + if(create_DS2_int_datasets(fid, dsidx, rankds, s2_dim, s2_wbuf, NULL, NULL) < 0) + return FAIL; + } + else { + if(create_DS1_int_datasets(fid, dsidx, rankds, s1_dim, s1_wbuf, s11_wbuf) < 0) + return FAIL; + + if(create_DS2_int_datasets(fid, dsidx, rankds, s2_dim, s2_wbuf, s21_wbuf, s22_wbuf) < 0) + return FAIL; + } + } + else + return FAIL; + return SUCCEED; +} + +herr_t create_long_dataset(hid_t fid, const char *dsname, const char *dsidx, int fulldims) +{ + int rank = 4; + int rankds = 1; + hsize_t dims[4] = {DIM1_SIZE,DIM2_SIZE,DIM3_SIZE,DIM4_SIZE}; + long buf[DIM_DATA*3*2] = {1,2,3,4,5,6,7,8,9,10,11,12, + 1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12, + 1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12, + 1,2,3,4,5,6,7,8,9,10,11,12}; + hsize_t s1_dim[1] = {DIM1_SIZE}; + hsize_t s2_dim[1] = {DIM2_SIZE}; + hsize_t s3_dim[1] = {DIM3_SIZE}; + hsize_t s4_dim[1] = {DIM4_SIZE}; + long s1_wbuf[DIM1_SIZE] = {10,20,30}; + long s11_wbuf[DIM1_SIZE] = {10,100,300}; + long s2_wbuf[DIM2_SIZE] = {100,200,300,400}; + long s21_wbuf[DIM2_SIZE] = {10,20,30,40}; + long s22_wbuf[DIM2_SIZE] = {5,10,50,300}; + long s3_wbuf[DIM3_SIZE] = {10,10,10,20,20,20,30,30,30,40,40,40}; + long s31_wbuf[DIM3_SIZE] = {1,1,1,2,2,2,3,3,3,4,4,4}; + long s32_wbuf[DIM3_SIZE] = {5,5,5,10,10,10,50,50,50,100,100,100}; + long s33_wbuf[DIM3_SIZE] = {6,6,6,12,12,12,53,53,53,140,140,140}; + long s4_wbuf[DIM4_SIZE] = {18,18}; + long s41_wbuf[DIM4_SIZE] = {8,8}; + long s42_wbuf[DIM4_SIZE] = {80,80}; + long s43_wbuf[DIM4_SIZE] = {180,180}; + long s44_wbuf[DIM4_SIZE] = {280,280}; + char name[32]; + + strcpy(name, dsname); + + /* make a dataset */ + if(H5LTmake_dataset_long(fid, name, rank, dims, buf) >= 0) { + if(fulldims==0) { + /* make a DS dataset for the first dimension */ + if(create_DS1_long_datasets(fid, dsidx, rankds, s1_dim, s1_wbuf, NULL) < 0) + return FAIL; + + /* make a DS dataset for the second dimension */ + if(create_DS2_long_datasets(fid, dsidx, rankds, s2_dim, s2_wbuf, NULL, NULL) < 0) + return FAIL; + + /* make a DS dataset for the third dimension */ + if(create_DS3_long_datasets(fid, dsidx, rankds, s3_dim, s3_wbuf, NULL, NULL, NULL) < 0) + return FAIL; + + /* make a DS dataset for the fourth dimension */ + if(create_DS4_long_datasets(fid, dsidx, rankds, s4_dim, s4_wbuf, NULL, NULL, NULL, NULL) < 0) + return FAIL; + } + else { + if(create_DS1_long_datasets(fid, dsidx, rankds, s1_dim, s1_wbuf, s11_wbuf) < 0) + return FAIL; + + if(create_DS2_long_datasets(fid, dsidx, rankds, s2_dim, s2_wbuf, s21_wbuf, s22_wbuf) < 0) + return FAIL; + + if(create_DS3_long_datasets(fid, dsidx, rankds, s3_dim, s3_wbuf, s31_wbuf, s32_wbuf, s33_wbuf) < 0) + return FAIL; + + if(create_DS4_long_datasets(fid, dsidx, rankds, s4_dim, s4_wbuf, s41_wbuf, s42_wbuf, s43_wbuf, s44_wbuf) < 0) + return FAIL; + } + } + else + return FAIL; + return SUCCEED; +} + +herr_t create_float_dataset(hid_t fid, const char *dsidx, int fulldims) +{ + int rank = RANK; + int rankds = 1; + hsize_t dims[RANK] = {DIM1_SIZE,DIM2_SIZE}; + float buf[DIM_DATA] = {1,2,3,4,5,6,7,8,9,10,11,12}; + hsize_t s1_dim[1] = {DIM1_SIZE}; + hsize_t s2_dim[1] = {DIM2_SIZE}; + float s1_wbuf[DIM1_SIZE] = {10,20,30}; + float s11_wbuf[DIM1_SIZE] = {10,100,300}; + float s2_wbuf[DIM2_SIZE] = {100,200,300,400}; + float s21_wbuf[DIM2_SIZE] = {10,20,30,40}; + float s22_wbuf[DIM2_SIZE] = {5,10,50,300}; + char name[32]; + + strcpy(name, DATASET_NAME); + strcat(name, dsidx); + + /* make a dataset */ + if(H5LTmake_dataset_float(fid, name, rank, dims, buf) >= 0) { + if(fulldims==0) { + /* make a DS dataset for the first dimension */ + if(create_DS1_float_datasets(fid, dsidx, rankds, s1_dim, s1_wbuf, NULL) < 0) + return FAIL; + + /* make a DS dataset for the second dimension */ + if(create_DS2_float_datasets(fid, dsidx, rankds, s2_dim, s2_wbuf, NULL, NULL) < 0) + return FAIL; + } + else { + if(create_DS1_float_datasets(fid, dsidx, rankds, s1_dim, s1_wbuf, s11_wbuf) < 0) + return FAIL; + + if(create_DS2_float_datasets(fid, dsidx, rankds, s2_dim, s2_wbuf, s21_wbuf, s22_wbuf) < 0) + return FAIL; + } + } + else + return FAIL; + return SUCCEED; +} + +/*------------------------------------------------------------------------- + * create 2 dimension scales datasets for first dimension + *------------------------------------------------------------------------- + */ +herr_t create_DS1_char_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, char *s_wbuf, char *s1_wbuf) +{ + char name[32]; + + strcpy(name, DS_1_NAME); + strcat(name, dsidx); + /* make a DS dataset for the first dimension */ + if(H5LTmake_dataset_char(fid, name, rankds, s_dim, s_wbuf) < 0) + return FAIL; + + if(s1_wbuf!=NULL) { + strcpy(name, DS_11_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the first dimension */ + if(H5LTmake_dataset_char(fid, name, rankds, s_dim, s1_wbuf) < 0) + return FAIL; + } + + return SUCCEED; +} + +/*------------------------------------------------------------------------- + * create 3 dimension scales datasets for second dimension + *------------------------------------------------------------------------- + */ +herr_t create_DS2_char_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, char *s_wbuf, char *s1_wbuf, char *s2_wbuf) +{ + char name[32]; + + strcpy(name, DS_2_NAME); + strcat(name, dsidx); + /* make a DS dataset for the second dimension */ + if(H5LTmake_dataset_char(fid, name, rankds, s_dim, s_wbuf) < 0) + return FAIL; + + if(s1_wbuf!=NULL) { + strcpy(name, DS_21_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_char(fid, name, rankds, s_dim, s1_wbuf) < 0) + return FAIL; + } + + if(s2_wbuf!=NULL) { + strcpy(name, DS_22_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_char(fid, name, rankds, s_dim, s2_wbuf) < 0) + return FAIL; + } + + return SUCCEED; +} + +/*------------------------------------------------------------------------- + * create 1 dimension scales datasets for third dimension of dataset + *------------------------------------------------------------------------- + */ +herr_t create_DS3_char_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, char *s_wbuf, char *s1_wbuf, char *s2_wbuf, char *s3_wbuf) +{ + char name[32]; + + strcpy(name, DS_3_NAME); + strcat(name, dsidx); + /* make a DS dataset for the first dimension */ + if(H5LTmake_dataset_char(fid, name, rankds, s_dim, s_wbuf) < 0) + return FAIL; + + if(s1_wbuf!=NULL) { + strcpy(name, DS_31_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_char(fid, name, rankds, s_dim, s1_wbuf) < 0) + return FAIL; + } + + if(s2_wbuf!=NULL) { + strcpy(name, DS_32_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_char(fid, name, rankds, s_dim, s2_wbuf) < 0) + return FAIL; + } + + if(s3_wbuf!=NULL) { + strcpy(name, DS_33_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_char(fid, name, rankds, s_dim, s3_wbuf) < 0) + return FAIL; + } + + return SUCCEED; +} + +/*------------------------------------------------------------------------- + * create 2 dimension scales datasets for first dimension + *------------------------------------------------------------------------- + */ +herr_t create_DS1_short_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, short *s_wbuf, short *s1_wbuf) +{ + char name[32]; + + strcpy(name, DS_1_NAME); + strcat(name, dsidx); + /* make a DS dataset for the first dimension */ + if(H5LTmake_dataset_short(fid, name, rankds, s_dim, s_wbuf) < 0) + return FAIL; + + if(s1_wbuf!=NULL) { + strcpy(name, DS_11_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the first dimension */ + if(H5LTmake_dataset_short(fid, name, rankds, s_dim, s1_wbuf) < 0) + return FAIL; + } + + return SUCCEED; +} + +/*------------------------------------------------------------------------- + * create 3 dimension scales datasets for second dimension + *------------------------------------------------------------------------- + */ +herr_t create_DS2_short_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, short *s_wbuf, short *s1_wbuf, short *s2_wbuf) +{ + char name[32]; + + strcpy(name, DS_2_NAME); + strcat(name, dsidx); + + /* make a DS dataset for the second dimension */ + if(H5LTmake_dataset_short(fid, name, rankds, s_dim, s_wbuf) < 0) + return FAIL; + + if(s1_wbuf!=NULL) { + strcpy(name, DS_21_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_short(fid, name, rankds, s_dim, s1_wbuf) < 0) + return FAIL; + } + + if(s2_wbuf!=NULL) { + strcpy(name, DS_22_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_short(fid, name, rankds, s_dim, s2_wbuf) < 0) + return FAIL; + } + + return SUCCEED; +} + +/*------------------------------------------------------------------------- + * create 1 dimension scales datasets for third dimension of dataset + *------------------------------------------------------------------------- + */ +herr_t create_DS3_short_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, short *s_wbuf, short *s1_wbuf, short *s2_wbuf, short *s3_wbuf) +{ + char name[32]; + + strcpy(name, DS_3_NAME); + strcat(name, dsidx); + + /* make a DS dataset for the first dimension */ + if(H5LTmake_dataset_short(fid, name, rankds, s_dim, s_wbuf) < 0) + return FAIL; + + if(s1_wbuf!=NULL) { + strcpy(name, DS_31_NAME); + strcat(name, dsidx); + /* make a DS dataset for the first dimension */ + if(H5LTmake_dataset_short(fid, name, rankds, s_dim, s1_wbuf) < 0) + return FAIL; + } + + if(s2_wbuf!=NULL) { + strcpy(name, DS_32_NAME); + strcat(name, dsidx); + /* make a DS dataset for the first dimension */ + if(H5LTmake_dataset_short(fid, name, rankds, s_dim, s2_wbuf) < 0) + return FAIL; + } + + if(s3_wbuf!=NULL) { + strcpy(name, DS_33_NAME); + strcat(name, dsidx); + /* make a DS dataset for the first dimension */ + if(H5LTmake_dataset_short(fid, name, rankds, s_dim, s3_wbuf) < 0) + return FAIL; + } + + return SUCCEED; +} + +/*------------------------------------------------------------------------- + * create 2 dimension scales datasets for first dimension + *------------------------------------------------------------------------- + */ +herr_t create_DS1_int_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, int *s_wbuf, int *s1_wbuf) +{ + char name[32]; + + strcpy(name, DS_1_NAME); + strcat(name, dsidx); + + /* make a DS dataset for the first dimension */ + if(H5LTmake_dataset_int(fid, name, rankds, s_dim, s_wbuf) < 0) + return FAIL; + + if(s1_wbuf!=NULL) { + strcpy(name, DS_11_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the first dimension */ + if(H5LTmake_dataset_int(fid, name, rankds, s_dim, s1_wbuf) < 0) + return FAIL; + } + + return SUCCEED; +} + +/*------------------------------------------------------------------------- + * create 3 dimension scales datasets for second dimension + *------------------------------------------------------------------------- + */ +herr_t create_DS2_int_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, int *s_wbuf, int *s1_wbuf, int *s2_wbuf) +{ + char name[32]; + + strcpy(name, DS_2_NAME); + strcat(name, dsidx); + + /* make a DS dataset for the second dimension */ + if(H5LTmake_dataset_int(fid, name, rankds, s_dim, s_wbuf) < 0) + return FAIL; + + if(s1_wbuf!=NULL) { + strcpy(name, DS_21_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_int(fid, name, rankds, s_dim, s1_wbuf) < 0) + return FAIL; + } + + if(s2_wbuf!=NULL) { + strcpy(name, DS_22_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_int(fid, name, rankds, s_dim, s2_wbuf) < 0) + return FAIL; + } + + return SUCCEED; +} + +/*------------------------------------------------------------------------- + * create 1 dimension scales datasets for third dimension of dataset + *------------------------------------------------------------------------- + */ +herr_t create_DS3_int_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, int *s_wbuf, int *s1_wbuf, int *s2_wbuf, int *s3_wbuf) +{ + char name[32]; + + strcpy(name, DS_3_NAME); + strcat(name, dsidx); + + /* make a DS dataset for the first dimension */ + if(H5LTmake_dataset_int(fid, name, rankds, s_dim, s_wbuf) < 0) + return FAIL; + + if(s1_wbuf!=NULL) { + strcpy(name, DS_31_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the first dimension */ + if(H5LTmake_dataset_int(fid, name, rankds, s_dim, s1_wbuf) < 0) + return FAIL; + } + + if(s2_wbuf!=NULL) { + strcpy(name, DS_32_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the first dimension */ + if(H5LTmake_dataset_int(fid, name, rankds, s_dim, s2_wbuf) < 0) + return FAIL; + } + + if(s3_wbuf!=NULL) { + strcpy(name, DS_33_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the first dimension */ + if(H5LTmake_dataset_int(fid, name, rankds, s_dim, s3_wbuf) < 0) + return FAIL; + } + + return SUCCEED; +} + +/*------------------------------------------------------------------------- + * create 2 dimension scales datasets for first dimension + *------------------------------------------------------------------------- + */ +herr_t create_DS1_long_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, long *s_wbuf, long *s1_wbuf) +{ + char name[32]; + + strcpy(name, DS_1_NAME); + strcat(name, dsidx); + + /* make a DS dataset for the first dimension */ + if(H5LTmake_dataset_long(fid, name, rankds, s_dim, s_wbuf) < 0) + return FAIL; + + if(s1_wbuf!=NULL) { + strcpy(name, DS_11_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the first dimension */ + if(H5LTmake_dataset_long(fid, name, rankds, s_dim, s1_wbuf) < 0) + return FAIL; + } + + return SUCCEED; +} + +/*------------------------------------------------------------------------- + * create 3 dimension scales datasets for second dimension + *------------------------------------------------------------------------- + */ +herr_t create_DS2_long_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, long *s_wbuf, long *s1_wbuf, long *s2_wbuf) +{ + char name[32]; + + strcpy(name, DS_2_NAME); + strcat(name, dsidx); + + /* make a DS dataset for the second dimension */ + if(H5LTmake_dataset_long(fid, name, rankds, s_dim, s_wbuf) < 0) + return FAIL; + + if(s1_wbuf!=NULL) { + strcpy(name, DS_21_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_long(fid, name, rankds, s_dim, s1_wbuf) < 0) + return FAIL; + } + + if(s2_wbuf!=NULL) { + strcpy(name, DS_22_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_long(fid, name, rankds, s_dim, s2_wbuf) < 0) + return FAIL; + } + + return SUCCEED; +} + +/*------------------------------------------------------------------------- + * create 3 dimension scales datasets for third dimension of dataset + *------------------------------------------------------------------------- + */ +herr_t create_DS3_long_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, long *s_wbuf, long *s1_wbuf, long *s2_wbuf, long *s3_wbuf) +{ + char name[32]; + + strcpy(name, DS_3_NAME); + strcat(name, dsidx); + + /* make a DS dataset for the first dimension */ + if(H5LTmake_dataset_long(fid, name, rankds, s_dim, s_wbuf) < 0) + return FAIL; + + if(s1_wbuf!=NULL) { + strcpy(name, DS_31_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_long(fid, name, rankds, s_dim, s1_wbuf) < 0) + return FAIL; + } + + if(s2_wbuf!=NULL) { + strcpy(name, DS_32_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_long(fid, name, rankds, s_dim, s2_wbuf) < 0) + return FAIL; + } + + if(s3_wbuf!=NULL) { + strcpy(name, DS_33_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_long(fid, name, rankds, s_dim, s3_wbuf) < 0) + return FAIL; + } + + return SUCCEED; +} + +/*------------------------------------------------------------------------- + * create 4 dimension scales datasets for third dimension of dataset + *------------------------------------------------------------------------- + */ +herr_t create_DS4_long_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, long *s_wbuf, long *s1_wbuf, long *s2_wbuf, long *s3_wbuf, long *s4_wbuf) +{ + char name[32]; + + strcpy(name, DS_4_NAME); + strcat(name, dsidx); + + /* make a DS dataset for the first dimension */ + if(H5LTmake_dataset_long(fid, name, rankds, s_dim, s_wbuf) < 0) + return FAIL; + + if(s1_wbuf!=NULL) { + strcpy(name, DS_41_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_long(fid, name, rankds, s_dim, s1_wbuf) < 0) + return FAIL; + } + + if(s2_wbuf!=NULL) { + strcpy(name, DS_42_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_long(fid, name, rankds, s_dim, s2_wbuf) < 0) + return FAIL; + } + + if(s3_wbuf!=NULL) { + strcpy(name, DS_43_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_long(fid, name, rankds, s_dim, s3_wbuf) < 0) + return FAIL; + } + + if(s4_wbuf!=NULL) { + strcpy(name, DS_44_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_long(fid, name, rankds, s_dim, s4_wbuf) < 0) + return FAIL; + } + + return SUCCEED; +} + +/*------------------------------------------------------------------------- + * create 2 dimension scales datasets for first dimension + *------------------------------------------------------------------------- + */ +herr_t create_DS1_float_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, float *s_wbuf, float *s1_wbuf) +{ + char name[32]; + + strcpy(name, DS_1_NAME); + strcat(name, dsidx); + + /* make a DS dataset for the first dimension */ + if(H5LTmake_dataset_float(fid, name, rankds, s_dim, s_wbuf) < 0) + return FAIL; + + if(s1_wbuf!=NULL) { + strcpy(name, DS_11_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the first dimension */ + if(H5LTmake_dataset_float(fid, name, rankds, s_dim, s1_wbuf) < 0) + return FAIL; + } + + return SUCCEED; +} + +/*------------------------------------------------------------------------- + * create 3 dimension scales datasets for second dimension + *------------------------------------------------------------------------- + */ +herr_t create_DS2_float_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, float *s_wbuf, float *s1_wbuf, float *s2_wbuf) +{ + char name[32]; + + strcpy(name, DS_2_NAME); + strcat(name, dsidx); + + /* make a DS dataset for the second dimension */ + if(H5LTmake_dataset_float(fid, name, rankds, s_dim, s_wbuf) < 0) + return FAIL; + + if(s1_wbuf!=NULL) { + strcpy(name, DS_21_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_float(fid, name, rankds, s_dim, s1_wbuf) < 0) + return FAIL; + } + + if(s2_wbuf!=NULL) { + strcpy(name, DS_22_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_float(fid, name, rankds, s_dim, s2_wbuf) < 0) + return FAIL; + } + + return SUCCEED; +} + +/*------------------------------------------------------------------------- + * create 3 dimension scales datasets for third dimension of dataset + *------------------------------------------------------------------------- + */ +herr_t create_DS3_float_datasets(hid_t fid, const char *dsidx, int rankds, hsize_t *s_dim, float *s_wbuf, float *s1_wbuf, float *s2_wbuf, float *s3_wbuf) +{ + char name[32]; + + strcpy(name, DS_3_NAME); + strcat(name, dsidx); + + /* make a DS dataset for the first dimension */ + if(H5LTmake_dataset_float(fid, name, rankds, s_dim, s_wbuf) < 0) + return FAIL; + + if(s1_wbuf!=NULL) { + strcpy(name, DS_31_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_float(fid, name, rankds, s_dim, s1_wbuf) < 0) + return FAIL; + } + + if(s2_wbuf!=NULL) { + strcpy(name, DS_32_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_float(fid, name, rankds, s_dim, s2_wbuf) < 0) + return FAIL; + } + + if(s3_wbuf!=NULL) { + strcpy(name, DS_33_NAME); + strcat(name, dsidx); + /* make a DS dataset with an alternate scale for the second dimension */ + if(H5LTmake_dataset_float(fid, name, rankds, s_dim, s3_wbuf) < 0) + return FAIL; + } + + return SUCCEED; +} + +herr_t test_attach_scale(hid_t fid, hid_t did, const char *name, unsigned int idx) +{ + herr_t ret_value = FAIL; + hid_t dsid = -1; + + if((dsid = H5Dopen2(fid, name, H5P_DEFAULT)) >= 0) { + if(H5DSis_attached(did, dsid, idx) == 0) { + if(H5DSattach_scale(did, dsid, idx) >= 0) { + if(H5DSis_attached(did, dsid, idx) > 0) { + /* printf(" scale attached "); */ + ret_value = SUCCEED; + } + else if(H5DSis_attached(did, dsid, idx) == 0) { + printf(" scale not attached "); + } + } + } + if(H5Dclose(dsid) < 0) + ret_value = FAIL; + } + + return ret_value; +} + +herr_t test_detach_scale(hid_t fid, hid_t did, const char *name, unsigned int idx) +{ + herr_t ret_value = FAIL; + hid_t dsid = -1; + + if((dsid = H5Dopen2(fid, name, H5P_DEFAULT)) >= 0) { + if(H5DSis_attached(did, dsid, idx) == 1) { + if(H5DSdetach_scale(did, dsid, idx) >= 0) { + if(H5DSis_attached(did, dsid, idx) == 0) { + ret_value = SUCCEED; + } + } + } + if(H5Dclose(dsid) < 0) + ret_value = FAIL; + } + + return ret_value; +} + +herr_t test_set_scalename(hid_t fid, hid_t did, const char *name, const char *scalename, unsigned int idx) +{ + herr_t ret_value = FAIL; + hid_t dsid = -1; + + if((dsid = H5Dopen2(fid, name, H5P_DEFAULT)) >= 0) { + if(H5DSis_attached(did, dsid, idx) == 1) { + if(H5DSset_scale(dsid, scalename) >= 0) { + if(H5DSis_attached(did, dsid, idx) == 1) { + ret_value = SUCCEED; + } + } + } + if(H5Dclose(dsid) < 0) + ret_value = FAIL; + } + + return ret_value; +} + +herr_t test_cmp_scalename(hid_t fid, hid_t did, const char *name, const char *scalename, unsigned int idx) +{ + herr_t ret_value = FAIL; + hid_t dsid = -1; + ssize_t name_len; + char *name_out=NULL; + + if((dsid = H5Dopen2(fid, name, H5P_DEFAULT)) >= 0) { + if(H5DSis_attached(did, dsid, idx) == 1) { + if((name_len=H5DSget_scale_name(dsid,NULL,(size_t)0)) > 0) { + name_out = (char*)malloc(name_len * sizeof (char)); + if(name_out != NULL) { + if(H5DSget_scale_name(dsid, name_out, (size_t)name_len) >= 0) { + if(strcmp(scalename,name_out)==0) { + ret_value = SUCCEED; + } + free(name_out); + name_out=NULL; + } + } + } + } + if(H5Dclose(dsid) < 0) + ret_value = FAIL; + } + + return ret_value; +} + +static int test_char_attachscales(const char *fileext) +{ + hid_t fid = -1; + hid_t did = -1; + char dsname[32]; + char scalename[32]; + strcpy(dsname, DATASET_NAME); + strcat(dsname, "ac"); + + TESTING2("test_char_attachscales"); + + if((fid = open_test_file(fileext)) < 0) + goto out; + + /* make a dataset */ + if(create_char_dataset(fid, "ac", 0) < 0) + goto out; + + if((did = H5Dopen2(fid, dsname, H5P_DEFAULT)) >= 0) { + strcpy(scalename, DS_1_NAME); + strcat(scalename, "ac"); + if(test_attach_scale(fid, did, scalename, DIM0) < 0) + goto out; + + strcpy(scalename, DS_2_NAME); + strcat(scalename, "ac"); + if(test_attach_scale(fid, did, scalename, DIM1) < 0) + goto out; + + strcpy(scalename, DS_3_NAME); + strcat(scalename, "ac"); + if(test_attach_scale(fid, did, scalename, DIM2) < 0) + goto out; + + if(H5Dclose(did) < 0) + goto out; + } + else + goto out; + + PASSED(); + + H5Fclose(fid); + return SUCCEED; + +out: + H5E_BEGIN_TRY { + H5Dclose(did); + H5Fclose(fid); + } H5E_END_TRY; + + H5_FAILED(); + + return FAIL; +} + +static int test_short_attachscales(const char *fileext) +{ + hid_t fid = -1; + hid_t did = -1; + char dsname[32]; + char scalename[32]; + strcpy(dsname, DATASET_NAME); + strcat(dsname, "as"); + + TESTING2("test_short_attachscales"); + + if((fid = open_test_file(fileext)) < 0) + goto out; + + /* make a dataset */ + if(create_short_dataset(fid, "as", 1) < 0) + goto out; + + if((did = H5Dopen2(fid, dsname, H5P_DEFAULT)) >= 0) { + strcpy(scalename, DS_1_NAME); + strcat(scalename, "as"); + if(test_attach_scale(fid, did, scalename, DIM0) < 0) + goto out; + + strcpy(scalename, DS_11_NAME); + strcat(scalename, "as"); + if(test_attach_scale(fid, did, scalename, DIM0) < 0) + goto out; + + strcpy(scalename, DS_2_NAME); + strcat(scalename, "as"); + if(test_attach_scale(fid, did, scalename, DIM1) < 0) + goto out; + + strcpy(scalename, DS_21_NAME); + strcat(scalename, "as"); + if(test_attach_scale(fid, did, scalename, DIM1) < 0) + goto out; + + strcpy(scalename, DS_22_NAME); + strcat(scalename, "as"); + if(test_attach_scale(fid, did, scalename, DIM1) < 0) + goto out; + + strcpy(scalename, DS_3_NAME); + strcat(scalename, "as"); + if(test_attach_scale(fid, did, scalename, DIM2) < 0) + goto out; + + strcpy(scalename, DS_31_NAME); + strcat(scalename, "as"); + if(test_attach_scale(fid, did, scalename, DIM2) < 0) + goto out; + + strcpy(scalename, DS_32_NAME); + strcat(scalename, "as"); + if(test_attach_scale(fid, did, scalename, DIM2) < 0) + goto out; + + strcpy(scalename, DS_33_NAME); + strcat(scalename, "as"); + if(test_attach_scale(fid, did, scalename, DIM2) < 0) + goto out; + + if(H5Dclose(did) < 0) + goto out; + } + else + goto out; + + PASSED(); + + H5Fclose(fid); + return SUCCEED; + +out: + H5E_BEGIN_TRY { + H5Dclose(did); + H5Fclose(fid); + } H5E_END_TRY; + + H5_FAILED(); + + return FAIL; +} + +static int test_int_attachscales(const char *fileext) +{ + hid_t fid = -1; + hid_t did = -1; + char dsname[32]; + char scalename[32]; + strcpy(dsname, DATASET_NAME); + strcat(dsname, "a"); + + TESTING2("test_int_attachscales"); + + if((fid = open_test_file(fileext)) < 0) + goto out; + + /* make a dataset */ + if(create_int_dataset(fid, "a", 1) < 0) + goto out; + + if((did = H5Dopen2(fid, dsname, H5P_DEFAULT)) >= 0) { + strcpy(scalename, DS_1_NAME); + strcat(scalename, "a"); + if(test_attach_scale(fid, did, scalename, DIM0) < 0) + goto out; + + strcpy(scalename, DS_11_NAME); + strcat(scalename, "a"); + if(test_attach_scale(fid, did, scalename, DIM0) < 0) + goto out; + + strcpy(scalename, DS_2_NAME); + strcat(scalename, "a"); + if(test_attach_scale(fid, did, scalename, DIM1) < 0) + goto out; + + strcpy(scalename, DS_21_NAME); + strcat(scalename, "a"); + if(test_attach_scale(fid, did, scalename, DIM1) < 0) + goto out; + + strcpy(scalename, DS_22_NAME); + strcat(scalename, "a"); + if(test_attach_scale(fid, did, scalename, DIM1) < 0) + goto out; + + if(H5Dclose(did) < 0) + goto out; + } + else + goto out; + + PASSED(); + + H5Fclose(fid); + return SUCCEED; + +out: + H5E_BEGIN_TRY { + H5Dclose(did); + H5Fclose(fid); + } H5E_END_TRY; + + H5_FAILED(); + + return FAIL; +} + +static int test_long_attachscales(const char *fileext) +{ + hid_t fid = -1; + hid_t did = -1; + char dsname[32]; + char scalename[32]; + strcpy(dsname, DATASET_NAME); + strcat(dsname, "al"); + + TESTING2("test_long_attachscales"); + + if((fid = open_test_file(fileext)) < 0) + goto out; + + /* make a dataset */ + if(create_long_dataset(fid, dsname, "al", 0) < 0) + goto out; + + if((did = H5Dopen2(fid, dsname, H5P_DEFAULT)) >= 0) { + strcpy(scalename, DS_1_NAME); + strcat(scalename, "al"); + if(test_attach_scale(fid, did, scalename, DIM0) < 0) + goto out; + + strcpy(scalename, DS_2_NAME); + strcat(scalename, "al"); + if(test_attach_scale(fid, did, scalename, DIM1) < 0) + goto out; + + strcpy(scalename, DS_3_NAME); + strcat(scalename, "al"); + if(test_attach_scale(fid, did, scalename, DIM2) < 0) + goto out; + + strcpy(scalename, DS_4_NAME); + strcat(scalename, "al"); + if(test_attach_scale(fid, did, scalename, DIM3) < 0) + goto out; + + if(H5Dclose(did) < 0) + goto out; + } + else + goto out; + + PASSED(); + + H5Fclose(fid); + return SUCCEED; + +out: + H5E_BEGIN_TRY { + H5Dclose(did); + H5Fclose(fid); + } H5E_END_TRY; + + H5_FAILED(); + + return FAIL; +} + +static int test_duplicatelong_attachscales(const char *fileext) +{ + hid_t fid = -1; + hid_t did = -1; + char dsname[32]; + char scalename[32]; + strcpy(dsname, DATASET_NAME); + strcat(dsname, "al2"); + + TESTING2("test_duplicatelong_attachscales"); + + if((fid = open_test_file(fileext)) < 0) + goto out; + + /* make a dataset 2 */ + if(create_long_dataset(fid, dsname, "al2", 0) < 0) + goto out; + + if((did = H5Dopen2(fid, dsname, H5P_DEFAULT)) >= 0) { + strcpy(scalename, DS_1_NAME); + strcat(scalename, "al"); + if(test_attach_scale(fid, did, scalename, DIM0) < 0) + goto out; + + strcpy(scalename, DS_2_NAME); + strcat(scalename, "al"); + if(test_attach_scale(fid, did, scalename, DIM1) < 0) + goto out; + + strcpy(scalename, DS_3_NAME); + strcat(scalename, "al"); + if(test_attach_scale(fid, did, scalename, DIM2) < 0) + goto out; + + strcpy(scalename, DS_4_NAME); + strcat(scalename, "al"); + if(test_attach_scale(fid, did, scalename, DIM3) < 0) + goto out; + + if(H5Dclose(did) < 0) + goto out; + } + else + goto out; + + PASSED(); + + H5Fclose(fid); + return SUCCEED; + +out: + H5E_BEGIN_TRY { + H5Dclose(did); + H5Fclose(fid); + } H5E_END_TRY; + + H5_FAILED(); + + return FAIL; +} + +static int test_float_attachscales(const char *fileext) +{ + hid_t fid = -1; + hid_t did = -1; + char dsname[32]; + char scalename[32]; + strcpy(dsname, DATASET_NAME); + strcat(dsname, "af"); + + TESTING2("test_float_attachscales"); + + if((fid = open_test_file(fileext)) < 0) + goto out; + + /* make a dataset */ + if(create_float_dataset(fid, "af", 1) < 0) + goto out; + + if((did = H5Dopen2(fid, dsname, H5P_DEFAULT)) >= 0) { + strcpy(scalename, DS_1_NAME); + strcat(scalename, "af"); + if(test_attach_scale(fid, did, scalename, DIM0) < 0) + goto out; + + strcpy(scalename, DS_11_NAME); + strcat(scalename, "af"); + if(test_attach_scale(fid, did, scalename, DIM0) < 0) + goto out; + + strcpy(scalename, DS_2_NAME); + strcat(scalename, "af"); + if(test_attach_scale(fid, did, scalename, DIM1) < 0) + goto out; + + strcpy(scalename, DS_21_NAME); + strcat(scalename, "af"); + if(test_attach_scale(fid, did, scalename, DIM1) < 0) + goto out; + + strcpy(scalename, DS_22_NAME); + strcat(scalename, "af"); + if(test_attach_scale(fid, did, scalename, DIM1) < 0) + goto out; + + if(H5Dclose(did) < 0) + goto out; + } + else + goto out; + + PASSED(); + + H5Fclose(fid); + return SUCCEED; + +out: + H5E_BEGIN_TRY { + H5Dclose(did); + H5Fclose(fid); + } H5E_END_TRY; + + H5_FAILED(); + + return FAIL; +} + +static int test_numberofscales(const char *fileext) +{ + hid_t fid = -1; + hid_t did = -1; int nscales; /* number of scales in DIM */ - ssize_t name_len; /* lenght of name buffer */ - char *name_out=NULL; /* scale name buffer */ - char snames[3]; /* scale name buffer */ - int i, j; + char dsname[32]; + char scalename[32]; + strcpy(dsname, DATASET_NAME); + strcat(dsname, "a"); + + TESTING2("test_numberofscales"); + + if((fid = open_test_file(fileext)) < 0) + goto out; + + if((did = H5Dopen2(fid, dsname, H5P_DEFAULT)) >= 0) { + if((nscales = H5DSget_num_scales(did, 0)) < 0) + goto out; + + if(nscales != 2) + goto out; + + if((nscales = H5DSget_num_scales(did, 1)) < 0) + goto out; + + if(nscales != 3) + goto out; + + if(H5Dclose(did) < 0) + goto out; + } + else + goto out; + + strcpy(dsname, DATASET_NAME); + strcat(dsname, "b"); + + /* make a dataset */ + if(create_int_dataset(fid, "b", 1) < 0) + goto out; + + /* make a DS dataset for the first dimension */ + if((did = H5Dopen2(fid, dsname, H5P_DEFAULT)) >= 0) { + strcpy(scalename, DS_1_NAME); + strcat(scalename, "b"); + if(test_attach_scale(fid, did, scalename, DIM0) < 0) + goto out; + + if((nscales = H5DSget_num_scales(did, 0)) < 0) + goto out; + + if(nscales != 1) + goto out; + + if((nscales = H5DSget_num_scales(did, 1)) < 0) + goto out; + + if(nscales != 0) + goto out; + + if(H5Dclose(did) < 0) + goto out; + } + else + goto out; + + PASSED(); + + H5Fclose(fid); + return SUCCEED; + +out: + H5E_BEGIN_TRY { + H5Dclose(did); + H5Fclose(fid); + } H5E_END_TRY; + + H5_FAILED(); + + return FAIL; +} + +static int test_char_scalenames(const char *fileext) { + hid_t fid = -1; + hid_t did = -1; + char dsname[32]; + char scalename[32]; + char name[32]; + strcpy(dsname, DATASET_NAME); + strcat(dsname, "ac"); + + if((fid = open_test_file(fileext)) < 0) + goto out; + + TESTING2("set char scale/cmp scale name"); + if((did = H5Dopen2(fid, dsname, H5P_DEFAULT)) >= 0) { + strcpy(scalename, DS_1_NAME); + strcat(scalename, "ac"); + strcpy(name, SCALE_1_NAME); + strcat(name, "ac"); + if(test_set_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + strcpy(scalename, DS_2_NAME); + strcat(scalename, "ac"); + strcpy(name, SCALE_2_NAME); + strcat(name, "ac"); + if(test_set_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + strcpy(scalename, DS_3_NAME); + strcat(scalename, "ac"); + strcpy(name, SCALE_3_NAME); + strcat(name, "ac"); + if(test_set_scalename(fid, did, scalename, name, DIM2) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM2) < 0) + goto out; + + if(H5Dclose(did) < 0) + goto out; + } + else + goto out; + + PASSED(); + + H5Fclose(fid); + return SUCCEED; + +out: + H5E_BEGIN_TRY { + H5Dclose(did); + H5Fclose(fid); + } H5E_END_TRY; + + H5_FAILED(); + + return FAIL; +} + +static int test_short_scalenames(const char *fileext) { + hid_t fid = -1; + hid_t did = -1; + char dsname[32]; + char scalename[32]; + char name[32]; + strcpy(dsname, DATASET_NAME); + strcat(dsname, "as"); + + if((fid = open_test_file(fileext)) < 0) + goto out; + + TESTING2("set short scale/cmp scale name"); + if((did = H5Dopen2(fid, dsname, H5P_DEFAULT)) >= 0) { + strcpy(scalename, DS_1_NAME); + strcat(scalename, "as"); + strcpy(name, SCALE_1_NAME); + strcat(name, "as"); + if(test_set_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + strcpy(scalename, DS_11_NAME); + strcat(scalename, "as"); + strcpy(name, SCALE_11_NAME); + strcat(name, "as"); + if(test_set_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + strcpy(scalename, DS_2_NAME); + strcat(scalename, "as"); + strcpy(name, SCALE_2_NAME); + strcat(name, "as"); + if(test_set_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + strcpy(scalename, DS_21_NAME); + strcat(scalename, "as"); + strcpy(name, SCALE_21_NAME); + strcat(name, "as"); + if(test_set_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + strcpy(scalename, DS_22_NAME); + strcat(scalename, "as"); + strcpy(name, SCALE_22_NAME); + strcat(name, "as"); + if(test_set_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + strcpy(scalename, DS_3_NAME); + strcat(scalename, "as"); + strcpy(name, SCALE_3_NAME); + strcat(name, "as"); + if(test_set_scalename(fid, did, scalename, name, DIM2) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM2) < 0) + goto out; + + strcpy(scalename, DS_31_NAME); + strcat(scalename, "as"); + strcpy(name, SCALE_31_NAME); + strcat(name, "as"); + if(test_set_scalename(fid, did, scalename, name, DIM2) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM2) < 0) + goto out; + + strcpy(scalename, DS_32_NAME); + strcat(scalename, "as"); + strcpy(name, SCALE_32_NAME); + strcat(name, "as"); + if(test_set_scalename(fid, did, scalename, name, DIM2) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM2) < 0) + goto out; + + strcpy(scalename, DS_33_NAME); + strcat(scalename, "as"); + strcpy(name, SCALE_33_NAME); + strcat(name, "as"); + if(test_set_scalename(fid, did, scalename, name, DIM2) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM2) < 0) + goto out; + + if(H5Dclose(did) < 0) + goto out; + } + else + goto out; + PASSED(); + + H5Fclose(fid); + return SUCCEED; + +out: + H5E_BEGIN_TRY { + H5Dclose(did); + H5Fclose(fid); + } H5E_END_TRY; + + H5_FAILED(); + + return FAIL; +} + +static int test_int_scalenames(const char *fileext) { + hid_t fid = -1; + hid_t did = -1; + char dsname[32]; + char scalename[32]; + char name[32]; + strcpy(dsname, DATASET_NAME); + strcat(dsname, "a"); + + if((fid = open_test_file(fileext)) < 0) + goto out; + + TESTING2("set int scale/cmp scale name"); + if((did = H5Dopen2(fid, dsname, H5P_DEFAULT)) >= 0) { + strcpy(scalename, DS_1_NAME); + strcat(scalename, "a"); + strcpy(name, SCALE_1_NAME); + strcat(name, "a"); + if(test_set_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + strcpy(scalename, DS_11_NAME); + strcat(scalename, "a"); + strcpy(name, SCALE_11_NAME); + strcat(name, "a"); + if(test_set_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + strcpy(scalename, DS_2_NAME); + strcat(scalename, "a"); + strcpy(name, SCALE_2_NAME); + strcat(name, "a"); + if(test_set_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + strcpy(scalename, DS_21_NAME); + strcat(scalename, "a"); + strcpy(name, SCALE_21_NAME); + strcat(name, "a"); + if(test_set_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + strcpy(scalename, DS_22_NAME); + strcat(scalename, "a"); + strcpy(name, SCALE_22_NAME); + strcat(name, "a"); + if(test_set_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + if(H5Dclose(did) < 0) + goto out; + } + else + goto out; + + PASSED(); + + H5Fclose(fid); + return 0; + +out: + H5E_BEGIN_TRY { + H5Dclose(did); + H5Fclose(fid); + } H5E_END_TRY; + + H5_FAILED(); + + return FAIL; +} + +static int test_long_scalenames(const char *fileext) { + hid_t fid = -1; + hid_t did = -1; + char dsname[32]; + char scalename[32]; + char name[32]; + strcpy(dsname, DATASET_NAME); + strcat(dsname, "al"); + + if((fid = open_test_file(fileext)) < 0) + goto out; + + TESTING2("set long scale/cmp scale name"); + if((did = H5Dopen2(fid, dsname, H5P_DEFAULT)) >= 0) { + strcpy(scalename, DS_1_NAME); + strcat(scalename, "al"); + strcpy(name, SCALE_1_NAME); + strcat(name, "al"); + if(test_set_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + strcpy(scalename, DS_2_NAME); + strcat(scalename, "al"); + strcpy(name, SCALE_2_NAME); + strcat(name, "al"); + if(test_set_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + strcpy(scalename, DS_3_NAME); + strcat(scalename, "al"); + strcpy(name, SCALE_3_NAME); + strcat(name, "al"); + if(test_set_scalename(fid, did, scalename, name, DIM2) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM2) < 0) + goto out; + + strcpy(scalename, DS_4_NAME); + strcat(scalename, "al"); + strcpy(name, SCALE_4_NAME); + strcat(name, "al"); + if(test_set_scalename(fid, did, scalename, name, DIM3) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM3) < 0) + goto out; + + if(H5Dclose(did) < 0) + goto out; + } + else + goto out; + + PASSED(); + + H5Fclose(fid); + return SUCCEED; + +out: + H5E_BEGIN_TRY { + H5Dclose(did); + H5Fclose(fid); + } H5E_END_TRY; + + H5_FAILED(); + + return FAIL; +} + +static int test_samelong_scalenames(const char *fileext) { + hid_t fid = -1; + hid_t did = -1; + char dsname[32]; + char scalename[32]; + char name[32]; + strcpy(dsname, DATASET_NAME); + strcat(dsname, "al2"); + + if((fid = open_test_file(fileext)) < 0) + goto out; + + TESTING2("set same long scale/cmp scale name"); + if((did = H5Dopen2(fid, dsname, H5P_DEFAULT)) >= 0) { + strcpy(scalename, DS_1_NAME); + strcat(scalename, "al"); + strcpy(name, DS_1_NAME); + strcat(name, "al"); + if(test_set_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + strcpy(scalename, DS_2_NAME); + strcat(scalename, "al"); + strcpy(name, DS_2_NAME); + strcat(name, "al"); + if(test_set_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + strcpy(scalename, DS_3_NAME); + strcat(scalename, "al"); + strcpy(name, DS_3_NAME); + strcat(name, "al"); + if(test_set_scalename(fid, did, scalename, name, DIM2) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM2) < 0) + goto out; + + strcpy(scalename, DS_4_NAME); + strcat(scalename, "al"); + strcpy(name, DS_4_NAME); + strcat(name, "al"); + if(test_set_scalename(fid, did, scalename, name, DIM3) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM3) < 0) + goto out; + + if(H5Dclose(did) < 0) + goto out; + } + else + goto out; + + PASSED(); + + H5Fclose(fid); + return SUCCEED; + +out: + H5E_BEGIN_TRY { + H5Dclose(did); + H5Fclose(fid); + } H5E_END_TRY; + + H5_FAILED(); + + return FAIL; +} +static int test_float_scalenames(const char *fileext) { + hid_t fid = -1; + hid_t did = -1; + char dsname[32]; + char scalename[32]; + char name[32]; + strcpy(dsname, DATASET_NAME); + strcat(dsname, "af"); + + if((fid = open_test_file(fileext)) < 0) + goto out; + + TESTING2("set float scale/cmp scale name"); + if((did = H5Dopen2(fid, dsname, H5P_DEFAULT)) >= 0) { + strcpy(scalename, DS_1_NAME); + strcat(scalename, "af"); + strcpy(name, SCALE_1_NAME); + strcat(name, "af"); + if(test_set_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + strcpy(scalename, DS_11_NAME); + strcat(scalename, "af"); + strcpy(name, SCALE_11_NAME); + strcat(name, "af"); + if(test_set_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM0) < 0) + goto out; + + strcpy(scalename, DS_2_NAME); + strcat(scalename, "af"); + strcpy(name, SCALE_2_NAME); + strcat(name, "af"); + if(test_set_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + strcpy(scalename, DS_21_NAME); + strcat(scalename, "af"); + strcpy(name, SCALE_21_NAME); + strcat(name, "af"); + if(test_set_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + strcpy(scalename, DS_22_NAME); + strcat(scalename, "af"); + strcpy(name, SCALE_22_NAME); + strcat(name, "af"); + if(test_set_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + if(test_cmp_scalename(fid, did, scalename, name, DIM1) < 0) + goto out; + + if(H5Dclose(did) < 0) + goto out; + } + else + goto out; + + PASSED(); + + H5Fclose(fid); + return 0; + +out: + H5E_BEGIN_TRY { + H5Dclose(did); + H5Fclose(fid); + } H5E_END_TRY; + + H5_FAILED(); + + return FAIL; +} + +static int test_foreign_scaleattached(const char *fileforeign) +{ + herr_t ret_value = FAIL; + hid_t fid = -1; + hid_t did = -1; + hid_t dsid = -1; + char *srcdir = getenv("srcdir"); /* the source directory */ + char filename[512]=""; /* buffer to hold name of existing file */ + + /* compose the name of the file to open, using the srcdir, if appropriate */ + if (srcdir) { + strcpy(filename,srcdir); + strcat(filename,"/"); + } + strcat(filename, fileforeign); + + TESTING2("test_foreign_scaleattached"); + + if((fid = H5Fopen(filename, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) + goto out; + + if((did = H5Dopen2(fid, "/dset_al", H5P_DEFAULT)) >= 0) { + if((dsid = H5Dopen2(fid, "/ds_4_al", H5P_DEFAULT)) >= 0) { + if(H5DSis_attached(did, dsid, 3) == 1) { + ret_value = SUCCEED; + } + if(H5Dclose(dsid) < 0) + goto out; + } + if(H5Dclose(did) < 0) + goto out; + } + else + goto out; + + if(ret_value == FAIL) + goto out; + + PASSED(); + + H5Fclose(fid); + return 0; + +out: + H5E_BEGIN_TRY { + H5Dclose(did); + H5Fclose(fid); + } H5E_END_TRY; + + H5_FAILED(); + + return FAIL; +} + +static int test_simple(void) +{ + hid_t fid = -1; + hid_t did = -1; + hid_t dsid = -1; + hid_t sid = -1; + hid_t gid = -1; + int rank = RANK; + int rankds = 1; + hsize_t dims[RANK] = {DIM1_SIZE,DIM2_SIZE}; + int buf[DIM_DATA] = {1,2,3,4,5,6,7,8,9,10,11,12}; + hsize_t s1_dim[1] = {DIM1_SIZE}; + hsize_t s2_dim[1] = {DIM2_SIZE}; + char sname[30]; + char dname[30]; + int s1_wbuf[DIM1_SIZE] = {10,20,30}; + int s11_wbuf[DIM1_SIZE] = {10,100,300}; + int s2_wbuf[DIM2_SIZE] = {100,200,300,400}; + int s21_wbuf[DIM2_SIZE] = {10,20,30,40}; + int s22_wbuf[DIM2_SIZE] = {5,10,50,300}; + char dim0_label[16]; + char dim1_label[16]; + char *dim0_labeld; + char *dim1_labeld; + char dim0_labels[3]; + char dim1_labels[3]; + ssize_t dim0_label_size; + ssize_t dim1_label_size; + unsigned int dim; + int scale_idx; + int nscales; + ssize_t name_len; + char *name_out=NULL; + char snames[3]; + int i, j; + printf("Testing API functions\n"); /*------------------------------------------------------------------------- @@ -173,33 +2248,25 @@ static int test_simple(void) goto out; /* make a DS dataset for the first dimension */ - if(H5LTmake_dataset_int(fid,DS_1_NAME,rankds,s1_dim,s1_wbuf) < 0) + if(H5LTmake_dataset_int(fid,"ds_a_1",rankds,s1_dim,s1_wbuf) < 0) goto out; /* make a DS dataset with an alternate scale for the 2nd dimension */ - if(H5LTmake_dataset_int(fid,DS_11_NAME,rankds,s1_dim,s11_wbuf) < 0) + if(H5LTmake_dataset_int(fid,"ds_a_11",rankds,s1_dim,s11_wbuf) < 0) goto out; /* make a DS dataset for the second dimension */ - if(H5LTmake_dataset_int(fid,DS_2_NAME,rankds,s2_dim,s2_wbuf) < 0) + if(H5LTmake_dataset_int(fid,"ds_a_2",rankds,s2_dim,s2_wbuf) < 0) goto out; /* make a DS dataset with an alternate scale for the 2nd dimension */ - if(H5LTmake_dataset_int(fid,DS_21_NAME,rankds,s2_dim,s21_wbuf) < 0) + if(H5LTmake_dataset_int(fid,"ds_a_21",rankds,s2_dim,s21_wbuf) < 0) goto out; /* make a DS dataset with an alternate scale for the 2nd dimension */ - if(H5LTmake_dataset_int(fid,DS_22_NAME,rankds,s2_dim,s22_wbuf) < 0) + if(H5LTmake_dataset_int(fid,"ds_a_22",rankds,s2_dim,s22_wbuf) < 0) goto out; - - /*------------------------------------------------------------------------- - * H5DSattach_scale - *------------------------------------------------------------------------- - */ - - TESTING2("attach scales"); - /* get the dataset id for "dset_a" */ if((did = H5Dopen2(fid,"dset_a", H5P_DEFAULT)) < 0) goto out; @@ -210,7 +2277,7 @@ static int test_simple(void) */ /* get the DS dataset id */ - if((dsid = H5Dopen2(fid,DS_1_NAME, H5P_DEFAULT)) < 0) + if((dsid = H5Dopen2(fid,"ds_a_1", H5P_DEFAULT)) < 0) goto out; /* attach the DS_1_NAME dimension scale to "dset_a" at dimension 0 */ @@ -227,7 +2294,7 @@ static int test_simple(void) */ /* get the DS dataset id */ - if((dsid = H5Dopen2(fid,DS_11_NAME, H5P_DEFAULT)) < 0) + if((dsid = H5Dopen2(fid,"ds_a_11", H5P_DEFAULT)) < 0) goto out; /* attach the DS_11_NAME dimension scale to "dset_a" at dimension 0 */ @@ -244,7 +2311,7 @@ static int test_simple(void) */ /* get the DS dataset id */ - if((dsid = H5Dopen2(fid,DS_2_NAME, H5P_DEFAULT)) < 0) + if((dsid = H5Dopen2(fid,"ds_a_2", H5P_DEFAULT)) < 0) goto out; /* attach the "ds2" dimension scale to "dset_a" as the 2nd dimension */ @@ -261,7 +2328,7 @@ static int test_simple(void) */ /* get the DS dataset id */ - if((dsid = H5Dopen2(fid,DS_21_NAME, H5P_DEFAULT)) < 0) + if((dsid = H5Dopen2(fid,"ds_a_21", H5P_DEFAULT)) < 0) goto out; /* attach the DS_21_NAME dimension scale to "dset_a" as the 2nd dimension */ @@ -278,7 +2345,7 @@ static int test_simple(void) */ /* get the DS dataset id */ - if((dsid = H5Dopen2(fid,DS_22_NAME, H5P_DEFAULT)) < 0) + if((dsid = H5Dopen2(fid,"ds_a_22", H5P_DEFAULT)) < 0) goto out; /* attach the "ds22" dimension scale to "dset_a" as the 2nd dimension */ @@ -289,84 +2356,10 @@ static int test_simple(void) if(H5Dclose(dsid) < 0) goto out; - - - /*------------------------------------------------------------------------- - * verify attachment - *------------------------------------------------------------------------- - */ - - if((dsid = H5Dopen2(fid,DS_1_NAME, H5P_DEFAULT)) < 0) - goto out; - if(H5DSis_attached(did,dsid,DIM0)<=0) - goto out; - if(H5Dclose(dsid)) - goto out; - - if((dsid = H5Dopen2(fid,DS_2_NAME, H5P_DEFAULT)) < 0) - goto out; - if(H5DSis_attached(did,dsid,DIM1)<=0) - goto out; - if(H5Dclose(dsid)) - goto out; - - if((dsid = H5Dopen2(fid,DS_21_NAME, H5P_DEFAULT)) < 0) - goto out; - if(H5DSis_attached(did,dsid,DIM1)<=0) - goto out; - if(H5Dclose(dsid)) - goto out; - - if((dsid = H5Dopen2(fid,DS_22_NAME, H5P_DEFAULT)) < 0) - goto out; - if(H5DSis_attached(did,dsid,DIM1)<=0) - goto out; - if(H5Dclose(dsid)) - goto out; - - /* close dataset ID of "dset_a" */ if(H5Dclose(did) < 0) goto out; - - PASSED(); - - - /*------------------------------------------------------------------------- - * H5DSget_num_scales - *------------------------------------------------------------------------- - */ - - - TESTING2("get number of scales"); - - /*------------------------------------------------------------------------- - * verify that "dset_a" has dimension scales - *------------------------------------------------------------------------- - */ - - /* get the dataset id for "dset_a" */ - if((did = H5Dopen2(fid,"dset_a", H5P_DEFAULT)) < 0) - goto out; - - /* verify that "dset_a" has 1 dimension scale at DIM 0 */ - if((nscales = H5DSget_num_scales(did,0)) < 0) - goto out; - if(nscales!=2) - goto out; - - /* verify that "dset_a" has 3 dimension scales at DIM 1 */ - if((nscales = H5DSget_num_scales(did,1)) < 0) - goto out; - if(nscales!=3) - goto out; - - /* close dataset ID of "dset_a" */ - if(H5Dclose(did) < 0) - goto out; - - /*------------------------------------------------------------------------- * create datasets: 1 "data" dataset and 1 dimension scale *------------------------------------------------------------------------- @@ -393,36 +2386,12 @@ static int test_simple(void) goto out; if(H5Dclose(dsid) < 0) goto out; - if(H5Dclose(did) < 0) - goto out; - - /*------------------------------------------------------------------------- - * verify if "dset_b" has dimension scales - *------------------------------------------------------------------------- - */ - - /* get the dataset id for "dset_b" */ - if((did = H5Dopen2(fid,"dset_b", H5P_DEFAULT)) < 0) - goto out; - - /* verify that "dset_b" has 1 dimension scale at DIM 0 */ - if((nscales = H5DSget_num_scales(did,0)) < 0) - goto out; - if(nscales!=1) - goto out; - - /* verify that "dset_b" has 0 dimension scales at DIM 1 */ - if((nscales = H5DSget_num_scales(did,1)) < 0) - goto out; - if(nscales!=0) - goto out; /* close dataset ID of "dset_b" */ if(H5Dclose(did) < 0) goto out; - PASSED(); - + /*------------------------------------------------------------------------- * H5DSdetach_scale @@ -438,23 +2407,23 @@ static int test_simple(void) */ /* make a dataset */ - if(H5LTmake_dataset_int(fid,"dset_c",rank,dims,buf) < 0) + if(H5LTmake_dataset_int(fid, "dset_c", rank, dims, buf) < 0) goto out; /* make a DS dataset for the first dimension */ - if(H5LTmake_dataset_int(fid,"ds_c_1",rankds,s1_dim,s1_wbuf) < 0) + if(H5LTmake_dataset_int(fid, "ds_c_1", rankds, s1_dim, s1_wbuf) < 0) goto out; /* make a DS dataset for the second dimension */ - if(H5LTmake_dataset_int(fid,"ds_c_2",rankds,s2_dim,s2_wbuf) < 0) + if(H5LTmake_dataset_int(fid, "ds_c_2", rankds, s2_dim, s2_wbuf) < 0) goto out; /* make a DS dataset with an alternate scale for the 2nd dimension */ - if(H5LTmake_dataset_int(fid,"ds_c_21",rankds,s2_dim,s2_wbuf) < 0) + if(H5LTmake_dataset_int(fid, "ds_c_21", rankds, s2_dim, s2_wbuf) < 0) goto out; /* make a DS dataset with an alternate scale for the 2nd dimension */ - if(H5LTmake_dataset_int(fid,"ds_c_22",rankds,s2_dim,s2_wbuf) < 0) + if(H5LTmake_dataset_int(fid, "ds_c_22", rankds, s2_dim, s2_wbuf) < 0) goto out; @@ -465,32 +2434,35 @@ static int test_simple(void) if((did = H5Dopen2(fid,"dset_c", H5P_DEFAULT)) < 0) goto out; - if((dsid = H5Dopen2(fid,"ds_c_1", H5P_DEFAULT)) < 0) goto out; - if(H5DSattach_scale(did,dsid,0) < 0) + if(H5DSattach_scale(did, dsid, 0) < 0) goto out; + if(H5Dclose(dsid) < 0) goto out; if((dsid = H5Dopen2(fid,"ds_c_2", H5P_DEFAULT)) < 0) goto out; - if(H5DSattach_scale(did,dsid,1) < 0) + if(H5DSattach_scale(did, dsid, 1) < 0) goto out; + if(H5Dclose(dsid) < 0) goto out; if((dsid = H5Dopen2(fid,"ds_c_21", H5P_DEFAULT)) < 0) goto out; - if(H5DSattach_scale(did,dsid,1) < 0) + if(H5DSattach_scale(did, dsid, 1) < 0) goto out; + if(H5Dclose(dsid) < 0) goto out; if((dsid = H5Dopen2(fid,"ds_c_22", H5P_DEFAULT)) < 0) goto out; - if(H5DSattach_scale(did,dsid,1) < 0) + if(H5DSattach_scale(did, dsid, 1) < 0) goto out; + if(H5Dclose(dsid) < 0) goto out; @@ -505,15 +2477,18 @@ static int test_simple(void) if((did = H5Dopen2(fid,"dset_c", H5P_DEFAULT)) < 0) goto out; /* verify that "dset_c" has 1 dimension scale at DIM 0 */ - if((nscales = H5DSget_num_scales(did,0)) < 0) + if((nscales = H5DSget_num_scales(did, 0)) < 0) goto out; - if(nscales!=1) + + if(nscales != 1) goto out; /* verify that "dset_c" has 3 dimension scales at DIM 1 */ - if((nscales = H5DSget_num_scales(did,1)) < 0) + if((nscales = H5DSget_num_scales(did, 1)) < 0) goto out; - if(nscales!=3) + + if(nscales != 3) goto out; + if(H5Dclose(did) < 0) goto out; @@ -531,7 +2506,7 @@ static int test_simple(void) goto out; /* detach the "ds_c_21" dimension scale to "dset_c" in DIM 1 */ - if(H5DSdetach_scale(did,dsid,1) < 0) + if(H5DSdetach_scale(did, dsid, 1) < 0) goto out; /* close DS id */ @@ -550,10 +2525,12 @@ static int test_simple(void) if((did = H5Dopen2(fid,"dset_c", H5P_DEFAULT)) < 0) goto out; /* verify that "dset_c" has 2 dimension scales at DIM 1 */ - if((nscales = H5DSget_num_scales(did,1)) < 0) + if((nscales = H5DSget_num_scales(did, 1)) < 0) goto out; - if(nscales!=2) + + if(nscales != 2) goto out; + if(H5Dclose(did) < 0) goto out; @@ -571,7 +2548,7 @@ static int test_simple(void) goto out; /* detach the "ds_c_22" dimension scale to "dset_c" in DIM 1 */ - if(H5DSdetach_scale(did,dsid,1) < 0) + if(H5DSdetach_scale(did, dsid, 1) < 0) goto out; /* close DS id */ @@ -590,10 +2567,12 @@ static int test_simple(void) if((did = H5Dopen2(fid,"dset_c", H5P_DEFAULT)) < 0) goto out; /* verify that "dset_c" has 1 dimension scale at DIM 1 */ - if((nscales = H5DSget_num_scales(did,1)) < 0) + if((nscales = H5DSget_num_scales(did, 1)) < 0) goto out; - if(nscales!=1) + + if(nscales != 1) goto out; + if(H5Dclose(did) < 0) goto out; @@ -611,7 +2590,7 @@ static int test_simple(void) goto out; /* detach the "ds_c_2" dimension scale to "dset_c" in DIM 1 */ - if(H5DSdetach_scale(did,dsid,1) < 0) + if(H5DSdetach_scale(did, dsid, 1) < 0) goto out; /* close DS id */ @@ -630,10 +2609,12 @@ static int test_simple(void) if((did = H5Dopen2(fid,"dset_c", H5P_DEFAULT)) < 0) goto out; /* verify that "dset_c" has 1 dimension scale at DIM 1 */ - if((nscales = H5DSget_num_scales(did,1)) < 0) + if((nscales = H5DSget_num_scales(did, 1)) < 0) goto out; - if(nscales!=0) + + if(nscales != 0) goto out; + if(H5Dclose(did) < 0) goto out; @@ -655,17 +2636,19 @@ static int test_simple(void) */ if((did = H5Dopen2(fid,"dset_d", H5P_DEFAULT)) < 0) goto out; - if((dsid = H5Dopen2(fid,"ds_d_1", H5P_DEFAULT)) < 0) goto out; - if(H5DSattach_scale(did,dsid,0) < 0) + if(H5DSattach_scale(did, dsid, 0) < 0) goto out; + if(H5Dclose(dsid) < 0) goto out; + if((dsid = H5Dopen2(fid,"ds_d_2", H5P_DEFAULT)) < 0) goto out; - if(H5DSattach_scale(did,dsid,1) < 0) + if(H5DSattach_scale(did, dsid, 1) < 0) goto out; + if(H5Dclose(dsid) < 0) goto out; @@ -679,7 +2662,6 @@ static int test_simple(void) if((did = H5Dopen2(fid,"dset_d", H5P_DEFAULT)) < 0) goto out; - if((dsid = H5Dopen2(fid,"ds_d_1", H5P_DEFAULT)) < 0) goto out; if(H5DSis_attached(did,dsid,DIM0)<=0) @@ -751,7 +2733,7 @@ static int test_simple(void) /* verify that "ds_d_1" has only 1 scale at DIM0 */ if((nscales = H5DSget_num_scales(did,DIM0)) < 0) goto out; - if(nscales!=1) + if(nscales != 1) goto out; /* close DS id */ @@ -790,7 +2772,7 @@ static int test_simple(void) /* verify that "ds_d_1" has no scale at DIM1 */ if((nscales = H5DSget_num_scales(did,DIM1)) < 0) goto out; - if(nscales!=0) + if(nscales != 0) goto out; /* close DS id */ @@ -825,7 +2807,7 @@ static int test_simple(void) /* verify that "ds_d_2" has only 1 scale at DIM1 */ if((nscales = H5DSget_num_scales(did,DIM0)) < 0) goto out; - if(nscales!=1) + if(nscales != 1) goto out; /* attach "ds_d_2" again in DIM 1 */ @@ -862,7 +2844,6 @@ static int test_simple(void) /* create the data space for the dataset */ if((sid = H5Screate_simple(rank,dims,NULL)) < 0) goto out; - for(i = 0; i < 5; i++) { sprintf(dname,"dset_%d",i); if((did = H5Dcreate2(gid, dname, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) @@ -950,6 +2931,7 @@ static int test_simple(void) /* close */ if(H5Sclose(sid) < 0) goto out; + if(H5Gclose(gid) < 0) goto out; @@ -993,9 +2975,9 @@ static int test_simple(void) goto out; } } - if(H5Dclose(dsid) < 0) goto out; + if(H5Dclose(did) < 0) goto out; @@ -1009,7 +2991,6 @@ static int test_simple(void) */ TESTING2("set/get label"); - if((did = H5Dopen2(fid,"dset_a", H5P_DEFAULT)) < 0) goto out; @@ -1032,7 +3013,6 @@ static int test_simple(void) goto out; if(H5DSget_label(did,DIM1,dim1_label,sizeof(dim1_label)) < 0) goto out; - if(strcmp(DIM0_LABEL,dim0_label)!=0) goto out; if(strcmp(DIM1_LABEL,dim1_label)!=0) @@ -1049,21 +3029,18 @@ static int test_simple(void) goto out; /* allocate */ - dim0_labeld = (char*)malloc(dim0_label_size * sizeof(char)); - dim1_labeld = (char*)malloc(dim1_label_size * sizeof(char)); + dim0_labeld = (char*)malloc(dim0_label_size * sizeof (char)); + dim1_labeld = (char*)malloc(dim1_label_size * sizeof (char)); if( dim0_labeld==NULL || dim1_labeld==NULL) goto out; - if(H5DSget_label(did,DIM0,dim0_labeld,(size_t)dim0_label_size) < 0) goto out; if(H5DSget_label(did,DIM1,dim1_labeld,(size_t)dim1_label_size) < 0) goto out; - if(strncmp(DIM0_LABEL,dim0_labeld,(size_t)(dim0_label_size-1))!=0) goto out; if(strncmp(DIM1_LABEL,dim1_labeld,(size_t)(dim1_label_size-1))!=0) goto out; - if(dim0_labeld) { free(dim0_labeld); @@ -1085,14 +3062,10 @@ static int test_simple(void) goto out; if(H5DSget_label(did,DIM1,dim1_labels,sizeof(dim1_labels)) < 0) goto out; - if(strncmp(DIM0_LABEL,dim0_label,sizeof(dim0_labels)-1)!=0) goto out; if(strncmp(DIM1_LABEL,dim1_label,sizeof(dim1_labels)-1)!=0) goto out; - - - if(H5Dclose(did)) goto out; @@ -1105,15 +3078,13 @@ static int test_simple(void) TESTING2("set scale/get scale name"); - - if((dsid = H5Dopen2(fid,DS_1_NAME, H5P_DEFAULT)) < 0) + if((dsid = H5Dopen2(fid,"ds_a_1", H5P_DEFAULT)) < 0) goto out; - - if(H5DSset_scale(dsid,SCALE_1_NAME) < 0) + if(H5DSset_scale(dsid,"Latitude set 0") < 0) goto out; /* verify that DS_1_NAME is a dimension scale dataset */ - if((H5DSis_scale(dsid))==0) + if((H5DSis_scale(dsid)) == 0) goto out; /*------------------------------------------------------------------------- @@ -1126,17 +3097,16 @@ static int test_simple(void) goto out; /* allocate a buffer */ - name_out = (char*)malloc(name_len * sizeof(char)); + name_out = (char*)malloc(name_len * sizeof (char)); if(name_out == NULL) goto out; /* get the scale name using this buffer */ - if(H5DSget_scale_name(dsid,name_out,(size_t)name_len) < 0) + if(H5DSget_scale_name(dsid, name_out, (size_t)name_len) < 0) goto out; - if(strcmp(SCALE_1_NAME,name_out)!=0) + if(strcmp("Latitude set 0",name_out)!=0) goto out; - if(name_out) { free(name_out); @@ -1149,10 +3119,10 @@ static int test_simple(void) */ /* get the scale name using this buffer */ - if(H5DSget_scale_name(dsid,sname,sizeof(sname)) < 0) + if(H5DSget_scale_name(dsid, sname, sizeof (sname)) < 0) goto out; - if(strcmp(SCALE_1_NAME,sname)!=0) + if(strcmp("Latitude set 0",sname)!=0) goto out; /*------------------------------------------------------------------------- @@ -1161,12 +3131,11 @@ static int test_simple(void) */ /* get the scale name using this buffer */ - if(H5DSget_scale_name(dsid,snames,sizeof(snames)) < 0) + if(H5DSget_scale_name(dsid, snames, sizeof (snames)) < 0) goto out; - if(strncmp(SCALE_1_NAME,snames,sizeof(snames)-1)!=0) + if(strncmp("Latitude set 0",snames,sizeof(snames)-1)!=0) goto out; - if(H5Dclose(dsid)) goto out; @@ -1175,35 +3144,34 @@ static int test_simple(void) *------------------------------------------------------------------------- */ - if((dsid = H5Dopen2(fid,DS_11_NAME, H5P_DEFAULT)) < 0) + if((dsid = H5Dopen2(fid,"ds_a_11", H5P_DEFAULT)) < 0) goto out; - if(H5DSset_scale(dsid,SCALE_11_NAME) < 0) + if(H5DSset_scale(dsid,"Latitude set 1") < 0) goto out; if(H5Dclose(dsid)) goto out; - if((dsid = H5Dopen2(fid,DS_2_NAME, H5P_DEFAULT)) < 0) + if((dsid = H5Dopen2(fid,"ds_a_2", H5P_DEFAULT)) < 0) goto out; - if(H5DSset_scale(dsid,SCALE_2_NAME) < 0) + if(H5DSset_scale(dsid,"Longitude set 0") < 0) goto out; if(H5Dclose(dsid)) goto out; - if((dsid = H5Dopen2(fid,DS_21_NAME, H5P_DEFAULT)) < 0) + if((dsid = H5Dopen2(fid,"ds_a_21", H5P_DEFAULT)) < 0) goto out; - if(H5DSset_scale(dsid,SCALE_21_NAME) < 0) + if(H5DSset_scale(dsid,"Longitude set 1") < 0) goto out; if(H5Dclose(dsid)) goto out; - if((dsid = H5Dopen2(fid,DS_22_NAME, H5P_DEFAULT)) < 0) + if((dsid = H5Dopen2(fid,"ds_a_22", H5P_DEFAULT)) < 0) goto out; - if(H5DSset_scale(dsid,SCALE_22_NAME) < 0) + if(H5DSset_scale(dsid,"Longitude set 2") < 0) goto out; if(H5Dclose(dsid)) goto out; - PASSED(); /*------------------------------------------------------------------------- @@ -1223,7 +3191,6 @@ static int test_simple(void) /* get the dataset id for "dset_a" */ if((did = H5Dopen2(fid,"dset_a", H5P_DEFAULT)) < 0) goto out; - dim = 0; /* iterate trough the 1st dimension of "dset_a" and verify that its DS is valid */ @@ -1234,7 +3201,6 @@ static int test_simple(void) start at DS index 2 */ dim = 1; scale_idx = 2; - if(H5DSiterate_scales(did,dim,&scale_idx,verify_scale,NULL) < 0) goto out; @@ -1252,7 +3218,6 @@ static int test_simple(void) /* get the dataset id for "dset_a" */ if((did = H5Dopen2(fid,"dset_a", H5P_DEFAULT)) < 0) goto out; - dim = 0; /* iterate trough the 1st dimension of "dset_a" and read the DS */ @@ -1263,8 +3228,7 @@ static int test_simple(void) start at DS index 2 */ dim = 1; scale_idx = 2; - - if(H5DSiterate_scales(did,dim,&scale_idx,read_scale,s22_wbuf) < 0) + if(H5DSiterate_scales(did, dim, &scale_idx, read_scale, s22_wbuf) < 0) goto out; /* close dataset ID of "dset_a" */ @@ -1286,16 +3250,15 @@ static int test_simple(void) goto out; /* get rank */ - if((rank=H5Sget_simple_extent_ndims(sid)) < 0) + if((rank = H5Sget_simple_extent_ndims(sid)) < 0) goto out; /* get dimensions of dataset */ if(H5Sget_simple_extent_dims(sid,dims,NULL) < 0) goto out; - { - int match_size; /* does this scale size matches the dataset DIM size */ - int idx=0; /* scale index to start iterating, on return, index where iterator stoped */ + int match_size; /* does this scale size matches the dataset DIM size */ + int idx = 0; /* scale index to start iterating, on return, index where iterator stoped */ /* iterate trough all the dimensions */ for(dim=0; dim<(unsigned)rank; dim++) @@ -1330,12 +3293,14 @@ static int test_simple(void) * create 3 datasets: 1 "data" dataset and dimension scales (some are empty) *------------------------------------------------------------------------- */ - if(H5LTmake_dataset_int(fid,"dset_f",rank,dims,buf) < 0) + if(H5LTmake_dataset_int(fid, "dset_f", rank, dims, buf) < 0) goto out; + if(H5LTmake_dataset_int(fid,"ds_f_1",rankds,s1_dim,NULL) < 0) goto out; - if(H5LTmake_dataset_int(fid,"ds_f_11",rankds,s1_dim,s1_wbuf) < 0) + if(H5LTmake_dataset_int(fid, "ds_f_11", rankds, s1_dim, s1_wbuf) < 0) goto out; + if(H5LTmake_dataset_int(fid,"ds_f_2",rankds,s2_dim,NULL) < 0) goto out; @@ -1345,19 +3310,20 @@ static int test_simple(void) */ if((did = H5Dopen2(fid,"dset_f", H5P_DEFAULT)) < 0) goto out; - if((dsid = H5Dopen2(fid,"ds_f_1", H5P_DEFAULT)) < 0) goto out; if(H5DSattach_scale(did,dsid,DIM0) < 0) goto out; if(H5Dclose(dsid) < 0) goto out; + if((dsid = H5Dopen2(fid,"ds_f_11", H5P_DEFAULT)) < 0) goto out; if(H5DSattach_scale(did,dsid,DIM0) < 0) goto out; if(H5Dclose(dsid) < 0) goto out; + if((dsid = H5Dopen2(fid,"ds_f_2", H5P_DEFAULT)) < 0) goto out; if(H5DSattach_scale(did,dsid,DIM1) < 0) @@ -1381,13 +3347,12 @@ static int test_simple(void) goto out; /* get rank */ - if((rank=H5Sget_simple_extent_ndims(sid)) < 0) + if((rank = H5Sget_simple_extent_ndims(sid)) < 0) goto out; /* get dimensions of dataset */ if(H5Sget_simple_extent_dims(sid,dims,NULL) < 0) goto out; - { int match_size; /* does this scale size matches the dataset DIM size */ int idx; /* scale index to start iterating, on return, index where iterator stoped */ @@ -1419,7 +3384,7 @@ static int test_simple(void) break; }/*switch*/ }/*for*/ - } + } /* close */ if(H5Dclose(did) < 0) @@ -1437,11 +3402,10 @@ static int test_simple(void) /* close */ H5Fclose(fid); - return 0; /* error zone */ -out: + out: H5E_BEGIN_TRY { H5Dclose(did); @@ -1711,7 +3675,6 @@ static herr_t op_continue(hid_t dset, unsigned dim, hid_t scale_id, void *visito return 0; } - /*------------------------------------------------------------------------- * Function: op_stop * @@ -1745,9 +3708,6 @@ static herr_t op_stop(hid_t dset, unsigned dim, hid_t scale_id, void *visitor_da return 1; } - - - /*------------------------------------------------------------------------- * test error conditions *------------------------------------------------------------------------- diff --git a/hl/test/test_ds_be.h5 b/hl/test/test_ds_be.h5 Binary files differnew file mode 100644 index 0000000..3da54f9 --- /dev/null +++ b/hl/test/test_ds_be.h5 diff --git a/hl/test/test_ds_le.h5 b/hl/test/test_ds_le.h5 Binary files differnew file mode 100644 index 0000000..1fcbe99 --- /dev/null +++ b/hl/test/test_ds_le.h5 diff --git a/hl/test/test_lite.c b/hl/test/test_lite.c index ad12fb2..21afc54 100644 --- a/hl/test/test_lite.c +++ b/hl/test/test_lite.c @@ -1291,7 +1291,6 @@ static int test_enums(void) H5T_class_t type_class; char* dt_str; size_t str_len; - H5T_order_t native_order = H5Tget_order(H5T_NATIVE_INT); TESTING3(" text for enum types"); diff --git a/hl/tools/Makefile.in b/hl/tools/Makefile.in index cc38324..2738d84 100644 --- a/hl/tools/Makefile.in +++ b/hl/tools/Makefile.in @@ -111,6 +111,16 @@ am__relativize = \ ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@ AMTAR = @AMTAR@ + +# H5_CFLAGS holds flags that should be used when building hdf5, +# but which should not be exported to h5cc for building other programs. +# AM_CFLAGS is an automake construct which should be used by Makefiles +# instead of CFLAGS, as CFLAGS is reserved solely for the user to define. +AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@ +AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ +AM_LDFLAGS = @AM_LDFLAGS@ AM_MAKEFLAGS = @AM_MAKEFLAGS@ AR = @AR@ @@ -124,21 +134,18 @@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ - -# H5_CFLAGS holds flags that should be used as CFLAGS when building hdf5, -# but which shouldn't be exported to h5cc for building other programs. -CFLAGS = @CFLAGS@ @H5_CFLAGS@ +CFLAGS = @CFLAGS@ CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ CONFIG_USER = @CONFIG_USER@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ @H5_CPPFLAGS@ +CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ @H5_CXXFLAGS@ +CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ @@ -161,7 +168,7 @@ F9XMODEXT = @F9XMODEXT@ F9XMODFLAG = @F9XMODFLAG@ F9XSUFFIXFLAG = @F9XSUFFIXFLAG@ FC = @FC@ -FCFLAGS = @FCFLAGS@ @H5_FCFLAGS@ +FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ diff --git a/hl/tools/gif2h5/Makefile.am b/hl/tools/gif2h5/Makefile.am index f1cec06..895c75f 100644 --- a/hl/tools/gif2h5/Makefile.am +++ b/hl/tools/gif2h5/Makefile.am @@ -32,8 +32,8 @@ bin_PROGRAMS=gif2h5 h52gif noinst_PROGRAMS=h52gifgentst # Add h52gif and gif2h5 specific linker flags here -h52gif_LDFLAGS = $(LT_STATIC_EXEC) -gif2h5_LDFLAGS = $(LT_STATIC_EXEC) +h52gif_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) +gif2h5_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) gif2h5_SOURCES=gif2hdf.c gif2mem.c decompress.c gifread.c writehdf.c diff --git a/hl/tools/gif2h5/Makefile.in b/hl/tools/gif2h5/Makefile.in index 71a16c4..e43dd07 100644 --- a/hl/tools/gif2h5/Makefile.in +++ b/hl/tools/gif2h5/Makefile.in @@ -111,6 +111,16 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = /home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@ AMTAR = @AMTAR@ + +# H5_CFLAGS holds flags that should be used when building hdf5, +# but which should not be exported to h5cc for building other programs. +# AM_CFLAGS is an automake construct which should be used by Makefiles +# instead of CFLAGS, as CFLAGS is reserved solely for the user to define. +AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@ +AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ +AM_LDFLAGS = @AM_LDFLAGS@ AM_MAKEFLAGS = @AM_MAKEFLAGS@ AR = @AR@ @@ -124,21 +134,18 @@ BYTESEX = @BYTESEX@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_VERSION = @CC_VERSION@ - -# H5_CFLAGS holds flags that should be used as CFLAGS when building hdf5, -# but which shouldn't be exported to h5cc for building other programs. -CFLAGS = @CFLAGS@ @H5_CFLAGS@ +CFLAGS = @CFLAGS@ CLEARFILEBUF = @CLEARFILEBUF@ CODESTACK = @CODESTACK@ CONFIG_DATE = @CONFIG_DATE@ CONFIG_MODE = @CONFIG_MODE@ CONFIG_USER = @CONFIG_USER@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ @H5_CPPFLAGS@ +CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ @H5_CXXFLAGS@ +CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUG_PKG = @DEBUG_PKG@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ @@ -161,7 +168,7 @@ F9XMODEXT = @F9XMODEXT@ F9XMODFLAG = @F9XMODFLAG@ F9XSUFFIXFLAG = @F9XSUFFIXFLAG@ FC = @FC@ -FCFLAGS = @FCFLAGS@ @H5_FCFLAGS@ +FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ @@ -367,8 +374,8 @@ TEST_SCRIPT = $(srcdir)/h52giftest.sh check_SCRIPTS = $(TEST_SCRIPT) # Add h52gif and gif2h5 specific linker flags here -h52gif_LDFLAGS = $(LT_STATIC_EXEC) -gif2h5_LDFLAGS = $(LT_STATIC_EXEC) +h52gif_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) +gif2h5_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) gif2h5_SOURCES = gif2hdf.c gif2mem.c decompress.c gifread.c writehdf.c h52gif_SOURCES = hdf2gif.c hdfgifwr.c h52gifgentst_SOURCES = h52gifgentst.c |