Escape invalid code points

This commit is contained in:
Victor Zverovich
2021-08-22 15:14:13 -07:00
parent a76031e11d
commit a212ff757f
3 changed files with 24 additions and 23 deletions

View File

@@ -173,29 +173,29 @@ def main():
print("""\
inline auto is_printable(uint32_t cp) -> bool {\
""")
print_singletons(singletons0u, singletons0l, 'singletons0_upper', 'singletons0_lower')
print_singletons(singletons1u, singletons1l, 'singletons1_upper', 'singletons1_lower')
print_singletons(singletons0u, singletons0l, 'singletons0', 'singletons0_lower')
print_singletons(singletons1u, singletons1l, 'singletons1', 'singletons1_lower')
print_normal(normal0, 'normal0')
print_normal(normal1, 'normal1')
print("""\
auto lower = static_cast<uint16_t>(cp);
if (cp < 0x10000) {
return is_printable(lower, singletons0_upper,
sizeof(singletons0_upper) / sizeof(*singletons0_upper),
return is_printable(lower, singletons0,
sizeof(singletons0) / sizeof(*singletons0),
singletons0_lower, normal0, sizeof(normal0));
}
if (cp < 0x20000) {
return is_printable(lower, singletons1_upper,
sizeof(singletons1_upper) / sizeof(*singletons1_upper),
return is_printable(lower, singletons1,
sizeof(singletons1) / sizeof(*singletons1),
singletons1_lower, normal1, sizeof(normal1));
}\
""")
for a, b in extra:
print(" if (0x{:x} <= cp && cp < 0x{:x}) return false;".format(a, a + b))
print("""\
return true;
}\
""")
return cp < 0x{:x};
}}\
""".format(NUM_CODEPOINTS))
if __name__ == '__main__':
main()