/* This file was converted by gperf_fold_key_conv.py
from gperf output file. */
/* ANSI-C code produced by gperf version 3.1 */
/* Command-line: gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N onigenc_unicode_fold1_key unicode_fold1_key.gperf */
/* Computed positions: -k'1-3' */
/* This gperf source file was generated by make_unicode_fold_data.py */
/*-
* Copyright (c) 2017-2019 K.Kosako
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <string.h>
#include "regenc.h"
#define TOTAL_KEYWORDS 1353
#define MIN_WORD_LENGTH 3
#define MAX_WORD_LENGTH 3
#define MIN_HASH_VALUE 3
#define MAX_HASH_VALUE 1791
/* maximum key range = 1789, duplicates = 0 */
#ifdef __GNUC__
__inline
#else
#ifdef __cplusplus
inline
#endif
#endif
/*ARGSUSED*/
static unsigned int
hash(OnigCodePoint codes[])
{
static const unsigned short asso_values[] =
{
4, 2, 147, 16, 1, 13, 1228, 725, 1224, 638,
1204, 95, 9, 82, 1403, 80, 8, 68, 1391, 6,
1203, 602, 1200, 320, 151, 67, 1385, 61, 1384, 158,
0, 11, 1252, 3, 733, 278, 23, 425, 660, 424,
640, 20, 635, 105, 5, 29, 916, 34, 630, 0,
906, 1378, 899, 1377, 470, 1363, 623, 902, 610, 230,
1193, 1358, 1190, 779, 986, 1336, 890, 883, 456, 597,
285, 158, 590, 477, 583, 42, 576, 1447, 447, 1440,
440, 1353, 426, 1429, 400, 1417, 327, 1407, 567, 1389,
386, 1207, 458, 724, 854, 979, 1016, 66, 232, 413,
204, 1431, 226, 1317, 190, 1167, 379, 1319, 198, 1270,
175, 209, 561, 362, 528, 1323, 257, 1099, 240, 1309,
508, 1172, 484, 1306, 699, 865, 850, 488, 679, 755,
420, 639, 1149, 105, 691, 789, 1125, 46, 809, 652,
1293, 3, 1262, 166, 1426, 0, 1424, 1792, 1220, 460,
706, 1, 367, 1792, 1341, 1792, 1151, 56, 1235, 1792,
384, 345, 965, 40, 1168, 33, 218, 180, 1159, 20,
1296, 276, 1243, 14, 1401, 777, 1142, 682, 1284, 129,
1135, 610, 1181, 871, 1123, 858, 1042, 510, 842, 499,
999, 346, 830, 0, 823, 1288, 1115, 768, 732, 1272,
1101, 1098, 1082, 1270, 811, 177, 1078, 1074, 1061, 1058,
1050, 789, 353, 1018, 548, 1006, 517, 988, 334, 765,
166, 753, 138, 743, 100, 969, 87, 720, 49, 975,
75, 965, 62, 411, 126, 955, 113, 1262, 317, 943,
304, 679, 293, 1252, 714, 937, 275, 490, 263, 469,
395, 1345, 931, 208, 921, 80, 542, 11, 246
};
return asso_values[(unsigned char)onig_codes_byte_at(codes, 2)+3] + asso_values[(unsigned char)onig_codes_byte_at(codes, 1)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 0)];
}
int
onigenc_unicode_fold1_key(OnigCodePoint codes[])
{
static const short int wordlist[] =
{
-1, -1, -1,
3429,
1906,
1867,
210,
171,
3414,
1927,
1690,
231,
1885,
1879,
189,
183,
2240,
1315,
1276,
165,
792,
2261,
1336,
1594,
1630,
1294,
1288,
1915,
2243,
219,
1618,
2237,
3417,
2981,
2903,
2297,
2990,
3423,
2282,
2948,
1324,
2939,
2927,
1606,
2984,
3507,
2906,
974,
273,
2900,
1600,
2648,
3558,
2189,
1228,
459,
2999,
80,
2885,
1795,
3738,
1513,
378,
1459,
2438,
3570,
2195,
1234,
465,
860,
92,
1041,
1807,
3750,
1525,
2714,
2549,
2441,
3564,
2192,
1231,
462,
866,
86,
2888,
1801,
3744,
1519,
159,
2561,
3552,
2186,
1225,
456,
2972,
863,
2882,
1789,
3732,
1507,
2966,
2942,
2555,
3546,
2183,
1222,
453,
857,
3411,
2879,
1783,
3726,
1501,
2936,
2543,
2930,
3582,
2201,
1240,
471,
854,
105,
1447,
1819,
3762,
1537,
3354,
2537,
2924,
3576,
2198,
1237,
468,
872,
99,
399,
1813,
3756,
1531,
1648,
2573,
3540,
2180,
1219,
2423,
-1,
869,
2876,
1777,
3720,
1495,
541,
502,
2567,
697,
1897,
559,
201,
851,
520,
514,
3495,
1864,
962,
267,
2531,
2276,
2636,
1306,
3534,
2177,
1216,
366,
2339,
-1,
2873,
1771,
3714,
1489,
2027,
1063,
324,
1192,
27,
2963,
3276,
848,
1726,
3669,
3141,
1612,
2978,
1378,
2525,
2018,
1054,
315,
830,
12,
2720,
-1, -1,
2024,
1060,
321,
2372,
4086,
1360,
2011,
1047,
309,
3633,
0,
2717,
-1,
1372,
153,
31,
2732,
2360,
1588,
1348,
2096,
1135,
387,
-1,
1381,
2792,
1609,
-1,
2015,
1050,
312,
3459,
6,
922,
2008,
1044,
306,
2600,
3885,
2366,
3342,
1354,
2039,
1075,
336,
2456,
52,
2735,
2234,
1273,
499,
3879,
168,
2390,
682,
1402,
1597,
-1,
718,
2036,
1072,
333,
2450,
46,
3618,
2219,
1258,
487,
-1,
141,
2384,
1855,
1396,
1573,
-1,
715,
3612,
2216,
1255,
483,
393,
135,
2897,
1849,
1624,
1567,
3492,
1966,
959,
3873,
-1,
2279,
2633,
887,
3600,
2210,
1249,
480,
2336,
123,
532,
1837,
3780,
1555,
-1,
3594,
2207,
1246,
477,
2996,
117,
881,
1831,
3774,
1549,
703,
-1,
3867,
3588,
2204,
1243,
474,
878,
111,
658,
1825,
3768,
1543,
3822,
1990,
1008,
288,
-1,
2273,
2681,
875,
2174,
1213,
-1,
643,
2348,
2870,
1765,
3708,
1483,
-1, -1,
652,
3267,
381,
3921,
2960,
845,
637,
1684,
2165,
1204,
3237,
661,
2519,
2861,
1747,
3690,
1465,
785,
3903,
2432,
3339,
37,
2090,
1114,
372,
3228,
3915,
2771,
640,
-1,
1387,
2501,
3891,
3234,
2021,
1057,
318,
3924,
18,
3222,
1126,
1996,
1020,
294,
2783,
2378,
2693,
1366,
3084,
3624,
2222,
1261,
2354,
3297,
3897,
1987,
1002,
285,
1579,
667,
2675,
3225,
3387,
3075,
4020,
3573,
2345,
3219,
3945,
4005,
96,
3081,
1810,
3753,
1528,
2057,
1093,
3069,
2492,
2357,
3528,
1984,
996,
282,
3996,
3939,
2669,
-1,
1438,
2564,
2291,
2285,
-1,
4008,
3522,
1981,
990,
279,
4014,
3072,
2663,
3516,
1978,
984,
276,
3066,
-1,
2657,
3008,
3002,
3486,
1963,
950,
1999,
1026,
297,
2627,
369,
2699,
-1,
3177,
3399,
2330,
3621,
3444,
1942,
906,
243,
144,
613,
2585,
3501,
1576,
968,
270,
3381,
2312,
2642,
3861,
2045,
1081,
342,
2468,
65,
3615,
348,
2483,
712,
-1,
138,
2402,
1852,
1414,
1570,
2417,
721,
1429,
3843,
3023,
727,
1678,
3375,
3201,
2042,
1078,
339,
2462,
59,
-1,
4002,
778,
1672,
2171,
1210,
2396,
3369,
1408,
2867,
1759,
3702,
1477,
768,
3363,
2033,
1069,
330,
709,
40,
622,
-1,
3930,
3333,
-1,
3405,
-1,
2513,
1390,
2231,
1270,
496,
3048,
162,
607,
2168,
1207,
1591,
-1,
3909,
2864,
1753,
3696,
1471,
3348,
-1,
3231,
634,
2030,
1066,
327,
3288,
34,
3207,
1993,
1014,
291,
-1,
2507,
2687,
601,
1384,
3510,
1975,
977,
2351,
-1,
3198,
2651,
3504,
1972,
971,
3120,
3888,
598,
2645,
3498,
1969,
965,
-1,
3981,
595,
2639,
3489,
3078,
954,
264,
3252,
2342,
2630,
3330,
3054,
625,
3195,
706,
2333,
3456,
1948,
919,
249,
2267,
-1,
2597,
1654,
574,
3045,
-1,
3192,
2324,
3450,
1945,
913,
246,
748,
3189,
2591,
3426,
1933,
2954,
237,
-1,
2318,
1924,
3174,
228,
3210,
4050,
1921,
354,
225,
1342,
3042,
-1,
2300,
3393,
1333,
2255,
3153,
2294,
1441,
1330,
363,
673,
3357,
3957,
3039,
3017,
1918,
3972,
222,
3351,
3014,
3035,
3855,
2918,
3249,
3011,
3345,
2288,
-1,
1327,
3020,
664,
3057,
3336,
3597,
2054,
1090,
3951,
2486,
120,
2894,
1834,
3777,
1552,
1642,
3005,
2420,
2063,
1432,
357,
4083,
730,
2744,
3849,
739,
2048,
1084,
3933,
2474,
71,
1450,
-1,
2087,
1111,
3243,
-1,
2408,
2768,
1420,
3606,
2213,
1252,
-1, -1,
129,
3555,
1843,
3786,
1561,
592,
77,
1029,
1792,
3735,
1510,
2702,
589,
2435,
2144,
1912,
3927,
216,
2249,
2840,
1705,
3648,
-1,
3240,
3543,
2546,
586,
450,
1321,
3204,
806,
1780,
3723,
1498,
3537,
-1,
2912,
447,
3186,
351,
2489,
1774,
3717,
1492,
2993,
3183,
3531,
-1,
2534,
444,
1435,
1180,
3180,
1768,
3711,
1486,
1702,
3645,
2528,
565,
3471,
3087,
934,
255,
556,
1636,
2612,
3051,
679,
553,
2522,
-1,
3159,
432,
2495,
733,
3032,
1744,
3687,
1462,
-1,
691,
2429,
3029,
1453,
3156,
3408,
-1, -1,
550,
3026,
2069,
3147,
2153,
2498,
421,
2750,
3138,
2849,
1723,
3666,
-1,
3135,
-1, -1,
2138,
1177,
414,
676,
826,
2834,
1693,
2135,
1174,
411,
3990,
3984,
2831,
1687,
1861,
685,
795,
3132,
-1,
2129,
1168,
408,
-1,
789,
2825,
1675,
-1,
2051,
1087,
3975,
2480,
2002,
1032,
300,
1858,
773,
2705,
405,
2414,
-1,
1426,
1666,
4077,
724,
345,
2477,
74,
-1,
3258,
3963,
402,
762,
-1,
2411,
1660,
1423,
4035,
547,
3801,
3483,
-1,
947,
261,
3273,
755,
2624,
3480,
1960,
944,
3876,
-1,
2327,
2621,
-1, -1,
3438,
1939,
899,
3453,
3870,
916,
2579,
3432,
1936,
2594,
240,
3093,
2306,
-1,
3327,
2321,
3864,
3420,
1930,
3798,
234,
1345,
3636,
2228,
1267,
493,
3117,
156,
577,
-1,
3978,
1339,
3630,
2225,
1264,
490,
-1,
150,
3609,
893,
3840,
1585,
-1,
132,
3591,
1846,
3789,
1564,
-1,
114,
2891,
1828,
3771,
1546,
-1,
884,
3579,
-1,
688,
-1, -1,
102,
3819,
1816,
3759,
1534,
3567,
-1,
1129,
-1,
3549,
89,
2786,
1804,
3747,
1522,
3561,
1786,
3729,
1504,
2570,
83,
1035,
1798,
3741,
1516,
2708,
3474,
1957,
937,
2558,
3264,
441,
2615,
2540,
-1,
1762,
3705,
1480,
-1,
2552,
2132,
1171,
628,
-1,
3324,
2828,
1681,
4080,
-1,
438,
-1,
3321,
2516,
1756,
3699,
1474,
782,
2005,
1038,
303,
4047,
435,
2711,
3315,
3969,
1750,
3693,
1468,
3099,
-1,
2510,
583,
-1,
4041,
-1,
3213,
-1, -1,
580,
3966,
4017,
-1,
2504,
2126,
1165,
3999,
3246,
571,
2822,
1669,
3993,
2162,
1201,
-1,
568,
-1,
2858,
1741,
3684,
765,
1198,
429,
2159,
-1,
562,
1738,
3681,
2855,
1735,
3678,
3987,
3171,
-1,
3060,
-1,
842,
1195,
425,
839,
2156,
-1,
1732,
3675,
2150,
2852,
1729,
3672,
3150,
2846,
1717,
3660,
836,
-1, -1, -1,
833,
-1,
3144,
-1,
820,
1186,
417,
2147,
2453,
49,
1714,
3657,
2843,
1711,
3654,
-1,
2387,
-1,
1399,
-1,
816,
2141,
-1,
813,
3882,
-1,
2837,
1699,
3642,
2123,
1162,
2066,
631,
360,
2819,
1663,
2747,
802,
-1, -1, -1,
2117,
1156,
3858,
1456,
758,
2813,
1651,
2111,
1150,
396,
3291,
2426,
2807,
1639,
2060,
1096,
745,
1120,
375,
2741,
3852,
2777,
-1,
736,
2099,
1138,
390,
1444,
-1,
2795,
1615,
3168,
3846,
2093,
1132,
384,
15,
2723,
2789,
1603,
2465,
62,
2738,
2375,
3318,
1363,
2120,
1159,
2399,
-1,
1411,
2816,
1657,
4062,
3468,
1954,
931,
3462,
1951,
925,
2609,
3216,
752,
2603,
3837,
1894,
-1,
198,
1891,
1876,
195,
180,
3834,
1023,
-1,
3831,
2270,
2696,
1303,
2264,
2258,
1300,
1285,
-1, -1,
2084,
1108,
3312,
3828,
1873,
2765,
177,
3825,
1870,
2957,
174,
3813,
2951,
2921,
3063,
2252,
1123,
1282,
-1,
2246,
2780,
1279,
-1,
2105,
1144,
-1,
670,
3810,
2801,
1627,
3807,
3603,
1909,
2915,
213,
-1,
126,
2909,
1840,
3783,
1558,
3585,
2075,
1099,
3795,
1318,
108,
2756,
1822,
3765,
1540,
1189,
3942,
1183,
24,
2729,
1720,
3663,
1708,
3651,
-1,
2987,
-1,
1375,
2114,
1153,
823,
3402,
810,
2810,
1645,
-1,
4074,
2072,
1696,
3639,
2102,
1141,
2753,
4071,
742,
2798,
1621,
3309,
798,
3261,
-1, -1,
4029,
2471,
68,
4044,
2459,
56,
646,
4023,
-1,
2405,
-1,
1417,
2393,
9,
1405,
21,
2726,
4011,
2447,
43,
2369,
3255,
1357,
3282,
1369,
-1,
2381,
3477,
1393,
940,
258,
3300,
3906,
2618,
1117,
3096,
3627,
3954,
2774,
529,
3294,
147,
526,
511,
3525,
1582,
993,
-1,
2444,
3465,
2666,
928,
252,
890,
3447,
2606,
909,
-1, -1,
3090,
2588,
3126,
3165,
508,
-1,
3162,
2315,
505,
3441,
3435,
902,
896,
-1, -1,
2582,
2576,
1903,
1900,
207,
204,
2309,
2303,
1017,
1888,
-1,
192,
2690,
4065,
-1,
1312,
1309,
544,
3270,
2108,
1147,
1882,
1297,
186,
2804,
1633,
1011,
700,
-1, -1,
2684,
2975,
2969,
3285,
1291,
655,
1005,
3816,
2945,
3804,
2678,
3306,
2081,
1105,
2078,
1102,
-1,
2762,
999,
2759,
2933,
3372,
2672,
3,
-1,
3792,
3114,
3519,
694,
987,
2363,
3918,
1351,
2660,
3513,
-1,
980,
-1, -1, -1,
2654,
3129,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
649,
-1, -1,
3396,
-1, -1, -1, -1, -1, -1,
3303,
-1, -1,
3960,
3105,
-1,
3948,
-1, -1, -1, -1,
3390,
-1, -1,
3900,
-1,
3912,
-1, -1, -1,
3936,
3384,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1,
3378,
-1,
3102,
-1, -1, -1, -1, -1, -1,
-1, -1,
3366,
3279,
-1, -1, -1, -1, -1,
3360,
-1, -1, -1,
538,
535,
-1, -1, -1,
619,
-1,
523,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1,
517,
-1, -1, -1,
616,
-1, -1, -1, -1,
3123,
-1, -1, -1, -1,
610,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1,
604,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1,
4059,
-1, -1,
4053,
-1,
3894,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1,
3111,
-1,
3108,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1,
4068,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1,
4056,
-1, -1, -1, -1,
4038,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1,
4032,
4026
};
{
int key = hash(codes);
if (key <= MAX_HASH_VALUE)
{
int index = wordlist[key];
if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds1 + index, 1) == 0)
return index;
}
}
return -1;
}
|