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