def gen_range_tables(out, name, s_suffix, l_suffix, ranges): | |
numshort = 0 | |
numlong = 0 | |
sptr = "NULL" | |
lptr = "NULL" | |
for range in ranges: | |
(low, high) = range | |
if high < 0x10000: | |
if numshort == 0: | |
sptr = name + s_suffix | |
pline = "static const xmlChSRange %s[] = {" % sptr | |
else: | |
pline += "," | |
numshort += 1 | |
else: | |
if numlong == 0: | |
if numshort > 0: | |
out.write(pline + "};\n") | |
lptr = name + l_suffix | |
pline = "static const xmlChLRange %s[] = {" % lptr | |
else: | |
pline += "," | |
numlong += 1 | |
if len(pline) > 60: | |
out.write(pline + "\n") | |
pline = " " | |
elif pline[-1:] == ",": | |
pline += " " | |
pline += "{%s, %s}" % (hex(low), hex(high)) | |
out.write(pline + "};\n") | |
return "{%s,%s,%s,%s}" % (numshort, numlong, sptr, lptr) |