Back to index

avfs  1.0.1
inftrees.h
Go to the documentation of this file.
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 */