def compressed_case_mapping_lines(mappings):
    values_per_line = 12
    bytes_ = []
    for t in mappings:
        lzw.add_cp(bytes_, int(t[0], 16))
        lzw.add_short(bytes_, t[1][0])
        lzw.add_short(bytes_, t[1][1])
    compressed_bytes = lzw.compress(bytes_)
    print 'rewrote {} * 64 = {} bits as {} * 8 = {} bits'.format(len(mappings), len(mappings)*64, len(bytes_), len(bytes_)*8)
    print 'compressed to {} * 16 = {} bits'.format(len(compressed_bytes), len(compressed_bytes) * 16)
    return lzw.compressed_bytes_to_lines(compressed_bytes, values_per_line)
def compressed_case_mapping_to_lines(mappings):
    values_per_line = 12
    bytes_ = []
    for t in mappings:
        lzw.add_short(bytes_, t[0][0])
        lzw.add_short(bytes_, t[0][1])
        try:
            x = case_conditions[t[1]] # TODO: Totally wrong!  Just here for size eval.
        except:
            x = 0
        lzw.add_short(bytes_, x)
    compressed_bytes = lzw.compress(bytes_)
    print 'rewrote {} * 48 = {} bits as {} * 8 = {} bits'.format(len(mappings), len(mappings)*48, len(bytes_), len(bytes_)*8)
    print 'compressed to {} * 16 = {} bits'.format(len(compressed_bytes), len(compressed_bytes) * 16)
    return lzw.compressed_bytes_to_lines(compressed_bytes, values_per_line)
示例#3
0
        if cp in cccs_dict:
            ccc = cccs_dict[cp]
        nfd_quick_check = 'quick_check::yes'
        if cp in quick_check_maps['NFD']:
            nfd_quick_check = quick_check_maps['NFD'][cp]
        nfkd_quick_check = 'quick_check::yes'
        if cp in quick_check_maps['NFKD']:
            nfkd_quick_check = quick_check_maps['NFKD'][cp]
        nfc_quick_check = 'quick_check::yes'
        if cp in quick_check_maps['NFC']:
            nfc_quick_check = quick_check_maps['NFC'][cp]
        nfkc_quick_check = 'quick_check::yes'
        if cp in quick_check_maps['NFKC']:
            nfkc_quick_check = quick_check_maps['NFKC'][cp]
        lzw.add_cp(prop_bytes_, cp)
        lzw.add_short(prop_bytes_, canonical_decomp[0])
        lzw.add_short(prop_bytes_, canonical_decomp[1])
        lzw.add_short(prop_bytes_, compatible_decomp[0])
        lzw.add_short(prop_bytes_, compatible_decomp[1])
        lzw.add_byte(prop_bytes_, int(ccc))
        lzw.add_byte(prop_bytes_, \
                     quick_checks_to_byte(nfd_quick_check, nfkd_quick_check))
        lzw.add_byte(prop_bytes_, \
                     quick_checks_to_byte(nfc_quick_check, nfkc_quick_check))

    value_per_line = 12
    compressed_bytes = lzw.compress(prop_bytes_)
    props_lines, num_shorts = lzw.compressed_bytes_to_lines(
        compressed_bytes, value_per_line)
    #print 'rewrote {} * 144 = {} bits as {} * 8 = {} bits'.format(len(all_cps), len(all_cps)*144, len(prop_bytes_), len(prop_bytes_)*8)
    #print 'compressed to {} * 16 = {} bits'.format(len(compressed_bytes), len(compressed_bytes) * 16)
示例#4
0
            to_reorder_group(g[0], g[1], simple, lead_byte
                             in compressible_lead_bytes))
    reorder_group_str = '    ' + ',\n    '.join(reorder_group_strings) + ',\n'

    values_per_line = 12

    ce_bytes = []
    for ce in collation_elements:
        x = '0' + ''.join(ce[0])
        if ce[0] != ('', ):
            x += '0' * (4 - len(ce[0])) * 2
        lzw.add_int(ce_bytes, int(x, 16))
        x = '0' + ''.join(ce[1])
        if ce[1] != ('', ):
            x += '0' * (2 - len(ce[1])) * 2
        lzw.add_short(ce_bytes, int(x, 16))
        x = '0' + ''.join(ce[2])
        if ce[2] != ('', ):
            x += '0' * (2 - len(ce[2])) * 2
        lzw.add_short(ce_bytes, int(x, 16))
    compressed_ces = lzw.compress(ce_bytes)

    def values_to_lines(values, value_type, values_per_chunk):
        retval = ''
        chunk_form = '''\
#ifdef _MSC_VER
{{
    std::array<{0}, {1}> values {{{{
#endif
    {2}
#ifdef _MSC_VER