⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zlib.h

📁 a 3d car ....with color texture..
💻 H
字号:
/* zlib.h -- interface of the 'zlib' general purpose compression library  version 1.1.3, July 9th, 1998  Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler  This software is provided 'as-is', without any express or implied  warranty.  In no event will the authors be held liable for any damages  arising from the use of this software.  Permission is granted to anyone to use this software for any purpose,  including commercial applications, and to alter it and redistribute it  freely, subject to the following restrictions:  1. The origin of this software must not be misrepresented; you must not     claim that you wrote the original software. If you use this software     in a product, an acknowledgment in the product documentation would be     appreciated but is not required.  2. Altered source versions must be plainly marked as such, and must not be     misrepresented as being the original software.  3. This notice may not be removed or altered from any source distribution.  Jean-loup Gailly        Mark Adler  jloup@gzip.org          madler@alumni.caltech.edu  The data format used by the zlib library is described by RFCs (Request for  Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt  (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).*/#ifndef _ZLIB_H#define _ZLIB_H#include "zconf.h"#ifdef __cplusplusextern "C" {#endif#define ZLIB_VERSION "1.1.3"/*      The 'zlib' compression library provides in-memory compression and  decompression functions, including integrity checks of the uncompressed  data.  This version of the library supports only one compression method  (deflation) but other algorithms will be added later and will have the same  stream interface.     Compression can be done in a single step if the buffers are large  enough (for example if an input file is mmap'ed), or can be done by  repeated calls of the compression function.  In the latter case, the  application must provide more input and/or consume the output  (providing more output space) before each call.     The library also supports reading and writing files in gzip (.gz) format  with an interface similar to that of stdio.     The library does not install any signal handler. The decoder checks  the consistency of the compressed data, so the library should never  crash even in case of corrupted input.*/typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));typedef void   (*free_func)  OF((voidpf opaque, voidpf address));struct internal_state;typedef struct z_stream_s {    Bytef    *next_in;  /* next input byte */    uInt     avail_in;  /* number of bytes available at next_in */    uLong    total_in;  /* total nb of input bytes read so far */    Bytef    *next_out; /* next output byte should be put there */    uInt     avail_out; /* remaining free space at next_out */    uLong    total_out; /* total nb of bytes output so far */    char     *msg;      /* last error message, NULL if no error */    struct internal_state FAR *state; /* not visible by applications */    alloc_func zalloc;  /* used to allocate the internal state */    free_func  zfree;   /* used to free the internal state */    voidpf     opaque;  /* private data object passed to zalloc and zfree */    int     data_type;  /* best guess about the data type: ascii or binary */    uLong   adler;      /* adler32 value of the uncompressed data */    uLong   reserved;   /* reserved for future use */} z_stream;typedef z_stream FAR *z_streamp;/*   The application must update next_in and avail_in when avail_in has   dropped to zero. It must update next_out and avail_out when avail_out   has dropped to zero. The application must initialize zalloc, zfree and   opaque before calling the init function. All other fields are set by the   compression library and must not be updated by the application.   The opaque value provided by the application will be passed as the first   parameter for calls of zalloc and zfree. This can be useful for custom   memory management. The compression library attaches no meaning to the   opaque value.   zalloc must return Z_NULL if there is not enough memory for the object.   If zlib is used in a multi-threaded application, zalloc and zfree must be   thread safe.   On 16-bit systems, the functions zalloc and zfree must be able to allocate   exactly 65536 bytes, but will not be required to allocate more than this   if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,   pointers returned by zalloc for objects of exactly 65536 bytes *must*   have their offset normalized to zero. The default allocation function   provided by this library ensures this (see zutil.c). To reduce memory   requirements and avoid any allocation of 64K objects, at the expense of   compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).   The fields total_in and total_out can be used for statistics or   progress reports. After compression, total_in holds the total size of   the uncompressed data and may be saved for use in the decompressor   (particularly if the decompressor wants to decompress everything in   a single step).*/                        /* constants */#define Z_NO_FLUSH      0#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */#define Z_SYNC_FLUSH    2#define Z_FULL_FLUSH    3#define Z_FINISH        4/* Allowed flush values; see deflate() below for details */#define Z_OK            0#define Z_STREAM_END    1#define Z_NEED_DICT     2#define Z_ERRNO        (-1)#define Z_STREAM_ERROR (-2)#define Z_DATA_ERROR   (-3)#define Z_MEM_ERROR    (-4)#define Z_BUF_ERROR    (-5)#define Z_VERSION_ERROR (-6)/* Return codes for the compression/decompression functions. Negative * values are errors, positive values are used for special but normal events. */#define Z_NO_COMPRESSION         0#define Z_BEST_SPEED             1#define Z_BEST_COMPRESSION       9#define Z_DEFAULT_COMPRESSION  (-1)/* compression levels */#define Z_FILTERED            1#define Z_HUFFMAN_ONLY        2#define Z_DEFAULT_STRATEGY    0/* compression strategy; see deflateInit2() below for details */#define Z_BINARY   0#define Z_ASCII    1#define Z_UNKNOWN  2/* Possible values of the data_type field */#define Z_DEFLATED   8/* The deflate compression method (the only one supported in this version) */#define Z_NULL  0  /* for initializing zalloc, zfree, opaque */ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));/*    inflate decompresses as much data as possible, and stops when the input  buffer becomes empty or the output buffer becomes full. It may some  introduce some output latency (reading input without producing any output)  except when forced to flush.  The detailed semantics are as follows. inflate performs one or both of the  following actions:  - Decompress more input starting at next_in and update next_in and avail_in    accordingly. If not all input can be processed (because there is not    enough room in the output buffer), next_in is updated and processing    will resume at this point for the next call of inflate().  - Provide more output starting at next_out and update next_out and avail_out    accordingly.  inflate() provides as much output as possible, until there    is no more input data or no more space in the output buffer (see below    about the flush parameter).  Before the call of inflate(), the application should ensure that at least  one of the actions is possible, by providing more input and/or consuming  more output, and updating the next_* and avail_* values accordingly.  The application can consume the uncompressed output when it wants, for  example when the output buffer is full (avail_out == 0), or after each  call of inflate(). If inflate returns Z_OK and with zero avail_out, it  must be called again after making room in the output buffer because there  might be more output pending.    If the parameter flush is set to Z_SYNC_FLUSH, inflate flushes as much  output as possible to the output buffer. The flushing behavior of inflate is  not specified for values of the flush parameter other than Z_SYNC_FLUSH  and Z_FINISH, but the current implementation actually flushes as much output  as possible anyway.    inflate() should normally be called until it returns Z_STREAM_END or an  error. However if all decompression is to be performed in a single step  (a single call of inflate), the parameter flush should be set to  Z_FINISH. In this case all pending input is processed and all pending  output is flushed; avail_out must be large enough to hold all the  uncompressed data. (The size of the uncompressed data may have been saved  by the compressor for this purpose.) The next operation on this stream must  be inflateEnd to deallocate the decompression state. The use of Z_FINISH  is never required, but can be used to inform inflate that a faster routine  may be used for the single inflate() call.     If a preset dictionary is needed at this point (see inflateSetDictionary  below), inflate sets strm-adler to the adler32 checksum of the  dictionary chosen by the compressor and returns Z_NEED_DICT; otherwise   it sets strm->adler to the adler32 checksum of all output produced  so far (that is, total_out bytes) and returns Z_OK, Z_STREAM_END or  an error code as described below. At the end of the stream, inflate()  checks that its computed adler32 checksum is equal to that saved by the  compressor and returns Z_STREAM_END only if the checksum is correct.    inflate() returns Z_OK if some progress has been made (more input processed  or more output produced), Z_STREAM_END if the end of the compressed data has  been reached and all uncompressed output has been produced, Z_NEED_DICT if a  preset dictionary is needed at this point, Z_DATA_ERROR if the input data was  corrupted (input stream not conforming to the zlib format or incorrect  adler32 checksum), Z_STREAM_ERROR if the stream structure was inconsistent  (for example if next_in or next_out was NULL), Z_MEM_ERROR if there was not  enough memory, Z_BUF_ERROR if no progress is possible or if there was not  enough room in the output buffer when Z_FINISH is used. In the Z_DATA_ERROR  case, the application may then call inflateSync to look for a good  compression block.*/ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));/*     All dynamically allocated data structures for this stream are freed.   This function discards any unprocessed input and does not flush any   pending output.     inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state   was inconsistent. In the error case, msg may be set but then points to a   static string (which must not be deallocated).*/                        /* Advanced functions */ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));/*     This function is equivalent to inflateEnd followed by inflateInit,   but does not free and reallocate all the internal decompression state.   The stream will keep attributes that may have been set by inflateInit2.      inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source   stream state was inconsistent (such as zalloc or state being NULL).*/                        /* utility functions *//*     The following utility functions are implemented on top of the   basic stream-oriented functions. To simplify the interface, some   default options are assumed (compression level and memory usage,   standard memory allocation functions). The source code of these   utility functions can easily be modified if you need special options.*/ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));/*     Update a running Adler-32 checksum with the bytes buf[0..len-1] and   return the updated checksum. If buf is NULL, this function returns   the required initial value for the checksum.   An Adler-32 checksum is almost as reliable as a CRC32 but can be computed   much faster. Usage example:     uLong adler = adler32(0L, Z_NULL, 0);     while (read_buffer(buffer, length) != EOF) {       adler = adler32(adler, buffer, length);     }     if (adler != original_adler) error();*/ZEXTERN uLong ZEXPORT crc32   OF((uLong crc, const Bytef *buf, uInt len));/*     Update a running crc with the bytes buf[0..len-1] and return the updated   crc. If buf is NULL, this function returns the required initial value   for the crc. Pre- and post-conditioning (one's complement) is performed   within this function so it shouldn't be done by the application.   Usage example:     uLong crc = crc32(0L, Z_NULL, 0);     while (read_buffer(buffer, length) != EOF) {       crc = crc32(crc, buffer, length);     }     if (crc != original_crc) error();*/                        /* various hacks, don't look :) */ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,                                     const char *version, int stream_size));ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int  windowBits,                                      const char *version, int stream_size));#define inflateInit(strm) \        inflateInit_((strm),                ZLIB_VERSION, sizeof(z_stream))#define inflateInit2(strm, windowBits) \        inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))#if !defined(_Z_UTIL_H) && !defined(NO_DUMMY_DECL)    struct internal_state {int dummy;}; /* hack for buggy compilers */#endif#ifdef __cplusplus}#endif#endif /* _ZLIB_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -