Oct 6, 2017, 1:22:53 PM (21 months ago)

Case folding property objects

1 moved


  • icGREP/icgrep-devel/icgrep/UCD/CaseFolding.h

    r5672 r5673  
    1 #ifndef CASEFOLDING_TXT_H
    2 #define CASEFOLDING_TXT_H
     1#ifndef CASEFOLDING_H
     2#define CASEFOLDING_H
    44 *  Copyright (c) 2017 International Characters, Inc.
    99 */
     11#include "PropertyAliases.h"
     12#include "PropertyObjects.h"
     13#include "PropertyValueAliases.h"
    1114#include "re/re_cc.h"
     15#include "unicode_set.h"
    1216#include <vector>
    304308  {0x1e944, 0, {}},
    305309  {0x110000, 0, {}}};
     310namespace UCD {
     311    namespace SCF_ns {
     312        /** Code Point Ranges for scf mapping to <none>
     313        **/
     315        const UnicodeSet null_codepoint_set
     316                    {{{Empty, 34816}},
     317             {}};
     319        /** Code Point Ranges for scf mapping to <codepoint>
     320        [0000, 0040], [005b, 00b4], [00b6, 00bf], [00d7, 00d7],
     321        [00df, 00ff], [0101, 0101], [0103, 0103], [0105, 0105],
     322        [0107, 0107], [0109, 0109], [010b, 010b], [010d, 010d],
     323        [010f, 010f], [0111, 0111], [0113, 0113], [0115, 0115],
     324        [0117, 0117], [0119, 0119], [011b, 011b], [011d, 011d],
     325        [011f, 011f], [0121, 0121], [0123, 0123], [0125, 0125],
     326        [0127, 0127], [0129, 0129], [012b, 012b], [012d, 012d],
     327        [012f, 0131], [0133, 0133], [0135, 0135], [0137, 0138],
     328        [013a, 013a], [013c, 013c], [013e, 013e], [0140, 0140],
     329        [0142, 0142], [0144, 0144], [0146, 0146], [0148, 0149],
     330        [014b, 014b], [014d, 014d], [014f, 014f], [0151, 0151],
     331        [0153, 0153], [0155, 0155], [0157, 0157], [0159, 0159],
     332        [015b, 015b], [015d, 015d], [015f, 015f], [0161, 0161],
     333        [0163, 0163], [0165, 0165], [0167, 0167], [0169, 0169],
     334        [016b, 016b], [016d, 016d], [016f, 016f], [0171, 0171],
     335        [0173, 0173], [0175, 0175], [0177, 0177], [017a, 017a],
     336        [017c, 017c], [017e, 017e], [0180, 0180], [0183, 0183],
     337        [0185, 0185], [0188, 0188], [018c, 018d], [0192, 0192],
     338        [0195, 0195], [0199, 019b], [019e, 019e], [01a1, 01a1],
     339        [01a3, 01a3], [01a5, 01a5], [01a8, 01a8], [01aa, 01ab],
     340        [01ad, 01ad], [01b0, 01b0], [01b4, 01b4], [01b6, 01b6],
     341        [01b9, 01bb], [01bd, 01c3], [01c6, 01c6], [01c9, 01c9],
     342        [01cc, 01cc], [01ce, 01ce], [01d0, 01d0], [01d2, 01d2],
     343        [01d4, 01d4], [01d6, 01d6], [01d8, 01d8], [01da, 01da],
     344        [01dc, 01dd], [01df, 01df], [01e1, 01e1], [01e3, 01e3],
     345        [01e5, 01e5], [01e7, 01e7], [01e9, 01e9], [01eb, 01eb],
     346        [01ed, 01ed], [01ef, 01f0], [01f3, 01f3], [01f5, 01f5],
     347        [01f9, 01f9], [01fb, 01fb], [01fd, 01fd], [01ff, 01ff],
     348        [0201, 0201], [0203, 0203], [0205, 0205], [0207, 0207],
     349        [0209, 0209], [020b, 020b], [020d, 020d], [020f, 020f],
     350        [0211, 0211], [0213, 0213], [0215, 0215], [0217, 0217],
     351        [0219, 0219], [021b, 021b], [021d, 021d], [021f, 021f],
     352        [0221, 0221], [0223, 0223], [0225, 0225], [0227, 0227],
     353        [0229, 0229], [022b, 022b], [022d, 022d], [022f, 022f],
     354        [0231, 0231], [0233, 0239], [023c, 023c], [023f, 0240],
     355        [0242, 0242], [0247, 0247], [0249, 0249], [024b, 024b],
     356        [024d, 024d], [024f, 0344], [0346, 036f], [0371, 0371],
     357        [0373, 0375], [0377, 037e], [0380, 0385], [0387, 0387],
     358        [038b, 038b], [038d, 038d], [0390, 0390], [03a2, 03a2],
     359        [03ac, 03c1], [03c3, 03ce], [03d2, 03d4], [03d7, 03d7],
     360        [03d9, 03d9], [03db, 03db], [03dd, 03dd], [03df, 03df],
     361        [03e1, 03e1], [03e3, 03e3], [03e5, 03e5], [03e7, 03e7],
     362        [03e9, 03e9], [03eb, 03eb], [03ed, 03ed], [03ef, 03ef],
     363        [03f2, 03f3], [03f6, 03f6], [03f8, 03f8], [03fb, 03fc],
     364        [0430, 045f], [0461, 0461], [0463, 0463], [0465, 0465],
     365        [0467, 0467], [0469, 0469], [046b, 046b], [046d, 046d],
     366        [046f, 046f], [0471, 0471], [0473, 0473], [0475, 0475],
     367        [0477, 0477], [0479, 0479], [047b, 047b], [047d, 047d],
     368        [047f, 047f], [0481, 0489], [048b, 048b], [048d, 048d],
     369        [048f, 048f], [0491, 0491], [0493, 0493], [0495, 0495],
     370        [0497, 0497], [0499, 0499], [049b, 049b], [049d, 049d],
     371        [049f, 049f], [04a1, 04a1], [04a3, 04a3], [04a5, 04a5],
     372        [04a7, 04a7], [04a9, 04a9], [04ab, 04ab], [04ad, 04ad],
     373        [04af, 04af], [04b1, 04b1], [04b3, 04b3], [04b5, 04b5],
     374        [04b7, 04b7], [04b9, 04b9], [04bb, 04bb], [04bd, 04bd],
     375        [04bf, 04bf], [04c2, 04c2], [04c4, 04c4], [04c6, 04c6],
     376        [04c8, 04c8], [04ca, 04ca], [04cc, 04cc], [04ce, 04cf],
     377        [04d1, 04d1], [04d3, 04d3], [04d5, 04d5], [04d7, 04d7],
     378        [04d9, 04d9], [04db, 04db], [04dd, 04dd], [04df, 04df],
     379        [04e1, 04e1], [04e3, 04e3], [04e5, 04e5], [04e7, 04e7],
     380        [04e9, 04e9], [04eb, 04eb], [04ed, 04ed], [04ef, 04ef],
     381        [04f1, 04f1], [04f3, 04f3], [04f5, 04f5], [04f7, 04f7],
     382        [04f9, 04f9], [04fb, 04fb], [04fd, 04fd], [04ff, 04ff],
     383        [0501, 0501], [0503, 0503], [0505, 0505], [0507, 0507],
     384        [0509, 0509], [050b, 050b], [050d, 050d], [050f, 050f],
     385        [0511, 0511], [0513, 0513], [0515, 0515], [0517, 0517],
     386        [0519, 0519], [051b, 051b], [051d, 051d], [051f, 051f],
     387        [0521, 0521], [0523, 0523], [0525, 0525], [0527, 0527],
     388        [0529, 0529], [052b, 052b], [052d, 052d], [052f, 0530],
     389        [0557, 109f], [10c6, 10c6], [10c8, 10cc], [10ce, 13f7],
     390        [13fe, 1c7f], [1c89, 1dff], [1e01, 1e01], [1e03, 1e03],
     391        [1e05, 1e05], [1e07, 1e07], [1e09, 1e09], [1e0b, 1e0b],
     392        [1e0d, 1e0d], [1e0f, 1e0f], [1e11, 1e11], [1e13, 1e13],
     393        [1e15, 1e15], [1e17, 1e17], [1e19, 1e19], [1e1b, 1e1b],
     394        [1e1d, 1e1d], [1e1f, 1e1f], [1e21, 1e21], [1e23, 1e23],
     395        [1e25, 1e25], [1e27, 1e27], [1e29, 1e29], [1e2b, 1e2b],
     396        [1e2d, 1e2d], [1e2f, 1e2f], [1e31, 1e31], [1e33, 1e33],
     397        [1e35, 1e35], [1e37, 1e37], [1e39, 1e39], [1e3b, 1e3b],
     398        [1e3d, 1e3d], [1e3f, 1e3f], [1e41, 1e41], [1e43, 1e43],
     399        [1e45, 1e45], [1e47, 1e47], [1e49, 1e49], [1e4b, 1e4b],
     400        [1e4d, 1e4d], [1e4f, 1e4f], [1e51, 1e51], [1e53, 1e53],
     401        [1e55, 1e55], [1e57, 1e57], [1e59, 1e59], [1e5b, 1e5b],
     402        [1e5d, 1e5d], [1e5f, 1e5f], [1e61, 1e61], [1e63, 1e63],
     403        [1e65, 1e65], [1e67, 1e67], [1e69, 1e69], [1e6b, 1e6b],
     404        [1e6d, 1e6d], [1e6f, 1e6f], [1e71, 1e71], [1e73, 1e73],
     405        [1e75, 1e75], [1e77, 1e77], [1e79, 1e79], [1e7b, 1e7b],
     406        [1e7d, 1e7d], [1e7f, 1e7f], [1e81, 1e81], [1e83, 1e83],
     407        [1e85, 1e85], [1e87, 1e87], [1e89, 1e89], [1e8b, 1e8b],
     408        [1e8d, 1e8d], [1e8f, 1e8f], [1e91, 1e91], [1e93, 1e93],
     409        [1e95, 1e9a], [1e9c, 1e9d], [1e9f, 1e9f], [1ea1, 1ea1],
     410        [1ea3, 1ea3], [1ea5, 1ea5], [1ea7, 1ea7], [1ea9, 1ea9],
     411        [1eab, 1eab], [1ead, 1ead], [1eaf, 1eaf], [1eb1, 1eb1],
     412        [1eb3, 1eb3], [1eb5, 1eb5], [1eb7, 1eb7], [1eb9, 1eb9],
     413        [1ebb, 1ebb], [1ebd, 1ebd], [1ebf, 1ebf], [1ec1, 1ec1],
     414        [1ec3, 1ec3], [1ec5, 1ec5], [1ec7, 1ec7], [1ec9, 1ec9],
     415        [1ecb, 1ecb], [1ecd, 1ecd], [1ecf, 1ecf], [1ed1, 1ed1],
     416        [1ed3, 1ed3], [1ed5, 1ed5], [1ed7, 1ed7], [1ed9, 1ed9],
     417        [1edb, 1edb], [1edd, 1edd], [1edf, 1edf], [1ee1, 1ee1],
     418        [1ee3, 1ee3], [1ee5, 1ee5], [1ee7, 1ee7], [1ee9, 1ee9],
     419        [1eeb, 1eeb], [1eed, 1eed], [1eef, 1eef], [1ef1, 1ef1],
     420        [1ef3, 1ef3], [1ef5, 1ef5], [1ef7, 1ef7], [1ef9, 1ef9],
     421        [1efb, 1efb], [1efd, 1efd], [1eff, 1f07], [1f10, 1f17],
     422        [1f1e, 1f27], [1f30, 1f37], [1f40, 1f47], [1f4e, 1f58],
     423        [1f5a, 1f5a], [1f5c, 1f5c], [1f5e, 1f5e], [1f60, 1f67],
     424        [1f70, 1f87], [1f90, 1f97], [1fa0, 1fa7], [1fb0, 1fb7],
     425        [1fbd, 1fbd], [1fbf, 1fc7], [1fcd, 1fd7], [1fdc, 1fe7],
     426        [1fed, 1ff7], [1ffd, 2125], [2127, 2129], [212c, 2131],
     427        [2133, 215f], [2170, 2182], [2184, 24b5], [24d0, 2bff],
     428        [2c2f, 2c5f], [2c61, 2c61], [2c65, 2c66], [2c68, 2c68],
     429        [2c6a, 2c6a], [2c6c, 2c6c], [2c71, 2c71], [2c73, 2c74],
     430        [2c76, 2c7d], [2c81, 2c81], [2c83, 2c83], [2c85, 2c85],
     431        [2c87, 2c87], [2c89, 2c89], [2c8b, 2c8b], [2c8d, 2c8d],
     432        [2c8f, 2c8f], [2c91, 2c91], [2c93, 2c93], [2c95, 2c95],
     433        [2c97, 2c97], [2c99, 2c99], [2c9b, 2c9b], [2c9d, 2c9d],
     434        [2c9f, 2c9f], [2ca1, 2ca1], [2ca3, 2ca3], [2ca5, 2ca5],
     435        [2ca7, 2ca7], [2ca9, 2ca9], [2cab, 2cab], [2cad, 2cad],
     436        [2caf, 2caf], [2cb1, 2cb1], [2cb3, 2cb3], [2cb5, 2cb5],
     437        [2cb7, 2cb7], [2cb9, 2cb9], [2cbb, 2cbb], [2cbd, 2cbd],
     438        [2cbf, 2cbf], [2cc1, 2cc1], [2cc3, 2cc3], [2cc5, 2cc5],
     439        [2cc7, 2cc7], [2cc9, 2cc9], [2ccb, 2ccb], [2ccd, 2ccd],
     440        [2ccf, 2ccf], [2cd1, 2cd1], [2cd3, 2cd3], [2cd5, 2cd5],
     441        [2cd7, 2cd7], [2cd9, 2cd9], [2cdb, 2cdb], [2cdd, 2cdd],
     442        [2cdf, 2cdf], [2ce1, 2ce1], [2ce3, 2cea], [2cec, 2cec],
     443        [2cee, 2cf1], [2cf3, a63f], [a641, a641], [a643, a643],
     444        [a645, a645], [a647, a647], [a649, a649], [a64b, a64b],
     445        [a64d, a64d], [a64f, a64f], [a651, a651], [a653, a653],
     446        [a655, a655], [a657, a657], [a659, a659], [a65b, a65b],
     447        [a65d, a65d], [a65f, a65f], [a661, a661], [a663, a663],
     448        [a665, a665], [a667, a667], [a669, a669], [a66b, a66b],
     449        [a66d, a67f], [a681, a681], [a683, a683], [a685, a685],
     450        [a687, a687], [a689, a689], [a68b, a68b], [a68d, a68d],
     451        [a68f, a68f], [a691, a691], [a693, a693], [a695, a695],
     452        [a697, a697], [a699, a699], [a69b, a721], [a723, a723],
     453        [a725, a725], [a727, a727], [a729, a729], [a72b, a72b],
     454        [a72d, a72d], [a72f, a731], [a733, a733], [a735, a735],
     455        [a737, a737], [a739, a739], [a73b, a73b], [a73d, a73d],
     456        [a73f, a73f], [a741, a741], [a743, a743], [a745, a745],
     457        [a747, a747], [a749, a749], [a74b, a74b], [a74d, a74d],
     458        [a74f, a74f], [a751, a751], [a753, a753], [a755, a755],
     459        [a757, a757], [a759, a759], [a75b, a75b], [a75d, a75d],
     460        [a75f, a75f], [a761, a761], [a763, a763], [a765, a765],
     461        [a767, a767], [a769, a769], [a76b, a76b], [a76d, a76d],
     462        [a76f, a778], [a77a, a77a], [a77c, a77c], [a77f, a77f],
     463        [a781, a781], [a783, a783], [a785, a785], [a787, a78a],
     464        [a78c, a78c], [a78e, a78f], [a791, a791], [a793, a795],
     465        [a797, a797], [a799, a799], [a79b, a79b], [a79d, a79d],
     466        [a79f, a79f], [a7a1, a7a1], [a7a3, a7a3], [a7a5, a7a5],
     467        [a7a7, a7a7], [a7a9, a7a9], [a7af, a7af], [a7b5, a7b5],
     468        [a7b7, ab6f], [abc0, ff20], [ff3b, 103ff], [10428, 104af],
     469        [104d4, 10c7f], [10cb3, 1189f], [118c0, 1e8ff], [1e922, 10ffff]**/
     470        const UnicodeSet reflexive_set
     471                    {{{Full, 2}, {Mixed, 1}, {Full, 2}, {Mixed, 2}, {Full, 1},
     472              {Mixed, 11}, {Full, 7}, {Mixed, 6}, {Empty, 1}, {Mixed, 1},
     473              {Full, 1}, {Mixed, 8}, {Full, 90}, {Empty, 1}, {Mixed, 1},
     474              {Full, 24}, {Mixed, 1}, {Full, 68}, {Mixed, 1}, {Full, 11},
     475              {Mixed, 16}, {Full, 9}, {Mixed, 1}, {Full, 1}, {Mixed, 2},
     476              {Full, 24}, {Mixed, 2}, {Full, 57}, {Empty, 1}, {Mixed, 1},
     477              {Full, 1}, {Mixed, 5}, {Full, 970}, {Mixed, 3}, {Full, 4},
     478              {Mixed, 5}, {Full, 29}, {Mixed, 1}, {Empty, 2}, {Full, 667},
     479              {Mixed, 1}, {Full, 38}, {Empty, 1}, {Mixed, 1}, {Full, 3},
     480              {Mixed, 2}, {Full, 61}, {Empty, 1}, {Mixed, 1}, {Full, 95},
     481              {Empty, 1}, {Full, 1666}, {Empty, 1}, {Mixed, 1},
     482              {Full, 30902}},
     483             {0xf8000001, 0xffdfffff, 0x80800000, 0xaaaaaaaa, 0x55abaaaa,
     484              0xaaaaab55, 0x54aaaaaa, 0x4e243129, 0xee512d2a, 0xb555524f,
     485              0xaa29aaaa, 0xaaaaaaaa, 0x93faaaaa, 0xffffaa85, 0xffffffdf,
     486              0x7fbaffff, 0x000128bf, 0xfffff004, 0xaa9c7ffb, 0x194caaaa,
     487              0xffff0000, 0xaaaaaaaa, 0xaaaaabfe, 0xaaaaaaaa, 0xaaaad554,
     488              0xaaaaaaaa, 0xaaaaaaaa, 0x0001aaaa, 0xff800000, 0xffffdf40,
     489              0xc0ffffff, 0xfffffe00, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa,
     490              0xaaaaaaaa, 0xb7eaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa,
     491              0xc0ff00ff, 0x00ff00ff, 0x55ffc0ff, 0xffff00ff, 0x00ff00ff,
     492              0xa0ff00ff, 0xf0ffe0ff, 0xe0ffe0ff, 0xfffbf3bf, 0xffff0000,
     493              0xfffffff7, 0x003fffff, 0xffff0000, 0xffff8000, 0x3fda1562,
     494              0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xfffbd7fa, 0xaaaaaaaa,
     495              0xffffeaaa, 0xfaaaaaaa, 0xaaabaaab, 0xaaaaaaaa, 0x95ffaaaa,
     496              0xaabad7aa, 0xffa082aa, 0x0000ffff, 0xf8000001, 0xffffff00,
     497              0x0000ffff, 0xfff00000, 0xfff80000, 0xfffffffc}};
     499        const unsigned buffer_length = 4958;
     500        const static char __attribute__ ((aligned (32))) string_buffer[5120] = u8R"__(a
     1871        const static std::vector<codepoint_t> defined_cps = {
     1872        0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048,
     1873        0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
     1874        0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
     1875        0x0059, 0x005a, 0x00b5, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4,
     1876        0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc,
     1877        0x00cd, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4,
     1878        0x00d5, 0x00d6, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd,
     1879        0x00de, 0x0100, 0x0102, 0x0104, 0x0106, 0x0108, 0x010a, 0x010c,
     1880        0x010e, 0x0110, 0x0112, 0x0114, 0x0116, 0x0118, 0x011a, 0x011c,
     1881        0x011e, 0x0120, 0x0122, 0x0124, 0x0126, 0x0128, 0x012a, 0x012c,
     1882        0x012e, 0x0132, 0x0134, 0x0136, 0x0139, 0x013b, 0x013d, 0x013f,
     1883        0x0141, 0x0143, 0x0145, 0x0147, 0x014a, 0x014c, 0x014e, 0x0150,
     1884        0x0152, 0x0154, 0x0156, 0x0158, 0x015a, 0x015c, 0x015e, 0x0160,
     1885        0x0162, 0x0164, 0x0166, 0x0168, 0x016a, 0x016c, 0x016e, 0x0170,
     1886        0x0172, 0x0174, 0x0176, 0x0178, 0x0179, 0x017b, 0x017d, 0x017f,
     1887        0x0181, 0x0182, 0x0184, 0x0186, 0x0187, 0x0189, 0x018a, 0x018b,
     1888        0x018e, 0x018f, 0x0190, 0x0191, 0x0193, 0x0194, 0x0196, 0x0197,
     1889        0x0198, 0x019c, 0x019d, 0x019f, 0x01a0, 0x01a2, 0x01a4, 0x01a6,
     1890        0x01a7, 0x01a9, 0x01ac, 0x01ae, 0x01af, 0x01b1, 0x01b2, 0x01b3,
     1891        0x01b5, 0x01b7, 0x01b8, 0x01bc, 0x01c4, 0x01c5, 0x01c7, 0x01c8,
     1892        0x01ca, 0x01cb, 0x01cd, 0x01cf, 0x01d1, 0x01d3, 0x01d5, 0x01d7,
     1893        0x01d9, 0x01db, 0x01de, 0x01e0, 0x01e2, 0x01e4, 0x01e6, 0x01e8,
     1894        0x01ea, 0x01ec, 0x01ee, 0x01f1, 0x01f2, 0x01f4, 0x01f6, 0x01f7,
     1895        0x01f8, 0x01fa, 0x01fc, 0x01fe, 0x0200, 0x0202, 0x0204, 0x0206,
     1896        0x0208, 0x020a, 0x020c, 0x020e, 0x0210, 0x0212, 0x0214, 0x0216,
     1897        0x0218, 0x021a, 0x021c, 0x021e, 0x0220, 0x0222, 0x0224, 0x0226,
     1898        0x0228, 0x022a, 0x022c, 0x022e, 0x0230, 0x0232, 0x023a, 0x023b,
     1899        0x023d, 0x023e, 0x0241, 0x0243, 0x0244, 0x0245, 0x0246, 0x0248,
     1900        0x024a, 0x024c, 0x024e, 0x0345, 0x0370, 0x0372, 0x0376, 0x037f,
     1901        0x0386, 0x0388, 0x0389, 0x038a, 0x038c, 0x038e, 0x038f, 0x0391,
     1902        0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399,
     1903        0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1,
     1904        0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03aa,
     1905        0x03ab, 0x03c2, 0x03cf, 0x03d0, 0x03d1, 0x03d5, 0x03d6, 0x03d8,
     1906        0x03da, 0x03dc, 0x03de, 0x03e0, 0x03e2, 0x03e4, 0x03e6, 0x03e8,
     1907        0x03ea, 0x03ec, 0x03ee, 0x03f0, 0x03f1, 0x03f4, 0x03f5, 0x03f7,
     1908        0x03f9, 0x03fa, 0x03fd, 0x03fe, 0x03ff, 0x0400, 0x0401, 0x0402,
     1909        0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x040a,
     1910        0x040b, 0x040c, 0x040d, 0x040e, 0x040f, 0x0410, 0x0411, 0x0412,
     1911        0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a,
     1912        0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422,
     1913        0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a,
     1914        0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0460, 0x0462, 0x0464,
     1915        0x0466, 0x0468, 0x046a, 0x046c, 0x046e, 0x0470, 0x0472, 0x0474,
     1916        0x0476, 0x0478, 0x047a, 0x047c, 0x047e, 0x0480, 0x048a, 0x048c,
     1917        0x048e, 0x0490, 0x0492, 0x0494, 0x0496, 0x0498, 0x049a, 0x049c,
     1918        0x049e, 0x04a0, 0x04a2, 0x04a4, 0x04a6, 0x04a8, 0x04aa, 0x04ac,
     1919        0x04ae, 0x04b0, 0x04b2, 0x04b4, 0x04b6, 0x04b8, 0x04ba, 0x04bc,
     1920        0x04be, 0x04c0, 0x04c1, 0x04c3, 0x04c5, 0x04c7, 0x04c9, 0x04cb,
     1921        0x04cd, 0x04d0, 0x04d2, 0x04d4, 0x04d6, 0x04d8, 0x04da, 0x04dc,
     1922        0x04de, 0x04e0, 0x04e2, 0x04e4, 0x04e6, 0x04e8, 0x04ea, 0x04ec,
     1923        0x04ee, 0x04f0, 0x04f2, 0x04f4, 0x04f6, 0x04f8, 0x04fa, 0x04fc,
     1924        0x04fe, 0x0500, 0x0502, 0x0504, 0x0506, 0x0508, 0x050a, 0x050c,
     1925        0x050e, 0x0510, 0x0512, 0x0514, 0x0516, 0x0518, 0x051a, 0x051c,
     1926        0x051e, 0x0520, 0x0522, 0x0524, 0x0526, 0x0528, 0x052a, 0x052c,
     1927        0x052e, 0x0531, 0x0532, 0x0533, 0x0534, 0x0535, 0x0536, 0x0537,
     1928        0x0538, 0x0539, 0x053a, 0x053b, 0x053c, 0x053d, 0x053e, 0x053f,
     1929        0x0540, 0x0541, 0x0542, 0x0543, 0x0544, 0x0545, 0x0546, 0x0547,
     1930        0x0548, 0x0549, 0x054a, 0x054b, 0x054c, 0x054d, 0x054e, 0x054f,
     1931        0x0550, 0x0551, 0x0552, 0x0553, 0x0554, 0x0555, 0x0556, 0x10a0,
     1932        0x10a1, 0x10a2, 0x10a3, 0x10a4, 0x10a5, 0x10a6, 0x10a7, 0x10a8,
     1933        0x10a9, 0x10aa, 0x10ab, 0x10ac, 0x10ad, 0x10ae, 0x10af, 0x10b0,
     1934        0x10b1, 0x10b2, 0x10b3, 0x10b4, 0x10b5, 0x10b6, 0x10b7, 0x10b8,
     1935        0x10b9, 0x10ba, 0x10bb, 0x10bc, 0x10bd, 0x10be, 0x10bf, 0x10c0,
     1936        0x10c1, 0x10c2, 0x10c3, 0x10c4, 0x10c5, 0x10c7, 0x10cd, 0x13f8,
     1937        0x13f9, 0x13fa, 0x13fb, 0x13fc, 0x13fd, 0x1c80, 0x1c81, 0x1c82,
     1938        0x1c83, 0x1c84, 0x1c85, 0x1c86, 0x1c87, 0x1c88, 0x1e00, 0x1e02,
     1939        0x1e04, 0x1e06, 0x1e08, 0x1e0a, 0x1e0c, 0x1e0e, 0x1e10, 0x1e12,
     1940        0x1e14, 0x1e16, 0x1e18, 0x1e1a, 0x1e1c, 0x1e1e, 0x1e20, 0x1e22,
     1941        0x1e24, 0x1e26, 0x1e28, 0x1e2a, 0x1e2c, 0x1e2e, 0x1e30, 0x1e32,
     1942        0x1e34, 0x1e36, 0x1e38, 0x1e3a, 0x1e3c, 0x1e3e, 0x1e40, 0x1e42,
     1943        0x1e44, 0x1e46, 0x1e48, 0x1e4a, 0x1e4c, 0x1e4e, 0x1e50, 0x1e52,
     1944        0x1e54, 0x1e56, 0x1e58, 0x1e5a, 0x1e5c, 0x1e5e, 0x1e60, 0x1e62,
     1945        0x1e64, 0x1e66, 0x1e68, 0x1e6a, 0x1e6c, 0x1e6e, 0x1e70, 0x1e72,
     1946        0x1e74, 0x1e76, 0x1e78, 0x1e7a, 0x1e7c, 0x1e7e, 0x1e80, 0x1e82,
     1947        0x1e84, 0x1e86, 0x1e88, 0x1e8a, 0x1e8c, 0x1e8e, 0x1e90, 0x1e92,
     1948        0x1e94, 0x1e9b, 0x1e9e, 0x1ea0, 0x1ea2, 0x1ea4, 0x1ea6, 0x1ea8,
     1949        0x1eaa, 0x1eac, 0x1eae, 0x1eb0, 0x1eb2, 0x1eb4, 0x1eb6, 0x1eb8,
     1950        0x1eba, 0x1ebc, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ec8,
     1951        0x1eca, 0x1ecc, 0x1ece, 0x1ed0, 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8,
     1952        0x1eda, 0x1edc, 0x1ede, 0x1ee0, 0x1ee2, 0x1ee4, 0x1ee6, 0x1ee8,
     1953        0x1eea, 0x1eec, 0x1eee, 0x1ef0, 0x1ef2, 0x1ef4, 0x1ef6, 0x1ef8,
     1954        0x1efa, 0x1efc, 0x1efe, 0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c,
     1955        0x1f0d, 0x1f0e, 0x1f0f, 0x1f18, 0x1f19, 0x1f1a, 0x1f1b, 0x1f1c,
     1956        0x1f1d, 0x1f28, 0x1f29, 0x1f2a, 0x1f2b, 0x1f2c, 0x1f2d, 0x1f2e,
     1957        0x1f2f, 0x1f38, 0x1f39, 0x1f3a, 0x1f3b, 0x1f3c, 0x1f3d, 0x1f3e,
     1958        0x1f3f, 0x1f48, 0x1f49, 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4d, 0x1f59,
     1959        0x1f5b, 0x1f5d, 0x1f5f, 0x1f68, 0x1f69, 0x1f6a, 0x1f6b, 0x1f6c,
     1960        0x1f6d, 0x1f6e, 0x1f6f, 0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c,
     1961        0x1f8d, 0x1f8e, 0x1f8f, 0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c,
     1962        0x1f9d, 0x1f9e, 0x1f9f, 0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac,
     1963        0x1fad, 0x1fae, 0x1faf, 0x1fb8, 0x1fb9, 0x1fba, 0x1fbb, 0x1fbc,
     1964        0x1fbe, 0x1fc8, 0x1fc9, 0x1fca, 0x1fcb, 0x1fcc, 0x1fd8, 0x1fd9,
     1965        0x1fda, 0x1fdb, 0x1fe8, 0x1fe9, 0x1fea, 0x1feb, 0x1fec, 0x1ff8,
     1966        0x1ff9, 0x1ffa, 0x1ffb, 0x1ffc, 0x2126, 0x212a, 0x212b, 0x2132,
     1967        0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167,
     1968        0x2168, 0x2169, 0x216a, 0x216b, 0x216c, 0x216d, 0x216e, 0x216f,
     1969        0x2183, 0x24b6, 0x24b7, 0x24b8, 0x24b9, 0x24ba, 0x24bb, 0x24bc,
     1970        0x24bd, 0x24be, 0x24bf, 0x24c0, 0x24c1, 0x24c2, 0x24c3, 0x24c4,
     1971        0x24c5, 0x24c6, 0x24c7, 0x24c8, 0x24c9, 0x24ca, 0x24cb, 0x24cc,
     1972        0x24cd, 0x24ce, 0x24cf, 0x2c00, 0x2c01, 0x2c02, 0x2c03, 0x2c04,
     1973        0x2c05, 0x2c06, 0x2c07, 0x2c08, 0x2c09, 0x2c0a, 0x2c0b, 0x2c0c,
     1974        0x2c0d, 0x2c0e, 0x2c0f, 0x2c10, 0x2c11, 0x2c12, 0x2c13, 0x2c14,
     1975        0x2c15, 0x2c16, 0x2c17, 0x2c18, 0x2c19, 0x2c1a, 0x2c1b, 0x2c1c,
     1976        0x2c1d, 0x2c1e, 0x2c1f, 0x2c20, 0x2c21, 0x2c22, 0x2c23, 0x2c24,
     1977        0x2c25, 0x2c26, 0x2c27, 0x2c28, 0x2c29, 0x2c2a, 0x2c2b, 0x2c2c,
     1978        0x2c2d, 0x2c2e, 0x2c60, 0x2c62, 0x2c63, 0x2c64, 0x2c67, 0x2c69,
     1979        0x2c6b, 0x2c6d, 0x2c6e, 0x2c6f, 0x2c70, 0x2c72, 0x2c75, 0x2c7e,
     1980        0x2c7f, 0x2c80, 0x2c82, 0x2c84, 0x2c86, 0x2c88, 0x2c8a, 0x2c8c,
     1981        0x2c8e, 0x2c90, 0x2c92, 0x2c94, 0x2c96, 0x2c98, 0x2c9a, 0x2c9c,
     1982        0x2c9e, 0x2ca0, 0x2ca2, 0x2ca4, 0x2ca6, 0x2ca8, 0x2caa, 0x2cac,
     1983        0x2cae, 0x2cb0, 0x2cb2, 0x2cb4, 0x2cb6, 0x2cb8, 0x2cba, 0x2cbc,
     1984        0x2cbe, 0x2cc0, 0x2cc2, 0x2cc4, 0x2cc6, 0x2cc8, 0x2cca, 0x2ccc,
     1985        0x2cce, 0x2cd0, 0x2cd2, 0x2cd4, 0x2cd6, 0x2cd8, 0x2cda, 0x2cdc,
     1986        0x2cde, 0x2ce0, 0x2ce2, 0x2ceb, 0x2ced, 0x2cf2, 0xa640, 0xa642,
     1987        0xa644, 0xa646, 0xa648, 0xa64a, 0xa64c, 0xa64e, 0xa650, 0xa652,
     1988        0xa654, 0xa656, 0xa658, 0xa65a, 0xa65c, 0xa65e, 0xa660, 0xa662,
     1989        0xa664, 0xa666, 0xa668, 0xa66a, 0xa66c, 0xa680, 0xa682, 0xa684,
     1990        0xa686, 0xa688, 0xa68a, 0xa68c, 0xa68e, 0xa690, 0xa692, 0xa694,
     1991        0xa696, 0xa698, 0xa69a, 0xa722, 0xa724, 0xa726, 0xa728, 0xa72a,
     1992        0xa72c, 0xa72e, 0xa732, 0xa734, 0xa736, 0xa738, 0xa73a, 0xa73c,
     1993        0xa73e, 0xa740, 0xa742, 0xa744, 0xa746, 0xa748, 0xa74a, 0xa74c,
     1994        0xa74e, 0xa750, 0xa752, 0xa754, 0xa756, 0xa758, 0xa75a, 0xa75c,
     1995        0xa75e, 0xa760, 0xa762, 0xa764, 0xa766, 0xa768, 0xa76a, 0xa76c,
     1996        0xa76e, 0xa779, 0xa77b, 0xa77d, 0xa77e, 0xa780, 0xa782, 0xa784,
     1997        0xa786, 0xa78b, 0xa78d, 0xa790, 0xa792, 0xa796, 0xa798, 0xa79a,
     1998        0xa79c, 0xa79e, 0xa7a0, 0xa7a2, 0xa7a4, 0xa7a6, 0xa7a8, 0xa7aa,
     1999        0xa7ab, 0xa7ac, 0xa7ad, 0xa7ae, 0xa7b0, 0xa7b1, 0xa7b2, 0xa7b3,
     2000        0xa7b4, 0xa7b6, 0xab70, 0xab71, 0xab72, 0xab73, 0xab74, 0xab75,
     2001        0xab76, 0xab77, 0xab78, 0xab79, 0xab7a, 0xab7b, 0xab7c, 0xab7d,
     2002        0xab7e, 0xab7f, 0xab80, 0xab81, 0xab82, 0xab83, 0xab84, 0xab85,
     2003        0xab86, 0xab87, 0xab88, 0xab89, 0xab8a, 0xab8b, 0xab8c, 0xab8d,
     2004        0xab8e, 0xab8f, 0xab90, 0xab91, 0xab92, 0xab93, 0xab94, 0xab95,
     2005        0xab96, 0xab97, 0xab98, 0xab99, 0xab9a, 0xab9b, 0xab9c, 0xab9d,
     2006        0xab9e, 0xab9f, 0xaba0, 0xaba1, 0xaba2, 0xaba3, 0xaba4, 0xaba5,
     2007        0xaba6, 0xaba7, 0xaba8, 0xaba9, 0xabaa, 0xabab, 0xabac, 0xabad,
     2008        0xabae, 0xabaf, 0xabb0, 0xabb1, 0xabb2, 0xabb3, 0xabb4, 0xabb5,
     2009        0xabb6, 0xabb7, 0xabb8, 0xabb9, 0xabba, 0xabbb, 0xabbc, 0xabbd,
     2010        0xabbe, 0xabbf, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26,
     2011        0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e,
     2012        0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36,
     2013        0xff37, 0xff38, 0xff39, 0xff3a, 0x10400, 0x10401, 0x10402, 0x10403,
     2014        0x10404, 0x10405, 0x10406, 0x10407, 0x10408, 0x10409, 0x1040a,
     2015        0x1040b, 0x1040c, 0x1040d, 0x1040e, 0x1040f, 0x10410, 0x10411,
     2016        0x10412, 0x10413, 0x10414, 0x10415, 0x10416, 0x10417, 0x10418,
     2017        0x10419, 0x1041a, 0x1041b, 0x1041c, 0x1041d, 0x1041e, 0x1041f,
     2018        0x10420, 0x10421, 0x10422, 0x10423, 0x10424, 0x10425, 0x10426,
     2019        0x10427, 0x104b0, 0x104b1, 0x104b2, 0x104b3, 0x104b4, 0x104b5,
     2020        0x104b6, 0x104b7, 0x104b8, 0x104b9, 0x104ba, 0x104bb, 0x104bc,
     2021        0x104bd, 0x104be, 0x104bf, 0x104c0, 0x104c1, 0x104c2, 0x104c3,
     2022        0x104c4, 0x104c5, 0x104c6, 0x104c7, 0x104c8, 0x104c9, 0x104ca,
     2023        0x104cb, 0x104cc, 0x104cd, 0x104ce, 0x104cf, 0x104d0, 0x104d1,
     2024        0x104d2, 0x104d3, 0x10c80, 0x10c81, 0x10c82, 0x10c83, 0x10c84,
     2025        0x10c85, 0x10c86, 0x10c87, 0x10c88, 0x10c89, 0x10c8a, 0x10c8b,
     2026        0x10c8c, 0x10c8d, 0x10c8e, 0x10c8f, 0x10c90, 0x10c91, 0x10c92,
     2027        0x10c93, 0x10c94, 0x10c95, 0x10c96, 0x10c97, 0x10c98, 0x10c99,
     2028        0x10c9a, 0x10c9b, 0x10c9c, 0x10c9d, 0x10c9e, 0x10c9f, 0x10ca0,
     2029        0x10ca1, 0x10ca2, 0x10ca3, 0x10ca4, 0x10ca5, 0x10ca6, 0x10ca7,
     2030        0x10ca8, 0x10ca9, 0x10caa, 0x10cab, 0x10cac, 0x10cad, 0x10cae,
     2031        0x10caf, 0x10cb0, 0x10cb1, 0x10cb2, 0x118a0, 0x118a1, 0x118a2,
     2032        0x118a3, 0x118a4, 0x118a5, 0x118a6, 0x118a7, 0x118a8, 0x118a9,
     2033        0x118aa, 0x118ab, 0x118ac, 0x118ad, 0x118ae, 0x118af, 0x118b0,
     2034        0x118b1, 0x118b2, 0x118b3, 0x118b4, 0x118b5, 0x118b6, 0x118b7,
     2035        0x118b8, 0x118b9, 0x118ba, 0x118bb, 0x118bc, 0x118bd, 0x118be,
     2036        0x118bf, 0x1e900, 0x1e901, 0x1e902, 0x1e903, 0x1e904, 0x1e905,
     2037        0x1e906, 0x1e907, 0x1e908, 0x1e909, 0x1e90a, 0x1e90b, 0x1e90c,
     2038        0x1e90d, 0x1e90e, 0x1e90f, 0x1e910, 0x1e911, 0x1e912, 0x1e913,
     2039        0x1e914, 0x1e915, 0x1e916, 0x1e917, 0x1e918, 0x1e919, 0x1e91a,
     2040        0x1e91b, 0x1e91c, 0x1e91d, 0x1e91e, 0x1e91f, 0x1e920, 0x1e921};
     2041        static StringPropertyObject property_object(scf,
     2042                                                    null_codepoint_set,
     2043                                                    reflexive_set,
     2044                                                    static_cast<const char *>(string_buffer),
     2045                                                    buffer_length,
     2046                                                    defined_cps);
     2047    }
     2048    namespace CF_ns {
     2049        /** Code Point Ranges for cf (possibly overriding values from SCF)
     2050        [00df, 00df], [0130, 0130], [0149, 0149], [01f0, 01f0],
     2051        [0390, 0390], [03b0, 03b0], [0587, 0587], [1e96, 1e9a],
     2052        [1e9e, 1e9e], [1f50, 1f50], [1f52, 1f52], [1f54, 1f54],
     2053        [1f56, 1f56], [1f80, 1faf], [1fb2, 1fb4], [1fb6, 1fb7],
     2054        [1fbc, 1fbc], [1fc2, 1fc4], [1fc6, 1fc7], [1fcc, 1fcc],
     2055        [1fd2, 1fd3], [1fd6, 1fd7], [1fe2, 1fe4], [1fe6, 1fe7],
     2056        [1ff2, 1ff4], [1ff6, 1ff7], [1ffc, 1ffc], [fb00, fb06],
     2057        [fb13, fb17]**/
     2059        const UnicodeSet explicitly_defined_set
     2060                    {{{Empty, 6}, {Mixed, 1}, {Empty, 2}, {Mixed, 2}, {Empty, 4},
     2061              {Mixed, 1}, {Empty, 12}, {Mixed, 2}, {Empty, 14}, {Mixed, 1},
     2062              {Empty, 199}, {Mixed, 1}, {Empty, 5}, {Mixed, 1}, {Empty, 1},
     2063              {Full, 1}, {Mixed, 3}, {Empty, 1752}, {Mixed, 1},
     2064              {Empty, 32807}},
     2065             {0x80000000, 0x00010000, 0x00000200, 0x00010000, 0x00010000,
     2066              0x00010000, 0x00000080, 0x47c00000, 0x00550000, 0x10dcffff,
     2067              0x00cc10dc, 0x10dc00dc, 0x00f8007f}};
     2069        const unsigned buffer_length = 575;
     2070        const static char __attribute__ ((aligned (32))) string_buffer[768] = u8R"__(ss
     2187        const static std::vector<codepoint_t> defined_cps = {
     2188        0x00df, 0x0130, 0x0149, 0x01f0, 0x0390, 0x03b0, 0x0587, 0x1e96,
     2189        0x1e97, 0x1e98, 0x1e99, 0x1e9a, 0x1e9e, 0x1f50, 0x1f52, 0x1f54,
     2190        0x1f56, 0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, 0x1f86,
     2191        0x1f87, 0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e,
     2192        0x1f8f, 0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, 0x1f96,
     2193        0x1f97, 0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e,
     2194        0x1f9f, 0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa6,
     2195        0x1fa7, 0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae,
     2196        0x1faf, 0x1fb2, 0x1fb3, 0x1fb4, 0x1fb6, 0x1fb7, 0x1fbc, 0x1fc2,
     2197        0x1fc3, 0x1fc4, 0x1fc6, 0x1fc7, 0x1fcc, 0x1fd2, 0x1fd3, 0x1fd6,
     2198        0x1fd7, 0x1fe2, 0x1fe3, 0x1fe4, 0x1fe6, 0x1fe7, 0x1ff2, 0x1ff3,
     2199        0x1ff4, 0x1ff6, 0x1ff7, 0x1ffc, 0xfb00, 0xfb01, 0xfb02, 0xfb03,
     2200        0xfb04, 0xfb05, 0xfb06, 0xfb13, 0xfb14, 0xfb15, 0xfb16, 0xfb17};
     2201        static StringOverridePropertyObject property_object(cf,
     2202                                                    SCF_ns::property_object,
     2203                                                    explicitly_defined_set,
     2204                                                    static_cast<const char *>(string_buffer),
     2205                                                    buffer_length,
     2206                                                    defined_cps);
     2207    }
Note: See TracChangeset for help on using the changeset viewer.