summaryrefslogtreecommitdiffstats
path: root/src/H5P.c
diff options
context:
space:
mode:
authorRobb Matzke <matzke@llnl.gov>1998-04-17 21:29:43 (GMT)
committerRobb Matzke <matzke@llnl.gov>1998-04-17 21:29:43 (GMT)
commit011457075e41d587c47f89250514b3393a78d329 (patch)
treed9b12f2ffc87b12575607102d207a60cd52214b9 /src/H5P.c
parentb59ab36893949af14c403ab46cbdb397f0a24f5b (diff)
downloadhdf5-011457075e41d587c47f89250514b3393a78d329.zip
hdf5-011457075e41d587c47f89250514b3393a78d329.tar.gz
hdf5-011457075e41d587c47f89250514b3393a78d329.tar.bz2
[svn-r353] Changes since 19980414
---------------------- ./html/Compression.html [NEW] ./html/Datasets.html ./html/H5.format.html ./html/H5.user.html Documented compression. A couple of the H5P functions aren't quite implemented yet but they're coming soon... ./src/H5Dprivate.h ./src/H5E.c ./src/H5Epublic.h ./src/H5Farray.c ./src/H5Fistore.c ./src/H5Fprivate.h ./src/H5MF.c ./src/H5MFprivate.h ./src/H5O.c ./src/H5Ocomp.c [NEW] ./src/H5Oprivate.h ./src/H5P.c ./src/H5Ppublic.h ./src/H5Sprivate.h ./src/H5Ssimp.c ./src/H5Z.c [NEW] ./src/H5Zprivate.h [NEW] ./src/H5Zpublic.h [NEW] ./src/Makefile.in ./src/hdf5.h ./test/dsets.c ./test/istore.c Compression is now mostly working. Don't try to open a compressed dataset though because the compression message won't be read. ./html/Datatypes.html ./html/H5.api.html ./src/H5.c ./src/H5private.h ./src/H5D.c ./src/H5T.c ./src/H5Tconv.c ./src/H5Tpkg.h ./src/H5Tprivate.h ./src/H5Tpublic.h Added timing support. When compiled with H5T_DEBUG defined the library will print conversion bandwidths when the library closes. The H5Tregister functions take a string as the first argument so the statistics output is meaningful. ./MANIFEST Added new files. ./configure.in ./src/H5config.h.in Check for getrusage(). Check for compress2() in libz.a and the zlib.h header file. Added `z' to the debug list. ./src/H5B.c ./src/H5Bprivate.h ./src/H5Gnode.c ./src/debug.c Cleaned up some indentation and added support to print istore B-trees. From the debugger, give the B-tree address and the dimensionality from the layout message of the object header. ./src/h5ls.c The oid is printed as w:x:y:z where w and x are the file ID and y and z are the OID within the file. You can give z or y*2^32+z as an argument to the debugger to print the object header for the object. ./src/H5AC.c Cleaned up statistics and made them match those reported by H5T and H5Z. ./src/H5MM.c ./src/H5MMprivate.h ./src/H5Fistore.c Finally got rid of a couple of long-standing const cast warnings.
Diffstat (limited to 'src/H5P.c')
-rw-r--r--src/H5P.c173
1 files changed, 172 insertions, 1 deletions
diff --git a/src/H5P.c b/src/H5P.c
index 2d0e6f0..b141853 100644
--- a/src/H5P.c
+++ b/src/H5P.c
@@ -942,7 +942,7 @@ H5Pget_chunk(hid_t tid, int max_ndims, hsize_t dim[]/*out*/)
if (H5P_DATASET_CREATE != H5Pget_class(tid) ||
NULL == (tmpl = H5I_object(tid))) {
HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL,
- "not a dataset creation template");
+ "not a dataset creation property list");
}
if (H5D_CHUNKED != tmpl->layout) {
HRETURN_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL,
@@ -1847,7 +1847,178 @@ H5Pget_preserve (hid_t plist_id)
FUNC_LEAVE (plist->need_bkg?TRUE:FALSE);
}
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5Pset_compression
+ *
+ * Purpose: Sets the compression method in a dataset creation property
+ * list. This sets default values for the compression
+ * attributes by setting the flags to zero and supplying no
+ * compression client data. It's probably better to use
+ * specific compression initialization functions like
+ * H5Pset_deflate().
+ *
+ * Return: Success: SUCCEED
+ *
+ * Failure: FAIL
+ *
+ * Programmer: Robb Matzke
+ * Wednesday, April 15, 1998
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+herr_t
+H5Pset_compression (hid_t plist_id, H5Z_method_t method)
+{
+ H5D_create_t *plist = NULL;
+
+ FUNC_ENTER (H5Pset_compression, FAIL);
+
+ /* Check arguments */
+ if (H5P_DATASET_CREATE!=H5Pget_class (plist_id) ||
+ NULL==(plist=H5I_object (plist_id))) {
+ HRETURN_ERROR (H5E_ARGS, H5E_BADTYPE, FAIL,
+ "not a dataset creation property list");
+ }
+ if (method<0 || method>H5Z_MAXVAL) {
+ HRETURN_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL,
+ "invalid compression method");
+ }
+
+ /* Clear any previous compression method info, then set new value */
+ H5O_reset (H5O_COMPRESS, &(plist->compress));
+ plist->compress.method = method;
+
+ FUNC_LEAVE (SUCCEED);
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5Pget_compression
+ *
+ * Purpose: Gets the compression method information from a dataset
+ * creation property list.
+ *
+ * Return: Success: Compression method.
+ *
+ * Failure: FAIL
+ *
+ * Programmer: Robb Matzke
+ * Wednesday, April 15, 1998
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+H5Z_method_t
+H5Pget_compression (hid_t plist_id)
+{
+ H5D_create_t *plist = NULL;
+
+ FUNC_ENTER (H5Pget_compression, FAIL);
+
+ /* Check arguments */
+ if (H5P_DATASET_CREATE!=H5Pget_class (plist_id) ||
+ NULL==(plist=H5I_object (plist_id))) {
+ HRETURN_ERROR (H5E_ARGS, H5E_BADTYPE, FAIL,
+ "not a dataset creation property list");
+ }
+
+ FUNC_LEAVE (plist->compress.method);
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5Pset_deflate
+ *
+ * Purpose: Sets the compression method for a dataset creation property
+ * list to H5D_COMPRESS_DEFLATE and the compression level to
+ * LEVEL which should be a value between zero and nine,
+ * inclusive. Lower compression levels are faster but result in
+ * less compression. This is the same algorithm as used by the
+ * GNU gzip program.
+ *
+ * Return: Success: SUCCEED
+ *
+ * Failure: FAIL
+ *
+ * Programmer: Robb Matzke
+ * Wednesday, April 15, 1998
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+herr_t
+H5Pset_deflate (hid_t plist_id, int level)
+{
+ H5D_create_t *plist = NULL;
+
+ FUNC_ENTER (H5Pset_deflate, FAIL);
+
+ /* Check arguments */
+ if (H5P_DATASET_CREATE!=H5Pget_class (plist_id) ||
+ NULL==(plist=H5I_object (plist_id))) {
+ HRETURN_ERROR (H5E_ARGS, H5E_BADTYPE, FAIL,
+ "not a dataset creation property list");
+ }
+ if (level<0 || level>9) {
+ HRETURN_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL,
+ "invalid deflate level");
+ }
+
+ /* Clear previous compression parameters */
+ H5O_reset (H5O_COMPRESS, &(plist->compress));
+ plist->compress.method = H5Z_DEFLATE;
+ plist->compress.flags = level;
+
+ FUNC_LEAVE (SUCCEED);
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5Pget_deflate
+ *
+ * Purpose: Returns the deflate compression level from a dataset creation
+ * property list that uses that method.
+ *
+ * Return: Success: A value between zero and nine, inclusive.
+ * Smaller values indicate faster compression
+ * while higher values indicate better
+ * compression ratios.
+ *
+ * Failure: FAIL
+ *
+ * Programmer: Robb Matzke
+ * Wednesday, April 15, 1998
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+int
+H5Pget_deflate (hid_t plist_id)
+{
+ H5D_create_t *plist = NULL;
+
+ FUNC_ENTER (H5Pget_deflate, FAIL);
+ /* Check arguments */
+ if (H5P_DATASET_CREATE!=H5Pget_class (plist_id) ||
+ NULL==(plist=H5I_object (plist_id))) {
+ HRETURN_ERROR (H5E_ARGS, H5E_BADTYPE, FAIL,
+ "not a dataset creation property list");
+ }
+ if (H5Z_DEFLATE!=plist->compress.method) {
+ HRETURN_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL,
+ "deflate method is not being used");
+ }
+
+ FUNC_LEAVE (plist->compress.flags % 10);
+}
#ifdef HAVE_PARALLEL