diff options
Diffstat (limited to 'src/H5Zpublic.h')
-rw-r--r-- | src/H5Zpublic.h | 77 |
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 } |