Changeset 5159 for icGREP


Ignore:
Timestamp:
Sep 16, 2016, 7:47:01 PM (3 years ago)
Author:
cameron
Message:

Support for enumeration basis sets

Location:
icGREP/icgrep-devel/icgrep/UCD
Files:
1 added
20 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/UCD/Blocks.h

    r5154 r5159  
    1414
    1515namespace UCD {
    16     namespace BLK_ns {
     16  namespace BLK_ns {
     17    const unsigned independent_prop_values = 274;
    1718    /** Code Point Ranges for NB
    1819    [2144, 2207], [7312, 7359], [12256, 12271], [66048, 66175],
     
    14211422    static EnumeratedPropertyObject property_object
    14221423        {blk,
     1424         BLK_ns::independent_prop_values,
    14231425         BLK_ns::enum_names,
    14241426         BLK_ns::value_names,
  • icGREP/icgrep-devel/icgrep/UCD/DerivedAge.h

    r5154 r5159  
    1414
    1515namespace UCD {
    16     namespace AGE_ns {
     16  namespace AGE_ns {
     17    const unsigned independent_prop_values = 19;
    1718    /** Code Point Ranges for Unassigned
    1819    [888, 889], [896, 899], [907, 907], [909, 909], [930, 930],
     
    11471148    static EnumeratedPropertyObject property_object
    11481149        {age,
     1150         AGE_ns::independent_prop_values,
    11491151         AGE_ns::enum_names,
    11501152         AGE_ns::value_names,
  • icGREP/icgrep-devel/icgrep/UCD/DerivedBidiClass.h

    r5154 r5159  
    1414
    1515namespace UCD {
    16     namespace BC_ns {
     16  namespace BC_ns {
     17    const unsigned independent_prop_values = 23;
    1718    /** Code Point Ranges for L
    1819    [65, 90], [97, 122], [170, 170], [181, 181], [186, 186], [192, 214],
     
    651652    static EnumeratedPropertyObject property_object
    652653        {bc,
     654         BC_ns::independent_prop_values,
    653655         BC_ns::enum_names,
    654656         BC_ns::value_names,
  • icGREP/icgrep-devel/icgrep/UCD/DerivedCombiningClass.h

    r5154 r5159  
    1414
    1515namespace UCD {
    16     namespace CCC_ns {
     16  namespace CCC_ns {
     17    const unsigned independent_prop_values = 55;
    1718    /** Code Point Ranges for NR
    1819    [0, 767], [847, 847], [880, 1154], [1160, 1424], [1470, 1470],
     
    534535    static EnumeratedPropertyObject property_object
    535536        {ccc,
     537         CCC_ns::independent_prop_values,
    536538         CCC_ns::enum_names,
    537539         CCC_ns::value_names,
  • icGREP/icgrep-devel/icgrep/UCD/DerivedDecompositionType.h

    r5154 r5159  
    1414
    1515namespace UCD {
    16     namespace DT_ns {
     16  namespace DT_ns {
     17    const unsigned independent_prop_values = 18;
    1718    /** Code Point Ranges for None
    1819    [0, 159], [161, 167], [169, 169], [171, 174], [176, 177], [182, 183],
     
    537538    static EnumeratedPropertyObject property_object
    538539        {dt,
     540         DT_ns::independent_prop_values,
    539541         DT_ns::enum_names,
    540542         DT_ns::value_names,
  • icGREP/icgrep-devel/icgrep/UCD/DerivedGeneralCategory.h

    r5154 r5159  
    1414
    1515namespace UCD {
    16     namespace GC_ns {
     16  namespace GC_ns {
     17    const unsigned independent_prop_values = 30;
    1718    /** Code Point Ranges for Cn
    1819    [888, 889], [896, 899], [907, 907], [909, 909], [930, 930],
     
    16581659          {Mixed, 2}, {Empty, 34446}},
    16591660         {0x08000000, 0x22000000, 0x04000000, 0x20002428, 0x00000002}};
    1660     /** Code Point Ranges for LC
    1661     [65, 90], [97, 122], [181, 181], [192, 214], [216, 246], [248, 442],
    1662     [444, 447], [452, 659], [661, 687], [880, 883], [886, 887], [891, 893],
    1663     [895, 895], [902, 902], [904, 906], [908, 908], [910, 929], [931, 1013],
    1664     [1015, 1153], [1162, 1327], [1329, 1366], [1377, 1415], [4256, 4293],
    1665     [4295, 4295], [4301, 4301], [5024, 5109], [5112, 5117], [7296, 7304],
    1666     [7424, 7467], [7531, 7543], [7545, 7578], [7680, 7957], [7960, 7965],
    1667     [7968, 8005], [8008, 8013], [8016, 8023], [8025, 8025], [8027, 8027],
    1668     [8029, 8029], [8031, 8061], [8064, 8116], [8118, 8124], [8126, 8126],
    1669     [8130, 8132], [8134, 8140], [8144, 8147], [8150, 8155], [8160, 8172],
    1670     [8178, 8180], [8182, 8188], [8450, 8450], [8455, 8455], [8458, 8467],
    1671     [8469, 8469], [8473, 8477], [8484, 8484], [8486, 8486], [8488, 8488],
    1672     [8490, 8493], [8495, 8500], [8505, 8505], [8508, 8511], [8517, 8521],
    1673     [8526, 8526], [8579, 8580], [11264, 11310], [11312, 11358],
    1674     [11360, 11387], [11390, 11492], [11499, 11502], [11506, 11507],
    1675     [11520, 11557], [11559, 11559], [11565, 11565], [42560, 42605],
    1676     [42624, 42651], [42786, 42863], [42865, 42887], [42891, 42894],
    1677     [42896, 42926], [42928, 42935], [43002, 43002], [43824, 43866],
    1678     [43872, 43877], [43888, 43967], [64256, 64262], [64275, 64279],
    1679     [65313, 65338], [65345, 65370], [66560, 66639], [66736, 66771],
    1680     [66776, 66811], [68736, 68786], [68800, 68850], [71840, 71903],
    1681     [119808, 119892], [119894, 119964], [119966, 119967], [119970, 119970],
    1682     [119973, 119974], [119977, 119980], [119982, 119993], [119995, 119995],
    1683     [119997, 120003], [120005, 120069], [120071, 120074], [120077, 120084],
    1684     [120086, 120092], [120094, 120121], [120123, 120126], [120128, 120132],
    1685     [120134, 120134], [120138, 120144], [120146, 120485], [120488, 120512],
    1686     [120514, 120538], [120540, 120570], [120572, 120596], [120598, 120628],
    1687     [120630, 120654], [120656, 120686], [120688, 120712], [120714, 120744],
    1688     [120746, 120770], [120772, 120779], [125184, 125251]**/
    1689     const UnicodeSet lc_Set
    1690         {{{Empty, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 3}, {Full, 5},
    1691           {Mixed, 2}, {Full, 5}, {Mixed, 2}, {Empty, 5}, {Mixed, 3},
    1692           {Full, 1}, {Mixed, 1}, {Full, 4}, {Mixed, 1}, {Full, 4},
    1693           {Mixed, 4}, {Empty, 88}, {Full, 1}, {Mixed, 1}, {Empty, 22},
    1694           {Full, 2}, {Mixed, 1}, {Empty, 68}, {Mixed, 1}, {Empty, 3},
    1695           {Full, 1}, {Mixed, 1}, {Empty, 1}, {Mixed, 2}, {Empty, 3},
    1696           {Full, 8}, {Mixed, 1}, {Full, 1}, {Mixed, 2}, {Full, 1},
    1697           {Mixed, 3}, {Empty, 8}, {Mixed, 3}, {Empty, 1}, {Mixed, 1},
    1698           {Empty, 83}, {Full, 1}, {Mixed, 3}, {Full, 3}, {Mixed, 1},
    1699           {Full, 1}, {Mixed, 1}, {Empty, 968}, {Full, 1}, {Mixed, 2},
    1700           {Empty, 4}, {Mixed, 1}, {Full, 1}, {Mixed, 3}, {Empty, 1},
    1701           {Mixed, 1}, {Empty, 25}, {Mixed, 3}, {Full, 2}, {Empty, 634},
    1702           {Mixed, 1}, {Empty, 32}, {Mixed, 2}, {Empty, 37}, {Full, 2},
    1703           {Mixed, 1}, {Empty, 2}, {Mixed, 3}, {Empty, 60}, {Full, 1},
    1704           {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Empty, 93}, {Full, 2},
    1705           {Empty, 1497}, {Full, 2}, {Mixed, 1}, {Full, 1}, {Mixed, 3},
    1706           {Full, 1}, {Mixed, 3}, {Full, 10}, {Mixed, 10}, {Empty, 137},
    1707           {Full, 2}, {Mixed, 1}, {Empty, 30901}},
    1708          {0x07fffffe, 0x07fffffe, 0x00200000, 0xff7fffff, 0xff7fffff,
    1709           0xf7ffffff, 0xfffffff0, 0xffefffff, 0x0000ffff, 0xb8cf0000,
    1710           0xffffd740, 0xfffffffb, 0xffbfffff, 0xfffffc03, 0xfffeffff,
    1711           0x007fffff, 0xfffffffe, 0x000000ff, 0x000020bf, 0x3f3fffff,
    1712           0x000001ff, 0x00000fff, 0xfefff800, 0x07ffffff, 0x3f3fffff,
    1713           0xaaff3f3f, 0x3fffffff, 0x5fdfffff, 0x0fcf1fdc, 0x1fdc1fff,
    1714           0x3e2ffc84, 0xf21fbd50, 0x000043e0, 0x00000018, 0xffff7fff,
    1715           0x7fffffff, 0xcfffffff, 0x000c781f, 0x000020bf, 0x00003fff,
    1716           0x0fffffff, 0xfffffffc, 0xfffeffff, 0xffff78ff, 0x00ff7fff,
    1717           0x04000000, 0xffff0000, 0x07ffffff, 0xffff003f, 0x00f8007f,
    1718           0x07fffffe, 0x07fffffe, 0x0000ffff, 0xffff0000, 0xff0fffff,
    1719           0x0fffffff, 0x0007ffff, 0x0007ffff, 0xffdfffff, 0xdfffffff,
    1720           0xebffde64, 0xffffffef, 0xdfdfe7bf, 0x7bffffff, 0xfffdfc5f,
    1721           0xffffff3f, 0xf7fffffd, 0xf7ffffff, 0xffdfffff, 0xffdfffff,
    1722           0xffff7fff, 0xffff7fff, 0xfffffdff, 0xfffffdff, 0x00000ff7,
    1723           0x0000000f}};
     1661    /** Code Point Ranges for C
     1662    [0, 31], [127, 159], [173, 173], [888, 889], [896, 899], [907, 907],
     1663    [909, 909], [930, 930], [1328, 1328], [1367, 1368], [1376, 1376],
     1664    [1416, 1416], [1419, 1420], [1424, 1424], [1480, 1487], [1515, 1519],
     1665    [1525, 1541], [1564, 1565], [1757, 1757], [1806, 1807], [1867, 1868],
     1666    [1970, 1983], [2043, 2047], [2094, 2095], [2111, 2111], [2140, 2141],
     1667    [2143, 2207], [2229, 2229], [2238, 2259], [2274, 2274], [2436, 2436],
     1668    [2445, 2446], [2449, 2450], [2473, 2473], [2481, 2481], [2483, 2485],
     1669    [2490, 2491], [2501, 2502], [2505, 2506], [2511, 2518], [2520, 2523],
     1670    [2526, 2526], [2532, 2533], [2556, 2560], [2564, 2564], [2571, 2574],
     1671    [2577, 2578], [2601, 2601], [2609, 2609], [2612, 2612], [2615, 2615],
     1672    [2618, 2619], [2621, 2621], [2627, 2630], [2633, 2634], [2638, 2640],
     1673    [2642, 2648], [2653, 2653], [2655, 2661], [2678, 2688], [2692, 2692],
     1674    [2702, 2702], [2706, 2706], [2729, 2729], [2737, 2737], [2740, 2740],
     1675    [2746, 2747], [2758, 2758], [2762, 2762], [2766, 2767], [2769, 2783],
     1676    [2788, 2789], [2802, 2808], [2810, 2816], [2820, 2820], [2829, 2830],
     1677    [2833, 2834], [2857, 2857], [2865, 2865], [2868, 2868], [2874, 2875],
     1678    [2885, 2886], [2889, 2890], [2894, 2901], [2904, 2907], [2910, 2910],
     1679    [2916, 2917], [2936, 2945], [2948, 2948], [2955, 2957], [2961, 2961],
     1680    [2966, 2968], [2971, 2971], [2973, 2973], [2976, 2978], [2981, 2983],
     1681    [2987, 2989], [3002, 3005], [3011, 3013], [3017, 3017], [3022, 3023],
     1682    [3025, 3030], [3032, 3045], [3067, 3071], [3076, 3076], [3085, 3085],
     1683    [3089, 3089], [3113, 3113], [3130, 3132], [3141, 3141], [3145, 3145],
     1684    [3150, 3156], [3159, 3159], [3163, 3167], [3172, 3173], [3184, 3191],
     1685    [3204, 3204], [3213, 3213], [3217, 3217], [3241, 3241], [3252, 3252],
     1686    [3258, 3259], [3269, 3269], [3273, 3273], [3278, 3284], [3287, 3293],
     1687    [3295, 3295], [3300, 3301], [3312, 3312], [3315, 3328], [3332, 3332],
     1688    [3341, 3341], [3345, 3345], [3387, 3388], [3397, 3397], [3401, 3401],
     1689    [3408, 3411], [3428, 3429], [3456, 3457], [3460, 3460], [3479, 3481],
     1690    [3506, 3506], [3516, 3516], [3518, 3519], [3527, 3529], [3531, 3534],
     1691    [3541, 3541], [3543, 3543], [3552, 3557], [3568, 3569], [3573, 3584],
     1692    [3643, 3646], [3676, 3712], [3715, 3715], [3717, 3718], [3721, 3721],
     1693    [3723, 3724], [3726, 3731], [3736, 3736], [3744, 3744], [3748, 3748],
     1694    [3750, 3750], [3752, 3753], [3756, 3756], [3770, 3770], [3774, 3775],
     1695    [3781, 3781], [3783, 3783], [3790, 3791], [3802, 3803], [3808, 3839],
     1696    [3912, 3912], [3949, 3952], [3992, 3992], [4029, 4029], [4045, 4045],
     1697    [4059, 4095], [4294, 4294], [4296, 4300], [4302, 4303], [4681, 4681],
     1698    [4686, 4687], [4695, 4695], [4697, 4697], [4702, 4703], [4745, 4745],
     1699    [4750, 4751], [4785, 4785], [4790, 4791], [4799, 4799], [4801, 4801],
     1700    [4806, 4807], [4823, 4823], [4881, 4881], [4886, 4887], [4955, 4956],
     1701    [4989, 4991], [5018, 5023], [5110, 5111], [5118, 5119], [5789, 5791],
     1702    [5881, 5887], [5901, 5901], [5909, 5919], [5943, 5951], [5972, 5983],
     1703    [5997, 5997], [6001, 6001], [6004, 6015], [6110, 6111], [6122, 6127],
     1704    [6138, 6143], [6158, 6159], [6170, 6175], [6264, 6271], [6315, 6319],
     1705    [6390, 6399], [6431, 6431], [6444, 6447], [6460, 6463], [6465, 6467],
     1706    [6510, 6511], [6517, 6527], [6572, 6575], [6602, 6607], [6619, 6621],
     1707    [6684, 6685], [6751, 6751], [6781, 6782], [6794, 6799], [6810, 6815],
     1708    [6830, 6831], [6847, 6911], [6988, 6991], [7037, 7039], [7156, 7163],
     1709    [7224, 7226], [7242, 7244], [7305, 7359], [7368, 7375], [7415, 7415],
     1710    [7418, 7423], [7670, 7674], [7958, 7959], [7966, 7967], [8006, 8007],
     1711    [8014, 8015], [8024, 8024], [8026, 8026], [8028, 8028], [8030, 8030],
     1712    [8062, 8063], [8117, 8117], [8133, 8133], [8148, 8149], [8156, 8156],
     1713    [8176, 8177], [8181, 8181], [8191, 8191], [8203, 8207], [8234, 8238],
     1714    [8288, 8303], [8306, 8307], [8335, 8335], [8349, 8351], [8383, 8399],
     1715    [8433, 8447], [8588, 8591], [9215, 9215], [9255, 9279], [9291, 9311],
     1716    [11124, 11125], [11158, 11159], [11194, 11196], [11209, 11209],
     1717    [11218, 11243], [11248, 11263], [11311, 11311], [11359, 11359],
     1718    [11508, 11512], [11558, 11558], [11560, 11564], [11566, 11567],
     1719    [11624, 11630], [11633, 11646], [11671, 11679], [11687, 11687],
     1720    [11695, 11695], [11703, 11703], [11711, 11711], [11719, 11719],
     1721    [11727, 11727], [11735, 11735], [11743, 11743], [11845, 11903],
     1722    [11930, 11930], [12020, 12031], [12246, 12271], [12284, 12287],
     1723    [12352, 12352], [12439, 12440], [12544, 12548], [12590, 12592],
     1724    [12687, 12687], [12731, 12735], [12772, 12783], [12831, 12831],
     1725    [13055, 13055], [19894, 19903], [40918, 40959], [42125, 42127],
     1726    [42183, 42191], [42540, 42559], [42744, 42751], [42927, 42927],
     1727    [42936, 42998], [43052, 43055], [43066, 43071], [43128, 43135],
     1728    [43206, 43213], [43226, 43231], [43262, 43263], [43348, 43358],
     1729    [43389, 43391], [43470, 43470], [43482, 43485], [43519, 43519],
     1730    [43575, 43583], [43598, 43599], [43610, 43611], [43715, 43738],
     1731    [43767, 43776], [43783, 43784], [43791, 43792], [43799, 43807],
     1732    [43815, 43815], [43823, 43823], [43878, 43887], [44014, 44015],
     1733    [44026, 44031], [55204, 55215], [55239, 55242], [55292, 63743],
     1734    [64110, 64111], [64218, 64255], [64263, 64274], [64280, 64284],
     1735    [64311, 64311], [64317, 64317], [64319, 64319], [64322, 64322],
     1736    [64325, 64325], [64450, 64466], [64832, 64847], [64912, 64913],
     1737    [64968, 65007], [65022, 65023], [65050, 65055], [65107, 65107],
     1738    [65127, 65127], [65132, 65135], [65141, 65141], [65277, 65280],
     1739    [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497],
     1740    [65501, 65503], [65511, 65511], [65519, 65531], [65534, 65535],
     1741    [65548, 65548], [65575, 65575], [65595, 65595], [65598, 65598],
     1742    [65614, 65615], [65630, 65663], [65787, 65791], [65795, 65798],
     1743    [65844, 65846], [65935, 65935], [65948, 65951], [65953, 65999],
     1744    [66046, 66175], [66205, 66207], [66257, 66271], [66300, 66303],
     1745    [66340, 66351], [66379, 66383], [66427, 66431], [66462, 66462],
     1746    [66500, 66503], [66518, 66559], [66718, 66719], [66730, 66735],
     1747    [66772, 66775], [66812, 66815], [66856, 66863], [66916, 66926],
     1748    [66928, 67071], [67383, 67391], [67414, 67423], [67432, 67583],
     1749    [67590, 67591], [67593, 67593], [67638, 67638], [67641, 67643],
     1750    [67645, 67646], [67670, 67670], [67743, 67750], [67760, 67807],
     1751    [67827, 67827], [67830, 67834], [67868, 67870], [67898, 67902],
     1752    [67904, 67967], [68024, 68027], [68048, 68049], [68100, 68100],
     1753    [68103, 68107], [68116, 68116], [68120, 68120], [68148, 68151],
     1754    [68155, 68158], [68168, 68175], [68185, 68191], [68256, 68287],
     1755    [68327, 68330], [68343, 68351], [68406, 68408], [68438, 68439],
     1756    [68467, 68471], [68498, 68504], [68509, 68520], [68528, 68607],
     1757    [68681, 68735], [68787, 68799], [68851, 68857], [68864, 69215],
     1758    [69247, 69631], [69710, 69713], [69744, 69758], [69821, 69821],
     1759    [69826, 69839], [69865, 69871], [69882, 69887], [69941, 69941],
     1760    [69956, 69967], [70007, 70015], [70094, 70095], [70112, 70112],
     1761    [70133, 70143], [70162, 70162], [70207, 70271], [70279, 70279],
     1762    [70281, 70281], [70286, 70286], [70302, 70302], [70314, 70319],
     1763    [70379, 70383], [70394, 70399], [70404, 70404], [70413, 70414],
     1764    [70417, 70418], [70441, 70441], [70449, 70449], [70452, 70452],
     1765    [70458, 70459], [70469, 70470], [70473, 70474], [70478, 70479],
     1766    [70481, 70486], [70488, 70492], [70500, 70501], [70509, 70511],
     1767    [70517, 70655], [70746, 70746], [70748, 70748], [70750, 70783],
     1768    [70856, 70863], [70874, 71039], [71094, 71095], [71134, 71167],
     1769    [71237, 71247], [71258, 71263], [71277, 71295], [71352, 71359],
     1770    [71370, 71423], [71450, 71452], [71468, 71471], [71488, 71839],
     1771    [71923, 71934], [71936, 72383], [72441, 72703], [72713, 72713],
     1772    [72759, 72759], [72774, 72783], [72813, 72815], [72848, 72849],
     1773    [72872, 72872], [72887, 73727], [74650, 74751], [74863, 74863],
     1774    [74869, 74879], [75076, 77823], [78895, 82943], [83527, 92159],
     1775    [92729, 92735], [92767, 92767], [92778, 92781], [92784, 92879],
     1776    [92910, 92911], [92918, 92927], [92998, 93007], [93018, 93018],
     1777    [93026, 93026], [93048, 93052], [93072, 93951], [94021, 94031],
     1778    [94079, 94094], [94112, 94175], [94177, 94207], [100333, 100351],
     1779    [101107, 110591], [110594, 113663], [113771, 113775], [113789, 113791],
     1780    [113801, 113807], [113818, 113819], [113824, 118783], [119030, 119039],
     1781    [119079, 119080], [119155, 119162], [119273, 119295], [119366, 119551],
     1782    [119639, 119647], [119666, 119807], [119893, 119893], [119965, 119965],
     1783    [119968, 119969], [119971, 119972], [119975, 119976], [119981, 119981],
     1784    [119994, 119994], [119996, 119996], [120004, 120004], [120070, 120070],
     1785    [120075, 120076], [120085, 120085], [120093, 120093], [120122, 120122],
     1786    [120127, 120127], [120133, 120133], [120135, 120137], [120145, 120145],
     1787    [120486, 120487], [120780, 120781], [121484, 121498], [121504, 121504],
     1788    [121520, 122879], [122887, 122887], [122905, 122906], [122914, 122914],
     1789    [122917, 122917], [122923, 124927], [125125, 125126], [125143, 125183],
     1790    [125259, 125263], [125274, 125277], [125280, 126463], [126468, 126468],
     1791    [126496, 126496], [126499, 126499], [126501, 126502], [126504, 126504],
     1792    [126515, 126515], [126520, 126520], [126522, 126522], [126524, 126529],
     1793    [126531, 126534], [126536, 126536], [126538, 126538], [126540, 126540],
     1794    [126544, 126544], [126547, 126547], [126549, 126550], [126552, 126552],
     1795    [126554, 126554], [126556, 126556], [126558, 126558], [126560, 126560],
     1796    [126563, 126563], [126565, 126566], [126571, 126571], [126579, 126579],
     1797    [126584, 126584], [126589, 126589], [126591, 126591], [126602, 126602],
     1798    [126620, 126624], [126628, 126628], [126634, 126634], [126652, 126703],
     1799    [126706, 126975], [127020, 127023], [127124, 127135], [127151, 127152],
     1800    [127168, 127168], [127184, 127184], [127222, 127231], [127245, 127247],
     1801    [127279, 127279], [127340, 127343], [127405, 127461], [127491, 127503],
     1802    [127548, 127551], [127561, 127567], [127570, 127743], [128723, 128735],
     1803    [128749, 128751], [128759, 128767], [128884, 128895], [128981, 129023],
     1804    [129036, 129039], [129096, 129103], [129114, 129119], [129160, 129167],
     1805    [129198, 129295], [129311, 129311], [129320, 129327], [129329, 129330],
     1806    [129343, 129343], [129356, 129359], [129375, 129407], [129426, 129471],
     1807    [129473, 131071], [173783, 173823], [177973, 177983], [178206, 178207],
     1808    [183970, 194559], [195102, 917759], [918000, 1114111]**/
     1809    const UnicodeSet c_Set
     1810        {{{Full, 1}, {Empty, 2}, {Mixed, 1}, {Full, 1}, {Mixed, 1},
     1811          {Empty, 21}, {Mixed, 3}, {Empty, 11}, {Mixed, 4}, {Empty, 1},
     1812          {Mixed, 3}, {Empty, 5}, {Mixed, 1}, {Empty, 1}, {Mixed, 1},
     1813          {Empty, 1}, {Mixed, 1}, {Empty, 2}, {Mixed, 1}, {Empty, 1},
     1814          {Mixed, 1}, {Empty, 1}, {Mixed, 2}, {Full, 2}, {Mixed, 3},
     1815          {Empty, 4}, {Mixed, 39}, {Full, 1}, {Mixed, 3}, {Full, 1},
     1816          {Empty, 2}, {Mixed, 5}, {Full, 1}, {Empty, 6}, {Mixed, 1},
     1817          {Empty, 11}, {Mixed, 1}, {Empty, 1}, {Mixed, 3}, {Empty, 1},
     1818          {Mixed, 1}, {Empty, 1}, {Mixed, 3}, {Empty, 2}, {Mixed, 1},
     1819          {Empty, 20}, {Mixed, 1}, {Empty, 2}, {Mixed, 5}, {Empty, 2},
     1820          {Mixed, 3}, {Empty, 2}, {Mixed, 1}, {Empty, 1}, {Mixed, 1},
     1821          {Empty, 1}, {Mixed, 5}, {Empty, 1}, {Mixed, 2}, {Empty, 1},
     1822          {Mixed, 1}, {Empty, 1}, {Mixed, 4}, {Full, 2}, {Empty, 2},
     1823          {Mixed, 2}, {Empty, 3}, {Mixed, 1}, {Empty, 1}, {Mixed, 2},
     1824          {Empty, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 2}, {Empty, 7},
     1825          {Mixed, 1}, {Empty, 8}, {Mixed, 1}, {Empty, 1}, {Mixed, 2},
     1826          {Empty, 1}, {Mixed, 5}, {Empty, 1}, {Mixed, 5}, {Empty, 4},
     1827          {Mixed, 1}, {Empty, 18}, {Mixed, 1}, {Empty, 1}, {Mixed, 2},
     1828          {Empty, 56}, {Mixed, 5}, {Empty, 1}, {Mixed, 2}, {Empty, 4},
     1829          {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Empty, 1}, {Mixed, 4},
     1830          {Empty, 3}, {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Empty, 2},
     1831          {Mixed, 1}, {Empty, 6}, {Mixed, 2}, {Empty, 2}, {Mixed, 1},
     1832          {Empty, 1}, {Mixed, 1}, {Empty, 3}, {Mixed, 2}, {Empty, 2},
     1833          {Mixed, 2}, {Empty, 1}, {Mixed, 2}, {Empty, 6}, {Mixed, 1},
     1834          {Empty, 213}, {Mixed, 1}, {Empty, 656}, {Mixed, 1}, {Full, 1},
     1835          {Empty, 36}, {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Empty, 10},
     1836          {Mixed, 1}, {Empty, 5}, {Mixed, 1}, {Empty, 5}, {Mixed, 1},
     1837          {Full, 1}, {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Empty, 1},
     1838          {Mixed, 1}, {Empty, 2}, {Mixed, 2}, {Empty, 2}, {Mixed, 2},
     1839          {Empty, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 2}, {Empty, 3},
     1840          {Mixed, 4}, {Empty, 1}, {Mixed, 1}, {Empty, 3}, {Mixed, 1},
     1841          {Empty, 349}, {Mixed, 3}, {Full, 264}, {Empty, 11}, {Mixed, 1},
     1842          {Empty, 2}, {Mixed, 1}, {Full, 1}, {Mixed, 3}, {Empty, 3},
     1843          {Mixed, 1}, {Empty, 11}, {Mixed, 1}, {Empty, 1}, {Mixed, 1},
     1844          {Empty, 1}, {Mixed, 3}, {Empty, 1}, {Mixed, 2}, {Empty, 3},
     1845          {Mixed, 2}, {Empty, 4}, {Mixed, 6}, {Full, 1}, {Empty, 3},
     1846          {Mixed, 3}, {Empty, 2}, {Mixed, 4}, {Full, 4}, {Mixed, 1},
     1847          {Empty, 1}, {Mixed, 2}, {Empty, 1}, {Mixed, 4}, {Empty, 1},
     1848          {Mixed, 1}, {Full, 1}, {Empty, 4}, {Mixed, 4}, {Empty, 1},
     1849          {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Full, 4}, {Empty, 9},
     1850          {Mixed, 3}, {Full, 4}, {Mixed, 3}, {Empty, 1}, {Mixed, 2},
     1851          {Full, 1}, {Mixed, 3}, {Full, 2}, {Empty, 1}, {Mixed, 2},
     1852          {Empty, 1}, {Mixed, 3}, {Empty, 2}, {Full, 1}, {Empty, 1},
     1853          {Mixed, 1}, {Empty, 1}, {Mixed, 5}, {Full, 2}, {Empty, 2},
     1854          {Mixed, 1}, {Full, 1}, {Empty, 1}, {Mixed, 1}, {Empty, 1},
     1855          {Mixed, 1}, {Full, 11}, {Mixed, 1}, {Full, 12}, {Empty, 2},
     1856          {Mixed, 2}, {Empty, 1}, {Mixed, 3}, {Empty, 1}, {Mixed, 3},
     1857          {Empty, 2}, {Mixed, 4}, {Full, 2}, {Mixed, 2}, {Empty, 1},
     1858          {Mixed, 5}, {Full, 4}, {Empty, 2}, {Mixed, 1}, {Full, 1},
     1859          {Empty, 2}, {Mixed, 1}, {Full, 5}, {Empty, 1}, {Mixed, 2},
     1860          {Full, 1}, {Empty, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 2},
     1861          {Full, 1}, {Mixed, 2}, {Full, 11}, {Empty, 2}, {Mixed, 1},
     1862          {Full, 14}, {Empty, 1}, {Mixed, 1}, {Full, 8}, {Mixed, 6},
     1863          {Full, 26}, {Empty, 28}, {Mixed, 1}, {Full, 3}, {Empty, 3},
     1864          {Mixed, 1}, {Empty, 6}, {Mixed, 1}, {Full, 85}, {Empty, 33},
     1865          {Mixed, 1}, {Full, 126}, {Empty, 18}, {Mixed, 1}, {Full, 269},
     1866          {Empty, 17}, {Mixed, 3}, {Full, 2}, {Mixed, 2}, {Empty, 2},
     1867          {Mixed, 3}, {Full, 27}, {Empty, 2}, {Mixed, 3}, {Full, 2},
     1868          {Mixed, 1}, {Empty, 191}, {Mixed, 1}, {Empty, 23}, {Mixed, 1},
     1869          {Full, 296}, {Mixed, 1}, {Full, 95}, {Empty, 3}, {Mixed, 2},
     1870          {Full, 155}, {Empty, 7}, {Mixed, 1}, {Empty, 1}, {Mixed, 1},
     1871          {Empty, 1}, {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 2},
     1872          {Mixed, 1}, {Full, 5}, {Empty, 2}, {Mixed, 2}, {Full, 4},
     1873          {Empty, 2}, {Mixed, 1}, {Empty, 1}, {Mixed, 3}, {Empty, 1},
     1874          {Mixed, 3}, {Empty, 10}, {Mixed, 1}, {Empty, 8}, {Mixed, 1},
     1875          {Empty, 21}, {Mixed, 2}, {Full, 42}, {Mixed, 2}, {Full, 62},
     1876          {Empty, 6}, {Mixed, 1}, {Full, 1}, {Empty, 2}, {Mixed, 1},
     1877          {Full, 37}, {Mixed, 6}, {Full, 1}, {Mixed, 1}, {Full, 8},
     1878          {Empty, 1}, {Mixed, 1}, {Empty, 2}, {Mixed, 6}, {Empty, 1},
     1879          {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 4},
     1880          {Full, 5}, {Empty, 30}, {Mixed, 2}, {Empty, 3}, {Mixed, 1},
     1881          {Empty, 2}, {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Empty, 1},
     1882          {Mixed, 1}, {Empty, 1}, {Mixed, 2}, {Full, 2}, {Mixed, 3},
     1883          {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Full, 49},
     1884          {Empty, 1334}, {Mixed, 1}, {Full, 1}, {Empty, 129}, {Mixed, 1},
     1885          {Empty, 6}, {Mixed, 1}, {Empty, 180}, {Mixed, 1}, {Full, 330},
     1886          {Empty, 16}, {Mixed, 1}, {Full, 22583}, {Empty, 7}, {Mixed, 1},
     1887          {Full, 6128}},
     1888         {0x80000000, 0x00002000, 0x03000000, 0x0000280f, 0x00000004,
     1889          0x00010000, 0x01800000, 0x00000001, 0x00011900, 0x0000ff00,
     1890          0xffe0f800, 0x3000003f, 0x20000000, 0x0000c000, 0x00001800,
     1891          0xfffc0000, 0xf8000000, 0x8000c000, 0xb0000000, 0xc0200000,
     1892          0x000fffff, 0x00000004, 0x00066010, 0x0c3a0200, 0x4f7f8660,
     1893          0xf0000030, 0x00067811, 0x2c920200, 0xa1fdc678, 0xffc0003f,
     1894          0x00044011, 0x0c120200, 0xfffec440, 0xfdfc0030, 0x00066011,
     1895          0x0c120200, 0x4f3fc660, 0xff000030, 0x29c23813, 0x3c0038e7,
     1896          0xff7ec238, 0xf800003f, 0x00022010, 0x1c000200, 0xf89fc220,
     1897          0x00ff0030, 0x00022010, 0x0c100200, 0xbf9fc220, 0xfff90030,
     1898          0x00022011, 0x18000000, 0x000f0220, 0x00000030, 0x03800013,
     1899          0xd0040000, 0x00a07b80, 0xffe3003f, 0x00000001, 0x78000000,
     1900          0xf0000000, 0x010fda69, 0xc4001351, 0x0c00c0a0, 0x00000100,
     1901          0x0001e000, 0x01000000, 0x20000000, 0xf8002000, 0x0000df40,
     1902          0xc280c200, 0x0000c200, 0x80c20000, 0x008000c2, 0x00c20000,
     1903          0x18000000, 0xe0000000, 0xfc000000, 0xc0c00000, 0xe0000000,
     1904          0xfe000000, 0xffe02000, 0xff800000, 0xfff00000, 0xfff22000,
     1905          0xc0000000, 0xfc00fc00, 0xfc00c000, 0xff000000, 0x0000f800,
     1906          0xffc00000, 0x80000000, 0xf000f000, 0x0000000e, 0xffe0c000,
     1907          0x0000f000, 0x3800fc00, 0x30000000, 0x80000000, 0x60000000,
     1908          0xfc00fc00, 0x8000c000, 0x0000f000, 0xe0000000, 0x0ff00000,
     1909          0x07000000, 0x00001c00, 0xfffffe00, 0x0000ff00, 0xfc800000,
     1910          0x07c00000, 0xc0c00000, 0x5500c0c0, 0xc0000000, 0x00200000,
     1911          0x10300020, 0x80230000, 0x0000f800, 0x00007c00, 0x000cffff,
     1912          0xe0008000, 0x80000000, 0x0000ffff, 0xfffe0000, 0x0000f000,
     1913          0x80000000, 0xffffff80, 0xfffff800, 0x00300000, 0x00c00000,
     1914          0x1c000000, 0xfffc0200, 0xffff0fff, 0x00008000, 0x80000000,
     1915          0x01f00000, 0x0000df40, 0x7ffe7f00, 0xff800000, 0x80808080,
     1916          0x80808080, 0xffffffe0, 0x04000000, 0xfff00000, 0xffc00000,
     1917          0xf000ffff, 0x00000001, 0x01800000, 0x0000001f, 0x0001c000,
     1918          0x00008000, 0xf8000000, 0x0000fff0, 0x80000000, 0x80000000,
     1919          0xffc00000, 0xffc00000, 0x0000e000, 0x0000ff80, 0xfffff000,
     1920          0xff000000, 0xff008000, 0x007fffff, 0xfc00f000, 0xff000000,
     1921          0xfc003fc0, 0xc0000000, 0x7ff00000, 0xe0000000, 0x3c004000,
     1922          0x80000000, 0xff800000, 0x0c00c000, 0x07fffff8, 0xff800000,
     1923          0xff818181, 0x00008080, 0x0000ffc0, 0xfc00c000, 0x0000fff0,
     1924          0x00000780, 0xf0000000, 0x0000c000, 0xfc000000, 0x1f07ff80,
     1925          0xa0800000, 0x00000024, 0x0007fffc, 0x0000ffff, 0x00030000,
     1926          0xffffff00, 0xc000ffff, 0xfc000000, 0x00080000, 0x0020f080,
     1927          0xe0000000, 0x00000001, 0x80000000, 0xe3030303, 0xcfff8080,
     1928          0x00001000, 0x48000080, 0xc000c000, 0xf8000000, 0x00000078,
     1929          0x00700000, 0xf0008000, 0xfffffffe, 0x0000ffff, 0xc0000000,
     1930          0xe0000000, 0xfffe0000, 0xf0000000, 0x0000fff0, 0x0000f800,
     1931          0xf8000000, 0x40000000, 0xffc000f0, 0xc0000000, 0x0000fc00,
     1932          0x00f00000, 0xf0000000, 0x0000ff00, 0xffff7ff0, 0xff800000,
     1933          0xffc00000, 0xffffff00, 0x000002c0, 0x6e400000, 0x00400000,
     1934          0x80000000, 0xffff007f, 0x07c80000, 0x70000000, 0x7c000000,
     1935          0x0f000000, 0x00030000, 0x01100f90, 0x78f00000, 0xfe00ff00,
     1936          0xff800780, 0x01c00000, 0x00c00000, 0x00f80000, 0xe1fc0000,
     1937          0xffff01ff, 0xfffffe00, 0xfff80000, 0x03f80000, 0x80000000,
     1938          0x0003c000, 0x7fff0000, 0x20000000, 0x0000fffc, 0xfc00fe00,
     1939          0x00200000, 0x0000fff0, 0xff800000, 0x0000c000, 0xffe00001,
     1940          0x00040000, 0x80000000, 0x40004280, 0x0000fc00, 0xfc00f800,
     1941          0x00066010, 0x0c120200, 0x1f7ec660, 0xffe0e030, 0xd4000000,
     1942          0xfc00ff00, 0x00c00000, 0xc0000000, 0xfc00ffe0, 0xffffe000,
     1943          0xff000000, 0xfffffc00, 0x1c000000, 0x0000f000, 0x7ff80000,
     1944          0xfe000000, 0x00000200, 0x00800000, 0x0000ffc0, 0x0000e000,
     1945          0x00030000, 0xff800100, 0xfc000000, 0xffe08000, 0xfffffff0,
     1946          0xffff8000, 0xffffff80, 0xfe000000, 0x80000000, 0xffff3c00,
     1947          0x0000ffff, 0xffc0c000, 0x0400ffc0, 0x1f000004, 0xffff0000,
     1948          0x0000ffe0, 0x80000000, 0x00007fff, 0xfffffffe, 0xffffe000,
     1949          0xfff80000, 0xfffffffc, 0xe000f800, 0x0c00fe00, 0xffc00000,
     1950          0x00000180, 0x07f80000, 0xfffffe00, 0xffffffc0, 0xff800000,
     1951          0xfffc0000, 0x00200000, 0x20000000, 0x1400219b, 0x00000010,
     1952          0x20201840, 0x84000000, 0x000203a0, 0x000000c0, 0x00003000,
     1953          0x07fff000, 0xffff0001, 0x06000080, 0xfffff824, 0xff800060,
     1954          0x3c00f800, 0x00000010, 0xf5080169, 0x5569157b, 0xa1080869,
     1955          0xf0000400, 0xf0000411, 0xfffcffff, 0x0000f000, 0xfff00000,
     1956          0x00018000, 0x00010001, 0xffc00000, 0x0000e000, 0x00008000,
     1957          0x0000f000, 0xffffe000, 0x0000003f, 0x0000fff8, 0xf0000000,
     1958          0xfffcfe00, 0xfff80000, 0xff80e000, 0xfff00000, 0xffe00000,
     1959          0x0000f000, 0xfc00ff00, 0x0000ff00, 0xffffc000, 0x8000ffff,
     1960          0x8006ff00, 0x8000f000, 0xfffc0000, 0xfffffffe, 0xff800000,
     1961          0xffe00000, 0xc0000000, 0xfffffffc, 0xc0000000, 0xffff0000}};
    17241962    /** Code Point Ranges for L
    17251963    [65, 90], [97, 122], [170, 170], [181, 181], [186, 186], [192, 214],
     
    19892227          0x0ffffbff, 0x0ffffbee, 0x007fffff, 0x001fffff, 0x3fffffff,
    19902228          0x00000003, 0x3fffffff}};
     2229    /** Code Point Ranges for LC
     2230    [65, 90], [97, 122], [181, 181], [192, 214], [216, 246], [248, 442],
     2231    [444, 447], [452, 659], [661, 687], [880, 883], [886, 887], [891, 893],
     2232    [895, 895], [902, 902], [904, 906], [908, 908], [910, 929], [931, 1013],
     2233    [1015, 1153], [1162, 1327], [1329, 1366], [1377, 1415], [4256, 4293],
     2234    [4295, 4295], [4301, 4301], [5024, 5109], [5112, 5117], [7296, 7304],
     2235    [7424, 7467], [7531, 7543], [7545, 7578], [7680, 7957], [7960, 7965],
     2236    [7968, 8005], [8008, 8013], [8016, 8023], [8025, 8025], [8027, 8027],
     2237    [8029, 8029], [8031, 8061], [8064, 8116], [8118, 8124], [8126, 8126],
     2238    [8130, 8132], [8134, 8140], [8144, 8147], [8150, 8155], [8160, 8172],
     2239    [8178, 8180], [8182, 8188], [8450, 8450], [8455, 8455], [8458, 8467],
     2240    [8469, 8469], [8473, 8477], [8484, 8484], [8486, 8486], [8488, 8488],
     2241    [8490, 8493], [8495, 8500], [8505, 8505], [8508, 8511], [8517, 8521],
     2242    [8526, 8526], [8579, 8580], [11264, 11310], [11312, 11358],
     2243    [11360, 11387], [11390, 11492], [11499, 11502], [11506, 11507],
     2244    [11520, 11557], [11559, 11559], [11565, 11565], [42560, 42605],
     2245    [42624, 42651], [42786, 42863], [42865, 42887], [42891, 42894],
     2246    [42896, 42926], [42928, 42935], [43002, 43002], [43824, 43866],
     2247    [43872, 43877], [43888, 43967], [64256, 64262], [64275, 64279],
     2248    [65313, 65338], [65345, 65370], [66560, 66639], [66736, 66771],
     2249    [66776, 66811], [68736, 68786], [68800, 68850], [71840, 71903],
     2250    [119808, 119892], [119894, 119964], [119966, 119967], [119970, 119970],
     2251    [119973, 119974], [119977, 119980], [119982, 119993], [119995, 119995],
     2252    [119997, 120003], [120005, 120069], [120071, 120074], [120077, 120084],
     2253    [120086, 120092], [120094, 120121], [120123, 120126], [120128, 120132],
     2254    [120134, 120134], [120138, 120144], [120146, 120485], [120488, 120512],
     2255    [120514, 120538], [120540, 120570], [120572, 120596], [120598, 120628],
     2256    [120630, 120654], [120656, 120686], [120688, 120712], [120714, 120744],
     2257    [120746, 120770], [120772, 120779], [125184, 125251]**/
     2258    const UnicodeSet lc_Set
     2259        {{{Empty, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 3}, {Full, 5},
     2260          {Mixed, 2}, {Full, 5}, {Mixed, 2}, {Empty, 5}, {Mixed, 3},
     2261          {Full, 1}, {Mixed, 1}, {Full, 4}, {Mixed, 1}, {Full, 4},
     2262          {Mixed, 4}, {Empty, 88}, {Full, 1}, {Mixed, 1}, {Empty, 22},
     2263          {Full, 2}, {Mixed, 1}, {Empty, 68}, {Mixed, 1}, {Empty, 3},
     2264          {Full, 1}, {Mixed, 1}, {Empty, 1}, {Mixed, 2}, {Empty, 3},
     2265          {Full, 8}, {Mixed, 1}, {Full, 1}, {Mixed, 2}, {Full, 1},
     2266          {Mixed, 3}, {Empty, 8}, {Mixed, 3}, {Empty, 1}, {Mixed, 1},
     2267          {Empty, 83}, {Full, 1}, {Mixed, 3}, {Full, 3}, {Mixed, 1},
     2268          {Full, 1}, {Mixed, 1}, {Empty, 968}, {Full, 1}, {Mixed, 2},
     2269          {Empty, 4}, {Mixed, 1}, {Full, 1}, {Mixed, 3}, {Empty, 1},
     2270          {Mixed, 1}, {Empty, 25}, {Mixed, 3}, {Full, 2}, {Empty, 634},
     2271          {Mixed, 1}, {Empty, 32}, {Mixed, 2}, {Empty, 37}, {Full, 2},
     2272          {Mixed, 1}, {Empty, 2}, {Mixed, 3}, {Empty, 60}, {Full, 1},
     2273          {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Empty, 93}, {Full, 2},
     2274          {Empty, 1497}, {Full, 2}, {Mixed, 1}, {Full, 1}, {Mixed, 3},
     2275          {Full, 1}, {Mixed, 3}, {Full, 10}, {Mixed, 10}, {Empty, 137},
     2276          {Full, 2}, {Mixed, 1}, {Empty, 30901}},
     2277         {0x07fffffe, 0x07fffffe, 0x00200000, 0xff7fffff, 0xff7fffff,
     2278          0xf7ffffff, 0xfffffff0, 0xffefffff, 0x0000ffff, 0xb8cf0000,
     2279          0xffffd740, 0xfffffffb, 0xffbfffff, 0xfffffc03, 0xfffeffff,
     2280          0x007fffff, 0xfffffffe, 0x000000ff, 0x000020bf, 0x3f3fffff,
     2281          0x000001ff, 0x00000fff, 0xfefff800, 0x07ffffff, 0x3f3fffff,
     2282          0xaaff3f3f, 0x3fffffff, 0x5fdfffff, 0x0fcf1fdc, 0x1fdc1fff,
     2283          0x3e2ffc84, 0xf21fbd50, 0x000043e0, 0x00000018, 0xffff7fff,
     2284          0x7fffffff, 0xcfffffff, 0x000c781f, 0x000020bf, 0x00003fff,
     2285          0x0fffffff, 0xfffffffc, 0xfffeffff, 0xffff78ff, 0x00ff7fff,
     2286          0x04000000, 0xffff0000, 0x07ffffff, 0xffff003f, 0x00f8007f,
     2287          0x07fffffe, 0x07fffffe, 0x0000ffff, 0xffff0000, 0xff0fffff,
     2288          0x0fffffff, 0x0007ffff, 0x0007ffff, 0xffdfffff, 0xdfffffff,
     2289          0xebffde64, 0xffffffef, 0xdfdfe7bf, 0x7bffffff, 0xfffdfc5f,
     2290          0xffffff3f, 0xf7fffffd, 0xf7ffffff, 0xffdfffff, 0xffdfffff,
     2291          0xffff7fff, 0xffff7fff, 0xfffffdff, 0xfffffdff, 0x00000ff7,
     2292          0x0000000f}};
    19912293    /** Code Point Ranges for M
    19922294    [768, 879], [1155, 1161], [1425, 1469], [1471, 1471], [1473, 1474],
     
    24382740         {0x00000001, 0x00000001, 0x00000001, 0x000007ff, 0x00008300,
    24392741          0x80000000, 0x00000001}};
    2440     /** Code Point Ranges for C
    2441     [0, 31], [127, 159], [173, 173], [888, 889], [896, 899], [907, 907],
    2442     [909, 909], [930, 930], [1328, 1328], [1367, 1368], [1376, 1376],
    2443     [1416, 1416], [1419, 1420], [1424, 1424], [1480, 1487], [1515, 1519],
    2444     [1525, 1541], [1564, 1565], [1757, 1757], [1806, 1807], [1867, 1868],
    2445     [1970, 1983], [2043, 2047], [2094, 2095], [2111, 2111], [2140, 2141],
    2446     [2143, 2207], [2229, 2229], [2238, 2259], [2274, 2274], [2436, 2436],
    2447     [2445, 2446], [2449, 2450], [2473, 2473], [2481, 2481], [2483, 2485],
    2448     [2490, 2491], [2501, 2502], [2505, 2506], [2511, 2518], [2520, 2523],
    2449     [2526, 2526], [2532, 2533], [2556, 2560], [2564, 2564], [2571, 2574],
    2450     [2577, 2578], [2601, 2601], [2609, 2609], [2612, 2612], [2615, 2615],
    2451     [2618, 2619], [2621, 2621], [2627, 2630], [2633, 2634], [2638, 2640],
    2452     [2642, 2648], [2653, 2653], [2655, 2661], [2678, 2688], [2692, 2692],
    2453     [2702, 2702], [2706, 2706], [2729, 2729], [2737, 2737], [2740, 2740],
    2454     [2746, 2747], [2758, 2758], [2762, 2762], [2766, 2767], [2769, 2783],
    2455     [2788, 2789], [2802, 2808], [2810, 2816], [2820, 2820], [2829, 2830],
    2456     [2833, 2834], [2857, 2857], [2865, 2865], [2868, 2868], [2874, 2875],
    2457     [2885, 2886], [2889, 2890], [2894, 2901], [2904, 2907], [2910, 2910],
    2458     [2916, 2917], [2936, 2945], [2948, 2948], [2955, 2957], [2961, 2961],
    2459     [2966, 2968], [2971, 2971], [2973, 2973], [2976, 2978], [2981, 2983],
    2460     [2987, 2989], [3002, 3005], [3011, 3013], [3017, 3017], [3022, 3023],
    2461     [3025, 3030], [3032, 3045], [3067, 3071], [3076, 3076], [3085, 3085],
    2462     [3089, 3089], [3113, 3113], [3130, 3132], [3141, 3141], [3145, 3145],
    2463     [3150, 3156], [3159, 3159], [3163, 3167], [3172, 3173], [3184, 3191],
    2464     [3204, 3204], [3213, 3213], [3217, 3217], [3241, 3241], [3252, 3252],
    2465     [3258, 3259], [3269, 3269], [3273, 3273], [3278, 3284], [3287, 3293],
    2466     [3295, 3295], [3300, 3301], [3312, 3312], [3315, 3328], [3332, 3332],
    2467     [3341, 3341], [3345, 3345], [3387, 3388], [3397, 3397], [3401, 3401],
    2468     [3408, 3411], [3428, 3429], [3456, 3457], [3460, 3460], [3479, 3481],
    2469     [3506, 3506], [3516, 3516], [3518, 3519], [3527, 3529], [3531, 3534],
    2470     [3541, 3541], [3543, 3543], [3552, 3557], [3568, 3569], [3573, 3584],
    2471     [3643, 3646], [3676, 3712], [3715, 3715], [3717, 3718], [3721, 3721],
    2472     [3723, 3724], [3726, 3731], [3736, 3736], [3744, 3744], [3748, 3748],
    2473     [3750, 3750], [3752, 3753], [3756, 3756], [3770, 3770], [3774, 3775],
    2474     [3781, 3781], [3783, 3783], [3790, 3791], [3802, 3803], [3808, 3839],
    2475     [3912, 3912], [3949, 3952], [3992, 3992], [4029, 4029], [4045, 4045],
    2476     [4059, 4095], [4294, 4294], [4296, 4300], [4302, 4303], [4681, 4681],
    2477     [4686, 4687], [4695, 4695], [4697, 4697], [4702, 4703], [4745, 4745],
    2478     [4750, 4751], [4785, 4785], [4790, 4791], [4799, 4799], [4801, 4801],
    2479     [4806, 4807], [4823, 4823], [4881, 4881], [4886, 4887], [4955, 4956],
    2480     [4989, 4991], [5018, 5023], [5110, 5111], [5118, 5119], [5789, 5791],
    2481     [5881, 5887], [5901, 5901], [5909, 5919], [5943, 5951], [5972, 5983],
    2482     [5997, 5997], [6001, 6001], [6004, 6015], [6110, 6111], [6122, 6127],
    2483     [6138, 6143], [6158, 6159], [6170, 6175], [6264, 6271], [6315, 6319],
    2484     [6390, 6399], [6431, 6431], [6444, 6447], [6460, 6463], [6465, 6467],
    2485     [6510, 6511], [6517, 6527], [6572, 6575], [6602, 6607], [6619, 6621],
    2486     [6684, 6685], [6751, 6751], [6781, 6782], [6794, 6799], [6810, 6815],
    2487     [6830, 6831], [6847, 6911], [6988, 6991], [7037, 7039], [7156, 7163],
    2488     [7224, 7226], [7242, 7244], [7305, 7359], [7368, 7375], [7415, 7415],
    2489     [7418, 7423], [7670, 7674], [7958, 7959], [7966, 7967], [8006, 8007],
    2490     [8014, 8015], [8024, 8024], [8026, 8026], [8028, 8028], [8030, 8030],
    2491     [8062, 8063], [8117, 8117], [8133, 8133], [8148, 8149], [8156, 8156],
    2492     [8176, 8177], [8181, 8181], [8191, 8191], [8203, 8207], [8234, 8238],
    2493     [8288, 8303], [8306, 8307], [8335, 8335], [8349, 8351], [8383, 8399],
    2494     [8433, 8447], [8588, 8591], [9215, 9215], [9255, 9279], [9291, 9311],
    2495     [11124, 11125], [11158, 11159], [11194, 11196], [11209, 11209],
    2496     [11218, 11243], [11248, 11263], [11311, 11311], [11359, 11359],
    2497     [11508, 11512], [11558, 11558], [11560, 11564], [11566, 11567],
    2498     [11624, 11630], [11633, 11646], [11671, 11679], [11687, 11687],
    2499     [11695, 11695], [11703, 11703], [11711, 11711], [11719, 11719],
    2500     [11727, 11727], [11735, 11735], [11743, 11743], [11845, 11903],
    2501     [11930, 11930], [12020, 12031], [12246, 12271], [12284, 12287],
    2502     [12352, 12352], [12439, 12440], [12544, 12548], [12590, 12592],
    2503     [12687, 12687], [12731, 12735], [12772, 12783], [12831, 12831],
    2504     [13055, 13055], [19894, 19903], [40918, 40959], [42125, 42127],
    2505     [42183, 42191], [42540, 42559], [42744, 42751], [42927, 42927],
    2506     [42936, 42998], [43052, 43055], [43066, 43071], [43128, 43135],
    2507     [43206, 43213], [43226, 43231], [43262, 43263], [43348, 43358],
    2508     [43389, 43391], [43470, 43470], [43482, 43485], [43519, 43519],
    2509     [43575, 43583], [43598, 43599], [43610, 43611], [43715, 43738],
    2510     [43767, 43776], [43783, 43784], [43791, 43792], [43799, 43807],
    2511     [43815, 43815], [43823, 43823], [43878, 43887], [44014, 44015],
    2512     [44026, 44031], [55204, 55215], [55239, 55242], [55292, 63743],
    2513     [64110, 64111], [64218, 64255], [64263, 64274], [64280, 64284],
    2514     [64311, 64311], [64317, 64317], [64319, 64319], [64322, 64322],
    2515     [64325, 64325], [64450, 64466], [64832, 64847], [64912, 64913],
    2516     [64968, 65007], [65022, 65023], [65050, 65055], [65107, 65107],
    2517     [65127, 65127], [65132, 65135], [65141, 65141], [65277, 65280],
    2518     [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497],
    2519     [65501, 65503], [65511, 65511], [65519, 65531], [65534, 65535],
    2520     [65548, 65548], [65575, 65575], [65595, 65595], [65598, 65598],
    2521     [65614, 65615], [65630, 65663], [65787, 65791], [65795, 65798],
    2522     [65844, 65846], [65935, 65935], [65948, 65951], [65953, 65999],
    2523     [66046, 66175], [66205, 66207], [66257, 66271], [66300, 66303],
    2524     [66340, 66351], [66379, 66383], [66427, 66431], [66462, 66462],
    2525     [66500, 66503], [66518, 66559], [66718, 66719], [66730, 66735],
    2526     [66772, 66775], [66812, 66815], [66856, 66863], [66916, 66926],
    2527     [66928, 67071], [67383, 67391], [67414, 67423], [67432, 67583],
    2528     [67590, 67591], [67593, 67593], [67638, 67638], [67641, 67643],
    2529     [67645, 67646], [67670, 67670], [67743, 67750], [67760, 67807],
    2530     [67827, 67827], [67830, 67834], [67868, 67870], [67898, 67902],
    2531     [67904, 67967], [68024, 68027], [68048, 68049], [68100, 68100],
    2532     [68103, 68107], [68116, 68116], [68120, 68120], [68148, 68151],
    2533     [68155, 68158], [68168, 68175], [68185, 68191], [68256, 68287],
    2534     [68327, 68330], [68343, 68351], [68406, 68408], [68438, 68439],
    2535     [68467, 68471], [68498, 68504], [68509, 68520], [68528, 68607],
    2536     [68681, 68735], [68787, 68799], [68851, 68857], [68864, 69215],
    2537     [69247, 69631], [69710, 69713], [69744, 69758], [69821, 69821],
    2538     [69826, 69839], [69865, 69871], [69882, 69887], [69941, 69941],
    2539     [69956, 69967], [70007, 70015], [70094, 70095], [70112, 70112],
    2540     [70133, 70143], [70162, 70162], [70207, 70271], [70279, 70279],
    2541     [70281, 70281], [70286, 70286], [70302, 70302], [70314, 70319],
    2542     [70379, 70383], [70394, 70399], [70404, 70404], [70413, 70414],
    2543     [70417, 70418], [70441, 70441], [70449, 70449], [70452, 70452],
    2544     [70458, 70459], [70469, 70470], [70473, 70474], [70478, 70479],
    2545     [70481, 70486], [70488, 70492], [70500, 70501], [70509, 70511],
    2546     [70517, 70655], [70746, 70746], [70748, 70748], [70750, 70783],
    2547     [70856, 70863], [70874, 71039], [71094, 71095], [71134, 71167],
    2548     [71237, 71247], [71258, 71263], [71277, 71295], [71352, 71359],
    2549     [71370, 71423], [71450, 71452], [71468, 71471], [71488, 71839],
    2550     [71923, 71934], [71936, 72383], [72441, 72703], [72713, 72713],
    2551     [72759, 72759], [72774, 72783], [72813, 72815], [72848, 72849],
    2552     [72872, 72872], [72887, 73727], [74650, 74751], [74863, 74863],
    2553     [74869, 74879], [75076, 77823], [78895, 82943], [83527, 92159],
    2554     [92729, 92735], [92767, 92767], [92778, 92781], [92784, 92879],
    2555     [92910, 92911], [92918, 92927], [92998, 93007], [93018, 93018],
    2556     [93026, 93026], [93048, 93052], [93072, 93951], [94021, 94031],
    2557     [94079, 94094], [94112, 94175], [94177, 94207], [100333, 100351],
    2558     [101107, 110591], [110594, 113663], [113771, 113775], [113789, 113791],
    2559     [113801, 113807], [113818, 113819], [113824, 118783], [119030, 119039],
    2560     [119079, 119080], [119155, 119162], [119273, 119295], [119366, 119551],
    2561     [119639, 119647], [119666, 119807], [119893, 119893], [119965, 119965],
    2562     [119968, 119969], [119971, 119972], [119975, 119976], [119981, 119981],
    2563     [119994, 119994], [119996, 119996], [120004, 120004], [120070, 120070],
    2564     [120075, 120076], [120085, 120085], [120093, 120093], [120122, 120122],
    2565     [120127, 120127], [120133, 120133], [120135, 120137], [120145, 120145],
    2566     [120486, 120487], [120780, 120781], [121484, 121498], [121504, 121504],
    2567     [121520, 122879], [122887, 122887], [122905, 122906], [122914, 122914],
    2568     [122917, 122917], [122923, 124927], [125125, 125126], [125143, 125183],
    2569     [125259, 125263], [125274, 125277], [125280, 126463], [126468, 126468],
    2570     [126496, 126496], [126499, 126499], [126501, 126502], [126504, 126504],
    2571     [126515, 126515], [126520, 126520], [126522, 126522], [126524, 126529],
    2572     [126531, 126534], [126536, 126536], [126538, 126538], [126540, 126540],
    2573     [126544, 126544], [126547, 126547], [126549, 126550], [126552, 126552],
    2574     [126554, 126554], [126556, 126556], [126558, 126558], [126560, 126560],
    2575     [126563, 126563], [126565, 126566], [126571, 126571], [126579, 126579],
    2576     [126584, 126584], [126589, 126589], [126591, 126591], [126602, 126602],
    2577     [126620, 126624], [126628, 126628], [126634, 126634], [126652, 126703],
    2578     [126706, 126975], [127020, 127023], [127124, 127135], [127151, 127152],
    2579     [127168, 127168], [127184, 127184], [127222, 127231], [127245, 127247],
    2580     [127279, 127279], [127340, 127343], [127405, 127461], [127491, 127503],
    2581     [127548, 127551], [127561, 127567], [127570, 127743], [128723, 128735],
    2582     [128749, 128751], [128759, 128767], [128884, 128895], [128981, 129023],
    2583     [129036, 129039], [129096, 129103], [129114, 129119], [129160, 129167],
    2584     [129198, 129295], [129311, 129311], [129320, 129327], [129329, 129330],
    2585     [129343, 129343], [129356, 129359], [129375, 129407], [129426, 129471],
    2586     [129473, 131071], [173783, 173823], [177973, 177983], [178206, 178207],
    2587     [183970, 194559], [195102, 917759], [918000, 1114111]**/
    2588     const UnicodeSet c_Set
    2589         {{{Full, 1}, {Empty, 2}, {Mixed, 1}, {Full, 1}, {Mixed, 1},
    2590           {Empty, 21}, {Mixed, 3}, {Empty, 11}, {Mixed, 4}, {Empty, 1},
    2591           {Mixed, 3}, {Empty, 5}, {Mixed, 1}, {Empty, 1}, {Mixed, 1},
    2592           {Empty, 1}, {Mixed, 1}, {Empty, 2}, {Mixed, 1}, {Empty, 1},
    2593           {Mixed, 1}, {Empty, 1}, {Mixed, 2}, {Full, 2}, {Mixed, 3},
    2594           {Empty, 4}, {Mixed, 39}, {Full, 1}, {Mixed, 3}, {Full, 1},
    2595           {Empty, 2}, {Mixed, 5}, {Full, 1}, {Empty, 6}, {Mixed, 1},
    2596           {Empty, 11}, {Mixed, 1}, {Empty, 1}, {Mixed, 3}, {Empty, 1},
    2597           {Mixed, 1}, {Empty, 1}, {Mixed, 3}, {Empty, 2}, {Mixed, 1},
    2598           {Empty, 20}, {Mixed, 1}, {Empty, 2}, {Mixed, 5}, {Empty, 2},
    2599           {Mixed, 3}, {Empty, 2}, {Mixed, 1}, {Empty, 1}, {Mixed, 1},
    2600           {Empty, 1}, {Mixed, 5}, {Empty, 1}, {Mixed, 2}, {Empty, 1},
    2601           {Mixed, 1}, {Empty, 1}, {Mixed, 4}, {Full, 2}, {Empty, 2},
    2602           {Mixed, 2}, {Empty, 3}, {Mixed, 1}, {Empty, 1}, {Mixed, 2},
    2603           {Empty, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 2}, {Empty, 7},
    2604           {Mixed, 1}, {Empty, 8}, {Mixed, 1}, {Empty, 1}, {Mixed, 2},
    2605           {Empty, 1}, {Mixed, 5}, {Empty, 1}, {Mixed, 5}, {Empty, 4},
    2606           {Mixed, 1}, {Empty, 18}, {Mixed, 1}, {Empty, 1}, {Mixed, 2},
    2607           {Empty, 56}, {Mixed, 5}, {Empty, 1}, {Mixed, 2}, {Empty, 4},
    2608           {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Empty, 1}, {Mixed, 4},
    2609           {Empty, 3}, {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Empty, 2},
    2610           {Mixed, 1}, {Empty, 6}, {Mixed, 2}, {Empty, 2}, {Mixed, 1},
    2611           {Empty, 1}, {Mixed, 1}, {Empty, 3}, {Mixed, 2}, {Empty, 2},
    2612           {Mixed, 2}, {Empty, 1}, {Mixed, 2}, {Empty, 6}, {Mixed, 1},
    2613           {Empty, 213}, {Mixed, 1}, {Empty, 656}, {Mixed, 1}, {Full, 1},
    2614           {Empty, 36}, {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Empty, 10},
    2615           {Mixed, 1}, {Empty, 5}, {Mixed, 1}, {Empty, 5}, {Mixed, 1},
    2616           {Full, 1}, {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Empty, 1},
    2617           {Mixed, 1}, {Empty, 2}, {Mixed, 2}, {Empty, 2}, {Mixed, 2},
    2618           {Empty, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 2}, {Empty, 3},
    2619           {Mixed, 4}, {Empty, 1}, {Mixed, 1}, {Empty, 3}, {Mixed, 1},
    2620           {Empty, 349}, {Mixed, 3}, {Full, 264}, {Empty, 11}, {Mixed, 1},
    2621           {Empty, 2}, {Mixed, 1}, {Full, 1}, {Mixed, 3}, {Empty, 3},
    2622           {Mixed, 1}, {Empty, 11}, {Mixed, 1}, {Empty, 1}, {Mixed, 1},
    2623           {Empty, 1}, {Mixed, 3}, {Empty, 1}, {Mixed, 2}, {Empty, 3},
    2624           {Mixed, 2}, {Empty, 4}, {Mixed, 6}, {Full, 1}, {Empty, 3},
    2625           {Mixed, 3}, {Empty, 2}, {Mixed, 4}, {Full, 4}, {Mixed, 1},
    2626           {Empty, 1}, {Mixed, 2}, {Empty, 1}, {Mixed, 4}, {Empty, 1},
    2627           {Mixed, 1}, {Full, 1}, {Empty, 4}, {Mixed, 4}, {Empty, 1},
    2628           {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Full, 4}, {Empty, 9},
    2629           {Mixed, 3}, {Full, 4}, {Mixed, 3}, {Empty, 1}, {Mixed, 2},
    2630           {Full, 1}, {Mixed, 3}, {Full, 2}, {Empty, 1}, {Mixed, 2},
    2631           {Empty, 1}, {Mixed, 3}, {Empty, 2}, {Full, 1}, {Empty, 1},
    2632           {Mixed, 1}, {Empty, 1}, {Mixed, 5}, {Full, 2}, {Empty, 2},
    2633           {Mixed, 1}, {Full, 1}, {Empty, 1}, {Mixed, 1}, {Empty, 1},
    2634           {Mixed, 1}, {Full, 11}, {Mixed, 1}, {Full, 12}, {Empty, 2},
    2635           {Mixed, 2}, {Empty, 1}, {Mixed, 3}, {Empty, 1}, {Mixed, 3},
    2636           {Empty, 2}, {Mixed, 4}, {Full, 2}, {Mixed, 2}, {Empty, 1},
    2637           {Mixed, 5}, {Full, 4}, {Empty, 2}, {Mixed, 1}, {Full, 1},
    2638           {Empty, 2}, {Mixed, 1}, {Full, 5}, {Empty, 1}, {Mixed, 2},
    2639           {Full, 1}, {Empty, 2}, {Mixed, 2}, {Empty, 1}, {Mixed, 2},
    2640           {Full, 1}, {Mixed, 2}, {Full, 11}, {Empty, 2}, {Mixed, 1},
    2641           {Full, 14}, {Empty, 1}, {Mixed, 1}, {Full, 8}, {Mixed, 6},
    2642           {Full, 26}, {Empty, 28}, {Mixed, 1}, {Full, 3}, {Empty, 3},
    2643           {Mixed, 1}, {Empty, 6}, {Mixed, 1}, {Full, 85}, {Empty, 33},
    2644           {Mixed, 1}, {Full, 126}, {Empty, 18}, {Mixed, 1}, {Full, 269},
    2645           {Empty, 17}, {Mixed, 3}, {Full, 2}, {Mixed, 2}, {Empty, 2},
    2646           {Mixed, 3}, {Full, 27}, {Empty, 2}, {Mixed, 3}, {Full, 2},
    2647           {Mixed, 1}, {Empty, 191}, {Mixed, 1}, {Empty, 23}, {Mixed, 1},
    2648           {Full, 296}, {Mixed, 1}, {Full, 95}, {Empty, 3}, {Mixed, 2},
    2649           {Full, 155}, {Empty, 7}, {Mixed, 1}, {Empty, 1}, {Mixed, 1},
    2650           {Empty, 1}, {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 2},
    2651           {Mixed, 1}, {Full, 5}, {Empty, 2}, {Mixed, 2}, {Full, 4},
    2652           {Empty, 2}, {Mixed, 1}, {Empty, 1}, {Mixed, 3}, {Empty, 1},
    2653           {Mixed, 3}, {Empty, 10}, {Mixed, 1}, {Empty, 8}, {Mixed, 1},
    2654           {Empty, 21}, {Mixed, 2}, {Full, 42}, {Mixed, 2}, {Full, 62},
    2655           {Empty, 6}, {Mixed, 1}, {Full, 1}, {Empty, 2}, {Mixed, 1},
    2656           {Full, 37}, {Mixed, 6}, {Full, 1}, {Mixed, 1}, {Full, 8},
    2657           {Empty, 1}, {Mixed, 1}, {Empty, 2}, {Mixed, 6}, {Empty, 1},
    2658           {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 4},
    2659           {Full, 5}, {Empty, 30}, {Mixed, 2}, {Empty, 3}, {Mixed, 1},
    2660           {Empty, 2}, {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Empty, 1},
    2661           {Mixed, 1}, {Empty, 1}, {Mixed, 2}, {Full, 2}, {Mixed, 3},
    2662           {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 1}, {Full, 49},
    2663           {Empty, 1334}, {Mixed, 1}, {Full, 1}, {Empty, 129}, {Mixed, 1},
    2664           {Empty, 6}, {Mixed, 1}, {Empty, 180}, {Mixed, 1}, {Full, 330},
    2665           {Empty, 16}, {Mixed, 1}, {Full, 22583}, {Empty, 7}, {Mixed, 1},
    2666           {Full, 6128}},
    2667          {0x80000000, 0x00002000, 0x03000000, 0x0000280f, 0x00000004,
    2668           0x00010000, 0x01800000, 0x00000001, 0x00011900, 0x0000ff00,
    2669           0xffe0f800, 0x3000003f, 0x20000000, 0x0000c000, 0x00001800,
    2670           0xfffc0000, 0xf8000000, 0x8000c000, 0xb0000000, 0xc0200000,
    2671           0x000fffff, 0x00000004, 0x00066010, 0x0c3a0200, 0x4f7f8660,
    2672           0xf0000030, 0x00067811, 0x2c920200, 0xa1fdc678, 0xffc0003f,
    2673           0x00044011, 0x0c120200, 0xfffec440, 0xfdfc0030, 0x00066011,
    2674           0x0c120200, 0x4f3fc660, 0xff000030, 0x29c23813, 0x3c0038e7,
    2675           0xff7ec238, 0xf800003f, 0x00022010, 0x1c000200, 0xf89fc220,
    2676           0x00ff0030, 0x00022010, 0x0c100200, 0xbf9fc220, 0xfff90030,
    2677           0x00022011, 0x18000000, 0x000f0220, 0x00000030, 0x03800013,
    2678           0xd0040000, 0x00a07b80, 0xffe3003f, 0x00000001, 0x78000000,
    2679           0xf0000000, 0x010fda69, 0xc4001351, 0x0c00c0a0, 0x00000100,
    2680           0x0001e000, 0x01000000, 0x20000000, 0xf8002000, 0x0000df40,
    2681           0xc280c200, 0x0000c200, 0x80c20000, 0x008000c2, 0x00c20000,
    2682           0x18000000, 0xe0000000, 0xfc000000, 0xc0c00000, 0xe0000000,
    2683           0xfe000000, 0xffe02000, 0xff800000, 0xfff00000, 0xfff22000,
    2684           0xc0000000, 0xfc00fc00, 0xfc00c000, 0xff000000, 0x0000f800,
    2685           0xffc00000, 0x80000000, 0xf000f000, 0x0000000e, 0xffe0c000,
    2686           0x0000f000, 0x3800fc00, 0x30000000, 0x80000000, 0x60000000,
    2687           0xfc00fc00, 0x8000c000, 0x0000f000, 0xe0000000, 0x0ff00000,
    2688           0x07000000, 0x00001c00, 0xfffffe00, 0x0000ff00, 0xfc800000,
    2689           0x07c00000, 0xc0c00000, 0x5500c0c0, 0xc0000000, 0x00200000,
    2690           0x10300020, 0x80230000, 0x0000f800, 0x00007c00, 0x000cffff,
    2691           0xe0008000, 0x80000000, 0x0000ffff, 0xfffe0000, 0x0000f000,
    2692           0x80000000, 0xffffff80, 0xfffff800, 0x00300000, 0x00c00000,
    2693           0x1c000000, 0xfffc0200, 0xffff0fff, 0x00008000, 0x80000000,
    2694           0x01f00000, 0x0000df40, 0x7ffe7f00, 0xff800000, 0x80808080,
    2695           0x80808080, 0xffffffe0, 0x04000000, 0xfff00000, 0xffc00000,
    2696           0xf000ffff, 0x00000001, 0x01800000, 0x0000001f, 0x0001c000,
    2697           0x00008000, 0xf8000000, 0x0000fff0, 0x80000000, 0x80000000,
    2698           0xffc00000, 0xffc00000, 0x0000e000, 0x0000ff80, 0xfffff000,
    2699           0xff000000, 0xff008000, 0x007fffff, 0xfc00f000, 0xff000000,
    2700           0xfc003fc0, 0xc0000000, 0x7ff00000, 0xe0000000, 0x3c004000,
    2701           0x80000000, 0xff800000, 0x0c00c000, 0x07fffff8, 0xff800000,
    2702           0xff818181, 0x00008080, 0x0000ffc0, 0xfc00c000, 0x0000fff0,
    2703           0x00000780, 0xf0000000, 0x0000c000, 0xfc000000, 0x1f07ff80,
    2704           0xa0800000, 0x00000024, 0x0007fffc, 0x0000ffff, 0x00030000,
    2705           0xffffff00, 0xc000ffff, 0xfc000000, 0x00080000, 0x0020f080,
    2706           0xe0000000, 0x00000001, 0x80000000, 0xe3030303, 0xcfff8080,
    2707           0x00001000, 0x48000080, 0xc000c000, 0xf8000000, 0x00000078,
    2708           0x00700000, 0xf0008000, 0xfffffffe, 0x0000ffff, 0xc0000000,
    2709           0xe0000000, 0xfffe0000, 0xf0000000, 0x0000fff0, 0x0000f800,
    2710           0xf8000000, 0x40000000, 0xffc000f0, 0xc0000000, 0x0000fc00,
    2711           0x00f00000, 0xf0000000, 0x0000ff00, 0xffff7ff0, 0xff800000,
    2712           0xffc00000, 0xffffff00, 0x000002c0, 0x6e400000, 0x00400000,
    2713           0x80000000, 0xffff007f, 0x07c80000, 0x70000000, 0x7c000000,
    2714           0x0f000000, 0x00030000, 0x01100f90, 0x78f00000, 0xfe00ff00,
    2715           0xff800780, 0x01c00000, 0x00c00000, 0x00f80000, 0xe1fc0000,
    2716           0xffff01ff, 0xfffffe00, 0xfff80000, 0x03f80000, 0x80000000,
    2717           0x0003c000, 0x7fff0000, 0x20000000, 0x0000fffc, 0xfc00fe00,
    2718           0x00200000, 0x0000fff0, 0xff800000, 0x0000c000, 0xffe00001,
    2719           0x00040000, 0x80000000, 0x40004280, 0x0000fc00, 0xfc00f800,
    2720           0x00066010, 0x0c120200, 0x1f7ec660, 0xffe0e030, 0xd4000000,
    2721           0xfc00ff00, 0x00c00000, 0xc0000000, 0xfc00ffe0, 0xffffe000,
    2722           0xff000000, 0xfffffc00, 0x1c000000, 0x0000f000, 0x7ff80000,
    2723           0xfe000000, 0x00000200, 0x00800000, 0x0000ffc0, 0x0000e000,
    2724           0x00030000, 0xff800100, 0xfc000000, 0xffe08000, 0xfffffff0,
    2725           0xffff8000, 0xffffff80, 0xfe000000, 0x80000000, 0xffff3c00,
    2726           0x0000ffff, 0xffc0c000, 0x0400ffc0, 0x1f000004, 0xffff0000,
    2727           0x0000ffe0, 0x80000000, 0x00007fff, 0xfffffffe, 0xffffe000,
    2728           0xfff80000, 0xfffffffc, 0xe000f800, 0x0c00fe00, 0xffc00000,
    2729           0x00000180, 0x07f80000, 0xfffffe00, 0xffffffc0, 0xff800000,
    2730           0xfffc0000, 0x00200000, 0x20000000, 0x1400219b, 0x00000010,
    2731           0x20201840, 0x84000000, 0x000203a0, 0x000000c0, 0x00003000,
    2732           0x07fff000, 0xffff0001, 0x06000080, 0xfffff824, 0xff800060,
    2733           0x3c00f800, 0x00000010, 0xf5080169, 0x5569157b, 0xa1080869,
    2734           0xf0000400, 0xf0000411, 0xfffcffff, 0x0000f000, 0xfff00000,
    2735           0x00018000, 0x00010001, 0xffc00000, 0x0000e000, 0x00008000,
    2736           0x0000f000, 0xffffe000, 0x0000003f, 0x0000fff8, 0xf0000000,
    2737           0xfffcfe00, 0xfff80000, 0xff80e000, 0xfff00000, 0xffe00000,
    2738           0x0000f000, 0xfc00ff00, 0x0000ff00, 0xffffc000, 0x8000ffff,
    2739           0x8006ff00, 0x8000f000, 0xfffc0000, 0xfffffffe, 0xff800000,
    2740           0xffe00000, 0xc0000000, 0xfffffffc, 0xc0000000, 0xffff0000}};
    27412742    static EnumeratedPropertyObject property_object
    27422743        {gc,
     2744         GC_ns::independent_prop_values,
    27432745         GC_ns::enum_names,
    27442746         GC_ns::value_names,
     
    27482750        &zp_Set, &cc_Set, &cf_Set, &co_Set, &cs_Set, &pd_Set, &ps_Set,
    27492751        &pe_Set, &pc_Set, &po_Set, &sm_Set, &sc_Set, &sk_Set, &so_Set,
    2750         &pi_Set, &pf_Set, &lc_Set, &l_Set, &m_Set, &n_Set, &p_Set, &s_Set,
    2751         &z_Set, &c_Set
     2752        &pi_Set, &pf_Set, &c_Set, &l_Set, &lc_Set, &m_Set, &n_Set, &p_Set,
     2753        &s_Set, &z_Set
    27522754         }};
    27532755    }
  • icGREP/icgrep-devel/icgrep/UCD/DerivedJoiningGroup.h

    r5154 r5159  
    1414
    1515namespace UCD {
    16     namespace JG_ns {
     16  namespace JG_ns {
     17    const unsigned independent_prop_values = 89;
    1718    /** Code Point Ranges for No_Joining_Group
    1819    [0, 1567], [1569, 1569], [1600, 1600], [1611, 1645], [1648, 1648],
     
    503504    static EnumeratedPropertyObject property_object
    504505        {jg,
     506         JG_ns::independent_prop_values,
    505507         JG_ns::enum_names,
    506508         JG_ns::value_names,
  • icGREP/icgrep-devel/icgrep/UCD/DerivedJoiningType.h

    r5154 r5159  
    1414
    1515namespace UCD {
    16     namespace JT_ns {
     16  namespace JT_ns {
     17    const unsigned independent_prop_values = 6;
    1718    /** Code Point Ranges for U
    1819    [0, 172], [174, 767], [880, 1154], [1162, 1424], [1470, 1470],
     
    363364    static EnumeratedPropertyObject property_object
    364365        {jt,
     366         JT_ns::independent_prop_values,
    365367         JT_ns::enum_names,
    366368         JT_ns::value_names,
  • icGREP/icgrep-devel/icgrep/UCD/DerivedNumericType.h

    r5154 r5159  
    1414
    1515namespace UCD {
    16     namespace NT_ns {
     16  namespace NT_ns {
     17    const unsigned independent_prop_values = 4;
    1718    /** Code Point Ranges for None
    1819    [0, 47], [58, 177], [180, 184], [186, 187], [191, 1631], [1642, 1775],
     
    307308    static EnumeratedPropertyObject property_object
    308309        {nt,
     310         NT_ns::independent_prop_values,
    309311         NT_ns::enum_names,
    310312         NT_ns::value_names,
  • icGREP/icgrep-devel/icgrep/UCD/EastAsianWidth.h

    r5154 r5159  
    1414
    1515namespace UCD {
    16     namespace EA_ns {
     16  namespace EA_ns {
     17    const unsigned independent_prop_values = 6;
    1718    /** Code Point Ranges for N
    1819    [0, 31], [127, 160], [169, 169], [171, 171], [181, 181], [187, 187],
     
    276277    static EnumeratedPropertyObject property_object
    277278        {ea,
     279         EA_ns::independent_prop_values,
    278280         EA_ns::enum_names,
    279281         EA_ns::value_names,
  • icGREP/icgrep-devel/icgrep/UCD/GraphemeBreakProperty.h

    r5154 r5159  
    1414
    1515namespace UCD {
    16     namespace GCB_ns {
     16  namespace GCB_ns {
     17    const unsigned independent_prop_values = 18;
    1718    /** Code Point Ranges for XX
    1819    [32, 126], [160, 172], [174, 767], [880, 1154], [1162, 1424],
     
    829830    static EnumeratedPropertyObject property_object
    830831        {GCB,
     832         GCB_ns::independent_prop_values,
    831833         GCB_ns::enum_names,
    832834         GCB_ns::value_names,
  • icGREP/icgrep-devel/icgrep/UCD/HangulSyllableType.h

    r5154 r5159  
    1414
    1515namespace UCD {
    16     namespace HST_ns {
     16  namespace HST_ns {
     17    const unsigned independent_prop_values = 6;
    1718    /** Code Point Ranges for NA
    1819    [0, 4351], [4608, 43359], [43389, 44031], [55204, 55215],
     
    388389    static EnumeratedPropertyObject property_object
    389390        {hst,
     391         HST_ns::independent_prop_values,
    390392         HST_ns::enum_names,
    391393         HST_ns::value_names,
  • icGREP/icgrep-devel/icgrep/UCD/LineBreak.h

    r5154 r5159  
    1414
    1515namespace UCD {
    16     namespace LB_ns {
     16  namespace LB_ns {
     17    const unsigned independent_prop_values = 43;
    1718    /** Code Point Ranges for XX
    1819    [888, 889], [896, 899], [907, 907], [909, 909], [930, 930],
     
    16421643    static EnumeratedPropertyObject property_object
    16431644        {lb,
     1645         LB_ns::independent_prop_values,
    16441646         LB_ns::enum_names,
    16451647         LB_ns::value_names,
  • icGREP/icgrep-devel/icgrep/UCD/PropertyObjectTable.h

    r5145 r5159  
    2222#include "DerivedJoiningGroup.h"
    2323#include "DerivedJoiningType.h"
     24#include "DerivedNormalizationProps.h"
    2425#include "DerivedNumericType.h"
    2526#include "EastAsianWidth.h"
     
    4344    new UnsupportedPropertyObject(cjkCompatibilityVariant, PropertyObject::ClassTypeId::StringProperty),
    4445    new UnsupportedPropertyObject(dm, PropertyObject::ClassTypeId::StringProperty),
    45     new UnsupportedPropertyObject(FC_NFKC, PropertyObject::ClassTypeId::StringProperty),
     46    &FC_NFKC_ns::property_object,
    4647    new UnsupportedPropertyObject(lc, PropertyObject::ClassTypeId::StringProperty),
    47     new UnsupportedPropertyObject(NFKC_CF, PropertyObject::ClassTypeId::StringProperty),
     48    &NFKC_CF_ns::property_object,
    4849    new UnsupportedPropertyObject(scf, PropertyObject::ClassTypeId::CodepointProperty),
    4950    new UnsupportedPropertyObject(slc, PropertyObject::ClassTypeId::CodepointProperty),
     
    8788    &JT_ns::property_object,
    8889    &LB_ns::property_object,
    89     new UnsupportedPropertyObject(NFC_QC, PropertyObject::ClassTypeId::EnumeratedProperty),
    90     new UnsupportedPropertyObject(NFD_QC, PropertyObject::ClassTypeId::EnumeratedProperty),
    91     new UnsupportedPropertyObject(NFKC_QC, PropertyObject::ClassTypeId::EnumeratedProperty),
    92     new UnsupportedPropertyObject(NFKD_QC, PropertyObject::ClassTypeId::EnumeratedProperty),
     90    &NFC_QC_ns::property_object,
     91    &NFD_QC_ns::property_object,
     92    &NFKC_QC_ns::property_object,
     93    &NFKD_QC_ns::property_object,
    9394    &NT_ns::property_object,
    9495    &SB_ns::property_object,
     
    101102    new UnsupportedPropertyObject(CE, PropertyObject::ClassTypeId::BinaryProperty),
    102103    &CI_ns::property_object,
    103     new UnsupportedPropertyObject(Comp_Ex, PropertyObject::ClassTypeId::BinaryProperty),
     104    &COMP_EX_ns::property_object,
    104105    &CWCF_ns::property_object,
    105106    &CWCM_ns::property_object,
    106     new UnsupportedPropertyObject(CWKCF, PropertyObject::ClassTypeId::BinaryProperty),
     107    &CWKCF_ns::property_object,
    107108    &CWL_ns::property_object,
    108109    &CWT_ns::property_object,
     
    150151    &XIDC_ns::property_object,
    151152    &XIDS_ns::property_object,
    152     new UnsupportedPropertyObject(XO_NFC, PropertyObject::ClassTypeId::BinaryProperty),
    153     new UnsupportedPropertyObject(XO_NFD, PropertyObject::ClassTypeId::BinaryProperty),
    154     new UnsupportedPropertyObject(XO_NFKC, PropertyObject::ClassTypeId::BinaryProperty),
    155     new UnsupportedPropertyObject(XO_NFKD, PropertyObject::ClassTypeId::BinaryProperty)  }};
     153    &XO_NFC_ns::property_object,
     154    &XO_NFD_ns::property_object,
     155    &XO_NFKC_ns::property_object,
     156    &XO_NFKD_ns::property_object  }};
    156157}
    157158
  • icGREP/icgrep-devel/icgrep/UCD/PropertyObjects.cpp

    r5158 r5159  
    5353}
    5454
     55std::vector<UnicodeSet> & EnumeratedPropertyObject::GetEnumerationBasisSets() {
     56    // Return the previously computed vector of basis sets, if it exists.
     57    if (enumeration_basis_sets.size() > 0) return enumeration_basis_sets;
     58   
     59    // Otherwise compute and return.
     60    // Basis set i is the set of all codepoints whose numerical enumeration code e
     61    // has bit i set, i.e., (e >> i) & 1 == 1.
     62    unsigned basis_count = 1;
     63    while ((1 << basis_count) < independent_enum_count) basis_count++;
     64    for (unsigned i = 0; i < basis_count; i++) {
     65        enumeration_basis_sets.push_back(UnicodeSet());
     66        for (unsigned e = 0; e < independent_enum_count; e++) {
     67            if (((e >> i) & 1) == 0) {
     68                enumeration_basis_sets[i] = enumeration_basis_sets[i] + *property_value_sets[e];
     69            }
     70        }
     71    }
     72    return enumeration_basis_sets;
     73};
     74
     75   
    5576int EnumeratedPropertyObject::GetPropertyValueEnumCode(const std::string & value_spec) {
    5677    // The canonical full names are not stored in the precomputed alias map,
     
    7192}
    7293
    73 std::vector<UnicodeSet *> EnumeratedPropertyObject::GetEnumerationBasisSets() {
    74     // Basis set i is the set of all codepoints whose numerical enumeration code e
    75     // has bit i set, i.e., (e >> i) & 1 == 1.
    76     unsigned basis_count = 1;
    77     while ((1 << basis_count) < independent_enum_limit) basis_count++;
    78     std::vector<UnicodeSet *> basis_set;
    79     for (unsigned i == 0; i < basis_count; i++) {
    80         basis_set.push_back(new UnicodeSet());
    81         for (unsigned e = 0; e < independent_enum_limit; e++) {
    82             if (((e >> i) & 1) == 0) {
    83                 basis_set[i] = basis_set[i] + property_value_sets[e];
    84             }
    85         }
    86     }
    87 };
    88 
    89    
    90    
    9194PropertyObject::iterator ExtensionPropertyObject::begin() const {
    9295    if (const auto * obj = dyn_cast<EnumeratedPropertyObject>(property_object_table[base_property])) {
  • icGREP/icgrep-devel/icgrep/UCD/PropertyObjects.h

    r5158 r5159  
    7272
    7373    EnumeratedPropertyObject(UCD::property_t p,
     74                             const unsigned independent_enums,
    7475                             const std::vector<std::string> & enum_names,
    7576                             const std::vector<std::string> & names,
     
    7778                             std::vector<const UnicodeSet *> && sets)
    7879    : PropertyObject(p, ClassTypeId::EnumeratedProperty)
     80    , independent_enum_count(independent_enums)
    7981    , property_value_enum_names(enum_names)
    8082    , property_value_full_names(names)
     
    8890    const UnicodeSet & GetCodepointSet(const std::string & value_spec);
    8991    const UnicodeSet & GetCodepointSet(const int property_enum_val) const;
    90     std::vector<UnicodeSet *> GetEnumerationBasisSets();
     92    std::vector<UnicodeSet> & GetEnumerationBasisSets();
    9193    const std::string & GetValueEnumName(const int property_enum_val) const {return property_value_enum_names[property_enum_val]; }
    9294    const std::string & GetValueFullName(const int property_enum_val) const {return property_value_full_names[property_enum_val]; }
     
    101103
    102104private:
     105    const unsigned independent_enum_count;
    103106    const std::vector<std::string> & property_value_enum_names;  // never changes
    104107    const std::vector<std::string> & property_value_full_names;  // never changes
     
    106109    bool uninitialized; // full names must be added dynamically.
    107110    const std::vector<const UnicodeSet *> property_value_sets;
     111    std::vector<UnicodeSet> enumeration_basis_sets;
    108112};
    109113
  • icGREP/icgrep-devel/icgrep/UCD/PropertyValueAliases.h

    r5154 r5159  
    581581        enum value_t {
    582582            Cn, Lu, Ll, Lt, Lm, Lo, Mn, Me, Mc, Nd, Nl, No, Zs, Zl, Zp, Cc,
    583             Cf, Co, Cs, Pd, Ps, Pe, Pc, Po, Sm, Sc, Sk, So, Pi, Pf, LC, L,
    584             M, N, P, S, Z, C};
     583            Cf, Co, Cs, Pd, Ps, Pe, Pc, Po, Sm, Sc, Sk, So, Pi, Pf, C, L,
     584            LC, M, N, P, S, Z};
    585585        const static std::vector<std::string> enum_names = {
    586586            "Cn", "Lu", "Ll", "Lt", "Lm", "Lo", "Mn", "Me", "Mc", "Nd",
    587587            "Nl", "No", "Zs", "Zl", "Zp", "Cc", "Cf", "Co", "Cs", "Pd",
    588             "Ps", "Pe", "Pc", "Po", "Sm", "Sc", "Sk", "So", "Pi", "Pf",
    589             "LC", "L", "M", "N", "P", "S", "Z", "C"};
     588            "Ps", "Pe", "Pc", "Po", "Sm", "Sc", "Sk", "So", "Pi", "Pf", "C",
     589            "L", "LC", "M", "N", "P", "S", "Z"};
    590590        const static std::vector<std::string> value_names = {
    591591            "Unassigned", "Uppercase_Letter", "Lowercase_Letter",
     
    598598            "Connector_Punctuation", "Other_Punctuation", "Math_Symbol",
    599599            "Currency_Symbol", "Modifier_Symbol", "Other_Symbol",
    600             "Initial_Punctuation", "Final_Punctuation", "Cased_Letter",
    601             "Letter", "Mark", "Number", "Punctuation", "Symbol",
    602             "Separator", "Other"};
     600            "Initial_Punctuation", "Final_Punctuation", "Other", "Letter",
     601            "Cased_Letter", "Mark", "Number", "Punctuation", "Symbol",
     602            "Separator"};
    603603        static std::unordered_map<std::string, int> aliases_only_map {{
    604604            {"cntrl", GC_ns::Cc}, {"combiningmark", GC_ns::M},
  • icGREP/icgrep-devel/icgrep/UCD/Scripts.h

    r5154 r5159  
    1414
    1515namespace UCD {
    16     namespace SC_ns {
     16  namespace SC_ns {
     17    const unsigned independent_prop_values = 138;
    1718    /** Code Point Ranges for Zzzz
    1819    [888, 889], [896, 899], [907, 907], [909, 909], [930, 930],
     
    12691270    static EnumeratedPropertyObject property_object
    12701271        {sc,
     1272         SC_ns::independent_prop_values,
    12711273         SC_ns::enum_names,
    12721274         SC_ns::value_names,
  • icGREP/icgrep-devel/icgrep/UCD/SentenceBreakProperty.h

    r5154 r5159  
    1414
    1515namespace UCD {
    16     namespace SB_ns {
     16  namespace SB_ns {
     17    const unsigned independent_prop_values = 15;
    1718    /** Code Point Ranges for XX
    1819    [0, 8], [14, 31], [35, 38], [42, 43], [47, 47], [59, 62], [64, 64],
     
    12141215    static EnumeratedPropertyObject property_object
    12151216        {SB,
     1217         SB_ns::independent_prop_values,
    12161218         SB_ns::enum_names,
    12171219         SB_ns::value_names,
  • icGREP/icgrep-devel/icgrep/UCD/WordBreakProperty.h

    r5154 r5159  
    1414
    1515namespace UCD {
    16     namespace WB_ns {
     16  namespace WB_ns {
     17    const unsigned independent_prop_values = 22;
    1718    /** Code Point Ranges for XX
    1819    [0, 9], [14, 33], [35, 38], [40, 43], [45, 45], [47, 47], [60, 64],
     
    883884    static EnumeratedPropertyObject property_object
    884885        {WB,
     886         WB_ns::independent_prop_values,
    885887         WB_ns::enum_names,
    886888         WB_ns::value_names,
Note: See TracChangeset for help on using the changeset viewer.