xref: /reactos/dll/win32/dbghelp/zlib.h (revision 2196a06f)
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