19e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project/* inflate9.h -- internal inflate state definition
29e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project * Copyright (C) 1995-2003 Mark Adler
39e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project * For conditions of distribution and use, see copyright notice in zlib.h
49e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project */
59e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
69e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project/* WARNING: this file should *not* be used by applications. It is
79e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project   part of the implementation of the compression library and is
89e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project   subject to change. Applications should only use zlib.h.
99e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project */
109e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
119e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project/* Possible inflate modes between inflate() calls */
129e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Projecttypedef enum {
139e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project        TYPE,       /* i: waiting for type bits, including last-flag bit */
149e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project        STORED,     /* i: waiting for stored size (length and complement) */
159e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project        TABLE,      /* i: waiting for dynamic block table lengths */
169e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project            LEN,        /* i: waiting for length/lit code */
179e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    DONE,       /* finished check, done -- remain here until reset */
189e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    BAD         /* got a data error -- remain here until reset */
199e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project} inflate_mode;
209e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
219e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project/*
229e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    State transitions between above modes -
239e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
249e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    (most modes can go to the BAD mode -- not shown for clarity)
259e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
269e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    Read deflate blocks:
279e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project            TYPE -> STORED or TABLE or LEN or DONE
289e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project            STORED -> TYPE
299e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project            TABLE -> LENLENS -> CODELENS -> LEN
309e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    Read deflate codes:
319e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                LEN -> LEN or TYPE
329e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project */
339e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
349e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project/* state maintained between inflate() calls.  Approximately 7K bytes. */
359e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Projectstruct inflate_state {
369e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project        /* sliding window */
379e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    unsigned char FAR *window;  /* allocated sliding window, if needed */
389e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project        /* dynamic table building */
399e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    unsigned ncode;             /* number of code length code lengths */
409e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    unsigned nlen;              /* number of length code lengths */
419e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    unsigned ndist;             /* number of distance code lengths */
429e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    unsigned have;              /* number of code lengths in lens[] */
439e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    code FAR *next;             /* next available space in codes[] */
449e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    unsigned short lens[320];   /* temporary storage for code lengths */
459e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    unsigned short work[288];   /* work area for code table building */
469e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    code codes[ENOUGH];         /* space for code tables */
479e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project};
48