Blob Blame History Raw
/* This file was converted by gperf_fold_key_conv.py
      from gperf output file. */
/* ANSI-C code produced by gperf version 3.0.4 */
/* Command-line: gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N unicode_fold1_key unicode_fold1_key.gperf  */
/* Computed positions: -k'1-3' */



/* This gperf source file was generated by make_unicode_fold_data.py */
#include <string.h>
#include "regenc.h"

#define TOTAL_KEYWORDS 1196
#define MIN_WORD_LENGTH 3
#define MAX_WORD_LENGTH 3
#define MIN_HASH_VALUE 6
#define MAX_HASH_VALUE 1304
/* maximum key range = 1299, duplicates = 0 */

#ifdef __GNUC__
__inline
#else
#ifdef __cplusplus
inline
#endif
#endif
/*ARGSUSED*/
static unsigned int
hash(OnigCodePoint codes[])
{
  static const unsigned short asso_values[] =
    {
         7,    5,   93,    4,    1,   16,  893, 1162,  891, 1085,
       889,  380,    8,  376, 1101,  332, 1100,  329, 1099,    3,
       874,  943,  870,  914,   87,  322, 1095,  317, 1093,  579,
         2,   11, 1054,   13,  956,  902,   31,  775,  632,  343,
       619,  330,  611,  323,    0,   27,  850,  311,  599,  309,
       849, 1240,  862, 1226,  445, 1220,  591,  888,  583, 1253,
      1091, 1217, 1087, 1079, 1074,  419,  858,  845,  441,  304,
       400,  842,  394, 1067,  389, 1053,  383, 1211,  218, 1206,
       202,  436,  194, 1202,  181, 1183,  153, 1177,  376, 1166,
       166,   56,  323,    0,  571,  112,  834,  877, 1035,  609,
       123,  901,  145,  684,  115,  933,  364, 1163,  345,  603,
       311,  144,  573,  162,  563, 1188,  260,  964,  240, 1174,
       476, 1034,  453,  814,  669,  454,  815,  799,  656, 1242,
       963,  113,  806,  270,  561,  304,  795,  268, 1031,  581,
      1157,  182,   44,  467, 1154, 1305, 1042, 1305, 1028,  387,
       869, 1305,  362, 1305, 1142, 1305,  639,  234, 1060, 1305,
      1131,  381,  190,  194,  780,  185,  140,   34,  209,  173,
      1021,  369, 1017,  145, 1150,  834,  788,  820, 1011,  116,
       773,  658, 1004, 1241,  767,   64,  762,  648,  756,  510,
       999,  487,  750,  254,  740,  625,  733,  662,  728,  992,
       720,  713,  533,  986,  515,  169,  427,  702,  266,  693,
       687,  644,  337,  963,  556,  954,  524,  947,  329,  942,
       288,  931,  229,  925,  104, 1143,   80,  908,   48, 1138,
        71, 1133,   59, 1131,  295,  605,  276,  525,  547, 1107,
       540,  406,  504,  156,  920,   93,  493,   84,  676,   34,
       247,    4, 1128,   14,   18,   32,  220,    2,  131
    };
  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)];
}

