summaryrefslogtreecommitdiffstats
path: root/hl
diff options
context:
space:
mode:
Diffstat (limited to 'hl')
-rwxr-xr-xhl/Makefile.in21
-rw-r--r--hl/c++/Makefile.in21
-rw-r--r--hl/c++/examples/Makefile.in21
-rw-r--r--hl/c++/src/Makefile.am4
-rw-r--r--hl/c++/src/Makefile.in31
-rw-r--r--hl/c++/test/Makefile.am2
-rw-r--r--hl/c++/test/Makefile.in27
-rw-r--r--hl/examples/Makefile.in21
-rw-r--r--hl/fortran/Makefile.in21
-rw-r--r--hl/fortran/examples/Makefile.in21
-rw-r--r--hl/fortran/src/Makefile.am6
-rw-r--r--hl/fortran/src/Makefile.in37
-rw-r--r--hl/fortran/test/Makefile.am6
-rw-r--r--hl/fortran/test/Makefile.in37
-rw-r--r--hl/src/H5DS.c28
-rw-r--r--hl/src/Makefile.am4
-rw-r--r--hl/src/Makefile.in30
-rw-r--r--hl/test/Makefile.am15
-rw-r--r--hl/test/Makefile.in89
-rw-r--r--hl/test/gen_test_ds.c595
-rw-r--r--hl/test/test_ds.c2474
-rw-r--r--hl/test/test_ds_be.h5bin0 -> 11024 bytes
-rw-r--r--hl/test/test_ds_le.h5bin0 -> 14304 bytes
-rw-r--r--hl/test/test_lite.c1
-rw-r--r--hl/tools/Makefile.in21
-rw-r--r--hl/tools/gif2h5/Makefile.am4
-rw-r--r--hl/tools/gif2h5/Makefile.in25
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
new file mode 100644
index 0000000..3da54f9
--- /dev/null
+++ b/hl/test/test_ds_be.h5
Binary files differ
diff --git a/hl/test/test_ds_le.h5 b/hl/test/test_ds_le.h5
new file mode 100644
index 0000000..1fcbe99
--- /dev/null
+++ b/hl/test/test_ds_le.h5
Binary files differ
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