blob: 32c58b63ff659894d08e3099ce971253efbab7f0 [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_ESSL_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[] = {1871, 2623, 2766, 2031, 935, 1508, 2246, 2210, 248, 137,
641, 597, 1277, 147, 2100, 925, 399, 2132, 2410, 1914,
2873, 552, 2669, 127, 313, 308, 1032, 1000, 11, 2326,
803, 235, 37, 235, 2574, 1451, 2987, 1734, 2646, 109};
constexpr int mangledkT2[] = {2342, 998, 2216, 1049, 2965, 231, 1661, 1981, 2078, 745,
1322, 109, 30, 3034, 262, 1282, 2144, 1530, 1238, 2578,
2579, 644, 1646, 1106, 2664, 789, 336, 34, 1381, 866,
378, 2770, 513, 2102, 1009, 2018, 761, 1983, 404, 2930};
constexpr int mangledkG[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1427, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1912, 847, 0, 0, 0, 0, 782, 0,
0, 0, 0, 0, 0, 997, 0, 907, 1244, 0, 0, 2595, 0, 0, 0, 0,
0, 0, 0, 0, 0, 2819, 0, 0, 0, 0, 0, 2196, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1925, 0, 1284, 156, 0, 0, 0, 110, 1504, 944,
0, 1522, 0, 0, 0, 0, 0, 0, 0, 1595, 0, 0, 0, 438, 0, 0,
1129, 0, 761, 0, 0, 0, 0, 0, 2945, 0, 0, 806, 2345, 0, 546, 0,
0, 2617, 0, 0, 0, 3001, 2431, 0, 0, 0, 0, 860, 0, 0, 0, 2952,
1554, 0, 0, 0, 757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1092, 0, 2747, 135, 0, 0, 2572, 0, 27, 0, 1144, 0, 1011, 0,
1878, 0, 486, 0, 998, 0, 764, 0, 0, 0, 0, 0, 0, 239, 0, 3013,
0, 0, 1947, 1732, 0, 0, 1809, 0, 585, 0, 0, 0, 0, 0, 1471, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1897, 0, 2090, 0, 0, 81,
0, 0, 0, 1583, 0, 0, 0, 0, 893, 1325, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 2407, 879, 0, 2243, 0, 2756, 0, 946, 0,
0, 906, 1670, 0, 0, 0, 0, 0, 0, 0, 0, 727, 2158, 0, 0, 2034,
1098, 0, 0, 0, 0, 1741, 232, 0, 0, 355, 2019, 0, 1887, 0, 2320, 0,
0, 0, 0, 0, 2637, 0, 1212, 0, 0, 0, 0, 0, 108, 0, 0, 0,
0, 0, 1186, 0, 0, 0, 1200, 0, 169, 1961, 193, 26, 0, 0, 0, 0,
459, 2828, 0, 0, 0, 0, 0, 0, 0, 0, 1133, 1091, 1178, 0, 0, 1924,
0, 0, 0, 0, 0, 0, 0, 628, 0, 1666, 79, 2314, 0, 0, 481, 0,
0, 0, 1717, 2885, 962, 2563, 2886, 0, 16, 1367, 0, 0, 0, 2935, 0, 152,
0, 0, 626, 1740, 0, 0, 0, 2597, 0, 585, 1364, 3019, 0, 740, 0, 2825,
0, 2762, 0, 0, 0, 0, 0, 0, 0, 0, 2714, 978, 0, 0, 1360, 536,
2738, 0, 1186, 2154, 0, 0, 531, 828, 0, 1910, 0, 0, 2788, 0, 0, 974,
0, 0, 1937, 0, 860, 0, 109, 1196, 0, 0, 390, 0, 2517, 0, 1718, 0,
2070, 2761, 2967, 334, 150, 0, 2439, 2932, 0, 724, 636, 0, 953, 1394, 0, 0,
2484, 0, 2923, 0, 0, 0, 0, 87, 1082, 0, 2076, 0, 1503, 0, 0, 0,
1074, 0, 0, 1493, 0, 0, 0, 0, 0, 1551, 438, 0, 0, 0, 319, 0,
2587, 0, 0, 0, 0, 0, 542, 675, 523, 573, 1985, 1948, 0, 0, 0, 1171,
1682, 0, 297, 1319, 0, 0, 396, 0, 0, 823, 0, 1844, 740, 0, 0, 0,
336, 697, 582, 0, 530, 0, 32, 0, 0, 918, 947, 2618, 0, 0, 1031, 0,
0, 0, 0, 0, 2359, 0, 3019, 2611, 0, 0, 2299, 0, 0, 1459, 0, 2514,
21, 0, 1600, 0, 0, 1900, 2113, 0, 0, 909, 0, 0, 0, 0, 2462, 0,
0, 2165, 886, 310, 2485, 0, 756, 0, 2310, 1359, 0, 214, 0, 0, 1794, 0,
1182, 0, 1580, 0, 0, 2155, 0, 0, 1133, 0, 1737, 0, 191, 1208, 0, 298,
0, 0, 678, 1412, 800, 1125, 2670, 0, 0, 0, 640, 11, 1058, 141, 736, 0,
0, 0, 696, 1718, 0, 0, 0, 2303, 0, 1254, 0, 2982, 0, 0, 185, 3006,
0, 0, 336, 2666, 0, 1290, 1962, 0, 0, 0, 2407, 0, 1036, 717, 2775, 0,
3000, 0, 635, 506, 0, 0, 0, 2052, 0, 1436, 573, 0, 0, 0, 0, 348,
1134, 0, 0, 1256, 0, 103, 0, 0, 0, 0, 1434, 97, 844, 354, 782, 0,
2717, 0, 0, 0, 570, 0, 489, 476, 176, 0, 720, 0, 1779, 0, 1032, 819,
34, 0, 2097, 2852, 0, 0, 0, 1073, 0, 2803, 0, 2671, 881, 0, 0, 0,
0, 0, 503, 582, 2444, 2364, 1549, 2970, 0, 0, 2903, 1349, 1457, 0, 0, 658,
2543, 0, 0, 1142, 0, 536, 0, 2755, 1259, 0, 1352, 1410, 1491, 0, 0, 0,
0, 710, 0, 0, 0, 0, 1539, 0, 0, 0, 2461, 2677, 806, 565, 132, 0,
69, 492, 0, 0, 0, 0, 194, 0, 0, 0, 0, 79, 2290, 0, 0, 0,
2066, 1304, 1614, 0, 1494, 0, 0, 338, 1058, 439, 1481, 0, 0, 1936, 1124, 1673,
0, 0, 2881, 1324, 0, 0, 1610, 0, 0, 2219, 1206, 0, 0, 876, 2321, 0,
3, 1106, 574, 533, 0, 1660, 0, 2365, 0, 1810, 2144, 0, 0, 0, 785, 0,
1579, 0, 0, 0, 10, 0, 0, 320, 1406, 0, 844, 0, 354, 0, 0, 384,
0, 0, 0, 2535, 0, 0, 0, 0, 0, 0, 0, 0, 2562, 0, 1388, 2066,
0, 1872, 397, 0, 0, 0, 2560, 125, 0, 1538, 0, 0, 0, 2792, 0, 490,
0, 514, 0, 0, 816, 488, 1409, 0, 0, 75, 0, 0, 953, 0, 0, 0,
0, 254, 344, 0, 0, 0, 1522, 604, 0, 0, 1751, 794, 829, 0, 1227, 769,
195, 1721, 0, 0, 804, 0, 2744, 61, 0, 0, 0, 1939, 957, 431, 262, 0,
385, 0, 1405, 1082, 0, 0, 0, 0, 0, 0, 740, 0, 0, 2914, 0, 0,
731, 0, 1692, 0, 524, 2062, 2001, 539, 0, 220, 2597, 741, 2729, 0, 165, 0,
3016, 0, 2397, 0, 0, 0, 2181, 0, 1209, 0, 1843, 1573, 0, 0, 0, 1014,
1288, 0, 608, 792, 0, 0, 2802, 1810, 0, 0, 239, 194, 0, 763, 2719, 2402,
0, 901, 0, 0, 0, 0, 241, 356, 0, 2651, 817, 0, 0, 596, 718, 0,
759, 2169, 0, 1412, 603, 1982, 940, 0, 0, 0, 0, 2338, 0, 155, 644, 2695,
0, 0, 1684, 262, 0, 0, 1500, 0, 0, 0, 1955, 0, 0, 0, 0, 0,
0, 0, 435, 2542, 0, 0, 0, 0, 0, 2639, 0, 0, 0, 905, 0, 3023,
732, 0, 624, 0, 0, 590, 0, 0, 1184, 1912, 0, 782, 1572, 0, 11, 0,
1781, 0, 0, 0, 0, 1066, 0, 319, 0, 2117, 230, 2655, 0, 1199, 956, 0,
0, 976, 0, 2002, 806, 0, 1602, 0, 0, 0, 1227, 0, 1536, 597, 2476, 0,
0, 0, 2875, 1247, 0, 58, 0, 2851, 234, 0, 0, 0, 0, 2596, 0, 0,
0, 0, 832, 1361, 0, 0, 0, 2318, 238, 0, 0, 106, 0, 0, 0, 0,
2909, 0, 452, 2184, 1426, 0, 1179, 0, 395, 734, 0, 1388, 0, 0, 0, 0,
209, 0, 0, 0, 724, 0, 206, 0, 0, 850, 0, 524, 602, 0, 1661, 0,
386, 674, 0, 0, 2391, 0, 1491, 0, 2171, 0, 2779, 1342, 382, 0, 0, 825,
2102, 2703, 0, 62, 0, 0, 1135, 0, 1174, 0, 268, 0, 0, 248, 610, 1880,
0, 2456, 0, 0, 858, 694, 2787, 901, 0, 45, 0, 0, 244, 570, 36, 0,
2423, 641, 1385, 47, 0, 0, 0, 0, 540, 2932, 0, 575, 171, 0, 1553, 0,
0, 0, 2341, 1188, 0, 83, 877, 2387, 0, 1825, 1592, 0, 0, 2930, 246, 2679,
0, 164, 2716, 0, 0, 0, 1433, 1946, 0, 0, 586, 0, 247, 0, 0, 2180,
0, 648, 2486, 0, 1360, 1409, 0, 0, 2117, 0, 0, 897, 0, 605, 222, 2875,
1460, 0, 0, 0, 803, 2685, 2151, 66, 0, 0, 0, 1173, 0, 24, 2156, 1842,
744, 0, 0, 0, 924, 1883, 1424, 0, 504, 311, 837, 0, 0, 0, 420, 0,
1082, 0, 2283, 0, 1399, 0, 0, 2298, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 2918, 273, 1795, 0, 751, 682, 853, 2480, 0, 1182, 0, 0, 0, 0,
751, 2505, 2728, 0, 1397, 0, 1371, 0, 2243, 59, 2191, 0, 0, 1681, 426, 0,
0, 757, 0, 0, 0, 549, 0, 412, 2160, 2944, 1100, 477, 590, 0, 0, 0,
0, 271, 2910, 116, 1775, 161, 0, 0, 0, 1531, 0, 1226, 1711, 2605, 2428, 763,
0, 0, 1281, 0, 1713, 0, 0, 0, 231, 0, 0, 0, 0, 195, 0, 235,
877, 833, 0, 0, 43, 867, 0, 1678, 965, 0, 1386, 0, 533, 0, 0, 174,
2123, 1463, 1466, 0, 0, 0, 2332, 0, 0, 0, 1036, 0, 650, 0, 0, 0,
1966, 1110, 413, 0, 2116, 0, 0, 0, 1263, 157, 0, 0, 3012, 61, 370, 0,
0, 0, 577, 855, 915, 0, 2935, 1018, 630, 396, 0, 2935, 2683, 2123, 2305, 2633,
2369, 0, 0, 0, 0, 805, 554, 38, 0, 0, 0, 2211, 1350, 420, 0, 0,
0, 522, 0, 446, 625, 302, 0, 698, 2872, 3021, 0, 2005, 0, 0, 0, 0,
372, 0, 0, 0, 839, 0, 0, 1263, 565, 275, 0, 0, 0, 0, 0, 682,
0, 709, 529, 1131, 2493, 864, 0, 0, 730, 0, 989, 1661, 0, 179, 0, 1604,
0, 0, 0, 1095, 2546, 0, 2310, 415, 475, 1740, 242, 0, 2966, 0, 686, 2243,
2768, 1141, 0, 0, 0, 0, 0, 0, 1403, 2886, 0, 2763, 424, 1235, 1448, 1107,
0, 0, 1436, 0, 47, 0, 1607, 0, 1831, 0, 2606, 0, 1990, 0, 194, 1499,
0, 699, 3018, 0, 502, 0, 1487, 2239, 0, 0, 2196, 0, 430, 318, 0, 2339,
0, 0, 0, 108, 0, 0, 659, 49, 0, 1321, 388, 0, 2926, 0, 2038, 2726,
0, 2273, 0, 1847, 1490, 903, 1080, 73, 1596, 681, 1296, 0, 0, 2747, 773, 457,
2987, 0, 0, 0, 1111, 0, 0, 0, 50, 0, 0, 0, 0, 272, 0, 176,
720, 649, 0, 0, 578, 0, 0, 0, 2414, 780, 1912, 502, 217, 1296, 2093, 309,
2742, 203, 0, 0, 1298, 685, 2197, 0, 0, 0, 1497, 0, 2363, 0, 0, 575,
2433, 0, 0, 0, 2596, 0, 1180, 0, 0, 305, 30, 0, 0, 0, 1482, 0,
123, 0, 1330, 0, 1377, 1703, 1445, 0, 0, 0, 0, 2876, 0, 862, 634, 166,
0, 0, 0, 0, 2562, 1780, 0, 0, 0, 1238, 2976, 1797, 0, 0, 2230, 0,
0, 1447, 0, 1088, 0, 2925, 0, 0, 570, 0, 0, 0, 0, 0, 0, 1236,
1257, 377, 2600, 0, 684, 0, 0, 0, 0, 460, 2494, 376, 1050, 525, 0, 93,
561, 0, 138, 0, 1482, 0, 0, 1220, 0, 0, 37, 1448, 2332, 1537, 2538, 0,
346, 371, 0, 999, 0, 0, 0, 0, 2796, 0, 1288, 0, 0, 0, 780, 1894,
1258, 1506, 800, 554, 1084, 0, 0, 0, 1552, 0, 0, 0, 428, 0, 0, 1219,
2143, 1042, 1016, 1641, 1043, 0, 1797, 2973, 0, 1863, 1439, 1707, 297, 2709, 631, 6,
42, 0, 1180, 243, 160, 2210, 0, 1714, 1548, 1204, 992, 0, 1216, 298, 0, 317,
703, 2716, 0, 3035, 1034, 52, 848, 0, 0, 2145, 0, 2840, 723, 2059, 178, 359,
3030, 96, 1307, 2379, 0, 0, 0, 2775, 921, 606, 1165, 293, 0, 261, 0, 0,
303, 743, 0, 0, 976, 1170, 1375, 2945, 0, 863, 0, 478, 1247, 2247, 0, 836,
0, 2710, 0, 0, 1247, 0, 2582, 2104, 187, 315, 0, 0, 1518, 0, 0, 0,
2010, 411, 1179, 0, 576, 0, 738, 2508, 0, 194, 995, 947, 3029, 344, 0, 1109,
0, 2200, 0, 933, 0, 0, 545, 2690, 2407, 1586, 0, 0, 2119, 1334, 555, 0,
851, 0, 2586, 0, 306, 1156, 74, 1344, 2953, 0, 717, 1008, 0, 0, 2539, 0,
0, 432, 0, 814, 1319, 764, 0, 0, 1838, 556, 2228, 0, 1192, 1750, 1597, 966,
0, 0, 102, 0, 0, 0, 2731, 0, 2337, 2388, 1487, 0, 0, 0, 1193, 2140,
225, 0, 614, 0, 110, 0, 1406, 582, 0, 0, 1084, 1474, 1225, 1961, 935, 799,
2281, 0, 0, 2080, 717, 397, 2773, 1355, 2981, 809, 611, 2952, 0, 762, 2460, 819,
977, 0, 374, 304, 752, 1498, 0, 508, 66, 787, 152, 0, 221, 1613, 969, 0,
0, 2392, 603, 125, 2078, 0, 0, 1390, 25, 0, 2947, 1504, 1083, 0, 131, 0,
2131, 742, 0, 1306, 0, 883, 0, 730, 1216, 0, 1161, 1934, 2278, 896, 1521, 0,
1288, 0, 1638, 0, 463, 501, 0, 0, 392, 254, 1046, 1048, 1388, 2163, 0, 0,
2687, 946, 0, 0, 1268, 0, 1615, 2891, 691, 0, 0, 0, 1468, 0, 1374, 0,
1132, 940, 1798, 75, 0, 0, 1813, 0, 964, 0, 1478, 0, 0, 1028, 1645, 850,
2141, 1522, 2179, 0, 0, 0, 2293, 0, 2593, 240, 0, 2044, 72, 143, 0, 2573,
0, 2598, 2029, 0, 1083, 879, 510, 968, 0, 1526, 3024, 1504, 288, 0, 0, 0,
0, 0, 1376, 1265, 2561, 80, 326, 0, 0, 1548, 460, 2253, 324, 1296, 1433, 8,
0, 0, 1269, 2427, 285, 0, 1214, 320, 1706, 0, 0, 0, 519, 44, 0, 488,
2943, 235, 0, 1400, 1697, 1022, 0, 2741, 0, 0, 356, 1247, 0, 474, 0, 0,
0, 7, 618, 699, 2581, 1075, 1354, 0, 2975, 286, 0, 157, 2057, 568, 619, 1263,
374, 0, 0, 753, 1346, 341, 124, 1460, 1046, 2616, 0, 0, 20, 468, 0, 2404,
307, 0, 0, 0, 0, 2671, 0, 0, 0, 725, 2708, 744, 621, 0, 539, 0,
2934, 986, 0, 1598, 0, 1280, 1546, 570, 2539, 0, 1895, 0, 1585, 233, 2952, 0,
2185, 722, 1357, 353, 679, 1114, 836, 2421, 1941, 1195, 546, 2640, 1240, 0, 2635, 0,
2862, 184, 1355, 0, 2300, 0, 633, 13, 1185, 2135, 0, 1667, 2281, 616, 0, 0,
0, 0, 775, 0, 535, 1651, 0, 0, 2772, 0, 0, 0, 0, 0, 549, 746,
1077, 0, 2495, 0, 358, 0, 0, 0, 0, 644, 2803, 0, 2974, 42, 252, 1086,
2909, 0, 0, 733, 1103, 0, 1222, 0, 1389, 1342, 1227, 107, 998, 1069, 2223, 0,
0, 0, 1000, 1430, 1492, 1314, 3002, 0, 2689, 0, 431, 0, 2844, 0, 518, 1899,
0, 729, 104, 1646, 0, 736, 989, 0, 0, 708, 0, 1078, 227, 0, 0, 0,
897, 5, 0, 0, 0, 692, 301, 0, 0, 0, 70, 0, 68, 136, 956, 2085,
2664, 0, 1019, 316, 2909, 1297, 0, 1044, 95, 439, 1273, 0, 739, 1998, 1460, 1361,
0, 231, 0, 260, 988, 2095, 2533, 322, 1044, 0, 2012, 0, 2206, 778, 318, 0,
2248, 552, 0, 0, 2133, 0, 0, 0, 0, 1216, 1341, 0, 2375, 899, 0, 0,
1496, 0, 0, 1444, 1342, 983, 0, 462, 499, 0, 0, 594, 333, 986, 687, 0,
996, 613, 0, 16, 2444, 2848, 0, 264, 1021, 0, 2116, 10, 394, 2820, 1431, 2970,
1994, 746, 1191, 2513, 2525, 0, 1274, 617, 0, 1199, 0, 0, 1428, 1454, 0, 2894,
1437, 612, 956, 692, 589, 2688, 0, 440, 2287, 0, 0, 0, 401, 1576, 0, 0,
2435, 0, 602, 1969, 149, 572, 1976, 717, 2475, 1117, 1076, 137, 1400, 2016, 0, 0,
1608, 0, 0, 0, 0, 0, 1096, 2756, 511, 2096, 2680, 0, 0, 1399, 1149, 775,
2754, 359, 0, 987, 0, 1665, 2248, 0, 26, 2221, 1555, 1122, 2456, 0, 2725, 2206,
2397, 0, 1946, 871, 0, 1476, 653, 0, 0, 2916, 0, 0, 0, 1877, 183, 0,
1292, 0, 446, 384, 1765, 378, 643, 984, 0, 0, 0, 1726, 2938, 0, 705, 0,
0, 197, 557, 0, 2855, 0, 0, 1233, 0, 0, 0, 2021, 0, 2760, 2673, 672,
26, 834, 0, 0, 2343, 722, 0, 828, 1512, 545, 1566, 0, 1911, 0, 1231, 0,
1585, 2813, 1631, 2987, 0, 1331, 1323, 961, 0, 891, 1175, 1120, 0, 0, 0, 0,
1355, 0, 251, 1572, 1081, 421, 2862, 0, 391, 0, 2989, 0, 0, 1333, 1031, 2656,
2998, 1540, 935, 0, 1266, 0, 0, 0, 0, 0, 1015, 0, 0, 523, 1414, 506,
970, 1704, 0, 0, 2379, 0, 1453, 2329, 1080, 0, 847, 0, 1341, 0, 364, 0,
903, 0, 2540, 2987, 0, 0, 0, 0, 1107, 0, 1043, 2531, 579, 289, 1231, 0,
1464, 1535, 0, 389, 628, 1214, 0, 0, 0, 0, 1620, 2748, 1006, 704, 348, 0,
0, 0, 0, 1186, 697, 296, 489, 439, 1707, 0, 1810, 1194, 2427, 1052, 241, 696,
1170, 0, 310, 0, 2875, 0, 2698, 629, 1196, 365, 0, 0, 1241, 0, 1979, 1521,
772, 0, 0, 898, 50, 0, 976, 0, 341, 989, 239, 905, 2983, 0, 894, 303,
1114, 0, 257, 49, 0, 1408, 0, 1934, 2447, 0, 494, 1027, 2002, 164, 0, 1687,
0, 0, 0, 1832, 1614, 0, 0, 122, 0, 1407, 0, 1369, 0, 954, 1169, 0,
201, 2998, 1283, 934, 2436, 451, 2231, 0, 620, 1549, 1645, 1720, 15, 868, 1826, 0,
0, 1095, 0, 53, 0, 0, 0, 1108, 0, 1154, 204, 2420, 0, 1099, 860, 0,
0, 0, 596, 995, 267, 0, 1026, 57, 89, 0, 1571, 312, 1607, 0, 0, 1118,
19, 142, 431, 0, 1369, 0, 1590, 88, 1878, 2591, 190, 0, 977, 1187, 0, 0,
38, 94, 681, 2015, 2274, 0, 0, 0, 0, 0, 575, 0, 2994, 707, 922, 268,
0, 0, 983, 2544, 233, 1704, 421, 0, 0, 474, 2276, 943, 0, 278, 0, 2776,
359, 0, 2457, 0, 0, 0, 0, 1415, 2739, 1955, 1880, 0, 1408, 0, 1319, 2586,
299, 1565, 1554, 750, 1163, 0, 336, 550, 0, 0, 1611, 0, 828, 0, 359, 1149,
216, 0, 195, 719, 0, 2435, 2627, 402, 1245, 1392, 2935, 683, 574, 1013, 0, 0,
399, 0, 3011, 559, 0, 206, 0, 0, 0, 350, 268, 0, 1258, 0, 0, 0,
500, 0, 1773, 0, 1225, 2584, 1341, 0, 0, 282, 1378, 469, 982, 0, 2044, 0,
105, 2704, 2656, 0, 0, 0, 2289, 1302, 226, 2208, 1271, 689, 0, 2482, 800, 114,
2305, 0, 0, 0, 107, 0, 868, 0, 1169, 753, 1582, 2877, 1393, 1309, 869, 406,
1429, 116, 2016, 1280, 0, 1149, 252, 375, 344, 0, 499, 611, 0, 0, 0, 1266,
744, 1112, 2321, 0, 0, 2233, 542, 0, 2938, 1178, 2987, 2708, 0, 0, 1347, 0,
0, 2624, 894, 920, 152, 0, 875, 567, 1201, 996, 1016, 2228, 0, 0, 803, 0,
0, 2160, 333, 776, 2187, 188, 2896, 391, 2750, 0, 915, 1389, 0, 0, 1276, 439,
2939, 0, 686, 2548, 1353, 0, 2854, 2908, 240, 2868, 2845, 920, 0, 0, 0, 193};
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 %= 3040;
}
return mangledkG[sum];
}
int MangledPerfectHash(const char *key)
{
if (strlen(key) > 40)
return 0;
return (MangledHashG(key, mangledkT1) + MangledHashG(key, mangledkT2)) % 3040;
}
constexpr int unmangledkT1[] = {86, 27, 189, 69, 7, 154, 151, 74, 122, 118, 240, 91, 8,
82, 232, 116, 68, 86, 209, 110, 11, 166, 204, 202, 255, 67};
constexpr int unmangledkT2[] = {166, 86, 137, 88, 236, 245, 31, 246, 157, 131, 152, 156, 20,
220, 190, 221, 176, 32, 89, 208, 109, 166, 249, 144, 205, 95};
constexpr int unmangledkG[] = {
0, 0, 0, 0, 0, 89, 0, 87, 116, 0, 76, 0, 178, 0, 93, 0, 237, 0, 244,
236, 29, 0, 0, 6, 0, 0, 115, 41, 0, 0, 35, 52, 72, 0, 92, 0, 7, 0,
246, 0, 120, 0, 214, 93, 146, 102, 0, 0, 93, 50, 0, 0, 0, 0, 100, 177, 84,
0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 1, 134, 58, 0, 176, 0, 0, 27, 0,
0, 110, 132, 126, 0, 99, 193, 0, 0, 10, 86, 188, 257, 0, 0, 0, 55, 60, 0,
46, 0, 0, 96, 172, 0, 0, 5, 102, 211, 0, 234, 65, 0, 0, 137, 237, 240, 179,
159, 45, 0, 0, 159, 236, 0, 119, 0, 59, 0, 0, 0, 28, 43, 0, 152, 0, 214,
157, 250, 127, 23, 51, 37, 9, 0, 223, 155, 0, 0, 0, 0, 0, 111, 159, 108, 184,
240, 0, 49, 0, 257, 40, 0, 181, 102, 31, 0, 129, 54, 124, 157, 2, 83, 144, 0,
0, 0, 249, 0, 213, 248, 0, 240, 254, 56, 166, 103, 0, 0, 264, 0, 0, 46, 109,
0, 0, 35, 68, 33, 17, 0, 192, 29, 104, 0, 81, 2, 106, 63, 69, 45, 0, 34,
239, 118, 15, 245, 7, 101, 0, 114, 81, 115, 0, 0, 141, 139, 0, 119, 223, 71, 156,
175, 18, 228, 0, 156, 62, 25, 37, 0, 0, 0, 107, 213, 8, 3, 106, 149, 38, 0,
66, 91, 252, 121, 74, 0, 0, 152, 19, 213, 49, 226, 25, 88, 0, 232, 53, 111, 43};
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 %= 266;
}
return unmangledkG[sum];
}
int UnmangledPerfectHash(const char *key)
{
if (strlen(key) > 26)
return 0;
return (UnmangledHashG(key, unmangledkT1) + UnmangledHashG(key, unmangledkT2)) % 266;
}
} // 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