diff options
Diffstat (limited to 'deflate.h')
-rw-r--r-- | deflate.h | 42 |
1 files changed, 42 insertions, 0 deletions
@@ -273,4 +273,46 @@ ulg _tr_flush_block OF((deflate_state *s, charf *buf, ulg stored_len, | |||
273 | void _tr_align OF((deflate_state *s)); | 273 | void _tr_align OF((deflate_state *s)); |
274 | void _tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len, | 274 | void _tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len, |
275 | int eof)); | 275 | int eof)); |
276 | |||
277 | #define d_code(dist) \ | ||
278 | ((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)]) | ||
279 | /* Mapping from a distance to a distance code. dist is the distance - 1 and | ||
280 | * must not have side effects. _dist_code[256] and _dist_code[257] are never | ||
281 | * used. | ||
282 | */ | ||
283 | |||
284 | #ifndef DEBUG | ||
285 | /* Inline versions of _tr_tally for speed: */ | ||
286 | |||
287 | #if defined(GEN_TREES_H) || !defined(STDC) | ||
288 | extern uch _length_code[]; | ||
289 | extern uch _dist_code[]; | ||
290 | #else | ||
291 | extern const uch _length_code[]; | ||
292 | extern const uch _dist_code[]; | ||
293 | #endif | ||
294 | |||
295 | # define _tr_tally_lit(s, c, flush) \ | ||
296 | { uch cc = (c); \ | ||
297 | s->d_buf[s->last_lit] = 0; \ | ||
298 | s->l_buf[s->last_lit++] = cc; \ | ||
299 | s->dyn_ltree[cc].Freq++; \ | ||
300 | flush = (s->last_lit == s->lit_bufsize-1); \ | ||
301 | } | ||
302 | # define _tr_tally_dist(s, distance, length, flush) \ | ||
303 | { uch len = (length); \ | ||
304 | ush dist = (distance); \ | ||
305 | s->d_buf[s->last_lit] = dist; \ | ||
306 | s->l_buf[s->last_lit++] = len; \ | ||
307 | dist--; \ | ||
308 | s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \ | ||
309 | s->dyn_dtree[d_code(dist)].Freq++; \ | ||
310 | flush = (s->last_lit == s->lit_bufsize-1); \ | ||
311 | } | ||
312 | #else | ||
313 | # define _tr_tally_lit(s, c, flush) _tr_tally(s, 0, c, flush) | ||
314 | # define _tr_tally_dist(s, distance, length, flush) \ | ||
315 | _tr_tally(s, distance, length, flush) | ||
316 | #endif | ||
317 | |||
276 | #endif | 318 | #endif |