| .. | .. |
|---|
| 76 | 76 | * probability, to avoid transmitting the lengths for unused bit length codes. |
|---|
| 77 | 77 | */ |
|---|
| 78 | 78 | |
|---|
| 79 | | -#define Buf_size (8 * 2*sizeof(char)) |
|---|
| 80 | | -/* Number of bits used within bi_buf. (bi_buf might be implemented on |
|---|
| 81 | | - * more than 16 bits on some systems.) |
|---|
| 82 | | - */ |
|---|
| 83 | | - |
|---|
| 84 | 79 | /* =========================================================================== |
|---|
| 85 | 80 | * Local data. These are initialized only once. |
|---|
| 86 | 81 | */ |
|---|
| .. | .. |
|---|
| 147 | 142 | static void compress_block (deflate_state *s, ct_data *ltree, |
|---|
| 148 | 143 | ct_data *dtree); |
|---|
| 149 | 144 | static void set_data_type (deflate_state *s); |
|---|
| 150 | | -static void bi_windup (deflate_state *s); |
|---|
| 151 | 145 | static void bi_flush (deflate_state *s); |
|---|
| 152 | 146 | static void copy_block (deflate_state *s, char *buf, unsigned len, |
|---|
| 153 | 147 | int header); |
|---|
| .. | .. |
|---|
| 168 | 162 | * must not have side effects. dist_code[256] and dist_code[257] are never |
|---|
| 169 | 163 | * used. |
|---|
| 170 | 164 | */ |
|---|
| 171 | | - |
|---|
| 172 | | -/* =========================================================================== |
|---|
| 173 | | - * Send a value on a given number of bits. |
|---|
| 174 | | - * IN assertion: length <= 16 and value fits in length bits. |
|---|
| 175 | | - */ |
|---|
| 176 | | -#ifdef DEBUG_ZLIB |
|---|
| 177 | | -static void send_bits (deflate_state *s, int value, int length); |
|---|
| 178 | | - |
|---|
| 179 | | -static void send_bits( |
|---|
| 180 | | - deflate_state *s, |
|---|
| 181 | | - int value, /* value to send */ |
|---|
| 182 | | - int length /* number of bits */ |
|---|
| 183 | | -) |
|---|
| 184 | | -{ |
|---|
| 185 | | - Tracevv((stderr," l %2d v %4x ", length, value)); |
|---|
| 186 | | - Assert(length > 0 && length <= 15, "invalid length"); |
|---|
| 187 | | - s->bits_sent += (ulg)length; |
|---|
| 188 | | - |
|---|
| 189 | | - /* If not enough room in bi_buf, use (valid) bits from bi_buf and |
|---|
| 190 | | - * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid)) |
|---|
| 191 | | - * unused bits in value. |
|---|
| 192 | | - */ |
|---|
| 193 | | - if (s->bi_valid > (int)Buf_size - length) { |
|---|
| 194 | | - s->bi_buf |= (value << s->bi_valid); |
|---|
| 195 | | - put_short(s, s->bi_buf); |
|---|
| 196 | | - s->bi_buf = (ush)value >> (Buf_size - s->bi_valid); |
|---|
| 197 | | - s->bi_valid += length - Buf_size; |
|---|
| 198 | | - } else { |
|---|
| 199 | | - s->bi_buf |= value << s->bi_valid; |
|---|
| 200 | | - s->bi_valid += length; |
|---|
| 201 | | - } |
|---|
| 202 | | -} |
|---|
| 203 | | -#else /* !DEBUG_ZLIB */ |
|---|
| 204 | | - |
|---|
| 205 | | -#define send_bits(s, value, length) \ |
|---|
| 206 | | -{ int len = length;\ |
|---|
| 207 | | - if (s->bi_valid > (int)Buf_size - len) {\ |
|---|
| 208 | | - int val = value;\ |
|---|
| 209 | | - s->bi_buf |= (val << s->bi_valid);\ |
|---|
| 210 | | - put_short(s, s->bi_buf);\ |
|---|
| 211 | | - s->bi_buf = (ush)val >> (Buf_size - s->bi_valid);\ |
|---|
| 212 | | - s->bi_valid += len - Buf_size;\ |
|---|
| 213 | | - } else {\ |
|---|
| 214 | | - s->bi_buf |= (value) << s->bi_valid;\ |
|---|
| 215 | | - s->bi_valid += len;\ |
|---|
| 216 | | - }\ |
|---|
| 217 | | -} |
|---|
| 218 | | -#endif /* DEBUG_ZLIB */ |
|---|
| 219 | 165 | |
|---|
| 220 | 166 | /* =========================================================================== |
|---|
| 221 | 167 | * Initialize the various 'constant' tables. In a multi-threaded environment, |
|---|