summaryrefslogtreecommitdiffstats
path: root/src/H5Zpublic.h
blob: daebf890628f9547ca1f9c8b9eb16eb90f2eaa67 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*
 * Copyright (C) 1998 NCSA
 *                    All rights reserved.
 *
 * Programmer:  Robb Matzke <matzke@llnl.gov>
 *              Thursday, April 16, 1998
 */
#ifndef _H5Zpublic_H
#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.
 */
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_MAXVAL	255	/*maximum compression method ID	     */

/*
 * 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.
 *
 * 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.
 */
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*/);


#ifdef __cplusplus
extern "C" {
#endif

herr_t H5Zregister (H5Z_method_t method, const char *name, H5Z_func_t compress,
		    H5Z_func_t uncompress);

#ifdef __cplusplus
}
#endif
#endif