8
8
subject to change. Applications should only use zlib.h.
11
/* Huffman code lookup table entry--this entry is four bytes for machines
12
that have 16-bit pointers (e.g. PC's in the small or medium model). */
14
typedef struct inflate_huft_s FAR inflate_huft;
16
struct inflate_huft_s {
19
Byte Exop; /* number of extra bits or operation */
20
Byte Bits; /* number of bits in this code or subcode */
22
uInt pad; /* pad structure to a power of 2 (4 bytes for */
23
} word; /* 16-bit, 8 bytes for 32-bit int's) */
24
uInt base; /* literal, length base, distance base,
11
/* Structure for decoding tables. Each entry provides either the
12
information needed to do the operation requested by the code that
13
indexed that table entry, or it provides a pointer to another
14
table that indexes more bits of the code. op indicates whether
15
the entry is a pointer to another table, a literal, a length or
16
distance, an end-of-block, or an invalid code. For a table
17
pointer, the low four bits of op is the number of index bits of
18
that table. For a length or distance, the low four bits of op
19
is the number of extra bits to get after the code. bits is
20
the number of bits in this code or part of the code to drop off
21
of the bit buffer. val is the actual byte to output in the case
22
of a literal, the base length or distance, or the offset from
23
the current table to the next table. Each entry is four bytes. */
25
unsigned char op; /* operation, extra bits, table bits */
26
unsigned char bits; /* bits in this part of the code */
27
unsigned short val; /* offset in table or code value */
30
/* op values as set by inflate_table():
32
0000tttt - table link, tttt != 0 is the number of table index bits
33
0001eeee - length or distance, eeee is the number of extra bits
34
01100000 - end of block
35
01000000 - invalid code
28
38
/* Maximum size of dynamic tree. The maximum found in a long but non-
29
exhaustive search was 1004 huft structures (850 for length/literals
30
and 154 for distances, the latter actually the result of an
31
exhaustive search). The actual maximum is not known, but the
32
value below is more than safe. */
35
extern int inflate_trees_bits OF((
36
uIntf *, /* 19 code lengths */
37
uIntf *, /* bits tree desired/actual depth */
38
inflate_huft * FAR *, /* bits tree result */
39
inflate_huft *, /* space for trees */
40
z_streamp)); /* for messages */
42
extern int inflate_trees_dynamic OF((
43
uInt, /* number of literal/length codes */
44
uInt, /* number of distance codes */
45
uIntf *, /* that many (total) code lengths */
46
uIntf *, /* literal desired/actual bit depth */
47
uIntf *, /* distance desired/actual bit depth */
48
inflate_huft * FAR *, /* literal/length tree result */
49
inflate_huft * FAR *, /* distance tree result */
50
inflate_huft *, /* space for trees */
51
z_streamp)); /* for messages */
53
extern int inflate_trees_fixed OF((
54
uIntf *, /* literal desired/actual bit depth */
55
uIntf *, /* distance desired/actual bit depth */
56
inflate_huft * FAR *, /* literal/length tree result */
57
inflate_huft * FAR *, /* distance tree result */
58
z_streamp)); /* for memory allocation */
39
exhaustive search was 1444 code structures (852 for length/literals
40
and 592 for distances, the latter actually the result of an
41
exhaustive search). The true maximum is not known, but the value
42
below is more than safe. */
46
/* Type of code to build for inftable() */
53
extern int inflate_table OF((codetype type, unsigned short FAR *lens,
54
unsigned codes, code FAR * FAR *table,
55
unsigned FAR *bits, unsigned short FAR *work));