MCPcopy Index your code
hub / github.com/python/cpython / EncodeMapWriter

Class EncodeMapWriter

Tools/unicode/genmap_support.py:103–168  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

101
102
103class EncodeMapWriter:
104 filler_class = BufferedFiller
105 elemtype = 'DBCHAR'
106 indextype = 'struct unim_index'
107
108 def __init__(self, fp, prefix, encode_map):
109 self.fp = fp
110 self.prefix = prefix
111 self.encode_map = encode_map
112 self.filler = self.filler_class()
113
114 def generate(self):
115 self.buildmap()
116 self.printmap()
117
118 def buildmap(self):
119 for c1 in range(0, 256):
120 if c1 not in self.encode_map:
121 continue
122 c2map = self.encode_map[c1]
123 rc2values = [k for k in c2map.keys()]
124 rc2values.sort()
125 if not rc2values:
126 continue
127
128 c2map[self.prefix] = True
129 c2map['min'] = rc2values[0]
130 c2map['max'] = rc2values[-1]
131 c2map['midx'] = len(self.filler)
132
133 for v in range(rc2values[0], rc2values[-1] + 1):
134 if v not in c2map:
135 self.write_nochar()
136 elif isinstance(c2map[v], int):
137 self.write_char(c2map[v])
138 elif isinstance(c2map[v], tuple):
139 self.write_multic(c2map[v])
140 else:
141 raise ValueError
142
143 def write_nochar(self):
144 self.filler.write('N,')
145
146 def write_multic(self, point):
147 self.filler.write('M,')
148
149 def write_char(self, point):
150 self.filler.write(str(point) + ',')
151
152 def printmap(self):
153 self.fp.write(f"static const {self.elemtype} __{self.prefix}_encmap[{len(self.filler)}] = {{\n")
154 self.filler.printout(self.fp)
155 self.fp.write("};\n\n")
156 self.fp.write(f"static const {self.indextype} {self.prefix}_encmap[256] = {{\n")
157
158 for i in range(256):
159 if i in self.encode_map and self.prefix in self.encode_map[i]:
160 self.filler.write("{", "__%s_encmap" % self.prefix, "+",

Callers 5

mainFunction · 0.85
mainFunction · 0.85
write_big5_mapsFunction · 0.85
main_hkscsFunction · 0.85
mainFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…