summaryrefslogtreecommitdiffstats
path: root/src/H5Zpublic.h
diff options
context:
space:
mode:
authorRobb Matzke <matzke@llnl.gov>1998-08-05 22:22:59 (GMT)
committerRobb Matzke <matzke@llnl.gov>1998-08-05 22:22:59 (GMT)
commit002b1494b79e2fd638a0676745c340a9a9e9d8e7 (patch)
tree9b98efcd614acd02fd3de309d5d9f1d12048230e /src/H5Zpublic.h
parent99506091b3a72fa05f364ea5fb2c51fad3b176ec (diff)
downloadhdf5-002b1494b79e2fd638a0676745c340a9a9e9d8e7.zip
hdf5-002b1494b79e2fd638a0676745c340a9a9e9d8e7.tar.gz
hdf5-002b1494b79e2fd638a0676745c340a9a9e9d8e7.tar.bz2
[svn-r569] Changes since 19980731
---------------------- ./bin/release Added ./Makefile to the distribution again -- it got lost in the changes last week although it isn't all that important a file since it gets clobbered by configure anyway. ./bin/trace ./doc/html/Filters.html ./doc/html/H5.format.html ./doc/html/H5.user.html ./src/H5.c ./src/H5D.c ./src/H5Dprivate.h ./src/H5E.c ./src/H5Epublic.h ./src/H5Farray.c ./src/H5Fistore.c ./src/H5Fprivate.h ./src/H5O.c ./src/H5Ocomp.c ./src/H5Oprivate.h ./src/H5P.c ./src/H5Ppublic.h ./src/H5Sall.c ./src/H5Shyper.c ./src/H5Spoint.c ./src/H5Sprivate.h ./src/H5Ssimp.c ./src/H5Z.c ./src/H5Zprivate.h ./src/H5Zpublic.h ./src/hdf5.h ./test/dsets.c ./tools/h5ls.c Added the data filter pipeline, a generalization of the compression stuff which allows things like checksums, encryption, compression, performance monitoring, etc. See ./doc/html/Filters.html for details -- it replaces the Compression.html doc. ./src/H5T.c Cleaned up debugging output. ./config/linux Added checks for egcs and pgcc and changed optimization flags for the compilers. ./src/H5G.c ./tools/h5dump.c Fixed compiler warnings in these files and others. ./configure.in ./src/H5private.h ./test/mtime.c Added a check for difftime() and defined HDdifftime() to do something else on systems that don't have difftime().
Diffstat (limited to 'src/H5Zpublic.h')
-rw-r--r--src/H5Zpublic.h77
1 files changed, 34 insertions, 43 deletions
diff --git a/src/H5Zpublic.h b/src/H5Zpublic.h
index 2ce1326..04b5f3a 100644
--- a/src/H5Zpublic.h
+++ b/src/H5Zpublic.h
@@ -9,59 +9,50 @@
#define _H5Zpublic_H
/*
- * Compression methods. Method zero means no compression. Methods 1 through
- * 15 are defined by the library. Methods 16-255 are user-defined.
+ * Filter identifiers. Values 0 through 255 are for filters defined by the
+ * HDF5 library. Values 256 through 511 are available for testing new
+ * filters. Subsequent values should be obtained from the HDF5 development
+ * team at hdf5dev@ncsa.uiuc.edu. These values will never change because they
+ * appear in the HDF5 files.
*/
-typedef int H5Z_method_t;
-#define H5Z_NONE 0 /*no compression, must be zero */
-#define H5Z_DEFLATE 1 /*deflation like gzip */
-#define H5Z_RES_2 2 /*reserved for internal use */
-#define H5Z_RES_3 3 /*reserved for internal use */
-#define H5Z_RES_4 4 /*reserved for internal use */
-#define H5Z_RES_5 5 /*reserved for internal use */
-#define H5Z_RES_6 6 /*reserved for internal use */
-#define H5Z_RES_7 7 /*reserved for internal use */
-#define H5Z_RES_8 8 /*reserved for internal use */
-#define H5Z_RES_9 9 /*reserved for internal use */
-#define H5Z_RES_10 10 /*reserved for internal use */
-#define H5Z_RES_11 11 /*reserved for internal use */
-#define H5Z_RES_12 12 /*reserved for internal use */
-#define H5Z_RES_13 13 /*reserved for internal use */
-#define H5Z_RES_14 14 /*reserved for internal use */
-#define H5Z_RES_15 15 /*reserved for internal use */
-/* user-defined 16-255 */
-#define H5Z_USERDEF_MIN 16 /*first user-defined method */
-#define H5Z_USERDEF_MAX 255 /*last user-defined method */
+typedef int H5Z_filter_t;
+#define H5Z_FILTER_ERROR (-1) /*no filter */
+#define H5Z_FILTER_NONE 0 /*reserved indefinitely */
+#define H5Z_FILTER_DEFLATE 1 /*deflation like gzip */
+#define H5Z_FILTER_MAX 65535 /*maximum filter id */
+
+/* Flags for filter definition */
+#define H5Z_FLAG_DEFMASK 0x00ff /*definition flag mask */
+#define H5Z_FLAG_OPTIONAL 0x0001 /*filter is optional */
+
+/* Additional flags for filter invocation */
+#define H5Z_FLAG_INVMASK 0xff00 /*invocation flag mask */
+#define H5Z_FLAG_REVERSE 0x0100 /*reverse direction; read */
/*
- * A compression function takes some configuration data which comes from the
- * compression message, namely FLAGS, CD_SIZE, and CLIENT_DATA. It should
- * read SRC_NBYTES from SRC and compress them into at most DST_NBYTES of DST.
- * If the compressed data would be larger than DST_NBYTES the function should
- * return a value greater than or equal to DST_NBYTES. On failure the
- * function may return zero.
+ * A filter gets definition flags and invocation flags (defined above), the
+ * client data array and size defined when the filter was added to the
+ * pipeline, the size in bytes of the data on which to operate, and pointers
+ * to a buffer and its allocated size.
*
- * The uncompression function is the inverse of compression and takes the
- * same arguments. The SRC_NBYTES argument is the number of compressed bytes
- * in SRC. The function should uncompress SRC into DST. For redundancy,
- * DST_NBYTES contains the size of the DST buffer although if the algorithm
- * is operating properly and the file has not been corrupted the uncompressed
- * data will never be larger than DST_NBYTES. The function should return the
- * number of bytes in the DST buffer or zero on failure. Failure includes
- * the overflow of the DST buffer.
+ * The filter should store the result in the supplied buffer if possible,
+ * otherwise it can allocate a new buffer, freeing the original. The
+ * allocated size of the new buffer should be returned through the BUF_SIZE
+ * pointer and the new buffer through the BUF pointer.
+ *
+ * The return value from the filter is the number of bytes in the output
+ * buffer. If an error occurs then the function should return zero and leave
+ * all pointer arguments unchanged.
*/
-typedef size_t (*H5Z_func_t)(unsigned int flags, size_t cd_size,
- const void *client_data, size_t src_nbytes,
- const void *src, size_t dst_nbytes,
- void *dst/*out*/);
-
+typedef size_t (*H5Z_func_t)(unsigned int flags, size_t cd_nelmts,
+ const unsigned int cd_values[], size_t nbytes,
+ size_t *buf_size, void **buf);
#ifdef __cplusplus
extern "C" {
#endif
-herr_t H5Zregister (H5Z_method_t method, const char *name, H5Z_func_t compress,
- H5Z_func_t uncompress);
+herr_t H5Zregister(H5Z_filter_t id, const char *comment, H5Z_func_t filter);
#ifdef __cplusplus
}