summaryrefslogtreecommitdiffstats
path: root/src/H5Dtest.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2004-05-27 20:24:08 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2004-05-27 20:24:08 (GMT)
commit2ce06c39120fe3d89c0faa1c948b5a0399e968e2 (patch)
treee00c2829682ffc6d5830e97726ed8c5563278bcb /src/H5Dtest.c
parent71fba25e6ea0d7cacb19928af43af6874a4008c2 (diff)
downloadhdf5-2ce06c39120fe3d89c0faa1c948b5a0399e968e2.zip
hdf5-2ce06c39120fe3d89c0faa1c948b5a0399e968e2.tar.gz
hdf5-2ce06c39120fe3d89c0faa1c948b5a0399e968e2.tar.bz2
[svn-r8590] Purpose:
Code optimization & bug fix Description: When dimension information is being stored in the storage layout message on disk, it is stored as 32-bit quantities, possibly truncating the dimension information, if a dimension is greater than 32-bits in size. Solution: Fix the storage layout message problem by revising file format to not store dimension information, since it is already available in the dataspace. Also revise the storage layout data structures to be more compartmentalized for the information for contiguous, chunked and compact storage. Platforms tested: FreeBSD 4.9 (sleipnir) w/parallel Solaris 2.7 (arabica) h5committest
Diffstat (limited to 'src/H5Dtest.c')
-rw-r--r--src/H5Dtest.c116
1 files changed, 116 insertions, 0 deletions
diff --git a/src/H5Dtest.c b/src/H5Dtest.c
new file mode 100644
index 0000000..d3339df
--- /dev/null
+++ b/src/H5Dtest.c
@@ -0,0 +1,116 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by the Board of Trustees of the University of Illinois. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the files COPYING and Copyright.html. COPYING can be found at the root *
+ * of the source code distribution tree; Copyright.html can be found at the *
+ * root level of an installed copy of the electronic HDF5 document set and *
+ * is linked from the top-level documents page. It can also be found at *
+ * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
+ * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
+ * Thusdayr, May 27, 2004
+ *
+ * Purpose: Dataset testing functions.
+ */
+
+#define H5D_PACKAGE /*suppress error about including H5Dpkg */
+#define H5D_TESTING /*suppress warning about H5D testing funcs*/
+
+/* Pablo information */
+/* (Put before include files to avoid problems with inline functions) */
+#define PABLO_MASK H5Dtest_mask
+
+#include "H5private.h" /* Generic Functions */
+#include "H5Dpkg.h" /* Datasets */
+#include "H5Eprivate.h" /* Error handling */
+#include "H5Iprivate.h" /* ID Functions */
+
+/* Interface initialization */
+#define INTERFACE_INIT NULL
+static int interface_initialize_g = 0;
+
+
+/*--------------------------------------------------------------------------
+ NAME
+ H5D_layout_version_test
+ PURPOSE
+ Determine the storage layout version for a dataset's layout information
+ USAGE
+ herr_t H5D_layout_version_test(did, version)
+ hid_t did; IN: Dataset to query
+ unsigned *version; OUT: Pointer to location to place version info
+ RETURNS
+ Non-negative on success, negative on failure
+ DESCRIPTION
+ Checks the version of the storage layout information for a dataset.
+ GLOBAL VARIABLES
+ COMMENTS, BUGS, ASSUMPTIONS
+ DO NOT USE THIS FUNCTION FOR ANYTHING EXCEPT TESTING
+ EXAMPLES
+ REVISION LOG
+--------------------------------------------------------------------------*/
+herr_t
+H5D_layout_version_test(hid_t did, unsigned *version)
+{
+ H5D_t *dset; /* Pointer to dataset to query */
+ herr_t ret_value=SUCCEED; /* return value */
+
+ FUNC_ENTER_NOAPI(H5D_layout_version_test, FAIL);
+
+ /* Check args */
+ if (NULL==(dset=H5I_object_verify(did, H5I_DATASET)))
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset")
+
+ if(version)
+ *version=dset->layout.version;
+
+done:
+ FUNC_LEAVE_NOAPI(ret_value);
+} /* H5D_layout_version_test() */
+
+
+/*--------------------------------------------------------------------------
+ NAME
+ H5D_layout_contig_size_test
+ PURPOSE
+ Determine the size of a contiguous layout for a dataset's layout information
+ USAGE
+ herr_t H5D_layout_contig_size_test(did, size)
+ hid_t did; IN: Dataset to query
+ hsize_t *size; OUT: Pointer to location to place size info
+ RETURNS
+ Non-negative on success, negative on failure
+ DESCRIPTION
+ Checks the size of a contiguous dataset's storage.
+ GLOBAL VARIABLES
+ COMMENTS, BUGS, ASSUMPTIONS
+ DO NOT USE THIS FUNCTION FOR ANYTHING EXCEPT TESTING
+ EXAMPLES
+ REVISION LOG
+--------------------------------------------------------------------------*/
+herr_t
+H5D_layout_contig_size_test(hid_t did, hsize_t *size)
+{
+ H5D_t *dset; /* Pointer to dataset to query */
+ herr_t ret_value=SUCCEED; /* return value */
+
+ FUNC_ENTER_NOAPI(H5D_layout_contig_size_test, FAIL);
+
+ /* Check args */
+ if (NULL==(dset=H5I_object_verify(did, H5I_DATASET)))
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset")
+
+ if(size) {
+ assert(dset->layout.type==H5D_CONTIGUOUS);
+ *size=dset->layout.u.contig.size;
+ } /* end if */
+
+done:
+ FUNC_LEAVE_NOAPI(ret_value);
+} /* H5D_layout_contig_size_test() */
+