diff options
author | Robb Matzke <matzke@llnl.gov> | 1998-04-17 21:29:43 (GMT) |
---|---|---|
committer | Robb Matzke <matzke@llnl.gov> | 1998-04-17 21:29:43 (GMT) |
commit | 011457075e41d587c47f89250514b3393a78d329 (patch) | |
tree | d9b12f2ffc87b12575607102d207a60cd52214b9 /src/H5P.c | |
parent | b59ab36893949af14c403ab46cbdb397f0a24f5b (diff) | |
download | hdf5-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.c | 173 |
1 files changed, 172 insertions, 1 deletions
@@ -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 |