[1050] | 1 | /* inflate9.h -- internal inflate state definition
|
---|
| 2 | * Copyright (C) 1995-2003 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 | /* Possible inflate modes between inflate() calls */
|
---|
| 12 | typedef enum {
|
---|
| 13 | TYPE, /* i: waiting for type bits, including last-flag bit */
|
---|
| 14 | STORED, /* i: waiting for stored size (length and complement) */
|
---|
| 15 | TABLE, /* i: waiting for dynamic block table lengths */
|
---|
| 16 | LEN, /* i: waiting for length/lit code */
|
---|
| 17 | DONE, /* finished check, done -- remain here until reset */
|
---|
| 18 | BAD /* got a data error -- remain here until reset */
|
---|
| 19 | } inflate_mode;
|
---|
| 20 |
|
---|
| 21 | /*
|
---|
| 22 | State transitions between above modes -
|
---|
| 23 |
|
---|
| 24 | (most modes can go to the BAD mode -- not shown for clarity)
|
---|
| 25 |
|
---|
| 26 | Read deflate blocks:
|
---|
| 27 | TYPE -> STORED or TABLE or LEN or DONE
|
---|
| 28 | STORED -> TYPE
|
---|
| 29 | TABLE -> LENLENS -> CODELENS -> LEN
|
---|
| 30 | Read deflate codes:
|
---|
| 31 | LEN -> LEN or TYPE
|
---|
| 32 | */
|
---|
| 33 |
|
---|
| 34 | /* state maintained between inflate() calls. Approximately 7K bytes. */
|
---|
| 35 | struct inflate_state {
|
---|
| 36 | /* sliding window */
|
---|
| 37 | unsigned char FAR *window; /* allocated sliding window, if needed */
|
---|
| 38 | /* dynamic table building */
|
---|
| 39 | unsigned ncode; /* number of code length code lengths */
|
---|
| 40 | unsigned nlen; /* number of length code lengths */
|
---|
| 41 | unsigned ndist; /* number of distance code lengths */
|
---|
| 42 | unsigned have; /* number of code lengths in lens[] */
|
---|
| 43 | code FAR *next; /* next available space in codes[] */
|
---|
| 44 | unsigned short lens[320]; /* temporary storage for code lengths */
|
---|
| 45 | unsigned short work[288]; /* work area for code table building */
|
---|
| 46 | code codes[ENOUGH]; /* space for code tables */
|
---|
| 47 | };
|
---|