gen-uni-tables.c produces types like this: struct { int header[1]; int level1[2]; short level2[2 << 7]; /*unsigned*/ int level3[16 << 4]; }
Why is the unsigned commented out? Some of the constants are so large that they are treated as unsigned ints. This kind of narrowing initialization is no longer valid C++.