1 /* zlib.h -- interface of the 'zlib' general purpose compression library 2 * version 1.2.11, January 15th, 2017 3 * 4 * Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler 5 * 6 * This software is provided 'as-is', without any express or implied 7 * warranty. In no event will the authors be held liable for any damages 8 * arising from the use of this software. 9 * 10 * Permission is granted to anyone to use this software for any purpose, 11 * including commercial applications, and to alter it and redistribute it 12 * freely, subject to the following restrictions: 13 * 14 * 1. The origin of this software must not be misrepresented; you must not 15 * claim that you wrote the original software. If you use this software 16 * in a product, an acknowledgment in the product documentation would be 17 * appreciated but is not required. 18 * 2. Altered source versions must be plainly marked as such, and must not be 19 * misrepresented as being the original software. 20 * 3. This notice may not be removed or altered from any source distribution. 21 * 22 * Jean-loup Gailly Mark Adler 23 * jloup@gzip.org madler@alumni.caltech.edu 24 */ 25 26 #ifndef ZLIB_H 27 #define ZLIB_H 28 29 #ifndef DBGHELP_STATIC_LIB 30 #include "windef.h" 31 #endif 32 33 #undef FAR 34 #define FAR 35 #define z_const const 36 37 typedef unsigned char Byte; /* 8 bits */ 38 typedef unsigned int uInt; /* 16 bits or more */ 39 typedef unsigned long uLong; /* 32 bits or more */ 40 41 typedef Byte FAR Bytef; 42 typedef void FAR *voidpf; 43 44 typedef char FAR charf; 45 typedef int FAR intf; 46 47 typedef unsigned char uch; 48 typedef uch FAR uchf; 49 typedef unsigned short ush; 50 typedef ush FAR ushf; 51 typedef unsigned long ulg; 52 53 typedef voidpf (*alloc_func)(voidpf opaque, uInt items, uInt size); 54 typedef void (*free_func)(voidpf opaque, voidpf address); 55 56 struct internal_state; 57 58 typedef struct z_stream_s { 59 z_const Bytef *next_in; /* next input byte */ 60 uInt avail_in; /* number of bytes available at next_in */ 61 uLong total_in; /* total number of input bytes read so far */ 62 63 Bytef *next_out; /* next output byte will go here */ 64 uInt avail_out; /* remaining free space at next_out */ 65 uLong total_out; /* total number of bytes output so far */ 66 67 z_const char *msg; /* last error message, NULL if no error */ 68 struct internal_state FAR *state; /* not visible by applications */ 69 70 alloc_func zalloc; /* used to allocate the internal state */ 71 free_func zfree; /* used to free the internal state */ 72 voidpf opaque; /* private data object passed to zalloc and zfree */ 73 74 int data_type; /* best guess about the data type: binary or text 75 for deflate, or the decoding state for inflate */ 76 uLong adler; /* Adler-32 or CRC-32 value of the uncompressed data */ 77 uLong reserved; /* reserved for future use */ 78 } z_stream; 79 80 typedef z_stream FAR *z_streamp; 81 82 /* 83 gzip header information passed to and from zlib routines. See RFC 1952 84 for more details on the meanings of these fields. 85 */ 86 typedef struct gz_header_s { 87 int text; /* true if compressed data believed to be text */ 88 uLong time; /* modification time */ 89 int xflags; /* extra flags (not used when writing a gzip file) */ 90 int os; /* operating system */ 91 Bytef *extra; /* pointer to extra field or Z_NULL if none */ 92 uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ 93 uInt extra_max; /* space at extra (only when reading header) */ 94 Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ 95 uInt name_max; /* space at name (only when reading header) */ 96 Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ 97 uInt comm_max; /* space at comment (only when reading header) */ 98 int hcrc; /* true if there was or will be a header crc */ 99 int done; /* true when done reading gzip header (not used 100 when writing a gzip file) */ 101 } gz_header; 102 103 typedef gz_header FAR *gz_headerp; 104 105 #define Z_NO_FLUSH 0 106 #define Z_PARTIAL_FLUSH 1 107 #define Z_SYNC_FLUSH 2 108 #define Z_FULL_FLUSH 3 109 #define Z_FINISH 4 110 #define Z_BLOCK 5 111 #define Z_TREES 6 112 /* Allowed flush values; see deflate() and inflate() below for details */ 113 114 #define Z_OK 0 115 #define Z_STREAM_END 1 116 #define Z_NEED_DICT 2 117 #define Z_ERRNO (-1) 118 #define Z_STREAM_ERROR (-2) 119 #define Z_DATA_ERROR (-3) 120 #define Z_MEM_ERROR (-4) 121 #define Z_BUF_ERROR (-5) 122 #define Z_VERSION_ERROR (-6) 123 /* Return codes for the compression/decompression functions. Negative values 124 * are errors, positive values are used for special but normal events. 125 */ 126 127 #define Z_NO_COMPRESSION 0 128 #define Z_BEST_SPEED 1 129 #define Z_BEST_COMPRESSION 9 130 #define Z_DEFAULT_COMPRESSION (-1) 131 /* compression levels */ 132 133 #define Z_FILTERED 1 134 #define Z_HUFFMAN_ONLY 2 135 #define Z_RLE 3 136 #define Z_FIXED 4 137 #define Z_DEFAULT_STRATEGY 0 138 /* compression strategy; see deflateInit2() below for details */ 139 140 #define Z_BINARY 0 141 #define Z_TEXT 1 142 #define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ 143 #define Z_UNKNOWN 2 144 /* Possible values of the data_type field for deflate() */ 145 146 #define Z_DEFLATED 8 147 /* The deflate compression method (the only one supported in this version) */ 148 149 #define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ 150 151 #define MAX_WBITS 15 /* 32K LZ77 window */ 152 #define MAX_MEM_LEVEL 9 153 154 extern int inflateInit(z_streamp strm) DECLSPEC_HIDDEN; 155 extern int inflateInit2(z_streamp strm, int windowBits) DECLSPEC_HIDDEN; 156 extern int inflate(z_streamp strm, int flush) DECLSPEC_HIDDEN; 157 extern int inflateEnd(z_streamp strm) DECLSPEC_HIDDEN; 158 159 extern int deflateInit(z_streamp strm, int level) DECLSPEC_HIDDEN; 160 extern int deflateInit2(z_streamp strm, int level, int method, int windowBits, int memLevel, int strategy) DECLSPEC_HIDDEN; 161 extern int deflate(z_streamp strm, int flush) DECLSPEC_HIDDEN; 162 extern int deflateEnd(z_streamp strm) DECLSPEC_HIDDEN; 163 164 #endif /* ZLIB_H */ 165