research/brotlidump.py
def setLength(self, lengthTable):
        """Given the bit pattern lengths for symbols given in lengthTable,
        set decodeTable, minLength, maxLength
        """
        self.lengthTable = lengthTable
        self.minLength = min(lengthTable.values())
        self.maxLength = max(lengthTable.values())
        #compute the backwards codes first; then reverse them
        #compute (backwards) first code for every separate lengths
        nextCodes = []
        #build codes for each length, from right to left
        code = 0
        for bits in range(self.maxLength+1):
            code <<= 1
            nextCodes.append(code)
            code += sum(x==bits for x in lengthTable.values())
        self.decodeTable = {}
        #count codes for each length, and store reversed in the table
        for symbol in sorted(lengthTable):
            bits = lengthTable[symbol]
            bitpattern = '{:0{}b}'.format(nextCodes[bits], bits)
            self.decodeTable[int(bitpattern[::-1], 2)] = symbol
            nextCodes[bits] += 1
        self.switchToPrefix()
def setLength(self, lengthTable):
        """Given the bit pattern lengths for symbols given in lengthTable,
        set decodeTable, minLength, maxLength
        """
        self.lengthTable = lengthTable
        self.minLength = min(lengthTable.values())
        self.maxLength = max(lengthTable.values())
        #compute the backwards codes first; then reverse them
        #compute (backwards) first code for every separate lengths
        nextCodes = []
        #build codes for each length, from right to left
        code = 0
        for bits in range(self.maxLength+1):
            code <<= 1
            nextCodes.append(code)
            code += sum(x==bits for x in lengthTable.values())
        self.decodeTable = {}
        #count codes for each length, and store reversed in the table
        for symbol in sorted(lengthTable):
            bits = lengthTable[symbol]
            bitpattern = '{:0{}b}'.format(nextCodes[bits], bits)
            self.decodeTable[int(bitpattern[::-1], 2)] = symbol
            nextCodes[bits] += 1
        self.switchToPrefix()
def setLength ( self , lengthTable ) : self . lengthTable = lengthTable self . minLength = min ( lengthTable . values ( ) ) self . maxLength = max ( lengthTable . values ( ) ) #compute the backwards codes first; then reverse them #compute (backwards) first code for every separate lengths nextCodes = [ ] #build codes for each length, from right to left code = 0 for bits in range ( self . maxLength + 1 ) : code <<= 1 nextCodes . append ( code ) code += sum ( x == bits for x in lengthTable . values ( ) ) self . decodeTable = { } #count codes for each length, and store reversed in the table for symbol in sorted ( lengthTable ) : bits = lengthTable [ symbol ] bitpattern = '{:0{}b}' . format ( nextCodes [ bits ] , bits ) self . decodeTable [ int ( bitpattern [ : : - 1 ] , 2 ) ] = symbol nextCodes [ bits ] += 1 self . switchToPrefix ( )
Given the bit pattern lengths for symbols given in lengthTable,
        set decodeTable, minLength, maxLength
Given the bit pattern lengths for symbols given in lengthTable set decodeTable minLength maxLength