summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScot Breitenfeld <brtnfld@hdfgroup.org>2011-06-10 03:42:34 (GMT)
committerScot Breitenfeld <brtnfld@hdfgroup.org>2011-06-10 03:42:34 (GMT)
commit7c040a1efb2df6794e7cff27b34e0053ff6dd301 (patch)
tree554cd6f39850b35fba50dad91e5636837ae1956d
parent5479ee3b0ce741ed7bbae5b90b102f51c18f8b99 (diff)
downloadhdf5-7c040a1efb2df6794e7cff27b34e0053ff6dd301.zip
hdf5-7c040a1efb2df6794e7cff27b34e0053ff6dd301.tar.gz
hdf5-7c040a1efb2df6794e7cff27b34e0053ff6dd301.tar.bz2
[svn-r20958] Description: Added fortran wrappers and test for the HL DS API.
Tested: jam (intel, gnu, pgi)
-rwxr-xr-xhl/fortran/src/H5DSfc.c377
-rwxr-xr-xhl/fortran/src/H5DSff.f90536
-rwxr-xr-xhl/fortran/src/H5LTf90proto.h352
-rw-r--r--hl/fortran/src/Makefile.am5
-rw-r--r--hl/fortran/src/Makefile.in10
-rw-r--r--hl/fortran/test/Makefile.am5
-rw-r--r--hl/fortran/test/Makefile.in26
-rw-r--r--hl/fortran/test/tstds.f90347
8 files changed, 1494 insertions, 164 deletions
diff --git a/hl/fortran/src/H5DSfc.c b/hl/fortran/src/H5DSfc.c
new file mode 100755
index 0000000..6816347
--- /dev/null
+++ b/hl/fortran/src/H5DSfc.c
@@ -0,0 +1,377 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+* 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. *
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/* This files contains C stubs for H5D Fortran APIs */
+
+#include "H5DSprivate.h"
+#include "H5LTf90proto.h"
+#include "H5Eprivate.h"
+
+/*-------------------------------------------------------------------------
+* Function: h5dsset_scale_c
+*
+* Purpose: Calls H5DSset_scale
+*
+* Return: Success: 0, Failure: -1
+*
+* Programmer: M. Scot Breitenfeld
+*
+* Date: April 17, 2011
+*
+* Comments:
+*
+*-------------------------------------------------------------------------
+*/
+int_f
+nh5dsset_scale_c(hid_t_f *dsid, _fcd dimname, int_f *dimnamelen)
+{
+ char *c_dimname = NULL;
+ int_f ret_value = 0;
+
+ /*
+ * convert FORTRAN name to C name
+ */
+
+ if(*dimnamelen != 0)
+ if(NULL == (c_dimname = (char *)HD5f2cstring(dimname, (size_t)*dimnamelen)))
+ HGOTO_DONE(FAIL)
+
+ /*
+ * call H5DSset_scale function.
+ */
+
+ if(H5DSset_scale( (hid_t)*dsid, c_dimname) < 0)
+ HGOTO_DONE(FAIL)
+
+ done:
+ if(c_dimname)
+ HDfree(c_dimname);
+
+ return ret_value;
+
+} /* end nh5dsset_scale_c() */
+
+
+/*-------------------------------------------------------------------------
+* Function: H5DSattach_scale_c
+*
+* Purpose: Calls H5DSattach_scale
+*
+* Return: Success: 0, Failure: -1
+*
+* Programmer: M. Scot Breitenfeld
+*
+* Date: April 17, 2011
+*
+* Comments:
+*
+*-------------------------------------------------------------------------
+*/
+int_f
+nh5dsattach_scale_c( hid_t_f *did, hid_t_f *dsid, int_f *idx)
+{
+ int_f ret_value = 0;
+
+ /*
+ * call H5DSset_scale function.
+ */
+
+ if(H5DSattach_scale( (hid_t)*did, (hid_t)*dsid, (unsigned)*idx ) < 0)
+ HGOTO_DONE(FAIL)
+
+ done:
+ return ret_value;
+
+} /* end nh5dsattach_scale_c() */
+
+
+/*-------------------------------------------------------------------------
+* Function: H5DSdetach_scale_c
+*
+* Purpose: Calls H5DSdetach_scale
+*
+* Return: Success: 0, Failure: -1
+*
+* Programmer: M. Scot Breitenfeld
+*
+* Date: April 17, 2011
+*
+* Comments:
+*
+*-------------------------------------------------------------------------
+*/
+int_f
+nh5dsdetach_scale_c( hid_t_f *did, hid_t_f *dsid, int_f *idx)
+{
+ int_f ret_value = 0;
+
+ /*
+ * call H5DSset_scale function.
+ */
+
+ if(H5DSdetach_scale( (hid_t)*did, (hid_t)*dsid, (unsigned)*idx ) < 0)
+ HGOTO_DONE(FAIL)
+
+ done:
+ return ret_value;
+
+} /* end nh5dsdetach_scale_c() */
+
+
+/*-------------------------------------------------------------------------
+* Function: H5DSis_attached_c
+*
+* Purpose: Calls H5DSis_attached
+*
+* Return: Success: 0, Failure: -1
+*
+* Programmer: M. Scot Breitenfeld
+*
+* Date: April 17, 2011
+*
+* Comments:
+*
+*-------------------------------------------------------------------------
+*/
+int_f
+nh5dsis_attached_c( hid_t_f *did, hid_t_f *dsid, int_f *idx, int_f *is_attached)
+{
+ int_f ret_value = 0;
+ htri_t c_is_attached;
+
+ /*
+ * call H5DSis_attached function.
+ */
+
+ if((c_is_attached = H5DSis_attached( (hid_t)*did, (hid_t)*dsid, (unsigned)*idx )) < 0)
+ HGOTO_DONE(FAIL)
+
+ *is_attached = (int_f)c_is_attached;
+
+ done:
+ return ret_value;
+
+} /* end nh5dsis_attached_c() */
+
+/*-------------------------------------------------------------------------
+* Function: H5DSis_scale_c
+*
+* Purpose: Calls H5DSis_scale
+*
+* Return: Success: 0, Failure: -1
+*
+* Programmer: M. Scot Breitenfeld
+*
+* Date: April 18, 2011
+*
+* Comments:
+*
+*-------------------------------------------------------------------------
+*/
+int_f
+nh5dsis_scale_c( hid_t_f *did, int_f *is_scale)
+{
+ int_f ret_value = 0;
+ htri_t c_is_scale;
+
+ /*
+ * call H5DSis_scale function.
+ */
+
+ if((c_is_scale=H5DSis_scale( (hid_t)*did )) < 0)
+ HGOTO_DONE(FAIL)
+
+ *is_scale = (int_f)c_is_scale;
+
+ done:
+ return ret_value;
+
+} /* end nh5dsis_scale_c() */
+
+
+/*-------------------------------------------------------------------------
+* Function: h5dsset_label_c
+*
+* Purpose: Calls H5DSset_label
+*
+* Return: Success: 0, Failure: -1
+*
+* Programmer: M. Scot Breitenfeld
+*
+* Date: April 18, 2011
+*
+* Comments:
+*
+*-------------------------------------------------------------------------
+*/
+int_f
+nh5dsset_label_c(hid_t_f *did, int_f *idx, _fcd label, int_f *labellen)
+{
+ char *c_label = NULL;
+ int_f ret_value = 0;
+
+ /*
+ * convert FORTRAN name to C name
+ */
+
+ if(NULL == (c_label = (char *)HD5f2cstring(label, (size_t)*labellen)))
+ HGOTO_DONE(FAIL)
+
+ /*
+ * call H5DSset_label function.
+ */
+
+ if(H5DSset_label( (hid_t)*did, (unsigned)*idx, c_label) < 0)
+ HGOTO_DONE(FAIL)
+
+ done:
+ if(c_label)
+ HDfree(c_label);
+
+ return ret_value;
+
+} /* end nh5dsset_label_c() */
+
+/*-------------------------------------------------------------------------
+* Function: h5dsget_label_c
+*
+* Purpose: Calls H5DSget_label
+*
+* Return: Success: 0, Failure: -1
+*
+* Programmer: M. Scot Breitenfeld
+*
+* Date: April 18, 2011
+*
+* Comments:
+*
+*-------------------------------------------------------------------------
+*/
+int_f
+nh5dsget_label_c(hid_t_f *did, int_f *idx, _fcd label, size_t_f *size)
+{
+ char *c_label = NULL;
+ ssize_t size_c = -1;
+ int_f ret_value = 0;
+
+ /*
+ * Allocate buffer to hold label
+ */
+ if ((c_label = HDmalloc((size_t)*size + 1)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * call H5DSget_label function.
+ */
+
+ if( (size_c = (size_t_f)H5DSget_label( (hid_t)*did, (unsigned)*idx, c_label, (size_t)*size+1)) < 0)
+ HGOTO_DONE(FAIL)
+
+ /*
+ * Convert C name to FORTRAN and place it in the given buffer
+ */
+
+ HD5packFstring(c_label, _fcdtocp(label), (size_t)*size+1);
+
+done:
+ *size = (size_t_f)size_c; /* Don't subtract '1' because H5DSget_label doesn't include the
+ * trailing NULL in the length calculation, Ref. HDFFV-7596 */
+ if(c_label) HDfree(c_label);
+ return ret_value;
+
+} /* end nh5dsget_label_c() */
+
+/*-------------------------------------------------------------------------
+* Function: h5dsget_scale_name_c
+*
+* Purpose: Calls H5DSget_scale_name
+*
+* Return: Success: 0, Failure: -1
+*
+* Programmer: M. Scot Breitenfeld
+*
+* Date: April 18, 2011
+*
+* Comments:
+*
+*-------------------------------------------------------------------------
+*/
+int_f
+nh5dsget_scale_name_c(hid_t_f *did, _fcd name, size_t_f *size)
+{
+ char *c_scale_name = NULL;
+ ssize_t size_c = -1;
+ int_f ret_value = 0;
+
+ /*
+ * Allocate buffer to hold name
+ */
+ if ((c_scale_name = HDmalloc((size_t)*size + 1)) == NULL)
+ HGOTO_DONE(FAIL);
+
+ /*
+ * call H5DSget_scale_name function.
+ */
+
+ if( (size_c = (size_t_f)H5DSget_scale_name( (hid_t)*did, c_scale_name, (size_t)*size+1)) < 0)
+ HGOTO_DONE(FAIL)
+
+ /*
+ * Convert C name to FORTRAN and place it in the given buffer
+ */
+ if(size_c != 0) {
+ HD5packFstring(c_scale_name, _fcdtocp(name), (size_t)*size+1);
+ *size = (size_t_f)size_c-1; /* (-1) because we don't include the NULL ending in the length*/
+ } else {
+ *size = (size_t_f)size_c; /* if NULL then no name was found */
+ }
+
+done:
+ if(c_scale_name) HDfree(c_scale_name);
+ return ret_value;
+
+} /* end nh5dsget_scale_name_c() */
+
+/*-------------------------------------------------------------------------
+* Function: H5DSget_num_scales_c
+*
+* Purpose: Calls H5DSget_num_scales
+*
+* Return: Success: 0, Failure: -1
+*
+* Programmer: M. Scot Breitenfeld
+*
+* Date: April 18, 2011
+*
+* Comments:
+*
+*-------------------------------------------------------------------------
+*/
+int_f
+nh5dsget_num_scales_c( hid_t_f *did, int_f *idx, int_f *num_scales)
+{
+ int_f ret_value = 0;
+
+ /*
+ * call H5DSset_scale function.
+ */
+
+ if( (*num_scales = (int_f)H5DSget_num_scales( (hid_t)*did, (unsigned)*idx)) < 0)
+ HGOTO_DONE(FAIL)
+
+ done:
+ return ret_value;
+
+} /* end nh5dsget_num_scales_c() */
diff --git a/hl/fortran/src/H5DSff.f90 b/hl/fortran/src/H5DSff.f90
new file mode 100755
index 0000000..c3ec587
--- /dev/null
+++ b/hl/fortran/src/H5DSff.f90
@@ -0,0 +1,536 @@
+! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+! 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. *
+! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+!
+!
+! This file contains FORTRAN90 interfaces for H5DS functions
+!
+
+MODULE h5ds
+
+ USE h5fortran_types
+ USE hdf5
+
+CONTAINS
+
+
+!-------------------------------------------------------------------------
+! Function: H5DSset_scale_f
+!
+! Purpose: Convert dataset dsid to a dimension scale, with optional name, dimname.
+!
+! Return: Success: 0, Failure: -1
+!
+! Programmer: M. Scot Breitenfeld
+!
+! Date: April 17, 2011
+!
+! Comments:
+!
+! Modifications:
+!
+!-------------------------------------------------------------------------
+
+ SUBROUTINE H5DSset_scale_f( dsid, errcode, dimname)
+
+ IMPLICIT NONE
+
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5dsset_scale_f
+!DEC$endif
+!
+
+ INTEGER(hid_t), INTENT(in) :: dsid ! The dataset to be made a Dimension Scale
+ CHARACTER(LEN=*), INTENT(in), OPTIONAL :: dimname ! The dimension name
+ INTEGER :: errcode ! Error code
+
+ INTEGER:: dimname_len ! length of dimname (if present)
+
+ INTERFACE
+ INTEGER FUNCTION H5DSset_scale_c(dsid, dimname, dimname_len )
+
+ USE h5global
+ !DEC$IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DSSET_SCALE_C'::h5dsset_scale_c
+ !DEC$ENDIF
+ !DEC$ATTRIBUTES reference :: dimname
+ INTEGER(hid_t), INTENT(in) :: dsid ! The dataset to be made a Dimension Scale
+ CHARACTER(LEN=*), INTENT(in) :: dimname ! The dimension name
+ INTEGER, INTENT(in) :: dimname_len
+ END FUNCTION H5DSset_scale_c
+ END INTERFACE
+
+ IF(PRESENT(dimname))THEN
+ dimname_len = LEN(dimname)
+ errcode = H5DSset_scale_c(dsid, dimname, dimname_len )
+ ELSE
+ errcode = H5DSset_scale_c(dsid, " ", 0 )
+ ENDIF
+
+ END SUBROUTINE H5DSset_scale_f
+
+!-------------------------------------------------------------------------
+! Function: H5DSattach_scale_f
+!
+! Purpose: Attach dimension scale dsid to dimension idx of dataset did.
+!
+! Return: Success: 0, Failure: -1
+!
+! Programmer: M. Scot Breitenfeld
+!
+! Date: April 17, 2011
+!
+! Comments:
+!
+! Modifications:
+!
+!-------------------------------------------------------------------------
+
+ SUBROUTINE H5DSattach_scale_f( did, dsid, idx, errcode)
+
+ IMPLICIT NONE
+
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5dsattach_scale_f
+!DEC$endif
+!
+ INTEGER(hid_t), INTENT(in) :: did ! the dataset
+ INTEGER(hid_t), INTENT(in) :: dsid ! the scale to be attached
+ INTEGER , INTENT(in) :: idx ! the dimension of did that dsid is associated with.
+ INTEGER :: errcode ! error code
+ INTEGER :: c_idx
+
+ INTERFACE
+ INTEGER FUNCTION H5DSattach_scale_c(did, dsid, idx )
+
+ USE h5global
+ !DEC$IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DSATTACH_SCALE_C':: h5dsattach_scale_c
+ !DEC$ENDIF
+ INTEGER(hid_t), INTENT(in) :: did ! the dataset
+ INTEGER(hid_t), INTENT(in) :: dsid ! the scale to be attached
+ INTEGER , INTENT(in) :: idx ! the dimension of did that dsid is associated with.
+ END FUNCTION H5DSattach_scale_c
+ END INTERFACE
+
+ c_idx = idx -1 ! account for C-dimensions starting at 0
+
+ errcode = H5DSattach_scale_c( did, dsid, c_idx)
+
+ END SUBROUTINE H5DSattach_scale_f
+
+!-------------------------------------------------------------------------
+! Function: H5DSdetach_scale_f
+!
+! Purpose: Detach dimension scale dsid from the dimension idx of Dataset did.
+!
+! Return: Success: 0, Failure: -1
+!
+! Programmer: M. Scot Breitenfeld
+!
+! Date: April 17, 2011
+!
+! Comments:
+!
+! Modifications:
+!
+!-------------------------------------------------------------------------
+
+ SUBROUTINE H5DSdetach_scale_f( did, dsid, idx, errcode)
+
+ IMPLICIT NONE
+
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5dsdetach_scale_f
+!DEC$endif
+!
+ INTEGER(hid_t), INTENT(in) :: did ! the dataset
+ INTEGER(hid_t), INTENT(in) :: dsid ! the scale to be detached
+ INTEGER , INTENT(in) :: idx ! the dimension of did to detach
+ INTEGER :: errcode ! error code
+ INTEGER :: c_idx
+
+ INTERFACE
+ INTEGER FUNCTION H5DSdetach_scale_c(did, dsid, idx )
+
+ USE h5global
+ !DEC$IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DSDETACH_SCALE_C':: h5dsdetach_scale_c
+ !DEC$ENDIF
+ INTEGER(hid_t), INTENT(in) :: did ! the dataset
+ INTEGER(hid_t), INTENT(in) :: dsid ! the scale to be detached
+ INTEGER , INTENT(in) :: idx ! the dimension of did to detach
+ END FUNCTION H5DSdetach_scale_c
+ END INTERFACE
+
+ c_idx = idx - 1 ! account for C-dimensions starting at 0
+
+ errcode = H5DSdetach_scale_c( did, dsid, c_idx)
+
+ END SUBROUTINE H5DSdetach_scale_f
+
+
+!-------------------------------------------------------------------------
+! Function: H5DSis_attached_f
+!
+! Purpose: Report if dimension scale dsid is currently attached to dimension idx of dataset did.
+!
+! Return: Success: 0, Failure: -1
+!
+! Programmer: M. Scot Breitenfeld
+!
+! Date: April 17, 2011
+!
+! Comments:
+!
+! Modifications:
+!
+!-------------------------------------------------------------------------
+
+ SUBROUTINE H5DSis_attached_f( did, dsid, idx, is_attached, errcode)
+
+ IMPLICIT NONE
+
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5dsis_attached_f
+!DEC$endif
+!
+ INTEGER(hid_t), INTENT(in) :: did ! the dataset
+ INTEGER(hid_t), INTENT(in) :: dsid ! the scale to be attached
+ INTEGER , INTENT(in) :: idx ! the dimension of did that dsid is associated with
+ LOGICAL , INTENT(out) :: is_attached ! logical: dimension scale dsid is currently attached to
+ ! dimension idx of dataset did
+ INTEGER :: errcode ! error code
+ INTEGER :: c_is_attached
+ INTEGER :: c_idx
+
+ INTERFACE
+ INTEGER FUNCTION H5DSis_attached_c(did, dsid, idx, c_is_attached )
+
+ USE h5global
+ !DEC$IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DSIS_ATTACHED_C':: h5dsis_attached_c
+ !DEC$ENDIF
+ INTEGER(hid_t), INTENT(in) :: did ! the dataset
+ INTEGER(hid_t), INTENT(in) :: dsid ! the scale to be detached
+ INTEGER , INTENT(in) :: idx ! the dimension of did to detach
+ INTEGER , INTENT(out) :: c_is_attached ! dimension scale dsid is currently attached to
+ END FUNCTION H5DSis_attached_c
+ END INTERFACE
+
+ c_idx = idx - 1 ! account for C-dimensions starting at 0
+
+ errcode = H5DSis_attached_c(did, dsid, c_idx, c_is_attached)
+
+ is_attached = .FALSE. ! default
+ IF(c_is_attached.GT.0)THEN
+ is_attached = .TRUE.
+ ELSE IF(errcode.LT.0)THEN
+ errcode = -1
+ ENDIF
+
+ END SUBROUTINE H5DSis_attached_f
+
+!
+! H5DSiterate_scales: Impliment in F2003
+!
+
+!-------------------------------------------------------------------------
+! Function: H5DSis_scale_f
+!
+! Purpose: Determines whether dset is a Dimension Scale.
+!
+! Return: Success: 0, Failure: -1
+!
+! Programmer: M. Scot Breitenfeld
+!
+! Date: April 18, 2011
+!
+! Comments:
+!
+! Modifications:
+!
+!-------------------------------------------------------------------------
+
+ SUBROUTINE H5DSis_scale_f( did, is_scale, errcode)
+
+ IMPLICIT NONE
+
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5dsis_scale_f
+!DEC$endif
+!
+ INTEGER(hid_t), INTENT(in) :: did ! the data set to query
+ LOGICAL , INTENT(out) :: is_scale ! logical:
+ ! .TRUE. if did is a Dimension Scale
+ INTEGER :: errcode ! error code
+ INTEGER :: c_is_scale
+
+ INTERFACE
+ INTEGER FUNCTION H5DSis_scale_c(did,c_is_scale)
+
+ USE h5global
+ !DEC$IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DSIS_SCALE_C':: h5dsis_scale_c
+ !DEC$ENDIF
+ INTEGER(hid_t), INTENT(in) :: did ! the data set to query
+ INTEGER, INTENT(out) :: c_is_scale
+ END FUNCTION H5DSis_scale_c
+ END INTERFACE
+
+ errcode = H5DSis_scale_c(did, c_is_scale)
+
+ is_scale = .FALSE. ! default
+ IF(c_is_scale.GT.0)THEN
+ is_scale = .TRUE.
+ ELSE IF(errcode.LT.0)THEN
+ errcode = -1
+ ENDIF
+
+ END SUBROUTINE H5DSis_scale_f
+
+!-------------------------------------------------------------------------
+! Function: H5DSset_label_f
+!
+! Purpose: Set label for the dimension idx of did to the value label
+!
+! Return: Success: 0, Failure: -1
+!
+! Programmer: M. Scot Breitenfeld
+!
+! Date: April 18, 2011
+!
+! Comments:
+!
+! Modifications:
+!
+!-------------------------------------------------------------------------
+
+ SUBROUTINE H5DSset_label_f( did, idx, label, errcode)
+
+ IMPLICIT NONE
+
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5dsset_label_f
+!DEC$endif
+!
+
+ INTEGER(hid_t), INTENT(in) :: did ! The dataset
+ INTEGER , INTENT(in) :: idx ! The dimension
+ CHARACTER(LEN=*), INTENT(in) :: label ! The label
+ INTEGER :: errcode ! Error code
+
+ INTEGER :: label_len ! Length of label
+ INTEGER :: c_idx
+
+ INTERFACE
+ INTEGER FUNCTION H5DSset_label_c(did, idx, label, label_len)
+
+ USE h5global
+ !DEC$IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DSSET_LABEL_C'::h5dsset_label_c
+ !DEC$ENDIF
+ !DEC$ATTRIBUTES reference :: label
+ INTEGER(hid_t), INTENT(in) :: did ! The dataset
+ INTEGER , INTENT(in) :: idx ! The dimension
+ CHARACTER(LEN=*), INTENT(in) :: label ! The label
+ INTEGER, INTENT(in) :: label_len ! Length of label
+ END FUNCTION H5DSset_label_c
+ END INTERFACE
+
+ c_idx = idx - 1
+
+ label_len = LEN(label)
+ errcode = H5DSset_label_c(did, c_idx, label, label_len)
+
+ END SUBROUTINE H5DSset_label_f
+
+!-------------------------------------------------------------------------
+! Function: H5DSget_label_f
+!
+! Purpose: Read the label for dimension idx of did into buffer label.
+!
+! Return: Success: 0, Failure: -1
+!
+! Programmer: M. Scot Breitenfeld
+!
+! Date: April 18, 2011
+!
+! Comments:
+!
+! Modifications:
+!
+!-------------------------------------------------------------------------
+
+ SUBROUTINE H5DSget_label_f( did, idx, label, size, errcode)
+
+ IMPLICIT NONE
+
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5dsget_label_f
+!DEC$endif
+!
+
+ INTEGER(hid_t), INTENT(in) :: did ! The dataget
+ INTEGER , INTENT(in) :: idx ! The dimension
+ CHARACTER(LEN=*), INTENT(in) :: label ! The label
+ INTEGER(size_t) , INTENT(inout) :: size ! The length of the label buffer
+ INTEGER :: errcode ! Error code
+ INTEGER :: c_idx
+
+ INTERFACE
+ INTEGER FUNCTION H5DSget_label_c(did, idx, label, size)
+
+ USE h5global
+ !DEC$IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DSGET_LABEL_C'::h5dsget_label_c
+ !DEC$ENDIF
+ !DEC$ATTRIBUTES reference :: label
+ INTEGER(hid_t), INTENT(in) :: did ! The dataget
+ INTEGER , INTENT(in) :: idx ! The dimension
+ CHARACTER(LEN=*), INTENT(in) :: label ! The label
+ INTEGER(SIZE_T), INTENT(inout) :: size ! Length of label
+ END FUNCTION H5DSget_label_c
+ END INTERFACE
+
+ c_idx = idx - 1
+
+ errcode = H5DSget_label_c(did, c_idx, label, size)
+
+ END SUBROUTINE H5DSget_label_f
+
+
+!-------------------------------------------------------------------------
+! Function: H5DSget_scale_name_f
+!
+! Purpose: Read the name of scale did into buffer name.
+!
+! Return: Success: 0, Failure: -1
+!
+! Programmer: M. Scot Breitenfeld
+!
+! Date: April 18, 2011
+!
+! Comments:
+!
+! Modifications:
+!
+!-------------------------------------------------------------------------
+
+ SUBROUTINE H5DSget_scale_name_f(did, name, size, errcode)
+
+ IMPLICIT NONE
+
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5dsget_scale_name_f
+!DEC$endif
+!
+
+ INTEGER(hid_t), INTENT(in) :: did ! The dataget
+ CHARACTER(LEN=*), INTENT(out) :: name ! The name
+ INTEGER(size_t) , INTENT(inout) :: size ! The length of the name buffer
+ INTEGER :: errcode ! Error code
+
+ INTERFACE
+ INTEGER FUNCTION H5DSget_scale_name_c(did, name, size)
+
+ USE h5global
+ !DEC$IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DSGET_SCALE_NAME_C'::h5dsget_scale_name_c
+ !DEC$ENDIF
+ !DEC$ATTRIBUTES reference :: name
+ INTEGER(hid_t), INTENT(in) :: did ! The dataget
+ CHARACTER(LEN=*), INTENT(out) :: name ! The name
+ INTEGER(SIZE_T), INTENT(inout) :: size ! Length of name
+ END FUNCTION H5DSget_scale_name_c
+ END INTERFACE
+
+ errcode = H5DSget_scale_name_c(did, name, size)
+
+ END SUBROUTINE H5DSget_scale_name_f
+
+!-------------------------------------------------------------------------
+! Function: H5DSget_num_scales_f
+!
+! Purpose: Determines how many Dimension Scales are attached to dimension idx of did
+!
+! Return: Success: 0, Failure: -1
+!
+! Programmer: M. Scot Breitenfeld
+!
+! Date: April 18, 2011
+!
+! Comments:
+!
+! Modifications:
+!
+!-------------------------------------------------------------------------
+
+ SUBROUTINE H5DSget_num_scales_f( did, idx, num_scales, errcode)
+
+ IMPLICIT NONE
+
+!
+!This definition is needed for Windows DLLs
+!DEC$if defined(BUILD_HDF5_DLL)
+!DEC$attributes dllexport :: h5dsget_num_scales_f
+!DEC$endif
+!
+ INTEGER(hid_t), INTENT(in) :: did ! the dataset
+ INTEGER , INTENT(in) :: idx ! the dimension of did to query
+ INTEGER , INTENT(out) :: num_scales ! the number of Dimension Scales associated with did
+ INTEGER :: errcode ! error code
+ INTEGER :: c_idx
+
+ INTERFACE
+ INTEGER FUNCTION H5DSget_num_scales_c(did, idx, num_scales)
+
+ USE h5global
+ !DEC$IF DEFINED(HDF5F90_WINDOWS)
+ !DEC$ATTRIBUTES C,reference,decorate,alias:'H5DSGET_NUM_SCALES_C':: h5dsget_num_scales_c
+ !DEC$ENDIF
+ INTEGER(hid_t), INTENT(in) :: did ! the dataset
+ INTEGER , INTENT(in) :: idx ! the dimension of did to query
+ INTEGER , INTENT(out) :: num_scales ! the number of Dimension Scales associated with did
+ END FUNCTION H5DSget_num_scales_c
+ END INTERFACE
+
+ c_idx = idx - 1
+ errcode = H5DSget_num_scales_c(did, c_idx, num_scales)
+
+ END SUBROUTINE H5DSget_num_scales_f
+
+END MODULE h5ds
+
+
+
+
+
+
diff --git a/hl/fortran/src/H5LTf90proto.h b/hl/fortran/src/H5LTf90proto.h
index afb3259..5525af9 100755
--- a/hl/fortran/src/H5LTf90proto.h
+++ b/hl/fortran/src/H5LTf90proto.h
@@ -26,166 +26,222 @@
H5_FCDLL char* HD5f2cstring (_fcd fdesc, int len);
H5_FCDLL void HD5packFstring (char *src, char *dest, size_t len);
+/*
+ * Functions from H5DSfc.c
+ */
+
+#define nh5dsset_scale_c H5_FC_FUNC_(h5dsset_scale_c, H5DSSET_SCALE_C)
+#define nh5dsattach_scale_c H5_FC_FUNC_(h5dsattach_scale_c, H5DSATTACH_SCALE_C)
+#define nh5dsdetach_scale_c H5_FC_FUNC_(h5dsdetach_scale_c, H5DSDETACH_SCALE_C)
+#define nh5dsis_attached_c H5_FC_FUNC_(h5dsis_attached_c, H5DSIS_ATTACHED_C)
+#define nh5dsis_scale_c H5_FC_FUNC_(h5dsis_scale_c, H5DSIS_SCALE_C)
+#define nh5dsset_label_c H5_FC_FUNC_(h5dsset_label_c, H5DSSET_LABEL_C)
+#define nh5dsget_label_c H5_FC_FUNC_(h5dsget_label_c, H5DSGET_LABEL_C)
+#define nh5dsget_scale_name_c H5_FC_FUNC_(h5dsget_scale_name_c,H5DSGET_SCALE_NAME_C)
+#define nh5dsget_num_scales_c H5_FC_FUNC_(h5dsget_num_scales_c,H5DSGET_NUM_SCALES_C)
+
/*
-* Functions from H5LTfc.c
-*/
-# define nh5ltmake_dataset_c H5_FC_FUNC_(h5ltmake_dataset_c, H5LTMAKE_DATASET_C)
-# define nh5ltmake_dataset_int1_c H5_FC_FUNC_(h5ltmake_dataset_int1_c, H5LTMAKE_DATASET_INT1_C)
-# define nh5ltmake_dataset_int2_c H5_FC_FUNC_(h5ltmake_dataset_int2_c, H5LTMAKE_DATASET_INT2_C)
-# define nh5ltmake_dataset_int3_c H5_FC_FUNC_(h5ltmake_dataset_int3_c, H5LTMAKE_DATASET_INT3_C)
-# define nh5ltmake_dataset_int4_c H5_FC_FUNC_(h5ltmake_dataset_int4_c, H5LTMAKE_DATASET_INT4_C)
-# define nh5ltmake_dataset_int5_c H5_FC_FUNC_(h5ltmake_dataset_int5_c, H5LTMAKE_DATASET_INT5_C)
-# define nh5ltmake_dataset_int6_c H5_FC_FUNC_(h5ltmake_dataset_int6_c, H5LTMAKE_DATASET_INT6_C)
-# define nh5ltmake_dataset_int7_c H5_FC_FUNC_(h5ltmake_dataset_int7_c, H5LTMAKE_DATASET_INT7_C)
-# define nh5ltmake_dataset_fl1_c H5_FC_FUNC_(h5ltmake_dataset_fl1_c, H5LTMAKE_DATASET_FL1_C)
-# define nh5ltmake_dataset_fl2_c H5_FC_FUNC_(h5ltmake_dataset_fl2_c, H5LTMAKE_DATASET_FL2_C)
-# define nh5ltmake_dataset_fl3_c H5_FC_FUNC_(h5ltmake_dataset_fl3_c, H5LTMAKE_DATASET_FL3_C)
-# define nh5ltmake_dataset_fl4_c H5_FC_FUNC_(h5ltmake_dataset_fl4_c, H5LTMAKE_DATASET_FL4_C)
-# define nh5ltmake_dataset_fl5_c H5_FC_FUNC_(h5ltmake_dataset_fl5_c, H5LTMAKE_DATASET_FL5_C)
-# define nh5ltmake_dataset_fl6_c H5_FC_FUNC_(h5ltmake_dataset_fl6_c, H5LTMAKE_DATASET_FL6_C)
-# define nh5ltmake_dataset_fl7_c H5_FC_FUNC_(h5ltmake_dataset_fl7_c, H5LTMAKE_DATASET_FL7_C)
-# define nh5ltmake_dataset_dl1_c H5_FC_FUNC_(h5ltmake_dataset_dl1_c, H5LTMAKE_DATASET_DL1_C)
-# define nh5ltmake_dataset_dl2_c H5_FC_FUNC_(h5ltmake_dataset_dl2_c, H5LTMAKE_DATASET_DL2_C)
-# define nh5ltmake_dataset_dl3_c H5_FC_FUNC_(h5ltmake_dataset_dl3_c, H5LTMAKE_DATASET_DL3_C)
-# define nh5ltmake_dataset_dl4_c H5_FC_FUNC_(h5ltmake_dataset_dl4_c, H5LTMAKE_DATASET_DL4_C)
-# define nh5ltmake_dataset_dl5_c H5_FC_FUNC_(h5ltmake_dataset_dl5_c, H5LTMAKE_DATASET_DL5_C)
-# define nh5ltmake_dataset_dl6_c H5_FC_FUNC_(h5ltmake_dataset_dl6_c, H5LTMAKE_DATASET_DL6_C)
-# define nh5ltmake_dataset_dl7_c H5_FC_FUNC_(h5ltmake_dataset_dl7_c, H5LTMAKE_DATASET_DL7_C)
-# define nh5ltmake_dataset_nint1_c H5_FC_FUNC_(h5ltmake_dataset_nint1_c, H5LTMAKE_DATASET_NINT1_C)
-# define nh5ltmake_dataset_nint2_c H5_FC_FUNC_(h5ltmake_dataset_nint2_c, H5LTMAKE_DATASET_NINT2_C)
-# define nh5ltmake_dataset_nint3_c H5_FC_FUNC_(h5ltmake_dataset_nint3_c, H5LTMAKE_DATASET_NINT3_C)
-# define nh5ltmake_dataset_nint4_c H5_FC_FUNC_(h5ltmake_dataset_nint4_c, H5LTMAKE_DATASET_NINT4_C)
-# define nh5ltmake_dataset_nint5_c H5_FC_FUNC_(h5ltmake_dataset_nint5_c, H5LTMAKE_DATASET_NINT5_C)
-# define nh5ltmake_dataset_nint6_c H5_FC_FUNC_(h5ltmake_dataset_nint6_c, H5LTMAKE_DATASET_NINT6_C)
-# define nh5ltmake_dataset_nint7_c H5_FC_FUNC_(h5ltmake_dataset_nint7_c, H5LTMAKE_DATASET_NINT7_C)
-# define nh5ltmake_dataset_nfl1_c H5_FC_FUNC_(h5ltmake_dataset_nfl1_c, H5LTMAKE_DATASET_NFL1_C)
-# define nh5ltmake_dataset_nfl2_c H5_FC_FUNC_(h5ltmake_dataset_nfl2_c, H5LTMAKE_DATASET_NFL2_C)
-# define nh5ltmake_dataset_nfl3_c H5_FC_FUNC_(h5ltmake_dataset_nfl3_c, H5LTMAKE_DATASET_NFL3_C)
-# define nh5ltmake_dataset_nfl4_c H5_FC_FUNC_(h5ltmake_dataset_nfl4_c, H5LTMAKE_DATASET_NFL4_C)
-# define nh5ltmake_dataset_nfl5_c H5_FC_FUNC_(h5ltmake_dataset_nfl5_c, H5LTMAKE_DATASET_NFL5_C)
-# define nh5ltmake_dataset_nfl6_c H5_FC_FUNC_(h5ltmake_dataset_nfl6_c, H5LTMAKE_DATASET_NFL6_C)
-# define nh5ltmake_dataset_nfl7_c H5_FC_FUNC_(h5ltmake_dataset_nfl7_c, H5LTMAKE_DATASET_NFL7_C)
-# define nh5ltmake_dataset_ndl1_c H5_FC_FUNC_(h5ltmake_dataset_ndl1_c, H5LTMAKE_DATASET_NDL1_C)
-# define nh5ltmake_dataset_ndl2_c H5_FC_FUNC_(h5ltmake_dataset_ndl2_c, H5LTMAKE_DATASET_NDL2_C)
-# define nh5ltmake_dataset_ndl3_c H5_FC_FUNC_(h5ltmake_dataset_ndl3_c, H5LTMAKE_DATASET_NDL3_C)
-# define nh5ltmake_dataset_ndl4_c H5_FC_FUNC_(h5ltmake_dataset_ndl4_c, H5LTMAKE_DATASET_NDL4_C)
-# define nh5ltmake_dataset_ndl5_c H5_FC_FUNC_(h5ltmake_dataset_ndl5_c, H5LTMAKE_DATASET_NDL5_C)
-# define nh5ltmake_dataset_ndl6_c H5_FC_FUNC_(h5ltmake_dataset_ndl6_c, H5LTMAKE_DATASET_NDL6_C)
-# define nh5ltmake_dataset_ndl7_c H5_FC_FUNC_(h5ltmake_dataset_ndl7_c, H5LTMAKE_DATASET_NDL7_C)
-# define nh5ltread_dataset_c H5_FC_FUNC_(h5ltread_dataset_c, H5LTREAD_DATASET_C)
-# define nh5ltread_dataset_int1_c H5_FC_FUNC_(h5ltread_dataset_int1_c, H5LTREAD_DATASET_INT1_C)
-# define nh5ltread_dataset_int2_c H5_FC_FUNC_(h5ltread_dataset_int2_c, H5LTREAD_DATASET_INT2_C)
-# define nh5ltread_dataset_int3_c H5_FC_FUNC_(h5ltread_dataset_int3_c, H5LTREAD_DATASET_INT3_C)
-# define nh5ltread_dataset_int4_c H5_FC_FUNC_(h5ltread_dataset_int4_c, H5LTREAD_DATASET_INT4_C)
-# define nh5ltread_dataset_int5_c H5_FC_FUNC_(h5ltread_dataset_int5_c, H5LTREAD_DATASET_INT5_C)
-# define nh5ltread_dataset_int6_c H5_FC_FUNC_(h5ltread_dataset_int6_c, H5LTREAD_DATASET_INT6_C)
-# define nh5ltread_dataset_int7_c H5_FC_FUNC_(h5ltread_dataset_int7_c, H5LTREAD_DATASET_INT7_C)
-# define nh5ltread_dataset_fl1_c H5_FC_FUNC_(h5ltread_dataset_fl1_c, H5LTREAD_DATASET_FL1_C)
-# define nh5ltread_dataset_fl2_c H5_FC_FUNC_(h5ltread_dataset_fl2_c, H5LTREAD_DATASET_FL2_C)
-# define nh5ltread_dataset_fl3_c H5_FC_FUNC_(h5ltread_dataset_fl3_c, H5LTREAD_DATASET_FL3_C)
-# define nh5ltread_dataset_fl4_c H5_FC_FUNC_(h5ltread_dataset_fl4_c, H5LTREAD_DATASET_FL4_C)
-# define nh5ltread_dataset_fl5_c H5_FC_FUNC_(h5ltread_dataset_fl5_c, H5LTREAD_DATASET_FL5_C)
-# define nh5ltread_dataset_fl6_c H5_FC_FUNC_(h5ltread_dataset_fl6_c, H5LTREAD_DATASET_FL6_C)
-# define nh5ltread_dataset_fl7_c H5_FC_FUNC_(h5ltread_dataset_fl7_c, H5LTREAD_DATASET_FL7_C)
-# define nh5ltread_dataset_dl1_c H5_FC_FUNC_(h5ltread_dataset_dl1_c, H5LTREAD_DATASET_DL1_C)
-# define nh5ltread_dataset_dl2_c H5_FC_FUNC_(h5ltread_dataset_dl2_c, H5LTREAD_DATASET_DL2_C)
-# define nh5ltread_dataset_dl3_c H5_FC_FUNC_(h5ltread_dataset_dl3_c, H5LTREAD_DATASET_DL3_C)
-# define nh5ltread_dataset_dl4_c H5_FC_FUNC_(h5ltread_dataset_dl4_c, H5LTREAD_DATASET_DL4_C)
-# define nh5ltread_dataset_dl5_c H5_FC_FUNC_(h5ltread_dataset_dl5_c, H5LTREAD_DATASET_DL5_C)
-# define nh5ltread_dataset_dl6_c H5_FC_FUNC_(h5ltread_dataset_dl6_c, H5LTREAD_DATASET_DL6_C)
-# define nh5ltread_dataset_dl7_c H5_FC_FUNC_(h5ltread_dataset_dl7_c, H5LTREAD_DATASET_DL7_C)
-# define nh5ltread_dataset_nint1_c H5_FC_FUNC_(h5ltread_dataset_nint1_c, H5LTREAD_DATASET_NINT1_C)
-# define nh5ltread_dataset_nint2_c H5_FC_FUNC_(h5ltread_dataset_nint2_c, H5LTREAD_DATASET_NINT2_C)
-# define nh5ltread_dataset_nint3_c H5_FC_FUNC_(h5ltread_dataset_nint3_c, H5LTREAD_DATASET_NINT3_C)
-# define nh5ltread_dataset_nint4_c H5_FC_FUNC_(h5ltread_dataset_nint4_c, H5LTREAD_DATASET_NINT4_C)
-# define nh5ltread_dataset_nint5_c H5_FC_FUNC_(h5ltread_dataset_nint5_c, H5LTREAD_DATASET_NINT5_C)
-# define nh5ltread_dataset_nint6_c H5_FC_FUNC_(h5ltread_dataset_nint6_c, H5LTREAD_DATASET_NINT6_C)
-# define nh5ltread_dataset_nint7_c H5_FC_FUNC_(h5ltread_dataset_nint7_c, H5LTREAD_DATASET_NINT7_C)
-# define nh5ltread_dataset_nfl1_c H5_FC_FUNC_(h5ltread_dataset_nfl1_c, H5LTREAD_DATASET_NFL1_C)
-# define nh5ltread_dataset_nfl2_c H5_FC_FUNC_(h5ltread_dataset_nfl2_c, H5LTREAD_DATASET_NFL2_C)
-# define nh5ltread_dataset_nfl3_c H5_FC_FUNC_(h5ltread_dataset_nfl3_c, H5LTREAD_DATASET_NFL3_C)
-# define nh5ltread_dataset_nfl4_c H5_FC_FUNC_(h5ltread_dataset_nfl4_c, H5LTREAD_DATASET_NFL4_C)
-# define nh5ltread_dataset_nfl5_c H5_FC_FUNC_(h5ltread_dataset_nfl5_c, H5LTREAD_DATASET_NFL5_C)
-# define nh5ltread_dataset_nfl6_c H5_FC_FUNC_(h5ltread_dataset_nfl6_c, H5LTREAD_DATASET_NFL6_C)
-# define nh5ltread_dataset_nfl7_c H5_FC_FUNC_(h5ltread_dataset_nfl7_c, H5LTREAD_DATASET_NFL7_C)
-# define nh5ltread_dataset_ndl1_c H5_FC_FUNC_(h5ltread_dataset_ndl1_c, H5LTREAD_DATASET_NDL1_C)
-# define nh5ltread_dataset_ndl2_c H5_FC_FUNC_(h5ltread_dataset_ndl2_c, H5LTREAD_DATASET_NDL2_C)
-# define nh5ltread_dataset_ndl3_c H5_FC_FUNC_(h5ltread_dataset_ndl3_c, H5LTREAD_DATASET_NDL3_C)
-# define nh5ltread_dataset_ndl4_c H5_FC_FUNC_(h5ltread_dataset_ndl4_c, H5LTREAD_DATASET_NDL4_C)
-# define nh5ltread_dataset_ndl5_c H5_FC_FUNC_(h5ltread_dataset_ndl5_c, H5LTREAD_DATASET_NDL5_C)
-# define nh5ltread_dataset_ndl6_c H5_FC_FUNC_(h5ltread_dataset_ndl6_c, H5LTREAD_DATASET_NDL6_C)
-# define nh5ltread_dataset_ndl7_c H5_FC_FUNC_(h5ltread_dataset_ndl7_c, H5LTREAD_DATASET_NDL7_C)
-# define nh5ltmake_dataset_string_c H5_FC_FUNC_(h5ltmake_dataset_string_c, H5LTMAKE_DATASET_STRING_C)
-# define nh5ltread_dataset_string_c H5_FC_FUNC_(h5ltread_dataset_string_c, H5LTREAD_DATASET_STRING_C)
-
-# define nh5ltset_attribute_int_c H5_FC_FUNC_(h5ltset_attribute_int_c, H5LTSET_ATTRIBUTE_INT_C)
-# define nh5ltset_attribute_float_c H5_FC_FUNC_(h5ltset_attribute_float_c, H5LTSET_ATTRIBUTE_FLOAT_C)
-# define nh5ltset_attribute_double_c H5_FC_FUNC_(h5ltset_attribute_double_c, H5LTSET_ATTRIBUTE_DOUBLE_C)
-# define nh5ltset_attribute_string_c H5_FC_FUNC_(h5ltset_attribute_string_c, H5LTSET_ATTRIBUTE_STRING_C)
-
-# define nh5ltget_attribute_int_c H5_FC_FUNC_(h5ltget_attribute_int_c, H5LTGET_ATTRIBUTE_INT_C)
-# define nh5ltget_attribute_float_c H5_FC_FUNC_(h5ltget_attribute_float_c, H5LTGET_ATTRIBUTE_FLOAT_C)
-# define nh5ltget_attribute_double_c H5_FC_FUNC_(h5ltget_attribute_double_c, H5LTGET_ATTRIBUTE_DOUBLE_C)
-# define nh5ltget_attribute_string_c H5_FC_FUNC_(h5ltget_attribute_string_c, H5LTGET_ATTRIBUTE_STRING_C)
-
-# define nh5ltget_dataset_ndims_c H5_FC_FUNC_(h5ltget_dataset_ndims_c, H5LTGET_DATASET_NDIMS_C)
-# define nh5ltfind_dataset_c H5_FC_FUNC_(h5ltfind_dataset_c, H5LTFIND_DATASET_C)
-# define nh5ltget_dataset_info_c H5_FC_FUNC_(h5ltget_dataset_info_c, H5LTGET_DATASET_INFO_C)
-
-# define nh5ltget_attribute_ndims_c H5_FC_FUNC_(h5ltget_attribute_ndims_c, H5LTGET_ATTRIBUTE_NDIMS_C)
-# define nh5ltget_attribute_info_c H5_FC_FUNC_(h5ltget_attribute_info_c, H5LTGET_ATTRIBUTE_INFO_C)
+ * Functions from H5LTfc.c
+ */
+#define nh5ltmake_dataset_c H5_FC_FUNC_(h5ltmake_dataset_c, H5LTMAKE_DATASET_C)
+#define nh5ltmake_dataset_int1_c H5_FC_FUNC_(h5ltmake_dataset_int1_c, H5LTMAKE_DATASET_INT1_C)
+#define nh5ltmake_dataset_int2_c H5_FC_FUNC_(h5ltmake_dataset_int2_c, H5LTMAKE_DATASET_INT2_C)
+#define nh5ltmake_dataset_int3_c H5_FC_FUNC_(h5ltmake_dataset_int3_c, H5LTMAKE_DATASET_INT3_C)
+#define nh5ltmake_dataset_int4_c H5_FC_FUNC_(h5ltmake_dataset_int4_c, H5LTMAKE_DATASET_INT4_C)
+#define nh5ltmake_dataset_int5_c H5_FC_FUNC_(h5ltmake_dataset_int5_c, H5LTMAKE_DATASET_INT5_C)
+#define nh5ltmake_dataset_int6_c H5_FC_FUNC_(h5ltmake_dataset_int6_c, H5LTMAKE_DATASET_INT6_C)
+#define nh5ltmake_dataset_int7_c H5_FC_FUNC_(h5ltmake_dataset_int7_c, H5LTMAKE_DATASET_INT7_C)
+#define nh5ltmake_dataset_fl1_c H5_FC_FUNC_(h5ltmake_dataset_fl1_c, H5LTMAKE_DATASET_FL1_C)
+#define nh5ltmake_dataset_fl2_c H5_FC_FUNC_(h5ltmake_dataset_fl2_c, H5LTMAKE_DATASET_FL2_C)
+#define nh5ltmake_dataset_fl3_c H5_FC_FUNC_(h5ltmake_dataset_fl3_c, H5LTMAKE_DATASET_FL3_C)
+#define nh5ltmake_dataset_fl4_c H5_FC_FUNC_(h5ltmake_dataset_fl4_c, H5LTMAKE_DATASET_FL4_C)
+#define nh5ltmake_dataset_fl5_c H5_FC_FUNC_(h5ltmake_dataset_fl5_c, H5LTMAKE_DATASET_FL5_C)
+#define nh5ltmake_dataset_fl6_c H5_FC_FUNC_(h5ltmake_dataset_fl6_c, H5LTMAKE_DATASET_FL6_C)
+#define nh5ltmake_dataset_fl7_c H5_FC_FUNC_(h5ltmake_dataset_fl7_c, H5LTMAKE_DATASET_FL7_C)
+#define nh5ltmake_dataset_dl1_c H5_FC_FUNC_(h5ltmake_dataset_dl1_c, H5LTMAKE_DATASET_DL1_C)
+#define nh5ltmake_dataset_dl2_c H5_FC_FUNC_(h5ltmake_dataset_dl2_c, H5LTMAKE_DATASET_DL2_C)
+#define nh5ltmake_dataset_dl3_c H5_FC_FUNC_(h5ltmake_dataset_dl3_c, H5LTMAKE_DATASET_DL3_C)
+#define nh5ltmake_dataset_dl4_c H5_FC_FUNC_(h5ltmake_dataset_dl4_c, H5LTMAKE_DATASET_DL4_C)
+#define nh5ltmake_dataset_dl5_c H5_FC_FUNC_(h5ltmake_dataset_dl5_c, H5LTMAKE_DATASET_DL5_C)
+#define nh5ltmake_dataset_dl6_c H5_FC_FUNC_(h5ltmake_dataset_dl6_c, H5LTMAKE_DATASET_DL6_C)
+#define nh5ltmake_dataset_dl7_c H5_FC_FUNC_(h5ltmake_dataset_dl7_c, H5LTMAKE_DATASET_DL7_C)
+#define nh5ltmake_dataset_nint1_c H5_FC_FUNC_(h5ltmake_dataset_nint1_c, H5LTMAKE_DATASET_NINT1_C)
+#define nh5ltmake_dataset_nint2_c H5_FC_FUNC_(h5ltmake_dataset_nint2_c, H5LTMAKE_DATASET_NINT2_C)
+#define nh5ltmake_dataset_nint3_c H5_FC_FUNC_(h5ltmake_dataset_nint3_c, H5LTMAKE_DATASET_NINT3_C)
+#define nh5ltmake_dataset_nint4_c H5_FC_FUNC_(h5ltmake_dataset_nint4_c, H5LTMAKE_DATASET_NINT4_C)
+#define nh5ltmake_dataset_nint5_c H5_FC_FUNC_(h5ltmake_dataset_nint5_c, H5LTMAKE_DATASET_NINT5_C)
+#define nh5ltmake_dataset_nint6_c H5_FC_FUNC_(h5ltmake_dataset_nint6_c, H5LTMAKE_DATASET_NINT6_C)
+#define nh5ltmake_dataset_nint7_c H5_FC_FUNC_(h5ltmake_dataset_nint7_c, H5LTMAKE_DATASET_NINT7_C)
+#define nh5ltmake_dataset_nfl1_c H5_FC_FUNC_(h5ltmake_dataset_nfl1_c, H5LTMAKE_DATASET_NFL1_C)
+#define nh5ltmake_dataset_nfl2_c H5_FC_FUNC_(h5ltmake_dataset_nfl2_c, H5LTMAKE_DATASET_NFL2_C)
+#define nh5ltmake_dataset_nfl3_c H5_FC_FUNC_(h5ltmake_dataset_nfl3_c, H5LTMAKE_DATASET_NFL3_C)
+#define nh5ltmake_dataset_nfl4_c H5_FC_FUNC_(h5ltmake_dataset_nfl4_c, H5LTMAKE_DATASET_NFL4_C)
+#define nh5ltmake_dataset_nfl5_c H5_FC_FUNC_(h5ltmake_dataset_nfl5_c, H5LTMAKE_DATASET_NFL5_C)
+#define nh5ltmake_dataset_nfl6_c H5_FC_FUNC_(h5ltmake_dataset_nfl6_c, H5LTMAKE_DATASET_NFL6_C)
+#define nh5ltmake_dataset_nfl7_c H5_FC_FUNC_(h5ltmake_dataset_nfl7_c, H5LTMAKE_DATASET_NFL7_C)
+#define nh5ltmake_dataset_ndl1_c H5_FC_FUNC_(h5ltmake_dataset_ndl1_c, H5LTMAKE_DATASET_NDL1_C)
+#define nh5ltmake_dataset_ndl2_c H5_FC_FUNC_(h5ltmake_dataset_ndl2_c, H5LTMAKE_DATASET_NDL2_C)
+#define nh5ltmake_dataset_ndl3_c H5_FC_FUNC_(h5ltmake_dataset_ndl3_c, H5LTMAKE_DATASET_NDL3_C)
+#define nh5ltmake_dataset_ndl4_c H5_FC_FUNC_(h5ltmake_dataset_ndl4_c, H5LTMAKE_DATASET_NDL4_C)
+#define nh5ltmake_dataset_ndl5_c H5_FC_FUNC_(h5ltmake_dataset_ndl5_c, H5LTMAKE_DATASET_NDL5_C)
+#define nh5ltmake_dataset_ndl6_c H5_FC_FUNC_(h5ltmake_dataset_ndl6_c, H5LTMAKE_DATASET_NDL6_C)
+#define nh5ltmake_dataset_ndl7_c H5_FC_FUNC_(h5ltmake_dataset_ndl7_c, H5LTMAKE_DATASET_NDL7_C)
+#define nh5ltread_dataset_c H5_FC_FUNC_(h5ltread_dataset_c, H5LTREAD_DATASET_C)
+#define nh5ltread_dataset_int1_c H5_FC_FUNC_(h5ltread_dataset_int1_c, H5LTREAD_DATASET_INT1_C)
+#define nh5ltread_dataset_int2_c H5_FC_FUNC_(h5ltread_dataset_int2_c, H5LTREAD_DATASET_INT2_C)
+#define nh5ltread_dataset_int3_c H5_FC_FUNC_(h5ltread_dataset_int3_c, H5LTREAD_DATASET_INT3_C)
+#define nh5ltread_dataset_int4_c H5_FC_FUNC_(h5ltread_dataset_int4_c, H5LTREAD_DATASET_INT4_C)
+#define nh5ltread_dataset_int5_c H5_FC_FUNC_(h5ltread_dataset_int5_c, H5LTREAD_DATASET_INT5_C)
+#define nh5ltread_dataset_int6_c H5_FC_FUNC_(h5ltread_dataset_int6_c, H5LTREAD_DATASET_INT6_C)
+#define nh5ltread_dataset_int7_c H5_FC_FUNC_(h5ltread_dataset_int7_c, H5LTREAD_DATASET_INT7_C)
+#define nh5ltread_dataset_fl1_c H5_FC_FUNC_(h5ltread_dataset_fl1_c, H5LTREAD_DATASET_FL1_C)
+#define nh5ltread_dataset_fl2_c H5_FC_FUNC_(h5ltread_dataset_fl2_c, H5LTREAD_DATASET_FL2_C)
+#define nh5ltread_dataset_fl3_c H5_FC_FUNC_(h5ltread_dataset_fl3_c, H5LTREAD_DATASET_FL3_C)
+#define nh5ltread_dataset_fl4_c H5_FC_FUNC_(h5ltread_dataset_fl4_c, H5LTREAD_DATASET_FL4_C)
+#define nh5ltread_dataset_fl5_c H5_FC_FUNC_(h5ltread_dataset_fl5_c, H5LTREAD_DATASET_FL5_C)
+#define nh5ltread_dataset_fl6_c H5_FC_FUNC_(h5ltread_dataset_fl6_c, H5LTREAD_DATASET_FL6_C)
+#define nh5ltread_dataset_fl7_c H5_FC_FUNC_(h5ltread_dataset_fl7_c, H5LTREAD_DATASET_FL7_C)
+#define nh5ltread_dataset_dl1_c H5_FC_FUNC_(h5ltread_dataset_dl1_c, H5LTREAD_DATASET_DL1_C)
+#define nh5ltread_dataset_dl2_c H5_FC_FUNC_(h5ltread_dataset_dl2_c, H5LTREAD_DATASET_DL2_C)
+#define nh5ltread_dataset_dl3_c H5_FC_FUNC_(h5ltread_dataset_dl3_c, H5LTREAD_DATASET_DL3_C)
+#define nh5ltread_dataset_dl4_c H5_FC_FUNC_(h5ltread_dataset_dl4_c, H5LTREAD_DATASET_DL4_C)
+#define nh5ltread_dataset_dl5_c H5_FC_FUNC_(h5ltread_dataset_dl5_c, H5LTREAD_DATASET_DL5_C)
+#define nh5ltread_dataset_dl6_c H5_FC_FUNC_(h5ltread_dataset_dl6_c, H5LTREAD_DATASET_DL6_C)
+#define nh5ltread_dataset_dl7_c H5_FC_FUNC_(h5ltread_dataset_dl7_c, H5LTREAD_DATASET_DL7_C)
+#define nh5ltread_dataset_nint1_c H5_FC_FUNC_(h5ltread_dataset_nint1_c, H5LTREAD_DATASET_NINT1_C)
+#define nh5ltread_dataset_nint2_c H5_FC_FUNC_(h5ltread_dataset_nint2_c, H5LTREAD_DATASET_NINT2_C)
+#define nh5ltread_dataset_nint3_c H5_FC_FUNC_(h5ltread_dataset_nint3_c, H5LTREAD_DATASET_NINT3_C)
+#define nh5ltread_dataset_nint4_c H5_FC_FUNC_(h5ltread_dataset_nint4_c, H5LTREAD_DATASET_NINT4_C)
+#define nh5ltread_dataset_nint5_c H5_FC_FUNC_(h5ltread_dataset_nint5_c, H5LTREAD_DATASET_NINT5_C)
+#define nh5ltread_dataset_nint6_c H5_FC_FUNC_(h5ltread_dataset_nint6_c, H5LTREAD_DATASET_NINT6_C)
+#define nh5ltread_dataset_nint7_c H5_FC_FUNC_(h5ltread_dataset_nint7_c, H5LTREAD_DATASET_NINT7_C)
+#define nh5ltread_dataset_nfl1_c H5_FC_FUNC_(h5ltread_dataset_nfl1_c, H5LTREAD_DATASET_NFL1_C)
+#define nh5ltread_dataset_nfl2_c H5_FC_FUNC_(h5ltread_dataset_nfl2_c, H5LTREAD_DATASET_NFL2_C)
+#define nh5ltread_dataset_nfl3_c H5_FC_FUNC_(h5ltread_dataset_nfl3_c, H5LTREAD_DATASET_NFL3_C)
+#define nh5ltread_dataset_nfl4_c H5_FC_FUNC_(h5ltread_dataset_nfl4_c, H5LTREAD_DATASET_NFL4_C)
+#define nh5ltread_dataset_nfl5_c H5_FC_FUNC_(h5ltread_dataset_nfl5_c, H5LTREAD_DATASET_NFL5_C)
+#define nh5ltread_dataset_nfl6_c H5_FC_FUNC_(h5ltread_dataset_nfl6_c, H5LTREAD_DATASET_NFL6_C)
+#define nh5ltread_dataset_nfl7_c H5_FC_FUNC_(h5ltread_dataset_nfl7_c, H5LTREAD_DATASET_NFL7_C)
+#define nh5ltread_dataset_ndl1_c H5_FC_FUNC_(h5ltread_dataset_ndl1_c, H5LTREAD_DATASET_NDL1_C)
+#define nh5ltread_dataset_ndl2_c H5_FC_FUNC_(h5ltread_dataset_ndl2_c, H5LTREAD_DATASET_NDL2_C)
+#define nh5ltread_dataset_ndl3_c H5_FC_FUNC_(h5ltread_dataset_ndl3_c, H5LTREAD_DATASET_NDL3_C)
+#define nh5ltread_dataset_ndl4_c H5_FC_FUNC_(h5ltread_dataset_ndl4_c, H5LTREAD_DATASET_NDL4_C)
+#define nh5ltread_dataset_ndl5_c H5_FC_FUNC_(h5ltread_dataset_ndl5_c, H5LTREAD_DATASET_NDL5_C)
+#define nh5ltread_dataset_ndl6_c H5_FC_FUNC_(h5ltread_dataset_ndl6_c, H5LTREAD_DATASET_NDL6_C)
+#define nh5ltread_dataset_ndl7_c H5_FC_FUNC_(h5ltread_dataset_ndl7_c, H5LTREAD_DATASET_NDL7_C)
+#define nh5ltmake_dataset_string_c H5_FC_FUNC_(h5ltmake_dataset_string_c, H5LTMAKE_DATASET_STRING_C)
+#define nh5ltread_dataset_string_c H5_FC_FUNC_(h5ltread_dataset_string_c, H5LTREAD_DATASET_STRING_C)
+
+#define nh5ltset_attribute_int_c H5_FC_FUNC_(h5ltset_attribute_int_c, H5LTSET_ATTRIBUTE_INT_C)
+#define nh5ltset_attribute_float_c H5_FC_FUNC_(h5ltset_attribute_float_c, H5LTSET_ATTRIBUTE_FLOAT_C)
+#define nh5ltset_attribute_double_c H5_FC_FUNC_(h5ltset_attribute_double_c, H5LTSET_ATTRIBUTE_DOUBLE_C)
+#define nh5ltset_attribute_string_c H5_FC_FUNC_(h5ltset_attribute_string_c, H5LTSET_ATTRIBUTE_STRING_C)
+
+#define nh5ltget_attribute_int_c H5_FC_FUNC_(h5ltget_attribute_int_c, H5LTGET_ATTRIBUTE_INT_C)
+#define nh5ltget_attribute_float_c H5_FC_FUNC_(h5ltget_attribute_float_c, H5LTGET_ATTRIBUTE_FLOAT_C)
+#define nh5ltget_attribute_double_c H5_FC_FUNC_(h5ltget_attribute_double_c, H5LTGET_ATTRIBUTE_DOUBLE_C)
+#define nh5ltget_attribute_string_c H5_FC_FUNC_(h5ltget_attribute_string_c, H5LTGET_ATTRIBUTE_STRING_C)
+
+#define nh5ltget_dataset_ndims_c H5_FC_FUNC_(h5ltget_dataset_ndims_c, H5LTGET_DATASET_NDIMS_C)
+#define nh5ltfind_dataset_c H5_FC_FUNC_(h5ltfind_dataset_c, H5LTFIND_DATASET_C)
+#define nh5ltget_dataset_info_c H5_FC_FUNC_(h5ltget_dataset_info_c, H5LTGET_DATASET_INFO_C)
+
+#define nh5ltget_attribute_ndims_c H5_FC_FUNC_(h5ltget_attribute_ndims_c, H5LTGET_ATTRIBUTE_NDIMS_C)
+#define nh5ltget_attribute_info_c H5_FC_FUNC_(h5ltget_attribute_info_c, H5LTGET_ATTRIBUTE_INFO_C)
/*-------------------------------------------------------------------------
* Image
*-------------------------------------------------------------------------
*/
-# define nh5immake_image_8bit_c H5_FC_FUNC_(h5immake_image_8bit_c, H5IMMAKE_IMAGE_8BIT_C)
-# define nh5immake_image_24bit_c H5_FC_FUNC_(h5immake_image_24bit_c, H5IMMAKE_IMAGE_24BIT_C)
-# define nh5imread_image_c H5_FC_FUNC_(h5imread_image_c, H5IMREAD_IMAGE_C)
-# define nh5imget_image_info_c H5_FC_FUNC_(h5imget_image_info_c, H5IMGET_IMAGE_INFO_C)
-# define nh5imis_image_c H5_FC_FUNC_(h5imis_image_c, H5IMIS_IMAGE_C)
-# define nh5immake_palette_c H5_FC_FUNC_(h5immake_palette_c, H5IMMAKE_PALETTE_C)
-# define nh5imlink_palette_c H5_FC_FUNC_(h5imlink_palette_c, H5IMLINK_PALETTE_C)
-# define nh5imunlink_palette_c H5_FC_FUNC_(h5imunlink_palette_c, H5IMUNLINK_PALETTE_C)
-# define nh5imget_npalettes_c H5_FC_FUNC_(h5imget_npalettes_c, H5IMGET_NPALETTES_C)
-# define nh5imget_palette_info_c H5_FC_FUNC_(h5imget_palette_info_c, H5IMGET_PALETTE_INFO_C)
-# define nh5imget_palette_c H5_FC_FUNC_(h5imget_palette_c, H5IMGET_PALETTE_C)
-# define nh5imis_palette_c H5_FC_FUNC_(h5imis_palette_c, H5IMIS_PALETTE_C)
+#define nh5immake_image_8bit_c H5_FC_FUNC_(h5immake_image_8bit_c, H5IMMAKE_IMAGE_8BIT_C)
+#define nh5immake_image_24bit_c H5_FC_FUNC_(h5immake_image_24bit_c, H5IMMAKE_IMAGE_24BIT_C)
+#define nh5imread_image_c H5_FC_FUNC_(h5imread_image_c, H5IMREAD_IMAGE_C)
+#define nh5imget_image_info_c H5_FC_FUNC_(h5imget_image_info_c, H5IMGET_IMAGE_INFO_C)
+#define nh5imis_image_c H5_FC_FUNC_(h5imis_image_c, H5IMIS_IMAGE_C)
+#define nh5immake_palette_c H5_FC_FUNC_(h5immake_palette_c, H5IMMAKE_PALETTE_C)
+#define nh5imlink_palette_c H5_FC_FUNC_(h5imlink_palette_c, H5IMLINK_PALETTE_C)
+#define nh5imunlink_palette_c H5_FC_FUNC_(h5imunlink_palette_c, H5IMUNLINK_PALETTE_C)
+#define nh5imget_npalettes_c H5_FC_FUNC_(h5imget_npalettes_c, H5IMGET_NPALETTES_C)
+#define nh5imget_palette_info_c H5_FC_FUNC_(h5imget_palette_info_c, H5IMGET_PALETTE_INFO_C)
+#define nh5imget_palette_c H5_FC_FUNC_(h5imget_palette_c, H5IMGET_PALETTE_C)
+#define nh5imis_palette_c H5_FC_FUNC_(h5imis_palette_c, H5IMIS_PALETTE_C)
/*-------------------------------------------------------------------------
* Table
*-------------------------------------------------------------------------
*/
-# define nh5tbmake_table_c H5_FC_FUNC_(h5tbmake_table_c, H5TBMAKE_TABLE_C)
-# define nh5tbwrite_field_name_c H5_FC_FUNC_(h5tbwrite_field_name_c, H5TBWRITE_FIELD_NAME_C)
-# define nh5tbwrite_field_name_int_c H5_FC_FUNC_(h5tbwrite_field_name_int_c, H5TBWRITE_FIELD_NAME_INT_C)
-# define nh5tbwrite_field_name_fl_c H5_FC_FUNC_(h5tbwrite_field_name_fl_c, H5TBWRITE_FIELD_NAME_FL_C)
-# define nh5tbwrite_field_name_dl_c H5_FC_FUNC_(h5tbwrite_field_name_dl_c, H5TBWRITE_FIELD_NAME_DL_C)
-# define nh5tbwrite_field_name_st_c H5_FC_FUNC_(h5tbwrite_field_name_st_c, H5TBWRITE_FIELD_NAME_ST_C)
-# define nh5tbread_field_name_c H5_FC_FUNC_(h5tbread_field_name_c, H5TBREAD_FIELD_NAME_C)
-# define nh5tbread_field_name_int_c H5_FC_FUNC_(h5tbread_field_name_int_c, H5TBREAD_FIELD_NAME_INT_C)
-# define nh5tbread_field_name_fl_c H5_FC_FUNC_(h5tbread_field_name_fl_c, H5TBREAD_FIELD_NAME_FL_C)
-# define nh5tbread_field_name_dl_c H5_FC_FUNC_(h5tbread_field_name_dl_c, H5TBREAD_FIELD_NAME_DL_C)
-# define nh5tbread_field_name_st_c H5_FC_FUNC_(h5tbread_field_name_st_c, H5TBREAD_FIELD_NAME_ST_C)
-# define nh5tbwrite_field_index_c H5_FC_FUNC_(h5tbwrite_field_index_c, H5TBWRITE_FIELD_INDEX_C)
-# define nh5tbwrite_field_index_int_c H5_FC_FUNC_(h5tbwrite_field_index_int_c, H5TBWRITE_FIELD_INDEX_INT_C)
-# define nh5tbwrite_field_index_fl_c H5_FC_FUNC_(h5tbwrite_field_index_fl_c, H5TBWRITE_FIELD_INDEX_FL_C)
-# define nh5tbwrite_field_index_dl_c H5_FC_FUNC_(h5tbwrite_field_index_dl_c, H5TBWRITE_FIELD_INDEX_DL_C)
-# define nh5tbwrite_field_index_st_c H5_FC_FUNC_(h5tbwrite_field_index_st_c, H5TBWRITE_FIELD_INDEX_ST_C)
-# define nh5tbread_field_index_c H5_FC_FUNC_(h5tbread_field_index_c, H5TBREAD_FIELD_INDEX_C)
-# define nh5tbread_field_index_int_c H5_FC_FUNC_(h5tbread_field_index_int_c, H5TBREAD_FIELD_INDEX_INT_C)
-# define nh5tbread_field_index_fl_c H5_FC_FUNC_(h5tbread_field_index_fl_c, H5TBREAD_FIELD_INDEX_FL_C)
-# define nh5tbread_field_index_dl_c H5_FC_FUNC_(h5tbread_field_index_dl_c, H5TBREAD_FIELD_INDEX_DL_C)
-# define nh5tbread_field_index_st_c H5_FC_FUNC_(h5tbread_field_index_st_c, H5TBREAD_FIELD_INDEX_ST_C)
-# define nh5tbinsert_field_c H5_FC_FUNC_(h5tbinsert_field_c, H5TBINSERT_FIELD_C)
-# define nh5tbinsert_field_int_c H5_FC_FUNC_(h5tbinsert_field_int_c, H5TBINSERT_FIELD_INT_C)
-# define nh5tbinsert_field_fl_c H5_FC_FUNC_(h5tbinsert_field_fl_c, H5TBINSERT_FIELD_FL_C)
-# define nh5tbinsert_field_dl_c H5_FC_FUNC_(h5tbinsert_field_dl_c, H5TBINSERT_FIELD_DL_C)
-# define nh5tbinsert_field_st_c H5_FC_FUNC_(h5tbinsert_field_st_c, H5TBINSERT_FIELD_ST_C)
-# define nh5tbdelete_field_c H5_FC_FUNC_(h5tbdelete_field_c, H5TBDELETE_FIELD_C)
-# define nh5tbget_table_info_c H5_FC_FUNC_(h5tbget_table_info_c, H5TBGET_TABLE_INFO_C)
-# define nh5tbget_field_info_c H5_FC_FUNC_(h5tbget_field_info_c, H5TBGET_FIELD_INFO_C)
+#define nh5tbmake_table_c H5_FC_FUNC_(h5tbmake_table_c, H5TBMAKE_TABLE_C)
+#define nh5tbwrite_field_name_c H5_FC_FUNC_(h5tbwrite_field_name_c, H5TBWRITE_FIELD_NAME_C)
+#define nh5tbwrite_field_name_int_c H5_FC_FUNC_(h5tbwrite_field_name_int_c, H5TBWRITE_FIELD_NAME_INT_C)
+#define nh5tbwrite_field_name_fl_c H5_FC_FUNC_(h5tbwrite_field_name_fl_c, H5TBWRITE_FIELD_NAME_FL_C)
+#define nh5tbwrite_field_name_dl_c H5_FC_FUNC_(h5tbwrite_field_name_dl_c, H5TBWRITE_FIELD_NAME_DL_C)
+#define nh5tbwrite_field_name_st_c H5_FC_FUNC_(h5tbwrite_field_name_st_c, H5TBWRITE_FIELD_NAME_ST_C)
+#define nh5tbread_field_name_c H5_FC_FUNC_(h5tbread_field_name_c, H5TBREAD_FIELD_NAME_C)
+#define nh5tbread_field_name_int_c H5_FC_FUNC_(h5tbread_field_name_int_c, H5TBREAD_FIELD_NAME_INT_C)
+#define nh5tbread_field_name_fl_c H5_FC_FUNC_(h5tbread_field_name_fl_c, H5TBREAD_FIELD_NAME_FL_C)
+#define nh5tbread_field_name_dl_c H5_FC_FUNC_(h5tbread_field_name_dl_c, H5TBREAD_FIELD_NAME_DL_C)
+#define nh5tbread_field_name_st_c H5_FC_FUNC_(h5tbread_field_name_st_c, H5TBREAD_FIELD_NAME_ST_C)
+#define nh5tbwrite_field_index_c H5_FC_FUNC_(h5tbwrite_field_index_c, H5TBWRITE_FIELD_INDEX_C)
+#define nh5tbwrite_field_index_int_c H5_FC_FUNC_(h5tbwrite_field_index_int_c, H5TBWRITE_FIELD_INDEX_INT_C)
+#define nh5tbwrite_field_index_fl_c H5_FC_FUNC_(h5tbwrite_field_index_fl_c, H5TBWRITE_FIELD_INDEX_FL_C)
+#define nh5tbwrite_field_index_dl_c H5_FC_FUNC_(h5tbwrite_field_index_dl_c, H5TBWRITE_FIELD_INDEX_DL_C)
+#define nh5tbwrite_field_index_st_c H5_FC_FUNC_(h5tbwrite_field_index_st_c, H5TBWRITE_FIELD_INDEX_ST_C)
+#define nh5tbread_field_index_c H5_FC_FUNC_(h5tbread_field_index_c, H5TBREAD_FIELD_INDEX_C)
+#define nh5tbread_field_index_int_c H5_FC_FUNC_(h5tbread_field_index_int_c, H5TBREAD_FIELD_INDEX_INT_C)
+#define nh5tbread_field_index_fl_c H5_FC_FUNC_(h5tbread_field_index_fl_c, H5TBREAD_FIELD_INDEX_FL_C)
+#define nh5tbread_field_index_dl_c H5_FC_FUNC_(h5tbread_field_index_dl_c, H5TBREAD_FIELD_INDEX_DL_C)
+#define nh5tbread_field_index_st_c H5_FC_FUNC_(h5tbread_field_index_st_c, H5TBREAD_FIELD_INDEX_ST_C)
+#define nh5tbinsert_field_c H5_FC_FUNC_(h5tbinsert_field_c, H5TBINSERT_FIELD_C)
+#define nh5tbinsert_field_int_c H5_FC_FUNC_(h5tbinsert_field_int_c, H5TBINSERT_FIELD_INT_C)
+#define nh5tbinsert_field_fl_c H5_FC_FUNC_(h5tbinsert_field_fl_c, H5TBINSERT_FIELD_FL_C)
+#define nh5tbinsert_field_dl_c H5_FC_FUNC_(h5tbinsert_field_dl_c, H5TBINSERT_FIELD_DL_C)
+#define nh5tbinsert_field_st_c H5_FC_FUNC_(h5tbinsert_field_st_c, H5TBINSERT_FIELD_ST_C)
+#define nh5tbdelete_field_c H5_FC_FUNC_(h5tbdelete_field_c, H5TBDELETE_FIELD_C)
+#define nh5tbget_table_info_c H5_FC_FUNC_(h5tbget_table_info_c, H5TBGET_TABLE_INFO_C)
+#define nh5tbget_field_info_c H5_FC_FUNC_(h5tbget_field_info_c, H5TBGET_FIELD_INFO_C)
+
+HDF5_HL_F90CSTUBDLL
+int_f
+nh5dsset_scale_c(hid_t_f *dsid, _fcd dimname, int_f *dimnamelen);
+
+HDF5_HL_F90CSTUBDLL
+int_f
+nh5dsattach_scale_c( hid_t_f *did, hid_t_f *dsid, int_f *idx);
+
+HDF5_HL_F90CSTUBDLL
+int_f
+nh5dsattach_scale_c( hid_t_f *did, hid_t_f *dsid, int_f *idx);
+
+HDF5_HL_F90CSTUBDLL
+int_f
+nh5dsdetach_scale_c( hid_t_f *did, hid_t_f *dsid, int_f *idx);
+
+HDF5_HL_F90CSTUBDLL
+int_f
+nh5dsis_attached_c( hid_t_f *did, hid_t_f *dsid, int_f *idx, int_f *c_is_attached);
+
+HDF5_HL_F90CSTUBDLL
+int_f
+nh5dsget_label_c(hid_t_f *did, int_f *idx, _fcd label, size_t_f *size);
+
+HDF5_HL_F90CSTUBDLL
+int_f
+nh5dsis_scale_c(hid_t_f *did, int_f *is_scale);
+
+
+HDF5_HL_F90CSTUBDLL
+int_f
+nh5dsset_label_c(hid_t_f *did, int_f *idx, _fcd label, int_f *labellen);
+
+HDF5_HL_F90CSTUBDLL
+int_f
+nh5dsget_scale_name_c(hid_t_f *did, _fcd label, size_t_f *size);
+
+HDF5_HL_F90CSTUBDLL
+int_f
+nh5dsget_num_scales_c( hid_t_f *did, int_f *idx, int_f *num_scales);
+
HDF5_HL_F90CSTUBDLL
int_f
diff --git a/hl/fortran/src/Makefile.am b/hl/fortran/src/Makefile.am
index f872a63..9835196 100644
--- a/hl/fortran/src/Makefile.am
+++ b/hl/fortran/src/Makefile.am
@@ -46,8 +46,8 @@ endif
#endif
# List sources to include in the HDF5 HL Fortran library.
-libhdf5hl_fortran_la_SOURCES=H5LTfc.c H5IMfc.c H5IMcc.c H5TBfc.c H5LTff.f90 \
- H5IMff.f90 H5TBff.f90
+libhdf5hl_fortran_la_SOURCES=H5DSfc.c H5LTfc.c H5IMfc.c H5IMcc.c H5TBfc.c \
+ H5DSff.f90 H5LTff.f90 H5IMff.f90 H5TBff.f90
# HDF5 HL Fortran library depends on HDF5 HL Library and HDF5 Fortran Library.
libhdf5hl_fortran_la_LIBADD=$(LIBH5_HL) $(LIBH5F)
@@ -79,6 +79,7 @@ uninstall-local:
# determining this automagically (like we do with the C files). So, when
# doing a parallel make, some modules could be made way before the
# modules they depend upon are actually made. *sigh*
+H5DSff.lo: $(srcdir)/H5DSff.f90
H5LTff.lo: $(srcdir)/H5LTff.f90
H5IMff.lo: $(srcdir)/H5IMff.f90
H5TBff.lo: $(srcdir)/H5TBff.f90
diff --git a/hl/fortran/src/Makefile.in b/hl/fortran/src/Makefile.in
index 68b6e86..eb44c1c 100644
--- a/hl/fortran/src/Makefile.in
+++ b/hl/fortran/src/Makefile.in
@@ -94,8 +94,8 @@ am__base_list = \
am__installdirs = "$(DESTDIR)$(libdir)"
LTLIBRARIES = $(lib_LTLIBRARIES)
libhdf5hl_fortran_la_DEPENDENCIES = $(LIBH5_HL) $(LIBH5F)
-am_libhdf5hl_fortran_la_OBJECTS = H5LTfc.lo H5IMfc.lo H5IMcc.lo \
- H5TBfc.lo H5LTff.lo H5IMff.lo H5TBff.lo
+am_libhdf5hl_fortran_la_OBJECTS = H5DSfc.lo H5LTfc.lo H5IMfc.lo \
+ H5IMcc.lo H5TBfc.lo H5DSff.lo H5LTff.lo H5IMff.lo H5TBff.lo
libhdf5hl_fortran_la_OBJECTS = $(am_libhdf5hl_fortran_la_OBJECTS)
AM_V_lt = $(am__v_lt_$(V))
am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
@@ -451,8 +451,8 @@ libhdf5hl_fortran_la_LDFLAGS = -version-info $(LT_VERS_INTERFACE):$(LT_VERS_REVI
#endif
# List sources to include in the HDF5 HL Fortran library.
-libhdf5hl_fortran_la_SOURCES = H5LTfc.c H5IMfc.c H5IMcc.c H5TBfc.c H5LTff.f90 \
- H5IMff.f90 H5TBff.f90
+libhdf5hl_fortran_la_SOURCES = H5DSfc.c H5LTfc.c H5IMfc.c H5IMcc.c H5TBfc.c \
+ H5DSff.f90 H5LTff.f90 H5IMff.f90 H5TBff.f90
# HDF5 HL Fortran library depends on HDF5 HL Library and HDF5 Fortran Library.
@@ -547,6 +547,7 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5DSfc.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5IMcc.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5IMfc.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5LTfc.Plo@am__quote@
@@ -851,6 +852,7 @@ uninstall-local:
# determining this automagically (like we do with the C files). So, when
# doing a parallel make, some modules could be made way before the
# modules they depend upon are actually made. *sigh*
+H5DSff.lo: $(srcdir)/H5DSff.f90
H5LTff.lo: $(srcdir)/H5LTff.f90
H5IMff.lo: $(srcdir)/H5IMff.f90
H5TBff.lo: $(srcdir)/H5TBff.f90
diff --git a/hl/fortran/test/Makefile.am b/hl/fortran/test/Makefile.am
index 7f149c8..cd281b7 100644
--- a/hl/fortran/test/Makefile.am
+++ b/hl/fortran/test/Makefile.am
@@ -33,18 +33,19 @@ else
endif
# Our main target, the test programs
-TEST_PROG=tstlite tstimage tsttable
+TEST_PROG=tstds tstlite tstimage tsttable
check_PROGRAMS=$(TEST_PROG)
LDADD= $(LIBH5F_HL) $(LIBH5F) $(LIBH5_HL) $(LIBHDF5)
# Source files for the programs
+tstds_SOURCES=tstds.f90
tstlite_SOURCES=tstlite.f90
tstimage_SOURCES=tstimage.f90
tsttable_SOURCES=tsttable.f90
# Temporary files.
-CHECK_CLEANFILES+=dsetf[1-4].h5 f1img.h5 f1tab.h5
+CHECK_CLEANFILES+=dsetf[1-4].h5 f1img.h5 f1tab.h5 tstds.h5
# Mark this directory as part of the Fortran API (this affects output
# from tests in conclude.am)
diff --git a/hl/fortran/test/Makefile.in b/hl/fortran/test/Makefile.in
index 16e8b14..b7c6e74 100644
--- a/hl/fortran/test/Makefile.in
+++ b/hl/fortran/test/Makefile.in
@@ -69,14 +69,19 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/src/H5config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
-am__EXEEXT_1 = tstlite$(EXEEXT) tstimage$(EXEEXT) tsttable$(EXEEXT)
+am__EXEEXT_1 = tstds$(EXEEXT) tstlite$(EXEEXT) tstimage$(EXEEXT) \
+ tsttable$(EXEEXT)
+am_tstds_OBJECTS = tstds.$(OBJEXT)
+tstds_OBJECTS = $(am_tstds_OBJECTS)
+tstds_LDADD = $(LDADD)
+tstds_DEPENDENCIES = $(LIBH5F_HL) $(LIBH5F) $(LIBH5_HL) $(LIBHDF5)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
am_tstimage_OBJECTS = tstimage.$(OBJEXT)
tstimage_OBJECTS = $(am_tstimage_OBJECTS)
tstimage_LDADD = $(LDADD)
tstimage_DEPENDENCIES = $(LIBH5F_HL) $(LIBH5F) $(LIBH5_HL) $(LIBHDF5)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
am_tstlite_OBJECTS = tstlite.$(OBJEXT)
tstlite_OBJECTS = $(am_tstlite_OBJECTS)
tstlite_LDADD = $(LDADD)
@@ -105,8 +110,9 @@ am__v_FCLD_0 = @echo " FCLD " $@;
AM_V_GEN = $(am__v_GEN_$(V))
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
am__v_GEN_0 = @echo " GEN " $@;
-SOURCES = $(tstimage_SOURCES) $(tstlite_SOURCES) $(tsttable_SOURCES)
-DIST_SOURCES = $(tstimage_SOURCES) $(tstlite_SOURCES) \
+SOURCES = $(tstds_SOURCES) $(tstimage_SOURCES) $(tstlite_SOURCES) \
+ $(tsttable_SOURCES)
+DIST_SOURCES = $(tstds_SOURCES) $(tstimage_SOURCES) $(tstlite_SOURCES) \
$(tsttable_SOURCES)
ETAGS = etags
CTAGS = ctags
@@ -397,13 +403,14 @@ TRACE = perl $(top_srcdir)/bin/trace
# Temporary files.
CHECK_CLEANFILES = *.chkexe *.chklog *.clog dsetf[1-4].h5 f1img.h5 \
- f1tab.h5
+ f1tab.h5 tstds.h5
# Our main target, the test programs
-TEST_PROG = tstlite tstimage tsttable
+TEST_PROG = tstds tstlite tstimage tsttable
LDADD = $(LIBH5F_HL) $(LIBH5F) $(LIBH5_HL) $(LIBHDF5)
# Source files for the programs
+tstds_SOURCES = tstds.f90
tstlite_SOURCES = tstlite.f90
tstimage_SOURCES = tstimage.f90
tsttable_SOURCES = tsttable.f90
@@ -470,6 +477,9 @@ clean-checkPROGRAMS:
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
+tstds$(EXEEXT): $(tstds_OBJECTS) $(tstds_DEPENDENCIES)
+ @rm -f tstds$(EXEEXT)
+ $(AM_V_FCLD)$(FCLINK) $(tstds_OBJECTS) $(tstds_LDADD) $(LIBS)
tstimage$(EXEEXT): $(tstimage_OBJECTS) $(tstimage_DEPENDENCIES)
@rm -f tstimage$(EXEEXT)
$(AM_V_FCLD)$(FCLINK) $(tstimage_OBJECTS) $(tstimage_LDADD) $(LIBS)
diff --git a/hl/fortran/test/tstds.f90 b/hl/fortran/test/tstds.f90
new file mode 100644
index 0000000..8817989
--- /dev/null
+++ b/hl/fortran/test/tstds.f90
@@ -0,0 +1,347 @@
+! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+! * 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. *
+! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+PROGRAM test_ds
+
+ IMPLICIT NONE
+
+ INTEGER :: err
+
+ CALL test_testds(err)
+
+ IF(err.LT.0)THEN
+ WRITE(*,'(5X,A)') "DIMENSION SCALES TEST *FAILED*"
+ ENDIF
+
+END PROGRAM test_ds
+
+SUBROUTINE test_testds(err)
+
+ USE HDF5
+ USE H5LT
+ USE H5DS
+
+ IMPLICIT NONE
+
+ INTEGER, PARAMETER :: RANK = 2 ! rank of DATA dataset
+ INTEGER, PARAMETER :: DIM_DATA = 12
+ INTEGER, PARAMETER :: DIM1_SIZE = 3
+ INTEGER, PARAMETER :: DIM2_SIZE = 4
+ INTEGER, PARAMETER :: DIM1 = 1
+ INTEGER, PARAMETER :: DIM2 = 2
+ INTEGER, PARAMETER :: FAILED = -1
+
+ CHARACTER(LEN=6), PARAMETER :: DSET_NAME = "Mydata"
+ CHARACTER(LEN=5), PARAMETER :: DS_1_NAME = "Yaxis"
+ CHARACTER(LEN=5), PARAMETER :: DS_1_NAME_A = "Yaxiz"
+ CHARACTER(LEN=5), PARAMETER :: DS_2_NAME = "Xaxis"
+
+
+ INTEGER(hid_t) :: fid ! file ID
+ INTEGER(hid_t) :: did ! dataset ID
+ INTEGER(hid_t) :: dsid ! DS dataset ID
+ INTEGER :: rankds = 1 ! rank of DS dataset
+ INTEGER(hsize_t), DIMENSION(1:rank) :: dims = (/DIM2_SIZE,DIM1_SIZE/) ! size of DATA dataset
+ INTEGER, DIMENSION(1:DIM_DATA) :: buf = (/1,2,3,4,5,6,7,8,9,10,11,12/) ! DATA of DATA dataset
+ INTEGER(hsize_t), DIMENSION(1:1) :: s1_dim = (/DIM1_SIZE/) ! size of DS 1 dataset
+ INTEGER(hsize_t), DIMENSION(1:1) :: s2_dim = (/DIM2_SIZE/) ! size of DS 2 dataset
+ REAL, DIMENSION(1:DIM1_SIZE) :: s1_wbuf = (/10,20,30/) ! DATA of DS 1 dataset
+ INTEGER, DIMENSION(1:DIM2_SIZE) :: s2_wbuf = (/10,20,50,100/) ! DATA of DS 2 dataset
+ INTEGER :: err
+ INTEGER :: num_scales
+ INTEGER(size_t) :: name_len
+ CHARACTER(LEN=80) :: name
+ INTEGER(size_t) :: label_len
+ CHARACTER(LEN=80) :: label
+ LOGICAL :: is_attached, is_scale
+
+ !
+ ! Initialize FORTRAN predefined datatypes.
+ !
+ CALL h5open_f(err)
+ IF(err.LT.0) RETURN
+
+ ! create a file using default properties
+ CALL H5Fcreate_f("tstds.h5",H5F_ACC_TRUNC_F, fid, err)
+ IF(err.LT.0) RETURN
+
+ ! make a dataset
+ CALL H5LTmake_dataset_int_f(fid,DSET_NAME,rank,dims,buf, err)
+ IF(err.LT.0) RETURN
+
+ ! make a DS dataset for the first dimension
+ CALL H5LTmake_dataset_float_f(fid,DS_1_NAME,rankds,s1_dim,s1_wbuf,err)
+ IF(err.LT.0) RETURN
+
+ ! make a DS dataset for the second dimension
+ CALL H5LTmake_dataset_int_f(fid,DS_2_NAME,rankds,s2_dim,s2_wbuf,err)
+ IF(err.LT.0) RETURN
+
+ !-------------------------------------------------------------------------
+ ! attach the DS_1_NAME dimension scale to DSET_NAME at dimension 1
+ !-------------------------------------------------------------------------
+
+ CALL test_begin(' Test Attaching Dimension Scale ')
+
+ ! get the dataset id for DSET_NAME
+ CALL H5Dopen_f(fid, DSET_NAME, did, err)
+ IF(err.LT.0) RETURN
+
+ ! get the DS dataset id
+ CALL H5Dopen_f(fid, DS_1_NAME, dsid, err)
+ IF(err.LT.0) RETURN
+
+ ! check attaching to a non-existent dimension; should fail
+ CALL H5DSattach_scale_f(did, dsid, 20, err)
+ IF(err.NE.-1) THEN
+ err = FAILED ! should fail, mark as an error
+ CALL write_test_status(err)
+ RETURN
+ ENDIF
+
+ ! attach the DS_1_NAME dimension scale to DSET_NAME at dimension index 1
+ CALL H5DSattach_scale_f(did, dsid, DIM1, err)
+ IF(err.EQ.-1) THEN
+ CALL write_test_status(err)
+ RETURN
+ ENDIF
+ CALL write_test_status(err)
+
+ CALL test_begin(' Test If Dimension Scale Attached ')
+
+ CALL H5DSis_attached_f(did, dsid, DIM1, is_attached, err)
+ IF(err.EQ.-1.OR..NOT.is_attached) THEN
+ err = FAILED
+ CALL write_test_status(err)
+ RETURN
+ ENDIF
+ CALL write_test_status(err)
+
+ ! Check to see how many Dimension Scales are attached
+
+ CALL test_begin(' Test Getting Number Dimension Scales ')
+
+ CALL H5DSget_num_scales_f(did, DIM1, num_scales, err)
+ IF(err.LT.0.OR.num_scales.NE.1)THEN
+ err = FAILED
+ CALL write_test_status(err)
+ RETURN
+ ENDIF
+ CALL write_test_status(err)
+
+ CALL test_begin(' Test Detaching Dimension Scale ')
+
+ ! Detach scale
+ CALL H5DSdetach_scale_f(did, dsid, DIM1, err)
+ IF(err.LT.0) RETURN
+
+ ! Check to see if a dimension scale is attached, should be .false.
+ CALL H5DSis_attached_f(did, dsid, DIM1, is_attached, err)
+ IF(err.LT.0.OR.is_attached)THEN
+ err = FAILED
+ CALL write_test_status(err)
+ RETURN
+ ENDIF
+ CALL write_test_status(err)
+
+ !-------------------------------------------------------------------------
+ ! set the DS_1_NAME dimension scale to DSET_NAME at dimension 0
+ !-------------------------------------------------------------------------
+
+ CALL test_begin(' Test Setting Dimension Scale ')
+
+ CALL H5DSset_scale_f(dsid, err, "Dimension Scale Set 1")
+ IF(err.LT.0.OR.is_attached)THEN
+ err = FAILED
+ CALL write_test_status(err)
+ RETURN
+ ENDIF
+ CALL write_test_status(err)
+
+ CALL test_begin(' Test If Dimension Scale ')
+
+ CALL H5DSis_scale_f(dsid, is_scale, err)
+ IF(err.LT.0.OR..NOT.is_scale)THEN
+ err = FAILED
+ CALL write_test_status(err)
+ RETURN
+ ENDIF
+ CALL write_test_status(err)
+
+ ! Get scale name; test to large character buffer
+
+ CALL test_begin(' Test Getting Dimension Scale By Name ')
+
+ name_len = 25
+ name = ''
+ CALL H5DSget_scale_name_f(dsid, name, name_len, err)
+ IF(err.LT.0.OR.name_len.NE.21.OR.TRIM(name).NE."Dimension Scale Set 1")THEN
+ err = FAILED
+ CALL write_test_status(err)
+ RETURN
+ ENDIF
+
+ ! Get scale name; test exact size character buffer
+ name_len = 21
+ name = ''
+ CALL H5DSget_scale_name_f(dsid, name(1:name_len), name_len, err)
+ IF(err.LT.0.OR.name_len.NE.21.OR.TRIM(name).NE."Dimension Scale Set 1")THEN
+ err = FAILED
+ CALL write_test_status(err)
+ RETURN
+ ENDIF
+
+ ! Get scale name; test to small character buffer
+ name_len = 5
+ name = ''
+ CALL H5DSget_scale_name_f(dsid, name(1:name_len), name_len, err)
+ IF(err.LT.0.OR.name_len.NE.21.OR.TRIM(name).NE."Dimen")THEN
+ err = FAILED
+ CALL write_test_status(err)
+ RETURN
+ ENDIF
+
+ ! close DS id
+ CALL H5Dclose_f(dsid, err)
+ IF(err.LT.0) RETURN
+
+ !-------------------------------------------------------------------------
+ ! attach the DS_2_NAME dimension scale to DSET_NAME
+ !-------------------------------------------------------------------------
+
+ ! get the DS dataset id
+ CALL H5Dopen_f(fid, DS_2_NAME, dsid, err)
+ IF(err.LT.0) RETURN
+
+ ! attach the DS_2_NAME dimension scale to DSET_NAME as the 2nd dimension (index 2)
+ CALL H5DSattach_scale_f(did, dsid, DIM2, err)
+ IF(err.LT.0) RETURN
+
+ CALL H5DSis_attached_f(did, dsid, DIM2, is_attached, err)
+ IF(err.LT.0) RETURN
+
+ ! test sending no Dimension Scale name
+
+ CALL H5DSset_scale_f(dsid, err)
+ IF(err.LT.0)THEN
+ CALL write_test_status(err)
+ RETURN
+ ENDIF
+
+ CALL H5DSis_scale_f(dsid, is_scale, err)
+ IF(err.LT.0.OR..NOT.is_scale)THEN
+ err = FAILED
+ CALL write_test_status(err)
+ RETURN
+ ENDIF
+
+ ! Get scale name when there is no scale name
+ name_len = 5
+ name = ''
+ CALL H5DSget_scale_name_f(dsid, name(1:name_len), name_len, err)
+ IF(err.LT.0.OR.name_len.NE.0)THEN ! name_len is 0 if no name is found
+ err = FAILED
+ CALL write_test_status(err)
+ RETURN
+ ENDIF
+
+ CALL write_test_status(err)
+
+ CALL test_begin(' Test Setting Dimension Scale Label ')
+
+ CALL H5DSset_label_f(did, DIM2, "Label12", err)
+ IF(err.LT.0)THEN
+ CALL write_test_status(err)
+ RETURN
+ ENDIF
+
+ ! Test label where character length is to small
+
+ label_len = 5
+ label = ''
+ CALL H5DSget_label_f(did, DIM2, label(1:label_len), label_len, err)
+ IF(err.LT.0.OR.label(1:5).NE."Label".OR.label_len.NE.7)THEN
+ err = FAILED
+ CALL write_test_status(err)
+ RETURN
+ ENDIF
+
+ ! Test label where character length is exact
+
+ label_len = 7
+ label = ''
+ CALL H5DSget_label_f(did, DIM2, label(1:label_len), label_len, err)
+ IF(err.LT.0.OR.label(1:label_len).NE."Label12".OR.label_len.NE.7)THEN
+ err = FAILED
+ CALL write_test_status(err)
+ RETURN
+ ENDIF
+
+ ! Test label where character length is to big
+
+ label_len = 25
+ label = ''
+ CALL H5DSget_label_f(did, DIM2, label, label_len, err)
+ IF(err.LT.0.OR.label(1:label_len).NE."Label12".OR.label_len.NE.7)THEN
+ err = FAILED
+ CALL write_test_status(err)
+ RETURN
+ ENDIF
+ CALL write_test_status(err)
+
+ ! close DS id
+ CALL H5Dclose_f(dsid, err)
+ IF(err.LT.0) RETURN
+
+ ! close file
+ CALL H5Fclose_f(fid, err)
+ IF(err.LT.0) RETURN
+
+END SUBROUTINE test_testds
+
+!-------------------------------------------------------------------------
+! test_begin
+!-------------------------------------------------------------------------
+
+SUBROUTINE test_begin(string)
+ CHARACTER(LEN=*), INTENT(IN) :: string
+ WRITE(*, fmt = '(A)', advance = 'no') ADJUSTL(string)
+END SUBROUTINE test_begin
+
+!-------------------------------------------------------------------------
+! passed/failed
+!-------------------------------------------------------------------------
+SUBROUTINE write_test_status( test_result)
+
+! Writes the results of the tests
+
+ IMPLICIT NONE
+
+ INTEGER, INTENT(IN) :: test_result ! negative, failed
+ ! 0 , passed
+
+! Controls the output style for reporting test results
+
+ CHARACTER(LEN=8) :: error_string
+ CHARACTER(LEN=8), PARAMETER :: success = ' PASSED '
+ CHARACTER(LEN=8), PARAMETER :: failure = '*FAILED*'
+
+ error_string = failure
+ IF (test_result .EQ. 0) THEN
+ error_string = success
+ ENDIF
+
+ WRITE(*, fmt = '(T34, A)') error_string
+
+END SUBROUTINE write_test_status