blob: dc5aed36a725b469e7f04de2ee157cabbddea5d4 [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
3 *
4 * This code is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 2 only, as
6 * published by the Free Software Foundation. Sun designates this
7 * particular file as subject to the "Classpath" exception as provided
8 * by Sun in the LICENSE file that accompanied this code.
9 *
10 * This code is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * version 2 for more details (a copy is included in the LICENSE file that
14 * accompanied this code).
15 *
16 * You should have received a copy of the GNU General Public License version
17 * 2 along with this work; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19 *
20 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
21 * CA 95054 USA or visit www.sun.com if you need additional information or
22 * have any questions.
23 */
24
25/*
26 * This file is available under and governed by the GNU General Public
27 * License version 2 only, as published by the Free Software Foundation.
28 * However, the following notice accompanied the original version of this
29 * file and, per its terms, should not be removed:
30 *
31 * inftrees.h -- header to use inftrees.c
32 * Copyright (C) 1995-1998 Mark Adler
33 * For conditions of distribution and use, see copyright notice in zlib.h
34 */
35
36/* WARNING: this file should *not* be used by applications. It is
37 part of the implementation of the compression library and is
38 subject to change. Applications should only use zlib.h.
39 */
40
41/* Huffman code lookup table entry--this entry is four bytes for machines
42 that have 16-bit pointers (e.g. PC's in the small or medium model). */
43
44typedef struct inflate_huft_s FAR inflate_huft;
45
46struct inflate_huft_s {
47 union {
48 struct {
49 Byte Exop; /* number of extra bits or operation */
50 Byte Bits; /* number of bits in this code or subcode */
51 } what;
52 uInt pad; /* pad structure to a power of 2 (4 bytes for */
53 } word; /* 16-bit, 8 bytes for 32-bit int's) */
54 uInt base; /* literal, length base, distance base,
55 or table offset */
56};
57
58/* Maximum size of dynamic tree. The maximum found in a long but non-
59 exhaustive search was 1004 huft structures (850 for length/literals
60 and 154 for distances, the latter actually the result of an
61 exhaustive search). The actual maximum is not known, but the
62 value below is more than safe. */
63#define MANY 1440
64
65extern int inflate_trees_bits OF((
66 uIntf *, /* 19 code lengths */
67 uIntf *, /* bits tree desired/actual depth */
68 inflate_huft * FAR *, /* bits tree result */
69 inflate_huft *, /* space for trees */
70 z_streamp)); /* for messages */
71
72extern int inflate_trees_dynamic OF((
73 uInt, /* number of literal/length codes */
74 uInt, /* number of distance codes */
75 uIntf *, /* that many (total) code lengths */
76 uIntf *, /* literal desired/actual bit depth */
77 uIntf *, /* distance desired/actual bit depth */
78 inflate_huft * FAR *, /* literal/length tree result */
79 inflate_huft * FAR *, /* distance tree result */
80 inflate_huft *, /* space for trees */
81 z_streamp)); /* for messages */
82
83extern int inflate_trees_fixed OF((
84 uIntf *, /* literal desired/actual bit depth */
85 uIntf *, /* distance desired/actual bit depth */
86 inflate_huft * FAR *, /* literal/length tree result */
87 inflate_huft * FAR *, /* distance tree result */
88 z_streamp)); /* for memory allocation */