30#define LENGTH_CODES 29
36#define L_CODES (LITERALS+1+LENGTH_CODES)
45#define HEAP_SIZE (2*L_CODES+1)
53#define FINISH_STATE 666
170# define max_insert_length max_lazy_match
262#define put_byte(s, c) {s->pending_buf[s->pending++] = (c);}
265#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
270#define MAX_DIST(s) ((s)->w_size-MIN_LOOKAHEAD)
284#define d_code(dist) \
285 ((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)])
294#if defined(GEN_TREES_H) || !defined(STDC)
302# define _tr_tally_lit(s, c, flush) \
304 s->d_buf[s->last_lit] = 0; \
305 s->l_buf[s->last_lit++] = cc; \
306 s->dyn_ltree[cc].Freq++; \
307 flush = (s->last_lit == s->lit_bufsize-1); \
309# define _tr_tally_dist(s, distance, length, flush) \
310 { uch len = (length); \
311 ush dist = (distance); \
312 s->d_buf[s->last_lit] = dist; \
313 s->l_buf[s->last_lit++] = len; \
315 s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
316 s->dyn_dtree[d_code(dist)].Freq++; \
317 flush = (s->last_lit == s->lit_bufsize-1); \
320# define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c)
321# define _tr_tally_dist(s, distance, length, flush) \
322 flush = _tr_tally(s, distance, length)
struct tree_desc_s tree_desc
struct internal_state deflate_state
struct tree_desc_s l_desc
struct ct_data_s dyn_dtree[2 *D_CODES+1]
struct ct_data_s bl_tree[2 *BL_CODES+1]
struct tree_desc_s bl_desc
struct tree_desc_s d_desc
struct ct_data_s dyn_ltree[HEAP_SIZE]
static_tree_desc * stat_desc
int _tr_tally(deflate_state *s, unsigned dist, unsigned lc)
void _tr_init(deflate_state *s)
void _tr_flush_block(deflate_state *s, charf *buf, ulg stored_len, int eof)
void _tr_align(deflate_state *s)
void _tr_stored_block(deflate_state *s, charf *buf, ulg stored_len, int eof)