blob: d2a979817f89a8db2b48434ea33949fdf338c1cd [file] [log] [blame]
// GENERATED FILE - DO NOT EDIT.
// Generated by gen_builtin_symbols.py using data from builtin_variables.json and
// builtin_function_declarations.txt.
//
// Copyright 2020 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// ImmutableString_autogen.cpp: Wrapper for static or pool allocated char arrays, that are
// guaranteed to be valid and unchanged for the duration of the compilation. Implements
// mangledNameHash using perfect hash function from gen_builtin_symbols.py
#include "compiler/translator/ImmutableString.h"
std::ostream &operator<<(std::ostream &os, const sh::ImmutableString &str)
{
return os.write(str.data(), str.length());
}
#if defined(_MSC_VER)
# pragma warning(disable : 4309) // truncation of constant value
#endif
namespace
{
constexpr int mangledkT1[] = {3102, 1325, 1351, 3001, 1248, 3253, 589, 739, 2360, 2951,
1700, 3759, 2038, 664, 3245, 3120, 1585, 527, 2294, 2587,
1485, 188, 2635, 932, 884, 1991, 918, 320, 2213, 3603,
676, 1242, 115, 2611, 2163, 2535, 3233, 54, 3230, 1500};
constexpr int mangledkT2[] = {1129, 226, 3871, 1567, 3267, 3307, 452, 3099, 2330, 3246,
3512, 1556, 3216, 909, 1679, 1812, 3619, 2551, 2821, 3333,
3764, 2526, 2149, 2101, 1636, 2341, 2985, 454, 627, 1307,
466, 537, 2536, 736, 2238, 1704, 1050, 3135, 564, 182};
constexpr int mangledkG[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 369, 0, 0, 2753, 0, 0, 398,
3391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2472,
0, 647, 0, 0, 0, 0, 0, 642, 0, 0, 0, 0, 0, 231, 0, 0,
0, 2514, 1769, 3340, 0, 0, 362, 0, 110, 0, 0, 0, 0, 3025, 2881, 0,
0, 0, 0, 0, 0, 987, 0, 2455, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1190, 0, 0, 0, 0, 0, 2290, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 2271, 0, 0, 0, 0, 0, 0, 3237, 0, 0, 1770, 1891,
2989, 2351, 408, 0, 0, 0, 0, 0, 2266, 476, 609, 0, 0, 2987, 0, 0,
0, 0, 0, 0, 0, 191, 1037, 0, 0, 0, 0, 0, 0, 0, 0, 1128,
0, 0, 1459, 0, 0, 0, 0, 3306, 0, 0, 1842, 0, 0, 0, 3272, 0,
0, 1316, 0, 0, 0, 0, 0, 746, 0, 0, 0, 193, 44, 0, 3152, 0,
0, 0, 11, 2349, 0, 1453, 2957, 186, 0, 2647, 0, 0, 3238, 3552, 3388, 0,
2497, 3256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1947, 0, 0, 1001,
2019, 2827, 0, 0, 0, 0, 2879, 2423, 3786, 0, 0, 0, 3849, 0, 0, 251,
0, 0, 0, 0, 2669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1238, 0,
0, 0, 0, 0, 264, 1463, 0, 0, 192, 0, 1136, 0, 835, 840, 0, 0,
1816, 3064, 0, 3621, 2056, 0, 80, 0, 862, 0, 0, 0, 1962, 824, 0, 2020,
0, 0, 0, 0, 3395, 1321, 0, 0, 0, 109, 0, 0, 0, 0, 3817, 0,
3079, 0, 0, 0, 617, 0, 0, 2648, 0, 0, 445, 3510, 123, 87, 3251, 761,
1030, 0, 0, 1633, 0, 228, 1478, 0, 0, 0, 0, 0, 0, 2959, 0, 0,
0, 3200, 0, 99, 0, 3274, 0, 0, 0, 223, 0, 0, 1955, 0, 0, 0,
0, 3905, 3487, 0, 1581, 690, 0, 0, 2688, 0, 2473, 3278, 0, 0, 1522, 666,
0, 0, 1572, 0, 621, 3196, 0, 0, 1465, 342, 0, 0, 0, 0, 2122, 1937,
139, 0, 553, 0, 1649, 0, 939, 3405, 1711, 1982, 0, 3505, 0, 643, 0, 0,
0, 0, 0, 1722, 739, 3352, 0, 2086, 164, 0, 2169, 1867, 0, 0, 0, 0,
0, 3794, 1144, 0, 1237, 0, 403, 0, 919, 345, 0, 1837, 3435, 2897, 0, 0,
0, 0, 2438, 2579, 0, 0, 0, 0, 0, 3725, 0, 3236, 13, 0, 2916, 424,
0, 0, 0, 0, 0, 3898, 0, 0, 0, 0, 0, 0, 0, 1812, 0, 3315,
0, 3371, 0, 0, 0, 2635, 0, 0, 0, 0, 0, 2483, 92, 1419, 0, 1120,
110, 0, 0, 0, 0, 3102, 3616, 2067, 0, 3592, 658, 1957, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 2267, 2679, 0, 0, 820, 2901, 0, 0, 1532, 1285,
0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 509, 2831,
1470, 1386, 0, 0, 0, 0, 0, 3542, 0, 0, 0, 0, 938, 647, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 183, 0, 439,
1368, 0, 0, 0, 0, 1264, 169, 0, 0, 576, 0, 1205, 0, 1749, 0, 0,
0, 0, 418, 3562, 0, 1306, 2691, 0, 0, 2663, 0, 717, 440, 0, 0, 0,
0, 0, 0, 0, 0, 2007, 0, 2659, 0, 0, 2967, 1670, 3663, 0, 0, 0,
0, 0, 0, 535, 0, 2847, 389, 0, 3079, 0, 0, 0, 199, 0, 652, 3316,
0, 3439, 0, 1526, 1797, 2727, 0, 2465, 0, 0, 1840, 0, 0, 711, 1455, 0,
0, 578, 2651, 2172, 1292, 0, 0, 0, 0, 3432, 0, 0, 0, 0, 0, 1999,
0, 0, 0, 79, 0, 319, 1263, 1806, 515, 254, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1730, 0, 713, 2006, 1138, 417, 3845, 0, 0,
982, 0, 1603, 0, 0, 0, 0, 0, 2956, 869, 0, 0, 0, 5, 0, 0,
1428, 0, 0, 2556, 642, 0, 0, 0, 0, 590, 1898, 3336, 0, 0, 76, 0,
0, 0, 0, 1688, 1114, 786, 0, 0, 2820, 0, 821, 0, 3568, 3053, 0, 0,
0, 0, 0, 0, 0, 0, 2104, 429, 3762, 0, 817, 0, 0, 0, 538, 3868,
3601, 2272, 0, 147, 0, 3428, 2289, 0, 0, 800, 2863, 2709, 747, 0, 73, 787,
360, 3017, 521, 0, 0, 0, 0, 0, 3667, 1791, 121, 0, 0, 438, 2027, 0,
0, 1139, 0, 0, 0, 0, 0, 483, 3086, 0, 3837, 2221, 3576, 1778, 118, 0,
0, 0, 0, 0, 0, 3590, 3419, 0, 0, 1304, 3407, 0, 1193, 1248, 0, 3248,
0, 1003, 0, 783, 774, 0, 1225, 333, 0, 0, 0, 1056, 0, 0, 1027, 771,
2925, 0, 0, 1906, 2437, 1227, 3700, 2010, 0, 0, 0, 486, 0, 3652, 510, 307,
1576, 1948, 500, 0, 3330, 0, 3074, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 3299, 0, 0, 0, 2124, 1028, 0, 2643, 0, 0, 0, 0, 3077, 0, 0,
0, 0, 0, 0, 0, 593, 3074, 0, 922, 0, 0, 0, 0, 0, 3868, 1305,
0, 1111, 813, 1115, 0, 1184, 1970, 3152, 0, 811, 3533, 764, 2972, 0, 0, 461,
2773, 1300, 154, 0, 0, 1416, 0, 0, 0, 0, 515, 0, 0, 0, 0, 0,
2042, 0, 1712, 1508, 342, 0, 1990, 2056, 3659, 0, 0, 0, 0, 3053, 1414, 1881,
0, 3381, 0, 0, 0, 2084, 0, 0, 1786, 1016, 108, 716, 0, 1685, 2807, 486,
0, 3171, 0, 3890, 0, 0, 0, 0, 0, 279, 0, 0, 0, 2332, 0, 1995,
3770, 0, 0, 1029, 643, 0, 0, 0, 0, 2322, 0, 0, 0, 0, 3874, 1625,
0, 0, 1531, 0, 0, 2707, 0, 0, 0, 0, 1021, 0, 308, 0, 0, 0,
0, 2164, 547, 0, 2650, 0, 926, 0, 0, 3708, 305, 2715, 0, 0, 1195, 1271,
3872, 2643, 0, 3389, 0, 0, 0, 0, 1492, 178, 0, 510, 673, 97, 0, 2096,
0, 0, 0, 0, 1666, 1404, 0, 0, 0, 0, 2269, 0, 0, 1805, 0, 1619,
638, 330, 0, 0, 1902, 2158, 3656, 3698, 1124, 2496, 0, 0, 1379, 2945, 314, 1841,
0, 0, 3345, 141, 2544, 0, 0, 205, 2443, 0, 0, 351, 0, 0, 336, 0,
2356, 1068, 2273, 1011, 2102, 0, 0, 0, 0, 0, 937, 0, 0, 2268, 0, 2047,
0, 601, 0, 634, 0, 484, 2284, 0, 0, 1873, 3458, 0, 3515, 255, 1427, 3149,
0, 0, 0, 528, 707, 1934, 0, 0, 0, 0, 281, 0, 3450, 0, 0, 0,
774, 0, 2968, 567, 2854, 0, 0, 0, 0, 0, 0, 0, 2582, 1519, 0, 0,
1161, 0, 0, 0, 998, 809, 0, 0, 1810, 0, 0, 0, 0, 0, 0, 0,
0, 2253, 0, 1593, 0, 3644, 2022, 2789, 0, 0, 0, 3547, 0, 87, 2698, 3443,
0, 0, 0, 0, 3311, 386, 2148, 0, 1412, 0, 0, 3563, 3213, 0, 0, 2239,
3842, 0, 461, 1553, 1762, 0, 0, 878, 0, 0, 0, 2333, 1238, 1711, 1377, 2122,
2163, 2982, 0, 976, 319, 2853, 123, 58, 0, 2619, 2875, 1077, 0, 0, 1076, 729,
0, 0, 0, 0, 1437, 486, 3878, 760, 264, 0, 3377, 1, 2028, 0, 0, 214,
929, 2273, 0, 0, 1378, 0, 0, 0, 830, 742, 0, 1687, 0, 0, 0, 1750,
0, 240, 0, 3548, 802, 0, 3716, 0, 806, 0, 2572, 0, 0, 2472, 0, 1904,
2925, 1245, 2118, 1237, 0, 3108, 0, 3586, 0, 0, 1564, 0, 0, 1311, 0, 0,
2515, 1035, 0, 1324, 1073, 3684, 0, 0, 3252, 0, 307, 0, 0, 2724, 0, 0,
0, 2185, 3405, 0, 78, 1466, 0, 2213, 1117, 1623, 0, 1853, 1268, 3271, 264, 2524,
3706, 0, 2425, 0, 893, 595, 1036, 0, 0, 668, 573, 1334, 105, 0, 2812, 1838,
2117, 488, 1148, 1488, 297, 1453, 0, 1245, 2407, 1926, 3685, 57, 0, 0, 883, 0,
188, 3546, 552, 1102, 2627, 1842, 0, 0, 3521, 2174, 0, 2719, 1546, 3124, 0, 0,
2206, 2535, 0, 0, 0, 140, 0, 0, 3493, 1497, 1348, 0, 0, 0, 3461, 212,
1491, 551, 414, 0, 347, 746, 0, 0, 1961, 397, 0, 662, 0, 3477, 0, 1963,
0, 1091, 0, 3399, 3829, 2167, 0, 532, 259, 2778, 1995, 590, 1971, 0, 0, 3178,
2936, 0, 55, 1746, 0, 1972, 1193, 3683, 0, 1784, 437, 0, 0, 0, 0, 0,
2628, 1930, 0, 3824, 0, 0, 3330, 2162, 1871, 170, 61, 0, 607, 0, 157, 0,
1073, 622, 0, 0, 2132, 3659, 0, 0, 1928, 327, 1583, 580, 0, 1378, 0, 285,
0, 596, 2213, 0, 0, 3593, 655, 1767, 0, 0, 0, 2345, 0, 1591, 0, 0,
0, 378, 1434, 0, 9, 708, 1669, 796, 0, 0, 1333, 0, 0, 30, 1703, 3162,
0, 0, 1110, 3487, 1980, 0, 0, 0, 2389, 328, 0, 0, 0, 727, 0, 168,
736, 0, 1494, 0, 0, 0, 3366, 142, 0, 1266, 454, 1319, 0, 0, 0, 2024,
1291, 1776, 0, 1984, 1979, 1576, 1255, 1649, 73, 0, 0, 0, 0, 3866, 2200, 1015,
2038, 1504, 0, 0, 3477, 2677, 0, 151, 0, 1516, 1434, 0, 0, 653, 2431, 1141,
0, 509, 0, 2841, 0, 0, 2112, 335, 424, 0, 1634, 3443, 2261, 0, 1897, 0,
0, 0, 1426, 0, 1467, 2532, 0, 0, 3093, 3072, 2967, 433, 3599, 2202, 2860, 1107,
3405, 0, 2890, 1005, 0, 0, 0, 0, 3051, 0, 0, 1020, 324, 51, 0, 0,
995, 1922, 1176, 0, 0, 2615, 2154, 1512, 0, 169, 0, 3584, 0, 2745, 1280, 3882,
40, 912, 242, 0, 3341, 1567, 2491, 1281, 1828, 3865, 2689, 1528, 58, 822, 986, 2677,
1404, 0, 0, 0, 98, 2764, 0, 0, 0, 3064, 0, 3778, 1192, 0, 939, 3627,
0, 0, 1076, 0, 30, 167, 2252, 0, 0, 0, 0, 0, 1584, 1698, 0, 0,
0, 0, 925, 2765, 1581, 639, 0, 1858, 0, 3597, 0, 0, 0, 116, 2833, 756,
0, 0, 0, 3849, 680, 882, 638, 0, 814, 0, 2531, 0, 0, 0, 372, 0,
2114, 0, 523, 2887, 1325, 3512, 293, 831, 2125, 573, 999, 3066, 0, 3863, 2712, 0,
0, 893, 0, 2196, 0, 0, 188, 1406, 0, 0, 0, 0, 3189, 266, 0, 0,
3693, 540, 1530, 2066, 452, 1547, 1045, 2086, 0, 2606, 2502, 0, 441, 390, 0, 679,
1300, 706, 0, 1609, 1230, 0, 1926, 0, 0, 2590, 0, 44, 0, 0, 1555, 3473,
0, 334, 427, 560, 0, 0, 0, 3025, 1559, 2084, 1540, 1550, 2157, 0, 582, 0,
0, 1467, 0, 1250, 0, 1, 2835, 0, 0, 1089, 0, 0, 0, 768, 1479, 1602,
0, 0, 0, 3455, 3306, 0, 0, 0, 0, 200, 1798, 2748, 1836, 0, 3238, 0,
2091, 0, 900, 0, 3182, 1026, 1616, 0, 2489, 0, 0, 156, 271, 0, 0, 81,
0, 1743, 1525, 0, 775, 0, 1891, 1656, 2225, 0, 2786, 1365, 1562, 0, 0, 3531,
0, 1449, 0, 3790, 0, 1631, 390, 1760, 3250, 1334, 1646, 3335, 260, 33, 488, 1549,
1879, 1678, 1357, 0, 0, 0, 2456, 647, 2140, 192, 1103, 0, 0, 0, 0, 0,
0, 1253, 0, 0, 0, 0, 0, 673, 2638, 326, 0, 669, 604, 2217, 3391, 1822,
1074, 1845, 634, 0, 0, 0, 0, 3311, 0, 3486, 0, 1687, 0, 0, 0, 0,
1698, 3007, 2597, 415, 936, 0, 0, 624, 3477, 0, 0, 1994, 1287, 1836, 0, 0,
1330, 0, 979, 3621, 0, 3582, 3880, 3207, 1600, 0, 0, 1419, 0, 2658, 2005, 0,
0, 0, 0, 1973, 0, 431, 160, 510, 1346, 878, 0, 1261, 1496, 3397, 1482, 0,
0, 0, 3239, 0, 0, 1562, 0, 0, 0, 2065, 0, 143, 726, 908, 1174, 1355,
0, 0, 0, 1685, 0, 0, 729, 0, 2931, 708, 0, 0, 30, 478, 3398, 0,
2910, 2564, 2150, 687, 3024, 3486, 0, 2547, 991, 0, 2300, 390, 131, 1826, 498, 3831,
245, 0, 2315, 667, 0, 0, 3006, 0, 0, 0, 749, 5, 0, 2404, 474, 333,
0, 3753, 0, 0, 0, 1927, 0, 1219, 2106, 119, 0, 330, 563, 1030, 0, 54,
0, 0, 2882, 3359, 0, 213, 1361, 0, 0, 1241, 0, 0, 3227, 0, 2559, 1186,
1882, 3657, 0, 0, 0, 0, 3088, 1571, 3216, 985, 1338, 1871, 0, 3433, 0, 0,
0, 1754, 0, 475, 3499, 2216, 1582, 3234, 1421, 1507, 311, 2159, 980, 2771, 0, 0,
0, 0, 2269, 1188, 0, 0, 0, 0, 1541, 2401, 3205, 269, 0, 208, 1445, 1342,
0, 0, 0, 0, 312, 1781, 644, 0, 2516, 2489, 0, 1078, 2498, 1876, 0, 728,
2924, 2843, 2077, 0, 3836, 2667, 1046, 1401, 0, 827, 0, 0, 2312, 0, 2549, 1067,
0, 2742, 0, 2039, 171, 1976, 0, 0, 3612, 0, 604, 2287, 557, 0, 3275, 0,
0, 0, 1551, 130, 3613, 1417, 0, 527, 941, 3180, 0, 0, 0, 148, 0, 2149,
944, 0, 568, 0, 2094, 0, 0, 0, 2292, 2643, 0, 857, 2854, 3046, 0, 0,
0, 756, 0, 486, 0, 0, 0, 2012, 0, 3632, 790, 3403, 2058, 0, 0, 0,
0, 0, 942, 0, 1931, 1441, 2109, 813, 44, 0, 834, 93, 0, 2174, 0, 3685,
980, 1811, 421, 1810, 1620, 3013, 1682, 0, 2801, 0, 0, 288, 0, 141, 0, 0,
0, 1414, 0, 0, 3141, 0, 0, 0, 2665, 1438, 2088, 567, 3350, 0, 0, 0,
1417, 2784, 0, 1494, 0, 0, 7, 523, 3356, 3129, 2402, 0, 0, 0, 956, 1612,
1689, 762, 0, 0, 0, 2367, 348, 0, 0, 0, 1285, 2458, 1974, 1857, 0, 2017,
0, 0, 876, 69, 1226, 1072, 0, 0, 0, 2095, 1398, 0, 0, 0, 666, 3624,
0, 0, 1595, 0, 2641, 765, 3125, 820, 1632, 1943, 971, 0, 1387, 151, 749, 0,
2373, 0, 1361, 0, 0, 2180, 0, 0, 0, 2164, 2859, 0, 2001, 0, 912, 2956,
1093, 0, 3774, 54, 1026, 0, 3199, 0, 1542, 1126, 0, 1518, 0, 3612, 730, 3336,
0, 0, 0, 0, 0, 235, 2000, 760, 0, 1711, 193, 2037, 0, 0, 0, 0,
493, 0, 3460, 0, 0, 3527, 0, 2052, 1954, 3157, 0, 2277, 222, 508, 229, 743,
146, 0, 1727, 3287, 1606, 3612, 2869, 668, 1862, 1263, 1801, 40, 0, 1232, 3012, 0,
0, 3802, 0, 1913, 0, 2887, 1201, 65, 612, 3317, 0, 0, 0, 0, 3810, 1289,
542, 508, 2172, 0, 2137, 2671, 0, 524, 2752, 369, 0, 3887, 0, 998, 1823, 0,
377, 989, 0, 1960, 1151, 0, 1663, 3583, 564, 0, 141, 2703, 0, 0, 0, 1946,
682, 0, 0, 0, 2098, 0, 1658, 1794, 1358, 2556, 1450, 2627, 0, 830, 648, 0,
88, 0, 0, 2707, 797, 0, 1887, 3762, 0, 1977, 2028, 3418, 309, 1970, 3611, 2842,
543, 2235, 0, 0, 0, 2109, 1871, 0, 1301, 217, 0, 0, 0, 762, 0, 0,
1624, 2169, 2014, 777, 1948, 725, 2893, 0, 0, 310, 897, 1280, 0, 901, 3738, 3243,
338, 0, 0, 0, 0, 3028, 3056, 2658, 1982, 0, 775, 1846, 0, 550, 432, 2010,
276, 0, 0, 0, 0, 0, 2117, 2552, 2892, 924, 1091, 0, 405, 0, 630, 2967,
0, 635, 2169, 1759, 0, 956, 69, 759, 1866, 1890, 852, 357, 0, 0, 1256, 0,
0, 255, 0, 0, 3064, 2875, 0, 0, 1735, 3393, 0, 1652, 352, 2057, 626, 1652,
0, 2661, 0, 0, 118, 0, 2058, 0, 1342, 3278, 1131, 654, 0, 0, 0, 2910,
3147, 962, 1045, 2802, 0, 0, 871, 1548, 693, 410, 3302, 2006, 0, 3089, 1350, 0,
77, 0, 2194, 0, 3054, 1515, 1199, 0, 735, 2285, 0, 2709, 0, 0, 315, 0,
0, 1068, 693, 3120, 3873, 3818, 2150, 1936, 0, 1669, 0, 0, 0, 3212, 3189, 2632,
2933, 560, 736, 0, 1280, 3312, 405, 1985, 1421, 3410, 2350, 0, 0, 0, 2130, 3538,
1578, 1025, 0, 3899, 0, 593, 2384, 0, 0, 2882, 0, 28, 1306, 1413, 0, 823,
3305, 0, 2798, 0, 3420, 533, 3654, 3060, 129, 3516, 718, 2086, 0, 0, 1396, 91,
866, 3370, 3655, 0, 1738, 3174, 570, 531, 0, 3217, 696, 3309, 0, 117, 2051, 0,
0, 904, 0, 0, 1528, 0, 1281, 2923, 1817, 0, 0, 1275, 0, 3782, 1330, 266,
808, 2731, 11, 0, 3508, 0, 1052, 3896, 0, 0, 0, 1381, 1599, 118, 1265, 3569,
3065, 0, 3682, 1072, 0, 289, 1696, 51, 3825, 0, 353, 2223, 0, 3597, 1666, 381,
1889, 0, 2133, 1743, 907, 0, 2019, 0, 0, 0, 0, 830, 1860, 3419, 2266, 3342,
0, 2660, 1509, 715, 197, 259, 2894, 0, 662, 2743, 3907, 928, 0, 2968, 0, 2361,
3597, 349, 3039, 2150, 3434, 2594, 1155, 203, 2153, 3880, 1964, 471, 99, 2020, 2351, 0,
0, 2133, 2011, 3898, 3828, 2899, 2313, 974, 0, 204, 3735, 1343, 1678, 3775, 0, 1819,
0, 3099, 3721, 1091, 1122, 351, 578, 0, 2159, 0, 0, 964, 2448, 3540, 0, 871,
3172, 1706, 1098, 0, 1659, 470, 0, 0, 1646, 2742, 0, 2517, 3890, 1365, 356, 0,
59, 2308, 743, 0, 0, 1524, 2137, 1214, 0, 0, 2024, 2444, 262, 2263, 0, 0,
2225, 3564, 0, 942, 1929, 1152, 0, 3842, 1749, 963, 2010, 0, 3897, 0, 0, 2653,
354, 0, 0, 2773, 0, 2069, 0, 52, 0, 488, 0, 431, 1921, 2229, 899, 1119,
570, 1159, 1467, 1950, 1252, 3403, 492, 0, 0, 0, 1231, 481, 0, 1442, 2761, 1580,
2657, 3541, 0, 0, 71, 3828, 1715, 0, 1224, 2409, 1185, 0, 1785, 731, 0, 3710,
3531, 0, 73, 0, 1702, 1908, 0, 604, 0, 0, 1532, 0, 2401, 1792, 905, 0,
0, 0, 2080, 2765, 0, 3003, 0, 809, 0, 0, 0, 1027, 0, 3514, 0, 1847,
3852, 3615, 1570, 0, 1655, 1467, 1769, 0, 0, 110, 1001, 2868, 0, 0, 870, 3110,
0, 208, 2573, 0, 2062, 0, 0, 876, 3691, 1369, 3365, 0, 0, 0, 84, 0,
1298, 1432, 1324, 0, 0, 0, 1706, 2532, 1661, 532, 3170, 3363, 651, 3202, 0, 973,
1742, 1013, 0, 0, 0, 0, 0, 1705, 427, 2757, 2833, 2916, 1454, 197, 0, 884,
274, 3689, 184, 567, 1064, 75, 3783, 0, 698, 0, 1469, 1858, 0, 0, 2742, 0,
267, 333, 0, 0, 1189, 0, 1082, 0, 798, 2788, 0, 2274, 0, 3094, 2900, 0,
686, 620, 3325, 1909, 2573, 2993, 1225, 3348, 0, 1083, 913, 499, 0, 1232, 1923, 0,
3603, 0, 2078, 0, 3828, 0, 2929, 0, 742, 3732, 1019, 471, 42, 2280, 0, 0,
1191, 2177, 919, 0, 0, 0, 0, 513, 3607, 2240, 0, 2165, 0, 3792, 0, 2401,
0, 0, 1279, 773, 1328, 660, 0, 518, 1961, 90, 609, 1014, 1305, 0, 1758, 0,
1070, 1331, 2177, 2092, 0, 0, 1812, 0, 3645, 1766, 1875, 3384, 3176, 67, 2001, 0,
925, 82, 0, 0, 0, 1022, 1320, 3409, 500, 1751, 800, 1142, 0, 2954, 1508, 422,
1865, 260, 0, 0, 1082, 0, 392, 0, 183, 0, 0, 2616, 0, 2853, 2927, 1952,
0, 986, 0, 3171, 3525, 1209, 1227, 0, 515, 753, 0, 1090, 406, 1556, 3170, 388,
3497, 702, 1144, 3907, 2472, 1615, 767, 980, 24, 0, 1022, 0, 3655, 0, 81, 0,
1087, 1588, 1436, 0, 1025, 3484, 1922, 2071, 251, 1403, 0, 3718, 221, 0, 0, 3864,
323, 0, 0, 182, 0, 2565, 208, 56, 1543, 1191, 826, 2435, 423, 2660, 1664, 0,
0, 190, 0, 2209, 0, 1845, 3772, 705, 14, 0, 0, 3781, 2950, 0, 958, 0,
1730, 0, 2520, 3018, 1860, 812, 1526, 2590, 2368, 0, 0, 0, 0, 3672, 0, 3408,
0, 1058, 757, 3855, 0, 3378, 183, 0, 1458, 1944, 3298, 0, 979, 3804, 3502, 2487,
2909, 273, 375, 187, 559, 1566, 753, 830, 0, 1824, 131, 0, 2173, 0, 0, 429,
1650, 3560, 0, 0, 0, 0, 0, 2712, 1443, 2891, 0, 3316, 935, 0, 1252, 1417,
864, 0, 1204, 301, 0, 0, 2128, 0, 2828, 0, 912, 1453, 3408, 1009, 0, 307,
2885, 1848, 0, 1988, 1333, 0, 0, 0, 3354, 714, 2133, 0, 734, 61, 0, 3632,
724, 1259, 1203, 0, 1019, 561, 1062, 2140, 1771, 1446, 913, 721, 3618, 2491, 1163, 0,
0, 1210, 0, 2782, 3104, 2726, 0, 0, 0, 0, 0, 1141, 1498, 0, 1090, 399,
2187, 1806, 3502, 462, 3833, 0, 1497, 1087, 1896, 1046, 0, 1891, 2703, 1001, 0, 1606,
3767, 1618, 420, 2926, 0, 0, 0, 0, 0, 194, 0, 553, 0, 1258, 0, 1381,
1262, 2348, 159, 1168, 0, 2952, 2985, 0, 1559, 0, 371, 3824, 954, 1014, 0, 1254,
0, 258, 0, 2225, 2552, 0, 2359, 0, 1597, 0, 0, 52, 1750, 1397, 3220, 1304,
0, 0, 0, 3427, 0, 1581, 2155, 1640, 3332, 451, 1785, 1132, 2760, 1066, 602, 0,
1463, 0, 1245, 144, 0, 612, 0, 0, 1989, 861, 3802, 211, 552, 0, 0, 969,
0, 0, 2011, 2866, 53, 2947, 2721, 658, 676, 678, 0, 3846, 2276, 0, 0, 0,
234, 0, 0, 643, 2972, 2373, 470, 2012, 14, 1286, 0, 3013, 663, 0, 1309, 514,
482, 322, 968, 0, 3758, 3684, 0, 0, 1194, 3876, 2405, 0, 0, 273, 0, 1597,
0, 660, 448, 1043, 2548, 2340, 1287, 0, 0, 2597, 227, 0, 3492, 1709, 1055, 3796,
0, 3036, 0, 0, 1864, 0, 0, 1743, 3572, 3327, 0, 0, 0, 72, 448, 0,
1811, 0, 1034, 3814, 2837, 0, 0, 1826, 3350, 1817, 2016, 689, 0, 0, 0, 0,
499, 674, 3731, 0, 802, 3522, 447, 742, 456, 3194, 1882, 2298, 0, 103, 339, 819,
3732, 0, 216, 441, 2266, 1734, 1110, 0, 1922, 0, 0, 253, 1576, 205, 1317, 708,
1707, 0, 0, 1740, 3653, 236, 0, 3903, 2046, 2384, 1187, 967, 465, 3326, 1484, 1920,
613, 1986, 2208, 2179, 1626, 589, 1855, 387, 2566, 0, 812, 0, 1427, 3410, 978, 3028,
1952, 0, 351, 0, 0, 0, 0, 2067, 0, 1131, 0, 1541, 1708, 127, 0, 1362,
1251, 3279, 1798, 242, 0, 820, 0, 1079, 463, 2590, 0, 720, 0, 0, 0, 3508,
0, 0, 311, 1139, 2762, 0, 353, 252, 0, 0, 0, 0, 589, 0, 0, 7,
420, 2959, 0, 2529, 2257, 596, 74, 3908, 0, 0, 0, 0, 0, 1916, 0, 3601,
2121, 0, 0, 3874, 0, 1721, 505, 1667, 0, 0, 535, 0, 1073, 948, 687, 2949,
405, 0, 0, 0, 1388, 562, 184, 1621, 0, 0, 0, 0, 493, 2884, 104, 936,
0, 3755, 713, 524, 0, 66, 1683, 0, 1129, 3171, 1401, 2579, 0, 41, 795, 0,
0, 1259, 636, 0, 1740, 1802, 0, 2804, 530, 1137, 672, 1596, 812, 1247, 2107, 0,
0, 0, 0, 0, 2167, 2634, 1089, 26, 0, 3348, 483, 0, 0, 848, 970, 0,
632, 1315, 2012, 3901, 0, 359, 1503, 783, 1268, 601, 1155, 0, 1910, 0, 0, 1708,
0, 577, 321, 0, 0, 1384, 1926, 884, 3904, 591, 1573, 1274, 862, 96, 1800, 834,
253, 397, 1068, 206, 3237, 0, 550, 0, 1456, 0, 2304, 3784, 3141, 2236, 3349, 1651,
1944, 3756, 0, 0, 238, 513, 1889, 2201, 3174, 309, 1593, 0, 3618, 0, 1145, 0,
809, 0, 0, 0, 0, 0, 514, 0, 0, 0, 1695, 1164, 1606, 229, 0, 3901,
0, 1755, 3618, 1591, 2160, 712, 658, 0, 0, 2373, 1427, 555, 0, 319, 0, 0,
1284, 1162, 0, 0, 0, 0, 3297, 1969, 0, 3556, 832, 3885, 0, 2095, 0, 0,
513, 3788, 1223, 1182, 2656, 0, 0, 3434, 0, 114, 0, 1103, 2203, 0, 0, 547,
3482, 566, 738, 0, 866, 3559, 1074, 0, 1407, 0, 1017, 1592, 0, 95, 3137, 0,
1188, 0, 741, 0, 0, 0};
int MangledHashG(const char *key, const int *T)
{
int sum = 0;
for (int i = 0; key[i] != '\0'; i++)
{
sum += T[i] * key[i];
sum %= 3910;
}
return mangledkG[sum];
}
int MangledPerfectHash(const char *key)
{
if (strlen(key) > 40)
return 0;
return (MangledHashG(key, mangledkT1) + MangledHashG(key, mangledkT2)) % 3910;
}
constexpr int unmangledkT1[] = {361, 84, 287, 107, 189, 235, 216, 268, 315, 73, 365, 67, 31,
103, 108, 1, 206, 276, 63, 133, 161, 27, 70, 359, 69, 354};
constexpr int unmangledkT2[] = {116, 270, 65, 391, 92, 345, 246, 10, 306, 20, 206, 346, 291,
195, 244, 398, 269, 237, 25, 394, 247, 248, 315, 180, 233, 167};
constexpr int unmangledkG[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 27, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 49, 390, 0, 0, 0, 0, 0, 0, 192, 0, 57, 226,
336, 367, 117, 183, 0, 206, 0, 133, 0, 0, 0, 0, 0, 383, 0, 0, 0, 0, 0,
113, 0, 107, 0, 263, 282, 9, 303, 235, 0, 160, 168, 226, 170, 8, 0, 0, 236, 25,
347, 0, 399, 61, 201, 0, 354, 0, 0, 155, 31, 0, 0, 179, 0, 0, 337, 316, 0,
0, 0, 0, 2, 242, 73, 61, 0, 0, 296, 0, 51, 179, 0, 0, 12, 28, 210, 0,
149, 152, 0, 0, 0, 197, 12, 10, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0,
0, 273, 0, 243, 63, 0, 318, 351, 0, 0, 0, 305, 21, 350, 0, 0, 0, 0, 0,
42, 0, 315, 21, 406, 271, 0, 0, 117, 397, 0, 67, 47, 304, 0, 0, 0, 0, 0,
0, 0, 11, 200, 56, 149, 405, 0, 0, 0, 325, 162, 0, 205, 0, 119, 217, 58, 40,
0, 0, 273, 17, 0, 158, 0, 164, 88, 0, 0, 0, 126, 0, 118, 0, 0, 0, 255,
277, 0, 16, 0, 192, 0, 0, 308, 0, 342, 71, 322, 21, 100, 0, 0, 184, 0, 22,
168, 261, 0, 256, 0, 0, 0, 37, 37, 0, 0, 0, 182, 210, 0, 0, 110, 0, 204,
184, 322, 54, 255, 0, 0, 0, 322, 14, 162, 82, 50, 0, 0, 15, 212, 0, 0, 0,
0, 114, 0, 220, 163, 0, 48, 225, 230, 0, 87, 111, 324, 198, 108, 0, 0, 0, 0,
118, 1, 203, 86, 0, 0, 0, 384, 0, 1, 75, 0, 0, 391, 106, 374, 0, 208, 0,
362, 180, 305, 0, 2, 70, 0, 165, 404, 0, 0, 137, 0, 251, 187, 0, 52, 318, 250,
0, 347, 110, 0, 77, 0, 0, 0, 231, 142, 88, 102, 0, 219, 0, 0, 0, 37, 0,
173, 0, 0, 0, 14, 176, 0, 53, 351, 0, 132, 180, 299, 43, 0, 0, 199, 0, 96,
0, 329, 0, 0, 0, 318, 267, 0, 404, 353, 8, 136, 91, 30, 280, 0, 0, 0, 11,
273, 388, 307, 239, 29, 191, 151, 0, 0, 0, 324, 0, 378, 0, 156, 33, 388, 6, 4,
0, 166, 127, 220, 376, 0, 0, 18};
int UnmangledHashG(const char *key, const int *T)
{
int sum = 0;
for (int i = 0; key[i] != '\0'; i++)
{
sum += T[i] * key[i];
sum %= 407;
}
return unmangledkG[sum];
}
int UnmangledPerfectHash(const char *key)
{
if (strlen(key) > 26)
return 0;
return (UnmangledHashG(key, unmangledkT1) + UnmangledHashG(key, unmangledkT2)) % 407;
}
} // namespace
namespace sh
{
template <>
const size_t ImmutableString::FowlerNollVoHash<4>::kFnvPrime = 16777619u;
template <>
const size_t ImmutableString::FowlerNollVoHash<4>::kFnvOffsetBasis = 0x811c9dc5u;
template <>
const size_t ImmutableString::FowlerNollVoHash<8>::kFnvPrime =
static_cast<size_t>(1099511628211ull);
template <>
const size_t ImmutableString::FowlerNollVoHash<8>::kFnvOffsetBasis =
static_cast<size_t>(0xcbf29ce484222325ull);
uint32_t ImmutableString::mangledNameHash() const
{
return MangledPerfectHash(data());
}
uint32_t ImmutableString::unmangledNameHash() const
{
return UnmangledPerfectHash(data());
}
} // namespace sh