| #ifndef ZUTIL_H_ |
| #define ZUTIL_H_ |
| /* zutil.h -- internal interface and configuration of the compression library |
| * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler |
| * For conditions of distribution and use, see copyright notice in zlib.h |
| */ |
| |
| /* WARNING: this file should *not* be used by applications. It is |
| part of the implementation of the compression library and is |
| subject to change. Applications should only use zlib.h. |
| */ |
| |
| #include "zbuild.h" |
| #ifdef ZLIB_COMPAT |
| # include "zlib.h" |
| #else |
| # include "zlib-ng.h" |
| #endif |
| |
| typedef unsigned char uch; /* Included for compatibility with external code only */ |
| typedef uint16_t ush; /* Included for compatibility with external code only */ |
| typedef unsigned long ulg; |
| |
| extern z_const char * const PREFIX(z_errmsg)[10]; /* indexed by 2-zlib_error */ |
| /* (size given to avoid silly warnings with Visual C++) */ |
| |
| #define ERR_MSG(err) PREFIX(z_errmsg)[Z_NEED_DICT-(err)] |
| |
| #define ERR_RETURN(strm, err) return (strm->msg = ERR_MSG(err), (err)) |
| /* To be used only when the state is known to be valid */ |
| |
| /* common constants */ |
| |
| #ifndef DEF_WBITS |
| # define DEF_WBITS MAX_WBITS |
| #endif |
| /* default windowBits for decompression. MAX_WBITS is for compression only */ |
| |
| #if MAX_MEM_LEVEL >= 8 |
| # define DEF_MEM_LEVEL 8 |
| #else |
| # define DEF_MEM_LEVEL MAX_MEM_LEVEL |
| #endif |
| /* default memLevel */ |
| |
| #define STORED_BLOCK 0 |
| #define STATIC_TREES 1 |
| #define DYN_TREES 2 |
| /* The three kinds of block type */ |
| |
| #define STD_MIN_MATCH 3 |
| #define STD_MAX_MATCH 258 |
| /* The minimum and maximum match lengths mandated by the deflate standard */ |
| |
| #define WANT_MIN_MATCH 4 |
| /* The minimum wanted match length, affects deflate_quick, deflate_fast, deflate_medium and deflate_slow */ |
| |
| #define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */ |
| |
| #define ADLER32_INITIAL_VALUE 1 /* initial adler-32 hash value */ |
| #define CRC32_INITIAL_VALUE 0 /* initial crc-32 hash value */ |
| |
| #define ZLIB_WRAPLEN 6 /* zlib format overhead */ |
| #define GZIP_WRAPLEN 18 /* gzip format overhead */ |
| |
| #define DEFLATE_HEADER_BITS 3 |
| #define DEFLATE_EOBS_BITS 15 |
| #define DEFLATE_PAD_BITS 6 |
| #define DEFLATE_BLOCK_OVERHEAD ((DEFLATE_HEADER_BITS + DEFLATE_EOBS_BITS + DEFLATE_PAD_BITS) >> 3) |
| /* deflate block overhead: 3 bits for block start + 15 bits for block end + padding to nearest byte */ |
| |
| #define DEFLATE_QUICK_LIT_MAX_BITS 9 |
| #define DEFLATE_QUICK_OVERHEAD(x) ((x * (DEFLATE_QUICK_LIT_MAX_BITS - 8) + 7) >> 3) |
| /* deflate_quick worst-case overhead: 9 bits per literal, round up to next byte (+7) */ |
| |
| |
| /* target dependencies */ |
| |
| #ifdef AMIGA |
| # define OS_CODE 1 |
| #endif |
| |
| #ifdef __370__ |
| # if __TARGET_LIB__ < 0x20000000 |
| # define OS_CODE 4 |
| # elif __TARGET_LIB__ < 0x40000000 |
| # define OS_CODE 11 |
| # else |
| # define OS_CODE 8 |
| # endif |
| #endif |
| |
| #if defined(ATARI) || defined(atarist) |
| # define OS_CODE 5 |
| #endif |
| |
| #ifdef OS2 |
| # define OS_CODE 6 |
| #endif |
| |
| #if defined(MACOS) || defined(TARGET_OS_MAC) |
| # define OS_CODE 7 |
| #endif |
| |
| #ifdef __acorn |
| # define OS_CODE 13 |
| #endif |
| |
| #if defined(_WIN32) && !defined(__CYGWIN__) |
| # define OS_CODE 10 |
| #endif |
| |
| #ifdef __APPLE__ |
| # define OS_CODE 19 |
| #endif |
| |
| /* common defaults */ |
| |
| #ifndef OS_CODE |
| # define OS_CODE 3 /* assume Unix */ |
| #endif |
| |
| /* memory allocation functions */ |
| |
| void Z_INTERNAL *zng_calloc(void *opaque, unsigned items, unsigned size); |
| void Z_INTERNAL zng_cfree(void *opaque, void *ptr); |
| |
| typedef void *zng_calloc_func(void *opaque, unsigned items, unsigned size); |
| typedef void zng_cfree_func(void *opaque, void *ptr); |
| |
| void Z_INTERNAL *zng_alloc_aligned(zng_calloc_func zalloc, void *opaque, unsigned items, unsigned size, unsigned align); |
| void Z_INTERNAL zng_free_aligned(zng_cfree_func zfree, void *opaque, void *ptr); |
| |
| #define ZALLOC(strm, items, size) zng_alloc_aligned((strm)->zalloc, (strm)->opaque, (items), (size), 64) |
| #define ZFREE(strm, addr) zng_free_aligned((strm)->zfree, (strm)->opaque, (void *)(addr)) |
| |
| #define TRY_FREE(s, p) {if (p) ZFREE(s, p);} |
| |
| #endif /* ZUTIL_H_ */ |