#ifdef __GNUC__
__inline
#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
__attribute__ ((__gnu_inline__))
#endif
#endif
int
unicode_fold1_key(OnigCodePoint codes[])
{
  static const short int wordlist[] =
    {
      -1, -1, -1, -1, -1, -1,

      3240,

      2547,

      1016,

      1772,

      1712,

      1751,

      231,

      171,

      210,

      884,

      165,

      1724,

      147,

      2085,

      183,

      2106,

      2082,

      1322,

      1262,

      1301,

      1253,

      2073,

      153,

      887,

      493,

      1274,

      156,

      3243,

      2088,

      2748,

      2826,

      2793,

      2745,

      3234,

      1760,

      2985,

      2772,

      219,

      1460,

      2829,

      159,

      2835,

      144,

      2127,

      2751,

      2601,

      1085,

      1920,

      1310,

      2730,

      1214,

      2034,

      1643,

      854,

      459,

      3456,

      80,

      2541,

      1010,

      2844,

      2283,

      1220,

      2040,

      1655,

      860,

      465,

      3468,

      92,

      1514,

      756,

      405,

      2286,

      2733,

      1217,

      2037,

      1649,

      857,

      462,

      3462,

      86,

      2394,

      2727,

      1211,

      2031,

      1637,

      851,

      456,

      3450,

      1700,

      3228,

      1742,

      2406,

      138,

      201,

      559,

      502,

      541,

      1694,

      878,

      2121,

      3507,

      132,

      514,

      2400,

      1292,

      2724,

      1208,

      2028,

      1631,

      848,

      453,

      3444,

      2388,

      2553,

      1022,

      2808,

      2565,

      1040,

      1863,

      354,

      1496,

      315,

      399,

      12,

      2562,

      1034,

      1856,

      2217,

      2268,

      309,

      1427,

      0,

      1346,

      1259,

      2079,

      2205,

      2382,

      499,

      694,

      168,

      1334,

      2637,

      1121,

      1941,

      1457,

      2577,

      387,

      1037,

      1860,

      1478,

      3072,

      312,

      31,

      6,

      2526,

      995,

      1835,

      2211,

      3066,

      288,

      1688,

      1367,

      1340,

      3501,

      126,

      2193,

      3603,

      2538,

      1007,

      1841,

      37,

      1178,

      294,

      1574,

      824,

      3138,

      3387,

      1466,

      2199,

      1373,

      3069,

      532,

      2520,

      989,

      1832,

      2949,

      3213,

      285,

      3045,

      1454,

      3597,

      2631,

      1115,

      2190,

      3354,

      2514,

      983,

      1829,

      1448,

      3225,

      282,

      3051,

      3348,

      2508,

      977,

      1826,

      631,

      676,

      279,

      643,

      2640,

      1124,

      1944,

      1463,

      3207,

      390,

      3042,

      637,

      3342,

      2502,

      971,

      1823,

      1256,

      2076,

      276,

      3132,

      496,

      3201,

      162,

      3039,

      2721,

      1205,

      2025,

      1625,

      845,

      3195,

      3438,

      3036,

      658,

      640,

      378,

      2580,

      1061,

      1884,

      3141,

      712,

      336,

      613,

      52,

      1247,

      2067,

      3189,

      2235,

      3033,

      2301,

      3540,

      2919,

      1388,

      1538,

      786,

      622,

      2376,

      1058,

      1881,

      2913,

      709,

      333,

      2700,

      46,

      2004,

      1583,

      833,

      2229,

      3396,

      2295,

      607,

      691,

      1382,

      1226,

      2046,

      1667,

      866,

      471,

      3480,

      105,

      1445,

      2916,

      1433,

      601,

      2718,

      1202,

      2022,

      1619,

      842,

      2892,

      3432,

      598,

      1223,

      2043,

      1661,

      863,

      468,

      3474,

      99,

      3315,

      2475,

      944,

      2898,

      2418,

      3255,

      264,

      3249,

      595,

      1049,

      1872,

      3591,

      2178,

      324,

      2340,

      27,

      2370,

      1439,

      2889,

      3237,

      2544,

      1013,

      1844,

      2412,

      1364,

      297,

      2715,

      1199,

      2019,

      1613,

      839,

      2886,

      3426,

      3162,

      2706,

      1190,

      2010,

      1595,

      2142,

      2883,

      3408,

      2817,

      3081,

      1046,

      1869,

      2277,

      2811,

      321,

      3549,

      3606,

      664,

      2136,

      3231,

      2787,

      3054,

      2880,

      2781,

      2364,

      1358,

      2616,

      1100,

      1935,

      1043,

      1866,

      372,

      2346,

      318,

      2853,

      18,

      1472,

      3585,

      393,

      2223,

      2532,

      1001,

      1838,

      3078,

      1352,

      291,

      3336,

      2496,

      965,

      1820,

      381,

      2196,

      3330,

      2490,

      959,

      1817,

      369,

      3324,

      2484,

      953,

      1814,

      586,

      3075,

      3318,

      2478,

      947,

      1811,

      2775,

      655,

      2187,

      2739,

      2769,

      3219,

      1682,

      3048,

      2181,

      3495,

      120,

      3579,

      3183,

      625,

      3030,

      3303,

      2463,

      932,

      3177,

      3561,

      3027,

      258,
      -1,

      3171,

      2697,

      3024,

      2001,

      1577,

      827,

      3165,

      3390,

      3021,

      3351,

      2511,

      980,

      652,
      -1,

      3312,

      2472,

      941,

      1808,

      3270,

      2430,

      899,

      1787,
      -1,

      2289,

      243,

      2928,

      2175,
      -1,

      1067,

      1890,

      2157,

      715,

      342,

      345,

      65,

      74,
      -1,

      2901,

      2247,

      2256,

      2313,

      2322,

      3198,

      1400,

      1409,
      -1,

      366,

      3159,

      706,

      3018,

      592,

      1064,

      1887,

      2997,

      700,

      339,

      589,

      59,
      -1,

      2925,
      -1,

      2241,

      3090,

      2307,

      1532,

      779,

      1394,

      2742,

      1241,

      2061,

      1697,

      881,

      483,
      -1,

      135,

      3111,

      2964,
      -1,

      2922,

      1235,

      2055,

      1685,

      875,

      480,

      3498,

      123,

      3543,

      1526,

      772,

      2694,

      2895,

      1998,

      1571,

      820,

      421,

      3384,

      3156,

      2877,

      2712,

      1196,

      2016,

      1607,

      1670,

      2874,

      3420,

      3483,

      108,

      2691,

      2871,

      1995,

      1565,

      814,

      574,

      3378,

      2868,

      1232,

      2052,

      1679,

      872,

      477,

      3492,

      117,

      1229,

      2049,

      1673,

      869,

      474,

      3486,

      111,

      2358,

      2709,

      1193,

      2013,

      1601,

      697,

      2589,

      3414,

      1908,

      1055,

      1878,

      357,
      -1,

      330,

      670,

      40,

      2550,

      1019,

      1847,

      1052,

      1875,

      300,

      1436,

      327,

      1376,

      34,

      2865,

      3282,

      2442,

      911,

      1793,

      363,

      2352,

      249,

      1370,

      3276,

      2436,

      905,

      1790,

      2169,

      3102,

      246,

      3087,

      3252,
      -1,

      3537,

      1778,

      2163,

      2574,

      237,

      3057,

      2823,

      3084,

      1664,

      3573,

      24,

      3477,

      102,

      1769,
      -1,

      1328,

      228,

      3003,

      3531,

      1361,

      2202,

      1766,

      2145,
      -1,

      225,

      3000,

      2862,

      1319,

      1544,

      792,

      2139,

      3357,
      -1,

      2991,

      1763,

      1316,

      2415,

      222,

      2859,

      2622,

      1106,

      3567,
      -1,

      2133,

      375,

      2982,

      2856,

      1592,

      1313,

      432,

      3405,

      1520,

      762,

      2979,

      679,

      2274,

      661,

      1076,

      1899,

      2850,

      724,

      1502,

      742,

      1166,

      628,

      1550,

      2976,

      2265,

      3363,

      2331,

      1070,

      1893,

      1418,

      3123,

      685,

      2343,

      71,

      1244,

      2064,

      1703,

      2253,

      487,

      2319,

      141,
      -1,

      1406,
      -1,

      2703,

      1187,

      2007,

      1589,

      9,

      565,

      3402,

      1184,

      2214,

      1586,

      836,

      429,

      3399,

      1343,

      2937,

      634,

      1181,

      556,

      1580,

      830,

      425,

      3393,
      -1,

      3510,

      2904,

      553,

      2931,

      1172,
      -1,

      1562,

      810,

      417,

      3375,

      2688,
      -1,

      1992,

      1559,

      807,

      550,

      3372,
      -1,

      2685,

      3558,

      1989,

      1553,

      800,

      2682,

      3366,

      1986,

      1547,

      796,
      -1,

      3360,

      2679,

      1163,

      1983,

      1541,

      789,

      414,
      -1,

      3516,
      -1,

      673,

      2676,

      1160,

      1980,

      1535,

      783,

      411,

      2670,

      1154,

      1974,

      1523,

      767,

      408,

      2667,

      1151,

      1971,

      1517,

      759,

      2664,

      1148,

      1968,

      1511,

      752,

      3555,

      2658,

      1142,

      1962,

      1499,

      739,

      3552,

      2970,

      2634,

      1118,

      1938,

      1451,

      2271,

      384,

      2130,

      3546,

      2652,

      1136,

      1956,

      1487,

      730,

      396,
      -1,

      2592,

      3153,

      1911,

      3528,
      -1,

      360,

      3150,

      2847,

      721,

      348,

      3525,

      2586,

      1082,

      1905,
      -1,

      2262,

      1442,

      2328,

      3519,

      3135,

      1415,

      1073,

      1896,

      3513,

      718,
      -1,

      68,

      1430,

      1490,

      733,

      2250,

      2259,

      2316,

      2325,

      3105,

      1403,

      1412,
      -1,

      3093,

      2556,

      1025,

      1850,

      1484,

      727,

      303,

      3099,

      3321,

      2481,

      950,

      3309,

      2469,

      938,

      267,

      3258,

      3246,

      261,

      1781,

      1775,

      2184,

      240,

      234,

      2172,

      3306,

      2466,

      935,

      1805,

      3264,

      2424,

      893,

      1784,

      1331,

      1325,
      -1,

      3060,

      2613,

      1097,

      1932,

      1739,

      2151,

      3168,

      198,

      1736,

      2559,

      1028,

      195,
      -1,

      2115,
      -1,

      2994,

      2988,

      2109,

      1289,

      3279,

      2439,

      908,

      1286,

      1721,

      3015,

      1718,

      180,

      1715,

      177,

      2802,

      174,

      2166,

      2103,

      2796,

      2097,

      3117,

      2091,

      1271,
      -1,

      1268,

      3,

      1265,
      -1,

      1640,

      2208,

      2124,

      3453,

      77,

      2766,

      1337,

      2760,

      2280,

      2754,

      1238,

      2058,

      1691,
      -1,

      2118,

      3504,

      129,

      1628,

      2841,

      450,

      3441,
      -1,

      2568,

      1622,

      2940,

      447,

      3435,

      583,

      2391,

      15,

      2805,

      568,

      562,

      2220,

      1616,

      2934,

      444,

      3429,

      1349,

      1610,

      580,

      441,

      3423,

      2112,

      571,

      2379,

      1604,

      1757,

      438,

      3417,

      216,

      2373,

      529,

      1079,

      1902,

      1598,

      526,

      435,

      3411,

      2799,

      49,

      1307,

      2367,

      2907,

      2232,

      2337,

      2298,

      2361,

      1424,

      1385,
      -1,

      511,

      2838,

      508,

      2355,

      505,

      1175,
      -1,

      1568,

      817,
      -1,

      3381,

      1169,

      2349,

      1556,

      804,

      3096,

      3369,

      2673,

      1157,

      1977,

      1529,

      776,

      2661,

      1145,

      1965,

      1505,

      746,

      2961,

      3594,

      2655,

      1139,

      1959,

      1493,

      736,

      3588,

      2646,

      1130,

      1950,

      1475,

      2643,

      1127,

      1947,

      1469,
      -1,

      646,

      3582,

      2610,

      1094,

      1929,

      2595,

      3576,

      1914,

      2583,
      -1,

      1031,

      1853,
      -1,

      3570,

      306,

      62,

      2607,

      1091,

      1926,

      2244,
      -1,

      2310,

      3564,

      547,

      1397,

      3147,

      3333,

      2493,

      962,

      3144,

      1754,

      667,

      273,

      213,

      2625,

      1109,

      3114,
      -1, -1,

      3108,

      3327,

      2487,

      956,

      3063,

      1304,

      3534,

      270,

      3300,

      2460,

      929,

      1802,

      3522,

      3297,

      2457,

      926,

      2832,
      -1, -1,

      255,

      3180,

      3294,

      2454,

      923,

      1799,

      3288,

      2448,

      917,

      1796,

      3126,

      1748,

      2100,

      1745,

      207,

      3174,

      204,

      1733,

      1730,

      1727,

      192,

      189,

      186,

      2736,

      3012,

      1298,

      1676,

      1295,

      2763,

      3489,

      114,

      1283,

      1280,

      1277,
      -1, -1,

      2820,

      3009,

      2814,
      -1,

      682,

      3006,

      2790,

      2784,

      2778,

      1250,

      2070,

      2628,

      1112,

      490,

      1658,

      150,

      1652,

      3471,

      96,

      3465,

      89,

      1646,

      2619,

      1103,

      3459,

      83,

      1634,

      544,
      -1,

      3447,

      2649,

      1133,

      1953,

      1481,

      2604,

      1088,

      1923,

      2598,
      -1,

      1917,
      -1, -1,

      2409,

      2571,

      2403,

      3129,

      2535,

      1004,

      2958,

      2397,

      21,

      2943,

      577,

      2094,

      2385,

      2910,

      3120,

      2529,

      998,

      1355,
      -1,

      56,

      2955,

      2523,

      992,

      2238,

      538,

      2304,

      535,

      2757,

      1391,
      -1,

      523,

      520,

      517,

      43,
      -1, -1,

      3222,

      2226,

      2973,

      2292,

      2517,

      986,

      1379,

      3345,

      2505,

      974,
      -1,

      3216,

      3339,

      2499,

      968,
      -1, -1,

      3210,

      3291,

      2451,

      920,

      3273,

      2433,

      902,

      252,
      -1,

      703,

      3267,

      2427,

      896,

      3600,
      -1, -1,

      2160,
      -1, -1,

      3204,

      1709,
      -1,

      2154,

      3192,

      3261,

      2421,

      890,
      -1,

      3186,

      1508,

      749,

      402,

      351,

      1706,
      -1,

      688,

      2148,

      3285,

      2445,

      914,

      2334,

      649,
      -1,

      1421,

      619,
      -1, -1, -1, -1, -1, -1,
      -1, -1, -1, -1,

      616,
      -1, -1, -1, -1, -1,

      610,
      -1, -1, -1, -1, -1,

      2967,
      -1, -1, -1, -1, -1, -1,
      -1, -1, -1, -1, -1,

      2952,

      604,
      -1,

      2946
    };

  if (0 == 0)
    {
      int key = hash(codes);

      if (key <= MAX_HASH_VALUE && key >= 0)
        {
          int index = wordlist[key];

          if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds1 + index, 1) == 0)
            return index;
        }
    }
  return -1;
}