aboutsummaryrefslogtreecommitdiff
path: root/trees.c
diff options
context:
space:
mode:
authorMark Adler <madler@alumni.caltech.edu>2011-09-09 23:19:55 -0700
committerMark Adler <madler@alumni.caltech.edu>2011-09-09 23:19:55 -0700
commit965fe72aed580d518c979c9a33b49e7df28205f7 (patch)
treed2471c968f71224c415a9b6cb3b4ca01bd0a94ab /trees.c
parentb8c9ecb0765fc39423c07613d909c5193378bdfd (diff)
downloadzlib-965fe72aed580d518c979c9a33b49e7df28205f7.tar.gz
zlib-965fe72aed580d518c979c9a33b49e7df28205f7.tar.bz2
zlib-965fe72aed580d518c979c9a33b49e7df28205f7.zip
zlib 1.1.0v1.1.0
Diffstat (limited to 'trees.c')
-rw-r--r--trees.c31
1 files changed, 12 insertions, 19 deletions
diff --git a/trees.c b/trees.c
index e2c230f..e09e94c 100644
--- a/trees.c
+++ b/trees.c
@@ -99,13 +99,13 @@ local ct_data static_dtree[D_CODES];
99 * 5 bits.) 99 * 5 bits.)
100 */ 100 */
101 101
102local uch dist_code[DIST_CODE_LEN]; 102uch _dist_code[DIST_CODE_LEN];
103/* Distance codes. The first 256 values correspond to the distances 103/* Distance codes. The first 256 values correspond to the distances
104 * 3 .. 258, the last 256 values correspond to the top 8 bits of 104 * 3 .. 258, the last 256 values correspond to the top 8 bits of
105 * the 15 bit distances. 105 * the 15 bit distances.
106 */ 106 */
107 107
108local uch length_code[MAX_MATCH-MIN_MATCH+1]; 108uch _length_code[MAX_MATCH-MIN_MATCH+1];
109/* length code for each normalized match length (0 == MIN_MATCH) */ 109/* length code for each normalized match length (0 == MIN_MATCH) */
110 110
111local int base_length[LENGTH_CODES]; 111local int base_length[LENGTH_CODES];
@@ -173,13 +173,6 @@ local void gen_trees_header OF((void));
173 send_bits(s, tree[c].Code, tree[c].Len); } 173 send_bits(s, tree[c].Code, tree[c].Len); }
174#endif 174#endif
175 175
176#define d_code(dist) \
177 ((dist) < 256 ? dist_code[dist] : dist_code[256+((dist)>>7)])
178/* Mapping from a distance to a distance code. dist is the distance - 1 and
179 * must not have side effects. dist_code[256] and dist_code[257] are never
180 * used.
181 */
182
183/* =========================================================================== 176/* ===========================================================================
184 * Output a short LSB first on the stream. 177 * Output a short LSB first on the stream.
185 * IN assertion: there is enough room in pendingBuf. 178 * IN assertion: there is enough room in pendingBuf.
@@ -262,7 +255,7 @@ local void tr_static_init()
262 for (code = 0; code < LENGTH_CODES-1; code++) { 255 for (code = 0; code < LENGTH_CODES-1; code++) {
263 base_length[code] = length; 256 base_length[code] = length;
264 for (n = 0; n < (1<<extra_lbits[code]); n++) { 257 for (n = 0; n < (1<<extra_lbits[code]); n++) {
265 length_code[length++] = (uch)code; 258 _length_code[length++] = (uch)code;
266 } 259 }
267 } 260 }
268 Assert (length == 256, "tr_static_init: length != 256"); 261 Assert (length == 256, "tr_static_init: length != 256");
@@ -270,14 +263,14 @@ local void tr_static_init()
270 * in two different ways: code 284 + 5 bits or code 285, so we 263 * in two different ways: code 284 + 5 bits or code 285, so we
271 * overwrite length_code[255] to use the best encoding: 264 * overwrite length_code[255] to use the best encoding:
272 */ 265 */
273 length_code[length-1] = (uch)code; 266 _length_code[length-1] = (uch)code;
274 267
275 /* Initialize the mapping dist (0..32K) -> dist code (0..29) */ 268 /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
276 dist = 0; 269 dist = 0;
277 for (code = 0 ; code < 16; code++) { 270 for (code = 0 ; code < 16; code++) {
278 base_dist[code] = dist; 271 base_dist[code] = dist;
279 for (n = 0; n < (1<<extra_dbits[code]); n++) { 272 for (n = 0; n < (1<<extra_dbits[code]); n++) {
280 dist_code[dist++] = (uch)code; 273 _dist_code[dist++] = (uch)code;
281 } 274 }
282 } 275 }
283 Assert (dist == 256, "tr_static_init: dist != 256"); 276 Assert (dist == 256, "tr_static_init: dist != 256");
@@ -285,7 +278,7 @@ local void tr_static_init()
285 for ( ; code < D_CODES; code++) { 278 for ( ; code < D_CODES; code++) {
286 base_dist[code] = dist << 7; 279 base_dist[code] = dist << 7;
287 for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) { 280 for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) {
288 dist_code[256 + dist++] = (uch)code; 281 _dist_code[256 + dist++] = (uch)code;
289 } 282 }
290 } 283 }
291 Assert (dist == 256, "tr_static_init: 256+dist != 512"); 284 Assert (dist == 256, "tr_static_init: 256+dist != 512");
@@ -349,15 +342,15 @@ void gen_trees_header()
349 static_dtree[i].Len, SEPARATOR(i, D_CODES-1, 5)); 342 static_dtree[i].Len, SEPARATOR(i, D_CODES-1, 5));
350 } 343 }
351 344
352 fprintf(header, "local const uch dist_code[DIST_CODE_LEN] = {\n"); 345 fprintf(header, "const uch _dist_code[DIST_CODE_LEN] = {\n");
353 for (i = 0; i < DIST_CODE_LEN; i++) { 346 for (i = 0; i < DIST_CODE_LEN; i++) {
354 fprintf(header, "%2u%s", dist_code[i], 347 fprintf(header, "%2u%s", _dist_code[i],
355 SEPARATOR(i, DIST_CODE_LEN-1, 20)); 348 SEPARATOR(i, DIST_CODE_LEN-1, 20));
356 } 349 }
357 350
358 fprintf(header, "local const uch length_code[MAX_MATCH-MIN_MATCH+1]= {\n"); 351 fprintf(header, "const uch _length_code[MAX_MATCH-MIN_MATCH+1]= {\n");
359 for (i = 0; i < MAX_MATCH-MIN_MATCH+1; i++) { 352 for (i = 0; i < MAX_MATCH-MIN_MATCH+1; i++) {
360 fprintf(header, "%2u%s", length_code[i], 353 fprintf(header, "%2u%s", _length_code[i],
361 SEPARATOR(i, MAX_MATCH-MIN_MATCH, 20)); 354 SEPARATOR(i, MAX_MATCH-MIN_MATCH, 20));
362 } 355 }
363 356
@@ -1045,7 +1038,7 @@ int _tr_tally (s, dist, lc)
1045 (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) && 1038 (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
1046 (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match"); 1039 (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match");
1047 1040
1048 s->dyn_ltree[length_code[lc]+LITERALS+1].Freq++; 1041 s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++;
1049 s->dyn_dtree[d_code(dist)].Freq++; 1042 s->dyn_dtree[d_code(dist)].Freq++;
1050 } 1043 }
1051 1044
@@ -1094,7 +1087,7 @@ local void compress_block(s, ltree, dtree)
1094 Tracecv(isgraph(lc), (stderr," '%c' ", lc)); 1087 Tracecv(isgraph(lc), (stderr," '%c' ", lc));
1095 } else { 1088 } else {
1096 /* Here, lc is the match length - MIN_MATCH */ 1089 /* Here, lc is the match length - MIN_MATCH */
1097 code = length_code[lc]; 1090 code = _length_code[lc];
1098 send_code(s, code+LITERALS+1, ltree); /* send the length code */ 1091 send_code(s, code+LITERALS+1, ltree); /* send the length code */
1099 extra = extra_lbits[code]; 1092 extra = extra_lbits[code];
1100 if (extra != 0) { 1093 if (extra != 0) {