From 9923bf4581fd2250d457ef0242231878a3de9675 Mon Sep 17 00:00:00 2001 From: ketmar Date: Fri, 26 Aug 2011 10:35:15 +0300 Subject: [PATCH] changed unicode mapper a little --- 0build_common.sh | 7 +- src/hsregexp.c | 17 +- src/hsregexp_unicode_mapping.c | 1981 ---------------------------------------- src/unigen.c | 31 +- 4 files changed, 19 insertions(+), 2017 deletions(-) delete mode 100644 src/hsregexp_unicode_mapping.c diff --git a/0build_common.sh b/0build_common.sh index 1eb5d1e..7c64d69 100644 --- a/0build_common.sh +++ b/0build_common.sh @@ -21,7 +21,7 @@ function dolink { ptmp="$2" shift shift - echo "Link $1" + echo "Link ${fname}" if [ "z$ptmp" = "z" ]; then ptmp="${BUILDPATH}" fi @@ -77,6 +77,11 @@ mv -f y.tab.c ${BUILDPATH}/jamgram.c mv -f y.tab.h ${BUILDPATH}/jamgram.h docc "jamgram" ${BUILDPATH} +docc "unigen" +dolink "unigen" +echo "unigen" +${WINE} ${BUILDPATH}/unigen${EXESFX} ${BUILDPATH}/hsregexp_unicode_mapping.c unidata/UnicodeData.txt + libobj="${BUILDPATH}/obj/jamgram.o" for srcf in ${srclist}; do docc "${srcf}" diff --git a/src/hsregexp.c b/src/hsregexp.c index ed2efa8..b981155 100644 --- a/src/hsregexp.c +++ b/src/hsregexp.c @@ -72,15 +72,10 @@ */ struct casemap { unsigned short code; /* code point */ - signed char lowerdelta; /* add for lowercase, or if -128 use the ext table */ - signed char upperdelta; /* add for uppercase, or offset into the ext table */ + unsigned short lower; /* code */ + unsigned short upper; /* code */ }; -/* extended table for codepoints where |delta| > 127 */ -struct caseextmap { - unsigned short lower; - unsigned short upper; -}; /* generated mapping tables */ #include "hsregexp_unicode_mapping.c" @@ -95,13 +90,7 @@ static int cmp_casemap (const void *key, const void *cm) { static int utf8_map_case (int uc, int upper) { const struct casemap *cm = bsearch(&uc, unicode_case_mapping, NUMCASEMAP, sizeof(*unicode_case_mapping), cmp_casemap); - if (cm) { - if (cm->lowerdelta == -128) { - uc = upper?unicode_extmap[cm->upperdelta].upper:unicode_extmap[cm->upperdelta].lower; - } else { - uc += upper?cm->upperdelta:cm->lowerdelta; - } - } + if (cm) uc = upper?cm->upper:cm->lower; return uc; } diff --git a/src/hsregexp_unicode_mapping.c b/src/hsregexp_unicode_mapping.c deleted file mode 100644 index 3cb663e..0000000 --- a/src/hsregexp_unicode_mapping.c +++ /dev/null @@ -1,1981 +0,0 @@ -static const struct casemap unicode_case_mapping[1814] = { -{0x00b5,-128,0}, -{0x00c0,32,0}, -{0x00c1,32,0}, -{0x00c2,32,0}, -{0x00c3,32,0}, -{0x00c4,32,0}, -{0x00c5,32,0}, -{0x00c6,32,0}, -{0x00c7,32,0}, -{0x00c8,32,0}, -{0x00c9,32,0}, -{0x00ca,32,0}, -{0x00cb,32,0}, -{0x00cc,32,0}, -{0x00cd,32,0}, -{0x00ce,32,0}, -{0x00cf,32,0}, -{0x00d0,32,0}, -{0x00d1,32,0}, -{0x00d2,32,0}, -{0x00d3,32,0}, -{0x00d4,32,0}, -{0x00d5,32,0}, -{0x00d6,32,0}, -{0x00d8,32,0}, -{0x00d9,32,0}, -{0x00da,32,0}, -{0x00db,32,0}, -{0x00dc,32,0}, -{0x00dd,32,0}, -{0x00de,32,0}, -{0x00e0,0,-32}, -{0x00e1,0,-32}, -{0x00e2,0,-32}, -{0x00e3,0,-32}, -{0x00e4,0,-32}, -{0x00e5,0,-32}, -{0x00e6,0,-32}, -{0x00e7,0,-32}, -{0x00e8,0,-32}, -{0x00e9,0,-32}, -{0x00ea,0,-32}, -{0x00eb,0,-32}, -{0x00ec,0,-32}, -{0x00ed,0,-32}, -{0x00ee,0,-32}, -{0x00ef,0,-32}, -{0x00f0,0,-32}, -{0x00f1,0,-32}, -{0x00f2,0,-32}, -{0x00f3,0,-32}, -{0x00f4,0,-32}, -{0x00f5,0,-32}, -{0x00f6,0,-32}, -{0x00f8,0,-32}, -{0x00f9,0,-32}, -{0x00fa,0,-32}, -{0x00fb,0,-32}, -{0x00fc,0,-32}, -{0x00fd,0,-32}, -{0x00fe,0,-32}, -{0x00ff,0,121}, -{0x0100,1,0}, -{0x0101,0,-1}, -{0x0102,1,0}, -{0x0103,0,-1}, -{0x0104,1,0}, -{0x0105,0,-1}, -{0x0106,1,0}, -{0x0107,0,-1}, -{0x0108,1,0}, -{0x0109,0,-1}, -{0x010a,1,0}, -{0x010b,0,-1}, -{0x010c,1,0}, -{0x010d,0,-1}, -{0x010e,1,0}, -{0x010f,0,-1}, -{0x0110,1,0}, -{0x0111,0,-1}, -{0x0112,1,0}, -{0x0113,0,-1}, -{0x0114,1,0}, -{0x0115,0,-1}, -{0x0116,1,0}, -{0x0117,0,-1}, -{0x0118,1,0}, -{0x0119,0,-1}, -{0x011a,1,0}, -{0x011b,0,-1}, -{0x011c,1,0}, -{0x011d,0,-1}, -{0x011e,1,0}, -{0x011f,0,-1}, -{0x0120,1,0}, -{0x0121,0,-1}, -{0x0122,1,0}, -{0x0123,0,-1}, -{0x0124,1,0}, -{0x0125,0,-1}, -{0x0126,1,0}, -{0x0127,0,-1}, -{0x0128,1,0}, -{0x0129,0,-1}, -{0x012a,1,0}, -{0x012b,0,-1}, -{0x012c,1,0}, -{0x012d,0,-1}, -{0x012e,1,0}, -{0x012f,0,-1}, -{0x0130,-128,1}, -{0x0131,-128,2}, -{0x0132,1,0}, -{0x0133,0,-1}, -{0x0134,1,0}, -{0x0135,0,-1}, -{0x0136,1,0}, -{0x0137,0,-1}, -{0x0139,1,0}, -{0x013a,0,-1}, -{0x013b,1,0}, -{0x013c,0,-1}, -{0x013d,1,0}, -{0x013e,0,-1}, -{0x013f,1,0}, -{0x0140,0,-1}, -{0x0141,1,0}, -{0x0142,0,-1}, -{0x0143,1,0}, -{0x0144,0,-1}, -{0x0145,1,0}, -{0x0146,0,-1}, -{0x0147,1,0}, -{0x0148,0,-1}, -{0x014a,1,0}, -{0x014b,0,-1}, -{0x014c,1,0}, -{0x014d,0,-1}, -{0x014e,1,0}, -{0x014f,0,-1}, -{0x0150,1,0}, -{0x0151,0,-1}, -{0x0152,1,0}, -{0x0153,0,-1}, -{0x0154,1,0}, -{0x0155,0,-1}, -{0x0156,1,0}, -{0x0157,0,-1}, -{0x0158,1,0}, -{0x0159,0,-1}, -{0x015a,1,0}, -{0x015b,0,-1}, -{0x015c,1,0}, -{0x015d,0,-1}, -{0x015e,1,0}, -{0x015f,0,-1}, -{0x0160,1,0}, -{0x0161,0,-1}, -{0x0162,1,0}, -{0x0163,0,-1}, -{0x0164,1,0}, -{0x0165,0,-1}, -{0x0166,1,0}, -{0x0167,0,-1}, -{0x0168,1,0}, -{0x0169,0,-1}, -{0x016a,1,0}, -{0x016b,0,-1}, -{0x016c,1,0}, -{0x016d,0,-1}, -{0x016e,1,0}, -{0x016f,0,-1}, -{0x0170,1,0}, -{0x0171,0,-1}, -{0x0172,1,0}, -{0x0173,0,-1}, -{0x0174,1,0}, -{0x0175,0,-1}, -{0x0176,1,0}, -{0x0177,0,-1}, -{0x0178,-121,0}, -{0x0179,1,0}, -{0x017a,0,-1}, -{0x017b,1,0}, -{0x017c,0,-1}, -{0x017d,1,0}, -{0x017e,0,-1}, -{0x017f,-128,3}, -{0x0180,-128,4}, -{0x0181,-128,5}, -{0x0182,1,0}, -{0x0183,0,-1}, -{0x0184,1,0}, -{0x0185,0,-1}, -{0x0186,-128,6}, -{0x0187,1,0}, -{0x0188,0,-1}, -{0x0189,-128,7}, -{0x018a,-128,8}, -{0x018b,1,0}, -{0x018c,0,-1}, -{0x018e,79,0}, -{0x018f,-128,9}, -{0x0190,-128,10}, -{0x0191,1,0}, -{0x0192,0,-1}, -{0x0193,-128,11}, -{0x0194,-128,12}, -{0x0195,0,97}, -{0x0196,-128,13}, -{0x0197,-128,14}, -{0x0198,1,0}, -{0x0199,0,-1}, -{0x019a,-128,15}, -{0x019c,-128,16}, -{0x019d,-128,17}, -{0x019e,-128,18}, -{0x019f,-128,19}, -{0x01a0,1,0}, -{0x01a1,0,-1}, -{0x01a2,1,0}, -{0x01a3,0,-1}, -{0x01a4,1,0}, -{0x01a5,0,-1}, -{0x01a6,-128,20}, -{0x01a7,1,0}, -{0x01a8,0,-1}, -{0x01a9,-128,21}, -{0x01ac,1,0}, -{0x01ad,0,-1}, -{0x01ae,-128,22}, -{0x01af,1,0}, -{0x01b0,0,-1}, -{0x01b1,-128,23}, -{0x01b2,-128,24}, -{0x01b3,1,0}, -{0x01b4,0,-1}, -{0x01b5,1,0}, -{0x01b6,0,-1}, -{0x01b7,-128,25}, -{0x01b8,1,0}, -{0x01b9,0,-1}, -{0x01bc,1,0}, -{0x01bd,0,-1}, -{0x01bf,0,56}, -{0x01c4,2,0}, -{0x01c6,0,-2}, -{0x01c7,2,0}, -{0x01c9,0,-2}, -{0x01ca,2,0}, -{0x01cc,0,-2}, -{0x01cd,1,0}, -{0x01ce,0,-1}, -{0x01cf,1,0}, -{0x01d0,0,-1}, -{0x01d1,1,0}, -{0x01d2,0,-1}, -{0x01d3,1,0}, -{0x01d4,0,-1}, -{0x01d5,1,0}, -{0x01d6,0,-1}, -{0x01d7,1,0}, -{0x01d8,0,-1}, -{0x01d9,1,0}, -{0x01da,0,-1}, -{0x01db,1,0}, -{0x01dc,0,-1}, -{0x01dd,0,-79}, -{0x01de,1,0}, -{0x01df,0,-1}, -{0x01e0,1,0}, -{0x01e1,0,-1}, -{0x01e2,1,0}, -{0x01e3,0,-1}, -{0x01e4,1,0}, -{0x01e5,0,-1}, -{0x01e6,1,0}, -{0x01e7,0,-1}, -{0x01e8,1,0}, -{0x01e9,0,-1}, -{0x01ea,1,0}, -{0x01eb,0,-1}, -{0x01ec,1,0}, -{0x01ed,0,-1}, -{0x01ee,1,0}, -{0x01ef,0,-1}, -{0x01f1,2,0}, -{0x01f3,0,-2}, -{0x01f4,1,0}, -{0x01f5,0,-1}, -{0x01f6,-97,0}, -{0x01f7,-56,0}, -{0x01f8,1,0}, -{0x01f9,0,-1}, -{0x01fa,1,0}, -{0x01fb,0,-1}, -{0x01fc,1,0}, -{0x01fd,0,-1}, -{0x01fe,1,0}, -{0x01ff,0,-1}, -{0x0200,1,0}, -{0x0201,0,-1}, -{0x0202,1,0}, -{0x0203,0,-1}, -{0x0204,1,0}, -{0x0205,0,-1}, -{0x0206,1,0}, -{0x0207,0,-1}, -{0x0208,1,0}, -{0x0209,0,-1}, -{0x020a,1,0}, -{0x020b,0,-1}, -{0x020c,1,0}, -{0x020d,0,-1}, -{0x020e,1,0}, -{0x020f,0,-1}, -{0x0210,1,0}, -{0x0211,0,-1}, -{0x0212,1,0}, -{0x0213,0,-1}, -{0x0214,1,0}, -{0x0215,0,-1}, -{0x0216,1,0}, -{0x0217,0,-1}, -{0x0218,1,0}, -{0x0219,0,-1}, -{0x021a,1,0}, -{0x021b,0,-1}, -{0x021c,1,0}, -{0x021d,0,-1}, -{0x021e,1,0}, -{0x021f,0,-1}, -{0x0220,-128,26}, -{0x0222,1,0}, -{0x0223,0,-1}, -{0x0224,1,0}, -{0x0225,0,-1}, -{0x0226,1,0}, -{0x0227,0,-1}, -{0x0228,1,0}, -{0x0229,0,-1}, -{0x022a,1,0}, -{0x022b,0,-1}, -{0x022c,1,0}, -{0x022d,0,-1}, -{0x022e,1,0}, -{0x022f,0,-1}, -{0x0230,1,0}, -{0x0231,0,-1}, -{0x0232,1,0}, -{0x0233,0,-1}, -{0x023a,-128,27}, -{0x023b,1,0}, -{0x023c,0,-1}, -{0x023d,-128,28}, -{0x023e,-128,29}, -{0x023f,-128,30}, -{0x0240,-128,31}, -{0x0241,1,0}, -{0x0242,0,-1}, -{0x0243,-128,32}, -{0x0244,69,0}, -{0x0245,71,0}, -{0x0246,1,0}, -{0x0247,0,-1}, -{0x0248,1,0}, -{0x0249,0,-1}, -{0x024a,1,0}, -{0x024b,0,-1}, -{0x024c,1,0}, -{0x024d,0,-1}, -{0x024e,1,0}, -{0x024f,0,-1}, -{0x0250,-128,33}, -{0x0251,-128,34}, -{0x0252,-128,35}, -{0x0253,-128,36}, -{0x0254,-128,37}, -{0x0256,-128,38}, -{0x0257,-128,39}, -{0x0259,-128,40}, -{0x025b,-128,41}, -{0x0260,-128,42}, -{0x0263,-128,43}, -{0x0268,-128,44}, -{0x0269,-128,45}, -{0x026b,-128,46}, -{0x026f,-128,47}, -{0x0271,-128,48}, -{0x0272,-128,49}, -{0x0275,-128,50}, -{0x027d,-128,51}, -{0x0280,-128,52}, -{0x0283,-128,53}, -{0x0288,-128,54}, -{0x0289,0,-69}, -{0x028a,-128,55}, -{0x028b,-128,56}, -{0x028c,0,-71}, -{0x0292,-128,57}, -{0x0370,1,0}, -{0x0371,0,-1}, -{0x0372,1,0}, -{0x0373,0,-1}, -{0x0376,1,0}, -{0x0377,0,-1}, -{0x037b,-128,58}, -{0x037c,-128,59}, -{0x037d,-128,60}, -{0x0386,38,0}, -{0x0388,37,0}, -{0x0389,37,0}, -{0x038a,37,0}, -{0x038c,64,0}, -{0x038e,63,0}, -{0x038f,63,0}, -{0x0391,32,0}, -{0x0392,32,0}, -{0x0393,32,0}, -{0x0394,32,0}, -{0x0395,32,0}, -{0x0396,32,0}, -{0x0397,32,0}, -{0x0398,32,0}, -{0x0399,32,0}, -{0x039a,32,0}, -{0x039b,32,0}, -{0x039c,32,0}, -{0x039d,32,0}, -{0x039e,32,0}, -{0x039f,32,0}, -{0x03a0,32,0}, -{0x03a1,32,0}, -{0x03a3,32,0}, -{0x03a4,32,0}, -{0x03a5,32,0}, -{0x03a6,32,0}, -{0x03a7,32,0}, -{0x03a8,32,0}, -{0x03a9,32,0}, -{0x03aa,32,0}, -{0x03ab,32,0}, -{0x03ac,0,-38}, -{0x03ad,0,-37}, -{0x03ae,0,-37}, -{0x03af,0,-37}, -{0x03b1,0,-32}, -{0x03b2,0,-32}, -{0x03b3,0,-32}, -{0x03b4,0,-32}, -{0x03b5,0,-32}, -{0x03b6,0,-32}, -{0x03b7,0,-32}, -{0x03b8,0,-32}, -{0x03b9,0,-32}, -{0x03ba,0,-32}, -{0x03bb,0,-32}, -{0x03bc,0,-32}, -{0x03bd,0,-32}, -{0x03be,0,-32}, -{0x03bf,0,-32}, -{0x03c0,0,-32}, -{0x03c1,0,-32}, -{0x03c2,0,-31}, -{0x03c3,0,-32}, -{0x03c4,0,-32}, -{0x03c5,0,-32}, -{0x03c6,0,-32}, -{0x03c7,0,-32}, -{0x03c8,0,-32}, -{0x03c9,0,-32}, -{0x03ca,0,-32}, -{0x03cb,0,-32}, -{0x03cc,0,-64}, -{0x03cd,0,-63}, -{0x03ce,0,-63}, -{0x03cf,8,0}, -{0x03d0,0,-62}, -{0x03d1,0,-57}, -{0x03d5,0,-47}, -{0x03d6,0,-54}, -{0x03d7,0,-8}, -{0x03d8,1,0}, -{0x03d9,0,-1}, -{0x03da,1,0}, -{0x03db,0,-1}, -{0x03dc,1,0}, -{0x03dd,0,-1}, -{0x03de,1,0}, -{0x03df,0,-1}, -{0x03e0,1,0}, -{0x03e1,0,-1}, -{0x03e2,1,0}, -{0x03e3,0,-1}, -{0x03e4,1,0}, -{0x03e5,0,-1}, -{0x03e6,1,0}, -{0x03e7,0,-1}, -{0x03e8,1,0}, -{0x03e9,0,-1}, -{0x03ea,1,0}, -{0x03eb,0,-1}, -{0x03ec,1,0}, -{0x03ed,0,-1}, -{0x03ee,1,0}, -{0x03ef,0,-1}, -{0x03f0,0,-86}, -{0x03f1,0,-80}, -{0x03f2,0,7}, -{0x03f4,-60,0}, -{0x03f5,0,-96}, -{0x03f7,1,0}, -{0x03f8,0,-1}, -{0x03f9,-7,0}, -{0x03fa,1,0}, -{0x03fb,0,-1}, -{0x03fd,-128,61}, -{0x03fe,-128,62}, -{0x03ff,-128,63}, -{0x0400,80,0}, -{0x0401,80,0}, -{0x0402,80,0}, -{0x0403,80,0}, -{0x0404,80,0}, -{0x0405,80,0}, -{0x0406,80,0}, -{0x0407,80,0}, -{0x0408,80,0}, -{0x0409,80,0}, -{0x040a,80,0}, -{0x040b,80,0}, -{0x040c,80,0}, -{0x040d,80,0}, -{0x040e,80,0}, -{0x040f,80,0}, -{0x0410,32,0}, -{0x0411,32,0}, -{0x0412,32,0}, -{0x0413,32,0}, -{0x0414,32,0}, -{0x0415,32,0}, -{0x0416,32,0}, -{0x0417,32,0}, -{0x0418,32,0}, -{0x0419,32,0}, -{0x041a,32,0}, -{0x041b,32,0}, -{0x041c,32,0}, -{0x041d,32,0}, -{0x041e,32,0}, -{0x041f,32,0}, -{0x0420,32,0}, -{0x0421,32,0}, -{0x0422,32,0}, -{0x0423,32,0}, -{0x0424,32,0}, -{0x0425,32,0}, -{0x0426,32,0}, -{0x0427,32,0}, -{0x0428,32,0}, -{0x0429,32,0}, -{0x042a,32,0}, -{0x042b,32,0}, -{0x042c,32,0}, -{0x042d,32,0}, -{0x042e,32,0}, -{0x042f,32,0}, -{0x0430,0,-32}, -{0x0431,0,-32}, -{0x0432,0,-32}, -{0x0433,0,-32}, -{0x0434,0,-32}, -{0x0435,0,-32}, -{0x0436,0,-32}, -{0x0437,0,-32}, -{0x0438,0,-32}, -{0x0439,0,-32}, -{0x043a,0,-32}, -{0x043b,0,-32}, -{0x043c,0,-32}, -{0x043d,0,-32}, -{0x043e,0,-32}, -{0x043f,0,-32}, -{0x0440,0,-32}, -{0x0441,0,-32}, -{0x0442,0,-32}, -{0x0443,0,-32}, -{0x0444,0,-32}, -{0x0445,0,-32}, -{0x0446,0,-32}, -{0x0447,0,-32}, -{0x0448,0,-32}, -{0x0449,0,-32}, -{0x044a,0,-32}, -{0x044b,0,-32}, -{0x044c,0,-32}, -{0x044d,0,-32}, -{0x044e,0,-32}, -{0x044f,0,-32}, -{0x0450,0,-80}, -{0x0451,0,-80}, -{0x0452,0,-80}, -{0x0453,0,-80}, -{0x0454,0,-80}, -{0x0455,0,-80}, -{0x0456,0,-80}, -{0x0457,0,-80}, -{0x0458,0,-80}, -{0x0459,0,-80}, -{0x045a,0,-80}, -{0x045b,0,-80}, -{0x045c,0,-80}, -{0x045d,0,-80}, -{0x045e,0,-80}, -{0x045f,0,-80}, -{0x0460,1,0}, -{0x0461,0,-1}, -{0x0462,1,0}, -{0x0463,0,-1}, -{0x0464,1,0}, -{0x0465,0,-1}, -{0x0466,1,0}, -{0x0467,0,-1}, -{0x0468,1,0}, -{0x0469,0,-1}, -{0x046a,1,0}, -{0x046b,0,-1}, -{0x046c,1,0}, -{0x046d,0,-1}, -{0x046e,1,0}, -{0x046f,0,-1}, -{0x0470,1,0}, -{0x0471,0,-1}, -{0x0472,1,0}, -{0x0473,0,-1}, -{0x0474,1,0}, -{0x0475,0,-1}, -{0x0476,1,0}, -{0x0477,0,-1}, -{0x0478,1,0}, -{0x0479,0,-1}, -{0x047a,1,0}, -{0x047b,0,-1}, -{0x047c,1,0}, -{0x047d,0,-1}, -{0x047e,1,0}, -{0x047f,0,-1}, -{0x0480,1,0}, -{0x0481,0,-1}, -{0x048a,1,0}, -{0x048b,0,-1}, -{0x048c,1,0}, -{0x048d,0,-1}, -{0x048e,1,0}, -{0x048f,0,-1}, -{0x0490,1,0}, -{0x0491,0,-1}, -{0x0492,1,0}, -{0x0493,0,-1}, -{0x0494,1,0}, -{0x0495,0,-1}, -{0x0496,1,0}, -{0x0497,0,-1}, -{0x0498,1,0}, -{0x0499,0,-1}, -{0x049a,1,0}, -{0x049b,0,-1}, -{0x049c,1,0}, -{0x049d,0,-1}, -{0x049e,1,0}, -{0x049f,0,-1}, -{0x04a0,1,0}, -{0x04a1,0,-1}, -{0x04a2,1,0}, -{0x04a3,0,-1}, -{0x04a4,1,0}, -{0x04a5,0,-1}, -{0x04a6,1,0}, -{0x04a7,0,-1}, -{0x04a8,1,0}, -{0x04a9,0,-1}, -{0x04aa,1,0}, -{0x04ab,0,-1}, -{0x04ac,1,0}, -{0x04ad,0,-1}, -{0x04ae,1,0}, -{0x04af,0,-1}, -{0x04b0,1,0}, -{0x04b1,0,-1}, -{0x04b2,1,0}, -{0x04b3,0,-1}, -{0x04b4,1,0}, -{0x04b5,0,-1}, -{0x04b6,1,0}, -{0x04b7,0,-1}, -{0x04b8,1,0}, -{0x04b9,0,-1}, -{0x04ba,1,0}, -{0x04bb,0,-1}, -{0x04bc,1,0}, -{0x04bd,0,-1}, -{0x04be,1,0}, -{0x04bf,0,-1}, -{0x04c0,15,0}, -{0x04c1,1,0}, -{0x04c2,0,-1}, -{0x04c3,1,0}, -{0x04c4,0,-1}, -{0x04c5,1,0}, -{0x04c6,0,-1}, -{0x04c7,1,0}, -{0x04c8,0,-1}, -{0x04c9,1,0}, -{0x04ca,0,-1}, -{0x04cb,1,0}, -{0x04cc,0,-1}, -{0x04cd,1,0}, -{0x04ce,0,-1}, -{0x04cf,0,-15}, -{0x04d0,1,0}, -{0x04d1,0,-1}, -{0x04d2,1,0}, -{0x04d3,0,-1}, -{0x04d4,1,0}, -{0x04d5,0,-1}, -{0x04d6,1,0}, -{0x04d7,0,-1}, -{0x04d8,1,0}, -{0x04d9,0,-1}, -{0x04da,1,0}, -{0x04db,0,-1}, -{0x04dc,1,0}, -{0x04dd,0,-1}, -{0x04de,1,0}, -{0x04df,0,-1}, -{0x04e0,1,0}, -{0x04e1,0,-1}, -{0x04e2,1,0}, -{0x04e3,0,-1}, -{0x04e4,1,0}, -{0x04e5,0,-1}, -{0x04e6,1,0}, -{0x04e7,0,-1}, -{0x04e8,1,0}, -{0x04e9,0,-1}, -{0x04ea,1,0}, -{0x04eb,0,-1}, -{0x04ec,1,0}, -{0x04ed,0,-1}, -{0x04ee,1,0}, -{0x04ef,0,-1}, -{0x04f0,1,0}, -{0x04f1,0,-1}, -{0x04f2,1,0}, -{0x04f3,0,-1}, -{0x04f4,1,0}, -{0x04f5,0,-1}, -{0x04f6,1,0}, -{0x04f7,0,-1}, -{0x04f8,1,0}, -{0x04f9,0,-1}, -{0x04fa,1,0}, -{0x04fb,0,-1}, -{0x04fc,1,0}, -{0x04fd,0,-1}, -{0x04fe,1,0}, -{0x04ff,0,-1}, -{0x0500,1,0}, -{0x0501,0,-1}, -{0x0502,1,0}, -{0x0503,0,-1}, -{0x0504,1,0}, -{0x0505,0,-1}, -{0x0506,1,0}, -{0x0507,0,-1}, -{0x0508,1,0}, -{0x0509,0,-1}, -{0x050a,1,0}, -{0x050b,0,-1}, -{0x050c,1,0}, -{0x050d,0,-1}, -{0x050e,1,0}, -{0x050f,0,-1}, -{0x0510,1,0}, -{0x0511,0,-1}, -{0x0512,1,0}, -{0x0513,0,-1}, -{0x0514,1,0}, -{0x0515,0,-1}, -{0x0516,1,0}, -{0x0517,0,-1}, -{0x0518,1,0}, -{0x0519,0,-1}, -{0x051a,1,0}, -{0x051b,0,-1}, -{0x051c,1,0}, -{0x051d,0,-1}, -{0x051e,1,0}, -{0x051f,0,-1}, -{0x0520,1,0}, -{0x0521,0,-1}, -{0x0522,1,0}, -{0x0523,0,-1}, -{0x0524,1,0}, -{0x0525,0,-1}, -{0x0531,48,0}, -{0x0532,48,0}, -{0x0533,48,0}, -{0x0534,48,0}, -{0x0535,48,0}, -{0x0536,48,0}, -{0x0537,48,0}, -{0x0538,48,0}, -{0x0539,48,0}, -{0x053a,48,0}, -{0x053b,48,0}, -{0x053c,48,0}, -{0x053d,48,0}, -{0x053e,48,0}, -{0x053f,48,0}, -{0x0540,48,0}, -{0x0541,48,0}, -{0x0542,48,0}, -{0x0543,48,0}, -{0x0544,48,0}, -{0x0545,48,0}, -{0x0546,48,0}, -{0x0547,48,0}, -{0x0548,48,0}, -{0x0549,48,0}, -{0x054a,48,0}, -{0x054b,48,0}, -{0x054c,48,0}, -{0x054d,48,0}, -{0x054e,48,0}, -{0x054f,48,0}, -{0x0550,48,0}, -{0x0551,48,0}, -{0x0552,48,0}, -{0x0553,48,0}, -{0x0554,48,0}, -{0x0555,48,0}, -{0x0556,48,0}, -{0x0561,0,-48}, -{0x0562,0,-48}, -{0x0563,0,-48}, -{0x0564,0,-48}, -{0x0565,0,-48}, -{0x0566,0,-48}, -{0x0567,0,-48}, -{0x0568,0,-48}, -{0x0569,0,-48}, -{0x056a,0,-48}, -{0x056b,0,-48}, -{0x056c,0,-48}, -{0x056d,0,-48}, -{0x056e,0,-48}, -{0x056f,0,-48}, -{0x0570,0,-48}, -{0x0571,0,-48}, -{0x0572,0,-48}, -{0x0573,0,-48}, -{0x0574,0,-48}, -{0x0575,0,-48}, -{0x0576,0,-48}, -{0x0577,0,-48}, -{0x0578,0,-48}, -{0x0579,0,-48}, -{0x057a,0,-48}, -{0x057b,0,-48}, -{0x057c,0,-48}, -{0x057d,0,-48}, -{0x057e,0,-48}, -{0x057f,0,-48}, -{0x0580,0,-48}, -{0x0581,0,-48}, -{0x0582,0,-48}, -{0x0583,0,-48}, -{0x0584,0,-48}, -{0x0585,0,-48}, -{0x0586,0,-48}, -{0x10a0,-128,64}, -{0x10a1,-128,65}, -{0x10a2,-128,66}, -{0x10a3,-128,67}, -{0x10a4,-128,68}, -{0x10a5,-128,69}, -{0x10a6,-128,70}, -{0x10a7,-128,71}, -{0x10a8,-128,72}, -{0x10a9,-128,73}, -{0x10aa,-128,74}, -{0x10ab,-128,75}, -{0x10ac,-128,76}, -{0x10ad,-128,77}, -{0x10ae,-128,78}, -{0x10af,-128,79}, -{0x10b0,-128,80}, -{0x10b1,-128,81}, -{0x10b2,-128,82}, -{0x10b3,-128,83}, -{0x10b4,-128,84}, -{0x10b5,-128,85}, -{0x10b6,-128,86}, -{0x10b7,-128,87}, -{0x10b8,-128,88}, -{0x10b9,-128,89}, -{0x10ba,-128,90}, -{0x10bb,-128,91}, -{0x10bc,-128,92}, -{0x10bd,-128,93}, -{0x10be,-128,94}, -{0x10bf,-128,95}, -{0x10c0,-128,96}, -{0x10c1,-128,97}, -{0x10c2,-128,98}, -{0x10c3,-128,99}, -{0x10c4,-128,100}, -{0x10c5,-128,101}, -{0x1d79,-128,102}, -{0x1d7d,-128,103}, -{0x1e00,1,0}, -{0x1e01,0,-1}, -{0x1e02,1,0}, -{0x1e03,0,-1}, -{0x1e04,1,0}, -{0x1e05,0,-1}, -{0x1e06,1,0}, -{0x1e07,0,-1}, -{0x1e08,1,0}, -{0x1e09,0,-1}, -{0x1e0a,1,0}, -{0x1e0b,0,-1}, -{0x1e0c,1,0}, -{0x1e0d,0,-1}, -{0x1e0e,1,0}, -{0x1e0f,0,-1}, -{0x1e10,1,0}, -{0x1e11,0,-1}, -{0x1e12,1,0}, -{0x1e13,0,-1}, -{0x1e14,1,0}, -{0x1e15,0,-1}, -{0x1e16,1,0}, -{0x1e17,0,-1}, -{0x1e18,1,0}, -{0x1e19,0,-1}, -{0x1e1a,1,0}, -{0x1e1b,0,-1}, -{0x1e1c,1,0}, -{0x1e1d,0,-1}, -{0x1e1e,1,0}, -{0x1e1f,0,-1}, -{0x1e20,1,0}, -{0x1e21,0,-1}, -{0x1e22,1,0}, -{0x1e23,0,-1}, -{0x1e24,1,0}, -{0x1e25,0,-1}, -{0x1e26,1,0}, -{0x1e27,0,-1}, -{0x1e28,1,0}, -{0x1e29,0,-1}, -{0x1e2a,1,0}, -{0x1e2b,0,-1}, -{0x1e2c,1,0}, -{0x1e2d,0,-1}, -{0x1e2e,1,0}, -{0x1e2f,0,-1}, -{0x1e30,1,0}, -{0x1e31,0,-1}, -{0x1e32,1,0}, -{0x1e33,0,-1}, -{0x1e34,1,0}, -{0x1e35,0,-1}, -{0x1e36,1,0}, -{0x1e37,0,-1}, -{0x1e38,1,0}, -{0x1e39,0,-1}, -{0x1e3a,1,0}, -{0x1e3b,0,-1}, -{0x1e3c,1,0}, -{0x1e3d,0,-1}, -{0x1e3e,1,0}, -{0x1e3f,0,-1}, -{0x1e40,1,0}, -{0x1e41,0,-1}, -{0x1e42,1,0}, -{0x1e43,0,-1}, -{0x1e44,1,0}, -{0x1e45,0,-1}, -{0x1e46,1,0}, -{0x1e47,0,-1}, -{0x1e48,1,0}, -{0x1e49,0,-1}, -{0x1e4a,1,0}, -{0x1e4b,0,-1}, -{0x1e4c,1,0}, -{0x1e4d,0,-1}, -{0x1e4e,1,0}, -{0x1e4f,0,-1}, -{0x1e50,1,0}, -{0x1e51,0,-1}, -{0x1e52,1,0}, -{0x1e53,0,-1}, -{0x1e54,1,0}, -{0x1e55,0,-1}, -{0x1e56,1,0}, -{0x1e57,0,-1}, -{0x1e58,1,0}, -{0x1e59,0,-1}, -{0x1e5a,1,0}, -{0x1e5b,0,-1}, -{0x1e5c,1,0}, -{0x1e5d,0,-1}, -{0x1e5e,1,0}, -{0x1e5f,0,-1}, -{0x1e60,1,0}, -{0x1e61,0,-1}, -{0x1e62,1,0}, -{0x1e63,0,-1}, -{0x1e64,1,0}, -{0x1e65,0,-1}, -{0x1e66,1,0}, -{0x1e67,0,-1}, -{0x1e68,1,0}, -{0x1e69,0,-1}, -{0x1e6a,1,0}, -{0x1e6b,0,-1}, -{0x1e6c,1,0}, -{0x1e6d,0,-1}, -{0x1e6e,1,0}, -{0x1e6f,0,-1}, -{0x1e70,1,0}, -{0x1e71,0,-1}, -{0x1e72,1,0}, -{0x1e73,0,-1}, -{0x1e74,1,0}, -{0x1e75,0,-1}, -{0x1e76,1,0}, -{0x1e77,0,-1}, -{0x1e78,1,0}, -{0x1e79,0,-1}, -{0x1e7a,1,0}, -{0x1e7b,0,-1}, -{0x1e7c,1,0}, -{0x1e7d,0,-1}, -{0x1e7e,1,0}, -{0x1e7f,0,-1}, -{0x1e80,1,0}, -{0x1e81,0,-1}, -{0x1e82,1,0}, -{0x1e83,0,-1}, -{0x1e84,1,0}, -{0x1e85,0,-1}, -{0x1e86,1,0}, -{0x1e87,0,-1}, -{0x1e88,1,0}, -{0x1e89,0,-1}, -{0x1e8a,1,0}, -{0x1e8b,0,-1}, -{0x1e8c,1,0}, -{0x1e8d,0,-1}, -{0x1e8e,1,0}, -{0x1e8f,0,-1}, -{0x1e90,1,0}, -{0x1e91,0,-1}, -{0x1e92,1,0}, -{0x1e93,0,-1}, -{0x1e94,1,0}, -{0x1e95,0,-1}, -{0x1e9b,0,-59}, -{0x1e9e,-128,104}, -{0x1ea0,1,0}, -{0x1ea1,0,-1}, -{0x1ea2,1,0}, -{0x1ea3,0,-1}, -{0x1ea4,1,0}, -{0x1ea5,0,-1}, -{0x1ea6,1,0}, -{0x1ea7,0,-1}, -{0x1ea8,1,0}, -{0x1ea9,0,-1}, -{0x1eaa,1,0}, -{0x1eab,0,-1}, -{0x1eac,1,0}, -{0x1ead,0,-1}, -{0x1eae,1,0}, -{0x1eaf,0,-1}, -{0x1eb0,1,0}, -{0x1eb1,0,-1}, -{0x1eb2,1,0}, -{0x1eb3,0,-1}, -{0x1eb4,1,0}, -{0x1eb5,0,-1}, -{0x1eb6,1,0}, -{0x1eb7,0,-1}, -{0x1eb8,1,0}, -{0x1eb9,0,-1}, -{0x1eba,1,0}, -{0x1ebb,0,-1}, -{0x1ebc,1,0}, -{0x1ebd,0,-1}, -{0x1ebe,1,0}, -{0x1ebf,0,-1}, -{0x1ec0,1,0}, -{0x1ec1,0,-1}, -{0x1ec2,1,0}, -{0x1ec3,0,-1}, -{0x1ec4,1,0}, -{0x1ec5,0,-1}, -{0x1ec6,1,0}, -{0x1ec7,0,-1}, -{0x1ec8,1,0}, -{0x1ec9,0,-1}, -{0x1eca,1,0}, -{0x1ecb,0,-1}, -{0x1ecc,1,0}, -{0x1ecd,0,-1}, -{0x1ece,1,0}, -{0x1ecf,0,-1}, -{0x1ed0,1,0}, -{0x1ed1,0,-1}, -{0x1ed2,1,0}, -{0x1ed3,0,-1}, -{0x1ed4,1,0}, -{0x1ed5,0,-1}, -{0x1ed6,1,0}, -{0x1ed7,0,-1}, -{0x1ed8,1,0}, -{0x1ed9,0,-1}, -{0x1eda,1,0}, -{0x1edb,0,-1}, -{0x1edc,1,0}, -{0x1edd,0,-1}, -{0x1ede,1,0}, -{0x1edf,0,-1}, -{0x1ee0,1,0}, -{0x1ee1,0,-1}, -{0x1ee2,1,0}, -{0x1ee3,0,-1}, -{0x1ee4,1,0}, -{0x1ee5,0,-1}, -{0x1ee6,1,0}, -{0x1ee7,0,-1}, -{0x1ee8,1,0}, -{0x1ee9,0,-1}, -{0x1eea,1,0}, -{0x1eeb,0,-1}, -{0x1eec,1,0}, -{0x1eed,0,-1}, -{0x1eee,1,0}, -{0x1eef,0,-1}, -{0x1ef0,1,0}, -{0x1ef1,0,-1}, -{0x1ef2,1,0}, -{0x1ef3,0,-1}, -{0x1ef4,1,0}, -{0x1ef5,0,-1}, -{0x1ef6,1,0}, -{0x1ef7,0,-1}, -{0x1ef8,1,0}, -{0x1ef9,0,-1}, -{0x1efa,1,0}, -{0x1efb,0,-1}, -{0x1efc,1,0}, -{0x1efd,0,-1}, -{0x1efe,1,0}, -{0x1eff,0,-1}, -{0x1f00,0,8}, -{0x1f01,0,8}, -{0x1f02,0,8}, -{0x1f03,0,8}, -{0x1f04,0,8}, -{0x1f05,0,8}, -{0x1f06,0,8}, -{0x1f07,0,8}, -{0x1f08,-8,0}, -{0x1f09,-8,0}, -{0x1f0a,-8,0}, -{0x1f0b,-8,0}, -{0x1f0c,-8,0}, -{0x1f0d,-8,0}, -{0x1f0e,-8,0}, -{0x1f0f,-8,0}, -{0x1f10,0,8}, -{0x1f11,0,8}, -{0x1f12,0,8}, -{0x1f13,0,8}, -{0x1f14,0,8}, -{0x1f15,0,8}, -{0x1f18,-8,0}, -{0x1f19,-8,0}, -{0x1f1a,-8,0}, -{0x1f1b,-8,0}, -{0x1f1c,-8,0}, -{0x1f1d,-8,0}, -{0x1f20,0,8}, -{0x1f21,0,8}, -{0x1f22,0,8}, -{0x1f23,0,8}, -{0x1f24,0,8}, -{0x1f25,0,8}, -{0x1f26,0,8}, -{0x1f27,0,8}, -{0x1f28,-8,0}, -{0x1f29,-8,0}, -{0x1f2a,-8,0}, -{0x1f2b,-8,0}, -{0x1f2c,-8,0}, -{0x1f2d,-8,0}, -{0x1f2e,-8,0}, -{0x1f2f,-8,0}, -{0x1f30,0,8}, -{0x1f31,0,8}, -{0x1f32,0,8}, -{0x1f33,0,8}, -{0x1f34,0,8}, -{0x1f35,0,8}, -{0x1f36,0,8}, -{0x1f37,0,8}, -{0x1f38,-8,0}, -{0x1f39,-8,0}, -{0x1f3a,-8,0}, -{0x1f3b,-8,0}, -{0x1f3c,-8,0}, -{0x1f3d,-8,0}, -{0x1f3e,-8,0}, -{0x1f3f,-8,0}, -{0x1f40,0,8}, -{0x1f41,0,8}, -{0x1f42,0,8}, -{0x1f43,0,8}, -{0x1f44,0,8}, -{0x1f45,0,8}, -{0x1f48,-8,0}, -{0x1f49,-8,0}, -{0x1f4a,-8,0}, -{0x1f4b,-8,0}, -{0x1f4c,-8,0}, -{0x1f4d,-8,0}, -{0x1f51,0,8}, -{0x1f53,0,8}, -{0x1f55,0,8}, -{0x1f57,0,8}, -{0x1f59,-8,0}, -{0x1f5b,-8,0}, -{0x1f5d,-8,0}, -{0x1f5f,-8,0}, -{0x1f60,0,8}, -{0x1f61,0,8}, -{0x1f62,0,8}, -{0x1f63,0,8}, -{0x1f64,0,8}, -{0x1f65,0,8}, -{0x1f66,0,8}, -{0x1f67,0,8}, -{0x1f68,-8,0}, -{0x1f69,-8,0}, -{0x1f6a,-8,0}, -{0x1f6b,-8,0}, -{0x1f6c,-8,0}, -{0x1f6d,-8,0}, -{0x1f6e,-8,0}, -{0x1f6f,-8,0}, -{0x1f70,0,74}, -{0x1f71,0,74}, -{0x1f72,0,86}, -{0x1f73,0,86}, -{0x1f74,0,86}, -{0x1f75,0,86}, -{0x1f76,0,100}, -{0x1f77,0,100}, -{0x1f78,-128,105}, -{0x1f79,-128,106}, -{0x1f7a,0,112}, -{0x1f7b,0,112}, -{0x1f7c,0,126}, -{0x1f7d,0,126}, -{0x1f80,0,8}, -{0x1f81,0,8}, -{0x1f82,0,8}, -{0x1f83,0,8}, -{0x1f84,0,8}, -{0x1f85,0,8}, -{0x1f86,0,8}, -{0x1f87,0,8}, -{0x1f90,0,8}, -{0x1f91,0,8}, -{0x1f92,0,8}, -{0x1f93,0,8}, -{0x1f94,0,8}, -{0x1f95,0,8}, -{0x1f96,0,8}, -{0x1f97,0,8}, -{0x1fa0,0,8}, -{0x1fa1,0,8}, -{0x1fa2,0,8}, -{0x1fa3,0,8}, -{0x1fa4,0,8}, -{0x1fa5,0,8}, -{0x1fa6,0,8}, -{0x1fa7,0,8}, -{0x1fb0,0,8}, -{0x1fb1,0,8}, -{0x1fb3,0,9}, -{0x1fb8,-8,0}, -{0x1fb9,-8,0}, -{0x1fba,-74,0}, -{0x1fbb,-74,0}, -{0x1fbe,-128,107}, -{0x1fc3,0,9}, -{0x1fc8,-86,0}, -{0x1fc9,-86,0}, -{0x1fca,-86,0}, -{0x1fcb,-86,0}, -{0x1fd0,0,8}, -{0x1fd1,0,8}, -{0x1fd8,-8,0}, -{0x1fd9,-8,0}, -{0x1fda,-100,0}, -{0x1fdb,-100,0}, -{0x1fe0,0,8}, -{0x1fe1,0,8}, -{0x1fe5,0,7}, -{0x1fe8,-8,0}, -{0x1fe9,-8,0}, -{0x1fea,-112,0}, -{0x1feb,-112,0}, -{0x1fec,-7,0}, -{0x1ff3,0,9}, -{0x1ff8,-128,108}, -{0x1ff9,-128,109}, -{0x1ffa,-126,0}, -{0x1ffb,-126,0}, -{0x2126,-128,110}, -{0x212a,-128,111}, -{0x212b,-128,112}, -{0x2132,28,0}, -{0x214e,0,-28}, -{0x2183,1,0}, -{0x2184,0,-1}, -{0x2c00,48,0}, -{0x2c01,48,0}, -{0x2c02,48,0}, -{0x2c03,48,0}, -{0x2c04,48,0}, -{0x2c05,48,0}, -{0x2c06,48,0}, -{0x2c07,48,0}, -{0x2c08,48,0}, -{0x2c09,48,0}, -{0x2c0a,48,0}, -{0x2c0b,48,0}, -{0x2c0c,48,0}, -{0x2c0d,48,0}, -{0x2c0e,48,0}, -{0x2c0f,48,0}, -{0x2c10,48,0}, -{0x2c11,48,0}, -{0x2c12,48,0}, -{0x2c13,48,0}, -{0x2c14,48,0}, -{0x2c15,48,0}, -{0x2c16,48,0}, -{0x2c17,48,0}, -{0x2c18,48,0}, -{0x2c19,48,0}, -{0x2c1a,48,0}, -{0x2c1b,48,0}, -{0x2c1c,48,0}, -{0x2c1d,48,0}, -{0x2c1e,48,0}, -{0x2c1f,48,0}, -{0x2c20,48,0}, -{0x2c21,48,0}, -{0x2c22,48,0}, -{0x2c23,48,0}, -{0x2c24,48,0}, -{0x2c25,48,0}, -{0x2c26,48,0}, -{0x2c27,48,0}, -{0x2c28,48,0}, -{0x2c29,48,0}, -{0x2c2a,48,0}, -{0x2c2b,48,0}, -{0x2c2c,48,0}, -{0x2c2d,48,0}, -{0x2c2e,48,0}, -{0x2c30,0,-48}, -{0x2c31,0,-48}, -{0x2c32,0,-48}, -{0x2c33,0,-48}, -{0x2c34,0,-48}, -{0x2c35,0,-48}, -{0x2c36,0,-48}, -{0x2c37,0,-48}, -{0x2c38,0,-48}, -{0x2c39,0,-48}, -{0x2c3a,0,-48}, -{0x2c3b,0,-48}, -{0x2c3c,0,-48}, -{0x2c3d,0,-48}, -{0x2c3e,0,-48}, -{0x2c3f,0,-48}, -{0x2c40,0,-48}, -{0x2c41,0,-48}, -{0x2c42,0,-48}, -{0x2c43,0,-48}, -{0x2c44,0,-48}, -{0x2c45,0,-48}, -{0x2c46,0,-48}, -{0x2c47,0,-48}, -{0x2c48,0,-48}, -{0x2c49,0,-48}, -{0x2c4a,0,-48}, -{0x2c4b,0,-48}, -{0x2c4c,0,-48}, -{0x2c4d,0,-48}, -{0x2c4e,0,-48}, -{0x2c4f,0,-48}, -{0x2c50,0,-48}, -{0x2c51,0,-48}, -{0x2c52,0,-48}, -{0x2c53,0,-48}, -{0x2c54,0,-48}, -{0x2c55,0,-48}, -{0x2c56,0,-48}, -{0x2c57,0,-48}, -{0x2c58,0,-48}, -{0x2c59,0,-48}, -{0x2c5a,0,-48}, -{0x2c5b,0,-48}, -{0x2c5c,0,-48}, -{0x2c5d,0,-48}, -{0x2c5e,0,-48}, -{0x2c60,1,0}, -{0x2c61,0,-1}, -{0x2c62,-128,113}, -{0x2c63,-128,114}, -{0x2c64,-128,115}, -{0x2c65,-128,116}, -{0x2c66,-128,117}, -{0x2c67,1,0}, -{0x2c68,0,-1}, -{0x2c69,1,0}, -{0x2c6a,0,-1}, -{0x2c6b,1,0}, -{0x2c6c,0,-1}, -{0x2c6d,-128,118}, -{0x2c6e,-128,119}, -{0x2c6f,-128,120}, -{0x2c70,-128,121}, -{0x2c72,1,0}, -{0x2c73,0,-1}, -{0x2c75,1,0}, -{0x2c76,0,-1}, -{0x2c7e,-128,122}, -{0x2c7f,-128,123}, -{0x2c80,1,0}, -{0x2c81,0,-1}, -{0x2c82,1,0}, -{0x2c83,0,-1}, -{0x2c84,1,0}, -{0x2c85,0,-1}, -{0x2c86,1,0}, -{0x2c87,0,-1}, -{0x2c88,1,0}, -{0x2c89,0,-1}, -{0x2c8a,1,0}, -{0x2c8b,0,-1}, -{0x2c8c,1,0}, -{0x2c8d,0,-1}, -{0x2c8e,1,0}, -{0x2c8f,0,-1}, -{0x2c90,1,0}, -{0x2c91,0,-1}, -{0x2c92,1,0}, -{0x2c93,0,-1}, -{0x2c94,1,0}, -{0x2c95,0,-1}, -{0x2c96,1,0}, -{0x2c97,0,-1}, -{0x2c98,1,0}, -{0x2c99,0,-1}, -{0x2c9a,1,0}, -{0x2c9b,0,-1}, -{0x2c9c,1,0}, -{0x2c9d,0,-1}, -{0x2c9e,1,0}, -{0x2c9f,0,-1}, -{0x2ca0,1,0}, -{0x2ca1,0,-1}, -{0x2ca2,1,0}, -{0x2ca3,0,-1}, -{0x2ca4,1,0}, -{0x2ca5,0,-1}, -{0x2ca6,1,0}, -{0x2ca7,0,-1}, -{0x2ca8,1,0}, -{0x2ca9,0,-1}, -{0x2caa,1,0}, -{0x2cab,0,-1}, -{0x2cac,1,0}, -{0x2cad,0,-1}, -{0x2cae,1,0}, -{0x2caf,0,-1}, -{0x2cb0,1,0}, -{0x2cb1,0,-1}, -{0x2cb2,1,0}, -{0x2cb3,0,-1}, -{0x2cb4,1,0}, -{0x2cb5,0,-1}, -{0x2cb6,1,0}, -{0x2cb7,0,-1}, -{0x2cb8,1,0}, -{0x2cb9,0,-1}, -{0x2cba,1,0}, -{0x2cbb,0,-1}, -{0x2cbc,1,0}, -{0x2cbd,0,-1}, -{0x2cbe,1,0}, -{0x2cbf,0,-1}, -{0x2cc0,1,0}, -{0x2cc1,0,-1}, -{0x2cc2,1,0}, -{0x2cc3,0,-1}, -{0x2cc4,1,0}, -{0x2cc5,0,-1}, -{0x2cc6,1,0}, -{0x2cc7,0,-1}, -{0x2cc8,1,0}, -{0x2cc9,0,-1}, -{0x2cca,1,0}, -{0x2ccb,0,-1}, -{0x2ccc,1,0}, -{0x2ccd,0,-1}, -{0x2cce,1,0}, -{0x2ccf,0,-1}, -{0x2cd0,1,0}, -{0x2cd1,0,-1}, -{0x2cd2,1,0}, -{0x2cd3,0,-1}, -{0x2cd4,1,0}, -{0x2cd5,0,-1}, -{0x2cd6,1,0}, -{0x2cd7,0,-1}, -{0x2cd8,1,0}, -{0x2cd9,0,-1}, -{0x2cda,1,0}, -{0x2cdb,0,-1}, -{0x2cdc,1,0}, -{0x2cdd,0,-1}, -{0x2cde,1,0}, -{0x2cdf,0,-1}, -{0x2ce0,1,0}, -{0x2ce1,0,-1}, -{0x2ce2,1,0}, -{0x2ce3,0,-1}, -{0x2ceb,1,0}, -{0x2cec,0,-1}, -{0x2ced,1,0}, -{0x2cee,0,-1}, -{0x2d00,-128,124}, -{0x2d01,-128,125}, -{0x2d02,-128,126}, -{0x2d03,-128,127}, -{0x2d04,-128,128}, -{0x2d05,-128,129}, -{0x2d06,-128,130}, -{0x2d07,-128,131}, -{0x2d08,-128,132}, -{0x2d09,-128,133}, -{0x2d0a,-128,134}, -{0x2d0b,-128,135}, -{0x2d0c,-128,136}, -{0x2d0d,-128,137}, -{0x2d0e,-128,138}, -{0x2d0f,-128,139}, -{0x2d10,-128,140}, -{0x2d11,-128,141}, -{0x2d12,-128,142}, -{0x2d13,-128,143}, -{0x2d14,-128,144}, -{0x2d15,-128,145}, -{0x2d16,-128,146}, -{0x2d17,-128,147}, -{0x2d18,-128,148}, -{0x2d19,-128,149}, -{0x2d1a,-128,150}, -{0x2d1b,-128,151}, -{0x2d1c,-128,152}, -{0x2d1d,-128,153}, -{0x2d1e,-128,154}, -{0x2d1f,-128,155}, -{0x2d20,-128,156}, -{0x2d21,-128,157}, -{0x2d22,-128,158}, -{0x2d23,-128,159}, -{0x2d24,-128,160}, -{0x2d25,-128,161}, -{0xa640,1,0}, -{0xa641,0,-1}, -{0xa642,1,0}, -{0xa643,0,-1}, -{0xa644,1,0}, -{0xa645,0,-1}, -{0xa646,1,0}, -{0xa647,0,-1}, -{0xa648,1,0}, -{0xa649,0,-1}, -{0xa64a,1,0}, -{0xa64b,0,-1}, -{0xa64c,1,0}, -{0xa64d,0,-1}, -{0xa64e,1,0}, -{0xa64f,0,-1}, -{0xa650,1,0}, -{0xa651,0,-1}, -{0xa652,1,0}, -{0xa653,0,-1}, -{0xa654,1,0}, -{0xa655,0,-1}, -{0xa656,1,0}, -{0xa657,0,-1}, -{0xa658,1,0}, -{0xa659,0,-1}, -{0xa65a,1,0}, -{0xa65b,0,-1}, -{0xa65c,1,0}, -{0xa65d,0,-1}, -{0xa65e,1,0}, -{0xa65f,0,-1}, -{0xa662,1,0}, -{0xa663,0,-1}, -{0xa664,1,0}, -{0xa665,0,-1}, -{0xa666,1,0}, -{0xa667,0,-1}, -{0xa668,1,0}, -{0xa669,0,-1}, -{0xa66a,1,0}, -{0xa66b,0,-1}, -{0xa66c,1,0}, -{0xa66d,0,-1}, -{0xa680,1,0}, -{0xa681,0,-1}, -{0xa682,1,0}, -{0xa683,0,-1}, -{0xa684,1,0}, -{0xa685,0,-1}, -{0xa686,1,0}, -{0xa687,0,-1}, -{0xa688,1,0}, -{0xa689,0,-1}, -{0xa68a,1,0}, -{0xa68b,0,-1}, -{0xa68c,1,0}, -{0xa68d,0,-1}, -{0xa68e,1,0}, -{0xa68f,0,-1}, -{0xa690,1,0}, -{0xa691,0,-1}, -{0xa692,1,0}, -{0xa693,0,-1}, -{0xa694,1,0}, -{0xa695,0,-1}, -{0xa696,1,0}, -{0xa697,0,-1}, -{0xa722,1,0}, -{0xa723,0,-1}, -{0xa724,1,0}, -{0xa725,0,-1}, -{0xa726,1,0}, -{0xa727,0,-1}, -{0xa728,1,0}, -{0xa729,0,-1}, -{0xa72a,1,0}, -{0xa72b,0,-1}, -{0xa72c,1,0}, -{0xa72d,0,-1}, -{0xa72e,1,0}, -{0xa72f,0,-1}, -{0xa732,1,0}, -{0xa733,0,-1}, -{0xa734,1,0}, -{0xa735,0,-1}, -{0xa736,1,0}, -{0xa737,0,-1}, -{0xa738,1,0}, -{0xa739,0,-1}, -{0xa73a,1,0}, -{0xa73b,0,-1}, -{0xa73c,1,0}, -{0xa73d,0,-1}, -{0xa73e,1,0}, -{0xa73f,0,-1}, -{0xa740,1,0}, -{0xa741,0,-1}, -{0xa742,1,0}, -{0xa743,0,-1}, -{0xa744,1,0}, -{0xa745,0,-1}, -{0xa746,1,0}, -{0xa747,0,-1}, -{0xa748,1,0}, -{0xa749,0,-1}, -{0xa74a,1,0}, -{0xa74b,0,-1}, -{0xa74c,1,0}, -{0xa74d,0,-1}, -{0xa74e,1,0}, -{0xa74f,0,-1}, -{0xa750,1,0}, -{0xa751,0,-1}, -{0xa752,1,0}, -{0xa753,0,-1}, -{0xa754,1,0}, -{0xa755,0,-1}, -{0xa756,1,0}, -{0xa757,0,-1}, -{0xa758,1,0}, -{0xa759,0,-1}, -{0xa75a,1,0}, -{0xa75b,0,-1}, -{0xa75c,1,0}, -{0xa75d,0,-1}, -{0xa75e,1,0}, -{0xa75f,0,-1}, -{0xa760,1,0}, -{0xa761,0,-1}, -{0xa762,1,0}, -{0xa763,0,-1}, -{0xa764,1,0}, -{0xa765,0,-1}, -{0xa766,1,0}, -{0xa767,0,-1}, -{0xa768,1,0}, -{0xa769,0,-1}, -{0xa76a,1,0}, -{0xa76b,0,-1}, -{0xa76c,1,0}, -{0xa76d,0,-1}, -{0xa76e,1,0}, -{0xa76f,0,-1}, -{0xa779,1,0}, -{0xa77a,0,-1}, -{0xa77b,1,0}, -{0xa77c,0,-1}, -{0xa77d,-128,162}, -{0xa77e,1,0}, -{0xa77f,0,-1}, -{0xa780,1,0}, -{0xa781,0,-1}, -{0xa782,1,0}, -{0xa783,0,-1}, -{0xa784,1,0}, -{0xa785,0,-1}, -{0xa786,1,0}, -{0xa787,0,-1}, -{0xa78b,1,0}, -{0xa78c,0,-1}, -{0xff21,32,0}, -{0xff22,32,0}, -{0xff23,32,0}, -{0xff24,32,0}, -{0xff25,32,0}, -{0xff26,32,0}, -{0xff27,32,0}, -{0xff28,32,0}, -{0xff29,32,0}, -{0xff2a,32,0}, -{0xff2b,32,0}, -{0xff2c,32,0}, -{0xff2d,32,0}, -{0xff2e,32,0}, -{0xff2f,32,0}, -{0xff30,32,0}, -{0xff31,32,0}, -{0xff32,32,0}, -{0xff33,32,0}, -{0xff34,32,0}, -{0xff35,32,0}, -{0xff36,32,0}, -{0xff37,32,0}, -{0xff38,32,0}, -{0xff39,32,0}, -{0xff3a,32,0}, -{0xff41,0,-32}, -{0xff42,0,-32}, -{0xff43,0,-32}, -{0xff44,0,-32}, -{0xff45,0,-32}, -{0xff46,0,-32}, -{0xff47,0,-32}, -{0xff48,0,-32}, -{0xff49,0,-32}, -{0xff4a,0,-32}, -{0xff4b,0,-32}, -{0xff4c,0,-32}, -{0xff4d,0,-32}, -{0xff4e,0,-32}, -{0xff4f,0,-32}, -{0xff50,0,-32}, -{0xff51,0,-32}, -{0xff52,0,-32}, -{0xff53,0,-32}, -{0xff54,0,-32}, -{0xff55,0,-32}, -{0xff56,0,-32}, -{0xff57,0,-32}, -{0xff58,0,-32}, -{0xff59,0,-32}, -{0xff5a,0,-32}, -}; -static const struct caseextmap unicode_extmap[163] = { -{0x00B5,0x039C}, -{0x0069,0x0130}, -{0x0131,0x0049}, -{0x017F,0x0053}, -{0x0180,0x0243}, -{0x0253,0x0181}, -{0x0254,0x0186}, -{0x0256,0x0189}, -{0x0257,0x018A}, -{0x0259,0x018F}, -{0x025B,0x0190}, -{0x0260,0x0193}, -{0x0263,0x0194}, -{0x0269,0x0196}, -{0x0268,0x0197}, -{0x019A,0x023D}, -{0x026F,0x019C}, -{0x0272,0x019D}, -{0x019E,0x0220}, -{0x0275,0x019F}, -{0x0280,0x01A6}, -{0x0283,0x01A9}, -{0x0288,0x01AE}, -{0x028A,0x01B1}, -{0x028B,0x01B2}, -{0x0292,0x01B7}, -{0x019E,0x0220}, -{0x2C65,0x023A}, -{0x019A,0x023D}, -{0x2C66,0x023E}, -{0x023F,0x2C7E}, -{0x0240,0x2C7F}, -{0x0180,0x0243}, -{0x0250,0x2C6F}, -{0x0251,0x2C6D}, -{0x0252,0x2C70}, -{0x0253,0x0181}, -{0x0254,0x0186}, -{0x0256,0x0189}, -{0x0257,0x018A}, -{0x0259,0x018F}, -{0x025B,0x0190}, -{0x0260,0x0193}, -{0x0263,0x0194}, -{0x0268,0x0197}, -{0x0269,0x0196}, -{0x026B,0x2C62}, -{0x026F,0x019C}, -{0x0271,0x2C6E}, -{0x0272,0x019D}, -{0x0275,0x019F}, -{0x027D,0x2C64}, -{0x0280,0x01A6}, -{0x0283,0x01A9}, -{0x0288,0x01AE}, -{0x028A,0x01B1}, -{0x028B,0x01B2}, -{0x0292,0x01B7}, -{0x037B,0x03FD}, -{0x037C,0x03FE}, -{0x037D,0x03FF}, -{0x037B,0x03FD}, -{0x037C,0x03FE}, -{0x037D,0x03FF}, -{0x2D00,0x10A0}, -{0x2D01,0x10A1}, -{0x2D02,0x10A2}, -{0x2D03,0x10A3}, -{0x2D04,0x10A4}, -{0x2D05,0x10A5}, -{0x2D06,0x10A6}, -{0x2D07,0x10A7}, -{0x2D08,0x10A8}, -{0x2D09,0x10A9}, -{0x2D0A,0x10AA}, -{0x2D0B,0x10AB}, -{0x2D0C,0x10AC}, -{0x2D0D,0x10AD}, -{0x2D0E,0x10AE}, -{0x2D0F,0x10AF}, -{0x2D10,0x10B0}, -{0x2D11,0x10B1}, -{0x2D12,0x10B2}, -{0x2D13,0x10B3}, -{0x2D14,0x10B4}, -{0x2D15,0x10B5}, -{0x2D16,0x10B6}, -{0x2D17,0x10B7}, -{0x2D18,0x10B8}, -{0x2D19,0x10B9}, -{0x2D1A,0x10BA}, -{0x2D1B,0x10BB}, -{0x2D1C,0x10BC}, -{0x2D1D,0x10BD}, -{0x2D1E,0x10BE}, -{0x2D1F,0x10BF}, -{0x2D20,0x10C0}, -{0x2D21,0x10C1}, -{0x2D22,0x10C2}, -{0x2D23,0x10C3}, -{0x2D24,0x10C4}, -{0x2D25,0x10C5}, -{0x1D79,0xA77D}, -{0x1D7D,0x2C63}, -{0x00DF,0x1E9E}, -{0x1F78,0x1FF8}, -{0x1F79,0x1FF9}, -{0x1FBE,0x0399}, -{0x1F78,0x1FF8}, -{0x1F79,0x1FF9}, -{0x03C9,0x2126}, -{0x006B,0x212A}, -{0x00E5,0x212B}, -{0x026B,0x2C62}, -{0x1D7D,0x2C63}, -{0x027D,0x2C64}, -{0x2C65,0x023A}, -{0x2C66,0x023E}, -{0x0251,0x2C6D}, -{0x0271,0x2C6E}, -{0x0250,0x2C6F}, -{0x0252,0x2C70}, -{0x023F,0x2C7E}, -{0x0240,0x2C7F}, -{0x2D00,0x10A0}, -{0x2D01,0x10A1}, -{0x2D02,0x10A2}, -{0x2D03,0x10A3}, -{0x2D04,0x10A4}, -{0x2D05,0x10A5}, -{0x2D06,0x10A6}, -{0x2D07,0x10A7}, -{0x2D08,0x10A8}, -{0x2D09,0x10A9}, -{0x2D0A,0x10AA}, -{0x2D0B,0x10AB}, -{0x2D0C,0x10AC}, -{0x2D0D,0x10AD}, -{0x2D0E,0x10AE}, -{0x2D0F,0x10AF}, -{0x2D10,0x10B0}, -{0x2D11,0x10B1}, -{0x2D12,0x10B2}, -{0x2D13,0x10B3}, -{0x2D14,0x10B4}, -{0x2D15,0x10B5}, -{0x2D16,0x10B6}, -{0x2D17,0x10B7}, -{0x2D18,0x10B8}, -{0x2D19,0x10B9}, -{0x2D1A,0x10BA}, -{0x2D1B,0x10BB}, -{0x2D1C,0x10BC}, -{0x2D1D,0x10BD}, -{0x2D1E,0x10BE}, -{0x2D1F,0x10BF}, -{0x2D20,0x10C0}, -{0x2D21,0x10C1}, -{0x2D22,0x10C2}, -{0x2D23,0x10C3}, -{0x2D24,0x10C4}, -{0x2D25,0x10C5}, -{0x1D79,0xA77D}, -}; diff --git a/src/unigen.c b/src/unigen.c index 79a77c8..e9fe1d1 100644 --- a/src/unigen.c +++ b/src/unigen.c @@ -83,12 +83,12 @@ static int readRecord (UCInfo *ui) { static struct { int code, l, u; -} jumptbl[256], map[65535]; +} map[65535]; int main (int argc, char *argv[]) { UCInfo ui; - int rc, l, u, f, extoff = 0, totalmap = 0; + int rc, f, totalmap = 0; FILE *fo; // if (argc != 3) { fprintf(stderr, "usage: %s unitable.c unitable.txt\n", argv[0]); exit(1); } @@ -101,22 +101,15 @@ int main (int argc, char *argv[]) { if (ui.code < 128) continue; if (strcmp(ui.class, "Lu") != 0 && strcmp(ui.class, "Ll") != 0) continue; if (ui.upper == ui.code && ui.lower == ui.code) continue; - l = ui.lower-ui.code; - u = ui.upper-ui.code; - if (abs(u) > 127 || abs(l) > 127) { - // can't encode both in one byte, so use indirection - jumptbl[extoff].code = ui.code; - jumptbl[extoff].l = ui.lower; - jumptbl[extoff].u = ui.upper; - l = -128; - u = extoff++; - if (extoff > 255) { fprintf(stderr, "FATAL: too many entries in the offset table!\n"); exit(1); } + // + for (f = 0; f < totalmap; ++f) { + if (map[f].code == ui.code) { fprintf(stderr, "FATAL: duplicate entries in the map!\n"); exit(1); } + if (map[f].code > ui.code) { fprintf(stderr, "FATAL: invalid entry order in the map!\n"); exit(1); } } - //printf("%04X:%s:%s:%04X:%04X\n", ui.code, ui.name, ui.class, ui.lower, ui.upper); - for (f = 0; f < totalmap; ++f) if (map[f].code == ui.code) { fprintf(stderr, "FATAL: duplicate entries in the map!\n"); exit(1); } + // map[totalmap].code = ui.code; - map[totalmap].l = l; - map[totalmap].u = u; + map[totalmap].l = ui.lower; + map[totalmap].u = ui.upper; ++totalmap; if (totalmap > 65535) { fprintf(stderr, "FATAL: too many entries in the map!\n"); exit(1); } } @@ -125,11 +118,7 @@ int main (int argc, char *argv[]) { fo = fopen(argv[1], "w"); if (fo == NULL) { fprintf(stderr, "FATAL: can't create output file: '%s'\n", argv[1]); exit(1); } fprintf(fo, "static const struct casemap unicode_case_mapping[%d] = {\n", totalmap); - for (f = 0; f < totalmap; ++f) fprintf(fo, "{0x%04x,%d,%d},\n", map[f].code, map[f].l, map[f].u); - fprintf(fo, "%s\n", "};"); - // jump table - fprintf(fo, "static const struct caseextmap unicode_extmap[%d] = {\n", extoff); - for (f = 0; f < extoff; ++f) fprintf(fo, "{0x%04X,0x%04X},\n", jumptbl[f].l, jumptbl[f].u); + for (f = 0; f < totalmap; ++f) fprintf(fo, "{0x%04x,0x%04x,0x%04x},\n", map[f].code, map[f].l, map[f].u); fprintf(fo, "%s\n", "};"); fclose(fo); return 0; -- 2.11.4.GIT