diff options
Diffstat (limited to 'inftrees.h')
-rw-r--r-- | inftrees.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/inftrees.h b/inftrees.h new file mode 100644 index 0000000..6001a4e --- /dev/null +++ b/inftrees.h | |||
@@ -0,0 +1,62 @@ | |||
1 | /* inftrees.h -- header to use inftrees.c | ||
2 | * Copyright (C) 1995 Mark Adler | ||
3 | * For conditions of distribution and use, see copyright notice in zlib.h | ||
4 | */ | ||
5 | |||
6 | /* WARNING: this file should *not* be used by applications. It is | ||
7 | part of the implementation of the compression library and is | ||
8 | subject to change. Applications should only use zlib.h. | ||
9 | */ | ||
10 | |||
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). | ||
13 | Valid extra bits (exop) are 0..13. exop == -64 is EOB (end of block), | ||
14 | exop == 16 means that v is a literal, exop < 0 means that v is a pointer | ||
15 | to the next table, which codes -exop bits, and lastly exop == -128 | ||
16 | indicates an unused code. If a code with exop == -128 is looked up, | ||
17 | this implies an error in the data. */ | ||
18 | |||
19 | typedef struct inflate_huft_s inflate_huft; | ||
20 | struct inflate_huft_s { | ||
21 | union { | ||
22 | struct { | ||
23 | char Exop; /* number of extra bits or operation */ | ||
24 | char Bits; /* number of bits in this code or subcode */ | ||
25 | } what; | ||
26 | Byte *pad; /* pad structure to a power of 2 (4 bytes for */ | ||
27 | } word; /* 16-bit, 8 bytes for 32-bit machines) */ | ||
28 | union { | ||
29 | uInt Base; /* literal, length base, or distance base */ | ||
30 | inflate_huft *Next; /* pointer to next level of table */ | ||
31 | } more; | ||
32 | }; | ||
33 | |||
34 | #ifdef DEBUG | ||
35 | extern uInt inflate_hufts; | ||
36 | #endif | ||
37 | |||
38 | extern int inflate_trees_bits __P(( | ||
39 | uInt *, /* 19 code lengths */ | ||
40 | uInt *, /* bits tree desired/actual depth */ | ||
41 | inflate_huft **, /* bits tree result */ | ||
42 | z_stream *)); /* for zalloc, zfree functions */ | ||
43 | |||
44 | extern int inflate_trees_dynamic __P(( | ||
45 | uInt, /* number of literal/length codes */ | ||
46 | uInt, /* number of distance codes */ | ||
47 | uInt *, /* that many (total) code lengths */ | ||
48 | uInt *, /* literal desired/actual bit depth */ | ||
49 | uInt *, /* distance desired/actual bit depth */ | ||
50 | inflate_huft **, /* literal/length tree result */ | ||
51 | inflate_huft **, /* distance tree result */ | ||
52 | z_stream *)); /* for zalloc, zfree functions */ | ||
53 | |||
54 | extern int inflate_trees_fixed __P(( | ||
55 | uInt *, /* literal desired/actual bit depth */ | ||
56 | uInt *, /* distance desired/actual bit depth */ | ||
57 | inflate_huft **, /* literal/length tree result */ | ||
58 | inflate_huft **)); /* distance tree result */ | ||
59 | |||
60 | extern int inflate_trees_free __P(( | ||
61 | inflate_huft *, /* tables to free */ | ||
62 | z_stream *)); /* for zfree function */ | ||