1 | /* inftrees.c -- generate Huffman trees for efficient decoding
|
---|
2 | * Copyright (C) 1995-2005 Mark Adler
|
---|
3 | * For conditions of distribution and use, see copyright notice in zlib.h
|
---|
4 | */
|
---|
5 |
|
---|
6 | #include "zutil.h"
|
---|
7 | #include "inftrees.h"
|
---|
8 |
|
---|
9 | #define MAXBITS 15
|
---|
10 |
|
---|
11 | const char inflate_copyright[] =
|
---|
12 | " inflate 1.2.3 Copyright 1995-2005 Mark Adler ";
|
---|
13 | /*
|
---|
14 | If you use the zlib library in a product, an acknowledgment is welcome
|
---|
15 | in the documentation of your product. If for some reason you cannot
|
---|
16 | include such an acknowledgment, I would appreciate that you keep this
|
---|
17 | copyright string in the executable of your product.
|
---|
18 | */
|
---|
19 |
|
---|
20 | /*
|
---|
21 | Build a set of tables to decode the provided canonical Huffman code.
|
---|
22 | The code lengths are lens[0..codes-1]. The result starts at *table,
|
---|
23 | whose indices are 0..2^bits-1. work is a writable array of at least
|
---|
24 | lens shorts, which is used as a work area. type is the type of code
|
---|
25 | to be generated, CODES, LENS, or DISTS. On return, zero is success,
|
---|
26 | -1 is an invalid code, and +1 means that ENOUGH isn't enough. table
|
---|
27 | on return points to the next available entry's address. bits is the
|
---|
28 | requested root table index bits, and on return it is the actual root
|
---|
29 | table index bits. It will differ if the request is greater than the
|
---|
30 | longest code or if it is less than the shortest code.
|
---|
31 | */
|
---|
32 | int inflate_table(type, lens, codes, table, bits, work)
|
---|
33 | codetype type;
|
---|
34 | unsigned short FAR *lens;
|
---|
35 | unsigned codes;
|
---|
36 | code FAR * FAR *table;
|
---|
|
---|