| 66 | } |
| 67 | |
| 68 | private static _treeMake(bits: Map<number, number>, maxbits: number, v: number, len: number): Huffman { |
| 69 | if (len > maxbits) { |
| 70 | throw new FormatError('Invalid huffman'); |
| 71 | } |
| 72 | const idx: number = (v << 5) | len; |
| 73 | if (bits.has(idx)) { |
| 74 | return new Found(bits.get(idx)!); |
| 75 | } |
| 76 | v = v << 1; |
| 77 | len += 1; |
| 78 | return new NeedBit(HuffTools._treeMake(bits, maxbits, v, len), HuffTools._treeMake(bits, maxbits, v | 1, len)); |
| 79 | } |
| 80 | |
| 81 | private static _treeCompress(t: Huffman): Huffman { |
| 82 | const d: number = HuffTools._treeDepth(t); |