Lines Matching refs:code
13 * Each code tree is stored in a compressed form which is itself
14 * a Huffman encoding of the lengths of all the code strings (in
15 * ascending order by source values). The actual code strings are
51 /* end of block literal code */
62 local const int extra_lbits[LENGTH_CODES] /* extra bits for each length code */
65 local const int extra_dbits[D_CODES] /* extra bits for each distance code */
68 local const int extra_blbits[BL_CODES]/* extra bits for each bit length code */
105 /* length code for each normalized match length (0 == MIN_MATCH) */
108 /* First normalized length for each code (0 = MIN_MATCH) */
111 /* First normalized distance for each code (0 = distance of 1) */
119 const intf *extra_bits; /* extra bits for each code or NULL */
164 /* Send a code of the given tree. c and tree must not have side effects */
241 int code; /* code value */
257 /* Initialize the mapping length (0..255) -> length code (0..28) */
259 for (code = 0; code < LENGTH_CODES-1; code++) {
260 base_length[code] = length;
261 for (n = 0; n < (1<<extra_lbits[code]); n++) {
262 _length_code[length++] = (uch)code;
267 * in two different ways: code 284 + 5 bits or code 285, so we
270 _length_code[length-1] = (uch)code;
272 /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
274 for (code = 0 ; code < 16; code++) {
275 base_dist[code] = dist;
276 for (n = 0; n < (1<<extra_dbits[code]); n++) {
277 _dist_code[dist++] = (uch)code;
282 for ( ; code < D_CODES; code++) {
283 base_dist[code] = dist << 7;
284 for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) {
285 _dist_code[256 + dist++] = (uch)code;
298 * tree construction to get a canonical Huffman tree (longest code
557 Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
572 * OUT assertion: the field code is set for all tree elements of non
573 * zero code length.
577 int max_code; /* largest code with non zero frequency */
580 ush next_code[MAX_BITS+1]; /* next code value for each bit length */
581 ush code = 0; /* running code value */
583 int n; /* code index */
585 /* The distribution counts are first used to generate the code values
589 next_code[bits] = code = (code + bl_count[bits-1]) << 1;
591 /* Check that the bit counts in bl_count are consistent. The last code
594 Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
610 * Construct one Huffman tree and assigns the code bit strings and lengths.
613 * OUT assertions: the fields len and code are set to the optimal bit length
614 * and corresponding code. The length opt_len is updated; static_len is
625 int max_code = -1; /* largest code with non zero frequency */
643 /* The pkzip format requires that at least one distance code exists,
645 * possible code. So to avoid special checks later on we force at least
708 int max_code; /* and its largest code of non zero frequency */
712 int curlen; /* length of current code */
713 int nextlen = tree[0].Len; /* length of next code */
714 int count = 0; /* repeat count of the current code */
753 int max_code; /* and its largest code of non zero frequency */
757 int curlen; /* length of current code */
758 int nextlen = tree[0].Len; /* length of next code */
759 int count = 0; /* repeat count of the current code */
799 * bl_order of the last bit length code to send.
804 int max_blindex; /* index of last bit length code of non zero freq */
850 Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
914 int max_blindex = 0; /* index of last bit length code of non zero freq */
936 * in bl_order of the last bit length code to send.
1066 unsigned code; /* the code to send */
1077 code = _length_code[lc];
1078 send_code(s, code+LITERALS+1, ltree); /* send the length code */
1079 extra = extra_lbits[code];
1081 lc -= base_length[code];
1085 code = d_code(dist);
1086 Assert (code < D_CODES, "bad d_code");
1088 send_code(s, code, dtree); /* send the distance code */
1089 extra = extra_dbits[code];
1091 dist -= base_dist[code];
1148 * Reverse the first len bits of a code, using straightforward code (a faster
1152 local unsigned bi_reverse(code, len)
1153 unsigned code; /* the value to invert */
1158 res |= code & 1;
1159 code >>= 1, res <<= 1;