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)
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)
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