00001 /* inftrees.h -- header to use inftrees.c 00002 * Copyright (C) 1995-2002 Mark Adler 00003 * For conditions of distribution and use, see copyright notice in zlib.h 00004 */ 00005 00006 /* WARNING: this file should *not* be used by applications. It is 00007 part of the implementation of the compression library and is 00008 subject to change. Applications should only use zlib.h. 00009 */ 00010 00011 /* Huffman code lookup table entry--this entry is four bytes for machines 00012 that have 16-bit pointers (e.g. PC's in the small or medium model). */ 00013 00014 typedef struct inflate_huft_s FAR inflate_huft; 00015 00016 struct inflate_huft_s { 00017 union { 00018 struct { 00019 Byte Exop; /* number of extra bits or operation */ 00020 Byte Bits; /* number of bits in this code or subcode */ 00021 } what; 00022 uInt pad; /* pad structure to a power of 2 (4 bytes for */ 00023 } word; /* 16-bit, 8 bytes for 32-bit int's) */ 00024 uInt base; /* literal, length base, distance base, 00025 or table offset */ 00026 }; 00027 00028 /* Maximum size of dynamic tree. The maximum found in a long but non- 00029 exhaustive search was 1004 huft structures (850 for length/literals 00030 and 154 for distances, the latter actually the result of an 00031 exhaustive search). The actual maximum is not known, but the 00032 value below is more than safe. */ 00033 #define MANY 1440 00034 00035 extern int inflate_trees_bits OF(( 00036 uIntf *, /* 19 code lengths */ 00037 uIntf *, /* bits tree desired/actual depth */ 00038 inflate_huft * FAR *, /* bits tree result */ 00039 inflate_huft *, /* space for trees */ 00040 z_streamp)); /* for messages */ 00041 00042 extern int inflate_trees_dynamic OF(( 00043 uInt, /* number of literal/length codes */ 00044 uInt, /* number of distance codes */ 00045 uIntf *, /* that many (total) code lengths */ 00046 uIntf *, /* literal desired/actual bit depth */ 00047 uIntf *, /* distance desired/actual bit depth */ 00048 inflate_huft * FAR *, /* literal/length tree result */ 00049 inflate_huft * FAR *, /* distance tree result */ 00050 inflate_huft *, /* space for trees */ 00051 z_streamp)); /* for messages */ 00052 00053 extern int inflate_trees_fixed OF(( 00054 uIntf *, /* literal desired/actual bit depth */ 00055 uIntf *, /* distance desired/actual bit depth */ 00056 inflate_huft * FAR *, /* literal/length tree result */ 00057 inflate_huft * FAR *, /* distance tree result */ 00058 z_streamp)); /* for memory allocation */