catInvalid // 15 <delete>
};
-CatCode theCatcode[256];
+CatCode theCatcode[128];
-inline CatCode catcode(unsigned char c)
+inline CatCode catcode(char_type c)
{
+ /* The only characters that are not catOther lie in the pure ASCII
+ * range. Therefore theCatcode has only 128 entries.
+ * TeX itself deals with 8bit characters, so if needed this table
+ * could be enlarged to 256 entries.
+ * Any larger value does not make sense, since the fact that we use
+ * unicode internally does not change Knuth's TeX engine.
+ * Apart from that a table for the full 21bit UCS4 range would waste
+ * too much memory. */
+ if (c >= 128)
+ return catOther;
+
return theCatcode[c];
}
void initParser()
{
- fill(theCatcode, theCatcode + 256, catOther);
+ fill(theCatcode, theCatcode + 128, catOther);
fill(theCatcode + 'a', theCatcode + 'z' + 1, catLetter);
fill(theCatcode + 'A', theCatcode + 'Z' + 1, catLetter);