(s, lcodes, dcodes, blcodes)
| 23277 | * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. |
| 23278 | */ |
| 23279 | function send_all_trees(s, lcodes, dcodes, blcodes) |
| 23280 | // deflate_state *s; |
| 23281 | // int lcodes, dcodes, blcodes; /* number of codes for each tree */ |
| 23282 | { |
| 23283 | var rank; /* index in bl_order */ |
| 23284 | |
| 23285 | //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes"); |
| 23286 | //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES, |
| 23287 | // "too many codes"); |
| 23288 | //Tracev((stderr, "\nbl counts: ")); |
| 23289 | send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */ |
| 23290 | send_bits(s, dcodes - 1, 5); |
| 23291 | send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */ |
| 23292 | for (rank = 0; rank < blcodes; rank++) { |
| 23293 | //Tracev((stderr, "\nbl code %2d ", bl_order[rank])); |
| 23294 | send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3); |
| 23295 | } |
| 23296 | //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); |
| 23297 | |
| 23298 | send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */ |
| 23299 | //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); |
| 23300 | |
| 23301 | send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */ |
| 23302 | //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); |
| 23303 | } |
| 23304 | |
| 23305 | |
| 23306 | /* =========================================================================== |
no test coverage detected